<?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>69616</bug_id>
          
          <creation_ts>2011-10-07 03:55:31 -0700</creation_ts>
          <short_desc>REGRESSION(r96909): Broke chromium mac compilation (Requested by podivilov on #webkit).</short_desc>
          <delta_ts>2013-04-09 16:28:16 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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>
          
          <blocked>69107</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>fishd</cc>
    
    <cc>piman</cc>
    
    <cc>podivilov</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>479922</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-07 03:55:31 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/96909 broke the build:
Broke chromium mac compilation (Requested by podivilov on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479923</commentid>
    <comment_count>1</comment_count>
      <attachid>110121</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-07 03:55:57 -0700</bug_when>
    <thetext>Created attachment 110121
ROLLOUT of r96909

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479924</commentid>
    <comment_count>2</comment_count>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-10-07 03:58:48 -0700</bug_when>
    <thetext>http://build.chromium.org/p/chromium.webkit/builders/Webkit%20Mac10.6%20%28dbg%29/builds/5602</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479926</commentid>
    <comment_count>3</comment_count>
      <attachid>110121</attachid>
    <who name="Pavel Podivilov">podivilov</who>
    <bug_when>2011-10-07 04:08:08 -0700</bug_when>
    <thetext>Comment on attachment 110121
ROLLOUT of r96909

Landed manually as r96927.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480157</commentid>
    <comment_count>4</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-10-07 11:27:59 -0700</bug_when>
    <thetext>Is there any logs of the failure? I don&apos;t see anything at http://build.webkit.org/builders/Chromium%20Mac%20Release?numbuilds=100 that indicates a failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>480165</commentid>
    <comment_count>5</comment_count>
    <who name="Antoine Labour">piman</who>
    <bug_when>2011-10-07 11:37:15 -0700</bug_when>
    <thetext>NVM, I can&apos;t read.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872310</commentid>
    <comment_count>6</comment_count>
    <who name="Stephen Chenney">schenney</who>
    <bug_when>2013-04-09 16:28:16 -0700</bug_when>
    <thetext>Marking test failures as WontFix. Bug is still accessible and recording in TestExpectations.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>110121</attachid>
            <date>2011-10-07 03:55:57 -0700</date>
            <delta_ts>2011-10-07 04:08:08 -0700</delta_ts>
            <desc>ROLLOUT of r96909</desc>
            <filename>bug-69616-20111007105347.patch</filename>
            <type>text/plain</type>
            <size>56962</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY5MjYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3MWI3ZTYyMDM5MTRmMzU3
YTJmZjkzMTkzMjgzNjc5YmEwZjRmMzkwLi5lMmJmMzIzOTIyODk3ZWNjMzMwYTgyZGFjMGYxNzUx
NTJlMmQ4ODhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMTAtMDcgIFNoZXJp
ZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgorCisgICAgICAgIFVucmV2aWV3
ZWQsIHJvbGxpbmcgb3V0IHI5NjkwOS4KKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9j
aGFuZ2VzZXQvOTY5MDkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY5NjE2CisKKyAgICAgICAgQnJva2UgY2hyb21pdW0gbWFjIGNvbXBpbGF0aW9uIChS
ZXF1ZXN0ZWQgYnkgcG9kaXZpbG92IG9uCisgICAgICAgICN3ZWJraXQpLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaDoKKwogMjAx
MS0xMC0wNyAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBFbGVtZW50IGhpZ2hsaWdodGluZyBkb2VzIG5vdCBoaWdobGlnaHQg
cGFkZGluZy9ib3JkZXIvbWFyZ2luIGZvciBpbmxpbmUgZWxlbWVudHMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJv
bWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVu
dExheWVyQ2hyb21pdW0uaAppbmRleCBiODM0ZTY3NmJkNjM0NDVhYTQ1M2IzNjVlZWUyODAyNDBm
MzgwOWMxLi5hMjFiYzY4MDhmODhjZjQ5N2E5YjdiYTM2NmUxNzFlOTNmODk2ZTZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5
ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKQEAgLTUxLDEwICs1MSw5IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzSWZEaXJ0eSgpOwogCi1wcm90ZWN0ZWQ6Citw
cml2YXRlOgogICAgIGV4cGxpY2l0IENvbnRlbnRMYXllckNocm9taXVtKENDTGF5ZXJEZWxlZ2F0
ZSopOwogCi1wcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBjbGVhbnVwUmVzb3VyY2VzKCk7CiAg
ICAgdmlydHVhbCBib29sIGRyYXdzQ29udGVudCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBj
cmVhdGVUZXh0dXJlVXBkYXRlcihjb25zdCBDQ0xheWVyVHJlZUhvc3QqKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKaW5kZXggMzQyNDhkM2NlMDNiMTRlYTM1YTdkMjNkN2M2NTcxNTViNzQ0Nzdk
Ny4uMWI5MzVjYWFmMzU3ZmU3NDcxN2Q5Njg5MGJlZTE2MzIyOTg2YjZkNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxMS0xMC0wNyAgU2hlcmlmZiBCb3Qg
IDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjk2OTA5LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNl
dC85NjkwOQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Njk2MTYKKworICAgICAgICBCcm9rZSBjaHJvbWl1bSBtYWMgY29tcGlsYXRpb24gKFJlcXVlc3Rl
ZCBieSBwb2Rpdmlsb3Ygb24KKyAgICAgICAgI3dlYmtpdCkuCisKKyAgICAgICAgKiBXZWJLaXQu
Z3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJDb250ZW50TGF5ZXIuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBwdWJsaWMvV2ViQ29udGVudExheWVyQ2xpZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICog
cHVibGljL1dlYkxheWVyLmg6IFJlbW92ZWQuCisgICAgICAgICogcHVibGljL1dlYkxheWVyQ2xp
ZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICogcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBwdWJsaWMvV2ViTGF5ZXJUcmVlVmlld0NsaWVudC5oOiBSZW1vdmVk
LgorICAgICAgICAqIHNyYy9XZWJDb250ZW50TGF5ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IHNyYy9XZWJDb250ZW50TGF5ZXJJbXBsLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvV2Vi
Q29udGVudExheWVySW1wbC5oOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9XZWJMYXllci5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogc3JjL1dlYkxheWVySW1wbC5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogc3JjL1dlYkxheWVySW1wbC5oOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9XZWJMYXll
clRyZWVWaWV3LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBzcmMvV2ViTGF5ZXJUcmVlVmlld0lt
cGwuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHNyYy9XZWJMYXllclRyZWVWaWV3SW1wbC5oOiBS
ZW1vdmVkLgorCiAyMDExLTEwLTA3ICBQYXZlbCBQb2Rpdmlsb3YgIDxwb2Rpdmlsb3ZAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydCByOTY5MjQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL1dlYktpdC5neXAKaW5kZXggZTEyYmQxYmFjYzY2ZTg5YWVjODUzNzZjNTM0OGQ5Njk5Mzk0
NTE4Mi4uNGQyYWFkNjEzZjE1ZmI2M2MyOTBjMTIzYzI1MTI3YjgyODYyM2I4ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtODUsNyArODUsNiBAQAogICAgICAgICAgICAgICAgICdw
dWJsaWMnLAogICAgICAgICAgICAgICAgICdzcmMnLAogICAgICAgICAgICAgICAgICc8KGNocm9t
aXVtX3NyY19kaXIpL3RoaXJkX3BhcnR5L2FuZ2xlL2luY2x1ZGUnLAotICAgICAgICAgICAgICAg
ICc8KGNocm9taXVtX3NyY19kaXIpL3RoaXJkX3BhcnR5L3NraWEvaW5jbHVkZS91dGlscycsCiAg
ICAgICAgICAgICBdLAogICAgICAgICAgICAgJ2RlZmluZXMnOiBbCiAgICAgICAgICAgICAgICAg
J1dFQktJVF9JTVBMRU1FTlRBVElPTj0xJywKQEAgLTEzMSw4ICsxMzAsNiBAQAogICAgICAgICAg
ICAgICAgICdwdWJsaWMvV2ViQ29tcG9zaXRvckNsaWVudC5oJywKICAgICAgICAgICAgICAgICAn
cHVibGljL1dlYkNvbXBvc2l0b3IuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJDb25z
b2xlTWVzc2FnZS5oJywKLSAgICAgICAgICAgICAgICAncHVibGljL1dlYkNvbnRlbnRMYXllci5o
JywKLSAgICAgICAgICAgICAgICAncHVibGljL1dlYkNvbnRlbnRMYXllckNsaWVudC5oJywKICAg
ICAgICAgICAgICAgICAncHVibGljL1dlYkNvbnRleHRNZW51RGF0YS5oJywKICAgICAgICAgICAg
ICAgICAncHVibGljL1dlYkNvb2tpZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkNv
b2tpZUphci5oJywKQEAgLTIxOSwxMCArMjE2LDYgQEAKICAgICAgICAgICAgICAgICAncHVibGlj
L1dlYktpdC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYktpdFBsYXRmb3JtU3VwcG9y
dC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkxhYmVsRWxlbWVudC5oJywKLSAgICAg
ICAgICAgICAgICAncHVibGljL1dlYkxheWVyLmgnLAotICAgICAgICAgICAgICAgICdwdWJsaWMv
V2ViTGF5ZXJDbGllbnQuaCcsCi0gICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJMYXllclRyZWVW
aWV3LmgnLAotICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViTGF5ZXJUcmVlVmlld0NsaWVudC5o
JywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkxvY2FsaXplZFN0cmluZy5oJywKICAgICAg
ICAgICAgICAgICAncHVibGljL1dlYk1lZGlhRWxlbWVudC5oJywKICAgICAgICAgICAgICAgICAn
cHVibGljL1dlYk1lZGlhUGxheWVyLmgnLApAQCAtNDU2LDkgKzQ0OSw2IEBACiAgICAgICAgICAg
ICAgICAgJ3NyYy9XZWJDb21tb24uY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkNvbXBv
c2l0b3JJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJDb21wb3NpdG9ySW1wbC5o
JywKLSAgICAgICAgICAgICAgICAnc3JjL1dlYkNvbnRlbnRMYXllci5jcHAnLAotICAgICAgICAg
ICAgICAgICdzcmMvV2ViQ29udGVudExheWVySW1wbC5jcHAnLAotICAgICAgICAgICAgICAgICdz
cmMvV2ViQ29udGVudExheWVySW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkNyb3Nz
T3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dl
YkNTdHJpbmcuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkN1cnNvckluZm8uY3BwJywK
QEAgLTU0MywxMiArNTMzLDYgQEAKICAgICAgICAgICAgICAgICAnc3JjL1dlYklucHV0RXZlbnRD
b252ZXJzaW9uLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViS2l0LmNwcCcsCiAgICAgICAg
ICAgICAgICAgJ3NyYy9XZWJMYWJlbEVsZW1lbnQuY3BwJywKLSAgICAgICAgICAgICAgICAnc3Jj
L1dlYkxheWVyLmNwcCcsCi0gICAgICAgICAgICAgICAgJ3NyYy9XZWJMYXllckltcGwuY3BwJywK
LSAgICAgICAgICAgICAgICAnc3JjL1dlYkxheWVySW1wbC5oJywKLSAgICAgICAgICAgICAgICAn
c3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwJywKLSAgICAgICAgICAgICAgICAnc3JjL1dlYkxheWVy
VHJlZVZpZXdJbXBsLmNwcCcsCi0gICAgICAgICAgICAgICAgJ3NyYy9XZWJMYXllclRyZWVWaWV3
SW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYk1lZGlhRWxlbWVudC5jcHAnLAogICAg
ICAgICAgICAgICAgICdzcmMvV2ViTWVkaWFQbGF5ZXJDbGllbnRJbXBsLmNwcCcsCiAgICAgICAg
ICAgICAgICAgJ3NyYy9XZWJNZWRpYVBsYXllckNsaWVudEltcGwuaCcsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb250ZW50TGF5ZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNvbnRlbnRMYXllci5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAyZDdmMTAxNDEyMjhhMWYwMzhjMTc1YWRiYjBjMWY3NjZiODZlNWZjLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkNvbnRlbnRMYXllci5oCisrKyAvZGV2L251bGwKQEAgLTEs
NzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
Ci0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0g
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViQ29udGVudExheWVyX2gKLSNkZWZpbmUgV2Vi
Q29udGVudExheWVyX2gKLQotI2luY2x1ZGUgIldlYkNvbW1vbi5oIgotI2luY2x1ZGUgIldlYkxh
eWVyLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotY2xhc3MgV2ViQ29udGVudExheWVyQ2xpZW50
OwotY2xhc3MgV2ViQ29udGVudExheWVySW1wbDsKLWNsYXNzIFdlYkZsb2F0UmVjdDsKLWNsYXNz
IFdlYkxheWVyQ2xpZW50OwotCi1jbGFzcyBXZWJDb250ZW50TGF5ZXIgOiBwdWJsaWMgV2ViTGF5
ZXIgewotcHVibGljOgotICAgIHN0YXRpYyBXZWJDb250ZW50TGF5ZXIgY3JlYXRlKFdlYkxheWVy
Q2xpZW50KiwgV2ViQ29udGVudExheWVyQ2xpZW50Kik7Ci0KLSAgICBXZWJDb250ZW50TGF5ZXIo
KSB7IH0KLSAgICBXZWJDb250ZW50TGF5ZXIoY29uc3QgV2ViQ29udGVudExheWVyJiBsYXllcikg
OiBXZWJMYXllcihsYXllcikgeyB9Ci0gICAgdmlydHVhbCB+V2ViQ29udGVudExheWVyKCkgeyB9
Ci0gICAgV2ViQ29udGVudExheWVyJiBvcGVyYXRvcj0oY29uc3QgV2ViQ29udGVudExheWVyJiBs
YXllcikKLSAgICB7Ci0gICAgICAgIFdlYkxheWVyOjphc3NpZ24obGF5ZXIpOwotICAgICAgICBy
ZXR1cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgLy8gU2V0cyB3aGV0aGVyIHRoZSBsYXllciBkcmF3
cyBpdHMgY29udGVudCB3aGVuIGNvbXBvc2l0aW5nLgotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBz
ZXREcmF3c0NvbnRlbnQoYm9vbCk7Ci0gICAgV0VCS0lUX0VYUE9SVCBib29sIGRyYXdzQ29udGVu
dCgpIGNvbnN0OwotCi0gICAgLy8gU2V0cyBhIHJlZ2lvbiBvZiB0aGUgbGF5ZXIgYXMgaW52YWxp
ZCwgaS5lLiBuZWVkcyB0byB1cGRhdGUgaXRzIGNvbnRlbnQuCi0gICAgLy8gVGhlIHZpc2libGUg
YXJlYSBvZiB0aGUgZGlydHkgcmVjdCB3aWxsIGJlIHBhc3NlZCB0byBvbmUgb3IgbW9yZSBjYWxs
cyB0bwotICAgIC8vIFdlYkNvbnRlbnRMYXllckNsaWVudDo6cGFpbnRDb250ZW50cyBiZWZvcmUg
dGhlIGNvbXBvc2l0aW5nIHBhc3Mgb2NjdXJzLgotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBpbnZh
bGlkYXRlUmVjdChjb25zdCBXZWJGbG9hdFJlY3QmKTsKLQotICAgIC8vIFNldHMgdGhlIGVudGly
ZSBsYXllciBhcyBpbnZhbGlkLCBpLmUuIG5lZWRzIHRvIHVwZGF0ZSBpdHMgY29udGVudC4KLSAg
ICBXRUJLSVRfRVhQT1JUIHZvaWQgaW52YWxpZGF0ZSgpOwotCi0gICAgLy8gUmV0dXJucyB0aGUg
cmVnaW9uIG9mIHRoZSBsYXllciB0aGF0IGlzIGN1cnJlbnRseSBpbnZhbGlkLgotICAgIFdFQktJ
VF9FWFBPUlQgV2ViRmxvYXRSZWN0IGludmFsaWRSZWN0KCkgY29uc3Q7Ci0KLSNpZiBXRUJLSVRf
SU1QTEVNRU5UQVRJT04KLSAgICBXZWJDb250ZW50TGF5ZXIoY29uc3QgV1RGOjpQYXNzUmVmUHRy
PFdlYkNvbnRlbnRMYXllckltcGw+Jik7Ci0gICAgV2ViQ29udGVudExheWVyJiBvcGVyYXRvcj0o
Y29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvbnRlbnRMYXllckltcGw+Jik7Ci0gICAgb3BlcmF0
b3IgV1RGOjpQYXNzUmVmUHRyPFdlYkNvbnRlbnRMYXllckltcGw+KCkgY29uc3Q7Ci0jZW5kaWYK
LX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViQ29udGVudExheWVy
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNvbnRlbnRM
YXllckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29udGVudExh
eWVyQ2xpZW50LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiNGJlMGNhNzdmYzZl
MzlmNzg4NDg3NmIxYmNjNmM0M2U4YzZiOWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29udGVu
dExheWVyQ2xpZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
Ci0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lm
bmRlZiBXZWJDb250ZW50TGF5ZXJDbGllbnRfaAotI2RlZmluZSBXZWJDb250ZW50TGF5ZXJDbGll
bnRfaAotCi0jaW5jbHVkZSAiV2ViQ2FudmFzLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotY2xh
c3MgV2ViUmVjdDsKLQotY2xhc3MgV2ViQ29udGVudExheWVyQ2xpZW50IHsKLXB1YmxpYzoKLSAg
ICAvLyBQYWludHMgdGhlIGNvbnRlbnQgYXJlYSBmb3IgdGhlIGxheWVyLCB0eXBpY2FsbHkgZGly
dHkgcmVjdHMgc3VibWl0dGVkCi0gICAgLy8gdGhyb3VnaCBXZWJDb250ZW50TGF5ZXI6OnNldE5l
ZWRzRGlzcGxheSwgc3VibWl0dGluZyBkcmF3aW5nIGNvbW1hbmRzCi0gICAgLy8gdGhyb3VnaCB0
aGUgV2ViQ2FudmFzLgotICAgIC8vIFRoZSBjYW52YXMgaXMgYWxyZWFkeSBjbGlwcGVkIHRvIHRo
ZSB8Y2xpcHwgcmVjdC4KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhXZWJDYW52YXMq
LCBjb25zdCBXZWJSZWN0JiBjbGlwKSA9IDA7Ci0KLXByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIH5X
ZWJDb250ZW50TGF5ZXJDbGllbnQoKSB7IH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAot
Ci0jZW5kaWYgLy8gV2ViQ29udGVudExheWVyQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJMYXllci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzFlMDU3
Y2M0NmMzMjlhMTExYjYwMGJkYjUyNDhhZTdlOGMxNjExLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkxheWVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYg
V2ViTGF5ZXJfaAotI2RlZmluZSBXZWJMYXllcl9oCi0KLSNpbmNsdWRlICJXZWJDb21tb24uaCIK
LSNpbmNsdWRlICJXZWJQcml2YXRlUHRyLmgiCi0KLWNsYXNzIFNrTWF0cml4NDQ7Ci1uYW1lc3Bh
Y2UgV2ViQ29yZSB7IGNsYXNzIExheWVyQ2hyb21pdW07IH0KLQotbmFtZXNwYWNlIFdlYktpdCB7
Ci1jbGFzcyBXZWJGbG9hdFBvaW50OwotY2xhc3MgV2ViTGF5ZXJDbGllbnQ7Ci1jbGFzcyBXZWJT
aXplOwotCi1jbGFzcyBXZWJMYXllciB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFdlYkxheWVyIGNy
ZWF0ZShXZWJMYXllckNsaWVudCopOwotCi0gICAgV2ViTGF5ZXIoKSB7IH0KLSAgICBXZWJMYXll
cihjb25zdCBXZWJMYXllciYgbGF5ZXIpIHsgYXNzaWduKGxheWVyKTsgfQotICAgIHZpcnR1YWwg
fldlYkxheWVyKCk7Ci0gICAgV2ViTGF5ZXImIG9wZXJhdG9yPShjb25zdCBXZWJMYXllciYgbGF5
ZXIpCi0gICAgewotICAgICAgICBhc3NpZ24obGF5ZXIpOwotICAgICAgICByZXR1cm4gKnRoaXM7
Ci0gICAgfQotICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgpOwotICAgIFdFQktJVF9FWFBP
UlQgdm9pZCBhc3NpZ24oY29uc3QgV2ViTGF5ZXImKTsKLSAgICBXRUJLSVRfRVhQT1JUIGJvb2wg
ZXF1YWxzKGNvbnN0IFdlYkxheWVyJikgY29uc3Q7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIFdlYkxh
eWVyIHJvb3RMYXllcigpIGNvbnN0OwotICAgIFdFQktJVF9FWFBPUlQgV2ViTGF5ZXIgcGFyZW50
KCkgY29uc3Q7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGFkZENoaWxkKGNvbnN0IFdlYkxheWVy
Jik7Ci0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGluc2VydENoaWxkKGNvbnN0IFdlYkxheWVyJiwg
c2l6ZV90IGluZGV4KTsKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgcmVwbGFjZUNoaWxkKGNvbnN0
IFdlYkxheWVyJiByZWZlcmVuY2UsIGNvbnN0IFdlYkxheWVyJiBuZXdMYXllcik7Ci0gICAgV0VC
S0lUX0VYUE9SVCB2b2lkIHJlbW92ZUZyb21QYXJlbnQoKTsKLSAgICBXRUJLSVRfRVhQT1JUIHZv
aWQgcmVtb3ZlQWxsQ2hpbGRyZW4oKTsKLQotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRBbmNo
b3JQb2ludChjb25zdCBXZWJGbG9hdFBvaW50Jik7Ci0gICAgV0VCS0lUX0VYUE9SVCBXZWJGbG9h
dFBvaW50IGFuY2hvclBvaW50KCkgY29uc3Q7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0
QW5jaG9yUG9pbnRaKGZsb2F0KTsKLSAgICBXRUJLSVRfRVhQT1JUIGZsb2F0IGFuY2hvclBvaW50
WigpIGNvbnN0OwotCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldEJvdW5kcyhjb25zdCBXZWJT
aXplJik7Ci0gICAgV0VCS0lUX0VYUE9SVCBXZWJTaXplIGJvdW5kcygpIGNvbnN0OwotCi0gICAg
V0VCS0lUX0VYUE9SVCB2b2lkIHNldE1hc2tzVG9Cb3VuZHMoYm9vbCk7Ci0gICAgV0VCS0lUX0VY
UE9SVCBib29sIG1hc2tzVG9Cb3VuZHMoKSBjb25zdDsKLQotICAgIFdFQktJVF9FWFBPUlQgdm9p
ZCBzZXRNYXNrTGF5ZXIoY29uc3QgV2ViTGF5ZXImKTsKLSAgICBXRUJLSVRfRVhQT1JUIFdlYkxh
eWVyIG1hc2tMYXllcigpIGNvbnN0OwotCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldE9wYWNp
dHkoZmxvYXQpOwotICAgIFdFQktJVF9FWFBPUlQgZmxvYXQgb3BhY2l0eSgpIGNvbnN0OwotCi0g
ICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldE9wYXF1ZShib29sKTsKLSAgICBXRUJLSVRfRVhQT1JU
IGJvb2wgb3BhcXVlKCkgY29uc3Q7Ci0KLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc2V0UG9zaXRp
b24oY29uc3QgV2ViRmxvYXRQb2ludCYpOwotICAgIFdFQktJVF9FWFBPUlQgV2ViRmxvYXRQb2lu
dCBwb3NpdGlvbigpIGNvbnN0OwotCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFN1YmxheWVy
VHJhbnNmb3JtKGNvbnN0IFNrTWF0cml4NDQmKTsKLSAgICBXRUJLSVRfRVhQT1JUIFNrTWF0cml4
NDQgc3VibGF5ZXJUcmFuc2Zvcm0oKSBjb25zdDsKLQotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBz
ZXRUcmFuc2Zvcm0oY29uc3QgU2tNYXRyaXg0NCYpOwotICAgIFdFQktJVF9FWFBPUlQgU2tNYXRy
aXg0NCB0cmFuc2Zvcm0oKSBjb25zdDsKLQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgdG8o
KQotICAgIHsKLSAgICAgICAgVCByZXM7Ci0gICAgICAgIHJlcy5XZWJMYXllcjo6YXNzaWduKCp0
aGlzKTsKLSAgICAgICAgcmV0dXJuIHJlczsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBjb25zdCBUIHRvQ29uc3QoKSBjb25zdAotICAgIHsKLSAgICAgICAgVCByZXM7Ci0gICAg
ICAgIHJlcy5XZWJMYXllcjo6YXNzaWduKCp0aGlzKTsKLSAgICAgICAgcmV0dXJuIHJlczsKLSAg
ICB9Ci0KLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICBXZWJMYXllcihjb25zdCBXVEY6
OlBhc3NSZWZQdHI8V2ViQ29yZTo6TGF5ZXJDaHJvbWl1bT4mKTsKLSAgICBXZWJMYXllciYgb3Bl
cmF0b3I9KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpMYXllckNocm9taXVtPiYpOwot
ICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpMYXllckNocm9taXVtPigpIGNv
bnN0OwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQqIHVud3JhcCgpCi0gICAgewotICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8VCo+KG1fcHJpdmF0ZS5nZXQoKSk7Ci0gICAgfQotCi0gICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gY29uc3QgVCogY29uc3RVbndyYXAoKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFQqPihtX3ByaXZhdGUuZ2V0KCkpOwot
ICAgIH0KLSNlbmRpZgotCi1wcm90ZWN0ZWQ6Ci0gICAgV2ViUHJpdmF0ZVB0cjxXZWJDb3JlOjpM
YXllckNocm9taXVtPiBtX3ByaXZhdGU7Ci19OwotCi1pbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFdlYkxheWVyJiBhLCBjb25zdCBXZWJMYXllciYgYikKLXsKLSAgICByZXR1cm4gYS5lcXVh
bHMoYik7Ci19Ci0KLWlubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgV2ViTGF5ZXImIGEsIGNv
bnN0IFdlYkxheWVyJiBiKQotewotICAgIHJldHVybiAhKGEgPT0gYik7Ci19Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViTGF5ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkxheWVyQ2xpZW50LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDlmMTQ4YmEyZWUxMzc4NDJiMTEyZGMzMjkyYzk4MDQ5ZTU1Y2U5NmUuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViTGF5ZXJDbGllbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0g
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaWZuZGVmIFdlYkxheWVyQ2xpZW50X2gKLSNkZWZpbmUgV2ViTGF5ZXJDbGll
bnRfaAotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgV2ViTGF5ZXJDbGllbnQgewotcHVi
bGljOgotICAgIC8vIE5vdGlmaWVzIHRoZSBjbGllbnQgdGhhdCB0aGUgbGF5ZXIgaGFzIGNoYW5n
ZWQgaW4gYSB3YXkgdGhhdCBuZWVkcyBhCi0gICAgLy8gY29tcG9zaXRpbmcgcGFzcyB0byB2aXN1
YWxseSB1cGRhdGUuIFRoZSBjbGllbnQgc2hvdWxkIGV2ZW50dWFsbHkgY2FsbAotICAgIC8vIFdl
YkxheWVyVHJlZVZpZXc6OmNvbXBvc2l0ZS4KLSAgICAvLyBOb3RlOiBzb21lIGNvbXBsZXggb3Bl
cmF0aW9ucyAoZS5nIGxheWVyIHJlcGFyZW50aW5nKSBjYW4gY2F1c2UgdGhpcyB0bwotICAgIC8v
IGJlIGNhbGxlZCB3aGlsZSB0aGUgbGF5ZXIgdHJlZSBpcyBpbiBhbiBpbmNvbnNpc3RlbnQgc3Rh
dGUsIHNvIHRvIGdldAotICAgIC8vIGNvcnJlY3QgcmVzdWx0cywgV2ViTGF5ZXJUcmVlVmlldzo6
Y29tcG9zaXRlIHNob3VsZCBiZSBjYWxsZWQgYWZ0ZXIgdGhlCi0gICAgLy8gb3BlcmF0aW9uIGhh
cyBmaW5pc2hlZCAoZS5nLiBieSBwb3N0aW5nIGEgdGFzaykuCi0gICAgdmlydHVhbCB2b2lkIG5v
dGlmeU5lZWRzQ29tcG9zaXRlKCkgPSAwOwotCi1wcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB+V2Vi
TGF5ZXJDbGllbnQoKSB7IH0KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5kaWYg
Ly8gV2ViTGF5ZXJDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViTGF5ZXJUcmVlVmlldy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2Yjg2MjEz
ZTNiYmZiMTZmZmU1ZTQ4ZGJlODA3ZDNmYzg5NWZiNjk1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkxheWVyVHJlZVZpZXcuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwNiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
LSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
I2lmbmRlZiBXZWJMYXllclRyZWVWaWV3X2gKLSNkZWZpbmUgV2ViTGF5ZXJUcmVlVmlld19oCi0K
LSNpbmNsdWRlICJXZWJDb21tb24uaCIKLSNpbmNsdWRlICJXZWJQcml2YXRlUHRyLmgiCi0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIENDTGF5ZXJUcmVlSG9zdDsKLXN0cnVjdCBDQ1NldHRp
bmdzOwotfQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLWNsYXNzIFdlYkxheWVyOwotY2xhc3MgV2Vi
TGF5ZXJUcmVlVmlld0NsaWVudDsKLXN0cnVjdCBXZWJTaXplOwotCi1jbGFzcyBXZWJMYXllclRy
ZWVWaWV3IHsKLXB1YmxpYzoKLSAgICBzdHJ1Y3QgU2V0dGluZ3MgewotICAgICAgICBTZXR0aW5n
cygpCi0gICAgICAgICAgICA6IGFjY2VsZXJhdGVQYWludGluZyhmYWxzZSkKLSAgICAgICAgICAg
ICwgY29tcG9zaXRlT2Zmc2NyZWVuKGZhbHNlKQotICAgICAgICAgICAgLCBlbmFibGVDb21wb3Np
dG9yVGhyZWFkKGZhbHNlKSB7IH0KLQotICAgICAgICBib29sIGFjY2VsZXJhdGVQYWludGluZzsK
LSAgICAgICAgYm9vbCBjb21wb3NpdGVPZmZzY3JlZW47Ci0gICAgICAgIGJvb2wgZW5hYmxlQ29t
cG9zaXRvclRocmVhZDsKLSNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLSAgICAgICAgb3BlcmF0
b3IgV2ViQ29yZTo6Q0NTZXR0aW5ncygpIGNvbnN0OwotI2VuZGlmCi0gICAgfTsKLQotICAgIHN0
YXRpYyBXZWJMYXllclRyZWVWaWV3IGNyZWF0ZShXZWJMYXllclRyZWVWaWV3Q2xpZW50KiwgY29u
c3QgV2ViTGF5ZXImIHJvb3QsIGNvbnN0IFNldHRpbmdzJik7Ci0KLSAgICBXZWJMYXllclRyZWVW
aWV3KCkgeyB9Ci0gICAgV2ViTGF5ZXJUcmVlVmlldyhjb25zdCBXZWJMYXllclRyZWVWaWV3JiBs
YXllcikgeyBhc3NpZ24obGF5ZXIpOyB9Ci0gICAgfldlYkxheWVyVHJlZVZpZXcoKSB7IHJlc2V0
KCk7IH0KLSAgICBXZWJMYXllclRyZWVWaWV3JiBvcGVyYXRvcj0oY29uc3QgV2ViTGF5ZXJUcmVl
VmlldyYgbGF5ZXIpCi0gICAgewotICAgICAgICBhc3NpZ24obGF5ZXIpOwotICAgICAgICByZXR1
cm4gKnRoaXM7Ci0gICAgfQotICAgIFdFQktJVF9FWFBPUlQgdm9pZCByZXNldCgpOwotICAgIFdF
QktJVF9FWFBPUlQgdm9pZCBhc3NpZ24oY29uc3QgV2ViTGF5ZXJUcmVlVmlldyYpOwotICAgIFdF
QktJVF9FWFBPUlQgYm9vbCBlcXVhbHMoY29uc3QgV2ViTGF5ZXJUcmVlVmlldyYpIGNvbnN0Owot
Ci0gICAgLy8gVHJpZ2dlcnMgYSBjb21wb3NpdGluZyBwYXNzLiBJZiB0aGUgY29tcG9zaXRvciB0
aHJlYWQgaXMgZGlzYWJsZWQKLSAgICAvLyAoZW5hYmxlQ29tcG9zaXRvclRocmVhZCA9PSBmYWxz
ZSksIHRoZSBjb21wb3NpdGluZyBwYXNzIGhhcHBlbnMKLSAgICAvLyBpbW1lZGlhdGVseS4gSWYg
aXQgaXMgZW5hYmxlZCwgdGhlIGNvbXBvc2l0aW5nIHBhc3Mgd2lsbCBoYXBwZW4gYXQgYQotICAg
IC8vIGxhdGVyIHRpbWUuIEJlZm9yZSB0aGUgY29tcG9zaXRpbmcgcGFzcyBoYXBwZW5zIChpLmUu
IGJlZm9yZSBjb21wb3NpdGUoKQotICAgIC8vIHJldHVybnMgd2hlbiB0aGUgY29tcG9zaXRvciB0
aHJlYWQgaXMgZGlzYWJsZWQpLCBXZWJDb250ZW50TGF5ZXJzIHdpbGwgYmUKLSAgICAvLyBhc2tl
ZCB0byBwYWludCB0aGVpciBkaXJ0eSByZWdpb24sIHRocm91Z2gKLSAgICAvLyBXZWJDb250ZW50
TGF5ZXJDbGllbnQ6OnBhaW50Q29udGVudHMuCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIGNvbXBv
c2l0ZSgpOwotCi0gICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFZpZXdwb3J0U2l6ZShjb25zdCBX
ZWJTaXplJik7Ci0gICAgV0VCS0lUX0VYUE9SVCBXZWJTaXplIHZpZXdwb3J0U2l6ZSgpIGNvbnN0
OwotCi0jaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi0gICAgV2ViTGF5ZXJUcmVlVmlldyhjb25z
dCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0PiYpOwotICAgIFdlYkxh
eWVyVHJlZVZpZXcmIG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6Q0NM
YXllclRyZWVIb3N0PiYpOwotICAgIG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpD
Q0xheWVyVHJlZUhvc3Q+KCkgY29uc3Q7Ci0jZW5kaWYKLQotcHJvdGVjdGVkOgotICAgIFdlYlBy
aXZhdGVQdHI8V2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0PiBtX3ByaXZhdGU7Ci19OwotCi1pbmxp
bmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFdlYkxheWVyVHJlZVZpZXcmIGEsIGNvbnN0IFdlYkxh
eWVyVHJlZVZpZXcmIGIpCi17Ci0gICAgcmV0dXJuIGEuZXF1YWxzKGIpOwotfQotCi1pbmxpbmUg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IFdlYkxheWVyVHJlZVZpZXcmIGEsIGNvbnN0IFdlYkxheWVy
VHJlZVZpZXcmIGIpCi17Ci0gICAgcmV0dXJuICEoYSA9PSBiKTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJMYXllclRyZWVWaWV3X2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXdDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXdDbGllbnQuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjViOGYxYjQzMjA1MGY3ODBiNGVlYzI3YzJmZWU1
MzBmN2VhYjExYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3Q2xpZW50LmgK
KysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
LSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJMYXllclRy
ZWVWaWV3Q2xpZW50X2gKLSNkZWZpbmUgV2ViTGF5ZXJUcmVlVmlld0NsaWVudF9oCi0KLW5hbWVz
cGFjZSBXZWJLaXQgewotY2xhc3MgV2ViR3JhcGhpY3NDb250ZXh0M0Q7Ci1jbGFzcyBXZWJTaXpl
OwotY2xhc3MgV2ViVGhyZWFkOwotCi1jbGFzcyBXZWJMYXllclRyZWVWaWV3Q2xpZW50IHsKLXB1
YmxpYzoKLSAgICAvLyBVcGRhdGVzIGFuaW1hdGlvbiBhbmQgbGF5b3V0LiBUaGlzIGlzIGNhbGxl
ZCBiZWZvcmUgdGhlIGNvbXBvc2l0aW5nIHBhc3MKLSAgICAvLyBzbyB0aGF0IGxheWVycyBjYW4g
YmUgdXBkYXRlZCBhdCB0aGUgZ2l2ZW4gZnJhbWUgdGltZS4KLSAgICB2aXJ0dWFsIHZvaWQgYW5p
bWF0ZUFuZExheW91dChkb3VibGUgZnJhbWVCZWdpblRpbWUpID0gMDsKLQotICAgIC8vIEFwcGxp
ZXMgYSBzY3JvbGwgZGVsdGEgdG8gdGhlIHJvb3QgbGF5ZXIuIFRoaXMgaXMgdHJpZ2dlcmVkIGJ5
IGV2ZW50cwotICAgIC8vIHNlbnQgdG8gdGhlIGNvbXBvc2l0b3IgdGhyZWFkIHRocm91Z2ggdGhl
IFdlYkNvbXBvc2l0b3IgaW50ZXJmYWNlLgotICAgIHZpcnR1YWwgdm9pZCBhcHBseVNjcm9sbERl
bHRhKGNvbnN0IFdlYlNpemUmKSA9IDA7Ci0KLSAgICAvLyBDcmVhdGVzIGEgM0QgY29udGV4dCBz
dWl0YWJsZSBmb3IgdGhlIGNvbXBvc2l0aW5nLiBUaGlzIG1heSBiZSBjYWxsZWQKLSAgICAvLyBt
b3JlIHRoYW4gb25jZSBpZiB0aGUgY29udGV4dCBnZXRzIGxvc3QuCi0gICAgdmlydHVhbCBXZWJH
cmFwaGljc0NvbnRleHQzRCogY3JlYXRlQ29udGV4dDNEKCkgPSAwOwotCi0gICAgLy8gU2lnbmFs
cyBhIHN1Y2Nlc3NmdWwgcmViaW5kaW5nIG9mIHRoZSAzRCBjb250ZXh0IChlLmcuIGFmdGVyIGEg
bG9zdAotICAgIC8vIGNvbnRleHQgZXZlbnQpLgotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWJpbmRH
cmFwaGljc0NvbnRleHQoYm9vbCBzdWNjZXNzKSA9IDA7Ci0KLSAgICAvLyBTY2hlZHVsZXMgYSBj
b21wb3NpdGluZyBwYXNzLCBtZWFuaW5nIHRoZSBjbGllbnQgc2hvdWxkIGNhbGwKLSAgICAvLyBX
ZWJMYXllclRyZWVWaWV3Ojpjb21wb3NpdGUgYXQgYSBsYXRlciB0aW1lLiBUaGlzIGlzIG9ubHkg
Y2FsbGVkIGlmIHRoZQotICAgIC8vIGNvbXBvc2l0b3IgdGhyZWFkIGlzIGRpc2FibGVkOyB3aGVu
IGVuYWJsZWQsIHRoZSBjb21wb3NpdG9yIHdpbGwKLSAgICAvLyBpbnRlcm5hbGx5IHNjaGVkdWxl
IGEgY29tcG9zaXRpbmcgcGFzcyB3aGVuIG5lZWRlZC4KLSAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1
bGVDb21wb3NpdGUoKSA9IDA7Ci0KLXByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIH5XZWJMYXllclRy
ZWVWaWV3Q2xpZW50KCkgeyB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlm
IC8vIFdlYkxheWVyVHJlZVZpZXdDbGllbnRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViQ29udGVudExheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkNvbnRlbnRMYXllci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRl
OGQ5OThhZTk4YzRjMWNkZWQ1NmI3YTQ4NzhjOGYzNDRlMjhhZDguLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViQ29udGVudExheWVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViQ29udGVudExheWVyLmgiCi0KLSNp
bmNsdWRlICJXZWJDb250ZW50TGF5ZXJJbXBsLmgiCi0jaW5jbHVkZSAiV2ViRmxvYXRSZWN0Lmgi
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1XZWJDb250ZW50TGF5ZXIgV2ViQ29udGVudExheWVy
OjpjcmVhdGUoV2ViTGF5ZXJDbGllbnQqIGNsaWVudCwgV2ViQ29udGVudExheWVyQ2xpZW50KiBj
b250ZW50Q2xpZW50KQotewotICAgIHJldHVybiBXZWJDb250ZW50TGF5ZXIoV2ViQ29udGVudExh
eWVySW1wbDo6Y3JlYXRlKGNsaWVudCwgY29udGVudENsaWVudCkpOwotfQotCi12b2lkIFdlYkNv
bnRlbnRMYXllcjo6c2V0RHJhd3NDb250ZW50KGJvb2wgZHJhd3NDb250ZW50KQotewotICAgIHVu
d3JhcDxXZWJDb250ZW50TGF5ZXJJbXBsPigpLT5zZXREcmF3c0NvbnRlbnQoZHJhd3NDb250ZW50
KTsKLX0KLQotYm9vbCBXZWJDb250ZW50TGF5ZXI6OmRyYXdzQ29udGVudCgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIGNvbnN0VW53cmFwPFdlYkNvbnRlbnRMYXllckltcGw+KCktPmRyYXdzQ29udGVu
dCgpOwotfQotCi12b2lkIFdlYkNvbnRlbnRMYXllcjo6aW52YWxpZGF0ZVJlY3QoY29uc3QgV2Vi
RmxvYXRSZWN0JiBkaXJ0eVJlY3QpCi17Ci0gICAgdW53cmFwPFdlYkNvbnRlbnRMYXllckltcGw+
KCktPnNldE5lZWRzRGlzcGxheShkaXJ0eVJlY3QpOwotfQotCi12b2lkIFdlYkNvbnRlbnRMYXll
cjo6aW52YWxpZGF0ZSgpCi17Ci0gICAgdW53cmFwPFdlYkNvbnRlbnRMYXllckltcGw+KCktPnNl
dE5lZWRzRGlzcGxheSgpOwotfQotCi1XZWJGbG9hdFJlY3QgV2ViQ29udGVudExheWVyOjppbnZh
bGlkUmVjdCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdlYkZsb2F0UmVjdChjb25zdFVud3JhcDxX
ZWJDb250ZW50TGF5ZXJJbXBsPigpLT5kaXJ0eVJlY3QoKSk7Ci19Ci0KLVdlYkNvbnRlbnRMYXll
cjo6V2ViQ29udGVudExheWVyKGNvbnN0IFBhc3NSZWZQdHI8V2ViQ29udGVudExheWVySW1wbD4m
IG5vZGUpCi0gICAgOiBXZWJMYXllcihub2RlKQotewotfQotCi1XZWJDb250ZW50TGF5ZXImIFdl
YkNvbnRlbnRMYXllcjo6b3BlcmF0b3I9KGNvbnN0IFBhc3NSZWZQdHI8V2ViQ29udGVudExheWVy
SW1wbD4mIG5vZGUpCi17Ci0gICAgbV9wcml2YXRlID0gbm9kZTsKLSAgICByZXR1cm4gKnRoaXM7
Ci19Ci0KLVdlYkNvbnRlbnRMYXllcjo6b3BlcmF0b3IgUGFzc1JlZlB0cjxXZWJDb250ZW50TGF5
ZXJJbXBsPigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkNvbnRlbnRMYXll
ckltcGwqPihtX3ByaXZhdGUuZ2V0KCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbnRlbnRMYXllckltcGwu
Y3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29udGVudExheWVySW1wbC5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2NDFlNmNhMDcyOTRiOTc5NTQ3N2Q0ZTIw
MjJlODk5ZWFiMWMyN2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQ29udGVudExheWVySW1wbC5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw4NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
LSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIldlYkNvbnRlbnRMYXllckltcGwuaCIKLQotI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dC5oIgotI2luY2x1ZGUgIldlYkNhbnZhcy5oIgotI2luY2x1ZGUgIldlYkNvbnRlbnRM
YXllckNsaWVudC5oIgotI2luY2x1ZGUgIldlYkxheWVyQ2xpZW50LmgiCi0jaW5jbHVkZSAiV2Vi
UmVjdC5oIgotI2lmIFdFQktJVF9VU0lOR19TS0lBCi0jaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0
U2tpYS5oIgotI2VuZGlmCi0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2Ug
V2ViS2l0IHsKLQotUGFzc1JlZlB0cjxXZWJDb250ZW50TGF5ZXJJbXBsPiBXZWJDb250ZW50TGF5
ZXJJbXBsOjpjcmVhdGUoV2ViTGF5ZXJDbGllbnQqIGNsaWVudCwgV2ViQ29udGVudExheWVyQ2xp
ZW50KiBjb250ZW50Q2xpZW50KQotewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ29udGVu
dExheWVySW1wbChjbGllbnQsIGNvbnRlbnRDbGllbnQpKTsKLX0KLQotV2ViQ29udGVudExheWVy
SW1wbDo6V2ViQ29udGVudExheWVySW1wbChXZWJMYXllckNsaWVudCogY2xpZW50LCBXZWJDb250
ZW50TGF5ZXJDbGllbnQqIGNvbnRlbnRDbGllbnQpCi0gICAgOiBDb250ZW50TGF5ZXJDaHJvbWl1
bSh0aGlzKQotICAgICwgbV9jbGllbnQoY2xpZW50KQotICAgICwgbV9jb250ZW50Q2xpZW50KGNv
bnRlbnRDbGllbnQpCi0gICAgLCBtX2RyYXdzQ29udGVudCh0cnVlKQotewotfQotCi1XZWJDb250
ZW50TGF5ZXJJbXBsOjp+V2ViQ29udGVudExheWVySW1wbCgpCi17Ci19Ci0KLXZvaWQgV2ViQ29u
dGVudExheWVySW1wbDo6c2V0RHJhd3NDb250ZW50KGJvb2wgZHJhd3NDb250ZW50KQotewotICAg
IG1fZHJhd3NDb250ZW50ID0gZHJhd3NDb250ZW50OwotfQotCi1ib29sIFdlYkNvbnRlbnRMYXll
ckltcGw6OmRyYXdzQ29udGVudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fZHJhd3NDb250ZW50
OwotfQotCi12b2lkIFdlYkNvbnRlbnRMYXllckltcGw6OnBhaW50Q29udGVudHMoR3JhcGhpY3ND
b250ZXh0JiBnYywgY29uc3QgSW50UmVjdCYgY2xpcCkKLXsKLSAgICBpZiAoIW1fY29udGVudENs
aWVudCkKLSAgICAgICAgcmV0dXJuOwotI2lmIFdFQktJVF9VU0lOR19TS0lBCi0gICAgV2ViQ2Fu
dmFzKiBjYW52YXMgPSBnYy5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCk7Ci0jZWxpZiBXRUJL
SVRfVVNJTkdfQ0cKLSAgICBXZWJDYW52YXMqIGNhbnZhcyA9IGdjLnBsYXRmb3JtQ29udGV4dCgp
OwotI2VuZGlmCi0gICAgbV9jb250ZW50Q2xpZW50LT5wYWludENvbnRlbnRzKGNhbnZhcywgV2Vi
UmVjdChjbGlwKSk7Ci19Ci0KLXZvaWQgV2ViQ29udGVudExheWVySW1wbDo6bm90aWZ5U3luY1Jl
cXVpcmVkKCkKLXsKLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5ub3RpZnlO
ZWVkc0NvbXBvc2l0ZSgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbnRlbnRMYXllckltcGwuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkNvbnRlbnRMYXllckltcGwuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMTA4ZGY1ZTNhMjU0ZWQ5NTY5NDU5ODZmZDY1NDFhODRhOTg4NjVm
Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJDb250ZW50TGF5ZXJJbXBsLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw1NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJDb250ZW50TGF5ZXJJbXBsX2gKLSNk
ZWZpbmUgV2ViQ29udGVudExheWVySW1wbF9oCi0KLSNpbmNsdWRlICJDb250ZW50TGF5ZXJDaHJv
bWl1bS5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQg
ewotY2xhc3MgV2ViTGF5ZXJDbGllbnQ7Ci1jbGFzcyBXZWJDb250ZW50TGF5ZXJDbGllbnQ7Ci0K
LWNsYXNzIFdlYkNvbnRlbnRMYXllckltcGwgOiBwdWJsaWMgV2ViQ29yZTo6Q29udGVudExheWVy
Q2hyb21pdW0sIHB1YmxpYyBXZWJDb3JlOjpDQ0xheWVyRGVsZWdhdGUgewotcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvbnRlbnRMYXllckltcGw+IGNyZWF0ZShXZWJMYXllckNs
aWVudCosIFdlYkNvbnRlbnRMYXllckNsaWVudCogY29udGVudENsaWVudCk7Ci0KLSAgICB2b2lk
IHNldERyYXdzQ29udGVudChib29sKTsKLSAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkg
Y29uc3Q7Ci0KLXByb3RlY3RlZDoKLSAgICBXZWJDb250ZW50TGF5ZXJJbXBsKFdlYkxheWVyQ2xp
ZW50KiwgV2ViQ29udGVudExheWVyQ2xpZW50KiBjb250ZW50Q2xpZW50KTsKLSAgICB2aXJ0dWFs
IH5XZWJDb250ZW50TGF5ZXJJbXBsKCk7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcCk7
Ci0gICAgdmlydHVhbCB2b2lkIG5vdGlmeVN5bmNSZXF1aXJlZCgpOwotCi0gICAgV2ViTGF5ZXJD
bGllbnQqIG1fY2xpZW50OwotICAgIFdlYkNvbnRlbnRMYXllckNsaWVudCogbV9jb250ZW50Q2xp
ZW50OwotICAgIGJvb2wgbV9kcmF3c0NvbnRlbnQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJL
aXQKLQotI2VuZGlmIC8vIFdlYkNvbnRlbnRMYXllckltcGxfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViTGF5ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZDY2MmM4
MWQ2ZDMzMjc1YjQ3ZDM1NjQwYzhhZGY3ZmRjNThmYmQ1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxh
eWVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYkxheWVyLmgiCi0KLSNpbmNsdWRlICJMYXllckNocm9t
aXVtLmgiCi0jaW5jbHVkZSAiU2tNYXRyaXg0NC5oIgotI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9u
TWF0cml4LmgiCi0jaW5jbHVkZSAiV2ViRmxvYXRQb2ludC5oIgotI2luY2x1ZGUgIldlYkxheWVy
SW1wbC5oIgotI2luY2x1ZGUgIldlYlNpemUuaCIKLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
Ci0KLW5hbWVzcGFjZSB7Ci0KLVRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybWF0aW9uTWF0
cml4RnJvbVNrTWF0cml4NDQoY29uc3QgU2tNYXRyaXg0NCYgbWF0cml4KQotewotICAgIGRvdWJs
ZSBkYXRhWzE2XTsKLSAgICBtYXRyaXguYXNDb2xNYWpvcmQoZGF0YSk7Ci0gICAgcmV0dXJuIFRy
YW5zZm9ybWF0aW9uTWF0cml4KGRhdGFbMF0sIGRhdGFbMV0sIGRhdGFbMl0sIGRhdGFbM10sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbNF0sIGRhdGFbNV0sIGRhdGFbNl0s
IGRhdGFbN10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbOF0sIGRhdGFb
OV0sIGRhdGFbMTBdLCBkYXRhWzExXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGF0YVsxMl0sIGRhdGFbMTNdLCBkYXRhWzE0XSwgZGF0YVsxNV0pOwotfQotCi1Ta01hdHJpeDQ0
IHNrTWF0cml4NDRGcm9tVHJhbnNmb3JtYXRpb25NYXRyaXgoY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIG1hdHJpeCkKLXsKLSAgICBTa01hdHJpeDQ0IHNrTWF0cml4OwotICAgIHNrTWF0cml4
LnNldCgwLCAwLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTExKCkpKTsKLSAgICBza01hdHJp
eC5zZXQoMSwgMCwgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0xMigpKSk7Ci0gICAgc2tNYXRy
aXguc2V0KDIsIDAsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMTMoKSkpOwotICAgIHNrTWF0
cml4LnNldCgzLCAwLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTE0KCkpKTsKLSAgICBza01h
dHJpeC5zZXQoMCwgMSwgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0yMSgpKSk7Ci0gICAgc2tN
YXRyaXguc2V0KDEsIDEsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMjIoKSkpOwotICAgIHNr
TWF0cml4LnNldCgyLCAxLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTIzKCkpKTsKLSAgICBz
a01hdHJpeC5zZXQoMywgMSwgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0yNCgpKSk7Ci0gICAg
c2tNYXRyaXguc2V0KDAsIDIsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMzEoKSkpOwotICAg
IHNrTWF0cml4LnNldCgxLCAyLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTMyKCkpKTsKLSAg
ICBza01hdHJpeC5zZXQoMiwgMiwgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm0zMygpKSk7Ci0g
ICAgc2tNYXRyaXguc2V0KDMsIDIsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMzQoKSkpOwot
ICAgIHNrTWF0cml4LnNldCgwLCAzLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTQxKCkpKTsK
LSAgICBza01hdHJpeC5zZXQoMSwgMywgU2tEb3VibGVUb01TY2FsYXIobWF0cml4Lm00MigpKSk7
Ci0gICAgc2tNYXRyaXguc2V0KDIsIDMsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tNDMoKSkp
OwotICAgIHNrTWF0cml4LnNldCgzLCAzLCBTa0RvdWJsZVRvTVNjYWxhcihtYXRyaXgubTQ0KCkp
KTsKLSAgICByZXR1cm4gc2tNYXRyaXg7Ci19Ci0KLX0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQot
Ci1uYW1lc3BhY2UgV2ViS2l0IHsKLQotV2ViTGF5ZXIgV2ViTGF5ZXI6OmNyZWF0ZShXZWJMYXll
ckNsaWVudCogY2xpZW50KQotewotICAgIHJldHVybiBXZWJMYXllcihXZWJMYXllckltcGw6OmNy
ZWF0ZShjbGllbnQpKTsKLX0KLQotV2ViTGF5ZXI6On5XZWJMYXllcigpCi17Ci0gICAgcmVzZXQo
KTsKLX0KLQotdm9pZCBXZWJMYXllcjo6cmVzZXQoKQotewotICAgIG1fcHJpdmF0ZS5yZXNldCgp
OwotfQotCi12b2lkIFdlYkxheWVyOjphc3NpZ24oY29uc3QgV2ViTGF5ZXImIG90aGVyKQotewot
ICAgIG1fcHJpdmF0ZSA9IG90aGVyLm1fcHJpdmF0ZTsKLX0KLQotYm9vbCBXZWJMYXllcjo6ZXF1
YWxzKGNvbnN0IFdlYkxheWVyJiBuKSBjb25zdAotewotICAgIHJldHVybiAobV9wcml2YXRlLmdl
dCgpID09IG4ubV9wcml2YXRlLmdldCgpKTsKLX0KLQotV2ViTGF5ZXIgV2ViTGF5ZXI6OnJvb3RM
YXllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdlYkxheWVyKGNvbnN0X2Nhc3Q8TGF5ZXJDaHJv
bWl1bSo+KG1fcHJpdmF0ZS0+cm9vdExheWVyKCkpKTsKLX0KLQotV2ViTGF5ZXIgV2ViTGF5ZXI6
OnBhcmVudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdlYkxheWVyKGNvbnN0X2Nhc3Q8TGF5ZXJD
aHJvbWl1bSo+KG1fcHJpdmF0ZS0+cGFyZW50KCkpKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6YWRk
Q2hpbGQoY29uc3QgV2ViTGF5ZXImIGNoaWxkKQotewotICAgIG1fcHJpdmF0ZS0+YWRkQ2hpbGQo
Y2hpbGQpOwotfQotCi12b2lkIFdlYkxheWVyOjppbnNlcnRDaGlsZChjb25zdCBXZWJMYXllciYg
Y2hpbGQsIHNpemVfdCBpbmRleCkKLXsKLSAgICBtX3ByaXZhdGUtPmluc2VydENoaWxkKGNoaWxk
LCBpbmRleCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnJlcGxhY2VDaGlsZChjb25zdCBXZWJMYXll
ciYgcmVmZXJlbmNlLCBjb25zdCBXZWJMYXllciYgbmV3TGF5ZXIpCi17Ci0gICAgV2ViTGF5ZXIg
cmVmID0gcmVmZXJlbmNlOwotICAgIG1fcHJpdmF0ZS0+cmVwbGFjZUNoaWxkKHJlZi51bndyYXA8
TGF5ZXJDaHJvbWl1bT4oKSwgbmV3TGF5ZXIpOwotfQotCi12b2lkIFdlYkxheWVyOjpyZW1vdmVG
cm9tUGFyZW50KCkKLXsKLSAgICBtX3ByaXZhdGUtPnJlbW92ZUZyb21QYXJlbnQoKTsKLX0KLQot
dm9pZCBXZWJMYXllcjo6cmVtb3ZlQWxsQ2hpbGRyZW4oKQotewotICAgIG1fcHJpdmF0ZS0+cmVt
b3ZlQWxsQ2hpbGRyZW4oKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0QW5jaG9yUG9pbnQoY29u
c3QgV2ViRmxvYXRQb2ludCYgYW5jaG9yUG9pbnQpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRBbmNo
b3JQb2ludChhbmNob3JQb2ludCk7Ci19Ci0KLVdlYkZsb2F0UG9pbnQgV2ViTGF5ZXI6OmFuY2hv
clBvaW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gV2ViRmxvYXRQb2ludChtX3ByaXZhdGUtPmFu
Y2hvclBvaW50KCkpOwotfQotCi12b2lkIFdlYkxheWVyOjpzZXRBbmNob3JQb2ludFooZmxvYXQg
YW5jaG9yUG9pbnRaKQotewotICAgIG1fcHJpdmF0ZS0+c2V0QW5jaG9yUG9pbnRaKGFuY2hvclBv
aW50Wik7Ci19Ci0KLWZsb2F0IFdlYkxheWVyOjphbmNob3JQb2ludFooKSBjb25zdAotewotICAg
IHJldHVybiBtX3ByaXZhdGUtPmFuY2hvclBvaW50WigpOwotfQotCi12b2lkIFdlYkxheWVyOjpz
ZXRCb3VuZHMoY29uc3QgV2ViU2l6ZSYgc2l6ZSkKLXsKLSAgICBtX3ByaXZhdGUtPnNldEJvdW5k
cyhzaXplKTsKLX0KLQotV2ViU2l6ZSBXZWJMYXllcjo6Ym91bmRzKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gV2ViU2l6ZShtX3ByaXZhdGUtPmJvdW5kcygpKTsKLX0KLQotdm9pZCBXZWJMYXllcjo6
c2V0TWFza3NUb0JvdW5kcyhib29sIG1hc2tzVG9Cb3VuZHMpCi17Ci0gICAgbV9wcml2YXRlLT5z
ZXRNYXNrc1RvQm91bmRzKG1hc2tzVG9Cb3VuZHMpOwotfQotCi1ib29sIFdlYkxheWVyOjptYXNr
c1RvQm91bmRzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5tYXNrc1RvQm91bmRz
KCk7Ci19Ci0KLXZvaWQgV2ViTGF5ZXI6OnNldE1hc2tMYXllcihjb25zdCBXZWJMYXllciYgbWFz
a0xheWVyKQotewotICAgIFdlYkxheWVyIHJlZiA9IG1hc2tMYXllcjsKLSAgICByZXR1cm4gbV9w
cml2YXRlLT5zZXRNYXNrTGF5ZXIocmVmLnVud3JhcDxMYXllckNocm9taXVtPigpKTsKLX0KLQot
V2ViTGF5ZXIgV2ViTGF5ZXI6Om1hc2tMYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFdlYkxh
eWVyKG1fcHJpdmF0ZS0+bWFza0xheWVyKCkpOwotfQotCi12b2lkIFdlYkxheWVyOjpzZXRPcGFj
aXR5KGZsb2F0IG9wYWNpdHkpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRPcGFjaXR5KG9wYWNpdHkp
OwotfQotCi1mbG9hdCBXZWJMYXllcjo6b3BhY2l0eSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
cHJpdmF0ZS0+b3BhY2l0eSgpOwotfQotCi12b2lkIFdlYkxheWVyOjpzZXRPcGFxdWUoYm9vbCBv
cGFxdWUpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRPcGFxdWUob3BhcXVlKTsKLX0KLQotYm9vbCBX
ZWJMYXllcjo6b3BhcXVlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5vcGFxdWUo
KTsKLX0KLQotdm9pZCBXZWJMYXllcjo6c2V0UG9zaXRpb24oY29uc3QgV2ViRmxvYXRQb2ludCYg
cG9zaXRpb24pCi17Ci0gICAgbV9wcml2YXRlLT5zZXRQb3NpdGlvbihwb3NpdGlvbik7Ci19Ci0K
LVdlYkZsb2F0UG9pbnQgV2ViTGF5ZXI6OnBvc2l0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
V2ViRmxvYXRQb2ludChtX3ByaXZhdGUtPnBvc2l0aW9uKCkpOwotfQotCi12b2lkIFdlYkxheWVy
OjpzZXRTdWJsYXllclRyYW5zZm9ybShjb25zdCBTa01hdHJpeDQ0JiBtYXRyaXgpCi17Ci0gICAg
bV9wcml2YXRlLT5zZXRTdWJsYXllclRyYW5zZm9ybSh0cmFuc2Zvcm1hdGlvbk1hdHJpeEZyb21T
a01hdHJpeDQ0KG1hdHJpeCkpOwotfQotCi1Ta01hdHJpeDQ0IFdlYkxheWVyOjpzdWJsYXllclRy
YW5zZm9ybSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHNrTWF0cml4NDRGcm9tVHJhbnNmb3JtYXRp
b25NYXRyaXgobV9wcml2YXRlLT5zdWJsYXllclRyYW5zZm9ybSgpKTsKLX0KLQotdm9pZCBXZWJM
YXllcjo6c2V0VHJhbnNmb3JtKGNvbnN0IFNrTWF0cml4NDQmIG1hdHJpeCkKLXsKLSAgICBtX3By
aXZhdGUtPnNldFRyYW5zZm9ybSh0cmFuc2Zvcm1hdGlvbk1hdHJpeEZyb21Ta01hdHJpeDQ0KG1h
dHJpeCkpOwotfQotCi1Ta01hdHJpeDQ0IFdlYkxheWVyOjp0cmFuc2Zvcm0oKSBjb25zdAotewot
ICAgIHJldHVybiBza01hdHJpeDQ0RnJvbVRyYW5zZm9ybWF0aW9uTWF0cml4KG1fcHJpdmF0ZS0+
dHJhbnNmb3JtKCkpOwotfQotCi1XZWJMYXllcjo6V2ViTGF5ZXIoY29uc3QgUGFzc1JlZlB0cjxM
YXllckNocm9taXVtPiYgbm9kZSkKLSAgICA6IG1fcHJpdmF0ZShub2RlKQotewotfQotCi1XZWJM
YXllciYgV2ViTGF5ZXI6Om9wZXJhdG9yPShjb25zdCBQYXNzUmVmUHRyPExheWVyQ2hyb21pdW0+
JiBub2RlKQotewotICAgIG1fcHJpdmF0ZSA9IG5vZGU7Ci0gICAgcmV0dXJuICp0aGlzOwotfQot
Ci1XZWJMYXllcjo6b3BlcmF0b3IgUGFzc1JlZlB0cjxMYXllckNocm9taXVtPigpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS5nZXQoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllckltcGwuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJJbXBsLmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDk4MTMyMWVkMjBlZGQ4ODJhYzA3MjEwNmYyM2MzYTUzZTVl
MjhiMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllckltcGwuY3BwCisrKyAvZGV2L251bGwKQEAg
LTEsNjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
Ci0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
Ci0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJM
YXllckltcGwuaCIKLQotI2luY2x1ZGUgIldlYkxheWVyQ2xpZW50LmgiCi0KLXVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotUGFzc1JlZlB0cjxXZWJMYXll
ckltcGw+IFdlYkxheWVySW1wbDo6Y3JlYXRlKFdlYkxheWVyQ2xpZW50KiBjbGllbnQpCi17Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJMYXllckltcGwoY2xpZW50KSk7Ci19Ci0KLVdlYkxh
eWVySW1wbDo6V2ViTGF5ZXJJbXBsKFdlYkxheWVyQ2xpZW50KiBjbGllbnQpIDogTGF5ZXJDaHJv
bWl1bSh0aGlzKSwgbV9jbGllbnQoY2xpZW50KQotewotfQotCi1XZWJMYXllckltcGw6On5XZWJM
YXllckltcGwoKQotewotfQotCi1ib29sIFdlYkxheWVySW1wbDo6ZHJhd3NDb250ZW50KCkgY29u
c3QKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLXZvaWQgV2ViTGF5ZXJJbXBsOjpwYWludENv
bnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJlY3QmIGNsaXApCi17Ci19Ci0KLXZv
aWQgV2ViTGF5ZXJJbXBsOjpub3RpZnlTeW5jUmVxdWlyZWQoKQotewotICAgIGlmIChtX2NsaWVu
dCkKLSAgICAgICAgbV9jbGllbnQtPm5vdGlmeU5lZWRzQ29tcG9zaXRlKCk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllckltcGwu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTU4ZDQxYjVjZGUxYTg0ODcwMmNhZDBm
Mzc1MTJjODkxMTU1MTExNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllckltcGwuaAorKysgL2Rl
di9udWxsCkBAIC0xLDUxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYkxheWVySW1wbF9oCi0j
ZGVmaW5lIFdlYkxheWVySW1wbF9oCi0KLSNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCi0jaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1jbGFzcyBXZWJM
YXllckNsaWVudDsKLQotY2xhc3MgV2ViTGF5ZXJJbXBsIDogcHVibGljIFdlYkNvcmU6OkxheWVy
Q2hyb21pdW0sIHB1YmxpYyBXZWJDb3JlOjpDQ0xheWVyRGVsZWdhdGUgewotcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFdlYkxheWVySW1wbD4gY3JlYXRlKFdlYkxheWVyQ2xpZW50Kik7
Ci0KLXByb3RlY3RlZDoKLSAgICBXZWJMYXllckltcGwoV2ViTGF5ZXJDbGllbnQqKTsKLSAgICB2
aXJ0dWFsIH5XZWJMYXllckltcGwoKTsKLSAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkg
Y29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcCk7Ci0gICAgdmlydHVhbCB2b2lk
IG5vdGlmeVN5bmNSZXF1aXJlZCgpOwotCi0gICAgV2ViTGF5ZXJDbGllbnQqIG1fY2xpZW50Owot
fTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJMYXllckltcGxfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDdkYjFhZTBiODk5MjA2YjRiYmQ2MzcyODMzYWU1
YjYwYjYwMGNhZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDEwNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lu
Y2x1ZGUgIldlYkxheWVyVHJlZVZpZXcuaCIKLQotI2luY2x1ZGUgIldlYkxheWVyVHJlZVZpZXdJ
bXBsLmgiCi0jaW5jbHVkZSAiV2ViU2l6ZS5oIgotI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9z
dC5oIgotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1X
ZWJMYXllclRyZWVWaWV3OjpTZXR0aW5nczo6b3BlcmF0b3IgQ0NTZXR0aW5ncygpIGNvbnN0Ci17
Ci0gICAgQ0NTZXR0aW5ncyBzZXR0aW5nczsKLSAgICBzZXR0aW5ncy5hY2NlbGVyYXRlUGFpbnRp
bmcgPSBhY2NlbGVyYXRlUGFpbnRpbmc7Ci0gICAgc2V0dGluZ3MuY29tcG9zaXRlT2Zmc2NyZWVu
ID0gY29tcG9zaXRlT2Zmc2NyZWVuOwotCi0gICAgLy8gRklYTUU6IGNvbXBvc2l0b3IgdGhyZWFk
IGlzbid0IHN1cHBvcnRlZCBjdXJyZW50bHkuCi0gICAgc2V0dGluZ3MuZW5hYmxlQ29tcG9zaXRv
clRocmVhZCA9IGZhbHNlOwotCi0gICAgLy8gRklYTUU6IHNob3dGUFNDb3VudGVyIC8gc2hvd1Bs
YXRmb3JtTGF5ZXJUcmVlIGFyZW4ndCBzdXBwb3J0ZWQgY3VycmVudGx5LgotICAgIHNldHRpbmdz
LnNob3dGUFNDb3VudGVyID0gZmFsc2U7Ci0gICAgc2V0dGluZ3Muc2hvd1BsYXRmb3JtTGF5ZXJU
cmVlID0gZmFsc2U7Ci0gICAgcmV0dXJuIHNldHRpbmdzOwotfQotCi1XZWJMYXllclRyZWVWaWV3
IFdlYkxheWVyVHJlZVZpZXc6OmNyZWF0ZShXZWJMYXllclRyZWVWaWV3Q2xpZW50KiBjbGllbnQs
IGNvbnN0IFdlYkxheWVyJiByb290LCBjb25zdCBXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5ncyYg
c2V0dGluZ3MpCi17Ci0gICAgcmV0dXJuIFdlYkxheWVyVHJlZVZpZXcoV2ViTGF5ZXJUcmVlVmll
d0ltcGw6OmNyZWF0ZShjbGllbnQsIHJvb3QsIHNldHRpbmdzKSk7Ci19Ci0KLXZvaWQgV2ViTGF5
ZXJUcmVlVmlldzo6cmVzZXQoKQotewotICAgIG1fcHJpdmF0ZS5yZXNldCgpOwotfQotCi12b2lk
IFdlYkxheWVyVHJlZVZpZXc6OmFzc2lnbihjb25zdCBXZWJMYXllclRyZWVWaWV3JiBvdGhlcikK
LXsKLSAgICBtX3ByaXZhdGUgPSBvdGhlci5tX3ByaXZhdGU7Ci19Ci0KLWJvb2wgV2ViTGF5ZXJU
cmVlVmlldzo6ZXF1YWxzKGNvbnN0IFdlYkxheWVyVHJlZVZpZXcmIG4pIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIChtX3ByaXZhdGUuZ2V0KCkgPT0gbi5tX3ByaXZhdGUuZ2V0KCkpOwotfQotCi12b2lk
IFdlYkxheWVyVHJlZVZpZXc6OmNvbXBvc2l0ZSgpCi17Ci0jaWYgIVVTRShUSFJFQURFRF9DT01Q
T1NJVElORykKLSAgICBtX3ByaXZhdGUtPmNvbXBvc2l0ZSgpOwotI2VuZGlmCi19Ci0KLXZvaWQg
V2ViTGF5ZXJUcmVlVmlldzo6c2V0Vmlld3BvcnRTaXplKGNvbnN0IFdlYlNpemUmIHZpZXdwb3J0
U2l6ZSkKLXsKLSAgICBtX3ByaXZhdGUtPnNldFZpZXdwb3J0KHZpZXdwb3J0U2l6ZSk7Ci19Ci0K
LVdlYlNpemUgV2ViTGF5ZXJUcmVlVmlldzo6dmlld3BvcnRTaXplKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gV2ViU2l6ZShtX3ByaXZhdGUtPnZpZXdwb3J0U2l6ZSgpKTsKLX0KLQotV2ViTGF5ZXJU
cmVlVmlldzo6V2ViTGF5ZXJUcmVlVmlldyhjb25zdCBQYXNzUmVmUHRyPENDTGF5ZXJUcmVlSG9z
dD4mIG5vZGUpCi0gICAgOiBtX3ByaXZhdGUobm9kZSkKLXsKLX0KLQotV2ViTGF5ZXJUcmVlVmll
dyYgV2ViTGF5ZXJUcmVlVmlldzo6b3BlcmF0b3I9KGNvbnN0IFBhc3NSZWZQdHI8Q0NMYXllclRy
ZWVIb3N0PiYgbm9kZSkKLXsKLSAgICBtX3ByaXZhdGUgPSBub2RlOwotICAgIHJldHVybiAqdGhp
czsKLX0KLQotV2ViTGF5ZXJUcmVlVmlldzo6b3BlcmF0b3IgUGFzc1JlZlB0cjxDQ0xheWVyVHJl
ZUhvc3Q+KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLmdldCgpOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkxheWVyVHJlZVZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkxheWVyVHJlZVZpZXdJbXBsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDE0
YjliMGYzNjBhMTNjYWRmNGFmZjc2ZDBhN2ZhYzZmY2E4M2QyYi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJMYXllclRyZWVWaWV3SW1wbC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
Ci0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJMYXllclRyZWVWaWV3SW1w
bC5oIgotCi0jaW5jbHVkZSAiQ0NUaHJlYWRJbXBsLmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlLmgiCi0jaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgotI2luY2x1ZGUgIldl
YkdyYXBoaWNzQ29udGV4dDNELmgiCi0jaW5jbHVkZSAiV2ViTGF5ZXIuaCIKLSNpbmNsdWRlICJX
ZWJMYXllclRyZWVWaWV3LmgiCi0jaW5jbHVkZSAiV2ViTGF5ZXJUcmVlVmlld0NsaWVudC5oIgot
I2luY2x1ZGUgIldlYlNpemUuaCIKLSNpbmNsdWRlICJXZWJUaHJlYWQuaCIKLQotdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1QYXNzUmVmUHRyPFdlYkxh
eWVyVHJlZVZpZXdJbXBsPiBXZWJMYXllclRyZWVWaWV3SW1wbDo6Y3JlYXRlKFdlYkxheWVyVHJl
ZVZpZXdDbGllbnQqIGNsaWVudCwgY29uc3QgV2ViTGF5ZXImIHJvb3QsIGNvbnN0IFdlYkxheWVy
VHJlZVZpZXc6OlNldHRpbmdzJiBzZXR0aW5ncykKLXsKLSAgICBSZWZQdHI8V2ViTGF5ZXJUcmVl
Vmlld0ltcGw+IGhvc3QgPSBhZG9wdFJlZihuZXcgV2ViTGF5ZXJUcmVlVmlld0ltcGwoY2xpZW50
LCByb290LCBzZXR0aW5ncykpOwotICAgIGlmICghaG9zdC0+aW5pdGlhbGl6ZSgpKQotICAgICAg
ICByZXR1cm4gMDsKLSAgICByZXR1cm4gaG9zdDsKLX0KLQotV2ViTGF5ZXJUcmVlVmlld0ltcGw6
OldlYkxheWVyVHJlZVZpZXdJbXBsKFdlYkxheWVyVHJlZVZpZXdDbGllbnQqIGNsaWVudCwgY29u
c3QgV2ViTGF5ZXImIHJvb3QsIGNvbnN0IFdlYkxheWVyVHJlZVZpZXc6OlNldHRpbmdzJiBzZXR0
aW5ncykgCi0gICAgOiBDQ0xheWVyVHJlZUhvc3QodGhpcywgcm9vdCwgc2V0dGluZ3MpCi0gICAg
LCBtX2NsaWVudChjbGllbnQpCi17Ci19Ci0KLVdlYkxheWVyVHJlZVZpZXdJbXBsOjp+V2ViTGF5
ZXJUcmVlVmlld0ltcGwoKQotewotfQotCi12b2lkIFdlYkxheWVyVHJlZVZpZXdJbXBsOjphbmlt
YXRlQW5kTGF5b3V0KGRvdWJsZSBmcmFtZUJlZ2luVGltZSkKLXsKLSAgICBpZiAobV9jbGllbnQp
Ci0gICAgICAgIG1fY2xpZW50LT5hbmltYXRlQW5kTGF5b3V0KGZyYW1lQmVnaW5UaW1lKTsKLX0K
LQotdm9pZCBXZWJMYXllclRyZWVWaWV3SW1wbDo6YXBwbHlTY3JvbGxEZWx0YShjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBkZWx0YSkKLXsKLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xp
ZW50LT5hcHBseVNjcm9sbERlbHRhKFdlYlNpemUoZGVsdGEpKTsKLX0KLQotUGFzc1JlZlB0cjxH
cmFwaGljc0NvbnRleHQzRD4gV2ViTGF5ZXJUcmVlVmlld0ltcGw6OmNyZWF0ZUxheWVyVHJlZUhv
c3RDb250ZXh0M0QoKQotewotICAgIGlmICghbV9jbGllbnQpCi0gICAgICAgIHJldHVybiAwOwot
ICAgIE93blB0cjxXZWJHcmFwaGljc0NvbnRleHQzRD4gd2ViQ29udGV4dCA9IGFkb3B0UHRyKG1f
Y2xpZW50LT5jcmVhdGVDb250ZXh0M0QoKSk7Ci0gICAgaWYgKCF3ZWJDb250ZXh0KQotICAgICAg
ICByZXR1cm4gMDsKLQotICAgIFdlYkdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIHdlYkF0
dHJpYnV0ZXMgPSB3ZWJDb250ZXh0LT5nZXRDb250ZXh0QXR0cmlidXRlcygpOwotICAgIEdyYXBo
aWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7Ci0gICAgYXR0cmlidXRlcy5hbHBo
YSA9IHdlYkF0dHJpYnV0ZXMuYWxwaGE7Ci0gICAgYXR0cmlidXRlcy5kZXB0aCA9IHdlYkF0dHJp
YnV0ZXMuZGVwdGg7Ci0gICAgYXR0cmlidXRlcy5zdGVuY2lsID0gd2ViQXR0cmlidXRlcy5zdGVu
Y2lsOwotICAgIGF0dHJpYnV0ZXMuYW50aWFsaWFzID0gd2ViQXR0cmlidXRlcy5hbnRpYWxpYXM7
Ci0gICAgYXR0cmlidXRlcy5wcmVtdWx0aXBsaWVkQWxwaGEgPSB3ZWJBdHRyaWJ1dGVzLnByZW11
bHRpcGxpZWRBbHBoYTsKLSAgICBhdHRyaWJ1dGVzLmNhblJlY292ZXJGcm9tQ29udGV4dExvc3Mg
PSB3ZWJBdHRyaWJ1dGVzLmNhblJlY292ZXJGcm9tQ29udGV4dExvc3M7Ci0gICAgYXR0cmlidXRl
cy5ub0V4dGVuc2lvbnMgPSB3ZWJBdHRyaWJ1dGVzLm5vRXh0ZW5zaW9uczsKLSAgICBhdHRyaWJ1
dGVzLnNoYXJlUmVzb3VyY2VzID0gd2ViQXR0cmlidXRlcy5zaGFyZVJlc291cmNlczsKLSAgICBh
dHRyaWJ1dGVzLnByZXNlcnZlRHJhd2luZ0J1ZmZlciA9IGZhbHNlOwotCi0gICAgR3JhcGhpY3ND
b250ZXh0M0Q6OlJlbmRlclN0eWxlIHN0eWxlID0gR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRp
cmVjdGx5VG9Ib3N0V2luZG93OwotICAgIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6VGhyZWFk
VXNhZ2UgdXNhZ2UgPSBzZXR0aW5ncygpLmVuYWJsZUNvbXBvc2l0b3JUaHJlYWQgPyBHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGU6OkZvclVzZU9uQW5vdGhlclRocmVhZCA6IEdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZTo6Rm9yVXNlT25UaGlzVGhyZWFkOwotICAgIHJldHVybiBHcmFwaGljc0NvbnRl
eHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KHdlYkNvbnRl
eHQucmVsZWFzZSgpLCBhdHRyaWJ1dGVzLCAwLCBzdHlsZSwgdXNhZ2UpOwotfQotCi12b2lkIFdl
YkxheWVyVHJlZVZpZXdJbXBsOjpkaWRSZWNyZWF0ZUdyYXBoaWNzQ29udGV4dChib29sIHN1Y2Nl
c3MpCi17Ci0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+ZGlkUmViaW5kR3Jh
cGhpY3NDb250ZXh0KHN1Y2Nlc3MpOwotfQotCi0jaWYgIVVTRShUSFJFQURFRF9DT01QT1NJVElO
RykKLXZvaWQgV2ViTGF5ZXJUcmVlVmlld0ltcGw6OnNjaGVkdWxlQ29tcG9zaXRlKCkKLXsKLSAg
ICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5zY2hlZHVsZUNvbXBvc2l0ZSgpOwot
fQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXdJbXBsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGQ1ZjJhOWU4YjQzM2ZhMGM2NjljNTQ2NWQwYWUzZDAxMmQyNDRiMzAuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViTGF5ZXJUcmVlVmlld0ltcGwuaAorKysgL2Rldi9udWxsCkBAIC0xLDU3
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQot
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYkxheWVyVHJlZVZpZXdJbXBsX2gKLSNkZWZpbmUg
V2ViTGF5ZXJUcmVlVmlld0ltcGxfaAotCi0jaW5jbHVkZSAiV2ViTGF5ZXJUcmVlVmlldy5oIgot
I2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotY2xhc3MgV2ViTGF5ZXI7Ci1jbGFzcyBXZWJMYXll
clRyZWVWaWV3Q2xpZW50OwotCi1jbGFzcyBXZWJMYXllclRyZWVWaWV3SW1wbCA6IHB1YmxpYyBX
ZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3QsIHB1YmxpYyBXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RD
bGllbnQgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkxheWVyVHJlZVZpZXdJ
bXBsPiBjcmVhdGUoV2ViTGF5ZXJUcmVlVmlld0NsaWVudCosIGNvbnN0IFdlYkxheWVyJiByb290
LCBjb25zdCBXZWJMYXllclRyZWVWaWV3OjpTZXR0aW5ncyYpOwotCi1wcml2YXRlOgotICAgIFdl
YkxheWVyVHJlZVZpZXdJbXBsKFdlYkxheWVyVHJlZVZpZXdDbGllbnQqLCBjb25zdCBXZWJMYXll
ciYgcm9vdCwgY29uc3QgV2ViTGF5ZXJUcmVlVmlldzo6U2V0dGluZ3MmKTsKLSAgICB2aXJ0dWFs
IH5XZWJMYXllclRyZWVWaWV3SW1wbCgpOwotICAgIHZpcnR1YWwgdm9pZCBhbmltYXRlQW5kTGF5
b3V0KGRvdWJsZSBmcmFtZUJlZ2luVGltZSk7Ci0gICAgdmlydHVhbCB2b2lkIGFwcGx5U2Nyb2xs
RGVsdGEoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRD4gY3JlYXRlTGF5ZXJUcmVlSG9zdENvbnRleHQzRCgp
OwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNyZWF0ZUdyYXBoaWNzQ29udGV4dChib29sIHN1Y2Nl
c3MpOwotI2lmICFVU0UoVEhSRUFERURfQ09NUE9TSVRJTkcpCi0gICAgdmlydHVhbCB2b2lkIHNj
aGVkdWxlQ29tcG9zaXRlKCk7Ci0jZW5kaWYKLQotICAgIFdlYkxheWVyVHJlZVZpZXdDbGllbnQq
IG1fY2xpZW50OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJM
YXllclRyZWVWaWV3SW1wbF9oCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>