<?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>168606</bug_id>
          
          <creation_ts>2017-02-20 10:01:51 -0800</creation_ts>
          <short_desc>Remove ENABLE_THREADED_COMPOSITOR build option</short_desc>
          <delta_ts>2017-02-22 11:23:58 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>WebKit Local 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>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>mcatanzaro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1278970</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-02-20 10:01:51 -0800</bug_when>
    <thetext>Now that we have AC mode on demand with the threaded compositor there&apos;s no reason to keep the old AC code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278972</commentid>
    <comment_count>1</comment_count>
      <attachid>302154</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-02-20 10:05:20 -0800</bug_when>
    <thetext>Created attachment 302154
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278986</commentid>
    <comment_count>2</comment_count>
      <attachid>302155</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-02-20 10:28:38 -0800</bug_when>
    <thetext>Created attachment 302155
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1278987</commentid>
    <comment_count>3</comment_count>
      <attachid>302155</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-02-20 10:32:35 -0800</bug_when>
    <thetext>Comment on attachment 302155
Patch

Can we remove USE(TEXTURE_MAPPER_GL)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279072</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-02-20 15:06:38 -0800</bug_when>
    <thetext>Note:

 * There are no advantages to disabling threaded compositor.
 * There are two big disadvantages:
   * We never use it or test it.
   * It regularly causes full desktop lockups, bug #126122.

Hence removing it should be uncontroversial.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279233</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-02-20 22:40:26 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 302155 [details]
&gt; Patch
&gt; 
&gt; Can we remove USE(TEXTURE_MAPPER_GL)?

Of course not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279244</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-02-20 23:14:11 -0800</bug_when>
    <thetext>Committed r212703: &lt;http://trac.webkit.org/changeset/212703&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279322</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-02-21 07:49:07 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #3)
&gt; &gt; Comment on attachment 302155 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Can we remove USE(TEXTURE_MAPPER_GL)?
&gt; 
&gt; Of course not.

It&apos;s a shame that there&apos;s no documentation for what all these different graphics modes are. ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279649</commentid>
    <comment_count>8</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2017-02-21 16:55:37 -0800</bug_when>
    <thetext>Carlos this ended up breaking WinCairo. See https://build.webkit.org/builders/WinCairo%2064-Bit%20Release/builds/65682/steps/compile-webkit/logs/stdio for linker errors for TextureMapperTiledBackingStore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279806</commentid>
    <comment_count>9</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-02-21 23:55:05 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Carlos this ended up breaking WinCairo. See
&gt; https://build.webkit.org/builders/WinCairo%2064-Bit%20Release/builds/65682/
&gt; steps/compile-webkit/logs/stdio for linker errors for
&gt; TextureMapperTiledBackingStore.

I&apos;m sorry, I confused TextureMapperBackingStore.cpp with TextureMapperTiledBackingStore.cpp. I&apos;ll fix it now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279807</commentid>
    <comment_count>10</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-02-21 23:56:53 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; Carlos this ended up breaking WinCairo. See
&gt; &gt; https://build.webkit.org/builders/WinCairo%2064-Bit%20Release/builds/65682/
&gt; &gt; steps/compile-webkit/logs/stdio for linker errors for
&gt; &gt; TextureMapperTiledBackingStore.
&gt; 
&gt; I&apos;m sorry, I confused TextureMapperBackingStore.cpp with
&gt; TextureMapperTiledBackingStore.cpp. I&apos;ll fix it now.

Hopefully fixed in http://trac.webkit.org/changeset/212811</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1279975</commentid>
    <comment_count>11</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2017-02-22 11:23:58 -0800</bug_when>
    <thetext>Back to green! Thanks you</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302154</attachid>
            <date>2017-02-20 10:05:20 -0800</date>
            <delta_ts>2017-02-20 10:28:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk-remove-threaded-compositor-option.diff</filename>
            <type>text/plain</type>
            <size>32627</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA0OTkxYmNlODQzYy4uMjhh
ZDFiYzFkYWMgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAxNy0wMi0yMCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CisKKyAgICAgICAgUmVtb3ZlIEVOQUJMRV9USFJFQURFRF9DT01QT1NJVE9SIGJ1aWxk
IG9wdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTY4NjA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBTb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2UvY21ha2Uv
V2ViS2l0RmVhdHVyZXMuY21ha2U6CisKIDIwMTctMDItMjAgIE1hbnVlbCBSZWdvIENhc2Fzbm92
YXMgIDxyZWdvQGlnYWxpYS5jb20+CiAKICAgICAgICAgW2Nzcy1ncmlkXSBSZW1vdmUgY29tcGls
YXRpb24gZmxhZyBFTkFCTEVfQ1NTX0dSSURfTEFZT1VUCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmVjNjMxYWQ4
NmUuLmU3NGNjN2I1YTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTQgQEAKIDIwMTctMDItMjAg
IENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCisgICAgICAgIFJl
bW92ZSBFTkFCTEVfVEhSRUFERURfQ09NUE9TSVRPUiBidWlsZCBvcHRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODYwNgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vVGV4dHVyZU1h
cHBlci5jbWFrZToKKworMjAxNy0wMi0yMCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lh
QGlnYWxpYS5jb20+CisKICAgICAgICAgUmVtb3ZlIGNvZGUgdW5kZXIgVVNFKEdSQVBISUNTX1NV
UkZBQ0UpCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
Njg1OTIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGV4dHVyZU1hcHBl
ci5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RleHR1cmVNYXBwZXIuY21ha2UKaW5k
ZXggMTA5MWE0NjQzOGQuLjI0MDIzNTcyMjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9UZXh0dXJlTWFwcGVyLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1RleHR1cmVNYXBwZXIuY21ha2UKQEAgLTQsMTUgKzQsMTAgQEAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9JTkNMVURFX0RJUkVDVE9SSUVTCiBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5jcHAKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZVBvb2wuY3BwCi0gICAgcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmNwcAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyRlBTQ291bnRlci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDM0RQbGF0Zm9ybUxheWVyLmNwcAotICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCi0gICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlLmNwcAotICAgIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuY3BwCiApCiAKIGlmIChVU0Vf
VEVYVFVSRV9NQVBQRVJfR0wpCkBAIC0zMywxNyArMjgsMjEgQEAgaWYgKFVTRV9DT09SRElOQVRF
RF9HUkFQSElDUykKICAgICAgICAgcGFnZS9zY3JvbGxpbmcvY29vcmRpbmF0ZWRncmFwaGljcy9T
Y3JvbGxpbmdDb29yZGluYXRvckNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCiAgICAgICAgIHBhZ2Uv
c2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nU3RhdGVOb2RlQ29vcmRpbmF0
ZWRHcmFwaGljcy5jcHAKIAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcAorCiAgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5
ZXIuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29y
ZGluYXRlZEltYWdlQmFja2luZy5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkU3VyZmFjZS5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL1RpbGUuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9UaWxlZEJhY2tpbmdTdG9yZS5jcHAKICAgICApCi1lbmRp
ZiAoKQotCi1pZiAoRU5BQkxFX1RIUkVBREVEX0NPTVBPU0lUT1IpCitlbHNlICgpCiAgICAgbGlz
dChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCi0gICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAKLSAgICAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwCisgICAg
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5j
cHAKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5n
U3RvcmUuY3BwCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
TGF5ZXIuY3BwCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
VGlsZS5jcHAKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJU
aWxlZEJhY2tpbmdTdG9yZS5jcHAKICAgICApCiBlbmRpZiAoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDA2ZTRm
NDgxYjMzLi5lNmJkZjQ3ZWM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIwIEBACiAyMDE3LTAy
LTIwICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAorICAgICAg
ICBSZW1vdmUgRU5BQkxFX1RIUkVBREVEX0NPTVBPU0lUT1IgYnVpbGQgb3B0aW9uCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjg2MDYKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOb3cgdGhhdCB3ZSBoYXZl
IEFDIG1vZGUgb24gZGVtYW5kIHdpdGggdGhlIHRocmVhZGVkIGNvbXBvc2l0b3IgdGhlcmUncyBu
byByZWFzb24gdG8ga2VlcCB0aGUgb2xkIEFDIGNvZGUuCisKKyAgICAgICAgKiBQbGF0Zm9ybUdU
Sy5jbWFrZToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUhvc3Q6OmNyZWF0ZSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuaDogUmVtb3ZlZC4K
KworMjAxNy0wMi0yMCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+
CisKICAgICAgICAgUmVtb3ZlIGNvZGUgdW5kZXIgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjg1OTIKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UgYi9Tb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybUdUSy5jbWFrZQppbmRleCBlYmVkZTc1MDI3Ny4uODhkNWVhZTQ2NzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtR1RLLmNtYWtlCkBAIC01OSw2ICs1OSwxNCBAQCBsaXN0KEFQUEVORCBXZWJL
aXQyX1NPVVJDRVMKIAogICAgIFNoYXJlZC9BdXRoZW50aWNhdGlvbi9zb3VwL0F1dGhlbnRpY2F0
aW9uTWFuYWdlclNvdXAuY3BwCiAKKyAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29y
ZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAKKyAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9D
b29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCisgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvU2ltcGxlVmlld3BvcnRDb250cm9sbGVyLmNwcAorCisgICAgU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5jcHAKKyAgICBT
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkU2FmZUNv
b3JkaW5hdGVkU3VyZmFjZS5jcHAKKyAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJl
YWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcAorCiAgICAgU2hhcmVkL1BsdWdp
bnMvTmV0c2NhcGUveDExL05ldHNjYXBlUGx1Z2luTW9kdWxlWDExLmNwcAogCiAgICAgU2hhcmVk
L1BsdWdpbnMvdW5peC9QbHVnaW5TZWFyY2hQYXRoLmNwcApAQCAtNDY5LDYgKzQ3NywxMyBAQCBs
aXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKIAogICAgIFdlYlByb2Nlc3MvV2Vi
UGFnZS9BY2NlbGVyYXRlZERyYXdpbmdBcmVhLmNwcAorCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQXJlYUFsbG9jYXRvci5jcHAKKyAgICBXZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNwcAorICAg
IFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdC5jcHAKKyAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9U
aHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKKyAgICBXZWJQcm9jZXNzL1dlYlBh
Z2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9VcGRhdGVBdGxhcy5jcHAKKwogICAgIFdlYlByb2Nlc3Mv
V2ViUGFnZS9EcmF3aW5nQXJlYUltcGwuY3BwCiAKICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvYXRr
L1dlYlBhZ2VBY2Nlc3NpYmlsaXR5T2JqZWN0QXRrLmNwcApAQCAtODUxLDYgKzg2Niw4IEBAIGxp
c3QoQVBQRU5EIFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVDJfRElS
fS9OZXR3b3JrUHJvY2Vzcy91bml4IgogICAgICIke1dFQktJVDJfRElSfS9QbGF0Zm9ybS9JUEMv
Z2xpYiIKICAgICAiJHtXRUJLSVQyX0RJUn0vU2hhcmVkL0FQSS9jL2d0ayIKKyAgICAiJHtXRUJL
SVQyX0RJUn0vU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MiCisgICAgIiR7V0VCS0lUMl9ESVJ9
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvciIKICAgICAiJHtX
RUJLSVQyX0RJUn0vU2hhcmVkL1BsdWdpbnMvdW5peCIKICAgICAiJHtXRUJLSVQyX0RJUn0vU2hh
cmVkL2dsaWIiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1NoYXJlZC9ndGsiCkBAIC04NzcsNiArODk0
LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VC
S0lUMl9ESVJ9L1dlYlByb2Nlc3MvdW5peCIKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9ndGsiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvc291cCIKKyAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvV2Vi
UGFnZS9hdGsiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsiCiAp
CkBAIC0xMTc4LDMzICsxMTk2LDYgQEAgbGlzdChBUFBFTkQgUGx1Z2luUHJvY2Vzc19TT1VSQ0VT
CiAgICAgUGx1Z2luUHJvY2Vzcy9FbnRyeVBvaW50L3VuaXgvUGx1Z2luUHJvY2Vzc01haW4uY3Bw
CiApCiAKLWlmIChFTkFCTEVfVEhSRUFERURfQ09NUE9TSVRPUikKLSAgICBsaXN0KEFQUEVORCBX
ZWJLaXQyX1NPVVJDRVMKLSAgICAgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRCYWNraW5nU3RvcmUuY3BwCi0gICAgICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKLSAgICAgICAgU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvU2ltcGxlVmlld3BvcnRDb250cm9sbGVyLmNwcAotCi0gICAgICAgIFNoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3Au
Y3BwCi0gICAgICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRv
ci9UaHJlYWRTYWZlQ29vcmRpbmF0ZWRTdXJmYWNlLmNwcAotICAgICAgICBTaGFyZWQvQ29vcmRp
bmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcAot
Ci0gICAgICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0FyZWFBbGxv
Y2F0b3IuY3BwCi0gICAgICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwCi0gICAgICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKLSAgICAgICAg
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVGhyZWFkZWRDb29yZGluYXRl
ZExheWVyVHJlZUhvc3QuY3BwCi0gICAgICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRl
ZEdyYXBoaWNzL1VwZGF0ZUF0bGFzLmNwcAotICAgICkKLSAgICBsaXN0KEFQUEVORCBXZWJLaXQy
X0lOQ0xVREVfRElSRUNUT1JJRVMKLSAgICAgICAgIiR7V0VCS0lUMl9ESVJ9L1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzIgotICAgICAgICAiJHtXRUJLSVQyX0RJUn0vU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yIgotICAgICAgICAiJHtXRUJLSVQyX0RJUn0v
V2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MiCi0gICAgKQotZWxzZSAoRU5B
QkxFX1RIUkVBREVEX0NPTVBPU0lUT1IpCi0gICAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VT
Ci0gICAgICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAKLSAg
ICApCi1lbmRpZiAoKQotCiAjIENvbW1hbmRzIGZvciBidWlsZGluZyB0aGUgYnVpbHQtaW4gaW5q
ZWN0ZWQgYnVuZGxlLgogaW5jbHVkZV9kaXJlY3RvcmllcygKICAgICAiJHtXRUJLSVQyX0RJUn0v
UGxhdGZvcm0iCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
TGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5
ZXJUcmVlSG9zdC5jcHAKaW5kZXggZGQ2ZTEyOWZkZjAuLjgxODFhMjRjNTg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuY3BwCkBA
IC0zMSw4ICszMSw2IEBACiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQp
CiAjaW5jbHVkZSAiVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3QuaCIKLSNlbGlmIFBM
QVRGT1JNKEdUSykgJiYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQotI2luY2x1ZGUgIkxheWVyVHJl
ZUhvc3RHdGsuaCIKICNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTQzLDgg
KzQxLDYgQEAgUmVmUHRyPExheWVyVHJlZUhvc3Q+IExheWVyVHJlZUhvc3Q6OmNyZWF0ZShXZWJQ
YWdlJiB3ZWJQYWdlKQogewogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkK
ICAgICByZXR1cm4gVGhyZWFkZWRDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNyZWF0ZSh3ZWJQ
YWdlKTsKLSNlbGlmIFBMQVRGT1JNKEdUSykgJiYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQotICAg
IHJldHVybiBMYXllclRyZWVIb3N0R3RrOjpjcmVhdGUod2ViUGFnZSk7CiAjZWxzZQogICAgIFVO
VVNFRF9QQVJBTSh3ZWJQYWdlKTsKICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MGJiMDdkOWY3MS4uMDAwMDAwMDAw
MDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVI
b3N0R3RrLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDQyOSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdo
dCAoQykgMjAxMiBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiTGF5ZXJUcmVlSG9zdEd0ay5oIgotCi0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dM
KQotCi0jaW5jbHVkZSAiQWNjZWxlcmF0ZWRTdXJmYWNlLmgiCi0jaW5jbHVkZSAiRHJhd2luZ0Fy
ZWFJbXBsLmgiCi0jaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdMLmgiCi0jaW5jbHVkZSAiV2ViUGFn
ZS5oIgotI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKLQotI2lmIFVTRShPUEVOR0xfRVNfMikKLSNp
bmNsdWRlIDxHTEVTMi9nbDIuaD4KLSNlbHNlCi0jaW5jbHVkZSA8R0wvZ2wuaD4KLSNlbmRpZgot
Ci0jaW5jbHVkZSA8V2ViQ29yZS9GcmFtZVZpZXcuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0dMQ29u
dGV4dC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaD4K
LSNpbmNsdWRlIDxXZWJDb3JlL01haW5GcmFtZS5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUGFnZS5o
PgotI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KLSNpbmNsdWRlIDxnZGsvZ2RrLmg+Ci0j
aW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwot
Ci1uYW1lc3BhY2UgV2ViS2l0IHsKLQotTGF5ZXJUcmVlSG9zdEd0azo6UmVuZGVyRnJhbWVTY2hl
ZHVsZXI6OlJlbmRlckZyYW1lU2NoZWR1bGVyKHN0ZDo6ZnVuY3Rpb248Ym9vbCgpPiByZW5kZXJl
cikKLSAgICA6IG1fcmVuZGVyZXIoV1RGTW92ZShyZW5kZXJlcikpCi0gICAgLCBtX3RpbWVyKFJ1
bkxvb3A6Om1haW4oKSwgdGhpcywgJkxheWVyVHJlZUhvc3RHdGs6OlJlbmRlckZyYW1lU2NoZWR1
bGVyOjpyZW5kZXJGcmFtZSkKLXsKLSAgICAvLyBXZSB1c2UgYSBSdW5Mb29wIHRpbWVyIGJlY2F1
c2Ugb3RoZXJ3aXNlIEdUSysgZXZlbnQgaGFuZGxpbmcgZHVyaW5nIGRyYWdnaW5nIGNhbiBzdGFy
dmUgV2ViQ29yZSB0aW1lcnMsIHdoaWNoIGhhdmUgYSBsb3dlciBwcmlvcml0eS4KLSAgICAvLyBV
c2UgYSBoaWdoZXIgcHJpb3JpdHkgdGhhbiBXZWJDb3JlIHRpbWVycy4KLSAgICBtX3RpbWVyLnNl
dFByaW9yaXR5KEdES19QUklPUklUWV9SRURSQVcgLSAxKTsKLX0KLQotTGF5ZXJUcmVlSG9zdEd0
azo6UmVuZGVyRnJhbWVTY2hlZHVsZXI6On5SZW5kZXJGcmFtZVNjaGVkdWxlcigpCi17Ci19Ci0K
LXZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6UmVuZGVyRnJhbWVTY2hlZHVsZXI6OnN0YXJ0KCkKLXsK
LSAgICBpZiAobV90aW1lci5pc0FjdGl2ZSgpKQotICAgICAgICByZXR1cm47Ci0gICAgbV9maXJl
VGltZSA9IDA7Ci0gICAgbmV4dEZyYW1lKCk7Ci19Ci0KLXZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6
UmVuZGVyRnJhbWVTY2hlZHVsZXI6OnN0b3AoKQotewotICAgIG1fdGltZXIuc3RvcCgpOwotfQot
Ci1zdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkU2tpcE5leHRGcmFtZUJlY2F1c2VPZkNvbnRpbm91
c0ltbWVkaWF0ZUZsdXNoZXMoZG91YmxlIGN1cnJlbnQsIGRvdWJsZSBsYXN0SW1tZWRpYXRlRmx1
c2hUaW1lKQotewotICAgIC8vIDEwMG1zIGlzIGFib3V0IGEgcGVyY2VwdGFibGUgZGVsYXkgaW4g
VUksIHNvIHdoZW4gc2NoZWR1bGluZyBsYXllciBmbHVzaGVzIGltbWVkaWF0ZWx5IGZvciBtb3Jl
IHRoYW4gMTAwbXMsCi0gICAgLy8gd2Ugc2tpcCB0aGUgbmV4dCBmcmFtZSB0byBlbnN1cmUgcGVu
ZGluZyB0aW1lcnMgaGF2ZSBhIGNoYW5nZSB0byBiZSBmaXJlZC4KLSAgICBzdGF0aWMgY29uc3Qg
ZG91YmxlIG1heER1cmF0aW9uT2ZJbW1lZGlhdGVGbHVzaGVzID0gMC4xMDA7Ci0gICAgaWYgKCFs
YXN0SW1tZWRpYXRlRmx1c2hUaW1lKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJu
IGxhc3RJbW1lZGlhdGVGbHVzaFRpbWUgKyBtYXhEdXJhdGlvbk9mSW1tZWRpYXRlRmx1c2hlcyA8
IGN1cnJlbnQ7Ci19Ci0KLXZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6UmVuZGVyRnJhbWVTY2hlZHVs
ZXI6Om5leHRGcmFtZSgpCi17Ci0gICAgc3RhdGljIGNvbnN0IGRvdWJsZSB0YXJnZXRGcmFtZXJh
dGUgPSAxIC8gNjAuMDsKLSAgICAvLyBXaGVuIHJlbmRlcmluZyBsYXllcnMgdGFrZXMgbW9yZSB0
aW1lIHRoYW4gdGhlIHRhcmdldCBkZWxheSAoMC4wMTYpLCB3ZSBlbmQgdXAgc2NoZWR1bGluZyBs
YXllciBmbHVzaGVzCi0gICAgLy8gaW1tZWRpYXRlbHkuIFNpbmNlIHRoZSBsYXllciBmbHVzaCB0
aW1lciBoYXMgYSBoaWdoZXIgcHJpb3JpdHkgdGhhbiBXZWJDb3JlIHRpbWVycywgdGhlc2UgYXJl
IG5ldmVyCi0gICAgLy8gZmlyZWQgd2hpbGUgd2Uga2VlcCBzY2hlZHVsaW5nIGxheWVyIGZsdXNo
ZXMgaW1tZWRpYXRlbHkuCi0gICAgZG91YmxlIGN1cnJlbnQgPSBtb25vdG9uaWNhbGx5SW5jcmVh
c2luZ1RpbWUoKTsKLSAgICBkb3VibGUgdGltZVRvTmV4dEZsdXNoID0gc3RkOjptYXgodGFyZ2V0
RnJhbWVyYXRlIC0gKGN1cnJlbnQgLSBtX2ZpcmVUaW1lKSwgMC4wKTsKLSAgICBpZiAodGltZVRv
TmV4dEZsdXNoKQotICAgICAgICBtX2xhc3RJbW1lZGlhdGVGbHVzaFRpbWUgPSAwOwotICAgIGVs
c2UgaWYgKCFtX2xhc3RJbW1lZGlhdGVGbHVzaFRpbWUpCi0gICAgICAgIG1fbGFzdEltbWVkaWF0
ZUZsdXNoVGltZSA9IGN1cnJlbnQ7Ci0KLSAgICBpZiAoc2hvdWxkU2tpcE5leHRGcmFtZUJlY2F1
c2VPZkNvbnRpbm91c0ltbWVkaWF0ZUZsdXNoZXMoY3VycmVudCwgbV9sYXN0SW1tZWRpYXRlRmx1
c2hUaW1lKSkgewotICAgICAgICB0aW1lVG9OZXh0Rmx1c2ggPSB0YXJnZXRGcmFtZXJhdGU7Ci0g
ICAgICAgIG1fbGFzdEltbWVkaWF0ZUZsdXNoVGltZSA9IDA7Ci0gICAgfQotCi0gICAgbV90aW1l
ci5zdGFydE9uZVNob3QodGltZVRvTmV4dEZsdXNoKTsKLX0KLQotdm9pZCBMYXllclRyZWVIb3N0
R3RrOjpSZW5kZXJGcmFtZVNjaGVkdWxlcjo6cmVuZGVyRnJhbWUoKQotewotICAgIG1fZmlyZVRp
bWUgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKLSAgICBpZiAoIW1fcmVuZGVyZXIo
KSB8fCBtX3RpbWVyLmlzQWN0aXZlKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBuZXh0RnJhbWUo
KTsKLX0KLQotUmVmPExheWVyVHJlZUhvc3RHdGs+IExheWVyVHJlZUhvc3RHdGs6OmNyZWF0ZShX
ZWJQYWdlJiB3ZWJQYWdlKQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IExheWVyVHJlZUhv
c3RHdGsod2ViUGFnZSkpOwotfQotCi1MYXllclRyZWVIb3N0R3RrOjpMYXllclRyZWVIb3N0R3Rr
KFdlYlBhZ2UmIHdlYlBhZ2UpCi0gICAgOiBMYXllclRyZWVIb3N0KHdlYlBhZ2UpCi0gICAgLCBt
X3N1cmZhY2UoQWNjZWxlcmF0ZWRTdXJmYWNlOjpjcmVhdGUod2ViUGFnZSkpCi0gICAgLCBtX3Jl
bmRlckZyYW1lU2NoZWR1bGVyKHN0ZDo6YmluZCgmTGF5ZXJUcmVlSG9zdEd0azo6cmVuZGVyRnJh
bWUsIHRoaXMpKQotewotICAgIG1fcm9vdExheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKGdy
YXBoaWNzTGF5ZXJGYWN0b3J5KCksICp0aGlzKTsKLSAgICBtX3Jvb3RMYXllci0+c2V0RHJhd3ND
b250ZW50KGZhbHNlKTsKLSAgICBtX3Jvb3RMYXllci0+c2V0U2l6ZShtX3dlYlBhZ2Uuc2l6ZSgp
KTsKLQotICAgIG1fc2NhbGVNYXRyaXgubWFrZUlkZW50aXR5KCk7Ci0gICAgbV9zY2FsZU1hdHJp
eC5zY2FsZShtX3dlYlBhZ2UuZGV2aWNlU2NhbGVGYWN0b3IoKSAqIG1fd2ViUGFnZS5wYWdlU2Nh
bGVGYWN0b3IoKSk7Ci0gICAgZG93bmNhc3Q8R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI+KCpt
X3Jvb3RMYXllcikubGF5ZXIoKS5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50M0QoKSk7Ci0gICAg
ZG93bmNhc3Q8R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI+KCptX3Jvb3RMYXllcikubGF5ZXIo
KS5zZXRUcmFuc2Zvcm0obV9zY2FsZU1hdHJpeCk7Ci0KLSAgICAvLyBUaGUgbm9uLWNvbXBvc2l0
ZWQgY29udGVudHMgYXJlIGEgY2hpbGQgb2YgdGhlIHJvb3QgbGF5ZXIuCi0gICAgbV9ub25Db21w
b3NpdGVkQ29udGVudExheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKGdyYXBoaWNzTGF5ZXJG
YWN0b3J5KCksICp0aGlzKTsKLSAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnNldERy
YXdzQ29udGVudCh0cnVlKTsKLSAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnNldENv
bnRlbnRzT3BhcXVlKG1fd2ViUGFnZS5kcmF3c0JhY2tncm91bmQoKSk7Ci0gICAgbV9ub25Db21w
b3NpdGVkQ29udGVudExheWVyLT5zZXRTaXplKG1fd2ViUGFnZS5zaXplKCkpOwotICAgIGlmICht
X3dlYlBhZ2UuY29yZVBhZ2UoKS0+c2V0dGluZ3MoKS5hY2NlbGVyYXRlZERyYXdpbmdFbmFibGVk
KCkpCi0gICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0QWNjZWxlcmF0ZXNE
cmF3aW5nKHRydWUpOwotCi0jaWZuZGVmIE5ERUJVRwotICAgIG1fcm9vdExheWVyLT5zZXROYW1l
KCJMYXllclRyZWVIb3N0IHJvb3QgbGF5ZXIiKTsKLSAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50
TGF5ZXItPnNldE5hbWUoIkxheWVyVHJlZUhvc3Qgbm9uLWNvbXBvc2l0ZWQgY29udGVudCIpOwot
I2VuZGlmCi0KLSAgICBtX3Jvb3RMYXllci0+YWRkQ2hpbGQobV9ub25Db21wb3NpdGVkQ29udGVu
dExheWVyLmdldCgpKTsKLSAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnNldE5lZWRz
RGlzcGxheSgpOwotCi0gICAgaWYgKG1fc3VyZmFjZSkgewotICAgICAgICBjcmVhdGVUZXh0dXJl
TWFwcGVyKCk7Ci0gICAgICAgIG1fbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0SUQgPSBtX3N1cmZh
Y2UtPnN1cmZhY2VJRCgpOwotICAgIH0KLX0KLQotYm9vbCBMYXllclRyZWVIb3N0R3RrOjptYWtl
Q29udGV4dEN1cnJlbnQoKQotewotICAgIHVpbnQ2NF90IG5hdGl2ZUhhbmRsZSA9IG1fc3VyZmFj
ZSA/IG1fc3VyZmFjZS0+d2luZG93KCkgOiBtX2xheWVyVHJlZUNvbnRleHQuY29udGV4dElEOwot
ICAgIGlmICghbmF0aXZlSGFuZGxlKSB7Ci0gICAgICAgIG1fY29udGV4dCA9IG51bGxwdHI7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZiAobV9jb250ZXh0KQotICAgICAg
ICByZXR1cm4gbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKLQotICAgIG1fY29udGV4
dCA9IEdMQ29udGV4dDo6Y3JlYXRlQ29udGV4dEZvcldpbmRvdyhyZWludGVycHJldF9jYXN0PEdM
TmF0aXZlV2luZG93VHlwZT4obmF0aXZlSGFuZGxlKSwgJlBsYXRmb3JtRGlzcGxheTo6c2hhcmVk
RGlzcGxheUZvckNvbXBvc2l0aW5nKCkpOwotICAgIGlmICghbV9jb250ZXh0KQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIERvIG5vdCBkbyBmcmFtZSBzeW5jIHdo
ZW4gcmVuZGVyaW5nIG9mZnNjcmVlbiBpbiB0aGUgd2ViIHByb2Nlc3MgdG8gZW5zdXJlIHRoYXQg
U3dhcEJ1ZmZlcnMgbmV2ZXIgYmxvY2tzLgotICAgIC8vIFJlbmRlcmluZyB0byB0aGUgYWN0dWFs
IHNjcmVlbiB3aWxsIGhhcHBlbiBsYXRlciBhbnl3YXkgc2luY2UgdGhlIFVJIHByb2Nlc3Mgc2No
ZWR1bGVzIGEgcmVkcmF3IGZvciBldmVyeSB1cGRhdGUsCi0gICAgLy8gdGhlIGNvbXBvc2l0b3Ig
d2lsbCB0YWtlIGNhcmUgb2Ygc3luY2luZyB0byB2YmxhbmsuCi0gICAgaWYgKG1fc3VyZmFjZSkK
LSAgICAgICAgbV9jb250ZXh0LT5zd2FwSW50ZXJ2YWwoMCk7Ci0KLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQotTGF5ZXJUcmVlSG9zdEd0azo6fkxheWVyVHJlZUhvc3RHdGsoKQotewotICAgIEFTU0VS
VCghbV9yb290TGF5ZXIpOwotICAgIGNhbmNlbFBlbmRpbmdMYXllckZsdXNoKCk7Ci19Ci0KLXZv
aWQgTGF5ZXJUcmVlSG9zdEd0azo6c2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoR3JhcGhpY3NMYXll
ciogZ3JhcGhpY3NMYXllcikKLXsKLSAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnJl
bW92ZUFsbENoaWxkcmVuKCk7Ci0KLSAgICAvLyBBZGQgdGhlIGFjY2VsZXJhdGVkIGxheWVyIHRy
ZWUgaGllcmFyY2h5LgotICAgIGlmIChncmFwaGljc0xheWVyKQotICAgICAgICBtX25vbkNvbXBv
c2l0ZWRDb250ZW50TGF5ZXItPmFkZENoaWxkKGdyYXBoaWNzTGF5ZXIpOwotCi0gICAgc2NoZWR1
bGVMYXllckZsdXNoKCk7Ci19Ci0KLXZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6aW52YWxpZGF0ZSgp
Ci17Ci0gICAgLy8gVGhpcyBjYW4gdHJpZ2dlciBkZXN0cnVjdGlvbiBvZiBHTCBvYmplY3RzIHNv
IGxldCdzIG1ha2Ugc3VyZSB0aGF0Ci0gICAgLy8gd2UgaGF2ZSB0aGUgcmlnaHQgYWN0aXZlIGNv
bnRleHQKLSAgICBpZiAobV9jb250ZXh0KQotICAgICAgICBtX2NvbnRleHQtPm1ha2VDb250ZXh0
Q3VycmVudCgpOwotCi0gICAgY2FuY2VsUGVuZGluZ0xheWVyRmx1c2goKTsKLSAgICBtX3Jvb3RM
YXllciA9IG51bGxwdHI7Ci0gICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyID0gbnVsbHB0
cjsKLSAgICBtX3RleHR1cmVNYXBwZXIgPSBudWxscHRyOwotCi0gICAgbV9jb250ZXh0ID0gbnVs
bHB0cjsKLSAgICBMYXllclRyZWVIb3N0OjppbnZhbGlkYXRlKCk7Ci0KLSAgICBtX3N1cmZhY2Ug
PSBudWxscHRyOwotfQotCi12b2lkIExheWVyVHJlZUhvc3RHdGs6OnNldE5vbkNvbXBvc2l0ZWRD
b250ZW50c05lZWREaXNwbGF5KCkKLXsKLSAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXIt
PnNldE5lZWRzRGlzcGxheSgpOwotICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwotfQotCi12b2lk
IExheWVyVHJlZUhvc3RHdGs6OnNldE5vbkNvbXBvc2l0ZWRDb250ZW50c05lZWREaXNwbGF5SW5S
ZWN0KGNvbnN0IEludFJlY3QmIHJlY3QpCi17Ci0gICAgbV9ub25Db21wb3NpdGVkQ29udGVudExh
eWVyLT5zZXROZWVkc0Rpc3BsYXlJblJlY3QocmVjdCk7Ci0gICAgc2NoZWR1bGVMYXllckZsdXNo
KCk7Ci19Ci0KLXZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6c2Nyb2xsTm9uQ29tcG9zaXRlZENvbnRl
bnRzKGNvbnN0IEludFJlY3QmIHNjcm9sbFJlY3QpCi17Ci0gICAgc2V0Tm9uQ29tcG9zaXRlZENv
bnRlbnRzTmVlZERpc3BsYXlJblJlY3Qoc2Nyb2xsUmVjdCk7Ci19Ci0KLXZvaWQgTGF5ZXJUcmVl
SG9zdEd0azo6c2l6ZURpZENoYW5nZShjb25zdCBJbnRTaXplJiBuZXdTaXplKQotewotICAgIGlm
IChtX3Jvb3RMYXllci0+c2l6ZSgpID09IG5ld1NpemUpCi0gICAgICAgIHJldHVybjsKLSAgICBt
X3Jvb3RMYXllci0+c2V0U2l6ZShuZXdTaXplKTsKLQotICAgIC8vIElmIHRoZSBuZXdTaXplIGV4
cG9zZXMgbmV3IGFyZWFzIG9mIHRoZSBub24tY29tcG9zaXRlZCBjb250ZW50IGEgc2V0TmVlZHNE
aXNwbGF5IGlzIG5lZWRlZAotICAgIC8vIGZvciB0aG9zZSBuZXdseSBleHBvc2VkIGFyZWFzLgot
ICAgIEZsb2F0U2l6ZSBvbGRTaXplID0gbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5zaXpl
KCk7Ci0gICAgbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLT5zZXRTaXplKG5ld1NpemUpOwot
Ci0gICAgaWYgKG5ld1NpemUud2lkdGgoKSA+IG9sZFNpemUud2lkdGgoKSkgewotICAgICAgICBm
bG9hdCBoZWlnaHQgPSBzdGQ6Om1pbihzdGF0aWNfY2FzdDxmbG9hdD4obmV3U2l6ZS5oZWlnaHQo
KSksIG9sZFNpemUuaGVpZ2h0KCkpOwotICAgICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5
ZXItPnNldE5lZWRzRGlzcGxheUluUmVjdChGbG9hdFJlY3Qob2xkU2l6ZS53aWR0aCgpLCAwLCBu
ZXdTaXplLndpZHRoKCkgLSBvbGRTaXplLndpZHRoKCksIGhlaWdodCkpOwotICAgIH0KLQotICAg
IGlmIChuZXdTaXplLmhlaWdodCgpID4gb2xkU2l6ZS5oZWlnaHQoKSkKLSAgICAgICAgbV9ub25D
b21wb3NpdGVkQ29udGVudExheWVyLT5zZXROZWVkc0Rpc3BsYXlJblJlY3QoRmxvYXRSZWN0KDAs
IG9sZFNpemUuaGVpZ2h0KCksIG5ld1NpemUud2lkdGgoKSwgbmV3U2l6ZS5oZWlnaHQoKSAtIG9s
ZFNpemUuaGVpZ2h0KCkpKTsKLSAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnNldE5l
ZWRzRGlzcGxheSgpOwotCi0gICAgaWYgKG1fc3VyZmFjZSAmJiBtX3N1cmZhY2UtPnJlc2l6ZShu
ZXdTaXplKSkKLSAgICAgICAgbV9sYXllclRyZWVDb250ZXh0LmNvbnRleHRJRCA9IG1fc3VyZmFj
ZS0+c3VyZmFjZUlEKCk7Ci0KLSAgICBjb21wb3NpdGVMYXllcnNUb0NvbnRleHQoRm9yUmVzaXpl
KTsKLX0KLQotdm9pZCBMYXllclRyZWVIb3N0R3RrOjpkZXZpY2VPclBhZ2VTY2FsZUZhY3RvckNo
YW5nZWQoKQotewotICAgIGlmIChtX3N1cmZhY2UgJiYgbV9zdXJmYWNlLT5yZXNpemUobV93ZWJQ
YWdlLnNpemUoKSkpCi0gICAgICAgIG1fbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0SUQgPSBtX3N1
cmZhY2UtPnN1cmZhY2VJRCgpOwotCi0gICAgLy8gT3RoZXIgbGF5ZXJzIGxlYXJuIG9mIHRoZSBz
Y2FsZSBmYWN0b3IgY2hhbmdlIHZpYSBXZWJQYWdlOjpzZXREZXZpY2VTY2FsZUZhY3Rvci4KLSAg
ICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hh
bmdlZCgpOwotCi0gICAgbV9zY2FsZU1hdHJpeC5tYWtlSWRlbnRpdHkoKTsKLSAgICBtX3NjYWxl
TWF0cml4LnNjYWxlKG1fd2ViUGFnZS5kZXZpY2VTY2FsZUZhY3RvcigpICogbV93ZWJQYWdlLnBh
Z2VTY2FsZUZhY3RvcigpKTsKLSAgICBkb3duY2FzdDxHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBl
cj4oKm1fcm9vdExheWVyKS5sYXllcigpLnNldFRyYW5zZm9ybShtX3NjYWxlTWF0cml4KTsKLX0K
LQotdm9pZCBMYXllclRyZWVIb3N0R3RrOjpmb3JjZVJlcGFpbnQoKQotewotICAgIHNjaGVkdWxl
TGF5ZXJGbHVzaCgpOwotfQotCi12b2lkIExheWVyVHJlZUhvc3RHdGs6OnBhaW50Q29udGVudHMo
Y29uc3QgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllciwgR3JhcGhpY3NDb250ZXh0JiBncmFw
aGljc0NvbnRleHQsIEdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBGbG9hdFJlY3Qm
IGNsaXBSZWN0KQotewotICAgIGlmIChncmFwaGljc0xheWVyID09IG1fbm9uQ29tcG9zaXRlZENv
bnRlbnRMYXllci5nZXQoKSkKLSAgICAgICAgbV93ZWJQYWdlLmRyYXdSZWN0KGdyYXBoaWNzQ29u
dGV4dCwgZW5jbG9zaW5nSW50UmVjdChjbGlwUmVjdCkpOwotfQotCi1mbG9hdCBMYXllclRyZWVI
b3N0R3RrOjpkZXZpY2VTY2FsZUZhY3RvcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fd2ViUGFn
ZS5kZXZpY2VTY2FsZUZhY3RvcigpOwotfQotCi1mbG9hdCBMYXllclRyZWVIb3N0R3RrOjpwYWdl
U2NhbGVGYWN0b3IoKSBjb25zdAotewotICAgIHJldHVybiBtX3dlYlBhZ2UucGFnZVNjYWxlRmFj
dG9yKCk7Ci19Ci0KLWJvb2wgTGF5ZXJUcmVlSG9zdEd0azo6cmVuZGVyRnJhbWUoKQotewotICAg
IGZsdXNoQW5kUmVuZGVyTGF5ZXJzKCk7Ci0gICAgcmV0dXJuIGRvd25jYXN0PEdyYXBoaWNzTGF5
ZXJUZXh0dXJlTWFwcGVyPigqbV9yb290TGF5ZXIpLmxheWVyKCkuZGVzY2VuZGFudHNPclNlbGZI
YXZlUnVubmluZ0FuaW1hdGlvbnMoKTsKLX0KLQotYm9vbCBMYXllclRyZWVIb3N0R3RrOjpmbHVz
aFBlbmRpbmdMYXllckNoYW5nZXMoKQotewotICAgIG1fcm9vdExheWVyLT5mbHVzaENvbXBvc2l0
aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCk7Ci0gICAgbV9ub25Db21wb3NpdGVkQ29udGVudExh
eWVyLT5mbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCk7Ci0KLSAgICBpZiAo
IW1fd2ViUGFnZS5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS52aWV3KCktPmZsdXNoQ29tcG9zaXRp
bmdTdGF0ZUluY2x1ZGluZ1N1YmZyYW1lcygpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICBpZiAobV92aWV3T3ZlcmxheVJvb3RMYXllcikKLSAgICAgICAgbV92aWV3T3ZlcmxheVJvb3RM
YXllci0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIG1fcm9v
dExheWVyLT5zaXplKCkpKTsKLQotICAgIGRvd25jYXN0PEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyPigqbV9yb290TGF5ZXIpLnVwZGF0ZUJhY2tpbmdTdG9yZUluY2x1ZGluZ1N1YkxheWVycygp
OwotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIExheWVyVHJlZUhvc3RHdGs6OmNvbXBvc2l0
ZUxheWVyc1RvQ29udGV4dChDb21wb3NpdGVQdXJwb3NlIHB1cnBvc2UpCi17Ci0gICAgaWYgKCFt
YWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gVGhlIHdpbmRv
dyBzaXplIG1heSBiZSBvdXQgb2Ygc3luYyB3aXRoIHRoZSBwYWdlIHNpemUgYXQgdGhpcyBwb2lu
dCwgYW5kIGdldHRpbmcKLSAgICAvLyB0aGUgdmlld3BvcnQgcGFyYW1ldGVycyBpbmNvcnJlY3Qs
IG1lYW5zIHRoYXQgdGhlIGNvbnRlbnQgd2lsbCBiZSBtaXNwbGFjZWQuIFRodXMKLSAgICAvLyB3
ZSBzZXQgdGhlIHZpZXdwb3J0IHBhcmFtZXRlcnMgZGlyZWN0bHkgZnJvbSB0aGUgd2luZG93IHNp
emUuCi0gICAgSW50U2l6ZSBjb250ZXh0U2l6ZSA9IG1fY29udGV4dC0+ZGVmYXVsdEZyYW1lQnVm
ZmVyU2l6ZSgpOwotICAgIGdsVmlld3BvcnQoMCwgMCwgY29udGV4dFNpemUud2lkdGgoKSwgY29u
dGV4dFNpemUuaGVpZ2h0KCkpOwotICAgIGlmIChwdXJwb3NlID09IEZvclJlc2l6ZSB8fCAhbV93
ZWJQYWdlLmRyYXdzQmFja2dyb3VuZCgpKSB7Ci0gICAgICAgIGdsQ2xlYXJDb2xvcigwLCAwLCAw
LCAwKTsKLSAgICAgICAgZ2xDbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKLSAgICB9Ci0KLSAg
ICBBU1NFUlQobV90ZXh0dXJlTWFwcGVyKTsKLQotICAgIFRleHR1cmVNYXBwZXI6OlBhaW50Rmxh
Z3MgcGFpbnRGbGFncyA9IDA7Ci0KLSAgICBpZiAobV9zdXJmYWNlICYmIG1fc3VyZmFjZS0+c2hv
dWxkUGFpbnRNaXJyb3JlZCgpKQotICAgICAgICBwYWludEZsYWdzIHw9IFRleHR1cmVNYXBwZXI6
OlBhaW50aW5nTWlycm9yZWQ7Ci0KLSAgICBtX3RleHR1cmVNYXBwZXItPmJlZ2luUGFpbnRpbmco
cGFpbnRGbGFncyk7Ci0gICAgZG93bmNhc3Q8R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI+KCpt
X3Jvb3RMYXllcikubGF5ZXIoKS5wYWludCgpOwotICAgIG1fdGV4dHVyZU1hcHBlci0+ZW5kUGFp
bnRpbmcoKTsKLQotICAgIG1fY29udGV4dC0+c3dhcEJ1ZmZlcnMoKTsKLX0KLQotdm9pZCBMYXll
clRyZWVIb3N0R3RrOjpmbHVzaEFuZFJlbmRlckxheWVycygpCi17Ci0gICAgewotICAgICAgICBS
ZWZQdHI8TGF5ZXJUcmVlSG9zdEd0az4gcHJvdGVjdCh0aGlzKTsKLSAgICAgICAgbV93ZWJQYWdl
LmxheW91dElmTmVlZGVkKCk7Ci0KLSAgICAgICAgaWYgKCFtX2lzVmFsaWQpCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgaWYgKCFmbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgLy8gT3VyIG1vZGVsIGlzIHZlcnkgc2ltcGxlLiBXZSBhbHdheXMg
Y29tcG9zaXRlIGFuZCByZW5kZXIgdGhlIHRyZWUgaW1tZWRpYXRlbHkgYWZ0ZXIgdXBkYXRpbmcg
aXQuCi0gICAgY29tcG9zaXRlTGF5ZXJzVG9Db250ZXh0KCk7Ci0KLSAgICBpZiAobV9ub3RpZnlB
ZnRlclNjaGVkdWxlZExheWVyRmx1c2gpIHsKLSAgICAgICAgLy8gTGV0IHRoZSBkcmF3aW5nIGFy
ZWEga25vdyB0aGF0IHdlJ3ZlIGRvbmUgYSBmbHVzaCBvZiB0aGUgbGF5ZXIgY2hhbmdlcy4KLSAg
ICAgICAgbV93ZWJQYWdlLmRyYXdpbmdBcmVhKCktPmxheWVySG9zdERpZEZsdXNoTGF5ZXJzKCk7
Ci0gICAgICAgIG1fbm90aWZ5QWZ0ZXJTY2hlZHVsZWRMYXllckZsdXNoID0gZmFsc2U7Ci0gICAg
fQotfQotCi12b2lkIExheWVyVHJlZUhvc3RHdGs6OnNjaGVkdWxlTGF5ZXJGbHVzaCgpCi17Ci0g
ICAgaWYgKCFtX2xheWVyRmx1c2hTY2hlZHVsaW5nRW5hYmxlZCB8fCAhbV90ZXh0dXJlTWFwcGVy
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3JlbmRlckZyYW1lU2NoZWR1bGVyLnN0YXJ0KCk7
Ci19Ci0KLXZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6cGFnZUJhY2tncm91bmRUcmFuc3BhcmVuY3lD
aGFuZ2VkKCkKLXsKLSAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnNldENvbnRlbnRz
T3BhcXVlKG1fd2ViUGFnZS5kcmF3c0JhY2tncm91bmQoKSk7Ci19Ci0KLXZvaWQgTGF5ZXJUcmVl
SG9zdEd0azo6Y2FuY2VsUGVuZGluZ0xheWVyRmx1c2goKQotewotICAgIG1fcmVuZGVyRnJhbWVT
Y2hlZHVsZXIuc3RvcCgpOwotfQotCi12b2lkIExheWVyVHJlZUhvc3RHdGs6OnNldFZpZXdPdmVy
bGF5Um9vdExheWVyKEdyYXBoaWNzTGF5ZXIqIHZpZXdPdmVybGF5Um9vdExheWVyKQotewotICAg
IExheWVyVHJlZUhvc3Q6OnNldFZpZXdPdmVybGF5Um9vdExheWVyKHZpZXdPdmVybGF5Um9vdExh
eWVyKTsKLSAgICBpZiAobV92aWV3T3ZlcmxheVJvb3RMYXllcikKLSAgICAgICAgbV9yb290TGF5
ZXItPmFkZENoaWxkKG1fdmlld092ZXJsYXlSb290TGF5ZXIpOwotfQotCi12b2lkIExheWVyVHJl
ZUhvc3RHdGs6OmNyZWF0ZVRleHR1cmVNYXBwZXIoKQotewotICAgIC8vIFRoZSBjcmVhdGlvbiBv
ZiB0aGUgVGV4dHVyZU1hcHBlciBuZWVkcyBhbiBhY3RpdmUgT3BlbkdMIGNvbnRleHQuCi0gICAg
aWYgKCFtYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJU
KG1faXNWYWxpZCk7Ci0gICAgQVNTRVJUKCFtX3RleHR1cmVNYXBwZXIpOwotICAgIG1fdGV4dHVy
ZU1hcHBlciA9IFRleHR1cmVNYXBwZXI6OmNyZWF0ZSgpOwotICAgIHN0YXRpY19jYXN0PFRleHR1
cmVNYXBwZXJHTCo+KG1fdGV4dHVyZU1hcHBlci5nZXQoKSktPnNldEVuYWJsZUVkZ2VEaXN0YW5j
ZUFudGlhbGlhc2luZyh0cnVlKTsKLSAgICBkb3duY2FzdDxHcmFwaGljc0xheWVyVGV4dHVyZU1h
cHBlcj4oKm1fcm9vdExheWVyKS5sYXllcigpLnNldFRleHR1cmVNYXBwZXIobV90ZXh0dXJlTWFw
cGVyLmdldCgpKTsKLX0KLQotI2lmIFBMQVRGT1JNKFgxMSkgJiYgIVVTRShSRURJUkVDVEVEX1hD
T01QT1NJVEVfV0lORE9XKQotdm9pZCBMYXllclRyZWVIb3N0R3RrOjpzZXROYXRpdmVTdXJmYWNl
SGFuZGxlRm9yQ29tcG9zaXRpbmcodWludDY0X3QgaGFuZGxlKQotewotICAgIGNhbmNlbFBlbmRp
bmdMYXllckZsdXNoKCk7Ci0gICAgbV9sYXllclRyZWVDb250ZXh0LmNvbnRleHRJRCA9IGhhbmRs
ZTsKLQotICAgIGNyZWF0ZVRleHR1cmVNYXBwZXIoKTsKLSAgICBzY2hlZHVsZUxheWVyRmx1c2go
KTsKLX0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RH
dGsuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9z
dEd0ay5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMzU2YTM2ODMwZi4uMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRy
ZWVIb3N0R3RrLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMjAgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBMYXllclRyZWVIb3N0
R3RrX2gKLSNkZWZpbmUgTGF5ZXJUcmVlSG9zdEd0a19oCi0KLSNpZiBVU0UoVEVYVFVSRV9NQVBQ
RVJfR0wpCi0KLSNpbmNsdWRlICJMYXllclRyZWVDb250ZXh0LmgiCi0jaW5jbHVkZSAiTGF5ZXJU
cmVlSG9zdC5oIgotI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJMYXllci5oIgotI2luY2x1ZGUgPFdl
YkNvcmUvR0xDb250ZXh0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyQ2xpZW50
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgotI2luY2x1ZGUg
PHd0Zi9SdW5Mb29wLmg+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1jbGFzcyBBY2NlbGVyYXRl
ZFN1cmZhY2U7Ci0KLWNsYXNzIExheWVyVHJlZUhvc3RHdGsgZmluYWwgOiBwdWJsaWMgTGF5ZXJU
cmVlSG9zdCwgV2ViQ29yZTo6R3JhcGhpY3NMYXllckNsaWVudCB7Ci1wdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxMYXllclRyZWVIb3N0R3RrPiBjcmVhdGUoV2ViUGFnZSYpOwotICAgIHZpcnR1YWwg
fkxheWVyVHJlZUhvc3RHdGsoKTsKLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBMYXllclRyZWVI
b3N0R3RrKFdlYlBhZ2UmKTsKLQotICAgIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqIHJvb3RMYXll
cigpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdExheWVyLmdldCgpOyB9Ci0KLSAgICAvLyBMYXllclRy
ZWVIb3N0Ci0gICAgdm9pZCBzY2hlZHVsZUxheWVyRmx1c2goKSBvdmVycmlkZTsKLSAgICB2b2lk
IGNhbmNlbFBlbmRpbmdMYXllckZsdXNoKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRSb290Q29t
cG9zaXRpbmdMYXllcihXZWJDb3JlOjpHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBpbnZhbGlkYXRlKCkgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGZvcmNlUmVwYWludCgpIG92ZXJy
aWRlOwotICAgIHZvaWQgc2l6ZURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBuZXdT
aXplKSBvdmVycmlkZTsKLSAgICB2b2lkIGRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgp
IG92ZXJyaWRlOwotICAgIHZvaWQgcGFnZUJhY2tncm91bmRUcmFuc3BhcmVuY3lDaGFuZ2VkKCkg
b3ZlcnJpZGU7Ci0KLSAgICB2b2lkIHNldE5vbkNvbXBvc2l0ZWRDb250ZW50c05lZWREaXNwbGF5
KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXROb25Db21wb3NpdGVkQ29udGVudHNOZWVkRGlzcGxh
eUluUmVjdChjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzY3Jv
bGxOb25Db21wb3NpdGVkQ29udGVudHMoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgc2Nyb2xsUmVj
dCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRWaWV3T3ZlcmxheVJvb3RMYXllcihXZWJDb3JlOjpH
cmFwaGljc0xheWVyKikgb3ZlcnJpZGU7Ci0KLSNpZiBQTEFURk9STShYMTEpICYmICFVU0UoUkVE
SVJFQ1RFRF9YQ09NUE9TSVRFX1dJTkRPVykKLSAgICB2b2lkIHNldE5hdGl2ZVN1cmZhY2VIYW5k
bGVGb3JDb21wb3NpdGluZyh1aW50NjRfdCkgb3ZlcnJpZGU7Ci0jZW5kaWYKLQotICAgIGNsYXNz
IFJlbmRlckZyYW1lU2NoZWR1bGVyIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIFJlbmRlckZyYW1l
U2NoZWR1bGVyKHN0ZDo6ZnVuY3Rpb248Ym9vbCgpPik7Ci0gICAgICAgIH5SZW5kZXJGcmFtZVNj
aGVkdWxlcigpOwotCi0gICAgICAgIHZvaWQgc3RhcnQoKTsKLSAgICAgICAgdm9pZCBzdG9wKCk7
Ci0KLSAgICBwcml2YXRlOgotICAgICAgICB2b2lkIHJlbmRlckZyYW1lKCk7Ci0gICAgICAgIHZv
aWQgbmV4dEZyYW1lKCk7Ci0KLSAgICAgICAgc3RkOjpmdW5jdGlvbjxib29sKCk+IG1fcmVuZGVy
ZXI7Ci0gICAgICAgIFJ1bkxvb3A6OlRpbWVyPFJlbmRlckZyYW1lU2NoZWR1bGVyPiBtX3RpbWVy
OwotICAgICAgICBkb3VibGUgbV9maXJlVGltZSB7IDAgfTsKLSAgICAgICAgZG91YmxlIG1fbGFz
dEltbWVkaWF0ZUZsdXNoVGltZSB7IDAgfTsKLSAgICB9OwotCi0gICAgLy8gR3JhcGhpY3NMYXll
ckNsaWVudAotICAgIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xh
eWVyKiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgV2ViQ29yZTo6R3JhcGhpY3NMYXllclBh
aW50aW5nUGhhc2UsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgY2xpcFJlY3QpIG92ZXJyaWRl
OwotICAgIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgZmxv
YXQgcGFnZVNjYWxlRmFjdG9yKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgICBib29sIGZsdXNoUGVu
ZGluZ0xheWVyQ2hhbmdlcygpOwotCi0gICAgZW51bSBDb21wb3NpdGVQdXJwb3NlIHsgRm9yUmVz
aXplLCBOb3RGb3JSZXNpemUgfTsKLSAgICB2b2lkIGNvbXBvc2l0ZUxheWVyc1RvQ29udGV4dChD
b21wb3NpdGVQdXJwb3NlID0gTm90Rm9yUmVzaXplKTsKLQotICAgIHZvaWQgZmx1c2hBbmRSZW5k
ZXJMYXllcnMoKTsKLSAgICBib29sIHJlbmRlckZyYW1lKCk7Ci0gICAgYm9vbCBtYWtlQ29udGV4
dEN1cnJlbnQoKTsKLSAgICB2b2lkIGNyZWF0ZVRleHR1cmVNYXBwZXIoKTsKLQotICAgIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyPiBtX3Jvb3RMYXllcjsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllcj4gbV9ub25Db21wb3NpdGVkQ29udGVu
dExheWVyOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpUZXh0dXJlTWFwcGVyPiBtX3Rl
eHR1cmVNYXBwZXI7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdMQ29udGV4dD4gbV9j
b250ZXh0OwotICAgIFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fc2NhbGVNYXRyaXg7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJhdGVkU3VyZmFjZT4gbV9zdXJmYWNlOwotICAg
IFJlbmRlckZyYW1lU2NoZWR1bGVyIG1fcmVuZGVyRnJhbWVTY2hlZHVsZXI7Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmCi0KLSNlbmRpZiAvLyBMYXllclRyZWVIb3N0R3Rr
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlIGIvU291cmNlL2Nt
YWtlL09wdGlvbnNHVEsuY21ha2UKaW5kZXggMjk4NzY1NDE5Y2MuLjU5ZTcwYzcwY2U1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2Uv
T3B0aW9uc0dUSy5jbWFrZQpAQCAtMTA4LDcgKzEwOCw2IEBAIFdFQktJVF9PUFRJT05fREVQRU5E
KEVOQUJMRV9BQ0NFTEVSQVRFRF8yRF9DQU5WQVMgRU5BQkxFX09QRU5HTCkKIFdFQktJVF9PUFRJ
T05fREVQRU5EKEVOQUJMRV9HTEVTMiBFTkFCTEVfT1BFTkdMKQogV0VCS0lUX09QVElPTl9ERVBF
TkQoRU5BQkxFX05FVFNDQVBFX1BMVUdJTl9BUEkgRU5BQkxFX1gxMV9UQVJHRVQpCiBXRUJLSVRf
T1BUSU9OX0RFUEVORChFTkFCTEVfUExVR0lOX1BST0NFU1NfR1RLMiBFTkFCTEVfWDExX1RBUkdF
VCkKLVdFQktJVF9PUFRJT05fREVQRU5EKEVOQUJMRV9USFJFQURFRF9DT01QT1NJVE9SIEVOQUJM
RV9PUEVOR0wpCiBXRUJLSVRfT1BUSU9OX0RFUEVORChFTkFCTEVfV0VCR0wgRU5BQkxFX09QRU5H
TCkKIFdFQktJVF9PUFRJT05fREVQRU5EKFVTRV9SRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9X
IEVOQUJMRV9PUEVOR0wpCiBXRUJLSVRfT1BUSU9OX0RFUEVORChVU0VfUkVESVJFQ1RFRF9YQ09N
UE9TSVRFX1dJTkRPVyBFTkFCTEVfWDExX1RBUkdFVCkKQEAgLTE0NCw3ICsxNDMsNiBAQCBXRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfSUNPTkRBVEFCQVNFIFBVQkxJQyBP
TikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9KSVQgUFVCTElDIE9O
KQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1NBTVBMSU5HX1BST0ZJ
TEVSIFBVQkxJQyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9T
UEVMTENIRUNLIFBVQkxJQyBPTikKLVdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVO
QUJMRV9USFJFQURFRF9DT01QT1NJVE9SIFBVQkxJQyBPTikKIFdFQktJVF9PUFRJT05fREVGQVVM
VF9QT1JUX1ZBTFVFKEVOQUJMRV9UT1VDSF9FVkVOVFMgUFVCTElDIE9OKQogV0VCS0lUX09QVElP
Tl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1ZJREVPIFBVQkxJQyBPTikKIFdFQktJVF9PUFRJ
T05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9XRUJfQVVESU8gUFVCTElDIE9OKQpAQCAtMzEx
LDggKzMwOSw4IEBAIGlmIChFTkFCTEVfT1BFTkdMKQogICAgICAgICBTRVRfQU5EX0VYUE9TRV9U
T19CVUlMRChVU0VfR0xYIFRSVUUpCiAgICAgZW5kaWYgKCkKIAotICAgIFNFVF9BTkRfRVhQT1NF
X1RPX0JVSUxEKFVTRV9DT09SRElOQVRFRF9HUkFQSElDUyAke0VOQUJMRV9USFJFQURFRF9DT01Q
T1NJVE9SfSkKLSAgICBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfQ09PUkRJTkFURURfR1JB
UEhJQ1NfVEhSRUFERUQgJHtFTkFCTEVfVEhSRUFERURfQ09NUE9TSVRPUn0pCisgICAgU0VUX0FO
RF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NPT1JESU5BVEVEX0dSQVBISUNTIFRSVUUpCisgICAgU0VU
X0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEIFRS
VUUpCiBlbmRpZiAoKQogCiBpZiAoRU5BQkxFX1BMVUdJTl9QUk9DRVNTX0dUSzIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UgYi9Tb3VyY2UvY21ha2UvV2Vi
S2l0RmVhdHVyZXMuY21ha2UKaW5kZXggZTU3MDM5MTFhN2IuLjQ0MWEwZTEzMDExIDEwMDY0NAot
LS0gYS9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKKysrIGIvU291cmNlL2NtYWtl
L1dlYktpdEZlYXR1cmVzLmNtYWtlCkBAIC0xNzIsNyArMTcyLDYgQEAgbWFjcm8oV0VCS0lUX09Q
VElPTl9CRUdJTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfU1ZHX0ZPTlRTICJU
b2dnbGUgU1ZHIGZvbnRzIHN1cHBvcnQgKGltcGxlcyBTVkcgc3VwcG9ydCkiIFBSSVZBVEUgT04p
CiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX1RFTEVQSE9ORV9OVU1CRVJfREVURUNU
SU9OICJUb2dnbGUgdGVsZXBob25lIG51bWJlciBkZXRlY3Rpb24gc3VwcG9ydCIgUFJJVkFURSBP
RkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX1RFWFRfQVVUT1NJWklORyAiVG9n
Z2xlIGF1dG9tYXRpYyB0ZXh0IHNpemUgYWRqdXN0bWVudCBzdXBwb3J0IiBQUklWQVRFIE9GRikK
LSAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfVEhSRUFERURfQ09NUE9TSVRPUiAiVG9n
Z2xlIHRocmVhZGVkIGNvbXBvc2l0b3Igc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lU
X09QVElPTl9ERUZJTkUoRU5BQkxFX1RPVUNIX0VWRU5UUyAiVG9nZ2xlIFRvdWNoIEV2ZW50cyBz
dXBwb3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfVE9V
Q0hfU0xJREVSICJUb2dnbGUgVG91Y2ggU2xpZGVyIHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAg
IFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9UT1VDSF9JQ09OX0xPQURJTkcgIlRvZ2dsZSBU
b3VjaCBJY29uIExvYWRpbmcgU3VwcG9ydCIgUFJJVkFURSBPRkYpCmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjM2ZjNiYTE0YmIuLmUxMjU1ODY3
MDJmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTIgQEAKKzIwMTctMDItMjAgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgorCisgICAgICAgIFJlbW92ZSBFTkFCTEVfVEhSRUFERURfQ09NUE9TSVRP
UiBidWlsZCBvcHRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2ODYwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtOgorCiAyMDE3LTAyLTIw
ICBGbG9yaWFuIEJydWhpbiAgPGdpdEB0aGUtY29tcGlsZXIub3JnPgogCiAgICAgICAgIEhhbmRs
ZSBFSU5UUiBkdXJpbmcgd2Via2l0cHkgc2VydmVyIHByb2Nlc3Mgc2VsZWN0KCkKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQppbmRleCA3MGU3MDM0ZTRjMC4uNmZiZDgzOGEy
M2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KQEAgLTM2NSw5ICsz
NjUsNiBAQCBteSBAZmVhdHVyZXMgPSAoCiAgICAgeyBvcHRpb24gPT4gInN5c3RlbS1tYWxsb2Mi
LCBkZXNjID0+ICJUb2dnbGUgc3lzdGVtIGFsbG9jYXRvciBpbnN0ZWFkIG9mIGJtYWxsb2MiLAog
ICAgICAgZGVmaW5lID0+ICJVU0VfU1lTVEVNX01BTExPQyIsIGRlZmF1bHQgPT4gMCwgdmFsdWUg
PT4gXCRzeXN0ZW1NYWxsb2NTdXBwb3J0IH0sCiAKLSAgICB7IG9wdGlvbiA9PiAidGhyZWFkZWQt
Y29tcG9zaXRvciIsIGRlc2MgPT4gIlRvZ2dsZSB0aHJlYWRlZCBjb21wb3NpdG9yIHN1cHBvcnQi
LAotICAgICAgZGVmaW5lID0+ICJFTkFCTEVfVEhSRUFERURfQ09NUE9TSVRPUiIsIGRlZmF1bHQg
PT4gaXNHdGsoKSwgdmFsdWUgPT4gXCR0aHJlYWRlZENvbXBvc2l0b3JTdXBwb3J0IH0sCi0KICAg
ICB7IG9wdGlvbiA9PiAidG91Y2gtZXZlbnRzIiwgZGVzYyA9PiAiVG9nZ2xlIFRvdWNoIEV2ZW50
cyBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1RPVUNIX0VWRU5UUyIsIGRlZmF1
bHQgPT4gKGlzSU9TV2ViS2l0KCkgfHwgaXNFZmwoKSB8fCBpc0d0aygpKSwgdmFsdWUgPT4gXCR0
b3VjaEV2ZW50c1N1cHBvcnQgfSwKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>302155</attachid>
            <date>2017-02-20 10:28:38 -0800</date>
            <delta_ts>2017-02-20 10:32:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk-remove-threaded-compositor-option.diff</filename>
            <type>text/plain</type>
            <size>32431</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA0OTkxYmNlODQzYy4uMjhh
ZDFiYzFkYWMgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAxNy0wMi0yMCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxp
YS5jb20+CisKKyAgICAgICAgUmVtb3ZlIEVOQUJMRV9USFJFQURFRF9DT01QT1NJVE9SIGJ1aWxk
IG9wdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTY4NjA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBTb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2UvY21ha2Uv
V2ViS2l0RmVhdHVyZXMuY21ha2U6CisKIDIwMTctMDItMjAgIE1hbnVlbCBSZWdvIENhc2Fzbm92
YXMgIDxyZWdvQGlnYWxpYS5jb20+CiAKICAgICAgICAgW2Nzcy1ncmlkXSBSZW1vdmUgY29tcGls
YXRpb24gZmxhZyBFTkFCTEVfQ1NTX0dSSURfTEFZT1VUCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmVjNjMxYWQ4
NmUuLmU3NGNjN2I1YTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTQgQEAKIDIwMTctMDItMjAg
IENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCisgICAgICAgIFJl
bW92ZSBFTkFCTEVfVEhSRUFERURfQ09NUE9TSVRPUiBidWlsZCBvcHRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODYwNgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vVGV4dHVyZU1h
cHBlci5jbWFrZToKKworMjAxNy0wMi0yMCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lh
QGlnYWxpYS5jb20+CisKICAgICAgICAgUmVtb3ZlIGNvZGUgdW5kZXIgVVNFKEdSQVBISUNTX1NV
UkZBQ0UpCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
Njg1OTIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGV4dHVyZU1hcHBl
ci5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RleHR1cmVNYXBwZXIuY21ha2UKaW5k
ZXggMTA5MWE0NjQzOGQuLjA5YzJhOTlmOTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9UZXh0dXJlTWFwcGVyLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1RleHR1cmVNYXBwZXIuY21ha2UKQEAgLTQsNyArNCw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVf
SU5DTFVERV9ESVJFQ1RPUklFUwogbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuY3BwCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVQb29sLmNwcAotICAgIHBsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckFuaW1hdGlvbi5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5jcHAKQEAgLTEyLDcgKzExLDYgQEAgbGlzdChB
UFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJHQzNEUGxhdGZvcm1MYXllci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyVGlsZS5jcHAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmNwcAogKQogCiBpZiAoVVNFX1RFWFRVUkVfTUFQUEVS
X0dMKQpAQCAtMzMsMTcgKzMxLDE4IEBAIGlmIChVU0VfQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAg
ICAgICAgIHBhZ2Uvc2Nyb2xsaW5nL2Nvb3JkaW5hdGVkZ3JhcGhpY3MvU2Nyb2xsaW5nQ29vcmRp
bmF0b3JDb29yZGluYXRlZEdyYXBoaWNzLmNwcAogICAgICAgICBwYWdlL3Njcm9sbGluZy9jb29y
ZGluYXRlZGdyYXBoaWNzL1Njcm9sbGluZ1N0YXRlTm9kZUNvb3JkaW5hdGVkR3JhcGhpY3MuY3Bw
CiAKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyQnVmZmVyLmNwcAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eS5jcHAKKwogICAgICAgICBwbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcAogICAgICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRJbWFnZUJh
Y2tpbmcuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9D
b29yZGluYXRlZFN1cmZhY2UuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9j
b29yZGluYXRlZC9UaWxlLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvVGlsZWRCYWNraW5nU3RvcmUuY3BwCiAgICAgKQotZW5kaWYgKCkKLQotaWYgKEVO
QUJMRV9USFJFQURFRF9DT01QT1NJVE9SKQorZWxzZSAoKQogICAgIGxpc3QoQVBQRU5EIFdlYkNv
cmVfU09VUkNFUwotICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwCi0gICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmNwcAorICAgICAgICBwbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCisgICAgICAgIHBs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmNwcAogICAg
ICkKIGVuZGlmICgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDZlNGY0ODFiMzMuLmU2YmRmNDdlYzYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMjAgQEAKIDIwMTctMDItMjAgIENhcmxvcyBHYXJjaWEgQ2FtcG9z
ICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCisgICAgICAgIFJlbW92ZSBFTkFCTEVfVEhSRUFERURf
Q09NUE9TSVRPUiBidWlsZCBvcHRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE2ODYwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE5vdyB0aGF0IHdlIGhhdmUgQUMgbW9kZSBvbiBkZW1hbmQgd2l0aCB0
aGUgdGhyZWFkZWQgY29tcG9zaXRvciB0aGVyZSdzIG5vIHJlYXNvbiB0byBrZWVwIHRoZSBvbGQg
QUMgY29kZS4KKworICAgICAgICAqIFBsYXRmb3JtR1RLLmNtYWtlOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJU
cmVlSG9zdDo6Y3JlYXRlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVy
VHJlZUhvc3RHdGsuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9n
dGsvTGF5ZXJUcmVlSG9zdEd0ay5oOiBSZW1vdmVkLgorCisyMDE3LTAyLTIwICBDYXJsb3MgR2Fy
Y2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKwogICAgICAgICBSZW1vdmUgY29kZSB1
bmRlciBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2ODU5MgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybUdUSy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtR1RLLmNtYWtlCmluZGV4
IGViZWRlNzUwMjc3Li44OGQ1ZWFlNDY3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxh
dGZvcm1HVEsuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZvcm1HVEsuY21ha2UKQEAg
LTU5LDYgKzU5LDE0IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogCiAgICAgU2hhcmVk
L0F1dGhlbnRpY2F0aW9uL3NvdXAvQXV0aGVudGljYXRpb25NYW5hZ2VyU291cC5jcHAKIAorICAg
IFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcAor
ICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5j
cHAKKyAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9TaW1wbGVWaWV3cG9ydENvbnRyb2xs
ZXIuY3BwCisKKyAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0
b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmNwcAorICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNz
L3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRTYWZlQ29vcmRpbmF0ZWRTdXJmYWNlLmNwcAorICAg
IFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRlZENv
bXBvc2l0b3IuY3BwCisKICAgICBTaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2NhcGVQ
bHVnaW5Nb2R1bGVYMTEuY3BwCiAKICAgICBTaGFyZWQvUGx1Z2lucy91bml4L1BsdWdpblNlYXJj
aFBhdGguY3BwCkBAIC00NjksNiArNDc3LDEzIEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNF
UwogICAgIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdD
b250ZXh0LmNwcAogCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkRHJhd2luZ0Fy
ZWEuY3BwCisKKyAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9BcmVh
QWxsb2NhdG9yLmNwcAorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwCisgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcAorICAgIFdlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1RocmVhZGVkQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0LmNwcAorICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL1Vw
ZGF0ZUF0bGFzLmNwcAorCiAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhSW1wbC5j
cHAKIAogICAgIFdlYlByb2Nlc3MvV2ViUGFnZS9hdGsvV2ViUGFnZUFjY2Vzc2liaWxpdHlPYmpl
Y3RBdGsuY3BwCkBAIC04NTEsNiArODY2LDggQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9JTkNMVURF
X0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUMl9ESVJ9L05ldHdvcmtQcm9jZXNzL3VuaXgiCiAg
ICAgIiR7V0VCS0lUMl9ESVJ9L1BsYXRmb3JtL0lQQy9nbGliIgogICAgICIke1dFQktJVDJfRElS
fS9TaGFyZWQvQVBJL2MvZ3RrIgorICAgICIke1dFQktJVDJfRElSfS9TaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcyIKKyAgICAiJHtXRUJLSVQyX0RJUn0vU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvdGhyZWFkZWRjb21wb3NpdG9yIgogICAgICIke1dFQktJVDJfRElSfS9TaGFyZWQvUGx1Z2lu
cy91bml4IgogICAgICIke1dFQktJVDJfRElSfS9TaGFyZWQvZ2xpYiIKICAgICAiJHtXRUJLSVQy
X0RJUn0vU2hhcmVkL2d0ayIKQEAgLTg3Nyw2ICs4OTQsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXQy
X0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy91bml4
IgogICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L2d0ayIKICAg
ICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwIgorICAgICIk
e1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcyIKICAg
ICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJvY2Vzcy9XZWJQYWdlL2F0ayIKICAgICAiJHtXRUJLSVQy
X0RJUn0vV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ayIKICkKQEAgLTExNzgsMzMgKzExOTYsNiBAQCBs
aXN0KEFQUEVORCBQbHVnaW5Qcm9jZXNzX1NPVVJDRVMKICAgICBQbHVnaW5Qcm9jZXNzL0VudHJ5
UG9pbnQvdW5peC9QbHVnaW5Qcm9jZXNzTWFpbi5jcHAKICkKIAotaWYgKEVOQUJMRV9USFJFQURF
RF9DT01QT1NJVE9SKQotICAgIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwotICAgICAgICBT
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAKLSAg
ICAgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
LmNwcAotICAgICAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9TaW1wbGVWaWV3cG9ydENv
bnRyb2xsZXIuY3BwCi0KLSAgICAgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFk
ZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5jcHAKLSAgICAgICAgU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZFNhZmVDb29yZGluYXRlZFN1
cmZhY2UuY3BwCi0gICAgICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29t
cG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwCi0KLSAgICAgICAgV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQXJlYUFsbG9jYXRvci5jcHAKLSAgICAgICAgV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29tcG9zaXRpbmdDb29yZGluYXRvci5j
cHAKLSAgICAgICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0LmNwcAotICAgICAgICBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9UaHJlYWRlZENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKLSAgICAg
ICAgV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvVXBkYXRlQXRsYXMuY3Bw
Ci0gICAgKQotICAgIGxpc3QoQVBQRU5EIFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwotICAg
ICAgICAiJHtXRUJLSVQyX0RJUn0vU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MiCi0gICAgICAg
ICIke1dFQktJVDJfRElSfS9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBv
c2l0b3IiCi0gICAgICAgICIke1dFQktJVDJfRElSfS9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcyIKLSAgICApCi1lbHNlIChFTkFCTEVfVEhSRUFERURfQ09NUE9TSVRPUikK
LSAgICBsaXN0KEFQUEVORCBXZWJLaXQyX1NPVVJDRVMKLSAgICAgICAgV2ViUHJvY2Vzcy9XZWJQ
YWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcAotICAgICkKLWVuZGlmICgpCi0KICMgQ29tbWFu
ZHMgZm9yIGJ1aWxkaW5nIHRoZSBidWlsdC1pbiBpbmplY3RlZCBidW5kbGUuCiBpbmNsdWRlX2Rp
cmVjdG9yaWVzKAogICAgICIke1dFQktJVDJfRElSfS9QbGF0Zm9ybSIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmNwcAppbmRleCBkZDZl
MTI5ZmRmMC4uODE4MWEyNGM1ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTMxLDggKzMxLDYgQEAKIAogI2lmIFVT
RShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKICNpbmNsdWRlICJUaHJlYWRlZENvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdC5oIgotI2VsaWYgUExBVEZPUk0oR1RLKSAmJiBVU0UoVEVYVFVS
RV9NQVBQRVJfR0wpCi0jaW5jbHVkZSAiTGF5ZXJUcmVlSG9zdEd0ay5oIgogI2VuZGlmCiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNDMsOCArNDEsNiBAQCBSZWZQdHI8TGF5ZXJUcmVl
SG9zdD4gTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKFdlYlBhZ2UmIHdlYlBhZ2UpCiB7CiAjaWYgVVNF
KENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKQogICAgIHJldHVybiBUaHJlYWRlZENvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKHdlYlBhZ2UpOwotI2VsaWYgUExBVEZPUk0oR1RL
KSAmJiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCi0gICAgcmV0dXJuIExheWVyVHJlZUhvc3RHdGs6
OmNyZWF0ZSh3ZWJQYWdlKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHdlYlBhZ2UpOwogICAg
IHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDQwYmIwN2Q5ZjcxLi4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsNDI5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEyIElnYWxpYSBTLkwuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJMYXllclRyZWVIb3N0R3Rr
LmgiCi0KLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCi0KLSNpbmNsdWRlICJBY2NlbGVyYXRl
ZFN1cmZhY2UuaCIKLSNpbmNsdWRlICJEcmF3aW5nQXJlYUltcGwuaCIKLSNpbmNsdWRlICJUZXh0
dXJlTWFwcGVyR0wuaCIKLSNpbmNsdWRlICJXZWJQYWdlLmgiCi0jaW5jbHVkZSAiV2ViUHJvY2Vz
cy5oIgotCi0jaWYgVVNFKE9QRU5HTF9FU18yKQotI2luY2x1ZGUgPEdMRVMyL2dsMi5oPgotI2Vs
c2UKLSNpbmNsdWRlIDxHTC9nbC5oPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1l
Vmlldy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvR0xDb250ZXh0Lmg+Ci0jaW5jbHVkZSA8V2ViQ29y
ZS9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oPgotI2luY2x1ZGUgPFdlYkNvcmUvTWFpbkZy
YW1lLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9TZXR0
aW5ncy5oPgotI2luY2x1ZGUgPGdkay9nZGsuaD4KLSNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUu
aD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1M
YXllclRyZWVIb3N0R3RrOjpSZW5kZXJGcmFtZVNjaGVkdWxlcjo6UmVuZGVyRnJhbWVTY2hlZHVs
ZXIoc3RkOjpmdW5jdGlvbjxib29sKCk+IHJlbmRlcmVyKQotICAgIDogbV9yZW5kZXJlcihXVEZN
b3ZlKHJlbmRlcmVyKSkKLSAgICAsIG1fdGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmTGF5
ZXJUcmVlSG9zdEd0azo6UmVuZGVyRnJhbWVTY2hlZHVsZXI6OnJlbmRlckZyYW1lKQotewotICAg
IC8vIFdlIHVzZSBhIFJ1bkxvb3AgdGltZXIgYmVjYXVzZSBvdGhlcndpc2UgR1RLKyBldmVudCBo
YW5kbGluZyBkdXJpbmcgZHJhZ2dpbmcgY2FuIHN0YXJ2ZSBXZWJDb3JlIHRpbWVycywgd2hpY2gg
aGF2ZSBhIGxvd2VyIHByaW9yaXR5LgotICAgIC8vIFVzZSBhIGhpZ2hlciBwcmlvcml0eSB0aGFu
IFdlYkNvcmUgdGltZXJzLgotICAgIG1fdGltZXIuc2V0UHJpb3JpdHkoR0RLX1BSSU9SSVRZX1JF
RFJBVyAtIDEpOwotfQotCi1MYXllclRyZWVIb3N0R3RrOjpSZW5kZXJGcmFtZVNjaGVkdWxlcjo6
flJlbmRlckZyYW1lU2NoZWR1bGVyKCkKLXsKLX0KLQotdm9pZCBMYXllclRyZWVIb3N0R3RrOjpS
ZW5kZXJGcmFtZVNjaGVkdWxlcjo6c3RhcnQoKQotewotICAgIGlmIChtX3RpbWVyLmlzQWN0aXZl
KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBtX2ZpcmVUaW1lID0gMDsKLSAgICBuZXh0RnJhbWUo
KTsKLX0KLQotdm9pZCBMYXllclRyZWVIb3N0R3RrOjpSZW5kZXJGcmFtZVNjaGVkdWxlcjo6c3Rv
cCgpCi17Ci0gICAgbV90aW1lci5zdG9wKCk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgYm9vbCBzaG91
bGRTa2lwTmV4dEZyYW1lQmVjYXVzZU9mQ29udGlub3VzSW1tZWRpYXRlRmx1c2hlcyhkb3VibGUg
Y3VycmVudCwgZG91YmxlIGxhc3RJbW1lZGlhdGVGbHVzaFRpbWUpCi17Ci0gICAgLy8gMTAwbXMg
aXMgYWJvdXQgYSBwZXJjZXB0YWJsZSBkZWxheSBpbiBVSSwgc28gd2hlbiBzY2hlZHVsaW5nIGxh
eWVyIGZsdXNoZXMgaW1tZWRpYXRlbHkgZm9yIG1vcmUgdGhhbiAxMDBtcywKLSAgICAvLyB3ZSBz
a2lwIHRoZSBuZXh0IGZyYW1lIHRvIGVuc3VyZSBwZW5kaW5nIHRpbWVycyBoYXZlIGEgY2hhbmdl
IHRvIGJlIGZpcmVkLgotICAgIHN0YXRpYyBjb25zdCBkb3VibGUgbWF4RHVyYXRpb25PZkltbWVk
aWF0ZUZsdXNoZXMgPSAwLjEwMDsKLSAgICBpZiAoIWxhc3RJbW1lZGlhdGVGbHVzaFRpbWUpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gbGFzdEltbWVkaWF0ZUZsdXNoVGltZSAr
IG1heER1cmF0aW9uT2ZJbW1lZGlhdGVGbHVzaGVzIDwgY3VycmVudDsKLX0KLQotdm9pZCBMYXll
clRyZWVIb3N0R3RrOjpSZW5kZXJGcmFtZVNjaGVkdWxlcjo6bmV4dEZyYW1lKCkKLXsKLSAgICBz
dGF0aWMgY29uc3QgZG91YmxlIHRhcmdldEZyYW1lcmF0ZSA9IDEgLyA2MC4wOwotICAgIC8vIFdo
ZW4gcmVuZGVyaW5nIGxheWVycyB0YWtlcyBtb3JlIHRpbWUgdGhhbiB0aGUgdGFyZ2V0IGRlbGF5
ICgwLjAxNiksIHdlIGVuZCB1cCBzY2hlZHVsaW5nIGxheWVyIGZsdXNoZXMKLSAgICAvLyBpbW1l
ZGlhdGVseS4gU2luY2UgdGhlIGxheWVyIGZsdXNoIHRpbWVyIGhhcyBhIGhpZ2hlciBwcmlvcml0
eSB0aGFuIFdlYkNvcmUgdGltZXJzLCB0aGVzZSBhcmUgbmV2ZXIKLSAgICAvLyBmaXJlZCB3aGls
ZSB3ZSBrZWVwIHNjaGVkdWxpbmcgbGF5ZXIgZmx1c2hlcyBpbW1lZGlhdGVseS4KLSAgICBkb3Vi
bGUgY3VycmVudCA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwotICAgIGRvdWJsZSB0
aW1lVG9OZXh0Rmx1c2ggPSBzdGQ6Om1heCh0YXJnZXRGcmFtZXJhdGUgLSAoY3VycmVudCAtIG1f
ZmlyZVRpbWUpLCAwLjApOwotICAgIGlmICh0aW1lVG9OZXh0Rmx1c2gpCi0gICAgICAgIG1fbGFz
dEltbWVkaWF0ZUZsdXNoVGltZSA9IDA7Ci0gICAgZWxzZSBpZiAoIW1fbGFzdEltbWVkaWF0ZUZs
dXNoVGltZSkKLSAgICAgICAgbV9sYXN0SW1tZWRpYXRlRmx1c2hUaW1lID0gY3VycmVudDsKLQot
ICAgIGlmIChzaG91bGRTa2lwTmV4dEZyYW1lQmVjYXVzZU9mQ29udGlub3VzSW1tZWRpYXRlRmx1
c2hlcyhjdXJyZW50LCBtX2xhc3RJbW1lZGlhdGVGbHVzaFRpbWUpKSB7Ci0gICAgICAgIHRpbWVU
b05leHRGbHVzaCA9IHRhcmdldEZyYW1lcmF0ZTsKLSAgICAgICAgbV9sYXN0SW1tZWRpYXRlRmx1
c2hUaW1lID0gMDsKLSAgICB9Ci0KLSAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCh0aW1lVG9OZXh0
Rmx1c2gpOwotfQotCi12b2lkIExheWVyVHJlZUhvc3RHdGs6OlJlbmRlckZyYW1lU2NoZWR1bGVy
OjpyZW5kZXJGcmFtZSgpCi17Ci0gICAgbV9maXJlVGltZSA9IG1vbm90b25pY2FsbHlJbmNyZWFz
aW5nVGltZSgpOwotICAgIGlmICghbV9yZW5kZXJlcigpIHx8IG1fdGltZXIuaXNBY3RpdmUoKSkK
LSAgICAgICAgcmV0dXJuOwotICAgIG5leHRGcmFtZSgpOwotfQotCi1SZWY8TGF5ZXJUcmVlSG9z
dEd0az4gTGF5ZXJUcmVlSG9zdEd0azo6Y3JlYXRlKFdlYlBhZ2UmIHdlYlBhZ2UpCi17Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgTGF5ZXJUcmVlSG9zdEd0ayh3ZWJQYWdlKSk7Ci19Ci0KLUxh
eWVyVHJlZUhvc3RHdGs6OkxheWVyVHJlZUhvc3RHdGsoV2ViUGFnZSYgd2ViUGFnZSkKLSAgICA6
IExheWVyVHJlZUhvc3Qod2ViUGFnZSkKLSAgICAsIG1fc3VyZmFjZShBY2NlbGVyYXRlZFN1cmZh
Y2U6OmNyZWF0ZSh3ZWJQYWdlKSkKLSAgICAsIG1fcmVuZGVyRnJhbWVTY2hlZHVsZXIoc3RkOjpi
aW5kKCZMYXllclRyZWVIb3N0R3RrOjpyZW5kZXJGcmFtZSwgdGhpcykpCi17Ci0gICAgbV9yb290
TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUoZ3JhcGhpY3NMYXllckZhY3RvcnkoKSwgKnRo
aXMpOwotICAgIG1fcm9vdExheWVyLT5zZXREcmF3c0NvbnRlbnQoZmFsc2UpOwotICAgIG1fcm9v
dExheWVyLT5zZXRTaXplKG1fd2ViUGFnZS5zaXplKCkpOwotCi0gICAgbV9zY2FsZU1hdHJpeC5t
YWtlSWRlbnRpdHkoKTsKLSAgICBtX3NjYWxlTWF0cml4LnNjYWxlKG1fd2ViUGFnZS5kZXZpY2VT
Y2FsZUZhY3RvcigpICogbV93ZWJQYWdlLnBhZ2VTY2FsZUZhY3RvcigpKTsKLSAgICBkb3duY2Fz
dDxHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcj4oKm1fcm9vdExheWVyKS5sYXllcigpLnNldEFu
Y2hvclBvaW50KEZsb2F0UG9pbnQzRCgpKTsKLSAgICBkb3duY2FzdDxHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcj4oKm1fcm9vdExheWVyKS5sYXllcigpLnNldFRyYW5zZm9ybShtX3NjYWxlTWF0
cml4KTsKLQotICAgIC8vIFRoZSBub24tY29tcG9zaXRlZCBjb250ZW50cyBhcmUgYSBjaGlsZCBv
ZiB0aGUgcm9vdCBsYXllci4KLSAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXIgPSBHcmFw
aGljc0xheWVyOjpjcmVhdGUoZ3JhcGhpY3NMYXllckZhY3RvcnkoKSwgKnRoaXMpOwotICAgIG1f
bm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0RHJhd3NDb250ZW50KHRydWUpOwotICAgIG1f
bm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0Q29udGVudHNPcGFxdWUobV93ZWJQYWdlLmRy
YXdzQmFja2dyb3VuZCgpKTsKLSAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnNldFNp
emUobV93ZWJQYWdlLnNpemUoKSk7Ci0gICAgaWYgKG1fd2ViUGFnZS5jb3JlUGFnZSgpLT5zZXR0
aW5ncygpLmFjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQoKSkKLSAgICAgICAgbV9ub25Db21wb3Np
dGVkQ29udGVudExheWVyLT5zZXRBY2NlbGVyYXRlc0RyYXdpbmcodHJ1ZSk7Ci0KLSNpZm5kZWYg
TkRFQlVHCi0gICAgbV9yb290TGF5ZXItPnNldE5hbWUoIkxheWVyVHJlZUhvc3Qgcm9vdCBsYXll
ciIpOwotICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0TmFtZSgiTGF5ZXJUcmVl
SG9zdCBub24tY29tcG9zaXRlZCBjb250ZW50Iik7Ci0jZW5kaWYKLQotICAgIG1fcm9vdExheWVy
LT5hZGRDaGlsZChtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXIuZ2V0KCkpOwotICAgIG1fbm9u
Q29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7Ci0KLSAgICBpZiAobV9z
dXJmYWNlKSB7Ci0gICAgICAgIGNyZWF0ZVRleHR1cmVNYXBwZXIoKTsKLSAgICAgICAgbV9sYXll
clRyZWVDb250ZXh0LmNvbnRleHRJRCA9IG1fc3VyZmFjZS0+c3VyZmFjZUlEKCk7Ci0gICAgfQot
fQotCi1ib29sIExheWVyVHJlZUhvc3RHdGs6Om1ha2VDb250ZXh0Q3VycmVudCgpCi17Ci0gICAg
dWludDY0X3QgbmF0aXZlSGFuZGxlID0gbV9zdXJmYWNlID8gbV9zdXJmYWNlLT53aW5kb3coKSA6
IG1fbGF5ZXJUcmVlQ29udGV4dC5jb250ZXh0SUQ7Ci0gICAgaWYgKCFuYXRpdmVIYW5kbGUpIHsK
LSAgICAgICAgbV9jb250ZXh0ID0gbnVsbHB0cjsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KLQotICAgIGlmIChtX2NvbnRleHQpCi0gICAgICAgIHJldHVybiBtX2NvbnRleHQtPm1ha2VD
b250ZXh0Q3VycmVudCgpOwotCi0gICAgbV9jb250ZXh0ID0gR0xDb250ZXh0OjpjcmVhdGVDb250
ZXh0Rm9yV2luZG93KHJlaW50ZXJwcmV0X2Nhc3Q8R0xOYXRpdmVXaW5kb3dUeXBlPihuYXRpdmVI
YW5kbGUpLCAmUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5Rm9yQ29tcG9zaXRpbmcoKSk7
Ci0gICAgaWYgKCFtX2NvbnRleHQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICgh
bV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgLy8gRG8gbm90IGRvIGZyYW1lIHN5bmMgd2hlbiByZW5kZXJpbmcgb2Zmc2NyZWVuIGlu
IHRoZSB3ZWIgcHJvY2VzcyB0byBlbnN1cmUgdGhhdCBTd2FwQnVmZmVycyBuZXZlciBibG9ja3Mu
Ci0gICAgLy8gUmVuZGVyaW5nIHRvIHRoZSBhY3R1YWwgc2NyZWVuIHdpbGwgaGFwcGVuIGxhdGVy
IGFueXdheSBzaW5jZSB0aGUgVUkgcHJvY2VzcyBzY2hlZHVsZXMgYSByZWRyYXcgZm9yIGV2ZXJ5
IHVwZGF0ZSwKLSAgICAvLyB0aGUgY29tcG9zaXRvciB3aWxsIHRha2UgY2FyZSBvZiBzeW5jaW5n
IHRvIHZibGFuay4KLSAgICBpZiAobV9zdXJmYWNlKQotICAgICAgICBtX2NvbnRleHQtPnN3YXBJ
bnRlcnZhbCgwKTsKLQotICAgIHJldHVybiB0cnVlOwotfQotCi1MYXllclRyZWVIb3N0R3RrOjp+
TGF5ZXJUcmVlSG9zdEd0aygpCi17Ci0gICAgQVNTRVJUKCFtX3Jvb3RMYXllcik7Ci0gICAgY2Fu
Y2VsUGVuZGluZ0xheWVyRmx1c2goKTsKLX0KLQotdm9pZCBMYXllclRyZWVIb3N0R3RrOjpzZXRS
b290Q29tcG9zaXRpbmdMYXllcihHcmFwaGljc0xheWVyKiBncmFwaGljc0xheWVyKQotewotICAg
IG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+cmVtb3ZlQWxsQ2hpbGRyZW4oKTsKLQotICAg
IC8vIEFkZCB0aGUgYWNjZWxlcmF0ZWQgbGF5ZXIgdHJlZSBoaWVyYXJjaHkuCi0gICAgaWYgKGdy
YXBoaWNzTGF5ZXIpCi0gICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+YWRkQ2hp
bGQoZ3JhcGhpY3NMYXllcik7Ci0KLSAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKLX0KLQotdm9p
ZCBMYXllclRyZWVIb3N0R3RrOjppbnZhbGlkYXRlKCkKLXsKLSAgICAvLyBUaGlzIGNhbiB0cmln
Z2VyIGRlc3RydWN0aW9uIG9mIEdMIG9iamVjdHMgc28gbGV0J3MgbWFrZSBzdXJlIHRoYXQKLSAg
ICAvLyB3ZSBoYXZlIHRoZSByaWdodCBhY3RpdmUgY29udGV4dAotICAgIGlmIChtX2NvbnRleHQp
Ci0gICAgICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7Ci0KLSAgICBjYW5jZWxQ
ZW5kaW5nTGF5ZXJGbHVzaCgpOwotICAgIG1fcm9vdExheWVyID0gbnVsbHB0cjsKLSAgICBtX25v
bkNvbXBvc2l0ZWRDb250ZW50TGF5ZXIgPSBudWxscHRyOwotICAgIG1fdGV4dHVyZU1hcHBlciA9
IG51bGxwdHI7Ci0KLSAgICBtX2NvbnRleHQgPSBudWxscHRyOwotICAgIExheWVyVHJlZUhvc3Q6
OmludmFsaWRhdGUoKTsKLQotICAgIG1fc3VyZmFjZSA9IG51bGxwdHI7Ci19Ci0KLXZvaWQgTGF5
ZXJUcmVlSG9zdEd0azo6c2V0Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVlZERpc3BsYXkoKQotewot
ICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7Ci0gICAg
c2NoZWR1bGVMYXllckZsdXNoKCk7Ci19Ci0KLXZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6c2V0Tm9u
Q29tcG9zaXRlZENvbnRlbnRzTmVlZERpc3BsYXlJblJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkK
LXsKLSAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnNldE5lZWRzRGlzcGxheUluUmVj
dChyZWN0KTsKLSAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKLX0KLQotdm9pZCBMYXllclRyZWVI
b3N0R3RrOjpzY3JvbGxOb25Db21wb3NpdGVkQ29udGVudHMoY29uc3QgSW50UmVjdCYgc2Nyb2xs
UmVjdCkKLXsKLSAgICBzZXROb25Db21wb3NpdGVkQ29udGVudHNOZWVkRGlzcGxheUluUmVjdChz
Y3JvbGxSZWN0KTsKLX0KLQotdm9pZCBMYXllclRyZWVIb3N0R3RrOjpzaXplRGlkQ2hhbmdlKGNv
bnN0IEludFNpemUmIG5ld1NpemUpCi17Ci0gICAgaWYgKG1fcm9vdExheWVyLT5zaXplKCkgPT0g
bmV3U2l6ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fcm9vdExheWVyLT5zZXRTaXplKG5ld1Np
emUpOwotCi0gICAgLy8gSWYgdGhlIG5ld1NpemUgZXhwb3NlcyBuZXcgYXJlYXMgb2YgdGhlIG5v
bi1jb21wb3NpdGVkIGNvbnRlbnQgYSBzZXROZWVkc0Rpc3BsYXkgaXMgbmVlZGVkCi0gICAgLy8g
Zm9yIHRob3NlIG5ld2x5IGV4cG9zZWQgYXJlYXMuCi0gICAgRmxvYXRTaXplIG9sZFNpemUgPSBt
X25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnNpemUoKTsKLSAgICBtX25vbkNvbXBvc2l0ZWRD
b250ZW50TGF5ZXItPnNldFNpemUobmV3U2l6ZSk7Ci0KLSAgICBpZiAobmV3U2l6ZS53aWR0aCgp
ID4gb2xkU2l6ZS53aWR0aCgpKSB7Ci0gICAgICAgIGZsb2F0IGhlaWdodCA9IHN0ZDo6bWluKHN0
YXRpY19jYXN0PGZsb2F0PihuZXdTaXplLmhlaWdodCgpKSwgb2xkU2l6ZS5oZWlnaHQoKSk7Ci0g
ICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0TmVlZHNEaXNwbGF5SW5SZWN0
KEZsb2F0UmVjdChvbGRTaXplLndpZHRoKCksIDAsIG5ld1NpemUud2lkdGgoKSAtIG9sZFNpemUu
d2lkdGgoKSwgaGVpZ2h0KSk7Ci0gICAgfQotCi0gICAgaWYgKG5ld1NpemUuaGVpZ2h0KCkgPiBv
bGRTaXplLmhlaWdodCgpKQotICAgICAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPnNl
dE5lZWRzRGlzcGxheUluUmVjdChGbG9hdFJlY3QoMCwgb2xkU2l6ZS5oZWlnaHQoKSwgbmV3U2l6
ZS53aWR0aCgpLCBuZXdTaXplLmhlaWdodCgpIC0gb2xkU2l6ZS5oZWlnaHQoKSkpOwotICAgIG1f
bm9uQ29tcG9zaXRlZENvbnRlbnRMYXllci0+c2V0TmVlZHNEaXNwbGF5KCk7Ci0KLSAgICBpZiAo
bV9zdXJmYWNlICYmIG1fc3VyZmFjZS0+cmVzaXplKG5ld1NpemUpKQotICAgICAgICBtX2xheWVy
VHJlZUNvbnRleHQuY29udGV4dElEID0gbV9zdXJmYWNlLT5zdXJmYWNlSUQoKTsKLQotICAgIGNv
bXBvc2l0ZUxheWVyc1RvQ29udGV4dChGb3JSZXNpemUpOwotfQotCi12b2lkIExheWVyVHJlZUhv
c3RHdGs6OmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpCi17Ci0gICAgaWYgKG1fc3Vy
ZmFjZSAmJiBtX3N1cmZhY2UtPnJlc2l6ZShtX3dlYlBhZ2Uuc2l6ZSgpKSkKLSAgICAgICAgbV9s
YXllclRyZWVDb250ZXh0LmNvbnRleHRJRCA9IG1fc3VyZmFjZS0+c3VyZmFjZUlEKCk7Ci0KLSAg
ICAvLyBPdGhlciBsYXllcnMgbGVhcm4gb2YgdGhlIHNjYWxlIGZhY3RvciBjaGFuZ2UgdmlhIFdl
YlBhZ2U6OnNldERldmljZVNjYWxlRmFjdG9yLgotICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRM
YXllci0+ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7Ci0KLSAgICBtX3NjYWxlTWF0
cml4Lm1ha2VJZGVudGl0eSgpOwotICAgIG1fc2NhbGVNYXRyaXguc2NhbGUobV93ZWJQYWdlLmRl
dmljZVNjYWxlRmFjdG9yKCkgKiBtX3dlYlBhZ2UucGFnZVNjYWxlRmFjdG9yKCkpOwotICAgIGRv
d25jYXN0PEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyPigqbV9yb290TGF5ZXIpLmxheWVyKCku
c2V0VHJhbnNmb3JtKG1fc2NhbGVNYXRyaXgpOwotfQotCi12b2lkIExheWVyVHJlZUhvc3RHdGs6
OmZvcmNlUmVwYWludCgpCi17Ci0gICAgc2NoZWR1bGVMYXllckZsdXNoKCk7Ci19Ci0KLXZvaWQg
TGF5ZXJUcmVlSG9zdEd0azo6cGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGljc0xheWVyKiBncmFw
aGljc0xheWVyLCBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4dCwgR3JhcGhpY3NMYXll
clBhaW50aW5nUGhhc2UsIGNvbnN0IEZsb2F0UmVjdCYgY2xpcFJlY3QpCi17Ci0gICAgaWYgKGdy
YXBoaWNzTGF5ZXIgPT0gbV9ub25Db21wb3NpdGVkQ29udGVudExheWVyLmdldCgpKQotICAgICAg
ICBtX3dlYlBhZ2UuZHJhd1JlY3QoZ3JhcGhpY3NDb250ZXh0LCBlbmNsb3NpbmdJbnRSZWN0KGNs
aXBSZWN0KSk7Ci19Ci0KLWZsb2F0IExheWVyVHJlZUhvc3RHdGs6OmRldmljZVNjYWxlRmFjdG9y
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV93ZWJQYWdlLmRldmljZVNjYWxlRmFjdG9yKCk7Ci19
Ci0KLWZsb2F0IExheWVyVHJlZUhvc3RHdGs6OnBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG1fd2ViUGFnZS5wYWdlU2NhbGVGYWN0b3IoKTsKLX0KLQotYm9vbCBMYXllclRy
ZWVIb3N0R3RrOjpyZW5kZXJGcmFtZSgpCi17Ci0gICAgZmx1c2hBbmRSZW5kZXJMYXllcnMoKTsK
LSAgICByZXR1cm4gZG93bmNhc3Q8R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI+KCptX3Jvb3RM
YXllcikubGF5ZXIoKS5kZXNjZW5kYW50c09yU2VsZkhhdmVSdW5uaW5nQW5pbWF0aW9ucygpOwot
fQotCi1ib29sIExheWVyVHJlZUhvc3RHdGs6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpCi17
Ci0gICAgbV9yb290TGF5ZXItPmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHko
KTsKLSAgICBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXItPmZsdXNoQ29tcG9zaXRpbmdTdGF0
ZUZvclRoaXNMYXllck9ubHkoKTsKLQotICAgIGlmICghbV93ZWJQYWdlLmNvcmVQYWdlKCktPm1h
aW5GcmFtZSgpLnZpZXcoKS0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlSW5jbHVkaW5nU3ViZnJhbWVz
KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChtX3ZpZXdPdmVybGF5Um9vdExh
eWVyKQotICAgICAgICBtX3ZpZXdPdmVybGF5Um9vdExheWVyLT5mbHVzaENvbXBvc2l0aW5nU3Rh
dGUoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbV9yb290TGF5ZXItPnNpemUoKSkpOwotCi0gICAg
ZG93bmNhc3Q8R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI+KCptX3Jvb3RMYXllcikudXBkYXRl
QmFja2luZ1N0b3JlSW5jbHVkaW5nU3ViTGF5ZXJzKCk7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0K
LXZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6Y29tcG9zaXRlTGF5ZXJzVG9Db250ZXh0KENvbXBvc2l0
ZVB1cnBvc2UgcHVycG9zZSkKLXsKLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICAvLyBUaGUgd2luZG93IHNpemUgbWF5IGJlIG91dCBvZiBzeW5j
IHdpdGggdGhlIHBhZ2Ugc2l6ZSBhdCB0aGlzIHBvaW50LCBhbmQgZ2V0dGluZwotICAgIC8vIHRo
ZSB2aWV3cG9ydCBwYXJhbWV0ZXJzIGluY29ycmVjdCwgbWVhbnMgdGhhdCB0aGUgY29udGVudCB3
aWxsIGJlIG1pc3BsYWNlZC4gVGh1cwotICAgIC8vIHdlIHNldCB0aGUgdmlld3BvcnQgcGFyYW1l
dGVycyBkaXJlY3RseSBmcm9tIHRoZSB3aW5kb3cgc2l6ZS4KLSAgICBJbnRTaXplIGNvbnRleHRT
aXplID0gbV9jb250ZXh0LT5kZWZhdWx0RnJhbWVCdWZmZXJTaXplKCk7Ci0gICAgZ2xWaWV3cG9y
dCgwLCAwLCBjb250ZXh0U2l6ZS53aWR0aCgpLCBjb250ZXh0U2l6ZS5oZWlnaHQoKSk7Ci0gICAg
aWYgKHB1cnBvc2UgPT0gRm9yUmVzaXplIHx8ICFtX3dlYlBhZ2UuZHJhd3NCYWNrZ3JvdW5kKCkp
IHsKLSAgICAgICAgZ2xDbGVhckNvbG9yKDAsIDAsIDAsIDApOwotICAgICAgICBnbENsZWFyKEdM
X0NPTE9SX0JVRkZFUl9CSVQpOwotICAgIH0KLQotICAgIEFTU0VSVChtX3RleHR1cmVNYXBwZXIp
OwotCi0gICAgVGV4dHVyZU1hcHBlcjo6UGFpbnRGbGFncyBwYWludEZsYWdzID0gMDsKLQotICAg
IGlmIChtX3N1cmZhY2UgJiYgbV9zdXJmYWNlLT5zaG91bGRQYWludE1pcnJvcmVkKCkpCi0gICAg
ICAgIHBhaW50RmxhZ3MgfD0gVGV4dHVyZU1hcHBlcjo6UGFpbnRpbmdNaXJyb3JlZDsKLQotICAg
IG1fdGV4dHVyZU1hcHBlci0+YmVnaW5QYWludGluZyhwYWludEZsYWdzKTsKLSAgICBkb3duY2Fz
dDxHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcj4oKm1fcm9vdExheWVyKS5sYXllcigpLnBhaW50
KCk7Ci0gICAgbV90ZXh0dXJlTWFwcGVyLT5lbmRQYWludGluZygpOwotCi0gICAgbV9jb250ZXh0
LT5zd2FwQnVmZmVycygpOwotfQotCi12b2lkIExheWVyVHJlZUhvc3RHdGs6OmZsdXNoQW5kUmVu
ZGVyTGF5ZXJzKCkKLXsKLSAgICB7Ci0gICAgICAgIFJlZlB0cjxMYXllclRyZWVIb3N0R3RrPiBw
cm90ZWN0KHRoaXMpOwotICAgICAgICBtX3dlYlBhZ2UubGF5b3V0SWZOZWVkZWQoKTsKLQotICAg
ICAgICBpZiAoIW1faXNWYWxpZCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoIW1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIWZs
dXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBPdXIg
bW9kZWwgaXMgdmVyeSBzaW1wbGUuIFdlIGFsd2F5cyBjb21wb3NpdGUgYW5kIHJlbmRlciB0aGUg
dHJlZSBpbW1lZGlhdGVseSBhZnRlciB1cGRhdGluZyBpdC4KLSAgICBjb21wb3NpdGVMYXllcnNU
b0NvbnRleHQoKTsKLQotICAgIGlmIChtX25vdGlmeUFmdGVyU2NoZWR1bGVkTGF5ZXJGbHVzaCkg
ewotICAgICAgICAvLyBMZXQgdGhlIGRyYXdpbmcgYXJlYSBrbm93IHRoYXQgd2UndmUgZG9uZSBh
IGZsdXNoIG9mIHRoZSBsYXllciBjaGFuZ2VzLgotICAgICAgICBtX3dlYlBhZ2UuZHJhd2luZ0Fy
ZWEoKS0+bGF5ZXJIb3N0RGlkRmx1c2hMYXllcnMoKTsKLSAgICAgICAgbV9ub3RpZnlBZnRlclNj
aGVkdWxlZExheWVyRmx1c2ggPSBmYWxzZTsKLSAgICB9Ci19Ci0KLXZvaWQgTGF5ZXJUcmVlSG9z
dEd0azo6c2NoZWR1bGVMYXllckZsdXNoKCkKLXsKLSAgICBpZiAoIW1fbGF5ZXJGbHVzaFNjaGVk
dWxpbmdFbmFibGVkIHx8ICFtX3RleHR1cmVNYXBwZXIpCi0gICAgICAgIHJldHVybjsKLQotICAg
IG1fcmVuZGVyRnJhbWVTY2hlZHVsZXIuc3RhcnQoKTsKLX0KLQotdm9pZCBMYXllclRyZWVIb3N0
R3RrOjpwYWdlQmFja2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQoKQotewotICAgIG1fbm9uQ29t
cG9zaXRlZENvbnRlbnRMYXllci0+c2V0Q29udGVudHNPcGFxdWUobV93ZWJQYWdlLmRyYXdzQmFj
a2dyb3VuZCgpKTsKLX0KLQotdm9pZCBMYXllclRyZWVIb3N0R3RrOjpjYW5jZWxQZW5kaW5nTGF5
ZXJGbHVzaCgpCi17Ci0gICAgbV9yZW5kZXJGcmFtZVNjaGVkdWxlci5zdG9wKCk7Ci19Ci0KLXZv
aWQgTGF5ZXJUcmVlSG9zdEd0azo6c2V0Vmlld092ZXJsYXlSb290TGF5ZXIoR3JhcGhpY3NMYXll
ciogdmlld092ZXJsYXlSb290TGF5ZXIpCi17Ci0gICAgTGF5ZXJUcmVlSG9zdDo6c2V0Vmlld092
ZXJsYXlSb290TGF5ZXIodmlld092ZXJsYXlSb290TGF5ZXIpOwotICAgIGlmIChtX3ZpZXdPdmVy
bGF5Um9vdExheWVyKQotICAgICAgICBtX3Jvb3RMYXllci0+YWRkQ2hpbGQobV92aWV3T3Zlcmxh
eVJvb3RMYXllcik7Ci19Ci0KLXZvaWQgTGF5ZXJUcmVlSG9zdEd0azo6Y3JlYXRlVGV4dHVyZU1h
cHBlcigpCi17Ci0gICAgLy8gVGhlIGNyZWF0aW9uIG9mIHRoZSBUZXh0dXJlTWFwcGVyIG5lZWRz
IGFuIGFjdGl2ZSBPcGVuR0wgY29udGV4dC4KLSAgICBpZiAoIW1ha2VDb250ZXh0Q3VycmVudCgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NFUlQobV9pc1ZhbGlkKTsKLSAgICBBU1NFUlQo
IW1fdGV4dHVyZU1hcHBlcik7Ci0gICAgbV90ZXh0dXJlTWFwcGVyID0gVGV4dHVyZU1hcHBlcjo6
Y3JlYXRlKCk7Ci0gICAgc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4obV90ZXh0dXJlTWFw
cGVyLmdldCgpKS0+c2V0RW5hYmxlRWRnZURpc3RhbmNlQW50aWFsaWFzaW5nKHRydWUpOwotICAg
IGRvd25jYXN0PEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyPigqbV9yb290TGF5ZXIpLmxheWVy
KCkuc2V0VGV4dHVyZU1hcHBlcihtX3RleHR1cmVNYXBwZXIuZ2V0KCkpOwotfQotCi0jaWYgUExB
VEZPUk0oWDExKSAmJiAhVVNFKFJFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cpCi12b2lkIExh
eWVyVHJlZUhvc3RHdGs6OnNldE5hdGl2ZVN1cmZhY2VIYW5kbGVGb3JDb21wb3NpdGluZyh1aW50
NjRfdCBoYW5kbGUpCi17Ci0gICAgY2FuY2VsUGVuZGluZ0xheWVyRmx1c2goKTsKLSAgICBtX2xh
eWVyVHJlZUNvbnRleHQuY29udGV4dElEID0gaGFuZGxlOwotCi0gICAgY3JlYXRlVGV4dHVyZU1h
cHBlcigpOwotICAgIHNjaGVkdWxlTGF5ZXJGbHVzaCgpOwotfQotI2VuZGlmCi0KLX0gLy8gbmFt
ZXNwYWNlIFdlYktpdAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5oIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGUzNTZhMzY4MzBmLi4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xheWVyVHJlZUhvc3RHdGsuaAorKysgL2Rldi9udWxs
CkBAIC0xLDEyMCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy5MLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaWZuZGVmIExheWVyVHJlZUhvc3RHdGtfaAotI2RlZmluZSBMYXllclRyZWVI
b3N0R3RrX2gKLQotI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKLQotI2luY2x1ZGUgIkxheWVy
VHJlZUNvbnRleHQuaCIKLSNpbmNsdWRlICJMYXllclRyZWVIb3N0LmgiCi0jaW5jbHVkZSAiVGV4
dHVyZU1hcHBlckxheWVyLmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9HTENvbnRleHQuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXJDbGllbnQuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Ry
YW5zZm9ybWF0aW9uTWF0cml4Lmg+Ci0jaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KLQotbmFtZXNw
YWNlIFdlYktpdCB7Ci0KLWNsYXNzIEFjY2VsZXJhdGVkU3VyZmFjZTsKLQotY2xhc3MgTGF5ZXJU
cmVlSG9zdEd0ayBmaW5hbCA6IHB1YmxpYyBMYXllclRyZWVIb3N0LCBXZWJDb3JlOjpHcmFwaGlj
c0xheWVyQ2xpZW50IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPExheWVyVHJlZUhvc3RHdGs+
IGNyZWF0ZShXZWJQYWdlJik7Ci0gICAgdmlydHVhbCB+TGF5ZXJUcmVlSG9zdEd0aygpOwotCi1w
cml2YXRlOgotICAgIGV4cGxpY2l0IExheWVyVHJlZUhvc3RHdGsoV2ViUGFnZSYpOwotCi0gICAg
V2ViQ29yZTo6R3JhcGhpY3NMYXllciogcm9vdExheWVyKCkgY29uc3QgeyByZXR1cm4gbV9yb290
TGF5ZXIuZ2V0KCk7IH0KLQotICAgIC8vIExheWVyVHJlZUhvc3QKLSAgICB2b2lkIHNjaGVkdWxl
TGF5ZXJGbHVzaCgpIG92ZXJyaWRlOwotICAgIHZvaWQgY2FuY2VsUGVuZGluZ0xheWVyRmx1c2go
KSBvdmVycmlkZTsKLSAgICB2b2lkIHNldFJvb3RDb21wb3NpdGluZ0xheWVyKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsKLSAgICB2b2lkIGludmFsaWRhdGUoKSBvdmVycmlkZTsK
LQotICAgIHZvaWQgZm9yY2VSZXBhaW50KCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzaXplRGlkQ2hh
bmdlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG5ld1NpemUpIG92ZXJyaWRlOwotICAgIHZvaWQg
ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBwYWdl
QmFja2dyb3VuZFRyYW5zcGFyZW5jeUNoYW5nZWQoKSBvdmVycmlkZTsKLQotICAgIHZvaWQgc2V0
Tm9uQ29tcG9zaXRlZENvbnRlbnRzTmVlZERpc3BsYXkoKSBvdmVycmlkZTsKLSAgICB2b2lkIHNl
dE5vbkNvbXBvc2l0ZWRDb250ZW50c05lZWREaXNwbGF5SW5SZWN0KGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmKSBvdmVycmlkZTsKLSAgICB2b2lkIHNjcm9sbE5vbkNvbXBvc2l0ZWRDb250ZW50cyhj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiBzY3JvbGxSZWN0KSBvdmVycmlkZTsKLSAgICB2b2lkIHNl
dFZpZXdPdmVybGF5Um9vdExheWVyKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqKSBvdmVycmlkZTsK
LQotI2lmIFBMQVRGT1JNKFgxMSkgJiYgIVVTRShSRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9X
KQotICAgIHZvaWQgc2V0TmF0aXZlU3VyZmFjZUhhbmRsZUZvckNvbXBvc2l0aW5nKHVpbnQ2NF90
KSBvdmVycmlkZTsKLSNlbmRpZgotCi0gICAgY2xhc3MgUmVuZGVyRnJhbWVTY2hlZHVsZXIgewot
ICAgIHB1YmxpYzoKLSAgICAgICAgUmVuZGVyRnJhbWVTY2hlZHVsZXIoc3RkOjpmdW5jdGlvbjxi
b29sKCk+KTsKLSAgICAgICAgflJlbmRlckZyYW1lU2NoZWR1bGVyKCk7Ci0KLSAgICAgICAgdm9p
ZCBzdGFydCgpOwotICAgICAgICB2b2lkIHN0b3AoKTsKLQotICAgIHByaXZhdGU6Ci0gICAgICAg
IHZvaWQgcmVuZGVyRnJhbWUoKTsKLSAgICAgICAgdm9pZCBuZXh0RnJhbWUoKTsKLQotICAgICAg
ICBzdGQ6OmZ1bmN0aW9uPGJvb2woKT4gbV9yZW5kZXJlcjsKLSAgICAgICAgUnVuTG9vcDo6VGlt
ZXI8UmVuZGVyRnJhbWVTY2hlZHVsZXI+IG1fdGltZXI7Ci0gICAgICAgIGRvdWJsZSBtX2ZpcmVU
aW1lIHsgMCB9OwotICAgICAgICBkb3VibGUgbV9sYXN0SW1tZWRpYXRlRmx1c2hUaW1lIHsgMCB9
OwotICAgIH07Ci0KLSAgICAvLyBHcmFwaGljc0xheWVyQ2xpZW50Ci0gICAgdm9pZCBwYWludENv
bnRlbnRzKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXIqLCBXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQmLCBXZWJDb3JlOjpHcmFwaGljc0xheWVyUGFpbnRpbmdQaGFzZSwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRSZWN0JiBjbGlwUmVjdCkgb3ZlcnJpZGU7Ci0gICAgZmxvYXQgZGV2aWNlU2NhbGVG
YWN0b3IoKSBjb25zdCBvdmVycmlkZTsKLSAgICBmbG9hdCBwYWdlU2NhbGVGYWN0b3IoKSBjb25z
dCBvdmVycmlkZTsKLQotICAgIGJvb2wgZmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCk7Ci0KLSAg
ICBlbnVtIENvbXBvc2l0ZVB1cnBvc2UgeyBGb3JSZXNpemUsIE5vdEZvclJlc2l6ZSB9OwotICAg
IHZvaWQgY29tcG9zaXRlTGF5ZXJzVG9Db250ZXh0KENvbXBvc2l0ZVB1cnBvc2UgPSBOb3RGb3JS
ZXNpemUpOwotCi0gICAgdm9pZCBmbHVzaEFuZFJlbmRlckxheWVycygpOwotICAgIGJvb2wgcmVu
ZGVyRnJhbWUoKTsKLSAgICBib29sIG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIHZvaWQgY3Jl
YXRlVGV4dHVyZU1hcHBlcigpOwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXI+IG1fcm9vdExheWVyOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpHcmFw
aGljc0xheWVyPiBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5ZXI7Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPFdlYkNvcmU6OlRleHR1cmVNYXBwZXI+IG1fdGV4dHVyZU1hcHBlcjsKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViQ29yZTo6R0xDb250ZXh0PiBtX2NvbnRleHQ7Ci0gICAgV2ViQ29yZTo6VHJh
bnNmb3JtYXRpb25NYXRyaXggbV9zY2FsZU1hdHJpeDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNj
ZWxlcmF0ZWRTdXJmYWNlPiBtX3N1cmZhY2U7Ci0gICAgUmVuZGVyRnJhbWVTY2hlZHVsZXIgbV9y
ZW5kZXJGcmFtZVNjaGVkdWxlcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYktpdAotCi0jZW5k
aWYKLQotI2VuZGlmIC8vIExheWVyVHJlZUhvc3RHdGtfaApkaWZmIC0tZ2l0IGEvU291cmNlL2Nt
YWtlL09wdGlvbnNHVEsuY21ha2UgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQppbmRl
eCAyOTg3NjU0MTljYy4uNTllNzBjNzBjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9PcHRp
b25zR1RLLmNtYWtlCisrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCkBAIC0xMDgs
NyArMTA4LDYgQEAgV0VCS0lUX09QVElPTl9ERVBFTkQoRU5BQkxFX0FDQ0VMRVJBVEVEXzJEX0NB
TlZBUyBFTkFCTEVfT1BFTkdMKQogV0VCS0lUX09QVElPTl9ERVBFTkQoRU5BQkxFX0dMRVMyIEVO
QUJMRV9PUEVOR0wpCiBXRUJLSVRfT1BUSU9OX0RFUEVORChFTkFCTEVfTkVUU0NBUEVfUExVR0lO
X0FQSSBFTkFCTEVfWDExX1RBUkdFVCkKIFdFQktJVF9PUFRJT05fREVQRU5EKEVOQUJMRV9QTFVH
SU5fUFJPQ0VTU19HVEsyIEVOQUJMRV9YMTFfVEFSR0VUKQotV0VCS0lUX09QVElPTl9ERVBFTkQo
RU5BQkxFX1RIUkVBREVEX0NPTVBPU0lUT1IgRU5BQkxFX09QRU5HTCkKIFdFQktJVF9PUFRJT05f
REVQRU5EKEVOQUJMRV9XRUJHTCBFTkFCTEVfT1BFTkdMKQogV0VCS0lUX09QVElPTl9ERVBFTkQo
VVNFX1JFRElSRUNURURfWENPTVBPU0lURV9XSU5ET1cgRU5BQkxFX09QRU5HTCkKIFdFQktJVF9P
UFRJT05fREVQRU5EKFVTRV9SRURJUkVDVEVEX1hDT01QT1NJVEVfV0lORE9XIEVOQUJMRV9YMTFf
VEFSR0VUKQpAQCAtMTQ0LDcgKzE0Myw2IEBAIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZB
TFVFKEVOQUJMRV9JQ09OREFUQUJBU0UgUFVCTElDIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxU
X1BPUlRfVkFMVUUoRU5BQkxFX0pJVCBQVUJMSUMgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfU0FNUExJTkdfUFJPRklMRVIgUFVCTElDIE9OKQogV0VCS0lUX09Q
VElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1NQRUxMQ0hFQ0sgUFVCTElDIE9OKQotV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1RIUkVBREVEX0NPTVBPU0lUT1Ig
UFVCTElDIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1RPVUNI
X0VWRU5UUyBQVUJMSUMgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFC
TEVfVklERU8gUFVCTElDIE9OKQogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5B
QkxFX1dFQl9BVURJTyBQVUJMSUMgT04pCkBAIC0zMTEsOCArMzA5LDggQEAgaWYgKEVOQUJMRV9P
UEVOR0wpCiAgICAgICAgIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9HTFggVFJVRSkKICAg
ICBlbmRpZiAoKQogCi0gICAgU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0NPT1JESU5BVEVE
X0dSQVBISUNTICR7RU5BQkxFX1RIUkVBREVEX0NPTVBPU0lUT1J9KQotICAgIFNFVF9BTkRfRVhQ
T1NFX1RPX0JVSUxEKFVTRV9DT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCAke0VOQUJMRV9U
SFJFQURFRF9DT01QT1NJVE9SfSkKKyAgICBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfQ09P
UkRJTkFURURfR1JBUEhJQ1MgVFJVRSkKKyAgICBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0Vf
Q09PUkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQgVFJVRSkKIGVuZGlmICgpCiAKIGlmIChFTkFC
TEVfUExVR0lOX1BST0NFU1NfR1RLMikKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFrZS9XZWJLaXRG
ZWF0dXJlcy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQppbmRleCBl
NTcwMzkxMWE3Yi4uNDQxYTBlMTMwMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9jbWFrZS9XZWJLaXRG
ZWF0dXJlcy5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UKQEAg
LTE3Miw3ICsxNzIsNiBAQCBtYWNybyhXRUJLSVRfT1BUSU9OX0JFR0lOKQogICAgIFdFQktJVF9P
UFRJT05fREVGSU5FKEVOQUJMRV9TVkdfRk9OVFMgIlRvZ2dsZSBTVkcgZm9udHMgc3VwcG9ydCAo
aW1wbGVzIFNWRyBzdXBwb3J0KSIgUFJJVkFURSBPTikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklO
RShFTkFCTEVfVEVMRVBIT05FX05VTUJFUl9ERVRFQ1RJT04gIlRvZ2dsZSB0ZWxlcGhvbmUgbnVt
YmVyIGRldGVjdGlvbiBzdXBwb3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RF
RklORShFTkFCTEVfVEVYVF9BVVRPU0laSU5HICJUb2dnbGUgYXV0b21hdGljIHRleHQgc2l6ZSBh
ZGp1c3RtZW50IHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQotICAgIFdFQktJVF9PUFRJT05fREVGSU5F
KEVOQUJMRV9USFJFQURFRF9DT01QT1NJVE9SICJUb2dnbGUgdGhyZWFkZWQgY29tcG9zaXRvciBz
dXBwb3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfVE9V
Q0hfRVZFTlRTICJUb2dnbGUgVG91Y2ggRXZlbnRzIHN1cHBvcnQiIFBSSVZBVEUgT0ZGKQogICAg
IFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9UT1VDSF9TTElERVIgIlRvZ2dsZSBUb3VjaCBT
bGlkZXIgc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5B
QkxFX1RPVUNIX0lDT05fTE9BRElORyAiVG9nZ2xlIFRvdWNoIEljb24gTG9hZGluZyBTdXBwb3J0
IiBQUklWQVRFIE9GRikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCA2MzZmM2JhMTRiYi4uZTEyNTU4NjcwMmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAxNy0wMi0y
MCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAg
UmVtb3ZlIEVOQUJMRV9USFJFQURFRF9DT01QT1NJVE9SIGJ1aWxkIG9wdGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4NjA2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHBl
cmwvRmVhdHVyZUxpc3QucG06CisKIDIwMTctMDItMjAgIEZsb3JpYW4gQnJ1aGluICA8Z2l0QHRo
ZS1jb21waWxlci5vcmc+CiAKICAgICAgICAgSGFuZGxlIEVJTlRSIGR1cmluZyB3ZWJraXRweSBz
ZXJ2ZXIgcHJvY2VzcyBzZWxlY3QoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
ZXJsL0ZlYXR1cmVMaXN0LnBtIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0
LnBtCmluZGV4IDcwZTcwMzRlNGMwLi42ZmJkODM4YTIzZiAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cGVybC9GZWF0dXJlTGlzdC5wbQpAQCAtMzY1LDkgKzM2NSw2IEBAIG15IEBmZWF0dXJlcyA9ICgK
ICAgICB7IG9wdGlvbiA9PiAic3lzdGVtLW1hbGxvYyIsIGRlc2MgPT4gIlRvZ2dsZSBzeXN0ZW0g
YWxsb2NhdG9yIGluc3RlYWQgb2YgYm1hbGxvYyIsCiAgICAgICBkZWZpbmUgPT4gIlVTRV9TWVNU
RU1fTUFMTE9DIiwgZGVmYXVsdCA9PiAwLCB2YWx1ZSA9PiBcJHN5c3RlbU1hbGxvY1N1cHBvcnQg
fSwKIAotICAgIHsgb3B0aW9uID0+ICJ0aHJlYWRlZC1jb21wb3NpdG9yIiwgZGVzYyA9PiAiVG9n
Z2xlIHRocmVhZGVkIGNvbXBvc2l0b3Igc3VwcG9ydCIsCi0gICAgICBkZWZpbmUgPT4gIkVOQUJM
RV9USFJFQURFRF9DT01QT1NJVE9SIiwgZGVmYXVsdCA9PiBpc0d0aygpLCB2YWx1ZSA9PiBcJHRo
cmVhZGVkQ29tcG9zaXRvclN1cHBvcnQgfSwKLQogICAgIHsgb3B0aW9uID0+ICJ0b3VjaC1ldmVu
dHMiLCBkZXNjID0+ICJUb2dnbGUgVG91Y2ggRXZlbnRzIHN1cHBvcnQiLAogICAgICAgZGVmaW5l
ID0+ICJFTkFCTEVfVE9VQ0hfRVZFTlRTIiwgZGVmYXVsdCA9PiAoaXNJT1NXZWJLaXQoKSB8fCBp
c0VmbCgpIHx8IGlzR3RrKCkpLCB2YWx1ZSA9PiBcJHRvdWNoRXZlbnRzU3VwcG9ydCB9LAogCg==
</data>
<flag name="review"
          id="323885"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
      

    </bug>

</bugzilla>