<?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>172773</bug_id>
          
          <creation_ts>2017-05-31 13:03:10 -0700</creation_ts>
          <short_desc>Have a single ImageDecoder header file for all ports</short_desc>
          <delta_ts>2020-05-30 19:28:48 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Images</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cgarcia</cc>
    
    <cc>clopez</cc>
    
    <cc>magomez</cc>
    
    <cc>mjs</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1314281</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-05-31 13:03:10 -0700</bug_when>
    <thetext>Currently we have three header files for the same class ImageDecoder:

Source/WebCore/platform/image-decoders/ImageDecoder.h
Source/WebCore/platform/graphics/cg/ImageDecoderCG.h
Source/WebCore/platform/graphics/win/ImageDecoderDirect2D.h

These files contains almost the same function prototypes with few differences which depend on how much the platform of the port supports image decoding. Having three header files for the same class has been annoying and error prone. Merging the three files into one file will make it easier to change a function prototype in this class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314288</commentid>
    <comment_count>1</comment_count>
      <attachid>311624</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-05-31 13:18:17 -0700</bug_when>
    <thetext>Created attachment 311624
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314315</commentid>
    <comment_count>2</comment_count>
      <attachid>311632</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-05-31 14:15:34 -0700</bug_when>
    <thetext>Created attachment 311632
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314344</commentid>
    <comment_count>3</comment_count>
      <attachid>311638</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-05-31 14:44:15 -0700</bug_when>
    <thetext>Created attachment 311638
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314365</commentid>
    <comment_count>4</comment_count>
      <attachid>311641</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-05-31 15:10:45 -0700</bug_when>
    <thetext>Created attachment 311641
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314374</commentid>
    <comment_count>5</comment_count>
      <attachid>311642</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-05-31 15:41:34 -0700</bug_when>
    <thetext>Created attachment 311642
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315178</commentid>
    <comment_count>6</comment_count>
      <attachid>311848</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-06-02 13:04:14 -0700</bug_when>
    <thetext>Created attachment 311848
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315228</commentid>
    <comment_count>7</comment_count>
      <attachid>311866</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-06-02 14:55:53 -0700</bug_when>
    <thetext>Created attachment 311866
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315245</commentid>
    <comment_count>8</comment_count>
      <attachid>311871</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-06-02 15:15:27 -0700</bug_when>
    <thetext>Created attachment 311871
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315257</commentid>
    <comment_count>9</comment_count>
      <attachid>311875</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-06-02 15:33:52 -0700</bug_when>
    <thetext>Created attachment 311875
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315261</commentid>
    <comment_count>10</comment_count>
      <attachid>311878</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2017-06-02 15:55:22 -0700</bug_when>
    <thetext>Created attachment 311878
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1319105</commentid>
    <comment_count>11</comment_count>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2017-06-14 06:03:58 -0700</bug_when>
    <thetext>Makes sense!! The patch looks good on the GTK/WPE side, and seems that it doesn&apos;t introduce any regression :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1657702</commentid>
    <comment_count>12</comment_count>
      <attachid>311878</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2020-05-30 19:28:48 -0700</bug_when>
    <thetext>Comment on attachment 311878
Patch

Seems like a good change. Unfortunately, this patch no longer applies cleanly.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311624</attachid>
            <date>2017-05-31 13:18:17 -0700</date>
            <delta_ts>2017-05-31 14:15:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172773-20170531131816.patch</filename>
            <type>text/plain</type>
            <size>42010</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3NTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDJmYmZmNzM4ZjZmNmI5
YzBhNzExMjcyYzlmODFmNDc0NGYxNzhhYy4uMGRlMWFhOWE2MjkxZmZlNDlmMDJlYWFhZDRkYjBm
NGIwZjk2NjYzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE3LTA1LTMxICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgSGF2ZSBh
IHNpbmdsZSBJbWFnZURlY29kZXIgaGVhZGVyIGZpbGUgZm9yIGFsbCBwb3J0cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyNzczCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNv
ZGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjp+SW1hZ2VEZWNv
ZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6aXNTaXplQXZhaWxhYmxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6cHJlbXVsdGlwbHlBbHBoYSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnNldFByZW11bHRpcGx5QWxwaGEpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjppZ25vcmVzR2FtbWFBbmRDb2xvclByb2ZpbGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzZXRJZ25vcmVHYW1tYUFuZENvbG9yUHJv
ZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzY2FsZWRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRGVjb2Rlcjo6ZmFpbGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZy
YW1lQ2FjaGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVR5cGVzLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
Ojppc0FsbERhdGFSZWNlaXZlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VEZWNvZGVyQ0cuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
OjpJbWFnZURlY29kZXIpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRGVjb2Rlcjo6aXNBbGxEYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oOiBSZW1vdmVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXI6OkltYWdlRGVjb2Rlcik6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZURlY29kZXI6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcyk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VEZWNvZGVyOjppc0FsbERhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURl
Y29kZXI6OmVuY29kZWREYXRhU3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rl
cjo6c2V0RmFpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6ZmlsZW5hbWVF
eHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzZXRTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6ZnJhbWVDb3VudCk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZURlY29kZXI6OnJlcGV0aXRpb25Db3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZURlY29kZXI6OmhvdFNwb3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpm
cmFtZU9yaWVudGF0aW9uQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6
OmZyYW1lU2l6ZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFt
ZUFsbG93U3Vic2FtcGxpbmdBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rl
cjo6cHJlcGFyZVNjYWxlRGF0YUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaDogUmVtb3ZlZC4KKwogMjAxNy0wNS0zMCAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmVydCBhY2NpZGVudGFsbHkgY2hl
Y2tlZCBpbiBjaGFuZ2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggODZhMjZhODRhZGZmYTBkZmU3ZjYzNzk0MDkyNjk2ZDM4Y2M0
NzE5ZS4uYjBkN2EzNmU1ZmI1YTdiZmFmNGU5MmZjN2ZjZWRhOWUxMjUwZjBmOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjUw
MCwxMCArMjUwMCwxMCBAQAogCQk1M0VGNzY2QzE2NTMxOTk0MDA0Q0JFNDkgLyogU2V0dGluZ3NN
YWNyb3MuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUzRUY3NjZBMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5o
ICovOyB9OwogCQk1NTBBMEJDOTA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTBBMEJDNzA4
NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgKi87IH07CiAJCTU1MEEwQkNBMDg1
RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlm
aWVkTmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTU1MzRFRTkyMUVERTU2OEQwMDgxOEMwNCAvKiBJbWFnZURlY29kZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MzRFRTkxMUVERTU2ODkwMDgx
OEMwNCAvKiBJbWFnZURlY29kZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1NTUwQ0I0MjFFOTU1RTNDMDAxMTFBQTAgLyogSW1hZ2VUeXBlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU1MENCNDEx
RTk1NUUzQzAwMTExQUEwIC8qIEltYWdlVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NTUxMzAwMTFFN0NDQ0NCMDBBNjlFMzggLyogRGVj
b2RpbmdPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NTUxMzAwMDFFN0NDQ0NBMDBBNjlFMzggLyogRGVjb2RpbmdPcHRpb25zLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTU1Qjg3RUMxQ0FB
RjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1NUI4N0VBMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFn
ZURlY29kZXJDRy5jcHAgKi87IH07Ci0JCTU1NUI4N0VEMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFn
ZURlY29kZXJDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTU1Qjg3RUIxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmggKi87IH07CiAJ
CTU1NzZBNTY0MUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1NzZBNTYyMUQ4OEE3MDgwMENDQzA0
QyAvKiBJbWFnZUZyYW1lLmNwcCAqLzsgfTsKIAkJNTU3NkE1NjUxRDg4QTcwODAwQ0NDMDRDIC8q
IEltYWdlRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU1NzZBNTYzMUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTU5N0Y4MjYxRDkxQzMxMzAw
NjZCQzIxIC8qIEltYWdlRnJhbWVDYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1NTk3RjgyNDFEOTFDMzEzMDA2NkJDMjEgLyogSW1hZ2VGcmFt
ZUNhY2hlLmNwcCAqLzsgfTsKQEAgLTEwMjcxLDEwICsxMDI3MSwxMCBAQAogCQk1M0VGNzY2QTE2
NTMwQTYxMDA0Q0JFNDkgLyogU2V0dGluZ3NNYWNyb3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2V0dGluZ3NNYWNyb3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTUwQTBCQzcwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUXVhbGlmaWVk
TmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMg
PSAwOyB9OwogCQk1NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0
aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWFsaWZp
ZWROYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMg
PSAwOyB9OworCQk1NTM0RUU5MTFFREU1Njg5MDA4MThDMDQgLyogSW1hZ2VEZWNvZGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEltYWdlRGVjb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1NTUwQ0I0MTFFOTU1RTNDMDAxMTFBQTAgLyogSW1hZ2VUeXBlcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTU1NTEzMDAwMUU3Q0NDQ0EwMEE2OUUzOCAvKiBEZWNvZGluZ09wdGlvbnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVjb2RpbmdPcHRpb25zLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1NUI4N0VBMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURl
Y29kZXJDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZURl
Y29kZXJDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU1NUI4N0VCMUNBQUYw
QUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbWFnZURlY29kZXJDRy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
NTc2QTU2MjFEODhBNzA4MDBDQ0MwNEMgLyogSW1hZ2VGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTU3NkE1NjMxRDg4QTcwODAwQ0NDMDRDIC8qIEltYWdlRnJhbWUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VGcmFtZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1NTk3RjgyNDFEOTFDMzEzMDA2NkJDMjEgLyogSW1hZ2VGcmFtZUNh
Y2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlRnJhbWVD
YWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzA1NCw3ICsyMzA1NCw2
IEBACiAJCQkJMjJCRDlGODAxMzUzNjRGRTAwOUJEMTAyIC8qIEltYWdlQnVmZmVyRGF0YUNHLmgg
Ki8sCiAJCQkJQjI3NTM1MzAwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlQ0cuY3BwICovLAogCQkJ
CTU1NUI4N0VBMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5jcHAgKi8sCi0JCQkJ
NTU1Qjg3RUIxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmggKi8sCiAJCQkJNEIz
NDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0cuaCAqLywKIAkJCQk0QjM0ODA5
MTBFRUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VDR01hYy5tbSAqLywKIAkJCQlCMjc1MzUz
MjBCMDUzODE0MDAyQ0U2NEYgLyogSW50UG9pbnRDRy5jcHAgKi8sCkBAIC0yMzIyOCw2ICsyMzIy
Nyw3IEBACiAJCQkJNDNEMjU5NzYxM0M4MTZGNDAwNjA4NTU5IC8qIEltYWdlQnVmZmVyLmNwcCAq
LywKIAkJCQlCMkExMEI5MTBCMzgxOEJEMDAwOTlBQTQgLyogSW1hZ2VCdWZmZXIuaCAqLywKIAkJ
CQkyMkJEOUY3RDEzNTM2MjVDMDA5QkQxMDIgLyogSW1hZ2VCdWZmZXJEYXRhLmggKi8sCisJCQkJ
NTUzNEVFOTExRURFNTY4OTAwODE4QzA0IC8qIEltYWdlRGVjb2Rlci5oICovLAogCQkJCTU1NzZB
NTYyMUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmNwcCAqLywKIAkJCQk1NTc2QTU2MzFE
ODhBNzA4MDBDQ0MwNEMgLyogSW1hZ2VGcmFtZS5oICovLAogCQkJCTU1OTdGODI0MUQ5MUMzMTMw
MDY2QkMyMSAvKiBJbWFnZUZyYW1lQ2FjaGUuY3BwICovLApAQCAtMjc2NzEsNyArMjc2NzEsNiBA
QAogCQkJCTUxMDE5MkQ2MThCNkI5QjcwMDdGQzdBMSAvKiBJbWFnZUNvbnRyb2xzUm9vdEVsZW1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDE5MkQyMThCNkI5QUIwMDdGQzdBMSAvKiBJbWFn
ZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Nzk3OTFBMEQ2
QjlEMEMwMDM4NTFCOSAvKiBJbWFnZURhdGEuaCBpbiBIZWFkZXJzICovLAotCQkJCTU1NUI4N0VE
MUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTcyMDVBQjYxMjM5MjkxMDAwQjE3MzgwIC8qIEltYWdlRG9jdW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTU1NzZBNTY1MUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1NTk3RjgyNzFEOTFDMzEzMDA2NkJDMjEgLyogSW1hZ2VGcmFtZUNhY2hlLmgg
aW4gSGVhZGVycyAqLywKQEAgLTI4MjMwLDYgKzI4MjI5LDcgQEAKIAkJCQkzMTZEQ0I0RTFFNzkx
MEE2MDAxQjVGODcgLyogSlNSVENJY2VHYXRoZXJpbmdTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMDczNzk0RUMxOUVFMzQxRTAwRTVBMDQ1IC8qIEpTUlRDSWNlU2VydmVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkzMTZEQ0IyMDFFNzhDQTU1MDAxQjVGODcgLyogSlNSVENPZmZlckFuc3dlck9w
dGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1MzRFRTkyMUVERTU2OEQwMDgxOEMwNCAvKiBJ
bWFnZURlY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OTY5REJBMTdEMTQxNTEwMDdGRjg0
MiAvKiBKU1JUQ1BlZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzk2OURCODE3
RDE0MTUxMDA3RkY4NDIgLyogSlNSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1RTJDNDM3NDFCQ0YwRDc1MDAwMUUyQkUgLyogSlNSVENSdHBQYXJhbWV0ZXJz
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VEZWNvZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjUzOTQ3MzQwMzNjYjRmNDlkMDI1MDFiNWI0Mjlj
MjhjMWJmYTg0NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlRGVjb2Rlci5oCkBAIC0wLDAgKzEsMTM1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2LCAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJEZWNvZGluZ09wdGlvbnMuaCIKKyNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCisj
aW5jbHVkZSAiSW1hZ2VUeXBlcy5oIgorI2luY2x1ZGUgIkludFBvaW50LmgiCisjaW5jbHVkZSAi
SW50U2l6ZS5oIgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCisjaW5jbHVkZSA8d3RmL09wdGlv
bmFsLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CisKKyNpZiBVU0Uo
Q0cpCit0eXBlZGVmIHN0cnVjdCBDR0ltYWdlU291cmNlKiBDR0ltYWdlU291cmNlUmVmOworI2Vs
aWYgVVNFKERJUkVDVDJEKQoraW50ZXJmYWNlIElEMkQxUmVuZGVyVGFyZ2V0OworaW50ZXJmYWNl
IElXSUNCaXRtYXBEZWNvZGVyOworaW50ZXJmYWNlIElXSUNJbWFnaW5nRmFjdG9yeTsKKyNlbmRp
ZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKKworY2xhc3Mg
SW1hZ2VEZWNvZGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEltYWdlRGVjb2Rlcj4g
eworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlRGVjb2Rlcik7IFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworcHVibGljOgorICAgIEltYWdlRGVjb2RlcihTaGFyZWRCdWZmZXImIGRhdGEs
IEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgdmlydHVhbCB+
SW1hZ2VEZWNvZGVyKCkgeyB9CisKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlRGVjb2Rlcj4gY3Jl
YXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uKTsKKyAgICBzdGF0aWMgc2l6ZV90IGJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVy
dGllcygpOworCisgICAgRW5jb2RlZERhdGFTdGF0dXMgZW5jb2RlZERhdGFTdGF0dXMoKSBjb25z
dDsKKyAgICBib29sIGlzU2l6ZUF2YWlsYWJsZSgpIHsgcmV0dXJuIGVuY29kZWREYXRhU3RhdHVz
KCkgPj0gRW5jb2RlZERhdGFTdGF0dXM6OlNpemVBdmFpbGFibGU7IH0KKyAgICB2aXJ0dWFsIHNp
emVfdCBmcmFtZUNvdW50KCkgY29uc3Q7CisgICAgdmlydHVhbCBSZXBldGl0aW9uQ291bnQgcmVw
ZXRpdGlvbkNvdW50KCkgY29uc3Q7CisgICAgdmlydHVhbCBTdHJpbmcgZmlsZW5hbWVFeHRlbnNp
b24oKSBjb25zdDsKKyAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3Qo
KSBjb25zdDsKKworICAgIEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBs
aW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdDsKKyAgICBib29sIGZy
YW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90KSBjb25zdDsKKyAgICBJbWFnZU9yaWVudGF0aW9u
IGZyYW1lT3JpZW50YXRpb25BdEluZGV4KHNpemVfdCkgY29uc3Q7CisKKyAgICBmbG9hdCBmcmFt
ZUR1cmF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0OworICAgIGJvb2wgZnJhbWVIYXNBbHBoYUF0
SW5kZXgoc2l6ZV90KSBjb25zdDsKKyAgICBib29sIGZyYW1lQWxsb3dTdWJzYW1wbGluZ0F0SW5k
ZXgoc2l6ZV90KSBjb25zdDsKKyAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3Qs
IFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdDsKKwor
ICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2Ft
cGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0
aW9ucyYgPSBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSBjb25zdDsKKworICAgIHZpcnR1YWwg
dm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBi
b29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyRnJh
bWVCdWZmZXJDYWNoZShzaXplX3QpIHsgfQorCisjaWYgVVNFKENHKQorICAgIFN0cmluZyB1dGko
KSBjb25zdDsKKyNlbGlmIFVTRShESVJFQ1QyRCkKKyAgICB2b2lkIHNldFRhcmdldENvbnRleHQo
SUQyRDFSZW5kZXJUYXJnZXQqKTsKKyAgICBzdGF0aWMgSVdJQ0ltYWdpbmdGYWN0b3J5KiBzeXN0
ZW1JbWFnaW5nRmFjdG9yeSgpOworI2Vsc2UKKyAgICBib29sIHByZW11bHRpcGx5QWxwaGEoKSBj
b25zdCB7IHJldHVybiBtX3ByZW11bHRpcGx5QWxwaGE7IH0KKyAgICB2b2lkIHNldFByZW11bHRp
cGx5QWxwaGEoYm9vbCBwcmVtdWx0aXBseUFscGhhKSB7ICBtX3ByZW11bHRpcGx5QWxwaGEgPSBw
cmVtdWx0aXBseUFscGhhOyB9CisgICAgYm9vbCBpZ25vcmVzR2FtbWFBbmRDb2xvclByb2ZpbGUo
KSBjb25zdCB7IHJldHVybiBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlOyB9CisgICAgdm9p
ZCBzZXRJZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZShib29sIGlnbm9yZUdhbW1hQW5kQ29sb3JQ
cm9maWxlKSB7IG1faWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUgPSBpZ25vcmVHYW1tYUFuZENv
bG9yUHJvZmlsZTsgfQorCisgICAgdmlydHVhbCBib29sIHNldFNpemUoY29uc3QgSW50U2l6ZSYp
OworICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkgeyByZXR1cm4gaXNTaXplQXZhaWxhYmxlKCkg
PyBtX3NpemUgOiBJbnRTaXplKCk7IH0KKyAgICBJbnRTaXplIHNjYWxlZFNpemUoKSB7IHJldHVy
biBtX3NjYWxlZCA/IEludFNpemUobV9zY2FsZWRDb2x1bW5zLnNpemUoKSwgbV9zY2FsZWRSb3dz
LnNpemUoKSkgOiBzaXplKCk7IH0KKworICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyYW1lQnVmZmVy
Q2FjaGUoc2l6ZV90KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdHJ5RGVjb2RlU2l6ZShib29sKSA9
IDA7CisgICAgYm9vbCBmYWlsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuY29kZWREYXRhU3RhdHVz
ID09IEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcjsgfQorICAgIHZpcnR1YWwgYm9vbCBzZXRGYWls
ZWQoKTsKKworICAgIHZpcnR1YWwgSW1hZ2VGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVf
dCkgPSAwOworCisgICAgdm9pZCBwcmVwYXJlU2NhbGVEYXRhSWZOZWNlc3NhcnkoKTsKKyAgICBp
bnQgdXBwZXJCb3VuZFNjYWxlZFgoaW50IG9yaWdYLCBpbnQgc2VhcmNoU3RhcnQgPSAwKTsKKyAg
ICBpbnQgbG93ZXJCb3VuZFNjYWxlZFgoaW50IG9yaWdYLCBpbnQgc2VhcmNoU3RhcnQgPSAwKTsK
KyAgICBpbnQgdXBwZXJCb3VuZFNjYWxlZFkoaW50IG9yaWdZLCBpbnQgc2VhcmNoU3RhcnQgPSAw
KTsKKyAgICBpbnQgbG93ZXJCb3VuZFNjYWxlZFkoaW50IG9yaWdZLCBpbnQgc2VhcmNoU3RhcnQg
PSAwKTsKKyAgICBpbnQgc2NhbGVkWShpbnQgb3JpZ1ksIGludCBzZWFyY2hTdGFydCA9IDApOwor
I2VuZGlmCisKK3Byb3RlY3RlZDoKKyNpZiBVU0UoQ0cpCisgICAgUmV0YWluUHRyPENHSW1hZ2VT
b3VyY2VSZWY+IG1fbmF0aXZlRGVjb2RlcjsKKyAgICBib29sIG1faXNBbGxEYXRhUmVjZWl2ZWQg
eyBmYWxzZSB9OworI2VsaWYgVVNFKERJUkVDVDJEKQorICAgIENPTVB0cjxJV0lDQml0bWFwRGVj
b2Rlcj4gbV9uYXRpdmVEZWNvZGVyOworICAgIENPTVB0cjxJRDJEMVJlbmRlclRhcmdldD4gbV9y
ZW5kZXJUYXJnZXQ7CisjZWxzZQorICAgIGJvb2wgbV9wcmVtdWx0aXBseUFscGhhOworICAgIGJv
b2wgbV9pZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZTsKKworICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG1fZGF0YTsgLy8gVGhlIGVuY29kZWQgZGF0YS4KKyAgICBWZWN0b3I8SW1hZ2VGcmFtZSwg
MT4gbV9mcmFtZUJ1ZmZlckNhY2hlOworICAgIEVuY29kZWREYXRhU3RhdHVzIG1fZW5jb2RlZERh
dGFTdGF0dXMgeyBFbmNvZGVkRGF0YVN0YXR1czo6VHlwZUF2YWlsYWJsZSB9OworICAgIGJvb2wg
bV9kZWNvZGluZ1NpemVGcm9tU2V0RGF0YSB7IGZhbHNlIH07CisKKyAgICBJbnRTaXplIG1fc2l6
ZTsKKyAgICBJbWFnZU9yaWVudGF0aW9uIG1fb3JpZW50YXRpb247CisKKyAgICBib29sIG1fc2Nh
bGVkIHsgZmFsc2UgfTsKKyAgICBWZWN0b3I8aW50PiBtX3NjYWxlZENvbHVtbnM7CisgICAgVmVj
dG9yPGludD4gbV9zY2FsZWRSb3dzOworI2VuZGlmCit9OworCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmNwcAppbmRleCBhNzQ1
ZWE4MDE2N2Y2M2MyMjJjNzUyMjZjYjljMTI5NTJjYzJlNzIyLi45OTMwZDFiYTA4OGIxNmEzNDZh
MTY2MDg4MzBjNWY1Y2E4MDJmMTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5jcHAKQEAgLTI3LDE4ICsyNywxNSBAQAogI2lu
Y2x1ZGUgIkltYWdlRnJhbWVDYWNoZS5oIgogCiAjaW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNsdWRl
ICJJbWFnZURlY29kZXIuaCIKICNpbmNsdWRlICJJbWFnZU9ic2VydmVyLmgiCiAjaW5jbHVkZSAi
TG9nZ2luZy5oIgogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9TeXN0ZW1UcmFjaW5n
Lmg+CiAKLSNpZiBVU0UoQ0cpCi0jaW5jbHVkZSAiSW1hZ2VEZWNvZGVyQ0cuaCIKLSNlbGlmIFVT
RShESVJFQ1QyRCkKKyNpZiAhVVNFKENHKSAmJiBVU0UoRElSRUNUMkQpCiAjaW5jbHVkZSAiSW1h
Z2VEZWNvZGVyRGlyZWN0MkQuaCIKICNpbmNsdWRlIDxXaW5Db2RlYy5oPgotI2Vsc2UKLSNpbmNs
dWRlICJJbWFnZURlY29kZXIuaCIKICNlbmRpZgogCiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0
aG1ldGljLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNv
dXJjZS5jcHAKaW5kZXggM2Q0ODNmYjkzOTcyMmMyY2FmNzZmYjY3MTVkMGJmYWNhMzlkYjRjMS4u
MWQ0NjY3ODA2NzQ0MWQ3N2EyMjkwMmIyZjc2NWM2OTkwNTU5NjlmMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcApAQCAtMzAsMTkgKzMw
LDEyIEBACiAjaW5jbHVkZSAiSW1hZ2VTb3VyY2UuaCIKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29u
dGV4dC5oIgorI2luY2x1ZGUgIkltYWdlRGVjb2Rlci5oIgorI2luY2x1ZGUgIkltYWdlT3JpZW50
YXRpb24uaCIKIAotI2lmIFVTRShDRykKLSNpbmNsdWRlICJJbWFnZURlY29kZXJDRy5oIgotI2lm
IFBMQVRGT1JNKFdJTikKKyNpZiBVU0UoQ0cpICYmIFBMQVRGT1JNKFdJTikKICNpbmNsdWRlIDxX
ZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmg+CiAjZW5kaWYKLSNl
bGlmIFVTRShESVJFQ1QyRCkKLSNpbmNsdWRlICJJbWFnZURlY29kZXJEaXJlY3QyRC5oIgotI2Vs
c2UKLSNpbmNsdWRlICJJbWFnZURlY29kZXIuaCIKLSNlbmRpZgotCi0jaW5jbHVkZSAiSW1hZ2VP
cmllbnRhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZVR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVR5cGVz
LmgKaW5kZXggZGI2MTIxMmUyZWY4OWY1NWFkNTNmNjY2M2Q4MzYwNGIwNjU4MDZiYS4uNzUxMTcz
YjFhNmMwNmNlNGQyMDcyMDJiMTAwYmMzYjY4YTY4NjQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlVHlwZXMuaApAQCAtMjUsMTAgKzI1LDYgQEAKIAogI3By
YWdtYSBvbmNlCiAKLSNpZiBVU0UoQ0cpCi10eXBlZGVmIHN0cnVjdCBDR0ltYWdlU291cmNlKiBD
R0ltYWdlU291cmNlUmVmOwotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gVGhl
cmUgYXJlIGZvdXIgc3Vic2FtcGxpbmcgbGV2ZWxzOiAwID0gMXgsIDEgPSAwLjV4LCAyID0gMC4y
NXgsIDMgPSAwLjEyNXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggYzdlMTE0ZWYxMjdlZWJiODA5ZmI0ZjUy
NjIxNDM0M2UzODI1N2EyYy4uODcwZGU3OTc5NjU2YTExNDcxZWMwMmFkM2U2Mzc1ZTEyOTBiZjJh
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VE
ZWNvZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0lt
YWdlRGVjb2RlckNHLmNwcApAQCAtMjQsNyArMjQsNyBAQAogICovCiAKICNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJJbWFnZURlY29kZXJDRy5oIgorI2luY2x1ZGUgIkltYWdlRGVjb2Rl
ci5oIgogCiAjaWYgVVNFKENHKQogCkBAIC0xNjMsNiArMTYzLDExIEBAIEltYWdlRGVjb2Rlcjo6
SW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29s
b3JQcm9maWxlCiAgICAgICAgIG1fbmF0aXZlRGVjb2RlciA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJj
ZUNyZWF0ZUluY3JlbWVudGFsKG51bGxwdHIpKTsKIH0KIAorUmVmUHRyPEltYWdlRGVjb2Rlcj4g
SW1hZ2VEZWNvZGVyOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBo
YU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbWFnZURlY29kZXIoZGF0YSwgYWxw
aGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7Cit9CisKIHNpemVfdCBJbWFn
ZURlY29kZXI6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpCiB7CiAgICAgLy8g
TWVhc3VyZWQgYnkgdHJhY2luZyBtYWxsb2MvY2FsbG9jIGNhbGxzIG9uIE1hYyBPUyAxMC42LjYs
IHg4Nl82NC4KQEAgLTE3Myw3ICsxNzgsNyBAQCBzaXplX3QgSW1hZ2VEZWNvZGVyOjpieXRlc0Rl
Y29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKQogICAgIC8vIGJlaGF2aW9yIGlzIHVuY2hhbmdl
ZC4KICAgICByZXR1cm4gMTMwODg7CiB9Ci0gICAgCisKIFN0cmluZyBJbWFnZURlY29kZXI6OnV0
aSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIENHSW1hZ2VTb3VyY2VHZXRUeXBlKG1fbmF0aXZlRGVj
b2Rlci5nZXQoKSk7CkBAIC0xODQsNiArMTg5LDExIEBAIFN0cmluZyBJbWFnZURlY29kZXI6OmZp
bGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QKICAgICByZXR1cm4gV2ViQ29yZTo6cHJlZmVycmVkRXh0
ZW5zaW9uRm9ySW1hZ2VTb3VyY2VUeXBlKHV0aSgpKTsKIH0KIAorYm9vbCBJbWFnZURlY29kZXI6
OmlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pc0FsbERhdGFSZWNl
aXZlZDsKK30KKwogRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VEZWNvZGVyOjplbmNvZGVkRGF0YVN0
YXR1cygpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChDR0ltYWdlU291cmNlR2V0U3RhdHVzKG1fbmF0
aXZlRGVjb2Rlci5nZXQoKSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAyYzI4NGU3MWZmNDZjYWM1NzM0NTQyYmEwY2JmNmI4NWJmNWFlMDQyLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpbmNsdWRlICJEZWNvZGluZ09wdGlvbnMuaCIKLSNpbmNsdWRlICJJbWFnZU9y
aWVudGF0aW9uLmgiCi0jaW5jbHVkZSAiSW1hZ2VUeXBlcy5oIgotI2luY2x1ZGUgIkludFBvaW50
LmgiCi0jaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCi0jaW5j
bHVkZSA8d3RmL09wdGlvbmFsLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVk
Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKLSAg
ICAKLWNsYXNzIEltYWdlRGVjb2RlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbWFn
ZURlY29kZXI+IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBJ
bWFnZURlY29kZXIoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pOwotCi0gICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXI+IGNyZWF0ZShT
aGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKLSAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGVjb2RlcihkYXRhLCBhbHBoYU9wdGlvbiwgZ2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKLSAgICB9Ci0gICAgCi0gICAgc3RhdGljIHNpemVf
dCBieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKTsKLQotICAgIEVuY29kZWREYXRh
U3RhdHVzIGVuY29kZWREYXRhU3RhdHVzKCkgY29uc3Q7Ci0gICAgYm9vbCBpc1NpemVBdmFpbGFi
bGUoKSB7IHJldHVybiBlbmNvZGVkRGF0YVN0YXR1cygpID49IEVuY29kZWREYXRhU3RhdHVzOjpT
aXplQXZhaWxhYmxlOyB9Ci0gICAgc2l6ZV90IGZyYW1lQ291bnQoKSBjb25zdDsKLSAgICBSZXBl
dGl0aW9uQ291bnQgcmVwZXRpdGlvbkNvdW50KCkgY29uc3Q7Ci0gICAgU3RyaW5nIHV0aSgpIGNv
bnN0OwotICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0OwotICAgIHN0ZDo6b3B0
aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdDsKLQotICAgIEludFNpemUgZnJhbWVTaXpl
QXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZh
dWx0KSBjb25zdDsKLSAgICBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90KSBjb25z
dDsKLSAgICBJbWFnZU9yaWVudGF0aW9uIGZyYW1lT3JpZW50YXRpb25BdEluZGV4KHNpemVfdCkg
Y29uc3Q7Ci0gICAgCi0gICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90KSBjb25z
dDsKLSAgICBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCkgY29uc3Q7Ci0gICAgYm9v
bCBmcmFtZUFsbG93U3Vic2FtcGxpbmdBdEluZGV4KHNpemVfdCkgY29uc3Q7Ci0gICAgdW5zaWdu
ZWQgZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxp
bmdMZXZlbDo6RGVmYXVsdCkgY29uc3Q7Ci0gICAgCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRl
RnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdM
ZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nTW9kZTo6U3lu
Y2hyb25vdXMpIGNvbnN0OwotICAgIAotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBi
b29sIGFsbERhdGFSZWNlaXZlZCk7Ci0gICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0KLSAgICB2b2lkIGNsZWFyRnJhbWVCdWZm
ZXJDYWNoZShzaXplX3QpIHsgfQotICAgIAotcHJvdGVjdGVkOgotICAgIGJvb2wgbV9pc0FsbERh
dGFSZWNlaXZlZCB7IGZhbHNlIH07Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VTb3VyY2VSZWY+IG1f
bmF0aXZlRGVjb2RlcjsKLX07Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCmluZGV4IDZh
YmU3ZTNlYWU1NzYwMjJlZDY0YWQ0NTkzNWE2NTdmOWJjOTgxMjAuLmQxZWFmMTUxODA4MjA3N2Fl
ZjQ5YWU1OTZhZWIyZmNiNmE3Y2I1YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcApAQCAt
MjQsNyArMjQsNyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJbWFn
ZURlY29kZXJEaXJlY3QyRC5oIgorI2luY2x1ZGUgIkltYWdlRGVjb2RlciIKIAogI2lmIFVTRShE
SVJFQ1QyRCkKIApAQCAtNDEsMTAgKzQxLDE1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
SW1hZ2VEZWNvZGVyOjpJbWFnZURlY29kZXIoKQorSW1hZ2VEZWNvZGVyOjpJbWFnZURlY29kZXIo
U2hhcmVkQnVmZmVyJiwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQog
ewogfQogCitSZWZQdHI8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBB
bHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbWFnZURl
Y29kZXIoZGF0YSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7Cit9
CisKIElXSUNJbWFnaW5nRmFjdG9yeSogSW1hZ2VEZWNvZGVyOjpzeXN0ZW1JbWFnaW5nRmFjdG9y
eSgpCiB7CiAgICAgc3RhdGljIElXSUNJbWFnaW5nRmFjdG9yeSogd2ljSW1hZ2luZ0ZhY3Rvcnkg
PSBudWxscHRyOwpAQCAtNzksNiArODQsMTIgQEAgRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VEZWNv
ZGVyOjplbmNvZGVkRGF0YVN0YXR1cygpIGNvbnN0CiAgICAgcmV0dXJuIEVuY29kZWREYXRhU3Rh
dHVzOjpVbmtub3duOwogfQogCitib29sIEltYWdlRGVjb2Rlcjo6aXNBbGxEYXRhUmVjZWl2ZWQo
KSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
CiBJbnRTaXplIEltYWdlRGVjb2Rlcjo6c2l6ZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX25hdGl2
ZURlY29kZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwYmQ0ZDZmNjdlNmJhMzI1ODhiNGE3ZDgxYjE4ZTY3NDk4ZDZiMDk4Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCisrKyAvZGV2L251bGwKQEAg
LTEsODggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiQ09NUHRyLmgiCi0jaW5jbHVkZSAiSW1hZ2VT
b3VyY2UuaCIKLSNpbmNsdWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+
Ci0KLWludGVyZmFjZSBJRDJEMVJlbmRlclRhcmdldDsKLWludGVyZmFjZSBJV0lDQml0bWFwRGVj
b2RlcjsKLWludGVyZmFjZSBJV0lDSW1hZ2luZ0ZhY3Rvcnk7Ci0KLW5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotY2xhc3MgSW1hZ2VEZWNvZGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPElt
YWdlRGVjb2Rlcj4gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAg
IEltYWdlRGVjb2RlcigpOwotICAgIAotICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyPiBjcmVh
dGUoU2hhcmVkQnVmZmVyJiwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNvZGVyKCkpOwot
ICAgIH0KLSAgICAKLSAgICBzdGF0aWMgc2l6ZV90IGJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJv
cGVydGllcygpOwotICAgIAotICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0Owot
ICAgIEVuY29kZWREYXRhU3RhdHVzIGVuY29kZWREYXRhU3RhdHVzKCkgY29uc3Q7Ci0gICAgYm9v
bCBpc1NpemVBdmFpbGFibGUoKSBjb25zdDsKLSAgICAKLSAgICAvLyBBbHdheXMgb3JpZ2luYWwg
c2l6ZSwgd2l0aG91dCBzdWJzYW1wbGluZy4KLSAgICBJbnRTaXplIHNpemUoKSBjb25zdDsKLSAg
ICBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0OwotCi0gICAgUmVwZXRpdGlvbkNvdW50IHJlcGV0
aXRpb25Db3VudCgpIGNvbnN0OwotICAgIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3Qo
KSBjb25zdDsKLSAgICAKLSAgICBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJz
YW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCkgY29uc3Q7Ci0gICAgYm9v
bCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCkgY29uc3Q7Ci0gICAgSW1hZ2VPcmllbnRh
dGlvbiBmcmFtZU9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0OwotICAgIAotICAgIGZs
b2F0IGZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCkgY29uc3Q7Ci0gICAgYm9vbCBmcmFtZUhh
c0FscGhhQXRJbmRleChzaXplX3QpIGNvbnN0OwotICAgIGJvb2wgZnJhbWVBbGxvd1N1YnNhbXBs
aW5nQXRJbmRleChzaXplX3QpIGNvbnN0OwotICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNBdEluZGV4
KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpIGNv
bnN0OwotICAgIAotICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNp
emVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0
IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSBjb25zdDsKLSAg
ICAKLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
OwotICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQWxsRGF0
YVJlY2VpdmVkOyB9Ci0gICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSB7IH0K
LQotICAgIHZvaWQgc2V0VGFyZ2V0Q29udGV4dChJRDJEMVJlbmRlclRhcmdldCopOwotCi0gICAg
c3RhdGljIElXSUNJbWFnaW5nRmFjdG9yeSogc3lzdGVtSW1hZ2luZ0ZhY3RvcnkoKTsKLQotcHJv
dGVjdGVkOgotICAgIGJvb2wgbV9pc0FsbERhdGFSZWNlaXZlZCB7IGZhbHNlIH07Ci0gICAgbXV0
YWJsZSBJbnRTaXplIG1fc2l6ZTsKLSAgICBDT01QdHI8SVdJQ0JpdG1hcERlY29kZXI+IG1fbmF0
aXZlRGVjb2RlcjsKLSAgICBDT01QdHI8SUQyRDFSZW5kZXJUYXJnZXQ+IG1fcmVuZGVyVGFyZ2V0
OwotfTsKLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggNGJhNGRiMmE2MjFjZmMyZjU4YTc2NGJlNGRh
ZmUyMzUxYzViNzU4ZC4uOTY3MmM3Zjc4OWI4ZmNkNDgyZDgzMWQ5ZWY5ZWFmMDk5NmQ0NzZiZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VE
ZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9J
bWFnZURlY29kZXIuY3BwCkBAIC05OCw2ICs5OCwxMiBAQCBib29sIG1hdGNoZXNDVVJTaWduYXR1
cmUoY2hhciogY29udGVudHMpCiAKIH0KIAorSW1hZ2VEZWNvZGVyOjpJbWFnZURlY29kZXIoU2hh
cmVkQnVmZmVyJiwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAgIDogbV9wcmVtdWx0aXBseUFs
cGhhKGFscGhhT3B0aW9uID09IEFscGhhT3B0aW9uOjpQcmVtdWx0aXBsaWVkKQorICAgICwgbV9p
Z25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZShnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiA9PSBH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbjo6SWdub3JlZCkKK3sKK30KKwogUmVmUHRyPEltYWdl
RGVjb2Rlcj4gSW1hZ2VEZWNvZGVyOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9w
dGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pCiB7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGxlbmd0aE9mTG9u
Z2VzdFNpZ25hdHVyZSA9IDE0OyAvLyBUbyB3aXQ6ICJSSUZGPz8/P1dFQlBWUCIKQEAgLTE3MCw2
ICsxNzYsOTAgQEAgdGVtcGxhdGUgPE1hdGNoVHlwZSB0eXBlPiBpbnQgZ2V0U2NhbGVkVmFsdWUo
Y29uc3QgVmVjdG9yPGludD4mIHNjYWxlZFZhbHVlcywgaW4KIAogfQogCitzaXplX3QgSW1hZ2VE
ZWNvZGVyOjpieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKQoreworICAgIHJldHVy
biAwOworfQorCit2b2lkIEltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKQoreworICAgIGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09
IEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9kYXRh
ID0gJmRhdGE7CisgICAgaWYgKG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0
dXM6OlR5cGVBdmFpbGFibGUpIHsKKyAgICAgICAgbV9kZWNvZGluZ1NpemVGcm9tU2V0RGF0YSA9
IHRydWU7CisgICAgICAgIHRyeURlY29kZVNpemUoYWxsRGF0YVJlY2VpdmVkKTsKKyAgICAgICAg
bV9kZWNvZGluZ1NpemVGcm9tU2V0RGF0YSA9IGZhbHNlOworICAgIH0KKworICAgIGlmIChtX2Vu
Y29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcikKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKGFsbERhdGFSZWNlaXZlZCkgeworICAgICAgICBBU1NFUlQobV9lbmNv
ZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6U2l6ZUF2YWlsYWJsZSk7CisgICAg
ICAgIG1fZW5jb2RlZERhdGFTdGF0dXMgPSBFbmNvZGVkRGF0YVN0YXR1czo6Q29tcGxldGU7Cisg
ICAgfQorfQorCitib29sIEltYWdlRGVjb2Rlcjo6aXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdAor
eworICAgIEFTU0VSVCghbV9kZWNvZGluZ1NpemVGcm9tU2V0RGF0YSk7CisgICAgcmV0dXJuIG1f
ZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkNvbXBsZXRlOworfQorCitF
bmNvZGVkRGF0YVN0YXR1cyBJbWFnZURlY29kZXI6OmVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbV9lbmNvZGVkRGF0YVN0YXR1czsKK30KKworYm9vbCBJbWFnZURlY29k
ZXI6OnNldEZhaWxlZCgpCit7CisgICAgLy8gU2V0cyB0aGUgImRlY29kZSBmYWlsdXJlIiBmbGFn
LiBGb3IgY2FsbGVyIGNvbnZlbmllbmNlIChzaW5jZSBzbworICAgIC8vIG1hbnkgY2FsbGVycyB3
YW50IHRvIHJldHVybiBmYWxzZSBhZnRlciBjYWxsaW5nIHRoaXMpLCByZXR1cm5zIGZhbHNlCisg
ICAgLy8gdG8gZW5hYmxlIGVhc3kgdGFpbGNhbGxpbmcuIFN1YmNsYXNzZXMgbWF5IG92ZXJyaWRl
IHRoaXMgdG8gYWxzbworICAgIC8vIGNsZWFuIHVwIGFueSBsb2NhbCBkYXRhLgorICAgIG1fZW5j
b2RlZERhdGFTdGF0dXMgPSBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3I7CisgICAgcmV0dXJuIGZh
bHNlOworfQorCitTdHJpbmcgSW1hZ2VEZWNvZGVyOjpmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCisvLyBSZXR1cm5zIHdoZXRoZXIgdGhlIHNp
emUgaXMgbGVnYWwgKGkuZS4gbm90IGdvaW5nIHRvIHJlc3VsdCBpbgorLy8gb3ZlcmZsb3cgZWxz
ZXdoZXJlKS4gSWYgbm90LCBtYXJrcyBkZWNvZGluZyBhcyBmYWlsZWQuCitib29sIEltYWdlRGVj
b2Rlcjo6c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIGlmIChJbWFnZUJhY2tp
bmdTdG9yZTo6aXNPdmVyU2l6ZShzaXplKSkKKyAgICAgICAgcmV0dXJuIHNldEZhaWxlZCgpOwor
ICAgIG1fc2l6ZSA9IHNpemU7CisgICAgbV9lbmNvZGVkRGF0YVN0YXR1cyA9IEVuY29kZWREYXRh
U3RhdHVzOjpTaXplQXZhaWxhYmxlOworICAgIHJldHVybiB0cnVlOworfQorCitzaXplX3QgSW1h
Z2VEZWNvZGVyOjpmcmFtZUNvdW50KCkgY29uc3QKK3sKKyAgICAvLyBMYXppbHktZGVjb2RlcyBl
bm91Z2ggb2YgdGhlIGltYWdlIHRvIGdldCB0aGUgZnJhbWUgY291bnQgKGlmCisgICAgLy8gcG9z
c2libGUpLCB3aXRob3V0IGRlY29kaW5nIHRoZSBpbmRpdmlkdWFsIGZyYW1lcy4KKyAgICAvLyBG
SVhNRTogUmlnaHQgbm93IHRoYXQgaGFzIHRvIGJlIGRvbmUgYnkgZWFjaCBzdWJjbGFzczsgZmFj
dG9yIHRoZQorICAgIC8vIGRlY29kZSBjYWxsIG91dCBhbmQgdXNlIGl0IGhlcmUuCisgICAgcmV0
dXJuIDE7Cit9CisKK1JlcGV0aXRpb25Db3VudCBJbWFnZURlY29kZXI6OnJlcGV0aXRpb25Db3Vu
dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFJlcGV0aXRpb25Db3VudE5vbmU7Cit9CisKK3N0ZDo6
b3B0aW9uYWw8SW50UG9pbnQ+IEltYWdlRGVjb2Rlcjo6aG90U3BvdCgpIGNvbnN0Cit7CisgICAg
Ly8gSWYgdGhlIGltYWdlIGhhcyBhIGN1cnNvciBob3Qtc3BvdCwgc3RvcmVzIGl0IGluIHRoZSBh
cmd1bWVudAorICAgIC8vIGFuZCByZXR1cm5zIHRydWUuIE90aGVyd2lzZSByZXR1cm5zIGZhbHNl
LgorICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisgICAgCiBib29sIEltYWdlRGVjb2Rlcjo6
ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgpCiB7CiAgICAgSW1hZ2VGcmFtZSog
YnVmZmVyID0gZnJhbWVCdWZmZXJBdEluZGV4KGluZGV4KTsKQEAgLTIwOSw2ICsyOTksMjYgQEAg
ZmxvYXQgSW1hZ2VEZWNvZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpCiAg
ICAgcmV0dXJuIGR1cmF0aW9uOwogfQogCitJbWFnZU9yaWVudGF0aW9uIEltYWdlRGVjb2Rlcjo6
ZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90KSBjb25zdAoreworICAgIHJldHVybiBtX29y
aWVudGF0aW9uOworfQorCitJbnRTaXplIEltYWdlRGVjb2Rlcjo6ZnJhbWVTaXplQXRJbmRleChz
aXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwpCit7CisgICAgLy8gVGhpcyB3aWxsIG9ubHkgZGlmZmVy
IGZyb20gc2l6ZSgpIGZvciBJQ08gKHdoZXJlIGVhY2ggZnJhbWUgaXMgYQorICAgIC8vIGRpZmZl
cmVudCBpY29uKSBvciBvdGhlciBmb3JtYXRzIHdoZXJlIGRpZmZlcmVudCBmcmFtZXMgYXJlIGRp
ZmZlcmVudAorICAgIC8vIHNpemVzLiBUaGlzIGRvZXMgTk9UIGRpZmZlciBmcm9tIHNpemUoKSBm
b3IgR0lGLCBzaW5jZSBkZWNvZGluZyBHSUZzCisgICAgLy8gY29tcG9zaXRlcyBhbnkgc21hbGxl
ciBmcmFtZXMgYWdhaW5zdCBwcmV2aW91cyBmcmFtZXMgdG8gY3JlYXRlIGZ1bGwtCisgICAgLy8g
c2l6ZSBmcmFtZXMuCisgICAgcmV0dXJuIHNpemUoKTsKK30KKworYm9vbCBJbWFnZURlY29kZXI6
OmZyYW1lQWxsb3dTdWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBjb25zdAoreworICAgIHJldHVy
biBmYWxzZTsKK30KKwogTmF0aXZlSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyOjpjcmVhdGVGcmFtZUlt
YWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5n
T3B0aW9ucyYpCiB7CiAgICAgLy8gWmVyby1oZWlnaHQgaW1hZ2VzIGNhbiBjYXVzZSBwcm9ibGVt
cyBmb3Igc29tZSBwb3J0cy4gSWYgd2UgaGF2ZSBhbiBlbXB0eSBpbWFnZSBkaW1lbnNpb24sIGp1
c3QgYmFpbC4KQEAgLTIyNiw2ICszMzYsMTIgQEAgTmF0aXZlSW1hZ2VQdHIgSW1hZ2VEZWNvZGVy
OjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGUKIAog
dm9pZCBJbWFnZURlY29kZXI6OnByZXBhcmVTY2FsZURhdGFJZk5lY2Vzc2FyeSgpCiB7CisjaWYg
RU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKKyAgICBzdGF0aWMgY29uc3QgaW50
IE1heE51bVBpeGVscyB7IDEwMjQgKiAxMDI0IH07CisjZWxzZQorICAgIHN0YXRpYyBjb25zdCBp
bnQgTWF4TnVtUGl4ZWxzIHsgLTEgfTsKKyNlbmRpZgorICAgIAogICAgIG1fc2NhbGVkID0gZmFs
c2U7CiAgICAgbV9zY2FsZWRDb2x1bW5zLmNsZWFyKCk7CiAgICAgbV9zY2FsZWRSb3dzLmNsZWFy
KCk7CkBAIC0yMzMsMTEgKzM0OSwxMSBAQCB2b2lkIEltYWdlRGVjb2Rlcjo6cHJlcGFyZVNjYWxl
RGF0YUlmTmVjZXNzYXJ5KCkKICAgICBpbnQgd2lkdGggPSBzaXplKCkud2lkdGgoKTsKICAgICBp
bnQgaGVpZ2h0ID0gc2l6ZSgpLmhlaWdodCgpOwogICAgIGludCBudW1QaXhlbHMgPSBoZWlnaHQg
KiB3aWR0aDsKLSAgICBpZiAobV9tYXhOdW1QaXhlbHMgPD0gMCB8fCBudW1QaXhlbHMgPD0gbV9t
YXhOdW1QaXhlbHMpCisgICAgaWYgKE1heE51bVBpeGVscyA8PSAwIHx8IG51bVBpeGVscyA8PSBN
YXhOdW1QaXhlbHMpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fc2NhbGVkID0gdHJ1ZTsKLSAg
ICBkb3VibGUgc2NhbGUgPSBzcXJ0KG1fbWF4TnVtUGl4ZWxzIC8gKGRvdWJsZSludW1QaXhlbHMp
OworICAgIGRvdWJsZSBzY2FsZSA9IHNxcnQoTWF4TnVtUGl4ZWxzIC8gKGRvdWJsZSludW1QaXhl
bHMpOwogICAgIGZpbGxTY2FsZWRWYWx1ZXMobV9zY2FsZWRDb2x1bW5zLCBzY2FsZSwgd2lkdGgp
OwogICAgIGZpbGxTY2FsZWRWYWx1ZXMobV9zY2FsZWRSb3dzLCBzY2FsZSwgaGVpZ2h0KTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdl
RGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VE
ZWNvZGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0MmNkYjBkZGY2ZmE0ZmY0
YWRmZTllODlhZWE5Y2E4MWMyNmMzZjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1h
Z2VEZWNvZGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyMzIgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAwNiwgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICog
Q29weXJpZ2h0IChDKSAyMDA4LTIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCi0gKiBDb3B5cmlnaHQg
KEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMDktMjAxMC4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRz
IHN1YnNpZGlhcnkoLWllcykKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJJbWFnZUZyYW1lLmgiCi0jaW5jbHVkZSAi
SW50UmVjdC5oIgotI2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVNjcmVl
bi5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25z
Lmg+Ci0jaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgot
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBJbWFnZURlY29kZXIgaXMgYSBiYXNlIGZvciBh
bGwgZm9ybWF0LXNwZWNpZmljIGRlY29kZXJzCi0vLyAoZS5nLiBKUEVHSW1hZ2VEZWNvZGVyKS4g
VGhpcyBiYXNlIG1hbmFnZXMgdGhlIEltYWdlRnJhbWUgY2FjaGUuCi0vLwotLy8gRU5BQkxFKElN
QUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykgYWxsb3dzIGltYWdlIGRlY29kZXJzIHRvIGRvd25z
YW1wbGUKLS8vIGF0IGRlY29kZSB0aW1lLiBJbWFnZSBkZWNvZGVycyB3aWxsIGRvd25zYW1wbGUg
YW55IGltYWdlcyBsYXJnZXIgdGhhbgotLy8gfG1fbWF4TnVtUGl4ZWxzfC4gRklYTUU6IE5vdCB5
ZXQgc3VwcG9ydGVkIGJ5IGFsbCBkZWNvZGVycy4KLWNsYXNzIEltYWdlRGVjb2RlciA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbWFnZURlY29kZXI+IHsKLSAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShJbWFnZURlY29kZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoK
LSAgICBJbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQotICAgICAgICA6IG1fcHJl
bXVsdGlwbHlBbHBoYShhbHBoYU9wdGlvbiA9PSBBbHBoYU9wdGlvbjo6UHJlbXVsdGlwbGllZCkK
LSAgICAgICAgLCBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKGdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uID09IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uOjpJZ25vcmVkKQotICAgIHsK
LSAgICB9Ci0KLSAgICB2aXJ0dWFsIH5JbWFnZURlY29kZXIoKQotICAgIHsKLSAgICB9Ci0KLSAg
ICAvLyBSZXR1cm5zIG51bGxwdHIgaWYgd2UgY2FuJ3Qgc25pZmYgYSBzdXBwb3J0ZWQgdHlwZSBm
cm9tIHRoZSBwcm92aWRlZCBkYXRhIChwb3NzaWJseQotICAgIC8vIGJlY2F1c2UgdGhlcmUgaXNu
J3QgZW5vdWdoIGRhdGEgeWV0KS4KLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlRGVjb2Rlcj4gY3Jl
YXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uKTsKLQotICAgIHZpcnR1YWwgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3Qg
PSAwOwotCi0gICAgYm9vbCBwcmVtdWx0aXBseUFscGhhKCkgY29uc3QgeyByZXR1cm4gbV9wcmVt
dWx0aXBseUFscGhhOyB9Ci0KLSAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVCghbV9kZWNvZGluZ1NpemVGcm9tU2V0RGF0YSk7Ci0gICAgICAg
IHJldHVybiBtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpDb21wbGV0
ZTsKLSAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEs
IGJvb2wgYWxsRGF0YVJlY2VpdmVkKQotICAgIHsKLSAgICAgICAgaWYgKG1fZW5jb2RlZERhdGFT
dGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkVycm9yKQotICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgIG1fZGF0YSA9ICZkYXRhOwotICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1
cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6VHlwZUF2YWlsYWJsZSkgewotICAgICAgICAgICAgbV9k
ZWNvZGluZ1NpemVGcm9tU2V0RGF0YSA9IHRydWU7Ci0gICAgICAgICAgICB0cnlEZWNvZGVTaXpl
KGFsbERhdGFSZWNlaXZlZCk7Ci0gICAgICAgICAgICBtX2RlY29kaW5nU2l6ZUZyb21TZXREYXRh
ID0gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9
PSBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3IpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgaWYgKGFsbERhdGFSZWNlaXZlZCkgewotICAgICAgICAgICAgQVNTRVJUKG1fZW5jb2RlZERh
dGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OlNpemVBdmFpbGFibGUpOwotICAgICAgICAg
ICAgbV9lbmNvZGVkRGF0YVN0YXR1cyA9IEVuY29kZWREYXRhU3RhdHVzOjpDb21wbGV0ZTsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIEVuY29kZWREYXRhU3RhdHVzIGVuY29kZWREYXRhU3RhdHVz
KCkgY29uc3QgeyByZXR1cm4gbV9lbmNvZGVkRGF0YVN0YXR1czsgfQotCi0gICAgYm9vbCBpc1Np
emVBdmFpbGFibGUoKSB7IHJldHVybiBtX2VuY29kZWREYXRhU3RhdHVzID49IEVuY29kZWREYXRh
U3RhdHVzOjpTaXplQXZhaWxhYmxlOyB9Ci0KLSAgICB2aXJ0dWFsIEludFNpemUgc2l6ZSgpIHsg
cmV0dXJuIGlzU2l6ZUF2YWlsYWJsZSgpID8gbV9zaXplIDogSW50U2l6ZSgpOyB9Ci0KLSAgICBJ
bnRTaXplIHNjYWxlZFNpemUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fc2NhbGVkID8gSW50
U2l6ZShtX3NjYWxlZENvbHVtbnMuc2l6ZSgpLCBtX3NjYWxlZFJvd3Muc2l6ZSgpKSA6IHNpemUo
KTsKLSAgICB9Ci0KLSAgICAvLyBUaGlzIHdpbGwgb25seSBkaWZmZXIgZnJvbSBzaXplKCkgZm9y
IElDTyAod2hlcmUgZWFjaCBmcmFtZSBpcyBhCi0gICAgLy8gZGlmZmVyZW50IGljb24pIG9yIG90
aGVyIGZvcm1hdHMgd2hlcmUgZGlmZmVyZW50IGZyYW1lcyBhcmUgZGlmZmVyZW50Ci0gICAgLy8g
c2l6ZXMuIFRoaXMgZG9lcyBOT1QgZGlmZmVyIGZyb20gc2l6ZSgpIGZvciBHSUYsIHNpbmNlIGRl
Y29kaW5nIEdJRnMKLSAgICAvLyBjb21wb3NpdGVzIGFueSBzbWFsbGVyIGZyYW1lcyBhZ2FpbnN0
IHByZXZpb3VzIGZyYW1lcyB0byBjcmVhdGUgZnVsbC0KLSAgICAvLyBzaXplIGZyYW1lcy4KLSAg
ICB2aXJ0dWFsIEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2
ZWwpCi0gICAgewotICAgICAgICByZXR1cm4gc2l6ZSgpOwotICAgIH0KLQotICAgIC8vIFJldHVy
bnMgd2hldGhlciB0aGUgc2l6ZSBpcyBsZWdhbCAoaS5lLiBub3QgZ29pbmcgdG8gcmVzdWx0IGlu
Ci0gICAgLy8gb3ZlcmZsb3cgZWxzZXdoZXJlKS4gSWYgbm90LCBtYXJrcyBkZWNvZGluZyBhcyBm
YWlsZWQuCi0gICAgdmlydHVhbCBib29sIHNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKLSAg
ICB7Ci0gICAgICAgIGlmIChJbWFnZUJhY2tpbmdTdG9yZTo6aXNPdmVyU2l6ZShzaXplKSkKLSAg
ICAgICAgICAgIHJldHVybiBzZXRGYWlsZWQoKTsKLSAgICAgICAgbV9zaXplID0gc2l6ZTsKLSAg
ICAgICAgbV9lbmNvZGVkRGF0YVN0YXR1cyA9IEVuY29kZWREYXRhU3RhdHVzOjpTaXplQXZhaWxh
YmxlOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICAvLyBMYXppbHktZGVjb2Rl
cyBlbm91Z2ggb2YgdGhlIGltYWdlIHRvIGdldCB0aGUgZnJhbWUgY291bnQgKGlmCi0gICAgLy8g
cG9zc2libGUpLCB3aXRob3V0IGRlY29kaW5nIHRoZSBpbmRpdmlkdWFsIGZyYW1lcy4KLSAgICAv
LyBGSVhNRTogUmlnaHQgbm93IHRoYXQgaGFzIHRvIGJlIGRvbmUgYnkgZWFjaCBzdWJjbGFzczsg
ZmFjdG9yIHRoZQotICAgIC8vIGRlY29kZSBjYWxsIG91dCBhbmQgdXNlIGl0IGhlcmUuCi0gICAg
dmlydHVhbCBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIDE7IH0KLQotICAgIHZp
cnR1YWwgUmVwZXRpdGlvbkNvdW50IHJlcGV0aXRpb25Db3VudCgpIGNvbnN0IHsgcmV0dXJuIFJl
cGV0aXRpb25Db3VudE5vbmU7IH0KLQotICAgIC8vIERlY29kZXMgYXMgbXVjaCBvZiB0aGUgcmVx
dWVzdGVkIGZyYW1lIGFzIHBvc3NpYmxlLCBhbmQgcmV0dXJucyBhbgotICAgIC8vIEltYWdlRGVj
b2Rlci1vd25lZCBwb2ludGVyLgotICAgIHZpcnR1YWwgSW1hZ2VGcmFtZSogZnJhbWVCdWZmZXJB
dEluZGV4KHNpemVfdCkgPSAwOwotCi0gICAgYm9vbCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNp
emVfdCk7Ci0KLSAgICAvLyBNYWtlIHRoZSBiZXN0IGVmZm9ydCBndWVzcyB0byBjaGVjayBpZiB0
aGUgcmVxdWVzdGVkIGZyYW1lIGhhcyBhbHBoYSBjaGFubmVsLgotICAgIGJvb2wgZnJhbWVIYXNB
bHBoYUF0SW5kZXgoc2l6ZV90KSBjb25zdDsKLQotICAgIC8vIE51bWJlciBvZiBieXRlcyBpbiB0
aGUgZGVjb2RlZCBmcmFtZSByZXF1ZXN0ZWQuIFJldHVybiAwIGlmIG5vdCB5ZXQgZGVjb2RlZC4K
LSAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QpIGNvbnN0OwotICAgIAotICAg
IGZsb2F0IGZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCk7Ci0gICAgCi0gICAgTmF0aXZlSW1h
Z2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0g
U3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29k
aW5nTW9kZTo6U3luY2hyb25vdXMpOwotCi0gICAgdm9pZCBzZXRJZ25vcmVHYW1tYUFuZENvbG9y
UHJvZmlsZShib29sIGZsYWcpIHsgbV9pZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZSA9IGZsYWc7
IH0KLSAgICBib29sIGlnbm9yZXNHYW1tYUFuZENvbG9yUHJvZmlsZSgpIGNvbnN0IHsgcmV0dXJu
IG1faWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGU7IH0KLQotICAgIEltYWdlT3JpZW50YXRpb24g
ZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90KSBjb25zdCB7IHJldHVybiBtX29yaWVudGF0
aW9uOyB9Ci0gICAgCi0gICAgYm9vbCBmcmFtZUFsbG93U3Vic2FtcGxpbmdBdEluZGV4KHNpemVf
dCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIGVudW0geyBJQ0NDb2xvclByb2ZpbGVI
ZWFkZXJMZW5ndGggPSAxMjggfTsKLQotICAgIHN0YXRpYyBib29sIHJnYkNvbG9yUHJvZmlsZShj
b25zdCBjaGFyKiBwcm9maWxlRGF0YSwgdW5zaWduZWQgcHJvZmlsZUxlbmd0aCkKLSAgICB7Ci0g
ICAgICAgIEFTU0VSVF9VTlVTRUQocHJvZmlsZUxlbmd0aCwgcHJvZmlsZUxlbmd0aCA+PSBJQ0ND
b2xvclByb2ZpbGVIZWFkZXJMZW5ndGgpOwotCi0gICAgICAgIHJldHVybiAhbWVtY21wKCZwcm9m
aWxlRGF0YVsxNl0sICJSR0IgIiwgNCk7Ci0gICAgfQotCi0gICAgc3RhdGljIHNpemVfdCBieXRl
c0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKSB7IHJldHVybiAwOyB9Ci0gICAgCi0gICAg
c3RhdGljIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKGZsb2F0LCBT
dWJzYW1wbGluZ0xldmVsKSB7IHJldHVybiBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0OyB9Ci0K
LSAgICBzdGF0aWMgYm9vbCBpbnB1dERldmljZUNvbG9yUHJvZmlsZShjb25zdCBjaGFyKiBwcm9m
aWxlRGF0YSwgdW5zaWduZWQgcHJvZmlsZUxlbmd0aCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVF9V
TlVTRUQocHJvZmlsZUxlbmd0aCwgcHJvZmlsZUxlbmd0aCA+PSBJQ0NDb2xvclByb2ZpbGVIZWFk
ZXJMZW5ndGgpOwotCi0gICAgICAgIHJldHVybiAhbWVtY21wKCZwcm9maWxlRGF0YVsxMl0sICJt
bnRyIiwgNCkgfHwgIW1lbWNtcCgmcHJvZmlsZURhdGFbMTJdLCAic2NuciIsIDQpOwotICAgIH0K
LQotICAgIC8vIFNldHMgdGhlICJkZWNvZGUgZmFpbHVyZSIgZmxhZy4gRm9yIGNhbGxlciBjb252
ZW5pZW5jZSAoc2luY2Ugc28KLSAgICAvLyBtYW55IGNhbGxlcnMgd2FudCB0byByZXR1cm4gZmFs
c2UgYWZ0ZXIgY2FsbGluZyB0aGlzKSwgcmV0dXJucyBmYWxzZQotICAgIC8vIHRvIGVuYWJsZSBl
YXN5IHRhaWxjYWxsaW5nLiBTdWJjbGFzc2VzIG1heSBvdmVycmlkZSB0aGlzIHRvIGFsc28KLSAg
ICAvLyBjbGVhbiB1cCBhbnkgbG9jYWwgZGF0YS4KLSAgICB2aXJ0dWFsIGJvb2wgc2V0RmFpbGVk
KCkKLSAgICB7Ci0gICAgICAgIG1fZW5jb2RlZERhdGFTdGF0dXMgPSBFbmNvZGVkRGF0YVN0YXR1
czo6RXJyb3I7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBib29sIGZhaWxl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0
dXM6OkVycm9yOyB9Ci0KLSAgICAvLyBDbGVhcnMgZGVjb2RlZCBwaXhlbCBkYXRhIGZyb20gYmVm
b3JlIHRoZSBwcm92aWRlZCBmcmFtZSB1bmxlc3MgdGhhdAotICAgIC8vIGRhdGEgbWF5IGJlIG5l
ZWRlZCB0byBkZWNvZGUgZnV0dXJlIGZyYW1lcyAoZS5nLiBkdWUgdG8gR0lGIGZyYW1lCi0gICAg
Ly8gY29tcG9zaXRpbmcpLgotICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUo
c2l6ZV90KSB7IH0KLQotICAgIC8vIElmIHRoZSBpbWFnZSBoYXMgYSBjdXJzb3IgaG90LXNwb3Qs
IHN0b3JlcyBpdCBpbiB0aGUgYXJndW1lbnQKLSAgICAvLyBhbmQgcmV0dXJucyB0cnVlLiBPdGhl
cndpc2UgcmV0dXJucyBmYWxzZS4KLSAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+
IGhvdFNwb3QoKSBjb25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KLQotcHJvdGVjdGVkOgot
ICAgIHZvaWQgcHJlcGFyZVNjYWxlRGF0YUlmTmVjZXNzYXJ5KCk7Ci0gICAgaW50IHVwcGVyQm91
bmRTY2FsZWRYKGludCBvcmlnWCwgaW50IHNlYXJjaFN0YXJ0ID0gMCk7Ci0gICAgaW50IGxvd2Vy
Qm91bmRTY2FsZWRYKGludCBvcmlnWCwgaW50IHNlYXJjaFN0YXJ0ID0gMCk7Ci0gICAgaW50IHVw
cGVyQm91bmRTY2FsZWRZKGludCBvcmlnWSwgaW50IHNlYXJjaFN0YXJ0ID0gMCk7Ci0gICAgaW50
IGxvd2VyQm91bmRTY2FsZWRZKGludCBvcmlnWSwgaW50IHNlYXJjaFN0YXJ0ID0gMCk7Ci0gICAg
aW50IHNjYWxlZFkoaW50IG9yaWdZLCBpbnQgc2VhcmNoU3RhcnQgPSAwKTsKLQotICAgIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsgLy8gVGhlIGVuY29kZWQgZGF0YS4KLSAgICBWZWN0b3I8
SW1hZ2VGcmFtZSwgMT4gbV9mcmFtZUJ1ZmZlckNhY2hlOwotICAgIGJvb2wgbV9zY2FsZWQgeyBm
YWxzZSB9OwotICAgIFZlY3RvcjxpbnQ+IG1fc2NhbGVkQ29sdW1uczsKLSAgICBWZWN0b3I8aW50
PiBtX3NjYWxlZFJvd3M7Ci0gICAgYm9vbCBtX3ByZW11bHRpcGx5QWxwaGE7Ci0gICAgYm9vbCBt
X2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlOwotICAgIEltYWdlT3JpZW50YXRpb24gbV9vcmll
bnRhdGlvbjsKLQotcHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgdHJ5RGVjb2RlU2l6ZShib29s
KSA9IDA7Ci0KLSAgICBJbnRTaXplIG1fc2l6ZTsKLSAgICBFbmNvZGVkRGF0YVN0YXR1cyBtX2Vu
Y29kZWREYXRhU3RhdHVzIHsgRW5jb2RlZERhdGFTdGF0dXM6OlR5cGVBdmFpbGFibGUgfTsKLSAg
ICBib29sIG1fZGVjb2RpbmdTaXplRnJvbVNldERhdGEgeyBmYWxzZSB9OwotI2lmIEVOQUJMRShJ
TUFHRV9ERUNPREVSX0RPV05fU0FNUExJTkcpCi0gICAgc3RhdGljIGNvbnN0IGludCBtX21heE51
bVBpeGVscyB7IDEwMjQgKiAxMDI0IH07Ci0jZWxzZQotICAgIHN0YXRpYyBjb25zdCBpbnQgbV9t
YXhOdW1QaXhlbHMgeyAtMSB9OwotI2VuZGlmCi19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311632</attachid>
            <date>2017-05-31 14:15:34 -0700</date>
            <delta_ts>2017-05-31 14:44:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172773-20170531141533.patch</filename>
            <type>text/plain</type>
            <size>42636</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3NTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDJmYmZmNzM4ZjZmNmI5
YzBhNzExMjcyYzlmODFmNDc0NGYxNzhhYy4uZmJhOTJjMmJmODY1YjM4YjNmMWQ2NmQxZjYwYWE0
ZjQ2OWI2YjQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE3LTA1LTMxICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgSGF2ZSBh
IHNpbmdsZSBJbWFnZURlY29kZXIgaGVhZGVyIGZpbGUgZm9yIGFsbCBwb3J0cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyNzczCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNv
ZGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjp+SW1hZ2VEZWNv
ZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6aXNTaXplQXZhaWxhYmxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c2V0UHJlbXVsdGlwbHlBbHBoYSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnByZW11bHRpcGx5QWxwaGEpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzZXRJZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6Omlnbm9yZXNHYW1tYUFuZENvbG9yUHJv
ZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzY2FsZWRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRGVjb2Rlcjo6ZmFpbGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZy
YW1lQ2FjaGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVR5cGVzLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
Ojppc0FsbERhdGFSZWNlaXZlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VEZWNvZGVyQ0cuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
OjpJbWFnZURlY29kZXIpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRGVjb2Rlcjo6aXNBbGxEYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oOiBSZW1vdmVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXI6OkltYWdlRGVjb2Rlcik6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZURlY29kZXI6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcyk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VEZWNvZGVyOjppc0FsbERhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURl
Y29kZXI6OmVuY29kZWREYXRhU3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rl
cjo6c2V0RmFpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6ZmlsZW5hbWVF
eHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzZXRTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6ZnJhbWVDb3VudCk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZURlY29kZXI6OnJlcGV0aXRpb25Db3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZURlY29kZXI6OmhvdFNwb3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpm
cmFtZU9yaWVudGF0aW9uQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6
OmZyYW1lU2l6ZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFt
ZUFsbG93U3Vic2FtcGxpbmdBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rl
cjo6cHJlcGFyZVNjYWxlRGF0YUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaDogUmVtb3ZlZC4KKwogMjAxNy0wNS0zMCAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmVydCBhY2NpZGVudGFsbHkgY2hl
Y2tlZCBpbiBjaGFuZ2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggODZhMjZhODRhZGZmYTBkZmU3ZjYzNzk0MDkyNjk2ZDM4Y2M0
NzE5ZS4uYjBkN2EzNmU1ZmI1YTdiZmFmNGU5MmZjN2ZjZWRhOWUxMjUwZjBmOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjUw
MCwxMCArMjUwMCwxMCBAQAogCQk1M0VGNzY2QzE2NTMxOTk0MDA0Q0JFNDkgLyogU2V0dGluZ3NN
YWNyb3MuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUzRUY3NjZBMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5o
ICovOyB9OwogCQk1NTBBMEJDOTA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTBBMEJDNzA4
NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgKi87IH07CiAJCTU1MEEwQkNBMDg1
RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlm
aWVkTmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTU1MzRFRTkyMUVERTU2OEQwMDgxOEMwNCAvKiBJbWFnZURlY29kZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MzRFRTkxMUVERTU2ODkwMDgx
OEMwNCAvKiBJbWFnZURlY29kZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1NTUwQ0I0MjFFOTU1RTNDMDAxMTFBQTAgLyogSW1hZ2VUeXBlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU1MENCNDEx
RTk1NUUzQzAwMTExQUEwIC8qIEltYWdlVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NTUxMzAwMTFFN0NDQ0NCMDBBNjlFMzggLyogRGVj
b2RpbmdPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NTUxMzAwMDFFN0NDQ0NBMDBBNjlFMzggLyogRGVjb2RpbmdPcHRpb25zLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTU1Qjg3RUMxQ0FB
RjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1NUI4N0VBMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFn
ZURlY29kZXJDRy5jcHAgKi87IH07Ci0JCTU1NUI4N0VEMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFn
ZURlY29kZXJDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTU1Qjg3RUIxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmggKi87IH07CiAJ
CTU1NzZBNTY0MUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1NzZBNTYyMUQ4OEE3MDgwMENDQzA0
QyAvKiBJbWFnZUZyYW1lLmNwcCAqLzsgfTsKIAkJNTU3NkE1NjUxRDg4QTcwODAwQ0NDMDRDIC8q
IEltYWdlRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU1NzZBNTYzMUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTU5N0Y4MjYxRDkxQzMxMzAw
NjZCQzIxIC8qIEltYWdlRnJhbWVDYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1NTk3RjgyNDFEOTFDMzEzMDA2NkJDMjEgLyogSW1hZ2VGcmFt
ZUNhY2hlLmNwcCAqLzsgfTsKQEAgLTEwMjcxLDEwICsxMDI3MSwxMCBAQAogCQk1M0VGNzY2QTE2
NTMwQTYxMDA0Q0JFNDkgLyogU2V0dGluZ3NNYWNyb3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2V0dGluZ3NNYWNyb3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTUwQTBCQzcwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUXVhbGlmaWVk
TmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMg
PSAwOyB9OwogCQk1NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0
aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWFsaWZp
ZWROYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMg
PSAwOyB9OworCQk1NTM0RUU5MTFFREU1Njg5MDA4MThDMDQgLyogSW1hZ2VEZWNvZGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEltYWdlRGVjb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1NTUwQ0I0MTFFOTU1RTNDMDAxMTFBQTAgLyogSW1hZ2VUeXBlcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTU1NTEzMDAwMUU3Q0NDQ0EwMEE2OUUzOCAvKiBEZWNvZGluZ09wdGlvbnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVjb2RpbmdPcHRpb25zLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1NUI4N0VBMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURl
Y29kZXJDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZURl
Y29kZXJDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU1NUI4N0VCMUNBQUYw
QUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbWFnZURlY29kZXJDRy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
NTc2QTU2MjFEODhBNzA4MDBDQ0MwNEMgLyogSW1hZ2VGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTU3NkE1NjMxRDg4QTcwODAwQ0NDMDRDIC8qIEltYWdlRnJhbWUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VGcmFtZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1NTk3RjgyNDFEOTFDMzEzMDA2NkJDMjEgLyogSW1hZ2VGcmFtZUNh
Y2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlRnJhbWVD
YWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzA1NCw3ICsyMzA1NCw2
IEBACiAJCQkJMjJCRDlGODAxMzUzNjRGRTAwOUJEMTAyIC8qIEltYWdlQnVmZmVyRGF0YUNHLmgg
Ki8sCiAJCQkJQjI3NTM1MzAwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlQ0cuY3BwICovLAogCQkJ
CTU1NUI4N0VBMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5jcHAgKi8sCi0JCQkJ
NTU1Qjg3RUIxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmggKi8sCiAJCQkJNEIz
NDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0cuaCAqLywKIAkJCQk0QjM0ODA5
MTBFRUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VDR01hYy5tbSAqLywKIAkJCQlCMjc1MzUz
MjBCMDUzODE0MDAyQ0U2NEYgLyogSW50UG9pbnRDRy5jcHAgKi8sCkBAIC0yMzIyOCw2ICsyMzIy
Nyw3IEBACiAJCQkJNDNEMjU5NzYxM0M4MTZGNDAwNjA4NTU5IC8qIEltYWdlQnVmZmVyLmNwcCAq
LywKIAkJCQlCMkExMEI5MTBCMzgxOEJEMDAwOTlBQTQgLyogSW1hZ2VCdWZmZXIuaCAqLywKIAkJ
CQkyMkJEOUY3RDEzNTM2MjVDMDA5QkQxMDIgLyogSW1hZ2VCdWZmZXJEYXRhLmggKi8sCisJCQkJ
NTUzNEVFOTExRURFNTY4OTAwODE4QzA0IC8qIEltYWdlRGVjb2Rlci5oICovLAogCQkJCTU1NzZB
NTYyMUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmNwcCAqLywKIAkJCQk1NTc2QTU2MzFE
ODhBNzA4MDBDQ0MwNEMgLyogSW1hZ2VGcmFtZS5oICovLAogCQkJCTU1OTdGODI0MUQ5MUMzMTMw
MDY2QkMyMSAvKiBJbWFnZUZyYW1lQ2FjaGUuY3BwICovLApAQCAtMjc2NzEsNyArMjc2NzEsNiBA
QAogCQkJCTUxMDE5MkQ2MThCNkI5QjcwMDdGQzdBMSAvKiBJbWFnZUNvbnRyb2xzUm9vdEVsZW1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDE5MkQyMThCNkI5QUIwMDdGQzdBMSAvKiBJbWFn
ZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Nzk3OTFBMEQ2
QjlEMEMwMDM4NTFCOSAvKiBJbWFnZURhdGEuaCBpbiBIZWFkZXJzICovLAotCQkJCTU1NUI4N0VE
MUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTcyMDVBQjYxMjM5MjkxMDAwQjE3MzgwIC8qIEltYWdlRG9jdW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTU1NzZBNTY1MUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1NTk3RjgyNzFEOTFDMzEzMDA2NkJDMjEgLyogSW1hZ2VGcmFtZUNhY2hlLmgg
aW4gSGVhZGVycyAqLywKQEAgLTI4MjMwLDYgKzI4MjI5LDcgQEAKIAkJCQkzMTZEQ0I0RTFFNzkx
MEE2MDAxQjVGODcgLyogSlNSVENJY2VHYXRoZXJpbmdTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMDczNzk0RUMxOUVFMzQxRTAwRTVBMDQ1IC8qIEpTUlRDSWNlU2VydmVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkzMTZEQ0IyMDFFNzhDQTU1MDAxQjVGODcgLyogSlNSVENPZmZlckFuc3dlck9w
dGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1MzRFRTkyMUVERTU2OEQwMDgxOEMwNCAvKiBJ
bWFnZURlY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OTY5REJBMTdEMTQxNTEwMDdGRjg0
MiAvKiBKU1JUQ1BlZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzk2OURCODE3
RDE0MTUxMDA3RkY4NDIgLyogSlNSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1RTJDNDM3NDFCQ0YwRDc1MDAwMUUyQkUgLyogSlNSVENSdHBQYXJhbWV0ZXJz
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VEZWNvZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGFhMGQwMTg0NDcxNWI4NWE5NTVmZDg0NDFhZWE3
MDQ1Y2U1YTg5NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlRGVjb2Rlci5oCkBAIC0wLDAgKzEsMTMzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2LCAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJEZWNvZGluZ09wdGlvbnMuaCIKKyNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCisj
aW5jbHVkZSAiSW1hZ2VUeXBlcy5oIgorI2luY2x1ZGUgIkludFBvaW50LmgiCisjaW5jbHVkZSAi
SW50U2l6ZS5oIgorI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCisjaW5jbHVkZSAiU2hhcmVkQnVm
ZmVyLmgiCisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1RocmVhZFNh
ZmVSZWZDb3VudGVkLmg+CisKKyNpZiBVU0UoQ0cpCit0eXBlZGVmIHN0cnVjdCBDR0ltYWdlU291
cmNlKiBDR0ltYWdlU291cmNlUmVmOworI2VsaWYgVVNFKERJUkVDVDJEKQoraW50ZXJmYWNlIElE
MkQxUmVuZGVyVGFyZ2V0OworaW50ZXJmYWNlIElXSUNCaXRtYXBEZWNvZGVyOworaW50ZXJmYWNl
IElXSUNJbWFnaW5nRmFjdG9yeTsKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIEltYWdlRGVjb2RlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbWFnZURlY29k
ZXI+IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZURlY29kZXIpOyBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBJbWFnZURlY29kZXIoU2hhcmVkQnVmZmVyJiBk
YXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIHZpcnR1
YWwgfkltYWdlRGVjb2RlcigpIHsgfQorCisgICAgc3RhdGljIFJlZlB0cjxJbWFnZURlY29kZXI+
IGNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbik7CisgICAgc3RhdGljIHNpemVfdCBieXRlc0RlY29kZWRUb0RldGVybWluZVBy
b3BlcnRpZXMoKTsKKworICAgIEVuY29kZWREYXRhU3RhdHVzIGVuY29kZWREYXRhU3RhdHVzKCkg
Y29uc3Q7CisgICAgYm9vbCBpc1NpemVBdmFpbGFibGUoKSB7IHJldHVybiBlbmNvZGVkRGF0YVN0
YXR1cygpID49IEVuY29kZWREYXRhU3RhdHVzOjpTaXplQXZhaWxhYmxlOyB9CisgICAgdmlydHVh
bCBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0OworICAgIHZpcnR1YWwgUmVwZXRpdGlvbkNvdW50
IHJlcGV0aXRpb25Db3VudCgpIGNvbnN0OworICAgIHZpcnR1YWwgU3RyaW5nIGZpbGVuYW1lRXh0
ZW5zaW9uKCkgY29uc3Q7CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPEludFBvaW50PiBob3RT
cG90KCkgY29uc3Q7CisKKyAgICBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJz
YW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCkgY29uc3Q7CisgICAgYm9v
bCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCkgY29uc3Q7CisgICAgSW1hZ2VPcmllbnRh
dGlvbiBmcmFtZU9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0OworCisgICAgZmxvYXQg
ZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90KSBjb25zdDsKKyAgICBib29sIGZyYW1lSGFzQWxw
aGFBdEluZGV4KHNpemVfdCkgY29uc3Q7CisgICAgYm9vbCBmcmFtZUFsbG93U3Vic2FtcGxpbmdB
dEluZGV4KHNpemVfdCkgY29uc3Q7CisgICAgdW5zaWduZWQgZnJhbWVCeXRlc0F0SW5kZXgoc2l6
ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCkgY29uc3Q7
CisKKyAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1
YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGlu
Z09wdGlvbnMmID0gRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykgY29uc3Q7CisKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCk7Cisg
ICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBjbGVh
ckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSB7IH0KKworI2lmIFVTRShDRykKKyAgICBTdHJpbmcg
dXRpKCkgY29uc3Q7CisjZWxpZiBVU0UoRElSRUNUMkQpCisgICAgdm9pZCBzZXRUYXJnZXRDb250
ZXh0KElEMkQxUmVuZGVyVGFyZ2V0Kik7CisgICAgc3RhdGljIElXSUNJbWFnaW5nRmFjdG9yeSog
c3lzdGVtSW1hZ2luZ0ZhY3RvcnkoKTsKKyNlbHNlCisgICAgdm9pZCBzZXRQcmVtdWx0aXBseUFs
cGhhKGJvb2wgcHJlbXVsdGlwbHlBbHBoYSkgeyAgbV9wcmVtdWx0aXBseUFscGhhID0gcHJlbXVs
dGlwbHlBbHBoYTsgfQorICAgIGJvb2wgcHJlbXVsdGlwbHlBbHBoYSgpIGNvbnN0IHsgcmV0dXJu
IG1fcHJlbXVsdGlwbHlBbHBoYTsgfQorICAgIHZvaWQgc2V0SWdub3JlR2FtbWFBbmRDb2xvclBy
b2ZpbGUoYm9vbCBpZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZSkgeyBtX2lnbm9yZUdhbW1hQW5k
Q29sb3JQcm9maWxlID0gaWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGU7IH0KKyAgICBib29sIGln
bm9yZXNHYW1tYUFuZENvbG9yUHJvZmlsZSgpIGNvbnN0IHsgcmV0dXJuIG1faWdub3JlR2FtbWFB
bmRDb2xvclByb2ZpbGU7IH0KKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgc2V0U2l6ZShjb25zdCBJ
bnRTaXplJik7CisgICAgdmlydHVhbCBJbnRTaXplIHNpemUoKSB7IHJldHVybiBpc1NpemVBdmFp
bGFibGUoKSA/IG1fc2l6ZSA6IEludFNpemUoKTsgfQorICAgIEludFNpemUgc2NhbGVkU2l6ZSgp
IHsgcmV0dXJuIG1fc2NhbGVkID8gSW50U2l6ZShtX3NjYWxlZENvbHVtbnMuc2l6ZSgpLCBtX3Nj
YWxlZFJvd3Muc2l6ZSgpKSA6IHNpemUoKTsgfQorCisgICAgdmlydHVhbCB2b2lkIHRyeURlY29k
ZVNpemUoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzZXRGYWlsZWQoKTsKKyAgICBib29s
IGZhaWxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERh
dGFTdGF0dXM6OkVycm9yOyB9CisgICAgCisgICAgdmlydHVhbCBJbWFnZUZyYW1lKiBmcmFtZUJ1
ZmZlckF0SW5kZXgoc2l6ZV90KSA9IDA7CisKKyAgICB2b2lkIHByZXBhcmVTY2FsZURhdGFJZk5l
Y2Vzc2FyeSgpOworICAgIGludCB1cHBlckJvdW5kU2NhbGVkWChpbnQgb3JpZ1gsIGludCBzZWFy
Y2hTdGFydCA9IDApOworICAgIGludCBsb3dlckJvdW5kU2NhbGVkWChpbnQgb3JpZ1gsIGludCBz
ZWFyY2hTdGFydCA9IDApOworICAgIGludCB1cHBlckJvdW5kU2NhbGVkWShpbnQgb3JpZ1ksIGlu
dCBzZWFyY2hTdGFydCA9IDApOworICAgIGludCBsb3dlckJvdW5kU2NhbGVkWShpbnQgb3JpZ1ks
IGludCBzZWFyY2hTdGFydCA9IDApOworICAgIGludCBzY2FsZWRZKGludCBvcmlnWSwgaW50IHNl
YXJjaFN0YXJ0ID0gMCk7CisjZW5kaWYKKworcHJvdGVjdGVkOgorI2lmIFVTRShDRykKKyAgICBS
ZXRhaW5QdHI8Q0dJbWFnZVNvdXJjZVJlZj4gbV9uYXRpdmVEZWNvZGVyOworICAgIGJvb2wgbV9p
c0FsbERhdGFSZWNlaXZlZCB7IGZhbHNlIH07CisjZWxpZiBVU0UoRElSRUNUMkQpCisgICAgQ09N
UHRyPElXSUNCaXRtYXBEZWNvZGVyPiBtX25hdGl2ZURlY29kZXI7CisgICAgQ09NUHRyPElEMkQx
UmVuZGVyVGFyZ2V0PiBtX3JlbmRlclRhcmdldDsKKyNlbHNlCisgICAgYm9vbCBtX3ByZW11bHRp
cGx5QWxwaGE7CisgICAgYm9vbCBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlOworCisgICAg
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOyAvLyBUaGUgZW5jb2RlZCBkYXRhLgorICAgIFZl
Y3RvcjxJbWFnZUZyYW1lLCAxPiBtX2ZyYW1lQnVmZmVyQ2FjaGU7CisgICAgRW5jb2RlZERhdGFT
dGF0dXMgbV9lbmNvZGVkRGF0YVN0YXR1cyB7IEVuY29kZWREYXRhU3RhdHVzOjpUeXBlQXZhaWxh
YmxlIH07CisgICAgYm9vbCBtX2RlY29kaW5nU2l6ZUZyb21TZXREYXRhIHsgZmFsc2UgfTsKKwor
ICAgIEludFNpemUgbV9zaXplOworICAgIEltYWdlT3JpZW50YXRpb24gbV9vcmllbnRhdGlvbjsK
KworICAgIGJvb2wgbV9zY2FsZWQgeyBmYWxzZSB9OworICAgIFZlY3RvcjxpbnQ+IG1fc2NhbGVk
Q29sdW1uczsKKyAgICBWZWN0b3I8aW50PiBtX3NjYWxlZFJvd3M7CisjZW5kaWYKK307CisKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVD
YWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lQ2Fj
aGUuY3BwCmluZGV4IGE3NDVlYTgwMTY3ZjYzYzIyMmM3NTIyNmNiOWMxMjk1MmNjMmU3MjIuLjk5
MzBkMWJhMDg4YjE2YTM0NmExNjYwODgzMGM1ZjVjYTgwMmYxMWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmNwcApAQCAtMjcs
MTggKzI3LDE1IEBACiAjaW5jbHVkZSAiSW1hZ2VGcmFtZUNhY2hlLmgiCiAKICNpbmNsdWRlICJJ
bWFnZS5oIgorI2luY2x1ZGUgIkltYWdlRGVjb2Rlci5oIgogI2luY2x1ZGUgIkltYWdlT2JzZXJ2
ZXIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSA8
d3RmL1N5c3RlbVRyYWNpbmcuaD4KIAotI2lmIFVTRShDRykKLSNpbmNsdWRlICJJbWFnZURlY29k
ZXJDRy5oIgotI2VsaWYgVVNFKERJUkVDVDJEKQorI2lmICFVU0UoQ0cpICYmIFVTRShESVJFQ1Qy
RCkKICNpbmNsdWRlICJJbWFnZURlY29kZXJEaXJlY3QyRC5oIgogI2luY2x1ZGUgPFdpbkNvZGVj
Lmg+Ci0jZWxzZQotI2luY2x1ZGUgIkltYWdlRGVjb2Rlci5oIgogI2VuZGlmCiAKICNpbmNsdWRl
IDx3dGYvQ2hlY2tlZEFyaXRobWV0aWMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRleCAzZDQ4M2ZiOTM5NzIyYzJjYWY3NmZiNjcx
NWQwYmZhY2EzOWRiNGMxLi4xZDQ2Njc4MDY3NDQxZDc3YTIyOTAyYjJmNzY1YzY5OTA1NTk2OWYx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2Uu
Y3BwCkBAIC0zMCwxOSArMzAsMTIgQEAKICNpbmNsdWRlICJJbWFnZVNvdXJjZS5oIgogCiAjaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCisjaW5j
bHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogCi0jaWYgVVNFKENHKQotI2luY2x1ZGUgIkltYWdl
RGVjb2RlckNHLmgiCi0jaWYgUExBVEZPUk0oV0lOKQorI2lmIFVTRShDRykgJiYgUExBVEZPUk0o
V0lOKQogI2luY2x1ZGUgPFdlYktpdFN5c3RlbUludGVyZmFjZS9XZWJLaXRTeXN0ZW1JbnRlcmZh
Y2UuaD4KICNlbmRpZgotI2VsaWYgVVNFKERJUkVDVDJEKQotI2luY2x1ZGUgIkltYWdlRGVjb2Rl
ckRpcmVjdDJELmgiCi0jZWxzZQotI2luY2x1ZGUgIkltYWdlRGVjb2Rlci5oIgotI2VuZGlmCi0K
LSNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1l
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlVHlwZXMuaAppbmRleCBkYjYxMjEyZTJlZjg5ZjU1YWQ1M2Y2NjYzZDgzNjA0
YjA2NTgwNmJhLi43NTExNzNiMWE2YzA2Y2U0ZDIwNzIwMmIxMDBiYzNiNjhhNjg2NDg1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVR5cGVzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VUeXBlcy5oCkBAIC0yNSwx
MCArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIFVTRShDRykKLXR5cGVkZWYgc3RydWN0
IENHSW1hZ2VTb3VyY2UqIENHSW1hZ2VTb3VyY2VSZWY7Ci0jZW5kaWYKLQogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAvLyBUaGVyZSBhcmUgZm91ciBzdWJzYW1wbGluZyBsZXZlbHM6IDAgPSAxeCwg
MSA9IDAuNXgsIDIgPSAwLjI1eCwgMyA9IDAuMTI1eC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCBjN2UxMTRl
ZjEyN2VlYmI4MDlmYjRmNTI2MjE0MzQzZTM4MjU3YTJjLi5kMzU1MmRkYmNjYzk2NDU0NDQxMWQw
ODAxZGQ4YTkzMzY1MTJlNTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC0yNCwxNyArMjQsMTQgQEAKICAq
LwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSW1hZ2VEZWNvZGVyQ0cuaCIKKyNp
bmNsdWRlICJJbWFnZURlY29kZXIuaCIKIAogI2lmIFVTRShDRykKIAogI2luY2x1ZGUgIkltYWdl
SU9TUEkuaCIKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW1hZ2VT
b3VyY2VDRy5oIgotI2luY2x1ZGUgIkludFBvaW50LmgiCi0jaW5jbHVkZSAiSW50U2l6ZS5oIgog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIAogI2lmICFQTEFURk9STShJT1MpCkBAIC0xNjMsNiAr
MTYwLDExIEBAIEltYWdlRGVjb2Rlcjo6SW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwg
QWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlCiAgICAgICAgIG1fbmF0aXZlRGVjb2Rl
ciA9IGFkb3B0Q0YoQ0dJbWFnZVNvdXJjZUNyZWF0ZUluY3JlbWVudGFsKG51bGxwdHIpKTsKIH0K
IAorUmVmUHRyPEltYWdlRGVjb2Rlcj4gSW1hZ2VEZWNvZGVyOjpjcmVhdGUoU2hhcmVkQnVmZmVy
JiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBJbWFnZURlY29kZXIoZGF0YSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKSk7Cit9CisKIHNpemVfdCBJbWFnZURlY29kZXI6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5l
UHJvcGVydGllcygpCiB7CiAgICAgLy8gTWVhc3VyZWQgYnkgdHJhY2luZyBtYWxsb2MvY2FsbG9j
IGNhbGxzIG9uIE1hYyBPUyAxMC42LjYsIHg4Nl82NC4KQEAgLTE3Myw3ICsxNzUsNyBAQCBzaXpl
X3QgSW1hZ2VEZWNvZGVyOjpieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKQogICAg
IC8vIGJlaGF2aW9yIGlzIHVuY2hhbmdlZC4KICAgICByZXR1cm4gMTMwODg7CiB9Ci0gICAgCisK
IFN0cmluZyBJbWFnZURlY29kZXI6OnV0aSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIENHSW1hZ2VT
b3VyY2VHZXRUeXBlKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSk7CkBAIC0xODQsNiArMTg2LDExIEBA
IFN0cmluZyBJbWFnZURlY29kZXI6OmZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QKICAgICByZXR1
cm4gV2ViQ29yZTo6cHJlZmVycmVkRXh0ZW5zaW9uRm9ySW1hZ2VTb3VyY2VUeXBlKHV0aSgpKTsK
IH0KIAorYm9vbCBJbWFnZURlY29kZXI6OmlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsKK30KKwogRW5jb2RlZERhdGFTdGF0dXMgSW1h
Z2VEZWNvZGVyOjplbmNvZGVkRGF0YVN0YXR1cygpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChDR0lt
YWdlU291cmNlR2V0U3RhdHVzKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzI4NGU3MWZmNDZjYWM1NzM0NTQyYmEwY2JmNmI4
NWJmNWFlMDQyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJEZWNvZGluZ09wdGlv
bnMuaCIKLSNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCi0jaW5jbHVkZSAiSW1hZ2VUeXBl
cy5oIgotI2luY2x1ZGUgIkludFBvaW50LmgiCi0jaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1
ZGUgIk5hdGl2ZUltYWdlLmgiCi0jaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+Ci0jaW5jbHVkZSA8
d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAK
LWNsYXNzIFNoYXJlZEJ1ZmZlcjsKLSAgICAKLWNsYXNzIEltYWdlRGVjb2RlciA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxJbWFnZURlY29kZXI+IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKLXB1YmxpYzoKLSAgICBJbWFnZURlY29kZXIoU2hhcmVkQnVmZmVyJiBkYXRhLCBB
bHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwotCi0gICAgc3RhdGljIFJl
ZjxJbWFnZURlY29kZXI+IGNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFs
cGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbikKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGVjb2Rl
cihkYXRhLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKLSAgICB9
Ci0gICAgCi0gICAgc3RhdGljIHNpemVfdCBieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRp
ZXMoKTsKLQotICAgIEVuY29kZWREYXRhU3RhdHVzIGVuY29kZWREYXRhU3RhdHVzKCkgY29uc3Q7
Ci0gICAgYm9vbCBpc1NpemVBdmFpbGFibGUoKSB7IHJldHVybiBlbmNvZGVkRGF0YVN0YXR1cygp
ID49IEVuY29kZWREYXRhU3RhdHVzOjpTaXplQXZhaWxhYmxlOyB9Ci0gICAgc2l6ZV90IGZyYW1l
Q291bnQoKSBjb25zdDsKLSAgICBSZXBldGl0aW9uQ291bnQgcmVwZXRpdGlvbkNvdW50KCkgY29u
c3Q7Ci0gICAgU3RyaW5nIHV0aSgpIGNvbnN0OwotICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lv
bigpIGNvbnN0OwotICAgIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdDsK
LQotICAgIEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwg
PSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdDsKLSAgICBib29sIGZyYW1lSXNDb21w
bGV0ZUF0SW5kZXgoc2l6ZV90KSBjb25zdDsKLSAgICBJbWFnZU9yaWVudGF0aW9uIGZyYW1lT3Jp
ZW50YXRpb25BdEluZGV4KHNpemVfdCkgY29uc3Q7Ci0gICAgCi0gICAgZmxvYXQgZnJhbWVEdXJh
dGlvbkF0SW5kZXgoc2l6ZV90KSBjb25zdDsKLSAgICBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4
KHNpemVfdCkgY29uc3Q7Ci0gICAgYm9vbCBmcmFtZUFsbG93U3Vic2FtcGxpbmdBdEluZGV4KHNp
emVfdCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90LCBTdWJz
YW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCkgY29uc3Q7Ci0gICAgCi0g
ICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1w
bGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRp
b25zJiA9IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpIGNvbnN0OwotICAgIAotICAgIHZvaWQg
c2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCk7Ci0gICAgYm9vbCBp
c0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0K
LSAgICB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIHsgfQotICAgIAotcHJvdGVj
dGVkOgotICAgIGJvb2wgbV9pc0FsbERhdGFSZWNlaXZlZCB7IGZhbHNlIH07Ci0gICAgUmV0YWlu
UHRyPENHSW1hZ2VTb3VyY2VSZWY+IG1fbmF0aXZlRGVjb2RlcjsKLX07Ci0KLX0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJl
Y3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNv
ZGVyRGlyZWN0MkQuY3BwCmluZGV4IDZhYmU3ZTNlYWU1NzYwMjJlZDY0YWQ0NTkzNWE2NTdmOWJj
OTgxMjAuLmVhMmM0ZjZhOTNhZTY3NWE5MjA1MDNjNGZhNmI0NDU4NWFmNmU5NDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJl
Y3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdl
RGVjb2RlckRpcmVjdDJELmNwcApAQCAtMjQsMjcgKzI0LDI5IEBACiAgKi8KIAogI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkltYWdlRGVjb2RlckRpcmVjdDJELmgiCisjaW5jbHVkZSAi
SW1hZ2VEZWNvZGVyIgogCiAjaWYgVVNFKERJUkVDVDJEKQogCiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0LmgiCiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgotI2luY2x1ZGUgIkludFBv
aW50LmgiCi0jaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1
ZGUgPFdpbkNvZGVjLmg+CiAjaW5jbHVkZSA8ZDJkMS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUltYWdlRGVjb2Rlcjo6SW1hZ2VE
ZWNvZGVyKCkKK0ltYWdlRGVjb2Rlcjo6SW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZlciYsIEFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKIH0KIAorUmVmUHRyPEltYWdl
RGVjb2Rlcj4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VEZWNvZGVyKGRhdGEsIGFscGhhT3B0
aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOworfQorCiBJV0lDSW1hZ2luZ0ZhY3Rv
cnkqIEltYWdlRGVjb2Rlcjo6c3lzdGVtSW1hZ2luZ0ZhY3RvcnkoKQogewogICAgIHN0YXRpYyBJ
V0lDSW1hZ2luZ0ZhY3RvcnkqIHdpY0ltYWdpbmdGYWN0b3J5ID0gbnVsbHB0cjsKQEAgLTc5LDYg
KzgxLDEyIEBAIEVuY29kZWREYXRhU3RhdHVzIEltYWdlRGVjb2Rlcjo6ZW5jb2RlZERhdGFTdGF0
dXMoKSBjb25zdAogICAgIHJldHVybiBFbmNvZGVkRGF0YVN0YXR1czo6VW5rbm93bjsKIH0KIAor
Ym9vbCBJbWFnZURlY29kZXI6OmlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwogSW50U2l6ZSBJbWFnZURlY29k
ZXI6OnNpemUoKSBjb25zdAogewogICAgIGlmICghbV9uYXRpdmVEZWNvZGVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVj
dDJELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVy
RGlyZWN0MkQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGJkNGQ2ZjY3ZTZiYTMy
NTg4YjRhN2Q4MWIxOGU2NzQ5OGQ2YjA5OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1h
Z2VEZWNvZGVyRGlyZWN0MkQuaAorKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQot
I2luY2x1ZGUgIkNPTVB0ci5oIgotI2luY2x1ZGUgIkltYWdlU291cmNlLmgiCi0jaW5jbHVkZSAi
SW50U2l6ZS5oIgotI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgotCi1pbnRlcmZhY2UgSUQyRDFS
ZW5kZXJUYXJnZXQ7Ci1pbnRlcmZhY2UgSVdJQ0JpdG1hcERlY29kZXI7Ci1pbnRlcmZhY2UgSVdJ
Q0ltYWdpbmdGYWN0b3J5OwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEltYWdlRGVj
b2RlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbWFnZURlY29kZXI+IHsKLSAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBJbWFnZURlY29kZXIoKTsKLSAg
ICAKLSAgICBzdGF0aWMgUmVmPEltYWdlRGVjb2Rlcj4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYsIEFs
cGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGVjb2RlcigpKTsKLSAgICB9Ci0gICAgCi0gICAgc3Rh
dGljIHNpemVfdCBieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKTsKLSAgICAKLSAg
ICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdDsKLSAgICBFbmNvZGVkRGF0YVN0YXR1
cyBlbmNvZGVkRGF0YVN0YXR1cygpIGNvbnN0OwotICAgIGJvb2wgaXNTaXplQXZhaWxhYmxlKCkg
Y29uc3Q7Ci0gICAgCi0gICAgLy8gQWx3YXlzIG9yaWdpbmFsIHNpemUsIHdpdGhvdXQgc3Vic2Ft
cGxpbmcuCi0gICAgSW50U2l6ZSBzaXplKCkgY29uc3Q7Ci0gICAgc2l6ZV90IGZyYW1lQ291bnQo
KSBjb25zdDsKLQotICAgIFJlcGV0aXRpb25Db3VudCByZXBldGl0aW9uQ291bnQoKSBjb25zdDsK
LSAgICBzdGQ6Om9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3Q7Ci0gICAgCi0gICAg
SW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNh
bXBsaW5nTGV2ZWw6OkRlZmF1bHQpIGNvbnN0OwotICAgIGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJ
bmRleChzaXplX3QpIGNvbnN0OwotICAgIEltYWdlT3JpZW50YXRpb24gZnJhbWVPcmllbnRhdGlv
bkF0SW5kZXgoc2l6ZV90KSBjb25zdDsKLSAgICAKLSAgICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJ
bmRleChzaXplX3QpIGNvbnN0OwotICAgIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90
KSBjb25zdDsKLSAgICBib29sIGZyYW1lQWxsb3dTdWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBj
b25zdDsKLSAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5n
TGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdDsKLSAgICAKLSAgICBOYXRp
dmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2
ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0g
RGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykgY29uc3Q7Ci0gICAgCi0gICAgdm9pZCBzZXREYXRh
KFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAgICBib29sIGlzQWxsRGF0
YVJlY2VpdmVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQotICAgIHZv
aWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgeyB9Ci0KLSAgICB2b2lkIHNldFRhcmdl
dENvbnRleHQoSUQyRDFSZW5kZXJUYXJnZXQqKTsKLQotICAgIHN0YXRpYyBJV0lDSW1hZ2luZ0Zh
Y3RvcnkqIHN5c3RlbUltYWdpbmdGYWN0b3J5KCk7Ci0KLXByb3RlY3RlZDoKLSAgICBib29sIG1f
aXNBbGxEYXRhUmVjZWl2ZWQgeyBmYWxzZSB9OwotICAgIG11dGFibGUgSW50U2l6ZSBtX3NpemU7
Ci0gICAgQ09NUHRyPElXSUNCaXRtYXBEZWNvZGVyPiBtX25hdGl2ZURlY29kZXI7Ci0gICAgQ09N
UHRyPElEMkQxUmVuZGVyVGFyZ2V0PiBtX3JlbmRlclRhcmdldDsKLX07Ci0KLX0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIu
Y3BwCmluZGV4IDRiYTRkYjJhNjIxY2ZjMmY1OGE3NjRiZTRkYWZlMjM1MWM1Yjc1OGQuLjc2N2Fj
M2EyOGQ3NGNiNTA0MDNmYmMwOTQ5ZThkMWNkOWYzYThhNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcApAQCAt
MjgsNyArMjgsNiBAQAogI2luY2x1ZGUgIklDT0ltYWdlRGVjb2Rlci5oIgogI2luY2x1ZGUgIkpQ
RUdJbWFnZURlY29kZXIuaCIKICNpbmNsdWRlICJQTkdJbWFnZURlY29kZXIuaCIKLSNpbmNsdWRl
ICJTaGFyZWRCdWZmZXIuaCIKICNpZiBVU0UoV0VCUCkKICNpbmNsdWRlICJXRUJQSW1hZ2VEZWNv
ZGVyLmgiCiAjZW5kaWYKQEAgLTk4LDYgKzk3LDEyIEBAIGJvb2wgbWF0Y2hlc0NVUlNpZ25hdHVy
ZShjaGFyKiBjb250ZW50cykKIAogfQogCitJbWFnZURlY29kZXI6OkltYWdlRGVjb2RlcihTaGFy
ZWRCdWZmZXImLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCisgICAgOiBtX3ByZW11bHRpcGx5QWxw
aGEoYWxwaGFPcHRpb24gPT0gQWxwaGFPcHRpb246OlByZW11bHRpcGxpZWQpCisgICAgLCBtX2ln
bm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uID09IEdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uOjpJZ25vcmVkKQoreworfQorCiBSZWZQdHI8SW1hZ2VE
ZWNvZGVyPiBJbWFnZURlY29kZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0
aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbikKIHsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbGVuZ3RoT2ZMb25n
ZXN0U2lnbmF0dXJlID0gMTQ7IC8vIFRvIHdpdDogIlJJRkY/Pz8/V0VCUFZQIgpAQCAtMTcwLDYg
KzE3NSw5MCBAQCB0ZW1wbGF0ZSA8TWF0Y2hUeXBlIHR5cGU+IGludCBnZXRTY2FsZWRWYWx1ZShj
b25zdCBWZWN0b3I8aW50PiYgc2NhbGVkVmFsdWVzLCBpbgogCiB9CiAKK3NpemVfdCBJbWFnZURl
Y29kZXI6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpCit7CisgICAgcmV0dXJu
IDA7Cit9CisKK3ZvaWQgSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpCit7CisgICAgaWYgKG1fZW5jb2RlZERhdGFTdGF0dXMgPT0g
RW5jb2RlZERhdGFTdGF0dXM6OkVycm9yKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2RhdGEg
PSAmZGF0YTsKKyAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1
czo6VHlwZUF2YWlsYWJsZSkgeworICAgICAgICBtX2RlY29kaW5nU2l6ZUZyb21TZXREYXRhID0g
dHJ1ZTsKKyAgICAgICAgdHJ5RGVjb2RlU2l6ZShhbGxEYXRhUmVjZWl2ZWQpOworICAgICAgICBt
X2RlY29kaW5nU2l6ZUZyb21TZXREYXRhID0gZmFsc2U7CisgICAgfQorCisgICAgaWYgKG1fZW5j
b2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkVycm9yKQorICAgICAgICByZXR1
cm47CisKKyAgICBpZiAoYWxsRGF0YVJlY2VpdmVkKSB7CisgICAgICAgIEFTU0VSVChtX2VuY29k
ZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpTaXplQXZhaWxhYmxlKTsKKyAgICAg
ICAgbV9lbmNvZGVkRGF0YVN0YXR1cyA9IEVuY29kZWREYXRhU3RhdHVzOjpDb21wbGV0ZTsKKyAg
ICB9Cit9CisKK2Jvb2wgSW1hZ2VEZWNvZGVyOjppc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0Cit7
CisgICAgQVNTRVJUKCFtX2RlY29kaW5nU2l6ZUZyb21TZXREYXRhKTsKKyAgICByZXR1cm4gbV9l
bmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6Q29tcGxldGU7Cit9CisKK0Vu
Y29kZWREYXRhU3RhdHVzIEltYWdlRGVjb2Rlcjo6ZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdAor
eworICAgIHJldHVybiBtX2VuY29kZWREYXRhU3RhdHVzOworfQorCitib29sIEltYWdlRGVjb2Rl
cjo6c2V0RmFpbGVkKCkKK3sKKyAgICAvLyBTZXRzIHRoZSAiZGVjb2RlIGZhaWx1cmUiIGZsYWcu
IEZvciBjYWxsZXIgY29udmVuaWVuY2UgKHNpbmNlIHNvCisgICAgLy8gbWFueSBjYWxsZXJzIHdh
bnQgdG8gcmV0dXJuIGZhbHNlIGFmdGVyIGNhbGxpbmcgdGhpcyksIHJldHVybnMgZmFsc2UKKyAg
ICAvLyB0byBlbmFibGUgZWFzeSB0YWlsY2FsbGluZy4gU3ViY2xhc3NlcyBtYXkgb3ZlcnJpZGUg
dGhpcyB0byBhbHNvCisgICAgLy8gY2xlYW4gdXAgYW55IGxvY2FsIGRhdGEuCisgICAgbV9lbmNv
ZGVkRGF0YVN0YXR1cyA9IEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcjsKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK1N0cmluZyBJbWFnZURlY29kZXI6OmZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKKy8vIFJldHVybnMgd2hldGhlciB0aGUgc2l6
ZSBpcyBsZWdhbCAoaS5lLiBub3QgZ29pbmcgdG8gcmVzdWx0IGluCisvLyBvdmVyZmxvdyBlbHNl
d2hlcmUpLiBJZiBub3QsIG1hcmtzIGRlY29kaW5nIGFzIGZhaWxlZC4KK2Jvb2wgSW1hZ2VEZWNv
ZGVyOjpzZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCit7CisgICAgaWYgKEltYWdlQmFja2lu
Z1N0b3JlOjppc092ZXJTaXplKHNpemUpKQorICAgICAgICByZXR1cm4gc2V0RmFpbGVkKCk7Cisg
ICAgbV9zaXplID0gc2l6ZTsKKyAgICBtX2VuY29kZWREYXRhU3RhdHVzID0gRW5jb2RlZERhdGFT
dGF0dXM6OlNpemVBdmFpbGFibGU7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3NpemVfdCBJbWFn
ZURlY29kZXI6OmZyYW1lQ291bnQoKSBjb25zdAoreworICAgIC8vIExhemlseS1kZWNvZGVzIGVu
b3VnaCBvZiB0aGUgaW1hZ2UgdG8gZ2V0IHRoZSBmcmFtZSBjb3VudCAoaWYKKyAgICAvLyBwb3Nz
aWJsZSksIHdpdGhvdXQgZGVjb2RpbmcgdGhlIGluZGl2aWR1YWwgZnJhbWVzLgorICAgIC8vIEZJ
WE1FOiBSaWdodCBub3cgdGhhdCBoYXMgdG8gYmUgZG9uZSBieSBlYWNoIHN1YmNsYXNzOyBmYWN0
b3IgdGhlCisgICAgLy8gZGVjb2RlIGNhbGwgb3V0IGFuZCB1c2UgaXQgaGVyZS4KKyAgICByZXR1
cm4gMTsKK30KKworUmVwZXRpdGlvbkNvdW50IEltYWdlRGVjb2Rlcjo6cmVwZXRpdGlvbkNvdW50
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gUmVwZXRpdGlvbkNvdW50Tm9uZTsKK30KKworc3RkOjpv
cHRpb25hbDxJbnRQb2ludD4gSW1hZ2VEZWNvZGVyOjpob3RTcG90KCkgY29uc3QKK3sKKyAgICAv
LyBJZiB0aGUgaW1hZ2UgaGFzIGEgY3Vyc29yIGhvdC1zcG90LCBzdG9yZXMgaXQgaW4gdGhlIGFy
Z3VtZW50CisgICAgLy8gYW5kIHJldHVybnMgdHJ1ZS4gT3RoZXJ3aXNlIHJldHVybnMgZmFsc2Uu
CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKyAgICAKIGJvb2wgSW1hZ2VEZWNvZGVyOjpm
cmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKICAgICBJbWFnZUZyYW1lKiBi
dWZmZXIgPSBmcmFtZUJ1ZmZlckF0SW5kZXgoaW5kZXgpOwpAQCAtMjA5LDYgKzI5OCwyNiBAQCBm
bG9hdCBJbWFnZURlY29kZXI6OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkKICAg
ICByZXR1cm4gZHVyYXRpb247CiB9CiAKK0ltYWdlT3JpZW50YXRpb24gSW1hZ2VEZWNvZGVyOjpm
cmFtZU9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fb3Jp
ZW50YXRpb247Cit9CisKK0ludFNpemUgSW1hZ2VEZWNvZGVyOjpmcmFtZVNpemVBdEluZGV4KHNp
emVfdCwgU3Vic2FtcGxpbmdMZXZlbCkKK3sKKyAgICAvLyBUaGlzIHdpbGwgb25seSBkaWZmZXIg
ZnJvbSBzaXplKCkgZm9yIElDTyAod2hlcmUgZWFjaCBmcmFtZSBpcyBhCisgICAgLy8gZGlmZmVy
ZW50IGljb24pIG9yIG90aGVyIGZvcm1hdHMgd2hlcmUgZGlmZmVyZW50IGZyYW1lcyBhcmUgZGlm
ZmVyZW50CisgICAgLy8gc2l6ZXMuIFRoaXMgZG9lcyBOT1QgZGlmZmVyIGZyb20gc2l6ZSgpIGZv
ciBHSUYsIHNpbmNlIGRlY29kaW5nIEdJRnMKKyAgICAvLyBjb21wb3NpdGVzIGFueSBzbWFsbGVy
IGZyYW1lcyBhZ2FpbnN0IHByZXZpb3VzIGZyYW1lcyB0byBjcmVhdGUgZnVsbC0KKyAgICAvLyBz
aXplIGZyYW1lcy4KKyAgICByZXR1cm4gc2l6ZSgpOworfQorCitib29sIEltYWdlRGVjb2Rlcjo6
ZnJhbWVBbGxvd1N1YnNhbXBsaW5nQXRJbmRleChzaXplX3QpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGZhbHNlOworfQorCiBOYXRpdmVJbWFnZVB0ciBJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1h
Z2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdP
cHRpb25zJikKIHsKICAgICAvLyBaZXJvLWhlaWdodCBpbWFnZXMgY2FuIGNhdXNlIHByb2JsZW1z
IGZvciBzb21lIHBvcnRzLiBJZiB3ZSBoYXZlIGFuIGVtcHR5IGltYWdlIGRpbWVuc2lvbiwganVz
dCBiYWlsLgpAQCAtMjI2LDYgKzMzNSwxMiBAQCBOYXRpdmVJbWFnZVB0ciBJbWFnZURlY29kZXI6
OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZQogCiB2
b2lkIEltYWdlRGVjb2Rlcjo6cHJlcGFyZVNjYWxlRGF0YUlmTmVjZXNzYXJ5KCkKIHsKKyNpZiBF
TkFCTEUoSU1BR0VfREVDT0RFUl9ET1dOX1NBTVBMSU5HKQorICAgIHN0YXRpYyBjb25zdCBpbnQg
TWF4TnVtUGl4ZWxzIHsgMTAyNCAqIDEwMjQgfTsKKyNlbHNlCisgICAgc3RhdGljIGNvbnN0IGlu
dCBNYXhOdW1QaXhlbHMgeyAtMSB9OworI2VuZGlmCisgICAgCiAgICAgbV9zY2FsZWQgPSBmYWxz
ZTsKICAgICBtX3NjYWxlZENvbHVtbnMuY2xlYXIoKTsKICAgICBtX3NjYWxlZFJvd3MuY2xlYXIo
KTsKQEAgLTIzMywxMSArMzQ4LDExIEBAIHZvaWQgSW1hZ2VEZWNvZGVyOjpwcmVwYXJlU2NhbGVE
YXRhSWZOZWNlc3NhcnkoKQogICAgIGludCB3aWR0aCA9IHNpemUoKS53aWR0aCgpOwogICAgIGlu
dCBoZWlnaHQgPSBzaXplKCkuaGVpZ2h0KCk7CiAgICAgaW50IG51bVBpeGVscyA9IGhlaWdodCAq
IHdpZHRoOwotICAgIGlmIChtX21heE51bVBpeGVscyA8PSAwIHx8IG51bVBpeGVscyA8PSBtX21h
eE51bVBpeGVscykKKyAgICBpZiAoTWF4TnVtUGl4ZWxzIDw9IDAgfHwgbnVtUGl4ZWxzIDw9IE1h
eE51bVBpeGVscykKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9zY2FsZWQgPSB0cnVlOwotICAg
IGRvdWJsZSBzY2FsZSA9IHNxcnQobV9tYXhOdW1QaXhlbHMgLyAoZG91YmxlKW51bVBpeGVscyk7
CisgICAgZG91YmxlIHNjYWxlID0gc3FydChNYXhOdW1QaXhlbHMgLyAoZG91YmxlKW51bVBpeGVs
cyk7CiAgICAgZmlsbFNjYWxlZFZhbHVlcyhtX3NjYWxlZENvbHVtbnMsIHNjYWxlLCB3aWR0aCk7
CiAgICAgZmlsbFNjYWxlZFZhbHVlcyhtX3NjYWxlZFJvd3MsIHNjYWxlLCBoZWlnaHQpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VE
ZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURl
Y29kZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzQyY2RiMGRkZjZmYTRmZjRh
ZGZlOWU4OWFlYTljYTgxYzI2YzNmMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFn
ZURlY29kZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDIzMiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA2LCAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDgtMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4KLSAqIENvcHlyaWdodCAo
QykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS0yMDEwLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMg
c3Vic2lkaWFyeSgtaWVzKQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0g
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkltYWdlRnJhbWUuaCIKLSNpbmNsdWRlICJJ
bnRSZWN0LmgiCi0jaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVu
LmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMu
aD4KLSNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0j
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIEltYWdlRGVjb2RlciBpcyBhIGJhc2UgZm9yIGFs
bCBmb3JtYXQtc3BlY2lmaWMgZGVjb2RlcnMKLS8vIChlLmcuIEpQRUdJbWFnZURlY29kZXIpLiBU
aGlzIGJhc2UgbWFuYWdlcyB0aGUgSW1hZ2VGcmFtZSBjYWNoZS4KLS8vCi0vLyBFTkFCTEUoSU1B
R0VfREVDT0RFUl9ET1dOX1NBTVBMSU5HKSBhbGxvd3MgaW1hZ2UgZGVjb2RlcnMgdG8gZG93bnNh
bXBsZQotLy8gYXQgZGVjb2RlIHRpbWUuIEltYWdlIGRlY29kZXJzIHdpbGwgZG93bnNhbXBsZSBh
bnkgaW1hZ2VzIGxhcmdlciB0aGFuCi0vLyB8bV9tYXhOdW1QaXhlbHN8LiBGSVhNRTogTm90IHll
dCBzdXBwb3J0ZWQgYnkgYWxsIGRlY29kZXJzLgotY2xhc3MgSW1hZ2VEZWNvZGVyIDogcHVibGlj
IFRocmVhZFNhZmVSZWZDb3VudGVkPEltYWdlRGVjb2Rlcj4gewotICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEltYWdlRGVjb2Rlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgot
ICAgIEltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCi0gICAgICAgIDogbV9wcmVt
dWx0aXBseUFscGhhKGFscGhhT3B0aW9uID09IEFscGhhT3B0aW9uOjpQcmVtdWx0aXBsaWVkKQot
ICAgICAgICAsIG1faWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUoZ2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24gPT0gR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb246Oklnbm9yZWQpCi0gICAgewot
ICAgIH0KLQotICAgIHZpcnR1YWwgfkltYWdlRGVjb2RlcigpCi0gICAgewotICAgIH0KLQotICAg
IC8vIFJldHVybnMgbnVsbHB0ciBpZiB3ZSBjYW4ndCBzbmlmZiBhIHN1cHBvcnRlZCB0eXBlIGZy
b20gdGhlIHByb3ZpZGVkIGRhdGEgKHBvc3NpYmx5Ci0gICAgLy8gYmVjYXVzZSB0aGVyZSBpc24n
dCBlbm91Z2ggZGF0YSB5ZXQpLgotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyPiBjcmVh
dGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pOwotCi0gICAgdmlydHVhbCBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCA9
IDA7Ci0KLSAgICBib29sIHByZW11bHRpcGx5QWxwaGEoKSBjb25zdCB7IHJldHVybiBtX3ByZW11
bHRpcGx5QWxwaGE7IH0KLQotICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdAotICAg
IHsKLSAgICAgICAgQVNTRVJUKCFtX2RlY29kaW5nU2l6ZUZyb21TZXREYXRhKTsKLSAgICAgICAg
cmV0dXJuIG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkNvbXBsZXRl
OwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwg
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpCi0gICAgewotICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0
YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3IpCi0gICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgbV9kYXRhID0gJmRhdGE7Ci0gICAgICAgIGlmIChtX2VuY29kZWREYXRhU3RhdHVz
ID09IEVuY29kZWREYXRhU3RhdHVzOjpUeXBlQXZhaWxhYmxlKSB7Ci0gICAgICAgICAgICBtX2Rl
Y29kaW5nU2l6ZUZyb21TZXREYXRhID0gdHJ1ZTsKLSAgICAgICAgICAgIHRyeURlY29kZVNpemUo
YWxsRGF0YVJlY2VpdmVkKTsKLSAgICAgICAgICAgIG1fZGVjb2RpbmdTaXplRnJvbVNldERhdGEg
PSBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09
IEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICBpZiAoYWxsRGF0YVJlY2VpdmVkKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9lbmNvZGVkRGF0
YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6U2l6ZUF2YWlsYWJsZSk7Ci0gICAgICAgICAg
ICBtX2VuY29kZWREYXRhU3RhdHVzID0gRW5jb2RlZERhdGFTdGF0dXM6OkNvbXBsZXRlOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgRW5jb2RlZERhdGFTdGF0dXMgZW5jb2RlZERhdGFTdGF0dXMo
KSBjb25zdCB7IHJldHVybiBtX2VuY29kZWREYXRhU3RhdHVzOyB9Ci0KLSAgICBib29sIGlzU2l6
ZUF2YWlsYWJsZSgpIHsgcmV0dXJuIG1fZW5jb2RlZERhdGFTdGF0dXMgPj0gRW5jb2RlZERhdGFT
dGF0dXM6OlNpemVBdmFpbGFibGU7IH0KLQotICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkgeyBy
ZXR1cm4gaXNTaXplQXZhaWxhYmxlKCkgPyBtX3NpemUgOiBJbnRTaXplKCk7IH0KLQotICAgIElu
dFNpemUgc2NhbGVkU2l6ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gbV9zY2FsZWQgPyBJbnRT
aXplKG1fc2NhbGVkQ29sdW1ucy5zaXplKCksIG1fc2NhbGVkUm93cy5zaXplKCkpIDogc2l6ZSgp
OwotICAgIH0KLQotICAgIC8vIFRoaXMgd2lsbCBvbmx5IGRpZmZlciBmcm9tIHNpemUoKSBmb3Ig
SUNPICh3aGVyZSBlYWNoIGZyYW1lIGlzIGEKLSAgICAvLyBkaWZmZXJlbnQgaWNvbikgb3Igb3Ro
ZXIgZm9ybWF0cyB3aGVyZSBkaWZmZXJlbnQgZnJhbWVzIGFyZSBkaWZmZXJlbnQKLSAgICAvLyBz
aXplcy4gVGhpcyBkb2VzIE5PVCBkaWZmZXIgZnJvbSBzaXplKCkgZm9yIEdJRiwgc2luY2UgZGVj
b2RpbmcgR0lGcwotICAgIC8vIGNvbXBvc2l0ZXMgYW55IHNtYWxsZXIgZnJhbWVzIGFnYWluc3Qg
cHJldmlvdXMgZnJhbWVzIHRvIGNyZWF0ZSBmdWxsLQotICAgIC8vIHNpemUgZnJhbWVzLgotICAg
IHZpcnR1YWwgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZl
bCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBzaXplKCk7Ci0gICAgfQotCi0gICAgLy8gUmV0dXJu
cyB3aGV0aGVyIHRoZSBzaXplIGlzIGxlZ2FsIChpLmUuIG5vdCBnb2luZyB0byByZXN1bHQgaW4K
LSAgICAvLyBvdmVyZmxvdyBlbHNld2hlcmUpLiBJZiBub3QsIG1hcmtzIGRlY29kaW5nIGFzIGZh
aWxlZC4KLSAgICB2aXJ0dWFsIGJvb2wgc2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQotICAg
IHsKLSAgICAgICAgaWYgKEltYWdlQmFja2luZ1N0b3JlOjppc092ZXJTaXplKHNpemUpKQotICAg
ICAgICAgICAgcmV0dXJuIHNldEZhaWxlZCgpOwotICAgICAgICBtX3NpemUgPSBzaXplOwotICAg
ICAgICBtX2VuY29kZWREYXRhU3RhdHVzID0gRW5jb2RlZERhdGFTdGF0dXM6OlNpemVBdmFpbGFi
bGU7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIC8vIExhemlseS1kZWNvZGVz
IGVub3VnaCBvZiB0aGUgaW1hZ2UgdG8gZ2V0IHRoZSBmcmFtZSBjb3VudCAoaWYKLSAgICAvLyBw
b3NzaWJsZSksIHdpdGhvdXQgZGVjb2RpbmcgdGhlIGluZGl2aWR1YWwgZnJhbWVzLgotICAgIC8v
IEZJWE1FOiBSaWdodCBub3cgdGhhdCBoYXMgdG8gYmUgZG9uZSBieSBlYWNoIHN1YmNsYXNzOyBm
YWN0b3IgdGhlCi0gICAgLy8gZGVjb2RlIGNhbGwgb3V0IGFuZCB1c2UgaXQgaGVyZS4KLSAgICB2
aXJ0dWFsIHNpemVfdCBmcmFtZUNvdW50KCkgY29uc3QgeyByZXR1cm4gMTsgfQotCi0gICAgdmly
dHVhbCBSZXBldGl0aW9uQ291bnQgcmVwZXRpdGlvbkNvdW50KCkgY29uc3QgeyByZXR1cm4gUmVw
ZXRpdGlvbkNvdW50Tm9uZTsgfQotCi0gICAgLy8gRGVjb2RlcyBhcyBtdWNoIG9mIHRoZSByZXF1
ZXN0ZWQgZnJhbWUgYXMgcG9zc2libGUsIGFuZCByZXR1cm5zIGFuCi0gICAgLy8gSW1hZ2VEZWNv
ZGVyLW93bmVkIHBvaW50ZXIuCi0gICAgdmlydHVhbCBJbWFnZUZyYW1lKiBmcmFtZUJ1ZmZlckF0
SW5kZXgoc2l6ZV90KSA9IDA7Ci0KLSAgICBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6
ZV90KTsKLQotICAgIC8vIE1ha2UgdGhlIGJlc3QgZWZmb3J0IGd1ZXNzIHRvIGNoZWNrIGlmIHRo
ZSByZXF1ZXN0ZWQgZnJhbWUgaGFzIGFscGhhIGNoYW5uZWwuCi0gICAgYm9vbCBmcmFtZUhhc0Fs
cGhhQXRJbmRleChzaXplX3QpIGNvbnN0OwotCi0gICAgLy8gTnVtYmVyIG9mIGJ5dGVzIGluIHRo
ZSBkZWNvZGVkIGZyYW1lIHJlcXVlc3RlZC4gUmV0dXJuIDAgaWYgbm90IHlldCBkZWNvZGVkLgot
ICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCkgY29uc3Q7Ci0gICAgCi0gICAg
ZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90KTsKLSAgICAKLSAgICBOYXRpdmVJbWFn
ZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBT
dWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2Rp
bmdNb2RlOjpTeW5jaHJvbm91cyk7Ci0KLSAgICB2b2lkIHNldElnbm9yZUdhbW1hQW5kQ29sb3JQ
cm9maWxlKGJvb2wgZmxhZykgeyBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlID0gZmxhZzsg
fQotICAgIGJvb2wgaWdub3Jlc0dhbW1hQW5kQ29sb3JQcm9maWxlKCkgY29uc3QgeyByZXR1cm4g
bV9pZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZTsgfQotCi0gICAgSW1hZ2VPcmllbnRhdGlvbiBm
cmFtZU9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50YXRp
b247IH0KLSAgICAKLSAgICBib29sIGZyYW1lQWxsb3dTdWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgZW51bSB7IElDQ0NvbG9yUHJvZmlsZUhl
YWRlckxlbmd0aCA9IDEyOCB9OwotCi0gICAgc3RhdGljIGJvb2wgcmdiQ29sb3JQcm9maWxlKGNv
bnN0IGNoYXIqIHByb2ZpbGVEYXRhLCB1bnNpZ25lZCBwcm9maWxlTGVuZ3RoKQotICAgIHsKLSAg
ICAgICAgQVNTRVJUX1VOVVNFRChwcm9maWxlTGVuZ3RoLCBwcm9maWxlTGVuZ3RoID49IElDQ0Nv
bG9yUHJvZmlsZUhlYWRlckxlbmd0aCk7Ci0KLSAgICAgICAgcmV0dXJuICFtZW1jbXAoJnByb2Zp
bGVEYXRhWzE2XSwgIlJHQiAiLCA0KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgc2l6ZV90IGJ5dGVz
RGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpIHsgcmV0dXJuIDA7IH0KLSAgICAKLSAgICBz
dGF0aWMgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxvYXQsIFN1
YnNhbXBsaW5nTGV2ZWwpIHsgcmV0dXJuIFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQ7IH0KLQot
ICAgIHN0YXRpYyBib29sIGlucHV0RGV2aWNlQ29sb3JQcm9maWxlKGNvbnN0IGNoYXIqIHByb2Zp
bGVEYXRhLCB1bnNpZ25lZCBwcm9maWxlTGVuZ3RoKQotICAgIHsKLSAgICAgICAgQVNTRVJUX1VO
VVNFRChwcm9maWxlTGVuZ3RoLCBwcm9maWxlTGVuZ3RoID49IElDQ0NvbG9yUHJvZmlsZUhlYWRl
ckxlbmd0aCk7Ci0KLSAgICAgICAgcmV0dXJuICFtZW1jbXAoJnByb2ZpbGVEYXRhWzEyXSwgIm1u
dHIiLCA0KSB8fCAhbWVtY21wKCZwcm9maWxlRGF0YVsxMl0sICJzY25yIiwgNCk7Ci0gICAgfQot
Ci0gICAgLy8gU2V0cyB0aGUgImRlY29kZSBmYWlsdXJlIiBmbGFnLiBGb3IgY2FsbGVyIGNvbnZl
bmllbmNlIChzaW5jZSBzbwotICAgIC8vIG1hbnkgY2FsbGVycyB3YW50IHRvIHJldHVybiBmYWxz
ZSBhZnRlciBjYWxsaW5nIHRoaXMpLCByZXR1cm5zIGZhbHNlCi0gICAgLy8gdG8gZW5hYmxlIGVh
c3kgdGFpbGNhbGxpbmcuIFN1YmNsYXNzZXMgbWF5IG92ZXJyaWRlIHRoaXMgdG8gYWxzbwotICAg
IC8vIGNsZWFuIHVwIGFueSBsb2NhbCBkYXRhLgotICAgIHZpcnR1YWwgYm9vbCBzZXRGYWlsZWQo
KQotICAgIHsKLSAgICAgICAgbV9lbmNvZGVkRGF0YVN0YXR1cyA9IEVuY29kZWREYXRhU3RhdHVz
OjpFcnJvcjsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGJvb2wgZmFpbGVk
KCkgY29uc3QgeyByZXR1cm4gbV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1
czo6RXJyb3I7IH0KLQotICAgIC8vIENsZWFycyBkZWNvZGVkIHBpeGVsIGRhdGEgZnJvbSBiZWZv
cmUgdGhlIHByb3ZpZGVkIGZyYW1lIHVubGVzcyB0aGF0Ci0gICAgLy8gZGF0YSBtYXkgYmUgbmVl
ZGVkIHRvIGRlY29kZSBmdXR1cmUgZnJhbWVzIChlLmcuIGR1ZSB0byBHSUYgZnJhbWUKLSAgICAv
LyBjb21wb3NpdGluZykuCi0gICAgdmlydHVhbCB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShz
aXplX3QpIHsgfQotCi0gICAgLy8gSWYgdGhlIGltYWdlIGhhcyBhIGN1cnNvciBob3Qtc3BvdCwg
c3RvcmVzIGl0IGluIHRoZSBhcmd1bWVudAotICAgIC8vIGFuZCByZXR1cm5zIHRydWUuIE90aGVy
d2lzZSByZXR1cm5zIGZhbHNlLgotICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxJbnRQb2ludD4g
aG90U3BvdCgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQotCi1wcm90ZWN0ZWQ6Ci0g
ICAgdm9pZCBwcmVwYXJlU2NhbGVEYXRhSWZOZWNlc3NhcnkoKTsKLSAgICBpbnQgdXBwZXJCb3Vu
ZFNjYWxlZFgoaW50IG9yaWdYLCBpbnQgc2VhcmNoU3RhcnQgPSAwKTsKLSAgICBpbnQgbG93ZXJC
b3VuZFNjYWxlZFgoaW50IG9yaWdYLCBpbnQgc2VhcmNoU3RhcnQgPSAwKTsKLSAgICBpbnQgdXBw
ZXJCb3VuZFNjYWxlZFkoaW50IG9yaWdZLCBpbnQgc2VhcmNoU3RhcnQgPSAwKTsKLSAgICBpbnQg
bG93ZXJCb3VuZFNjYWxlZFkoaW50IG9yaWdZLCBpbnQgc2VhcmNoU3RhcnQgPSAwKTsKLSAgICBp
bnQgc2NhbGVkWShpbnQgb3JpZ1ksIGludCBzZWFyY2hTdGFydCA9IDApOwotCi0gICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOyAvLyBUaGUgZW5jb2RlZCBkYXRhLgotICAgIFZlY3RvcjxJ
bWFnZUZyYW1lLCAxPiBtX2ZyYW1lQnVmZmVyQ2FjaGU7Ci0gICAgYm9vbCBtX3NjYWxlZCB7IGZh
bHNlIH07Ci0gICAgVmVjdG9yPGludD4gbV9zY2FsZWRDb2x1bW5zOwotICAgIFZlY3RvcjxpbnQ+
IG1fc2NhbGVkUm93czsKLSAgICBib29sIG1fcHJlbXVsdGlwbHlBbHBoYTsKLSAgICBib29sIG1f
aWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGU7Ci0gICAgSW1hZ2VPcmllbnRhdGlvbiBtX29yaWVu
dGF0aW9uOwotCi1wcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCB0cnlEZWNvZGVTaXplKGJvb2wp
ID0gMDsKLQotICAgIEludFNpemUgbV9zaXplOwotICAgIEVuY29kZWREYXRhU3RhdHVzIG1fZW5j
b2RlZERhdGFTdGF0dXMgeyBFbmNvZGVkRGF0YVN0YXR1czo6VHlwZUF2YWlsYWJsZSB9OwotICAg
IGJvb2wgbV9kZWNvZGluZ1NpemVGcm9tU2V0RGF0YSB7IGZhbHNlIH07Ci0jaWYgRU5BQkxFKElN
QUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKLSAgICBzdGF0aWMgY29uc3QgaW50IG1fbWF4TnVt
UGl4ZWxzIHsgMTAyNCAqIDEwMjQgfTsKLSNlbHNlCi0gICAgc3RhdGljIGNvbnN0IGludCBtX21h
eE51bVBpeGVscyB7IC0xIH07Ci0jZW5kaWYKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311638</attachid>
            <date>2017-05-31 14:44:15 -0700</date>
            <delta_ts>2017-05-31 15:10:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172773-20170531144414.patch</filename>
            <type>text/plain</type>
            <size>42651</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3NTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDJmYmZmNzM4ZjZmNmI5
YzBhNzExMjcyYzlmODFmNDc0NGYxNzhhYy4uZmJhOTJjMmJmODY1YjM4YjNmMWQ2NmQxZjYwYWE0
ZjQ2OWI2YjQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE3LTA1LTMxICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgSGF2ZSBh
IHNpbmdsZSBJbWFnZURlY29kZXIgaGVhZGVyIGZpbGUgZm9yIGFsbCBwb3J0cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyNzczCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNv
ZGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjp+SW1hZ2VEZWNv
ZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6aXNTaXplQXZhaWxhYmxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c2V0UHJlbXVsdGlwbHlBbHBoYSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnByZW11bHRpcGx5QWxwaGEpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzZXRJZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6Omlnbm9yZXNHYW1tYUFuZENvbG9yUHJv
ZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzY2FsZWRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRGVjb2Rlcjo6ZmFpbGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZy
YW1lQ2FjaGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVR5cGVzLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
Ojppc0FsbERhdGFSZWNlaXZlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VEZWNvZGVyQ0cuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
OjpJbWFnZURlY29kZXIpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRGVjb2Rlcjo6aXNBbGxEYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oOiBSZW1vdmVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXI6OkltYWdlRGVjb2Rlcik6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZURlY29kZXI6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcyk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1h
Z2VEZWNvZGVyOjppc0FsbERhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURl
Y29kZXI6OmVuY29kZWREYXRhU3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rl
cjo6c2V0RmFpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6ZmlsZW5hbWVF
eHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzZXRTaXplKToKKyAg
ICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6ZnJhbWVDb3VudCk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZURlY29kZXI6OnJlcGV0aXRpb25Db3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZURlY29kZXI6OmhvdFNwb3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpm
cmFtZU9yaWVudGF0aW9uQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6
OmZyYW1lU2l6ZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFt
ZUFsbG93U3Vic2FtcGxpbmdBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rl
cjo6cHJlcGFyZVNjYWxlRGF0YUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaDogUmVtb3ZlZC4KKwogMjAxNy0wNS0zMCAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmVydCBhY2NpZGVudGFsbHkgY2hl
Y2tlZCBpbiBjaGFuZ2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggODZhMjZhODRhZGZmYTBkZmU3ZjYzNzk0MDkyNjk2ZDM4Y2M0
NzE5ZS4uYjBkN2EzNmU1ZmI1YTdiZmFmNGU5MmZjN2ZjZWRhOWUxMjUwZjBmOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjUw
MCwxMCArMjUwMCwxMCBAQAogCQk1M0VGNzY2QzE2NTMxOTk0MDA0Q0JFNDkgLyogU2V0dGluZ3NN
YWNyb3MuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUzRUY3NjZBMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5o
ICovOyB9OwogCQk1NTBBMEJDOTA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTBBMEJDNzA4
NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgKi87IH07CiAJCTU1MEEwQkNBMDg1
RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlm
aWVkTmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTU1MzRFRTkyMUVERTU2OEQwMDgxOEMwNCAvKiBJbWFnZURlY29kZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MzRFRTkxMUVERTU2ODkwMDgx
OEMwNCAvKiBJbWFnZURlY29kZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1NTUwQ0I0MjFFOTU1RTNDMDAxMTFBQTAgLyogSW1hZ2VUeXBlcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU1MENCNDEx
RTk1NUUzQzAwMTExQUEwIC8qIEltYWdlVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NTUxMzAwMTFFN0NDQ0NCMDBBNjlFMzggLyogRGVj
b2RpbmdPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NTUxMzAwMDFFN0NDQ0NBMDBBNjlFMzggLyogRGVjb2RpbmdPcHRpb25zLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTU1Qjg3RUMxQ0FB
RjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1NUI4N0VBMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFn
ZURlY29kZXJDRy5jcHAgKi87IH07Ci0JCTU1NUI4N0VEMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFn
ZURlY29kZXJDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTU1Qjg3RUIxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmggKi87IH07CiAJ
CTU1NzZBNTY0MUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1NzZBNTYyMUQ4OEE3MDgwMENDQzA0
QyAvKiBJbWFnZUZyYW1lLmNwcCAqLzsgfTsKIAkJNTU3NkE1NjUxRDg4QTcwODAwQ0NDMDRDIC8q
IEltYWdlRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDU1NzZBNTYzMUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTU5N0Y4MjYxRDkxQzMxMzAw
NjZCQzIxIC8qIEltYWdlRnJhbWVDYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1NTk3RjgyNDFEOTFDMzEzMDA2NkJDMjEgLyogSW1hZ2VGcmFt
ZUNhY2hlLmNwcCAqLzsgfTsKQEAgLTEwMjcxLDEwICsxMDI3MSwxMCBAQAogCQk1M0VGNzY2QTE2
NTMwQTYxMDA0Q0JFNDkgLyogU2V0dGluZ3NNYWNyb3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2V0dGluZ3NNYWNyb3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTUwQTBCQzcwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUXVhbGlmaWVk
TmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMg
PSAwOyB9OwogCQk1NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0
aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWFsaWZp
ZWROYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMg
PSAwOyB9OworCQk1NTM0RUU5MTFFREU1Njg5MDA4MThDMDQgLyogSW1hZ2VEZWNvZGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEltYWdlRGVjb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1NTUwQ0I0MTFFOTU1RTNDMDAxMTFBQTAgLyogSW1hZ2VUeXBlcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTU1NTEzMDAwMUU3Q0NDQ0EwMEE2OUUzOCAvKiBEZWNvZGluZ09wdGlvbnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVjb2RpbmdPcHRpb25zLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1NUI4N0VBMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURl
Y29kZXJDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZURl
Y29kZXJDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU1NUI4N0VCMUNBQUYw
QUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbWFnZURlY29kZXJDRy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
NTc2QTU2MjFEODhBNzA4MDBDQ0MwNEMgLyogSW1hZ2VGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTU3NkE1NjMxRDg4QTcwODAwQ0NDMDRDIC8qIEltYWdlRnJhbWUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VGcmFtZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1NTk3RjgyNDFEOTFDMzEzMDA2NkJDMjEgLyogSW1hZ2VGcmFtZUNh
Y2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlRnJhbWVD
YWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzA1NCw3ICsyMzA1NCw2
IEBACiAJCQkJMjJCRDlGODAxMzUzNjRGRTAwOUJEMTAyIC8qIEltYWdlQnVmZmVyRGF0YUNHLmgg
Ki8sCiAJCQkJQjI3NTM1MzAwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlQ0cuY3BwICovLAogCQkJ
CTU1NUI4N0VBMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5jcHAgKi8sCi0JCQkJ
NTU1Qjg3RUIxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmggKi8sCiAJCQkJNEIz
NDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0cuaCAqLywKIAkJCQk0QjM0ODA5
MTBFRUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VDR01hYy5tbSAqLywKIAkJCQlCMjc1MzUz
MjBCMDUzODE0MDAyQ0U2NEYgLyogSW50UG9pbnRDRy5jcHAgKi8sCkBAIC0yMzIyOCw2ICsyMzIy
Nyw3IEBACiAJCQkJNDNEMjU5NzYxM0M4MTZGNDAwNjA4NTU5IC8qIEltYWdlQnVmZmVyLmNwcCAq
LywKIAkJCQlCMkExMEI5MTBCMzgxOEJEMDAwOTlBQTQgLyogSW1hZ2VCdWZmZXIuaCAqLywKIAkJ
CQkyMkJEOUY3RDEzNTM2MjVDMDA5QkQxMDIgLyogSW1hZ2VCdWZmZXJEYXRhLmggKi8sCisJCQkJ
NTUzNEVFOTExRURFNTY4OTAwODE4QzA0IC8qIEltYWdlRGVjb2Rlci5oICovLAogCQkJCTU1NzZB
NTYyMUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmNwcCAqLywKIAkJCQk1NTc2QTU2MzFE
ODhBNzA4MDBDQ0MwNEMgLyogSW1hZ2VGcmFtZS5oICovLAogCQkJCTU1OTdGODI0MUQ5MUMzMTMw
MDY2QkMyMSAvKiBJbWFnZUZyYW1lQ2FjaGUuY3BwICovLApAQCAtMjc2NzEsNyArMjc2NzEsNiBA
QAogCQkJCTUxMDE5MkQ2MThCNkI5QjcwMDdGQzdBMSAvKiBJbWFnZUNvbnRyb2xzUm9vdEVsZW1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDE5MkQyMThCNkI5QUIwMDdGQzdBMSAvKiBJbWFn
ZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Nzk3OTFBMEQ2
QjlEMEMwMDM4NTFCOSAvKiBJbWFnZURhdGEuaCBpbiBIZWFkZXJzICovLAotCQkJCTU1NUI4N0VE
MUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTcyMDVBQjYxMjM5MjkxMDAwQjE3MzgwIC8qIEltYWdlRG9jdW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTU1NzZBNTY1MUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1NTk3RjgyNzFEOTFDMzEzMDA2NkJDMjEgLyogSW1hZ2VGcmFtZUNhY2hlLmgg
aW4gSGVhZGVycyAqLywKQEAgLTI4MjMwLDYgKzI4MjI5LDcgQEAKIAkJCQkzMTZEQ0I0RTFFNzkx
MEE2MDAxQjVGODcgLyogSlNSVENJY2VHYXRoZXJpbmdTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMDczNzk0RUMxOUVFMzQxRTAwRTVBMDQ1IC8qIEpTUlRDSWNlU2VydmVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkzMTZEQ0IyMDFFNzhDQTU1MDAxQjVGODcgLyogSlNSVENPZmZlckFuc3dlck9w
dGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1MzRFRTkyMUVERTU2OEQwMDgxOEMwNCAvKiBJ
bWFnZURlY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OTY5REJBMTdEMTQxNTEwMDdGRjg0
MiAvKiBKU1JUQ1BlZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzk2OURCODE3
RDE0MTUxMDA3RkY4NDIgLyogSlNSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50LmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1RTJDNDM3NDFCQ0YwRDc1MDAwMUUyQkUgLyogSlNSVENSdHBQYXJhbWV0ZXJz
LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VEZWNvZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWZiMzBjZDk0NTVhODYzNTBiZDg1NzMxYzczMWM0
ZmFkZTZiMjJiZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlRGVjb2Rlci5oCkBAIC0wLDAgKzEsMTM4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE2LCAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJEZWNvZGluZ09wdGlvbnMuaCIKKyNpZiAhVVNFKENHKSAmJiAhVVNFKERJUkVDVDJEKQor
I2luY2x1ZGUgIkltYWdlRnJhbWUuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNlbmRp
ZgorI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKKyNpbmNsdWRlICJJbWFnZVR5cGVzLmgi
CisjaW5jbHVkZSAiSW50UG9pbnQuaCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVkZSAi
TmF0aXZlSW1hZ2UuaCIKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYv
VGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworI2lmIFVTRShDRykKK3R5cGVkZWYgc3RydWN0IENH
SW1hZ2VTb3VyY2UqIENHSW1hZ2VTb3VyY2VSZWY7CisjZWxpZiBVU0UoRElSRUNUMkQpCitpbnRl
cmZhY2UgSUQyRDFSZW5kZXJUYXJnZXQ7CitpbnRlcmZhY2UgSVdJQ0JpdG1hcERlY29kZXI7Citp
bnRlcmZhY2UgSVdJQ0ltYWdpbmdGYWN0b3J5OworI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKyAgICAKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKKworY2xhc3MgSW1hZ2VEZWNvZGVyIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEltYWdlRGVjb2Rlcj4geworICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEltYWdlRGVjb2Rlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGlj
OgorICAgIEltYWdlRGVjb2RlcihTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgdmlydHVhbCB+SW1hZ2VEZWNvZGVyKCkgeyB9
CisKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlRGVjb2Rlcj4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBzdGF0
aWMgc2l6ZV90IGJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpOworCisgICAgRW5j
b2RlZERhdGFTdGF0dXMgZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdDsKKyAgICBib29sIGlzU2l6
ZUF2YWlsYWJsZSgpIHsgcmV0dXJuIGVuY29kZWREYXRhU3RhdHVzKCkgPj0gRW5jb2RlZERhdGFT
dGF0dXM6OlNpemVBdmFpbGFibGU7IH0KKyAgICB2aXJ0dWFsIHNpemVfdCBmcmFtZUNvdW50KCkg
Y29uc3Q7CisgICAgdmlydHVhbCBSZXBldGl0aW9uQ291bnQgcmVwZXRpdGlvbkNvdW50KCkgY29u
c3Q7CisgICAgdmlydHVhbCBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdDsKKyAgICB2
aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdDsKKworICAgIElu
dFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1w
bGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdDsKKyAgICBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5k
ZXgoc2l6ZV90KSBjb25zdDsKKyAgICBJbWFnZU9yaWVudGF0aW9uIGZyYW1lT3JpZW50YXRpb25B
dEluZGV4KHNpemVfdCkgY29uc3Q7CisKKyAgICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChz
aXplX3QpIGNvbnN0OworICAgIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90KSBjb25z
dDsKKyAgICBib29sIGZyYW1lQWxsb3dTdWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBjb25zdDsK
KyAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwg
PSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdDsKKworICAgIE5hdGl2ZUltYWdlUHRy
IGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNh
bXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ01v
ZGU6OlN5bmNocm9ub3VzKSBjb25zdDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXREYXRhKFNoYXJl
ZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBib29sIGlzQWxsRGF0YVJlY2Vp
dmVkKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXpl
X3QpIHsgfQorCisjaWYgVVNFKENHKQorICAgIFN0cmluZyB1dGkoKSBjb25zdDsKKyNlbGlmIFVT
RShESVJFQ1QyRCkKKyAgICB2b2lkIHNldFRhcmdldENvbnRleHQoSUQyRDFSZW5kZXJUYXJnZXQq
KTsKKyAgICBzdGF0aWMgSVdJQ0ltYWdpbmdGYWN0b3J5KiBzeXN0ZW1JbWFnaW5nRmFjdG9yeSgp
OworI2Vsc2UKKyAgICB2b2lkIHNldFByZW11bHRpcGx5QWxwaGEoYm9vbCBwcmVtdWx0aXBseUFs
cGhhKSB7ICBtX3ByZW11bHRpcGx5QWxwaGEgPSBwcmVtdWx0aXBseUFscGhhOyB9CisgICAgYm9v
bCBwcmVtdWx0aXBseUFscGhhKCkgY29uc3QgeyByZXR1cm4gbV9wcmVtdWx0aXBseUFscGhhOyB9
CisgICAgdm9pZCBzZXRJZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZShib29sIGlnbm9yZUdhbW1h
QW5kQ29sb3JQcm9maWxlKSB7IG1faWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUgPSBpZ25vcmVH
YW1tYUFuZENvbG9yUHJvZmlsZTsgfQorICAgIGJvb2wgaWdub3Jlc0dhbW1hQW5kQ29sb3JQcm9m
aWxlKCkgY29uc3QgeyByZXR1cm4gbV9pZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZTsgfQorICAg
IAorICAgIHZpcnR1YWwgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUmKTsKKyAgICB2aXJ0dWFs
IEludFNpemUgc2l6ZSgpIHsgcmV0dXJuIGlzU2l6ZUF2YWlsYWJsZSgpID8gbV9zaXplIDogSW50
U2l6ZSgpOyB9CisgICAgSW50U2l6ZSBzY2FsZWRTaXplKCkgeyByZXR1cm4gbV9zY2FsZWQgPyBJ
bnRTaXplKG1fc2NhbGVkQ29sdW1ucy5zaXplKCksIG1fc2NhbGVkUm93cy5zaXplKCkpIDogc2l6
ZSgpOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdHJ5RGVjb2RlU2l6ZShib29sKSA9IDA7CisgICAg
dmlydHVhbCBib29sIHNldEZhaWxlZCgpOworICAgIGJvb2wgZmFpbGVkKCkgY29uc3QgeyByZXR1
cm4gbV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3I7IH0KKyAg
ICAKKyAgICB2aXJ0dWFsIEltYWdlRnJhbWUqIGZyYW1lQnVmZmVyQXRJbmRleChzaXplX3QpID0g
MDsKKworICAgIHZvaWQgcHJlcGFyZVNjYWxlRGF0YUlmTmVjZXNzYXJ5KCk7CisgICAgaW50IHVw
cGVyQm91bmRTY2FsZWRYKGludCBvcmlnWCwgaW50IHNlYXJjaFN0YXJ0ID0gMCk7CisgICAgaW50
IGxvd2VyQm91bmRTY2FsZWRYKGludCBvcmlnWCwgaW50IHNlYXJjaFN0YXJ0ID0gMCk7CisgICAg
aW50IHVwcGVyQm91bmRTY2FsZWRZKGludCBvcmlnWSwgaW50IHNlYXJjaFN0YXJ0ID0gMCk7Cisg
ICAgaW50IGxvd2VyQm91bmRTY2FsZWRZKGludCBvcmlnWSwgaW50IHNlYXJjaFN0YXJ0ID0gMCk7
CisgICAgaW50IHNjYWxlZFkoaW50IG9yaWdZLCBpbnQgc2VhcmNoU3RhcnQgPSAwKTsKKyNlbmRp
ZgorCitwcm90ZWN0ZWQ6CisjaWYgVVNFKENHKQorICAgIFJldGFpblB0cjxDR0ltYWdlU291cmNl
UmVmPiBtX25hdGl2ZURlY29kZXI7CisgICAgYm9vbCBtX2lzQWxsRGF0YVJlY2VpdmVkIHsgZmFs
c2UgfTsKKyNlbGlmIFVTRShESVJFQ1QyRCkKKyAgICBDT01QdHI8SVdJQ0JpdG1hcERlY29kZXI+
IG1fbmF0aXZlRGVjb2RlcjsKKyAgICBDT01QdHI8SUQyRDFSZW5kZXJUYXJnZXQ+IG1fcmVuZGVy
VGFyZ2V0OworI2Vsc2UKKyAgICBib29sIG1fcHJlbXVsdGlwbHlBbHBoYTsKKyAgICBib29sIG1f
aWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGU7CisKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBt
X2RhdGE7IC8vIFRoZSBlbmNvZGVkIGRhdGEuCisgICAgVmVjdG9yPEltYWdlRnJhbWUsIDE+IG1f
ZnJhbWVCdWZmZXJDYWNoZTsKKyAgICBFbmNvZGVkRGF0YVN0YXR1cyBtX2VuY29kZWREYXRhU3Rh
dHVzIHsgRW5jb2RlZERhdGFTdGF0dXM6OlR5cGVBdmFpbGFibGUgfTsKKyAgICBib29sIG1fZGVj
b2RpbmdTaXplRnJvbVNldERhdGEgeyBmYWxzZSB9OworCisgICAgSW50U2l6ZSBtX3NpemU7Cisg
ICAgSW1hZ2VPcmllbnRhdGlvbiBtX29yaWVudGF0aW9uOworCisgICAgYm9vbCBtX3NjYWxlZCB7
IGZhbHNlIH07CisgICAgVmVjdG9yPGludD4gbV9zY2FsZWRDb2x1bW5zOworICAgIFZlY3Rvcjxp
bnQ+IG1fc2NhbGVkUm93czsKKyNlbmRpZgorfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5jcHAKaW5kZXggYTc0NWVhODAx
NjdmNjNjMjIyYzc1MjI2Y2I5YzEyOTUyY2MyZTcyMi4uOTkzMGQxYmEwODhiMTZhMzQ2YTE2NjA4
ODMwYzVmNWNhODAyZjExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuY3BwCkBAIC0yNywxOCArMjcsMTUgQEAKICNpbmNsdWRl
ICJJbWFnZUZyYW1lQ2FjaGUuaCIKIAogI2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAiSW1h
Z2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5oIgogI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgog
Ci0jaWYgVVNFKENHKQotI2luY2x1ZGUgIkltYWdlRGVjb2RlckNHLmgiCi0jZWxpZiBVU0UoRElS
RUNUMkQpCisjaWYgIVVTRShDRykgJiYgVVNFKERJUkVDVDJEKQogI2luY2x1ZGUgIkltYWdlRGVj
b2RlckRpcmVjdDJELmgiCiAjaW5jbHVkZSA8V2luQ29kZWMuaD4KLSNlbHNlCi0jaW5jbHVkZSAi
SW1hZ2VEZWNvZGVyLmgiCiAjZW5kaWYKIAogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRp
Yy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VT
b3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2Uu
Y3BwCmluZGV4IDNkNDgzZmI5Mzk3MjJjMmNhZjc2ZmI2NzE1ZDBiZmFjYTM5ZGI0YzEuLjFkNDY2
NzgwNjc0NDFkNzdhMjI5MDJiMmY3NjVjNjk5MDU1OTY5ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKQEAgLTMwLDE5ICszMCwxMiBA
QAogI2luY2x1ZGUgIkltYWdlU291cmNlLmgiCiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQu
aCIKKyNpbmNsdWRlICJJbWFnZURlY29kZXIuaCIKKyNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9u
LmgiCiAKLSNpZiBVU0UoQ0cpCi0jaW5jbHVkZSAiSW1hZ2VEZWNvZGVyQ0cuaCIKLSNpZiBQTEFU
Rk9STShXSU4pCisjaWYgVVNFKENHKSAmJiBQTEFURk9STShXSU4pCiAjaW5jbHVkZSA8V2ViS2l0
U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2VuZGlmCi0jZWxpZiBV
U0UoRElSRUNUMkQpCi0jaW5jbHVkZSAiSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaCIKLSNlbHNlCi0j
aW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCi0jZW5kaWYKLQotI2luY2x1ZGUgIkltYWdlT3JpZW50
YXRpb24uaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VU
eXBlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VUeXBlcy5oCmlu
ZGV4IGRiNjEyMTJlMmVmODlmNTVhZDUzZjY2NjNkODM2MDRiMDY1ODA2YmEuLjc1MTE3M2IxYTZj
MDZjZTRkMjA3MjAyYjEwMGJjM2I2OGE2ODY0ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9JbWFnZVR5cGVzLmgKQEAgLTI1LDEwICsyNSw2IEBACiAKICNwcmFnbWEg
b25jZQogCi0jaWYgVVNFKENHKQotdHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZVNvdXJjZSogQ0dJbWFn
ZVNvdXJjZVJlZjsKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIFRoZXJlIGFy
ZSBmb3VyIHN1YnNhbXBsaW5nIGxldmVsczogMCA9IDF4LCAxID0gMC41eCwgMiA9IDAuMjV4LCAz
ID0gMC4xMjV4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VEZWNvZGVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCmluZGV4IGM3ZTExNGVmMTI3ZWViYjgwOWZiNGY1MjYyMTQz
NDNlMzgyNTdhMmMuLjcyZDMwYjQ2NTRjOGExNmMxMjEzMWFhMDczMDlhOGY4NzVjYTA5NGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2Rl
ckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURl
Y29kZXJDRy5jcHAKQEAgLTI0LDE1ICsyNCwxMyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJJbWFnZURlY29kZXJDRy5oIgorI2luY2x1ZGUgIkltYWdlRGVjb2Rlci5o
IgogCiAjaWYgVVNFKENHKQogCiAjaW5jbHVkZSAiSW1hZ2VJT1NQSS5oIgogI2luY2x1ZGUgIklt
YWdlT3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJJbWFnZVNvdXJjZUNHLmgiCi0jaW5jbHVkZSAi
SW50UG9pbnQuaCIKLSNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgog
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5o
PgpAQCAtMTYzLDYgKzE2MSwxMSBAQCBJbWFnZURlY29kZXI6OkltYWdlRGVjb2RlcihTaGFyZWRC
dWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZQogICAgICAgICBt
X25hdGl2ZURlY29kZXIgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDcmVhdGVJbmNyZW1lbnRhbChu
dWxscHRyKSk7CiB9CiAKK1JlZlB0cjxJbWFnZURlY29kZXI+IEltYWdlRGVjb2Rlcjo6Y3JlYXRl
KFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQoreworICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSW1hZ2VEZWNvZGVyKGRhdGEsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbikpOworfQorCiBzaXplX3QgSW1hZ2VEZWNvZGVyOjpieXRlc0RlY29k
ZWRUb0RldGVybWluZVByb3BlcnRpZXMoKQogewogICAgIC8vIE1lYXN1cmVkIGJ5IHRyYWNpbmcg
bWFsbG9jL2NhbGxvYyBjYWxscyBvbiBNYWMgT1MgMTAuNi42LCB4ODZfNjQuCkBAIC0xNzMsNyAr
MTc2LDcgQEAgc2l6ZV90IEltYWdlRGVjb2Rlcjo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9w
ZXJ0aWVzKCkKICAgICAvLyBiZWhhdmlvciBpcyB1bmNoYW5nZWQuCiAgICAgcmV0dXJuIDEzMDg4
OwogfQotICAgIAorCiBTdHJpbmcgSW1hZ2VEZWNvZGVyOjp1dGkoKSBjb25zdAogewogICAgIHJl
dHVybiBDR0ltYWdlU291cmNlR2V0VHlwZShtX25hdGl2ZURlY29kZXIuZ2V0KCkpOwpAQCAtMTg0
LDYgKzE4NywxMSBAQCBTdHJpbmcgSW1hZ2VEZWNvZGVyOjpmaWxlbmFtZUV4dGVuc2lvbigpIGNv
bnN0CiAgICAgcmV0dXJuIFdlYkNvcmU6OnByZWZlcnJlZEV4dGVuc2lvbkZvckltYWdlU291cmNl
VHlwZSh1dGkoKSk7CiB9CiAKK2Jvb2wgSW1hZ2VEZWNvZGVyOjppc0FsbERhdGFSZWNlaXZlZCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7Cit9CisKIEVuY29kZWRE
YXRhU3RhdHVzIEltYWdlRGVjb2Rlcjo6ZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdAogewogICAg
IHN3aXRjaCAoQ0dJbWFnZVNvdXJjZUdldFN0YXR1cyhtX25hdGl2ZURlY29kZXIuZ2V0KCkpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURl
Y29kZXJDRy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNv
ZGVyQ0cuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmMyODRlNzFmZjQ2Y2FjNTcz
NDU0MmJhMGNiZjZiODViZjVhZTA0Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURl
Y29kZXJDRy5oCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAi
RGVjb2RpbmdPcHRpb25zLmgiCi0jaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgotI2luY2x1
ZGUgIkltYWdlVHlwZXMuaCIKLSNpbmNsdWRlICJJbnRQb2ludC5oIgotI2luY2x1ZGUgIkludFNp
emUuaCIKLSNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgotI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5o
PgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0gICAgCi1jbGFzcyBTaGFyZWRCdWZmZXI7Ci0gICAgCi1jbGFzcyBJbWFnZURlY29k
ZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW1hZ2VEZWNvZGVyPiB7Ci0gICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgSW1hZ2VEZWNvZGVyKFNoYXJlZEJ1
ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKLQot
ICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBB
bHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBJbWFnZURlY29kZXIoZGF0YSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKSk7Ci0gICAgfQotICAgIAotICAgIHN0YXRpYyBzaXplX3QgYnl0ZXNEZWNvZGVkVG9EZXRl
cm1pbmVQcm9wZXJ0aWVzKCk7Ci0KLSAgICBFbmNvZGVkRGF0YVN0YXR1cyBlbmNvZGVkRGF0YVN0
YXR1cygpIGNvbnN0OwotICAgIGJvb2wgaXNTaXplQXZhaWxhYmxlKCkgeyByZXR1cm4gZW5jb2Rl
ZERhdGFTdGF0dXMoKSA+PSBFbmNvZGVkRGF0YVN0YXR1czo6U2l6ZUF2YWlsYWJsZTsgfQotICAg
IHNpemVfdCBmcmFtZUNvdW50KCkgY29uc3Q7Ci0gICAgUmVwZXRpdGlvbkNvdW50IHJlcGV0aXRp
b25Db3VudCgpIGNvbnN0OwotICAgIFN0cmluZyB1dGkoKSBjb25zdDsKLSAgICBTdHJpbmcgZmls
ZW5hbWVFeHRlbnNpb24oKSBjb25zdDsKLSAgICBzdGQ6Om9wdGlvbmFsPEludFBvaW50PiBob3RT
cG90KCkgY29uc3Q7Ci0KLSAgICBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJz
YW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCkgY29uc3Q7Ci0gICAgYm9v
bCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCkgY29uc3Q7Ci0gICAgSW1hZ2VPcmllbnRh
dGlvbiBmcmFtZU9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0OwotICAgIAotICAgIGZs
b2F0IGZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCkgY29uc3Q7Ci0gICAgYm9vbCBmcmFtZUhh
c0FscGhhQXRJbmRleChzaXplX3QpIGNvbnN0OwotICAgIGJvb2wgZnJhbWVBbGxvd1N1YnNhbXBs
aW5nQXRJbmRleChzaXplX3QpIGNvbnN0OwotICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNBdEluZGV4
KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpIGNv
bnN0OwotICAgIAotICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNp
emVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0
IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSBjb25zdDsKLSAg
ICAKLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
OwotICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQWxsRGF0
YVJlY2VpdmVkOyB9Ci0gICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSB7IH0K
LSAgICAKLXByb3RlY3RlZDoKLSAgICBib29sIG1faXNBbGxEYXRhUmVjZWl2ZWQgeyBmYWxzZSB9
OwotICAgIFJldGFpblB0cjxDR0ltYWdlU291cmNlUmVmPiBtX25hdGl2ZURlY29kZXI7Ci19Owot
Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1h
Z2VEZWNvZGVyRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAppbmRleCA2YWJlN2UzZWFlNTc2MDIyZWQ2NGFk
NDU5MzVhNjU3ZjliYzk4MTIwLi5iMTRlMTk0YTJlMTQxMjQ0ZGU1MTE3OTRhMDg0MzIyOTU4ZmI3
Njk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1h
Z2VEZWNvZGVyRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKQEAgLTI0LDE0ICsyNCwxMiBAQAogICov
CiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJbWFnZURlY29kZXJEaXJlY3QyRC5o
IgorI2luY2x1ZGUgIkltYWdlRGVjb2RlciIKIAogI2lmIFVTRShESVJFQ1QyRCkKIAogI2luY2x1
ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKLSNp
bmNsdWRlICJJbnRQb2ludC5oIgotI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZm
ZXIuaCIKQEAgLTQxLDEwICszOSwxNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUltYWdl
RGVjb2Rlcjo6SW1hZ2VEZWNvZGVyKCkKK0ltYWdlRGVjb2Rlcjo6SW1hZ2VEZWNvZGVyKFNoYXJl
ZEJ1ZmZlciYsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKIH0K
IAorUmVmUHRyPEltYWdlRGVjb2Rlcj4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFP
cHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VEZWNvZGVy
KGRhdGEsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOworfQorCiBJ
V0lDSW1hZ2luZ0ZhY3RvcnkqIEltYWdlRGVjb2Rlcjo6c3lzdGVtSW1hZ2luZ0ZhY3RvcnkoKQog
ewogICAgIHN0YXRpYyBJV0lDSW1hZ2luZ0ZhY3RvcnkqIHdpY0ltYWdpbmdGYWN0b3J5ID0gbnVs
bHB0cjsKQEAgLTc5LDYgKzgyLDEyIEBAIEVuY29kZWREYXRhU3RhdHVzIEltYWdlRGVjb2Rlcjo6
ZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdAogICAgIHJldHVybiBFbmNvZGVkRGF0YVN0YXR1czo6
VW5rbm93bjsKIH0KIAorYm9vbCBJbWFnZURlY29kZXI6OmlzQWxsRGF0YVJlY2VpdmVkKCkgY29u
c3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwogSW50
U2l6ZSBJbWFnZURlY29kZXI6OnNpemUoKSBjb25zdAogewogICAgIGlmICghbV9uYXRpdmVEZWNv
ZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0lt
YWdlRGVjb2RlckRpcmVjdDJELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MGJkNGQ2ZjY3ZTZiYTMyNTg4YjRhN2Q4MWIxOGU2NzQ5OGQ2YjA5OC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaAorKysgL2Rldi9udWxsCkBAIC0xLDg4
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkNPTVB0ci5oIgotI2luY2x1ZGUgIkltYWdlU291cmNl
LmgiCi0jaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgotCi1p
bnRlcmZhY2UgSUQyRDFSZW5kZXJUYXJnZXQ7Ci1pbnRlcmZhY2UgSVdJQ0JpdG1hcERlY29kZXI7
Ci1pbnRlcmZhY2UgSVdJQ0ltYWdpbmdGYWN0b3J5OwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LWNsYXNzIEltYWdlRGVjb2RlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbWFnZURl
Y29kZXI+IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBJbWFn
ZURlY29kZXIoKTsKLSAgICAKLSAgICBzdGF0aWMgUmVmPEltYWdlRGVjb2Rlcj4gY3JlYXRlKFNo
YXJlZEJ1ZmZlciYsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGVjb2RlcigpKTsKLSAgICB9
Ci0gICAgCi0gICAgc3RhdGljIHNpemVfdCBieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRp
ZXMoKTsKLSAgICAKLSAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdDsKLSAgICBF
bmNvZGVkRGF0YVN0YXR1cyBlbmNvZGVkRGF0YVN0YXR1cygpIGNvbnN0OwotICAgIGJvb2wgaXNT
aXplQXZhaWxhYmxlKCkgY29uc3Q7Ci0gICAgCi0gICAgLy8gQWx3YXlzIG9yaWdpbmFsIHNpemUs
IHdpdGhvdXQgc3Vic2FtcGxpbmcuCi0gICAgSW50U2l6ZSBzaXplKCkgY29uc3Q7Ci0gICAgc2l6
ZV90IGZyYW1lQ291bnQoKSBjb25zdDsKLQotICAgIFJlcGV0aXRpb25Db3VudCByZXBldGl0aW9u
Q291bnQoKSBjb25zdDsKLSAgICBzdGQ6Om9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29u
c3Q7Ci0gICAgCi0gICAgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxp
bmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpIGNvbnN0OwotICAgIGJvb2wgZnJh
bWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QpIGNvbnN0OwotICAgIEltYWdlT3JpZW50YXRpb24g
ZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90KSBjb25zdDsKLSAgICAKLSAgICBmbG9hdCBm
cmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0OwotICAgIGJvb2wgZnJhbWVIYXNBbHBo
YUF0SW5kZXgoc2l6ZV90KSBjb25zdDsKLSAgICBib29sIGZyYW1lQWxsb3dTdWJzYW1wbGluZ0F0
SW5kZXgoc2l6ZV90KSBjb25zdDsKLSAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXpl
X3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdDsK
LSAgICAKLSAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3Qs
IFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNv
ZGluZ09wdGlvbnMmID0gRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykgY29uc3Q7Ci0gICAgCi0g
ICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAg
ICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNl
aXZlZDsgfQotICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgeyB9Ci0KLSAg
ICB2b2lkIHNldFRhcmdldENvbnRleHQoSUQyRDFSZW5kZXJUYXJnZXQqKTsKLQotICAgIHN0YXRp
YyBJV0lDSW1hZ2luZ0ZhY3RvcnkqIHN5c3RlbUltYWdpbmdGYWN0b3J5KCk7Ci0KLXByb3RlY3Rl
ZDoKLSAgICBib29sIG1faXNBbGxEYXRhUmVjZWl2ZWQgeyBmYWxzZSB9OwotICAgIG11dGFibGUg
SW50U2l6ZSBtX3NpemU7Ci0gICAgQ09NUHRyPElXSUNCaXRtYXBEZWNvZGVyPiBtX25hdGl2ZURl
Y29kZXI7Ci0gICAgQ09NUHRyPElEMkQxUmVuZGVyVGFyZ2V0PiBtX3JlbmRlclRhcmdldDsKLX07
Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9JbWFnZURlY29kZXIuY3BwCmluZGV4IDRiYTRkYjJhNjIxY2ZjMmY1OGE3NjRiZTRkYWZlMjM1
MWM1Yjc1OGQuLjc2N2FjM2EyOGQ3NGNiNTA0MDNmYmMwOTQ5ZThkMWNkOWYzYThhNGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VE
ZWNvZGVyLmNwcApAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1ZGUgIklDT0ltYWdlRGVjb2Rlci5o
IgogI2luY2x1ZGUgIkpQRUdJbWFnZURlY29kZXIuaCIKICNpbmNsdWRlICJQTkdJbWFnZURlY29k
ZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpZiBVU0UoV0VCUCkKICNpbmNsdWRl
ICJXRUJQSW1hZ2VEZWNvZGVyLmgiCiAjZW5kaWYKQEAgLTk4LDYgKzk3LDEyIEBAIGJvb2wgbWF0
Y2hlc0NVUlNpZ25hdHVyZShjaGFyKiBjb250ZW50cykKIAogfQogCitJbWFnZURlY29kZXI6Oklt
YWdlRGVjb2RlcihTaGFyZWRCdWZmZXImLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCisgICAgOiBt
X3ByZW11bHRpcGx5QWxwaGEoYWxwaGFPcHRpb24gPT0gQWxwaGFPcHRpb246OlByZW11bHRpcGxp
ZWQpCisgICAgLCBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKGdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uID09IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uOjpJZ25vcmVkKQoreworfQor
CiBSZWZQdHI8SW1hZ2VEZWNvZGVyPiBJbWFnZURlY29kZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXIm
IGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
biBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgbGVuZ3RoT2ZMb25nZXN0U2lnbmF0dXJlID0gMTQ7IC8vIFRvIHdpdDogIlJJRkY/Pz8/V0VC
UFZQIgpAQCAtMTcwLDYgKzE3NSw5MCBAQCB0ZW1wbGF0ZSA8TWF0Y2hUeXBlIHR5cGU+IGludCBn
ZXRTY2FsZWRWYWx1ZShjb25zdCBWZWN0b3I8aW50PiYgc2NhbGVkVmFsdWVzLCBpbgogCiB9CiAK
K3NpemVfdCBJbWFnZURlY29kZXI6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygp
Cit7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit7CisgICAgaWYgKG1fZW5jb2Rl
ZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkVycm9yKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX2RhdGEgPSAmZGF0YTsKKyAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBF
bmNvZGVkRGF0YVN0YXR1czo6VHlwZUF2YWlsYWJsZSkgeworICAgICAgICBtX2RlY29kaW5nU2l6
ZUZyb21TZXREYXRhID0gdHJ1ZTsKKyAgICAgICAgdHJ5RGVjb2RlU2l6ZShhbGxEYXRhUmVjZWl2
ZWQpOworICAgICAgICBtX2RlY29kaW5nU2l6ZUZyb21TZXREYXRhID0gZmFsc2U7CisgICAgfQor
CisgICAgaWYgKG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkVycm9y
KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYWxsRGF0YVJlY2VpdmVkKSB7CisgICAgICAg
IEFTU0VSVChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpTaXplQXZh
aWxhYmxlKTsKKyAgICAgICAgbV9lbmNvZGVkRGF0YVN0YXR1cyA9IEVuY29kZWREYXRhU3RhdHVz
OjpDb21wbGV0ZTsKKyAgICB9Cit9CisKK2Jvb2wgSW1hZ2VEZWNvZGVyOjppc0FsbERhdGFSZWNl
aXZlZCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFtX2RlY29kaW5nU2l6ZUZyb21TZXREYXRhKTsK
KyAgICByZXR1cm4gbV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6Q29t
cGxldGU7Cit9CisKK0VuY29kZWREYXRhU3RhdHVzIEltYWdlRGVjb2Rlcjo6ZW5jb2RlZERhdGFT
dGF0dXMoKSBjb25zdAoreworICAgIHJldHVybiBtX2VuY29kZWREYXRhU3RhdHVzOworfQorCiti
b29sIEltYWdlRGVjb2Rlcjo6c2V0RmFpbGVkKCkKK3sKKyAgICAvLyBTZXRzIHRoZSAiZGVjb2Rl
IGZhaWx1cmUiIGZsYWcuIEZvciBjYWxsZXIgY29udmVuaWVuY2UgKHNpbmNlIHNvCisgICAgLy8g
bWFueSBjYWxsZXJzIHdhbnQgdG8gcmV0dXJuIGZhbHNlIGFmdGVyIGNhbGxpbmcgdGhpcyksIHJl
dHVybnMgZmFsc2UKKyAgICAvLyB0byBlbmFibGUgZWFzeSB0YWlsY2FsbGluZy4gU3ViY2xhc3Nl
cyBtYXkgb3ZlcnJpZGUgdGhpcyB0byBhbHNvCisgICAgLy8gY2xlYW4gdXAgYW55IGxvY2FsIGRh
dGEuCisgICAgbV9lbmNvZGVkRGF0YVN0YXR1cyA9IEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcjsK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1N0cmluZyBJbWFnZURlY29kZXI6OmZpbGVuYW1lRXh0
ZW5zaW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKKy8vIFJldHVybnMg
d2hldGhlciB0aGUgc2l6ZSBpcyBsZWdhbCAoaS5lLiBub3QgZ29pbmcgdG8gcmVzdWx0IGluCisv
LyBvdmVyZmxvdyBlbHNld2hlcmUpLiBJZiBub3QsIG1hcmtzIGRlY29kaW5nIGFzIGZhaWxlZC4K
K2Jvb2wgSW1hZ2VEZWNvZGVyOjpzZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCit7CisgICAg
aWYgKEltYWdlQmFja2luZ1N0b3JlOjppc092ZXJTaXplKHNpemUpKQorICAgICAgICByZXR1cm4g
c2V0RmFpbGVkKCk7CisgICAgbV9zaXplID0gc2l6ZTsKKyAgICBtX2VuY29kZWREYXRhU3RhdHVz
ID0gRW5jb2RlZERhdGFTdGF0dXM6OlNpemVBdmFpbGFibGU7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK3NpemVfdCBJbWFnZURlY29kZXI6OmZyYW1lQ291bnQoKSBjb25zdAoreworICAgIC8vIExh
emlseS1kZWNvZGVzIGVub3VnaCBvZiB0aGUgaW1hZ2UgdG8gZ2V0IHRoZSBmcmFtZSBjb3VudCAo
aWYKKyAgICAvLyBwb3NzaWJsZSksIHdpdGhvdXQgZGVjb2RpbmcgdGhlIGluZGl2aWR1YWwgZnJh
bWVzLgorICAgIC8vIEZJWE1FOiBSaWdodCBub3cgdGhhdCBoYXMgdG8gYmUgZG9uZSBieSBlYWNo
IHN1YmNsYXNzOyBmYWN0b3IgdGhlCisgICAgLy8gZGVjb2RlIGNhbGwgb3V0IGFuZCB1c2UgaXQg
aGVyZS4KKyAgICByZXR1cm4gMTsKK30KKworUmVwZXRpdGlvbkNvdW50IEltYWdlRGVjb2Rlcjo6
cmVwZXRpdGlvbkNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gUmVwZXRpdGlvbkNvdW50Tm9u
ZTsKK30KKworc3RkOjpvcHRpb25hbDxJbnRQb2ludD4gSW1hZ2VEZWNvZGVyOjpob3RTcG90KCkg
Y29uc3QKK3sKKyAgICAvLyBJZiB0aGUgaW1hZ2UgaGFzIGEgY3Vyc29yIGhvdC1zcG90LCBzdG9y
ZXMgaXQgaW4gdGhlIGFyZ3VtZW50CisgICAgLy8gYW5kIHJldHVybnMgdHJ1ZS4gT3RoZXJ3aXNl
IHJldHVybnMgZmFsc2UuCisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKyAgICAKIGJvb2wg
SW1hZ2VEZWNvZGVyOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKICAg
ICBJbWFnZUZyYW1lKiBidWZmZXIgPSBmcmFtZUJ1ZmZlckF0SW5kZXgoaW5kZXgpOwpAQCAtMjA5
LDYgKzI5OCwyNiBAQCBmbG9hdCBJbWFnZURlY29kZXI6OmZyYW1lRHVyYXRpb25BdEluZGV4KHNp
emVfdCBpbmRleCkKICAgICByZXR1cm4gZHVyYXRpb247CiB9CiAKK0ltYWdlT3JpZW50YXRpb24g
SW1hZ2VEZWNvZGVyOjpmcmFtZU9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fb3JpZW50YXRpb247Cit9CisKK0ludFNpemUgSW1hZ2VEZWNvZGVyOjpmcmFt
ZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCkKK3sKKyAgICAvLyBUaGlzIHdp
bGwgb25seSBkaWZmZXIgZnJvbSBzaXplKCkgZm9yIElDTyAod2hlcmUgZWFjaCBmcmFtZSBpcyBh
CisgICAgLy8gZGlmZmVyZW50IGljb24pIG9yIG90aGVyIGZvcm1hdHMgd2hlcmUgZGlmZmVyZW50
IGZyYW1lcyBhcmUgZGlmZmVyZW50CisgICAgLy8gc2l6ZXMuIFRoaXMgZG9lcyBOT1QgZGlmZmVy
IGZyb20gc2l6ZSgpIGZvciBHSUYsIHNpbmNlIGRlY29kaW5nIEdJRnMKKyAgICAvLyBjb21wb3Np
dGVzIGFueSBzbWFsbGVyIGZyYW1lcyBhZ2FpbnN0IHByZXZpb3VzIGZyYW1lcyB0byBjcmVhdGUg
ZnVsbC0KKyAgICAvLyBzaXplIGZyYW1lcy4KKyAgICByZXR1cm4gc2l6ZSgpOworfQorCitib29s
IEltYWdlRGVjb2Rlcjo6ZnJhbWVBbGxvd1N1YnNhbXBsaW5nQXRJbmRleChzaXplX3QpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBOYXRpdmVJbWFnZVB0ciBJbWFnZURlY29kZXI6
OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCwg
Y29uc3QgRGVjb2RpbmdPcHRpb25zJikKIHsKICAgICAvLyBaZXJvLWhlaWdodCBpbWFnZXMgY2Fu
IGNhdXNlIHByb2JsZW1zIGZvciBzb21lIHBvcnRzLiBJZiB3ZSBoYXZlIGFuIGVtcHR5IGltYWdl
IGRpbWVuc2lvbiwganVzdCBiYWlsLgpAQCAtMjI2LDYgKzMzNSwxMiBAQCBOYXRpdmVJbWFnZVB0
ciBJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vi
c2FtcGxpbmdMZQogCiB2b2lkIEltYWdlRGVjb2Rlcjo6cHJlcGFyZVNjYWxlRGF0YUlmTmVjZXNz
YXJ5KCkKIHsKKyNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dOX1NBTVBMSU5HKQorICAgIHN0
YXRpYyBjb25zdCBpbnQgTWF4TnVtUGl4ZWxzIHsgMTAyNCAqIDEwMjQgfTsKKyNlbHNlCisgICAg
c3RhdGljIGNvbnN0IGludCBNYXhOdW1QaXhlbHMgeyAtMSB9OworI2VuZGlmCisgICAgCiAgICAg
bV9zY2FsZWQgPSBmYWxzZTsKICAgICBtX3NjYWxlZENvbHVtbnMuY2xlYXIoKTsKICAgICBtX3Nj
YWxlZFJvd3MuY2xlYXIoKTsKQEAgLTIzMywxMSArMzQ4LDExIEBAIHZvaWQgSW1hZ2VEZWNvZGVy
OjpwcmVwYXJlU2NhbGVEYXRhSWZOZWNlc3NhcnkoKQogICAgIGludCB3aWR0aCA9IHNpemUoKS53
aWR0aCgpOwogICAgIGludCBoZWlnaHQgPSBzaXplKCkuaGVpZ2h0KCk7CiAgICAgaW50IG51bVBp
eGVscyA9IGhlaWdodCAqIHdpZHRoOwotICAgIGlmIChtX21heE51bVBpeGVscyA8PSAwIHx8IG51
bVBpeGVscyA8PSBtX21heE51bVBpeGVscykKKyAgICBpZiAoTWF4TnVtUGl4ZWxzIDw9IDAgfHwg
bnVtUGl4ZWxzIDw9IE1heE51bVBpeGVscykKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9zY2Fs
ZWQgPSB0cnVlOwotICAgIGRvdWJsZSBzY2FsZSA9IHNxcnQobV9tYXhOdW1QaXhlbHMgLyAoZG91
YmxlKW51bVBpeGVscyk7CisgICAgZG91YmxlIHNjYWxlID0gc3FydChNYXhOdW1QaXhlbHMgLyAo
ZG91YmxlKW51bVBpeGVscyk7CiAgICAgZmlsbFNjYWxlZFZhbHVlcyhtX3NjYWxlZENvbHVtbnMs
IHNjYWxlLCB3aWR0aCk7CiAgICAgZmlsbFNjYWxlZFZhbHVlcyhtX3NjYWxlZFJvd3MsIHNjYWxl
LCBoZWlnaHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9JbWFnZURlY29kZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzQy
Y2RiMGRkZjZmYTRmZjRhZGZlOWU4OWFlYTljYTgxYzI2YzNmMC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDIzMiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4K
LSAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS0yMDEwLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5IE5va2lhIENvcnBvcmF0
aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkltYWdlRnJhbWUu
aCIKLSNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUg
IlBsYXRmb3JtU2NyZWVuLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0jaW5jbHVkZSA8
d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KLSNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIEltYWdlRGVjb2RlciBp
cyBhIGJhc2UgZm9yIGFsbCBmb3JtYXQtc3BlY2lmaWMgZGVjb2RlcnMKLS8vIChlLmcuIEpQRUdJ
bWFnZURlY29kZXIpLiBUaGlzIGJhc2UgbWFuYWdlcyB0aGUgSW1hZ2VGcmFtZSBjYWNoZS4KLS8v
Ci0vLyBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dOX1NBTVBMSU5HKSBhbGxvd3MgaW1hZ2UgZGVj
b2RlcnMgdG8gZG93bnNhbXBsZQotLy8gYXQgZGVjb2RlIHRpbWUuIEltYWdlIGRlY29kZXJzIHdp
bGwgZG93bnNhbXBsZSBhbnkgaW1hZ2VzIGxhcmdlciB0aGFuCi0vLyB8bV9tYXhOdW1QaXhlbHN8
LiBGSVhNRTogTm90IHlldCBzdXBwb3J0ZWQgYnkgYWxsIGRlY29kZXJzLgotY2xhc3MgSW1hZ2VE
ZWNvZGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEltYWdlRGVjb2Rlcj4gewotICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlRGVjb2Rlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwotcHVibGljOgotICAgIEltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwg
R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCi0g
ICAgICAgIDogbV9wcmVtdWx0aXBseUFscGhhKGFscGhhT3B0aW9uID09IEFscGhhT3B0aW9uOjpQ
cmVtdWx0aXBsaWVkKQotICAgICAgICAsIG1faWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUoZ2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24gPT0gR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb246Okln
bm9yZWQpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgfkltYWdlRGVjb2RlcigpCi0gICAg
ewotICAgIH0KLQotICAgIC8vIFJldHVybnMgbnVsbHB0ciBpZiB3ZSBjYW4ndCBzbmlmZiBhIHN1
cHBvcnRlZCB0eXBlIGZyb20gdGhlIHByb3ZpZGVkIGRhdGEgKHBvc3NpYmx5Ci0gICAgLy8gYmVj
YXVzZSB0aGVyZSBpc24ndCBlbm91Z2ggZGF0YSB5ZXQpLgotICAgIHN0YXRpYyBSZWZQdHI8SW1h
Z2VEZWNvZGVyPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pOwotCi0gICAgdmlydHVhbCBTdHJpbmcgZmlsZW5hbWVFeHRl
bnNpb24oKSBjb25zdCA9IDA7Ci0KLSAgICBib29sIHByZW11bHRpcGx5QWxwaGEoKSBjb25zdCB7
IHJldHVybiBtX3ByZW11bHRpcGx5QWxwaGE7IH0KLQotICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2
ZWQoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX2RlY29kaW5nU2l6ZUZyb21TZXRE
YXRhKTsKLSAgICAgICAgcmV0dXJuIG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFT
dGF0dXM6OkNvbXBsZXRlOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBzZXREYXRhKFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCi0gICAgewotICAgICAgICBpZiAo
bV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3IpCi0gICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgbV9kYXRhID0gJmRhdGE7Ci0gICAgICAgIGlmIChtX2Vu
Y29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpUeXBlQXZhaWxhYmxlKSB7Ci0g
ICAgICAgICAgICBtX2RlY29kaW5nU2l6ZUZyb21TZXREYXRhID0gdHJ1ZTsKLSAgICAgICAgICAg
IHRyeURlY29kZVNpemUoYWxsRGF0YVJlY2VpdmVkKTsKLSAgICAgICAgICAgIG1fZGVjb2RpbmdT
aXplRnJvbVNldERhdGEgPSBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChtX2VuY29k
ZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcikKLSAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICBpZiAoYWxsRGF0YVJlY2VpdmVkKSB7Ci0gICAgICAgICAgICBBU1NF
UlQobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6U2l6ZUF2YWlsYWJs
ZSk7Ci0gICAgICAgICAgICBtX2VuY29kZWREYXRhU3RhdHVzID0gRW5jb2RlZERhdGFTdGF0dXM6
OkNvbXBsZXRlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgRW5jb2RlZERhdGFTdGF0dXMgZW5j
b2RlZERhdGFTdGF0dXMoKSBjb25zdCB7IHJldHVybiBtX2VuY29kZWREYXRhU3RhdHVzOyB9Ci0K
LSAgICBib29sIGlzU2l6ZUF2YWlsYWJsZSgpIHsgcmV0dXJuIG1fZW5jb2RlZERhdGFTdGF0dXMg
Pj0gRW5jb2RlZERhdGFTdGF0dXM6OlNpemVBdmFpbGFibGU7IH0KLQotICAgIHZpcnR1YWwgSW50
U2l6ZSBzaXplKCkgeyByZXR1cm4gaXNTaXplQXZhaWxhYmxlKCkgPyBtX3NpemUgOiBJbnRTaXpl
KCk7IH0KLQotICAgIEludFNpemUgc2NhbGVkU2l6ZSgpCi0gICAgewotICAgICAgICByZXR1cm4g
bV9zY2FsZWQgPyBJbnRTaXplKG1fc2NhbGVkQ29sdW1ucy5zaXplKCksIG1fc2NhbGVkUm93cy5z
aXplKCkpIDogc2l6ZSgpOwotICAgIH0KLQotICAgIC8vIFRoaXMgd2lsbCBvbmx5IGRpZmZlciBm
cm9tIHNpemUoKSBmb3IgSUNPICh3aGVyZSBlYWNoIGZyYW1lIGlzIGEKLSAgICAvLyBkaWZmZXJl
bnQgaWNvbikgb3Igb3RoZXIgZm9ybWF0cyB3aGVyZSBkaWZmZXJlbnQgZnJhbWVzIGFyZSBkaWZm
ZXJlbnQKLSAgICAvLyBzaXplcy4gVGhpcyBkb2VzIE5PVCBkaWZmZXIgZnJvbSBzaXplKCkgZm9y
IEdJRiwgc2luY2UgZGVjb2RpbmcgR0lGcwotICAgIC8vIGNvbXBvc2l0ZXMgYW55IHNtYWxsZXIg
ZnJhbWVzIGFnYWluc3QgcHJldmlvdXMgZnJhbWVzIHRvIGNyZWF0ZSBmdWxsLQotICAgIC8vIHNp
emUgZnJhbWVzLgotICAgIHZpcnR1YWwgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwg
U3Vic2FtcGxpbmdMZXZlbCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBzaXplKCk7Ci0gICAgfQot
Ci0gICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBzaXplIGlzIGxlZ2FsIChpLmUuIG5vdCBnb2lu
ZyB0byByZXN1bHQgaW4KLSAgICAvLyBvdmVyZmxvdyBlbHNld2hlcmUpLiBJZiBub3QsIG1hcmtz
IGRlY29kaW5nIGFzIGZhaWxlZC4KLSAgICB2aXJ0dWFsIGJvb2wgc2V0U2l6ZShjb25zdCBJbnRT
aXplJiBzaXplKQotICAgIHsKLSAgICAgICAgaWYgKEltYWdlQmFja2luZ1N0b3JlOjppc092ZXJT
aXplKHNpemUpKQotICAgICAgICAgICAgcmV0dXJuIHNldEZhaWxlZCgpOwotICAgICAgICBtX3Np
emUgPSBzaXplOwotICAgICAgICBtX2VuY29kZWREYXRhU3RhdHVzID0gRW5jb2RlZERhdGFTdGF0
dXM6OlNpemVBdmFpbGFibGU7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIC8v
IExhemlseS1kZWNvZGVzIGVub3VnaCBvZiB0aGUgaW1hZ2UgdG8gZ2V0IHRoZSBmcmFtZSBjb3Vu
dCAoaWYKLSAgICAvLyBwb3NzaWJsZSksIHdpdGhvdXQgZGVjb2RpbmcgdGhlIGluZGl2aWR1YWwg
ZnJhbWVzLgotICAgIC8vIEZJWE1FOiBSaWdodCBub3cgdGhhdCBoYXMgdG8gYmUgZG9uZSBieSBl
YWNoIHN1YmNsYXNzOyBmYWN0b3IgdGhlCi0gICAgLy8gZGVjb2RlIGNhbGwgb3V0IGFuZCB1c2Ug
aXQgaGVyZS4KLSAgICB2aXJ0dWFsIHNpemVfdCBmcmFtZUNvdW50KCkgY29uc3QgeyByZXR1cm4g
MTsgfQotCi0gICAgdmlydHVhbCBSZXBldGl0aW9uQ291bnQgcmVwZXRpdGlvbkNvdW50KCkgY29u
c3QgeyByZXR1cm4gUmVwZXRpdGlvbkNvdW50Tm9uZTsgfQotCi0gICAgLy8gRGVjb2RlcyBhcyBt
dWNoIG9mIHRoZSByZXF1ZXN0ZWQgZnJhbWUgYXMgcG9zc2libGUsIGFuZCByZXR1cm5zIGFuCi0g
ICAgLy8gSW1hZ2VEZWNvZGVyLW93bmVkIHBvaW50ZXIuCi0gICAgdmlydHVhbCBJbWFnZUZyYW1l
KiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90KSA9IDA7Ci0KLSAgICBib29sIGZyYW1lSXNDb21w
bGV0ZUF0SW5kZXgoc2l6ZV90KTsKLQotICAgIC8vIE1ha2UgdGhlIGJlc3QgZWZmb3J0IGd1ZXNz
IHRvIGNoZWNrIGlmIHRoZSByZXF1ZXN0ZWQgZnJhbWUgaGFzIGFscGhhIGNoYW5uZWwuCi0gICAg
Ym9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QpIGNvbnN0OwotCi0gICAgLy8gTnVtYmVy
IG9mIGJ5dGVzIGluIHRoZSBkZWNvZGVkIGZyYW1lIHJlcXVlc3RlZC4gUmV0dXJuIDAgaWYgbm90
IHlldCBkZWNvZGVkLgotICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCkgY29u
c3Q7Ci0gICAgCi0gICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90KTsKLSAgICAK
LSAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNh
bXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09w
dGlvbnMmID0gRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cyk7Ci0KLSAgICB2b2lkIHNldElnbm9y
ZUdhbW1hQW5kQ29sb3JQcm9maWxlKGJvb2wgZmxhZykgeyBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQ
cm9maWxlID0gZmxhZzsgfQotICAgIGJvb2wgaWdub3Jlc0dhbW1hQW5kQ29sb3JQcm9maWxlKCkg
Y29uc3QgeyByZXR1cm4gbV9pZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZTsgfQotCi0gICAgSW1h
Z2VPcmllbnRhdGlvbiBmcmFtZU9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0IHsgcmV0
dXJuIG1fb3JpZW50YXRpb247IH0KLSAgICAKLSAgICBib29sIGZyYW1lQWxsb3dTdWJzYW1wbGlu
Z0F0SW5kZXgoc2l6ZV90KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgZW51bSB7IElD
Q0NvbG9yUHJvZmlsZUhlYWRlckxlbmd0aCA9IDEyOCB9OwotCi0gICAgc3RhdGljIGJvb2wgcmdi
Q29sb3JQcm9maWxlKGNvbnN0IGNoYXIqIHByb2ZpbGVEYXRhLCB1bnNpZ25lZCBwcm9maWxlTGVu
Z3RoKQotICAgIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChwcm9maWxlTGVuZ3RoLCBwcm9maWxl
TGVuZ3RoID49IElDQ0NvbG9yUHJvZmlsZUhlYWRlckxlbmd0aCk7Ci0KLSAgICAgICAgcmV0dXJu
ICFtZW1jbXAoJnByb2ZpbGVEYXRhWzE2XSwgIlJHQiAiLCA0KTsKLSAgICB9Ci0KLSAgICBzdGF0
aWMgc2l6ZV90IGJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpIHsgcmV0dXJuIDA7
IH0KLSAgICAKLSAgICBzdGF0aWMgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsRm9y
U2NhbGUoZmxvYXQsIFN1YnNhbXBsaW5nTGV2ZWwpIHsgcmV0dXJuIFN1YnNhbXBsaW5nTGV2ZWw6
OkRlZmF1bHQ7IH0KLQotICAgIHN0YXRpYyBib29sIGlucHV0RGV2aWNlQ29sb3JQcm9maWxlKGNv
bnN0IGNoYXIqIHByb2ZpbGVEYXRhLCB1bnNpZ25lZCBwcm9maWxlTGVuZ3RoKQotICAgIHsKLSAg
ICAgICAgQVNTRVJUX1VOVVNFRChwcm9maWxlTGVuZ3RoLCBwcm9maWxlTGVuZ3RoID49IElDQ0Nv
bG9yUHJvZmlsZUhlYWRlckxlbmd0aCk7Ci0KLSAgICAgICAgcmV0dXJuICFtZW1jbXAoJnByb2Zp
bGVEYXRhWzEyXSwgIm1udHIiLCA0KSB8fCAhbWVtY21wKCZwcm9maWxlRGF0YVsxMl0sICJzY25y
IiwgNCk7Ci0gICAgfQotCi0gICAgLy8gU2V0cyB0aGUgImRlY29kZSBmYWlsdXJlIiBmbGFnLiBG
b3IgY2FsbGVyIGNvbnZlbmllbmNlIChzaW5jZSBzbwotICAgIC8vIG1hbnkgY2FsbGVycyB3YW50
IHRvIHJldHVybiBmYWxzZSBhZnRlciBjYWxsaW5nIHRoaXMpLCByZXR1cm5zIGZhbHNlCi0gICAg
Ly8gdG8gZW5hYmxlIGVhc3kgdGFpbGNhbGxpbmcuIFN1YmNsYXNzZXMgbWF5IG92ZXJyaWRlIHRo
aXMgdG8gYWxzbwotICAgIC8vIGNsZWFuIHVwIGFueSBsb2NhbCBkYXRhLgotICAgIHZpcnR1YWwg
Ym9vbCBzZXRGYWlsZWQoKQotICAgIHsKLSAgICAgICAgbV9lbmNvZGVkRGF0YVN0YXR1cyA9IEVu
Y29kZWREYXRhU3RhdHVzOjpFcnJvcjsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQot
ICAgIGJvb2wgZmFpbGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBF
bmNvZGVkRGF0YVN0YXR1czo6RXJyb3I7IH0KLQotICAgIC8vIENsZWFycyBkZWNvZGVkIHBpeGVs
IGRhdGEgZnJvbSBiZWZvcmUgdGhlIHByb3ZpZGVkIGZyYW1lIHVubGVzcyB0aGF0Ci0gICAgLy8g
ZGF0YSBtYXkgYmUgbmVlZGVkIHRvIGRlY29kZSBmdXR1cmUgZnJhbWVzIChlLmcuIGR1ZSB0byBH
SUYgZnJhbWUKLSAgICAvLyBjb21wb3NpdGluZykuCi0gICAgdmlydHVhbCB2b2lkIGNsZWFyRnJh
bWVCdWZmZXJDYWNoZShzaXplX3QpIHsgfQotCi0gICAgLy8gSWYgdGhlIGltYWdlIGhhcyBhIGN1
cnNvciBob3Qtc3BvdCwgc3RvcmVzIGl0IGluIHRoZSBhcmd1bWVudAotICAgIC8vIGFuZCByZXR1
cm5zIHRydWUuIE90aGVyd2lzZSByZXR1cm5zIGZhbHNlLgotICAgIHZpcnR1YWwgc3RkOjpvcHRp
b25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQot
Ci1wcm90ZWN0ZWQ6Ci0gICAgdm9pZCBwcmVwYXJlU2NhbGVEYXRhSWZOZWNlc3NhcnkoKTsKLSAg
ICBpbnQgdXBwZXJCb3VuZFNjYWxlZFgoaW50IG9yaWdYLCBpbnQgc2VhcmNoU3RhcnQgPSAwKTsK
LSAgICBpbnQgbG93ZXJCb3VuZFNjYWxlZFgoaW50IG9yaWdYLCBpbnQgc2VhcmNoU3RhcnQgPSAw
KTsKLSAgICBpbnQgdXBwZXJCb3VuZFNjYWxlZFkoaW50IG9yaWdZLCBpbnQgc2VhcmNoU3RhcnQg
PSAwKTsKLSAgICBpbnQgbG93ZXJCb3VuZFNjYWxlZFkoaW50IG9yaWdZLCBpbnQgc2VhcmNoU3Rh
cnQgPSAwKTsKLSAgICBpbnQgc2NhbGVkWShpbnQgb3JpZ1ksIGludCBzZWFyY2hTdGFydCA9IDAp
OwotCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOyAvLyBUaGUgZW5jb2RlZCBkYXRh
LgotICAgIFZlY3RvcjxJbWFnZUZyYW1lLCAxPiBtX2ZyYW1lQnVmZmVyQ2FjaGU7Ci0gICAgYm9v
bCBtX3NjYWxlZCB7IGZhbHNlIH07Ci0gICAgVmVjdG9yPGludD4gbV9zY2FsZWRDb2x1bW5zOwot
ICAgIFZlY3RvcjxpbnQ+IG1fc2NhbGVkUm93czsKLSAgICBib29sIG1fcHJlbXVsdGlwbHlBbHBo
YTsKLSAgICBib29sIG1faWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGU7Ci0gICAgSW1hZ2VPcmll
bnRhdGlvbiBtX29yaWVudGF0aW9uOwotCi1wcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCB0cnlE
ZWNvZGVTaXplKGJvb2wpID0gMDsKLQotICAgIEludFNpemUgbV9zaXplOwotICAgIEVuY29kZWRE
YXRhU3RhdHVzIG1fZW5jb2RlZERhdGFTdGF0dXMgeyBFbmNvZGVkRGF0YVN0YXR1czo6VHlwZUF2
YWlsYWJsZSB9OwotICAgIGJvb2wgbV9kZWNvZGluZ1NpemVGcm9tU2V0RGF0YSB7IGZhbHNlIH07
Ci0jaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKLSAgICBzdGF0aWMgY29u
c3QgaW50IG1fbWF4TnVtUGl4ZWxzIHsgMTAyNCAqIDEwMjQgfTsKLSNlbHNlCi0gICAgc3RhdGlj
IGNvbnN0IGludCBtX21heE51bVBpeGVscyB7IC0xIH07Ci0jZW5kaWYKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311641</attachid>
            <date>2017-05-31 15:10:45 -0700</date>
            <delta_ts>2017-05-31 15:41:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172773-20170531151044.patch</filename>
            <type>text/plain</type>
            <size>59187</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3NTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDJmYmZmNzM4ZjZmNmI5
YzBhNzExMjcyYzlmODFmNDc0NGYxNzhhYy4uZTg3NWFhNzkwMGJiZDg2ODAzZTgzOGY2NmJhMmEw
Y2NjOGU1NTZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDE3LTA1LTMxICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgSGF2ZSBh
IHNpbmdsZSBJbWFnZURlY29kZXIgaGVhZGVyIGZpbGUgZm9yIGFsbCBwb3J0cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyNzczCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNv
ZGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjp+SW1hZ2VEZWNv
ZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6aXNTaXplQXZhaWxhYmxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c2V0UHJlbXVsdGlwbHlBbHBoYSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnByZW11bHRpcGx5QWxwaGEpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzZXRJZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6Omlnbm9yZXNHYW1tYUFuZENvbG9yUHJv
ZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzY2FsZWRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRGVjb2Rlcjo6ZmFpbGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZy
YW1lQ2FjaGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVR5cGVzLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
Ojppc0FsbERhdGFSZWNlaXZlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VEZWNvZGVyQ0cuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
OjpJbWFnZURlY29kZXIpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRGVjb2Rlcjo6aXNBbGxEYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oOiBSZW1vdmVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXI6OkltYWdlRGVjb2Rlcik6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZURlY29kZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmJ5
dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURlY29kZXI6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjppc0Fs
bERhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmVuY29kZWRE
YXRhU3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c2V0RmFpbGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6ZmlsZW5hbWVFeHRlbnNpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlRGVjb2Rlcjo6ZnJhbWVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29k
ZXI6OnJlcGV0aXRpb25Db3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6Omhv
dFNwb3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZU9yaWVudGF0aW9u
QXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1lU2l6ZUF0SW5k
ZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUFsbG93U3Vic2FtcGxp
bmdBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6cHJlcGFyZVNjYWxl
RGF0YUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFn
ZURlY29kZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9i
bXAvQk1QSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJNUEltYWdlRGVjb2Rl
cjo6Qk1QSW1hZ2VEZWNvZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9i
bXAvQk1QSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Z2lmL0dJRkltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHSUZJbWFnZURlY29k
ZXI6OkdJRkltYWdlRGVjb2Rlcik6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Z2lmL0dJRkltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2ljby9JQ09JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SUNPSW1hZ2VEZWNv
ZGVyOjpJQ09JbWFnZURlY29kZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2ljby9JQ09JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdl
RGVjb2Rlcjo6SlBFR0ltYWdlRGVjb2Rlcik6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQTkdJ
bWFnZURlY29kZXI6OlBOR0ltYWdlRGVjb2Rlcik6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
RUJQSW1hZ2VEZWNvZGVyOjpXRUJQSW1hZ2VEZWNvZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaDoKKwogMjAxNy0wNS0zMCAgU2Ft
IFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmVydCBhY2NpZGVudGFsbHkg
Y2hlY2tlZCBpbiBjaGFuZ2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggODZhMjZhODRhZGZmYTBkZmU3ZjYzNzk0MDkyNjk2ZDM4
Y2M0NzE5ZS4uYjBkN2EzNmU1ZmI1YTdiZmFmNGU5MmZjN2ZjZWRhOWUxMjUwZjBmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MjUwMCwxMCArMjUwMCwxMCBAQAogCQk1M0VGNzY2QzE2NTMxOTk0MDA0Q0JFNDkgLyogU2V0dGlu
Z3NNYWNyb3MuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUzRUY3NjZBMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jv
cy5oICovOyB9OwogCQk1NTBBMEJDOTA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTBBMEJD
NzA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgKi87IH07CiAJCTU1MEEwQkNB
MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVh
bGlmaWVkTmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTU1MzRFRTkyMUVERTU2OEQwMDgxOEMwNCAvKiBJbWFnZURlY29kZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MzRFRTkxMUVERTU2ODkw
MDgxOEMwNCAvKiBJbWFnZURlY29kZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1NTUwQ0I0MjFFOTU1RTNDMDAxMTFBQTAgLyogSW1hZ2VUeXBl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU1MENC
NDExRTk1NUUzQzAwMTExQUEwIC8qIEltYWdlVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NTUxMzAwMTFFN0NDQ0NCMDBBNjlFMzggLyog
RGVjb2RpbmdPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1NTUxMzAwMDFFN0NDQ0NBMDBBNjlFMzggLyogRGVjb2RpbmdPcHRpb25zLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTU1Qjg3RUMx
Q0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1NUI4N0VBMUNBQUYwQUIwMDM0OTQyNSAvKiBJ
bWFnZURlY29kZXJDRy5jcHAgKi87IH07Ci0JCTU1NUI4N0VEMUNBQUYwQUIwMDM0OTQyNSAvKiBJ
bWFnZURlY29kZXJDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTU1Qjg3RUIxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmggKi87IH07
CiAJCTU1NzZBNTY0MUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1NzZBNTYyMUQ4OEE3MDgwMEND
QzA0QyAvKiBJbWFnZUZyYW1lLmNwcCAqLzsgfTsKIAkJNTU3NkE1NjUxRDg4QTcwODAwQ0NDMDRD
IC8qIEltYWdlRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU1NzZBNTYzMUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTU5N0Y4MjYxRDkxQzMx
MzAwNjZCQzIxIC8qIEltYWdlRnJhbWVDYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTk3RjgyNDFEOTFDMzEzMDA2NkJDMjEgLyogSW1hZ2VG
cmFtZUNhY2hlLmNwcCAqLzsgfTsKQEAgLTEwMjcxLDEwICsxMDI3MSwxMCBAQAogCQk1M0VGNzY2
QTE2NTMwQTYxMDA0Q0JFNDkgLyogU2V0dGluZ3NNYWNyb3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2V0dGluZ3NNYWNyb3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTUwQTBCQzcwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUXVhbGlm
aWVkTmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1Rh
YnMgPSAwOyB9OwogCQk1NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRX
aWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWFs
aWZpZWROYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1Rh
YnMgPSAwOyB9OworCQk1NTM0RUU5MTFFREU1Njg5MDA4MThDMDQgLyogSW1hZ2VEZWNvZGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEltYWdlRGVjb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1NTUwQ0I0MTFFOTU1RTNDMDAxMTFBQTAgLyogSW1hZ2VUeXBlcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTU1NTEzMDAwMUU3Q0NDQ0EwMEE2OUUzOCAvKiBEZWNvZGluZ09wdGlvbnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVjb2RpbmdPcHRpb25zLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1NUI4N0VBMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFn
ZURlY29kZXJDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFn
ZURlY29kZXJDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU1NUI4N0VCMUNB
QUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbWFnZURlY29kZXJDRy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1NTc2QTU2MjFEODhBNzA4MDBDQ0MwNEMgLyogSW1hZ2VGcmFtZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTU3NkE1NjMxRDg4QTcwODAwQ0NDMDRDIC8qIEltYWdlRnJhbWUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VGcmFtZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1NTk3RjgyNDFEOTFDMzEzMDA2NkJDMjEgLyogSW1hZ2VGcmFt
ZUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlRnJh
bWVDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzA1NCw3ICsyMzA1
NCw2IEBACiAJCQkJMjJCRDlGODAxMzUzNjRGRTAwOUJEMTAyIC8qIEltYWdlQnVmZmVyRGF0YUNH
LmggKi8sCiAJCQkJQjI3NTM1MzAwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlQ0cuY3BwICovLAog
CQkJCTU1NUI4N0VBMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5jcHAgKi8sCi0J
CQkJNTU1Qjg3RUIxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmggKi8sCiAJCQkJ
NEIzNDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0cuaCAqLywKIAkJCQk0QjM0
ODA5MTBFRUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VDR01hYy5tbSAqLywKIAkJCQlCMjc1
MzUzMjBCMDUzODE0MDAyQ0U2NEYgLyogSW50UG9pbnRDRy5jcHAgKi8sCkBAIC0yMzIyOCw2ICsy
MzIyNyw3IEBACiAJCQkJNDNEMjU5NzYxM0M4MTZGNDAwNjA4NTU5IC8qIEltYWdlQnVmZmVyLmNw
cCAqLywKIAkJCQlCMkExMEI5MTBCMzgxOEJEMDAwOTlBQTQgLyogSW1hZ2VCdWZmZXIuaCAqLywK
IAkJCQkyMkJEOUY3RDEzNTM2MjVDMDA5QkQxMDIgLyogSW1hZ2VCdWZmZXJEYXRhLmggKi8sCisJ
CQkJNTUzNEVFOTExRURFNTY4OTAwODE4QzA0IC8qIEltYWdlRGVjb2Rlci5oICovLAogCQkJCTU1
NzZBNTYyMUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmNwcCAqLywKIAkJCQk1NTc2QTU2
MzFEODhBNzA4MDBDQ0MwNEMgLyogSW1hZ2VGcmFtZS5oICovLAogCQkJCTU1OTdGODI0MUQ5MUMz
MTMwMDY2QkMyMSAvKiBJbWFnZUZyYW1lQ2FjaGUuY3BwICovLApAQCAtMjc2NzEsNyArMjc2NzEs
NiBAQAogCQkJCTUxMDE5MkQ2MThCNkI5QjcwMDdGQzdBMSAvKiBJbWFnZUNvbnRyb2xzUm9vdEVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDE5MkQyMThCNkI5QUIwMDdGQzdBMSAvKiBJ
bWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Nzk3OTFB
MEQ2QjlEMEMwMDM4NTFCOSAvKiBJbWFnZURhdGEuaCBpbiBIZWFkZXJzICovLAotCQkJCTU1NUI4
N0VEMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTcyMDVBQjYxMjM5MjkxMDAwQjE3MzgwIC8qIEltYWdlRG9jdW1lbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTU1NzZBNTY1MUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1NTk3RjgyNzFEOTFDMzEzMDA2NkJDMjEgLyogSW1hZ2VGcmFtZUNhY2hl
LmggaW4gSGVhZGVycyAqLywKQEAgLTI4MjMwLDYgKzI4MjI5LDcgQEAKIAkJCQkzMTZEQ0I0RTFF
NzkxMEE2MDAxQjVGODcgLyogSlNSVENJY2VHYXRoZXJpbmdTdGF0ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMDczNzk0RUMxOUVFMzQxRTAwRTVBMDQ1IC8qIEpTUlRDSWNlU2VydmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkzMTZEQ0IyMDFFNzhDQTU1MDAxQjVGODcgLyogSlNSVENPZmZlckFuc3dl
ck9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1MzRFRTkyMUVERTU2OEQwMDgxOEMwNCAv
KiBJbWFnZURlY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OTY5REJBMTdEMTQxNTEwMDdG
Rjg0MiAvKiBKU1JUQ1BlZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzk2OURC
ODE3RDE0MTUxMDA3RkY4NDIgLyogSlNSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1RTJDNDM3NDFCQ0YwRDc1MDAwMUUyQkUgLyogSlNSVENSdHBQYXJhbWV0
ZXJzLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VEZWNvZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWZiMzBjZDk0NTVhODYzNTBiZDg1NzMxYzcz
MWM0ZmFkZTZiMjJiZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oCkBAIC0wLDAgKzEsMTM4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE2LCAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJEZWNvZGluZ09wdGlvbnMuaCIKKyNpZiAhVVNFKENHKSAmJiAhVVNFKERJUkVDVDJE
KQorI2luY2x1ZGUgIkltYWdlRnJhbWUuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNl
bmRpZgorI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKKyNpbmNsdWRlICJJbWFnZVR5cGVz
LmgiCisjaW5jbHVkZSAiSW50UG9pbnQuaCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVk
ZSAiTmF0aXZlSW1hZ2UuaCIKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3
dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworI2lmIFVTRShDRykKK3R5cGVkZWYgc3RydWN0
IENHSW1hZ2VTb3VyY2UqIENHSW1hZ2VTb3VyY2VSZWY7CisjZWxpZiBVU0UoRElSRUNUMkQpCitp
bnRlcmZhY2UgSUQyRDFSZW5kZXJUYXJnZXQ7CitpbnRlcmZhY2UgSVdJQ0JpdG1hcERlY29kZXI7
CitpbnRlcmZhY2UgSVdJQ0ltYWdpbmdGYWN0b3J5OworI2VuZGlmCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKyAgICAKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKKworY2xhc3MgSW1hZ2VEZWNvZGVyIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEltYWdlRGVjb2Rlcj4geworICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEltYWdlRGVjb2Rlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVi
bGljOgorICAgIEltYWdlRGVjb2RlcihTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgdmlydHVhbCB+SW1hZ2VEZWNvZGVyKCkg
eyB9CisKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlRGVjb2Rlcj4gY3JlYXRlKFNoYXJlZEJ1ZmZl
ciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBz
dGF0aWMgc2l6ZV90IGJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpOworCisgICAg
RW5jb2RlZERhdGFTdGF0dXMgZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdDsKKyAgICBib29sIGlz
U2l6ZUF2YWlsYWJsZSgpIHsgcmV0dXJuIGVuY29kZWREYXRhU3RhdHVzKCkgPj0gRW5jb2RlZERh
dGFTdGF0dXM6OlNpemVBdmFpbGFibGU7IH0KKyAgICB2aXJ0dWFsIHNpemVfdCBmcmFtZUNvdW50
KCkgY29uc3Q7CisgICAgdmlydHVhbCBSZXBldGl0aW9uQ291bnQgcmVwZXRpdGlvbkNvdW50KCkg
Y29uc3Q7CisgICAgdmlydHVhbCBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdDsKKworICAg
IEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJz
YW1wbGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdDsKKyAgICBib29sIGZyYW1lSXNDb21wbGV0ZUF0
SW5kZXgoc2l6ZV90KSBjb25zdDsKKyAgICBJbWFnZU9yaWVudGF0aW9uIGZyYW1lT3JpZW50YXRp
b25BdEluZGV4KHNpemVfdCkgY29uc3Q7CisKKyAgICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRl
eChzaXplX3QpIGNvbnN0OworICAgIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90KSBj
b25zdDsKKyAgICBib29sIGZyYW1lQWxsb3dTdWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBjb25z
dDsKKyAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2
ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdDsKKworICAgIE5hdGl2ZUltYWdl
UHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1
YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGlu
Z01vZGU6OlN5bmNocm9ub3VzKSBjb25zdDsKKworICAgIHZpcnR1YWwgdm9pZCBzZXREYXRhKFNo
YXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKKyAgICBib29sIGlzQWxsRGF0YVJl
Y2VpdmVkKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShz
aXplX3QpIHsgfQorCisjaWYgVVNFKENHKQorICAgIFN0cmluZyB1dGkoKSBjb25zdDsKKyNlbGlm
IFVTRShESVJFQ1QyRCkKKyAgICB2b2lkIHNldFRhcmdldENvbnRleHQoSUQyRDFSZW5kZXJUYXJn
ZXQqKTsKKyAgICBzdGF0aWMgSVdJQ0ltYWdpbmdGYWN0b3J5KiBzeXN0ZW1JbWFnaW5nRmFjdG9y
eSgpOworI2Vsc2UKKyAgICB2b2lkIHNldFByZW11bHRpcGx5QWxwaGEoYm9vbCBwcmVtdWx0aXBs
eUFscGhhKSB7ICBtX3ByZW11bHRpcGx5QWxwaGEgPSBwcmVtdWx0aXBseUFscGhhOyB9CisgICAg
Ym9vbCBwcmVtdWx0aXBseUFscGhhKCkgY29uc3QgeyByZXR1cm4gbV9wcmVtdWx0aXBseUFscGhh
OyB9CisgICAgdm9pZCBzZXRJZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZShib29sIGlnbm9yZUdh
bW1hQW5kQ29sb3JQcm9maWxlKSB7IG1faWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUgPSBpZ25v
cmVHYW1tYUFuZENvbG9yUHJvZmlsZTsgfQorICAgIGJvb2wgaWdub3Jlc0dhbW1hQW5kQ29sb3JQ
cm9maWxlKCkgY29uc3QgeyByZXR1cm4gbV9pZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZTsgfQor
ICAgIAorICAgIHZpcnR1YWwgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUmKTsKKyAgICB2aXJ0
dWFsIEludFNpemUgc2l6ZSgpIHsgcmV0dXJuIGlzU2l6ZUF2YWlsYWJsZSgpID8gbV9zaXplIDog
SW50U2l6ZSgpOyB9CisgICAgSW50U2l6ZSBzY2FsZWRTaXplKCkgeyByZXR1cm4gbV9zY2FsZWQg
PyBJbnRTaXplKG1fc2NhbGVkQ29sdW1ucy5zaXplKCksIG1fc2NhbGVkUm93cy5zaXplKCkpIDog
c2l6ZSgpOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdHJ5RGVjb2RlU2l6ZShib29sKSA9IDA7Cisg
ICAgdmlydHVhbCBib29sIHNldEZhaWxlZCgpOworICAgIGJvb2wgZmFpbGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3I7IH0K
KyAgICAKKyAgICB2aXJ0dWFsIEltYWdlRnJhbWUqIGZyYW1lQnVmZmVyQXRJbmRleChzaXplX3Qp
ID0gMDsKKworICAgIHZvaWQgcHJlcGFyZVNjYWxlRGF0YUlmTmVjZXNzYXJ5KCk7CisgICAgaW50
IHVwcGVyQm91bmRTY2FsZWRYKGludCBvcmlnWCwgaW50IHNlYXJjaFN0YXJ0ID0gMCk7CisgICAg
aW50IGxvd2VyQm91bmRTY2FsZWRYKGludCBvcmlnWCwgaW50IHNlYXJjaFN0YXJ0ID0gMCk7Cisg
ICAgaW50IHVwcGVyQm91bmRTY2FsZWRZKGludCBvcmlnWSwgaW50IHNlYXJjaFN0YXJ0ID0gMCk7
CisgICAgaW50IGxvd2VyQm91bmRTY2FsZWRZKGludCBvcmlnWSwgaW50IHNlYXJjaFN0YXJ0ID0g
MCk7CisgICAgaW50IHNjYWxlZFkoaW50IG9yaWdZLCBpbnQgc2VhcmNoU3RhcnQgPSAwKTsKKyNl
bmRpZgorCitwcm90ZWN0ZWQ6CisjaWYgVVNFKENHKQorICAgIFJldGFpblB0cjxDR0ltYWdlU291
cmNlUmVmPiBtX25hdGl2ZURlY29kZXI7CisgICAgYm9vbCBtX2lzQWxsRGF0YVJlY2VpdmVkIHsg
ZmFsc2UgfTsKKyNlbGlmIFVTRShESVJFQ1QyRCkKKyAgICBDT01QdHI8SVdJQ0JpdG1hcERlY29k
ZXI+IG1fbmF0aXZlRGVjb2RlcjsKKyAgICBDT01QdHI8SUQyRDFSZW5kZXJUYXJnZXQ+IG1fcmVu
ZGVyVGFyZ2V0OworI2Vsc2UKKyAgICBib29sIG1fcHJlbXVsdGlwbHlBbHBoYTsKKyAgICBib29s
IG1faWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGU7CisKKyAgICBSZWZQdHI8U2hhcmVkQnVmZmVy
PiBtX2RhdGE7IC8vIFRoZSBlbmNvZGVkIGRhdGEuCisgICAgVmVjdG9yPEltYWdlRnJhbWUsIDE+
IG1fZnJhbWVCdWZmZXJDYWNoZTsKKyAgICBFbmNvZGVkRGF0YVN0YXR1cyBtX2VuY29kZWREYXRh
U3RhdHVzIHsgRW5jb2RlZERhdGFTdGF0dXM6OlR5cGVBdmFpbGFibGUgfTsKKyAgICBib29sIG1f
ZGVjb2RpbmdTaXplRnJvbVNldERhdGEgeyBmYWxzZSB9OworCisgICAgSW50U2l6ZSBtX3NpemU7
CisgICAgSW1hZ2VPcmllbnRhdGlvbiBtX29yaWVudGF0aW9uOworCisgICAgYm9vbCBtX3NjYWxl
ZCB7IGZhbHNlIH07CisgICAgVmVjdG9yPGludD4gbV9zY2FsZWRDb2x1bW5zOworICAgIFZlY3Rv
cjxpbnQ+IG1fc2NhbGVkUm93czsKKyNlbmRpZgorfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5jcHAKaW5kZXggYTc0NWVh
ODAxNjdmNjNjMjIyYzc1MjI2Y2I5YzEyOTUyY2MyZTcyMi4uOTkzMGQxYmEwODhiMTZhMzQ2YTE2
NjA4ODMwYzVmNWNhODAyZjExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuY3BwCkBAIC0yNywxOCArMjcsMTUgQEAKICNpbmNs
dWRlICJJbWFnZUZyYW1lQ2FjaGUuaCIKIAogI2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAi
SW1hZ2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5o
PgogCi0jaWYgVVNFKENHKQotI2luY2x1ZGUgIkltYWdlRGVjb2RlckNHLmgiCi0jZWxpZiBVU0Uo
RElSRUNUMkQpCisjaWYgIVVTRShDRykgJiYgVVNFKERJUkVDVDJEKQogI2luY2x1ZGUgIkltYWdl
RGVjb2RlckRpcmVjdDJELmgiCiAjaW5jbHVkZSA8V2luQ29kZWMuaD4KLSNlbHNlCi0jaW5jbHVk
ZSAiSW1hZ2VEZWNvZGVyLmgiCiAjZW5kaWYKIAogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGht
ZXRpYy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3Vy
Y2UuY3BwCmluZGV4IDNkNDgzZmI5Mzk3MjJjMmNhZjc2ZmI2NzE1ZDBiZmFjYTM5ZGI0YzEuLjFk
NDY2NzgwNjc0NDFkNzdhMjI5MDJiMmY3NjVjNjk5MDU1OTY5ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKQEAgLTMwLDE5ICszMCwx
MiBAQAogI2luY2x1ZGUgIkltYWdlU291cmNlLmgiCiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKKyNpbmNsdWRlICJJbWFnZURlY29kZXIuaCIKKyNpbmNsdWRlICJJbWFnZU9yaWVudGF0
aW9uLmgiCiAKLSNpZiBVU0UoQ0cpCi0jaW5jbHVkZSAiSW1hZ2VEZWNvZGVyQ0cuaCIKLSNpZiBQ
TEFURk9STShXSU4pCisjaWYgVVNFKENHKSAmJiBQTEFURk9STShXSU4pCiAjaW5jbHVkZSA8V2Vi
S2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2VuZGlmCi0jZWxp
ZiBVU0UoRElSRUNUMkQpCi0jaW5jbHVkZSAiSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaCIKLSNlbHNl
Ci0jaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCi0jZW5kaWYKLQotI2luY2x1ZGUgIkltYWdlT3Jp
ZW50YXRpb24uaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VUeXBlcy5o
CmluZGV4IGRiNjEyMTJlMmVmODlmNTVhZDUzZjY2NjNkODM2MDRiMDY1ODA2YmEuLjc1MTE3M2Ix
YTZjMDZjZTRkMjA3MjAyYjEwMGJjM2I2OGE2ODY0ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVR5cGVzLmgKQEAgLTI1LDEwICsyNSw2IEBACiAKICNwcmFn
bWEgb25jZQogCi0jaWYgVVNFKENHKQotdHlwZWRlZiBzdHJ1Y3QgQ0dJbWFnZVNvdXJjZSogQ0dJ
bWFnZVNvdXJjZVJlZjsKLSNlbmRpZgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIFRoZXJl
IGFyZSBmb3VyIHN1YnNhbXBsaW5nIGxldmVsczogMCA9IDF4LCAxID0gMC41eCwgMiA9IDAuMjV4
LCAzID0gMC4xMjV4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCmluZGV4IGM3ZTExNGVmMTI3ZWViYjgwOWZiNGY1MjYy
MTQzNDNlMzgyNTdhMmMuLjcyZDMwYjQ2NTRjOGExNmMxMjEzMWFhMDczMDlhOGY4NzVjYTA5NGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVj
b2RlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZURlY29kZXJDRy5jcHAKQEAgLTI0LDE1ICsyNCwxMyBAQAogICovCiAKICNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJJbWFnZURlY29kZXJDRy5oIgorI2luY2x1ZGUgIkltYWdlRGVjb2Rl
ci5oIgogCiAjaWYgVVNFKENHKQogCiAjaW5jbHVkZSAiSW1hZ2VJT1NQSS5oIgogI2luY2x1ZGUg
IkltYWdlT3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJJbWFnZVNvdXJjZUNHLmgiCi0jaW5jbHVk
ZSAiSW50UG9pbnQuaCIKLSNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgpAQCAtMTYzLDYgKzE2MSwxMSBAQCBJbWFnZURlY29kZXI6OkltYWdlRGVjb2RlcihTaGFy
ZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZQogICAgICAg
ICBtX25hdGl2ZURlY29kZXIgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDcmVhdGVJbmNyZW1lbnRh
bChudWxscHRyKSk7CiB9CiAKK1JlZlB0cjxJbWFnZURlY29kZXI+IEltYWdlRGVjb2Rlcjo6Y3Jl
YXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQoreworICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgSW1hZ2VEZWNvZGVyKGRhdGEsIGFscGhhT3B0aW9uLCBnYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbikpOworfQorCiBzaXplX3QgSW1hZ2VEZWNvZGVyOjpieXRlc0Rl
Y29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKQogewogICAgIC8vIE1lYXN1cmVkIGJ5IHRyYWNp
bmcgbWFsbG9jL2NhbGxvYyBjYWxscyBvbiBNYWMgT1MgMTAuNi42LCB4ODZfNjQuCkBAIC0xNzMs
NyArMTc2LDcgQEAgc2l6ZV90IEltYWdlRGVjb2Rlcjo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQ
cm9wZXJ0aWVzKCkKICAgICAvLyBiZWhhdmlvciBpcyB1bmNoYW5nZWQuCiAgICAgcmV0dXJuIDEz
MDg4OwogfQotICAgIAorCiBTdHJpbmcgSW1hZ2VEZWNvZGVyOjp1dGkoKSBjb25zdAogewogICAg
IHJldHVybiBDR0ltYWdlU291cmNlR2V0VHlwZShtX25hdGl2ZURlY29kZXIuZ2V0KCkpOwpAQCAt
MTg0LDYgKzE4NywxMSBAQCBTdHJpbmcgSW1hZ2VEZWNvZGVyOjpmaWxlbmFtZUV4dGVuc2lvbigp
IGNvbnN0CiAgICAgcmV0dXJuIFdlYkNvcmU6OnByZWZlcnJlZEV4dGVuc2lvbkZvckltYWdlU291
cmNlVHlwZSh1dGkoKSk7CiB9CiAKK2Jvb2wgSW1hZ2VEZWNvZGVyOjppc0FsbERhdGFSZWNlaXZl
ZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7Cit9CisKIEVuY29k
ZWREYXRhU3RhdHVzIEltYWdlRGVjb2Rlcjo6ZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdAogewog
ICAgIHN3aXRjaCAoQ0dJbWFnZVNvdXJjZUdldFN0YXR1cyhtX25hdGl2ZURlY29kZXIuZ2V0KCkp
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZURlY29kZXJDRy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VE
ZWNvZGVyQ0cuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmMyODRlNzFmZjQ2Y2Fj
NTczNDU0MmJhMGNiZjZiODViZjVhZTA0Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFn
ZURlY29kZXJDRy5oCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVk
ZSAiRGVjb2RpbmdPcHRpb25zLmgiCi0jaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgotI2lu
Y2x1ZGUgIkltYWdlVHlwZXMuaCIKLSNpbmNsdWRlICJJbnRQb2ludC5oIgotI2luY2x1ZGUgIklu
dFNpemUuaCIKLSNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgotI2luY2x1ZGUgPHd0Zi9PcHRpb25h
bC5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0gICAgCi1jbGFzcyBTaGFyZWRCdWZmZXI7Ci0gICAgCi1jbGFzcyBJbWFnZURl
Y29kZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW1hZ2VEZWNvZGVyPiB7Ci0gICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgSW1hZ2VEZWNvZGVyKFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsK
LQotICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRh
LCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBJbWFnZURlY29kZXIoZGF0YSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uKSk7Ci0gICAgfQotICAgIAotICAgIHN0YXRpYyBzaXplX3QgYnl0ZXNEZWNvZGVkVG9E
ZXRlcm1pbmVQcm9wZXJ0aWVzKCk7Ci0KLSAgICBFbmNvZGVkRGF0YVN0YXR1cyBlbmNvZGVkRGF0
YVN0YXR1cygpIGNvbnN0OwotICAgIGJvb2wgaXNTaXplQXZhaWxhYmxlKCkgeyByZXR1cm4gZW5j
b2RlZERhdGFTdGF0dXMoKSA+PSBFbmNvZGVkRGF0YVN0YXR1czo6U2l6ZUF2YWlsYWJsZTsgfQot
ICAgIHNpemVfdCBmcmFtZUNvdW50KCkgY29uc3Q7Ci0gICAgUmVwZXRpdGlvbkNvdW50IHJlcGV0
aXRpb25Db3VudCgpIGNvbnN0OwotICAgIFN0cmluZyB1dGkoKSBjb25zdDsKLSAgICBTdHJpbmcg
ZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdDsKLSAgICBzdGQ6Om9wdGlvbmFsPEludFBvaW50PiBo
b3RTcG90KCkgY29uc3Q7Ci0KLSAgICBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBT
dWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCkgY29uc3Q7Ci0gICAg
Ym9vbCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCkgY29uc3Q7Ci0gICAgSW1hZ2VPcmll
bnRhdGlvbiBmcmFtZU9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0OwotICAgIAotICAg
IGZsb2F0IGZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCkgY29uc3Q7Ci0gICAgYm9vbCBmcmFt
ZUhhc0FscGhhQXRJbmRleChzaXplX3QpIGNvbnN0OwotICAgIGJvb2wgZnJhbWVBbGxvd1N1YnNh
bXBsaW5nQXRJbmRleChzaXplX3QpIGNvbnN0OwotICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNBdElu
ZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQp
IGNvbnN0OwotICAgIAotICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4
KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNv
bnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSBjb25zdDsK
LSAgICAKLSAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpOwotICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQWxs
RGF0YVJlY2VpdmVkOyB9Ci0gICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSB7
IH0KLSAgICAKLXByb3RlY3RlZDoKLSAgICBib29sIG1faXNBbGxEYXRhUmVjZWl2ZWQgeyBmYWxz
ZSB9OwotICAgIFJldGFpblB0cjxDR0ltYWdlU291cmNlUmVmPiBtX25hdGl2ZURlY29kZXI7Ci19
OwotCi19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAppbmRleCA2YWJlN2UzZWFlNTc2MDIyZWQ2
NGFkNDU5MzVhNjU3ZjliYzk4MTIwLi5iMTRlMTk0YTJlMTQxMjQ0ZGU1MTE3OTRhMDg0MzIyOTU4
ZmI3Njk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKQEAgLTI0LDE0ICsyNCwxMiBAQAog
ICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJbWFnZURlY29kZXJEaXJlY3Qy
RC5oIgorI2luY2x1ZGUgIkltYWdlRGVjb2RlciIKIAogI2lmIFVTRShESVJFQ1QyRCkKIAogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIK
LSNpbmNsdWRlICJJbnRQb2ludC5oIgotI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJM
b2dnaW5nLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJTaGFyZWRC
dWZmZXIuaCIKQEAgLTQxLDEwICszOSwxNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUlt
YWdlRGVjb2Rlcjo6SW1hZ2VEZWNvZGVyKCkKK0ltYWdlRGVjb2Rlcjo6SW1hZ2VEZWNvZGVyKFNo
YXJlZEJ1ZmZlciYsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsK
IH0KIAorUmVmUHRyPEltYWdlRGVjb2Rlcj4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxw
aGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VEZWNv
ZGVyKGRhdGEsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOworfQor
CiBJV0lDSW1hZ2luZ0ZhY3RvcnkqIEltYWdlRGVjb2Rlcjo6c3lzdGVtSW1hZ2luZ0ZhY3Rvcnko
KQogewogICAgIHN0YXRpYyBJV0lDSW1hZ2luZ0ZhY3RvcnkqIHdpY0ltYWdpbmdGYWN0b3J5ID0g
bnVsbHB0cjsKQEAgLTc5LDYgKzgyLDEyIEBAIEVuY29kZWREYXRhU3RhdHVzIEltYWdlRGVjb2Rl
cjo6ZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdAogICAgIHJldHVybiBFbmNvZGVkRGF0YVN0YXR1
czo6VW5rbm93bjsKIH0KIAorYm9vbCBJbWFnZURlY29kZXI6OmlzQWxsRGF0YVJlY2VpdmVkKCkg
Y29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwog
SW50U2l6ZSBJbWFnZURlY29kZXI6OnNpemUoKSBjb25zdAogewogICAgIGlmICghbV9uYXRpdmVE
ZWNvZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlRGVjb2RlckRpcmVjdDJELmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMGJkNGQ2ZjY3ZTZiYTMyNTg4YjRhN2Q4MWIxOGU2NzQ5OGQ2YjA5OC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaAorKysgL2Rldi9udWxsCkBAIC0x
LDg4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkNPTVB0ci5oIgotI2luY2x1ZGUgIkltYWdlU291
cmNlLmgiCi0jaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgot
Ci1pbnRlcmZhY2UgSUQyRDFSZW5kZXJUYXJnZXQ7Ci1pbnRlcmZhY2UgSVdJQ0JpdG1hcERlY29k
ZXI7Ci1pbnRlcmZhY2UgSVdJQ0ltYWdpbmdGYWN0b3J5OwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLWNsYXNzIEltYWdlRGVjb2RlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbWFn
ZURlY29kZXI+IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBJ
bWFnZURlY29kZXIoKTsKLSAgICAKLSAgICBzdGF0aWMgUmVmPEltYWdlRGVjb2Rlcj4gY3JlYXRl
KFNoYXJlZEJ1ZmZlciYsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikK
LSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGVjb2RlcigpKTsKLSAg
ICB9Ci0gICAgCi0gICAgc3RhdGljIHNpemVfdCBieXRlc0RlY29kZWRUb0RldGVybWluZVByb3Bl
cnRpZXMoKTsKLSAgICAKLSAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdDsKLSAg
ICBFbmNvZGVkRGF0YVN0YXR1cyBlbmNvZGVkRGF0YVN0YXR1cygpIGNvbnN0OwotICAgIGJvb2wg
aXNTaXplQXZhaWxhYmxlKCkgY29uc3Q7Ci0gICAgCi0gICAgLy8gQWx3YXlzIG9yaWdpbmFsIHNp
emUsIHdpdGhvdXQgc3Vic2FtcGxpbmcuCi0gICAgSW50U2l6ZSBzaXplKCkgY29uc3Q7Ci0gICAg
c2l6ZV90IGZyYW1lQ291bnQoKSBjb25zdDsKLQotICAgIFJlcGV0aXRpb25Db3VudCByZXBldGl0
aW9uQ291bnQoKSBjb25zdDsKLSAgICBzdGQ6Om9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkg
Y29uc3Q7Ci0gICAgCi0gICAgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2Ft
cGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpIGNvbnN0OwotICAgIGJvb2wg
ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QpIGNvbnN0OwotICAgIEltYWdlT3JpZW50YXRp
b24gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90KSBjb25zdDsKLSAgICAKLSAgICBmbG9h
dCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0OwotICAgIGJvb2wgZnJhbWVIYXNB
bHBoYUF0SW5kZXgoc2l6ZV90KSBjb25zdDsKLSAgICBib29sIGZyYW1lQWxsb3dTdWJzYW1wbGlu
Z0F0SW5kZXgoc2l6ZV90KSBjb25zdDsKLSAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChz
aXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KSBjb25z
dDsKLSAgICAKLSAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXpl
X3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBE
ZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykgY29uc3Q7Ci0gICAg
Ci0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsK
LSAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0FsbERhdGFS
ZWNlaXZlZDsgfQotICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgeyB9Ci0K
LSAgICB2b2lkIHNldFRhcmdldENvbnRleHQoSUQyRDFSZW5kZXJUYXJnZXQqKTsKLQotICAgIHN0
YXRpYyBJV0lDSW1hZ2luZ0ZhY3RvcnkqIHN5c3RlbUltYWdpbmdGYWN0b3J5KCk7Ci0KLXByb3Rl
Y3RlZDoKLSAgICBib29sIG1faXNBbGxEYXRhUmVjZWl2ZWQgeyBmYWxzZSB9OwotICAgIG11dGFi
bGUgSW50U2l6ZSBtX3NpemU7Ci0gICAgQ09NUHRyPElXSUNCaXRtYXBEZWNvZGVyPiBtX25hdGl2
ZURlY29kZXI7Ci0gICAgQ09NUHRyPElEMkQxUmVuZGVyVGFyZ2V0PiBtX3JlbmRlclRhcmdldDsK
LX07Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9JbWFnZURlY29kZXIuY3BwCmluZGV4IDRiYTRkYjJhNjIxY2ZjMmY1OGE3NjRiZTRkYWZl
MjM1MWM1Yjc1OGQuLjFhYjg1MzZjOTc3Y2YyN2YzMDU5MWZmM2MzYzc1MTVmMTdmNjhmMTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVj
b2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1h
Z2VEZWNvZGVyLmNwcApAQCAtMjgsNyArMjgsNiBAQAogI2luY2x1ZGUgIklDT0ltYWdlRGVjb2Rl
ci5oIgogI2luY2x1ZGUgIkpQRUdJbWFnZURlY29kZXIuaCIKICNpbmNsdWRlICJQTkdJbWFnZURl
Y29kZXIuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpZiBVU0UoV0VCUCkKICNpbmNs
dWRlICJXRUJQSW1hZ2VEZWNvZGVyLmgiCiAjZW5kaWYKQEAgLTk4LDYgKzk3LDEyIEBAIGJvb2wg
bWF0Y2hlc0NVUlNpZ25hdHVyZShjaGFyKiBjb250ZW50cykKIAogfQogCitJbWFnZURlY29kZXI6
OkltYWdlRGVjb2RlcihTaGFyZWRCdWZmZXImLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCisgICAg
OiBtX3ByZW11bHRpcGx5QWxwaGEoYWxwaGFPcHRpb24gPT0gQWxwaGFPcHRpb246OlByZW11bHRp
cGxpZWQpCisgICAgLCBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKGdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uID09IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uOjpJZ25vcmVkKQorewor
fQorCiBSZWZQdHI8SW1hZ2VEZWNvZGVyPiBJbWFnZURlY29kZXI6OmNyZWF0ZShTaGFyZWRCdWZm
ZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgbGVuZ3RoT2ZMb25nZXN0U2lnbmF0dXJlID0gMTQ7IC8vIFRvIHdpdDogIlJJRkY/Pz8/
V0VCUFZQIgpAQCAtMTA3LDI0ICsxMTIsMjQgQEAgUmVmUHRyPEltYWdlRGVjb2Rlcj4gSW1hZ2VE
ZWNvZGVyOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBoYU8KICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAobWF0Y2hlc0dJRlNpZ25hdHVyZShjb250
ZW50cykpCi0gICAgICAgIHJldHVybiBHSUZJbWFnZURlY29kZXI6OmNyZWF0ZShhbHBoYU9wdGlv
biwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgICAgICByZXR1cm4gR0lGSW1hZ2VE
ZWNvZGVyOjpjcmVhdGUoZGF0YSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKTsKIAogICAgIGlmIChtYXRjaGVzUE5HU2lnbmF0dXJlKGNvbnRlbnRzKSkKLSAgICAgICAg
cmV0dXJuIFBOR0ltYWdlRGVjb2Rlcjo6Y3JlYXRlKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbik7CisgICAgICAgIHJldHVybiBQTkdJbWFnZURlY29kZXI6OmNyZWF0ZShk
YXRhLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogCiAgICAgaWYg
KG1hdGNoZXNJQ09TaWduYXR1cmUoY29udGVudHMpIHx8IG1hdGNoZXNDVVJTaWduYXR1cmUoY29u
dGVudHMpKQotICAgICAgICByZXR1cm4gSUNPSW1hZ2VEZWNvZGVyOjpjcmVhdGUoYWxwaGFPcHRp
b24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICAgICAgcmV0dXJuIElDT0ltYWdl
RGVjb2Rlcjo6Y3JlYXRlKGRhdGEsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbik7CiAKICAgICBpZiAobWF0Y2hlc0pQRUdTaWduYXR1cmUoY29udGVudHMpKQotICAgICAg
ICByZXR1cm4gSlBFR0ltYWdlRGVjb2Rlcjo6Y3JlYXRlKGFscGhhT3B0aW9uLCBnYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbik7CisgICAgICAgIHJldHVybiBKUEVHSW1hZ2VEZWNvZGVyOjpjcmVh
dGUoZGF0YSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAogI2lm
IFVTRShXRUJQKQogICAgIGlmIChtYXRjaGVzV2ViUFNpZ25hdHVyZShjb250ZW50cykpCi0gICAg
ICAgIHJldHVybiBXRUJQSW1hZ2VEZWNvZGVyOjpjcmVhdGUoYWxwaGFPcHRpb24sIGdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICAgICAgcmV0dXJuIFdFQlBJbWFnZURlY29kZXI6OmNy
ZWF0ZShkYXRhLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogI2Vu
ZGlmCiAKICAgICBpZiAobWF0Y2hlc0JNUFNpZ25hdHVyZShjb250ZW50cykpCi0gICAgICAgIHJl
dHVybiBCTVBJbWFnZURlY29kZXI6OmNyZWF0ZShhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pOworICAgICAgICByZXR1cm4gQk1QSW1hZ2VEZWNvZGVyOjpjcmVhdGUoZGF0
YSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAogICAgIHJldHVy
biBudWxscHRyOwogfQpAQCAtMTcwLDYgKzE3NSw5MCBAQCB0ZW1wbGF0ZSA8TWF0Y2hUeXBlIHR5
cGU+IGludCBnZXRTY2FsZWRWYWx1ZShjb25zdCBWZWN0b3I8aW50PiYgc2NhbGVkVmFsdWVzLCBp
bgogCiB9CiAKK3NpemVfdCBJbWFnZURlY29kZXI6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJv
cGVydGllcygpCit7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgSW1hZ2VEZWNvZGVyOjpzZXRE
YXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit7CisgICAgaWYg
KG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkVycm9yKQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX2RhdGEgPSAmZGF0YTsKKyAgICBpZiAobV9lbmNvZGVkRGF0YVN0
YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6VHlwZUF2YWlsYWJsZSkgeworICAgICAgICBtX2Rl
Y29kaW5nU2l6ZUZyb21TZXREYXRhID0gdHJ1ZTsKKyAgICAgICAgdHJ5RGVjb2RlU2l6ZShhbGxE
YXRhUmVjZWl2ZWQpOworICAgICAgICBtX2RlY29kaW5nU2l6ZUZyb21TZXREYXRhID0gZmFsc2U7
CisgICAgfQorCisgICAgaWYgKG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0
dXM6OkVycm9yKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYWxsRGF0YVJlY2VpdmVkKSB7
CisgICAgICAgIEFTU0VSVChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVz
OjpTaXplQXZhaWxhYmxlKTsKKyAgICAgICAgbV9lbmNvZGVkRGF0YVN0YXR1cyA9IEVuY29kZWRE
YXRhU3RhdHVzOjpDb21wbGV0ZTsKKyAgICB9Cit9CisKK2Jvb2wgSW1hZ2VEZWNvZGVyOjppc0Fs
bERhdGFSZWNlaXZlZCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFtX2RlY29kaW5nU2l6ZUZyb21T
ZXREYXRhKTsKKyAgICByZXR1cm4gbV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0
YXR1czo6Q29tcGxldGU7Cit9CisKK0VuY29kZWREYXRhU3RhdHVzIEltYWdlRGVjb2Rlcjo6ZW5j
b2RlZERhdGFTdGF0dXMoKSBjb25zdAoreworICAgIHJldHVybiBtX2VuY29kZWREYXRhU3RhdHVz
OworfQorCitib29sIEltYWdlRGVjb2Rlcjo6c2V0RmFpbGVkKCkKK3sKKyAgICAvLyBTZXRzIHRo
ZSAiZGVjb2RlIGZhaWx1cmUiIGZsYWcuIEZvciBjYWxsZXIgY29udmVuaWVuY2UgKHNpbmNlIHNv
CisgICAgLy8gbWFueSBjYWxsZXJzIHdhbnQgdG8gcmV0dXJuIGZhbHNlIGFmdGVyIGNhbGxpbmcg
dGhpcyksIHJldHVybnMgZmFsc2UKKyAgICAvLyB0byBlbmFibGUgZWFzeSB0YWlsY2FsbGluZy4g
U3ViY2xhc3NlcyBtYXkgb3ZlcnJpZGUgdGhpcyB0byBhbHNvCisgICAgLy8gY2xlYW4gdXAgYW55
IGxvY2FsIGRhdGEuCisgICAgbV9lbmNvZGVkRGF0YVN0YXR1cyA9IEVuY29kZWREYXRhU3RhdHVz
OjpFcnJvcjsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1N0cmluZyBJbWFnZURlY29kZXI6OmZp
bGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKKy8v
IFJldHVybnMgd2hldGhlciB0aGUgc2l6ZSBpcyBsZWdhbCAoaS5lLiBub3QgZ29pbmcgdG8gcmVz
dWx0IGluCisvLyBvdmVyZmxvdyBlbHNld2hlcmUpLiBJZiBub3QsIG1hcmtzIGRlY29kaW5nIGFz
IGZhaWxlZC4KK2Jvb2wgSW1hZ2VEZWNvZGVyOjpzZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUp
Cit7CisgICAgaWYgKEltYWdlQmFja2luZ1N0b3JlOjppc092ZXJTaXplKHNpemUpKQorICAgICAg
ICByZXR1cm4gc2V0RmFpbGVkKCk7CisgICAgbV9zaXplID0gc2l6ZTsKKyAgICBtX2VuY29kZWRE
YXRhU3RhdHVzID0gRW5jb2RlZERhdGFTdGF0dXM6OlNpemVBdmFpbGFibGU7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK3NpemVfdCBJbWFnZURlY29kZXI6OmZyYW1lQ291bnQoKSBjb25zdAorewor
ICAgIC8vIExhemlseS1kZWNvZGVzIGVub3VnaCBvZiB0aGUgaW1hZ2UgdG8gZ2V0IHRoZSBmcmFt
ZSBjb3VudCAoaWYKKyAgICAvLyBwb3NzaWJsZSksIHdpdGhvdXQgZGVjb2RpbmcgdGhlIGluZGl2
aWR1YWwgZnJhbWVzLgorICAgIC8vIEZJWE1FOiBSaWdodCBub3cgdGhhdCBoYXMgdG8gYmUgZG9u
ZSBieSBlYWNoIHN1YmNsYXNzOyBmYWN0b3IgdGhlCisgICAgLy8gZGVjb2RlIGNhbGwgb3V0IGFu
ZCB1c2UgaXQgaGVyZS4KKyAgICByZXR1cm4gMTsKK30KKworUmVwZXRpdGlvbkNvdW50IEltYWdl
RGVjb2Rlcjo6cmVwZXRpdGlvbkNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gUmVwZXRpdGlv
bkNvdW50Tm9uZTsKK30KKworc3RkOjpvcHRpb25hbDxJbnRQb2ludD4gSW1hZ2VEZWNvZGVyOjpo
b3RTcG90KCkgY29uc3QKK3sKKyAgICAvLyBJZiB0aGUgaW1hZ2UgaGFzIGEgY3Vyc29yIGhvdC1z
cG90LCBzdG9yZXMgaXQgaW4gdGhlIGFyZ3VtZW50CisgICAgLy8gYW5kIHJldHVybnMgdHJ1ZS4g
T3RoZXJ3aXNlIHJldHVybnMgZmFsc2UuCisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKyAg
ICAKIGJvb2wgSW1hZ2VEZWNvZGVyOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRl
eCkKIHsKICAgICBJbWFnZUZyYW1lKiBidWZmZXIgPSBmcmFtZUJ1ZmZlckF0SW5kZXgoaW5kZXgp
OwpAQCAtMjA5LDYgKzI5OCwyNiBAQCBmbG9hdCBJbWFnZURlY29kZXI6OmZyYW1lRHVyYXRpb25B
dEluZGV4KHNpemVfdCBpbmRleCkKICAgICByZXR1cm4gZHVyYXRpb247CiB9CiAKK0ltYWdlT3Jp
ZW50YXRpb24gSW1hZ2VEZWNvZGVyOjpmcmFtZU9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fb3JpZW50YXRpb247Cit9CisKK0ludFNpemUgSW1hZ2VEZWNv
ZGVyOjpmcmFtZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCkKK3sKKyAgICAv
LyBUaGlzIHdpbGwgb25seSBkaWZmZXIgZnJvbSBzaXplKCkgZm9yIElDTyAod2hlcmUgZWFjaCBm
cmFtZSBpcyBhCisgICAgLy8gZGlmZmVyZW50IGljb24pIG9yIG90aGVyIGZvcm1hdHMgd2hlcmUg
ZGlmZmVyZW50IGZyYW1lcyBhcmUgZGlmZmVyZW50CisgICAgLy8gc2l6ZXMuIFRoaXMgZG9lcyBO
T1QgZGlmZmVyIGZyb20gc2l6ZSgpIGZvciBHSUYsIHNpbmNlIGRlY29kaW5nIEdJRnMKKyAgICAv
LyBjb21wb3NpdGVzIGFueSBzbWFsbGVyIGZyYW1lcyBhZ2FpbnN0IHByZXZpb3VzIGZyYW1lcyB0
byBjcmVhdGUgZnVsbC0KKyAgICAvLyBzaXplIGZyYW1lcy4KKyAgICByZXR1cm4gc2l6ZSgpOwor
fQorCitib29sIEltYWdlRGVjb2Rlcjo6ZnJhbWVBbGxvd1N1YnNhbXBsaW5nQXRJbmRleChzaXpl
X3QpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBOYXRpdmVJbWFnZVB0ciBJbWFn
ZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxp
bmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikKIHsKICAgICAvLyBaZXJvLWhlaWdodCBp
bWFnZXMgY2FuIGNhdXNlIHByb2JsZW1zIGZvciBzb21lIHBvcnRzLiBJZiB3ZSBoYXZlIGFuIGVt
cHR5IGltYWdlIGRpbWVuc2lvbiwganVzdCBiYWlsLgpAQCAtMjI2LDYgKzMzNSwxMiBAQCBOYXRp
dmVJbWFnZVB0ciBJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBp
bmRleCwgU3Vic2FtcGxpbmdMZQogCiB2b2lkIEltYWdlRGVjb2Rlcjo6cHJlcGFyZVNjYWxlRGF0
YUlmTmVjZXNzYXJ5KCkKIHsKKyNpZiBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dOX1NBTVBMSU5H
KQorICAgIHN0YXRpYyBjb25zdCBpbnQgTWF4TnVtUGl4ZWxzIHsgMTAyNCAqIDEwMjQgfTsKKyNl
bHNlCisgICAgc3RhdGljIGNvbnN0IGludCBNYXhOdW1QaXhlbHMgeyAtMSB9OworI2VuZGlmCisg
ICAgCiAgICAgbV9zY2FsZWQgPSBmYWxzZTsKICAgICBtX3NjYWxlZENvbHVtbnMuY2xlYXIoKTsK
ICAgICBtX3NjYWxlZFJvd3MuY2xlYXIoKTsKQEAgLTIzMywxMSArMzQ4LDExIEBAIHZvaWQgSW1h
Z2VEZWNvZGVyOjpwcmVwYXJlU2NhbGVEYXRhSWZOZWNlc3NhcnkoKQogICAgIGludCB3aWR0aCA9
IHNpemUoKS53aWR0aCgpOwogICAgIGludCBoZWlnaHQgPSBzaXplKCkuaGVpZ2h0KCk7CiAgICAg
aW50IG51bVBpeGVscyA9IGhlaWdodCAqIHdpZHRoOwotICAgIGlmIChtX21heE51bVBpeGVscyA8
PSAwIHx8IG51bVBpeGVscyA8PSBtX21heE51bVBpeGVscykKKyAgICBpZiAoTWF4TnVtUGl4ZWxz
IDw9IDAgfHwgbnVtUGl4ZWxzIDw9IE1heE51bVBpeGVscykKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgbV9zY2FsZWQgPSB0cnVlOwotICAgIGRvdWJsZSBzY2FsZSA9IHNxcnQobV9tYXhOdW1QaXhl
bHMgLyAoZG91YmxlKW51bVBpeGVscyk7CisgICAgZG91YmxlIHNjYWxlID0gc3FydChNYXhOdW1Q
aXhlbHMgLyAoZG91YmxlKW51bVBpeGVscyk7CiAgICAgZmlsbFNjYWxlZFZhbHVlcyhtX3NjYWxl
ZENvbHVtbnMsIHNjYWxlLCB3aWR0aCk7CiAgICAgZmlsbFNjYWxlZFZhbHVlcyhtX3NjYWxlZFJv
d3MsIHNjYWxlLCBoZWlnaHQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMzQyY2RiMGRkZjZmYTRmZjRhZGZlOWU4OWFlYTljYTgxYzI2YzNmMC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDIz
MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDE2IEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAwOSBUb3JjaCBNb2Jp
bGUsIEluYy4KLSAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAw
OS0yMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5IE5va2lh
IENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIklt
YWdlRnJhbWUuaCIKLSNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiSW50U2l6ZS5oIgot
I2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0j
aW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KLSNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIEltYWdl
RGVjb2RlciBpcyBhIGJhc2UgZm9yIGFsbCBmb3JtYXQtc3BlY2lmaWMgZGVjb2RlcnMKLS8vIChl
LmcuIEpQRUdJbWFnZURlY29kZXIpLiBUaGlzIGJhc2UgbWFuYWdlcyB0aGUgSW1hZ2VGcmFtZSBj
YWNoZS4KLS8vCi0vLyBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dOX1NBTVBMSU5HKSBhbGxvd3Mg
aW1hZ2UgZGVjb2RlcnMgdG8gZG93bnNhbXBsZQotLy8gYXQgZGVjb2RlIHRpbWUuIEltYWdlIGRl
Y29kZXJzIHdpbGwgZG93bnNhbXBsZSBhbnkgaW1hZ2VzIGxhcmdlciB0aGFuCi0vLyB8bV9tYXhO
dW1QaXhlbHN8LiBGSVhNRTogTm90IHlldCBzdXBwb3J0ZWQgYnkgYWxsIGRlY29kZXJzLgotY2xh
c3MgSW1hZ2VEZWNvZGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEltYWdlRGVjb2Rl
cj4gewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlRGVjb2Rlcik7IFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIEltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBo
YU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pCi0gICAgICAgIDogbV9wcmVtdWx0aXBseUFscGhhKGFscGhhT3B0aW9uID09IEFscGhh
T3B0aW9uOjpQcmVtdWx0aXBsaWVkKQotICAgICAgICAsIG1faWdub3JlR2FtbWFBbmRDb2xvclBy
b2ZpbGUoZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gPT0gR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb246Oklnbm9yZWQpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgfkltYWdlRGVjb2Rl
cigpCi0gICAgewotICAgIH0KLQotICAgIC8vIFJldHVybnMgbnVsbHB0ciBpZiB3ZSBjYW4ndCBz
bmlmZiBhIHN1cHBvcnRlZCB0eXBlIGZyb20gdGhlIHByb3ZpZGVkIGRhdGEgKHBvc3NpYmx5Ci0g
ICAgLy8gYmVjYXVzZSB0aGVyZSBpc24ndCBlbm91Z2ggZGF0YSB5ZXQpLgotICAgIHN0YXRpYyBS
ZWZQdHI8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlv
biwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwotCi0gICAgdmlydHVhbCBTdHJpbmcgZmls
ZW5hbWVFeHRlbnNpb24oKSBjb25zdCA9IDA7Ci0KLSAgICBib29sIHByZW11bHRpcGx5QWxwaGEo
KSBjb25zdCB7IHJldHVybiBtX3ByZW11bHRpcGx5QWxwaGE7IH0KLQotICAgIGJvb2wgaXNBbGxE
YXRhUmVjZWl2ZWQoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX2RlY29kaW5nU2l6
ZUZyb21TZXREYXRhKTsKLSAgICAgICAgcmV0dXJuIG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5j
b2RlZERhdGFTdGF0dXM6OkNvbXBsZXRlOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBzZXRE
YXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCi0gICAgewotICAg
ICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3Ip
Ci0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbV9kYXRhID0gJmRhdGE7Ci0gICAgICAg
IGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpUeXBlQXZhaWxh
YmxlKSB7Ci0gICAgICAgICAgICBtX2RlY29kaW5nU2l6ZUZyb21TZXREYXRhID0gdHJ1ZTsKLSAg
ICAgICAgICAgIHRyeURlY29kZVNpemUoYWxsRGF0YVJlY2VpdmVkKTsKLSAgICAgICAgICAgIG1f
ZGVjb2RpbmdTaXplRnJvbVNldERhdGEgPSBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlm
IChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcikKLSAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAoYWxsRGF0YVJlY2VpdmVkKSB7Ci0gICAgICAg
ICAgICBBU1NFUlQobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6U2l6
ZUF2YWlsYWJsZSk7Ci0gICAgICAgICAgICBtX2VuY29kZWREYXRhU3RhdHVzID0gRW5jb2RlZERh
dGFTdGF0dXM6OkNvbXBsZXRlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgRW5jb2RlZERhdGFT
dGF0dXMgZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdCB7IHJldHVybiBtX2VuY29kZWREYXRhU3Rh
dHVzOyB9Ci0KLSAgICBib29sIGlzU2l6ZUF2YWlsYWJsZSgpIHsgcmV0dXJuIG1fZW5jb2RlZERh
dGFTdGF0dXMgPj0gRW5jb2RlZERhdGFTdGF0dXM6OlNpemVBdmFpbGFibGU7IH0KLQotICAgIHZp
cnR1YWwgSW50U2l6ZSBzaXplKCkgeyByZXR1cm4gaXNTaXplQXZhaWxhYmxlKCkgPyBtX3NpemUg
OiBJbnRTaXplKCk7IH0KLQotICAgIEludFNpemUgc2NhbGVkU2l6ZSgpCi0gICAgewotICAgICAg
ICByZXR1cm4gbV9zY2FsZWQgPyBJbnRTaXplKG1fc2NhbGVkQ29sdW1ucy5zaXplKCksIG1fc2Nh
bGVkUm93cy5zaXplKCkpIDogc2l6ZSgpOwotICAgIH0KLQotICAgIC8vIFRoaXMgd2lsbCBvbmx5
IGRpZmZlciBmcm9tIHNpemUoKSBmb3IgSUNPICh3aGVyZSBlYWNoIGZyYW1lIGlzIGEKLSAgICAv
LyBkaWZmZXJlbnQgaWNvbikgb3Igb3RoZXIgZm9ybWF0cyB3aGVyZSBkaWZmZXJlbnQgZnJhbWVz
IGFyZSBkaWZmZXJlbnQKLSAgICAvLyBzaXplcy4gVGhpcyBkb2VzIE5PVCBkaWZmZXIgZnJvbSBz
aXplKCkgZm9yIEdJRiwgc2luY2UgZGVjb2RpbmcgR0lGcwotICAgIC8vIGNvbXBvc2l0ZXMgYW55
IHNtYWxsZXIgZnJhbWVzIGFnYWluc3QgcHJldmlvdXMgZnJhbWVzIHRvIGNyZWF0ZSBmdWxsLQot
ICAgIC8vIHNpemUgZnJhbWVzLgotICAgIHZpcnR1YWwgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4
KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBzaXplKCk7
Ci0gICAgfQotCi0gICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBzaXplIGlzIGxlZ2FsIChpLmUu
IG5vdCBnb2luZyB0byByZXN1bHQgaW4KLSAgICAvLyBvdmVyZmxvdyBlbHNld2hlcmUpLiBJZiBu
b3QsIG1hcmtzIGRlY29kaW5nIGFzIGZhaWxlZC4KLSAgICB2aXJ0dWFsIGJvb2wgc2V0U2l6ZShj
b25zdCBJbnRTaXplJiBzaXplKQotICAgIHsKLSAgICAgICAgaWYgKEltYWdlQmFja2luZ1N0b3Jl
Ojppc092ZXJTaXplKHNpemUpKQotICAgICAgICAgICAgcmV0dXJuIHNldEZhaWxlZCgpOwotICAg
ICAgICBtX3NpemUgPSBzaXplOwotICAgICAgICBtX2VuY29kZWREYXRhU3RhdHVzID0gRW5jb2Rl
ZERhdGFTdGF0dXM6OlNpemVBdmFpbGFibGU7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LQotICAgIC8vIExhemlseS1kZWNvZGVzIGVub3VnaCBvZiB0aGUgaW1hZ2UgdG8gZ2V0IHRoZSBm
cmFtZSBjb3VudCAoaWYKLSAgICAvLyBwb3NzaWJsZSksIHdpdGhvdXQgZGVjb2RpbmcgdGhlIGlu
ZGl2aWR1YWwgZnJhbWVzLgotICAgIC8vIEZJWE1FOiBSaWdodCBub3cgdGhhdCBoYXMgdG8gYmUg
ZG9uZSBieSBlYWNoIHN1YmNsYXNzOyBmYWN0b3IgdGhlCi0gICAgLy8gZGVjb2RlIGNhbGwgb3V0
IGFuZCB1c2UgaXQgaGVyZS4KLSAgICB2aXJ0dWFsIHNpemVfdCBmcmFtZUNvdW50KCkgY29uc3Qg
eyByZXR1cm4gMTsgfQotCi0gICAgdmlydHVhbCBSZXBldGl0aW9uQ291bnQgcmVwZXRpdGlvbkNv
dW50KCkgY29uc3QgeyByZXR1cm4gUmVwZXRpdGlvbkNvdW50Tm9uZTsgfQotCi0gICAgLy8gRGVj
b2RlcyBhcyBtdWNoIG9mIHRoZSByZXF1ZXN0ZWQgZnJhbWUgYXMgcG9zc2libGUsIGFuZCByZXR1
cm5zIGFuCi0gICAgLy8gSW1hZ2VEZWNvZGVyLW93bmVkIHBvaW50ZXIuCi0gICAgdmlydHVhbCBJ
bWFnZUZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90KSA9IDA7Ci0KLSAgICBib29sIGZy
YW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90KTsKLQotICAgIC8vIE1ha2UgdGhlIGJlc3QgZWZm
b3J0IGd1ZXNzIHRvIGNoZWNrIGlmIHRoZSByZXF1ZXN0ZWQgZnJhbWUgaGFzIGFscGhhIGNoYW5u
ZWwuCi0gICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QpIGNvbnN0OwotCi0gICAg
Ly8gTnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBkZWNvZGVkIGZyYW1lIHJlcXVlc3RlZC4gUmV0dXJu
IDAgaWYgbm90IHlldCBkZWNvZGVkLgotICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNp
emVfdCkgY29uc3Q7Ci0gICAgCi0gICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90
KTsKLSAgICAKLSAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXpl
X3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBE
ZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cyk7Ci0KLSAgICB2b2lk
IHNldElnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKGJvb2wgZmxhZykgeyBtX2lnbm9yZUdhbW1h
QW5kQ29sb3JQcm9maWxlID0gZmxhZzsgfQotICAgIGJvb2wgaWdub3Jlc0dhbW1hQW5kQ29sb3JQ
cm9maWxlKCkgY29uc3QgeyByZXR1cm4gbV9pZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZTsgfQot
Ci0gICAgSW1hZ2VPcmllbnRhdGlvbiBmcmFtZU9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpIGNv
bnN0IHsgcmV0dXJuIG1fb3JpZW50YXRpb247IH0KLSAgICAKLSAgICBib29sIGZyYW1lQWxsb3dT
dWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotCi0gICAg
ZW51bSB7IElDQ0NvbG9yUHJvZmlsZUhlYWRlckxlbmd0aCA9IDEyOCB9OwotCi0gICAgc3RhdGlj
IGJvb2wgcmdiQ29sb3JQcm9maWxlKGNvbnN0IGNoYXIqIHByb2ZpbGVEYXRhLCB1bnNpZ25lZCBw
cm9maWxlTGVuZ3RoKQotICAgIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChwcm9maWxlTGVuZ3Ro
LCBwcm9maWxlTGVuZ3RoID49IElDQ0NvbG9yUHJvZmlsZUhlYWRlckxlbmd0aCk7Ci0KLSAgICAg
ICAgcmV0dXJuICFtZW1jbXAoJnByb2ZpbGVEYXRhWzE2XSwgIlJHQiAiLCA0KTsKLSAgICB9Ci0K
LSAgICBzdGF0aWMgc2l6ZV90IGJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpIHsg
cmV0dXJuIDA7IH0KLSAgICAKLSAgICBzdGF0aWMgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGlu
Z0xldmVsRm9yU2NhbGUoZmxvYXQsIFN1YnNhbXBsaW5nTGV2ZWwpIHsgcmV0dXJuIFN1YnNhbXBs
aW5nTGV2ZWw6OkRlZmF1bHQ7IH0KLQotICAgIHN0YXRpYyBib29sIGlucHV0RGV2aWNlQ29sb3JQ
cm9maWxlKGNvbnN0IGNoYXIqIHByb2ZpbGVEYXRhLCB1bnNpZ25lZCBwcm9maWxlTGVuZ3RoKQot
ICAgIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChwcm9maWxlTGVuZ3RoLCBwcm9maWxlTGVuZ3Ro
ID49IElDQ0NvbG9yUHJvZmlsZUhlYWRlckxlbmd0aCk7Ci0KLSAgICAgICAgcmV0dXJuICFtZW1j
bXAoJnByb2ZpbGVEYXRhWzEyXSwgIm1udHIiLCA0KSB8fCAhbWVtY21wKCZwcm9maWxlRGF0YVsx
Ml0sICJzY25yIiwgNCk7Ci0gICAgfQotCi0gICAgLy8gU2V0cyB0aGUgImRlY29kZSBmYWlsdXJl
IiBmbGFnLiBGb3IgY2FsbGVyIGNvbnZlbmllbmNlIChzaW5jZSBzbwotICAgIC8vIG1hbnkgY2Fs
bGVycyB3YW50IHRvIHJldHVybiBmYWxzZSBhZnRlciBjYWxsaW5nIHRoaXMpLCByZXR1cm5zIGZh
bHNlCi0gICAgLy8gdG8gZW5hYmxlIGVhc3kgdGFpbGNhbGxpbmcuIFN1YmNsYXNzZXMgbWF5IG92
ZXJyaWRlIHRoaXMgdG8gYWxzbwotICAgIC8vIGNsZWFuIHVwIGFueSBsb2NhbCBkYXRhLgotICAg
IHZpcnR1YWwgYm9vbCBzZXRGYWlsZWQoKQotICAgIHsKLSAgICAgICAgbV9lbmNvZGVkRGF0YVN0
YXR1cyA9IEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcjsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLQotICAgIGJvb2wgZmFpbGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmNvZGVkRGF0YVN0
YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3I7IH0KLQotICAgIC8vIENsZWFycyBkZWNv
ZGVkIHBpeGVsIGRhdGEgZnJvbSBiZWZvcmUgdGhlIHByb3ZpZGVkIGZyYW1lIHVubGVzcyB0aGF0
Ci0gICAgLy8gZGF0YSBtYXkgYmUgbmVlZGVkIHRvIGRlY29kZSBmdXR1cmUgZnJhbWVzIChlLmcu
IGR1ZSB0byBHSUYgZnJhbWUKLSAgICAvLyBjb21wb3NpdGluZykuCi0gICAgdmlydHVhbCB2b2lk
IGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIHsgfQotCi0gICAgLy8gSWYgdGhlIGltYWdl
IGhhcyBhIGN1cnNvciBob3Qtc3BvdCwgc3RvcmVzIGl0IGluIHRoZSBhcmd1bWVudAotICAgIC8v
IGFuZCByZXR1cm5zIHRydWUuIE90aGVyd2lzZSByZXR1cm5zIGZhbHNlLgotICAgIHZpcnR1YWwg
c3RkOjpvcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgdm9pZCBwcmVwYXJlU2NhbGVEYXRhSWZOZWNlc3Nh
cnkoKTsKLSAgICBpbnQgdXBwZXJCb3VuZFNjYWxlZFgoaW50IG9yaWdYLCBpbnQgc2VhcmNoU3Rh
cnQgPSAwKTsKLSAgICBpbnQgbG93ZXJCb3VuZFNjYWxlZFgoaW50IG9yaWdYLCBpbnQgc2VhcmNo
U3RhcnQgPSAwKTsKLSAgICBpbnQgdXBwZXJCb3VuZFNjYWxlZFkoaW50IG9yaWdZLCBpbnQgc2Vh
cmNoU3RhcnQgPSAwKTsKLSAgICBpbnQgbG93ZXJCb3VuZFNjYWxlZFkoaW50IG9yaWdZLCBpbnQg
c2VhcmNoU3RhcnQgPSAwKTsKLSAgICBpbnQgc2NhbGVkWShpbnQgb3JpZ1ksIGludCBzZWFyY2hT
dGFydCA9IDApOwotCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOyAvLyBUaGUgZW5j
b2RlZCBkYXRhLgotICAgIFZlY3RvcjxJbWFnZUZyYW1lLCAxPiBtX2ZyYW1lQnVmZmVyQ2FjaGU7
Ci0gICAgYm9vbCBtX3NjYWxlZCB7IGZhbHNlIH07Ci0gICAgVmVjdG9yPGludD4gbV9zY2FsZWRD
b2x1bW5zOwotICAgIFZlY3RvcjxpbnQ+IG1fc2NhbGVkUm93czsKLSAgICBib29sIG1fcHJlbXVs
dGlwbHlBbHBoYTsKLSAgICBib29sIG1faWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGU7Ci0gICAg
SW1hZ2VPcmllbnRhdGlvbiBtX29yaWVudGF0aW9uOwotCi1wcml2YXRlOgotICAgIHZpcnR1YWwg
dm9pZCB0cnlEZWNvZGVTaXplKGJvb2wpID0gMDsKLQotICAgIEludFNpemUgbV9zaXplOwotICAg
IEVuY29kZWREYXRhU3RhdHVzIG1fZW5jb2RlZERhdGFTdGF0dXMgeyBFbmNvZGVkRGF0YVN0YXR1
czo6VHlwZUF2YWlsYWJsZSB9OwotICAgIGJvb2wgbV9kZWNvZGluZ1NpemVGcm9tU2V0RGF0YSB7
IGZhbHNlIH07Ci0jaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKLSAgICBz
dGF0aWMgY29uc3QgaW50IG1fbWF4TnVtUGl4ZWxzIHsgMTAyNCAqIDEwMjQgfTsKLSNlbHNlCi0g
ICAgc3RhdGljIGNvbnN0IGludCBtX21heE51bVBpeGVscyB7IC0xIH07Ci0jZW5kaWYKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKaW5kZXgg
MTNiNWMwODBjYzdiZWMxZTdmYzdlYjhhM2ZjZmUxZGEwYjVmMGY4NC4uNTM5ODZlYzFhY2UzMDc2
MjZhZWQ0ZjQ1YTBlOThhODQwYmZmYzI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAK
QEAgLTQwLDggKzQwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gZG9uJ3QgcGFjaykuCiBz
dGF0aWMgY29uc3Qgc2l6ZV90IHNpemVPZkZpbGVIZWFkZXIgPSAxNDsKIAotQk1QSW1hZ2VEZWNv
ZGVyOjpCTVBJbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQotICAgIDogSW1hZ2VE
ZWNvZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK0JNUEltYWdl
RGVjb2Rlcjo6Qk1QSW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24g
YWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKQorICAgIDogSW1hZ2VEZWNvZGVyKGRhdGEsIGFscGhhT3B0aW9uLCBnYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICAsIG1fZGVjb2RlZE9mZnNldCgwKQogewogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUElt
YWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1w
L0JNUEltYWdlRGVjb2Rlci5oCmluZGV4IGM2Mjc2OTBhODMwNjUwNDc0Mzk1YzNhMjhjNWRkNjkx
OTcwYTBhYzMuLjYyMDc3Mjg5MTJmYjNlZDE2YjNjOTE1MjNhZTgxY2Q3MTdlYzc1NmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFn
ZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9i
bXAvQk1QSW1hZ2VEZWNvZGVyLmgKQEAgLTM3LDkgKzM3LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIC8vIFRoaXMgY2xhc3MgZGVjb2RlcyB0aGUgQk1QIGltYWdlIGZvcm1hdC4KICAgICBj
bGFzcyBCTVBJbWFnZURlY29kZXIgZmluYWwgOiBwdWJsaWMgSW1hZ2VEZWNvZGVyIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoQWxwaGFPcHRp
b24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKQorICAgICAgICBzdGF0aWMgUmVmPEltYWdlRGVjb2Rlcj4gY3JlYXRlKFNo
YXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCTVBJbWFnZURlY29kZXIoYWxwaGFPcHRpb24s
IGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBCTVBJbWFnZURlY29kZXIoZGF0YSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBJbWFnZURlY29kZXIKQEAg
LTUyLDcgKzUyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIHNldEZhaWxl
ZCgpIG92ZXJyaWRlOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgQk1QSW1hZ2VEZWNvZGVyKEFs
cGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgICAgIEJNUEltYWdl
RGVjb2RlcihTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbik7CiAgICAgICAgIHZvaWQgdHJ5RGVjb2RlU2l6ZShib29sIGFsbERhdGFSZWNl
aXZlZCkgb3ZlcnJpZGUgeyBkZWNvZGUodHJ1ZSwgYWxsRGF0YVJlY2VpdmVkKTsgfQogCiAgICAg
ICAgIGlubGluZSB1aW50MzJfdCByZWFkVWludDMyKGludCBvZmZzZXQpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VE
ZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9H
SUZJbWFnZURlY29kZXIuY3BwCmluZGV4IGZkMGNjNzUwOTlmNWJhNDJkZTk5OWM4NzIwMTQzNmQw
NTMzOTk3YmUuLjk2YTFjZjE4ODc4OGE2ZWU2YmRhNjNiMjc4MjdkODc5OThkMjkxMzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFn
ZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCkBAIC0zMSw4ICszMSw4IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotR0lGSW1hZ2VEZWNvZGVyOjpHSUZJbWFnZURlY29kZXIoQWxwaGFPcHRpb24g
YWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKQotICAgIDogSW1hZ2VEZWNvZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbikKK0dJRkltYWdlRGVjb2Rlcjo6R0lGSW1hZ2VEZWNvZGVyKFNoYXJlZEJ1
ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAgIDogSW1hZ2VEZWNvZGVyKGRh
dGEsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRklt
YWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lm
L0dJRkltYWdlRGVjb2Rlci5oCmluZGV4IGQ2Y2JhMzlkYmJlMWE4ZmE4MzVlYTc0ZTYzMTNhZThj
Mzg1MWEwYzEuLmI1MmY0NTM0ODE4NzcxOTg5ZDIxNTgyMjYwZTU4NGY4ODY3MDk2YzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFn
ZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9n
aWYvR0lGSW1hZ2VEZWNvZGVyLmgKQEAgLTM1LDkgKzM1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIC8vIFRoaXMgY2xhc3MgZGVjb2RlcyB0aGUgR0lGIGltYWdlIGZvcm1hdC4KICAgICBj
bGFzcyBHSUZJbWFnZURlY29kZXIgZmluYWwgOiBwdWJsaWMgSW1hZ2VEZWNvZGVyIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoQWxwaGFPcHRp
b24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKQorICAgICAgICBzdGF0aWMgUmVmPEltYWdlRGVjb2Rlcj4gY3JlYXRlKFNo
YXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHSUZJbWFnZURlY29kZXIoYWxwaGFPcHRpb24s
IGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBHSUZJbWFnZURlY29kZXIoZGF0YSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKSk7CiAgICAgICAgIH0KIAogICAgICAgICB2aXJ0dWFsIH5HSUZJbWFnZURl
Y29kZXIoKTsKQEAgLTYzLDcgKzYzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2
b2lkIGdpZkNvbXBsZXRlKCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBHSUZJbWFnZURlY29k
ZXIoQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICAgICAgR0lG
SW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uKTsKICAgICAgICAgdm9pZCB0cnlEZWNvZGVTaXplKGJvb2wgYWxsRGF0
YVJlY2VpdmVkKSBvdmVycmlkZSB7IGRlY29kZSgwLCBHSUZTaXplUXVlcnksIGFsbERhdGFSZWNl
aXZlZCk7IH0KIAogICAgICAgICAvLyBJZiB0aGUgcXVlcnkgaXMgR0lGRnVsbFF1ZXJ5LCBkZWNv
ZGVzIHRoZSBpbWFnZSB1cCB0byAoYnV0IG5vdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcApp
bmRleCAzNjNhZTI4M2QzNGFmN2RjZDU0MGJlNWQyMTFhYWRjMmJmMDhlODY3Li4zOGViOWI3YWQz
ZDQ1MGQ2ZTcyZTE2ZjBlZDA3MzUxNmE4NTQ2MmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVy
LmNwcApAQCAtNDQsOCArNDQsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdGF0aWMgY29uc3Qg
c2l6ZV90IHNpemVPZkRpcmVjdG9yeSA9IDY7CiBzdGF0aWMgY29uc3Qgc2l6ZV90IHNpemVPZkRp
ckVudHJ5ID0gMTY7CiAKLUlDT0ltYWdlRGVjb2Rlcjo6SUNPSW1hZ2VEZWNvZGVyKEFscGhhT3B0
aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbikKLSAgICA6IEltYWdlRGVjb2RlcihhbHBoYU9wdGlvbiwgZ2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24pCitJQ09JbWFnZURlY29kZXI6OklDT0ltYWdlRGVjb2RlcihTaGFy
ZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKKyAgICA6IEltYWdlRGVjb2Rl
cihkYXRhLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgLCBt
X2RlY29kZWRPZmZzZXQoMCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAppbmRleCBlNGJi
NjBiOTg4MTdjNjNjNzA3ZTg4ZmIyOTljMThlZWFjM2Y4YjJhLi40MmY0MzQxZjJhNWE0YzRlYTFi
NmIxMmZiNGE4Yzk3NWFjNDljZjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCkBAIC0zNiw5
ICszNiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAvLyBUaGlzIGNsYXNzIGRlY29kZXMg
dGhlIElDTyBhbmQgQ1VSIGltYWdlIGZvcm1hdHMuCiAgICAgY2xhc3MgSUNPSW1hZ2VEZWNvZGVy
IGZpbmFsIDogcHVibGljIEltYWdlRGVjb2RlciB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0
aWMgUmVmPEltYWdlRGVjb2Rlcj4gY3JlYXRlKEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKKyAgICAg
ICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXI+IGNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIEFs
cGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgSUNPSW1hZ2VEZWNvZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbikpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSUNPSW1hZ2VEZWNv
ZGVyKGRhdGEsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogICAg
ICAgICB9CiAKICAgICAgICAgdmlydHVhbCB+SUNPSW1hZ2VEZWNvZGVyKCk7CkBAIC03Niw3ICs3
Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHVpbnQzMl90IG1faW1hZ2VP
ZmZzZXQ7CiAgICAgICAgIH07CiAKLSAgICAgICAgSUNPSW1hZ2VEZWNvZGVyKEFscGhhT3B0aW9u
LCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgICAgIElDT0ltYWdlRGVjb2RlcihT
aGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bik7CiAgICAgICAgIHZvaWQgdHJ5RGVjb2RlU2l6ZShib29sIGFsbERhdGFSZWNlaXZlZCkgb3Zl
cnJpZGUgeyBkZWNvZGUoMCwgdHJ1ZSwgYWxsRGF0YVJlY2VpdmVkKTsgfQogCiAgICAgICAgIC8v
IFJldHVybnMgdHJ1ZSBpZiB8YXwgaXMgYSBwcmVmZXJhYmxlIGljb24gZW50cnkgdG8gfGJ8Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9K
UEVHSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggODZhZTA0Y2Y2MGY0OGE5NjBlNDY4
MzQwMmRlMTMxYzQ0NWNlZDRmYS4uM2Y1OTIyZWE4ZDcxMTFiZDI0M2I2OWI0N2Y1MmYxNTY3NWQ5
NzRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
anBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCkBAIC01MDEsOCArNTAxLDgg
QEAgdm9pZCB0ZXJtX3NvdXJjZShqX2RlY29tcHJlc3NfcHRyIGpkKQogICAgIHNyYy0+ZGVjb2Rl
ci0+ZGVjb2RlcigpLT5qcGVnQ29tcGxldGUoKTsKIH0KIAotSlBFR0ltYWdlRGVjb2Rlcjo6SlBF
R0ltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCi0gICAgOiBJbWFnZURlY29kZXIo
YWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorSlBFR0ltYWdlRGVjb2Rl
cjo6SlBFR0ltYWdlRGVjb2RlcihTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbikKKyAgICA6IEltYWdlRGVjb2RlcihkYXRhLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgKaW5kZXgg
NWE0NmRmZmZhZDNlMjcwNDQxMTlkZjBlZWI4ZTM5NWFjNWRkZmNmZS4uMWRjMTBjYmFlNDEyY2Zh
MzRiZDZiMjJkOTEwZjI2NTIxMmIyMzI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgK
QEAgLTQzLDkgKzQzLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIC8vIFRoaXMgY2xhc3Mg
ZGVjb2RlcyB0aGUgSlBFRyBpbWFnZSBmb3JtYXQuCiAgICAgY2xhc3MgSlBFR0ltYWdlRGVjb2Rl
ciBmaW5hbCA6IHB1YmxpYyBJbWFnZURlY29kZXIgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3Rh
dGljIFJlZjxJbWFnZURlY29kZXI+IGNyZWF0ZShBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCisgICAg
ICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBB
bHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEpQRUdJbWFnZURlY29kZXIoYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBKUEVHSW1hZ2VE
ZWNvZGVyKGRhdGEsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwog
ICAgICAgICB9CiAKICAgICAgICAgdmlydHVhbCB+SlBFR0ltYWdlRGVjb2RlcigpOwpAQCAtNzEs
NyArNzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0T3JpZW50YXRp
b24oSW1hZ2VPcmllbnRhdGlvbiBvcmllbnRhdGlvbikgeyBtX29yaWVudGF0aW9uID0gb3JpZW50
YXRpb247IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEpQRUdJbWFnZURlY29kZXIoQWxwaGFP
cHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICAgICAgSlBFR0ltYWdlRGVj
b2RlcihTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbik7CiAgICAgICAgIHZvaWQgdHJ5RGVjb2RlU2l6ZShib29sIGFsbERhdGFSZWNlaXZl
ZCkgb3ZlcnJpZGUgeyBkZWNvZGUodHJ1ZSwgYWxsRGF0YVJlY2VpdmVkKTsgfQogCiAgICAgICAg
IC8vIERlY29kZXMgdGhlIGltYWdlLiAgSWYgfG9ubHlTaXplfCBpcyB0cnVlLCBzdG9wcyBkZWNv
ZGluZyBhZnRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA4MDcwZjY0OWZmNmM0
Y2IyMWFiYmJjMTNhNWYyN2U5NzBiMDk3MGRjLi5lYjc3N2FhOGM3YzI0OWRmYjExZmI3ZjE0ZGRh
ODZiNTdiZWExYzhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcApAQCAtMjAxLDggKzIw
MSw4IEBAIHByaXZhdGU6CiAgICAgcG5nX2J5dGVwIG1faW50ZXJsYWNlQnVmZmVyOwogfTsKIAot
UE5HSW1hZ2VEZWNvZGVyOjpQTkdJbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24s
IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQot
ICAgIDogSW1hZ2VEZWNvZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bikKK1BOR0ltYWdlRGVjb2Rlcjo6UE5HSW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwg
QWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAgIDogSW1hZ2VEZWNvZGVyKGRhdGEsIGFscGhhT3B0
aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICAsIG1fZG9Ob3RoaW5nT25GYWls
dXJlKGZhbHNlKQogICAgICwgbV9jdXJyZW50RnJhbWUoMCkKICNpZiBFTkFCTEUoQVBORykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJ
bWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3Bu
Zy9QTkdJbWFnZURlY29kZXIuaAppbmRleCAwM2UxZmJjMzFjYWI5YWZlNmU0MTYyM2I1MDVmOTc3
YThkMTY2MzRmLi43NTg4MWI4NTE4MmYxMzI0MGJhM2ZiODEyZDk0ZjM5Zjk2ZmQzNWQzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1h
Z2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
cG5nL1BOR0ltYWdlRGVjb2Rlci5oCkBAIC0zNyw5ICszNyw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAvLyBUaGlzIGNsYXNzIGRlY29kZXMgdGhlIFBORyBpbWFnZSBmb3JtYXQuCiAgICAg
Y2xhc3MgUE5HSW1hZ2VEZWNvZGVyIGZpbmFsIDogcHVibGljIEltYWdlRGVjb2RlciB7CiAgICAg
cHVibGljOgotICAgICAgICBzdGF0aWMgUmVmPEltYWdlRGVjb2Rlcj4gY3JlYXRlKEFscGhhT3B0
aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbikKKyAgICAgICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXI+IGNyZWF0ZShT
aGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUE5HSW1hZ2VEZWNvZGVyKGFscGhhT3B0aW9u
LCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgUE5HSW1hZ2VEZWNvZGVyKGRhdGEsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbikpOwogICAgICAgICB9CiAKICAgICAgICAgdmlydHVhbCB+UE5HSW1hZ2VE
ZWNvZGVyKCk7CkBAIC04OCw3ICs4OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
fQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUE5HSW1hZ2VEZWNvZGVyKEFscGhhT3B0aW9uLCBH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgICAgIFBOR0ltYWdlRGVjb2RlcihTaGFy
ZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7
CiAgICAgICAgIHZvaWQgdHJ5RGVjb2RlU2l6ZShib29sIGFsbERhdGFSZWNlaXZlZCkgb3ZlcnJp
ZGUgeyBkZWNvZGUodHJ1ZSwgMCwgYWxsRGF0YVJlY2VpdmVkKTsgfQogCiAgICAgICAgIC8vIERl
Y29kZXMgdGhlIGltYWdlLiAgSWYgfG9ubHlTaXplfCBpcyB0cnVlLCBzdG9wcyBkZWNvZGluZyBh
ZnRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
d2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKaW5kZXggNDhjZjVhZDM2YjQzMjEx
YjFmYzM5YWFmOTZkYTFhZTRkNGQ5NzU5OC4uZWJiY2Y1MzZkYzYxOGZjNGNkMTVmMzljZDM0YmU1
OGY5YmZmMTYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCkBAIC00NSw4ICs0
NSw4IEBAIGlubGluZSBXRUJQX0NTUF9NT0RFIG91dHB1dE1vZGUoYm9vbCBoYXNBbHBoYSkgeyBy
ZXR1cm4gaGFzQWxwaGEgPyBNT0RFX2JnckEgOiBNCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
V0VCUEltYWdlRGVjb2Rlcjo6V0VCUEltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlv
biwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
Ci0gICAgOiBJbWFnZURlY29kZXIoYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKQorV0VCUEltYWdlRGVjb2Rlcjo6V0VCUEltYWdlRGVjb2RlcihTaGFyZWRCdWZmZXImIGRh
dGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBn
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKKyAgICA6IEltYWdlRGVjb2RlcihkYXRhLCBhbHBo
YU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgLCBtX2RlY29kZXIoMCkK
ICAgICAsIG1faGFzQWxwaGEoZmFsc2UpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oCmlu
ZGV4IGQ3OTU2ZjBjYTAxZDRmMDRmNmYwOGRkMTMwNTdjZTdjMjNjNjU0OWQuLmM3MzU0NzgyZmYx
MmVkNzViMTNiMjAyZTI5ZThhNWI3N2JlMzMwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rl
ci5oCkBAIC0zOCw5ICszOCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV0VCUElt
YWdlRGVjb2RlciBmaW5hbCA6IHB1YmxpYyBJbWFnZURlY29kZXIgewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAg
IHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBo
YU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24pCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
RUJQSW1hZ2VEZWNvZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikp
OworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXRUJQSW1hZ2VEZWNvZGVyKGRhdGEsIGFs
cGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogICAgIH0KIAogICAgIHZp
cnR1YWwgfldFQlBJbWFnZURlY29kZXIoKTsKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAg
IEltYWdlRnJhbWUqIGZyYW1lQnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpIG92ZXJyaWRlOwog
CiBwcml2YXRlOgotICAgIFdFQlBJbWFnZURlY29kZXIoQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uKTsKKyAgICBXRUJQSW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZlciYgZGF0
YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKICAgICB2b2lkIHRy
eURlY29kZVNpemUoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlIHsgZGVjb2RlKHRydWUs
IGFsbERhdGFSZWNlaXZlZCk7IH0KIAogICAgIGJvb2wgZGVjb2RlKGJvb2wgb25seVNpemUsIGJv
b2wgYWxsRGF0YVJlY2VpdmVkKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311642</attachid>
            <date>2017-05-31 15:41:34 -0700</date>
            <delta_ts>2017-06-02 13:04:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172773-20170531154134.patch</filename>
            <type>text/plain</type>
            <size>64793</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3NTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDJmYmZmNzM4ZjZmNmI5
YzBhNzExMjcyYzlmODFmNDc0NGYxNzhhYy4uZTg3NWFhNzkwMGJiZDg2ODAzZTgzOGY2NmJhMmEw
Y2NjOGU1NTZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDE3LTA1LTMxICBTYWlk
IEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgSGF2ZSBh
IHNpbmdsZSBJbWFnZURlY29kZXIgaGVhZGVyIGZpbGUgZm9yIGFsbCBwb3J0cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyNzczCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNv
ZGVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjp+SW1hZ2VEZWNv
ZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6aXNTaXplQXZhaWxhYmxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c2V0UHJlbXVsdGlwbHlBbHBoYSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnByZW11bHRpcGx5QWxwaGEpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzZXRJZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6Omlnbm9yZXNHYW1tYUFuZENvbG9yUHJv
ZmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzY2FsZWRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRGVjb2Rlcjo6ZmFpbGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZy
YW1lQ2FjaGUuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNw
cDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVR5cGVzLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
Ojppc0FsbERhdGFSZWNlaXZlZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1h
Z2VEZWNvZGVyQ0cuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4v
SW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
OjpJbWFnZURlY29kZXIpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRGVjb2Rlcjo6aXNBbGxEYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oOiBSZW1vdmVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXI6OkltYWdlRGVjb2Rlcik6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZURlY29kZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmJ5
dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFn
ZURlY29kZXI6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjppc0Fs
bERhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmVuY29kZWRE
YXRhU3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c2V0RmFpbGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6ZmlsZW5hbWVFeHRlbnNpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlRGVjb2Rlcjo6ZnJhbWVDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29k
ZXI6OnJlcGV0aXRpb25Db3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6Omhv
dFNwb3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZU9yaWVudGF0aW9u
QXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1lU2l6ZUF0SW5k
ZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUFsbG93U3Vic2FtcGxp
bmdBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6cHJlcGFyZVNjYWxl
RGF0YUlmTmVjZXNzYXJ5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFn
ZURlY29kZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9i
bXAvQk1QSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJNUEltYWdlRGVjb2Rl
cjo6Qk1QSW1hZ2VEZWNvZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9i
bXAvQk1QSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Z2lmL0dJRkltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHSUZJbWFnZURlY29k
ZXI6OkdJRkltYWdlRGVjb2Rlcik6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Z2lmL0dJRkltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2ljby9JQ09JbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SUNPSW1hZ2VEZWNv
ZGVyOjpJQ09JbWFnZURlY29kZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2ljby9JQ09JbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlBFR0ltYWdl
RGVjb2Rlcjo6SlBFR0ltYWdlRGVjb2Rlcik6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQTkdJ
bWFnZURlY29kZXI6OlBOR0ltYWdlRGVjb2Rlcik6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
RUJQSW1hZ2VEZWNvZGVyOjpXRUJQSW1hZ2VEZWNvZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaDoKKwogMjAxNy0wNS0zMCAgU2Ft
IFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmVydCBhY2NpZGVudGFsbHkg
Y2hlY2tlZCBpbiBjaGFuZ2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggODZhMjZhODRhZGZmYTBkZmU3ZjYzNzk0MDkyNjk2ZDM4
Y2M0NzE5ZS4uYjBkN2EzNmU1ZmI1YTdiZmFmNGU5MmZjN2ZjZWRhOWUxMjUwZjBmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MjUwMCwxMCArMjUwMCwxMCBAQAogCQk1M0VGNzY2QzE2NTMxOTk0MDA0Q0JFNDkgLyogU2V0dGlu
Z3NNYWNyb3MuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUzRUY3NjZBMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jv
cy5oICovOyB9OwogCQk1NTBBMEJDOTA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTBBMEJD
NzA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgKi87IH07CiAJCTU1MEEwQkNB
MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVh
bGlmaWVkTmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTU1MzRFRTkyMUVERTU2OEQwMDgxOEMwNCAvKiBJbWFnZURlY29kZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MzRFRTkxMUVERTU2ODkw
MDgxOEMwNCAvKiBJbWFnZURlY29kZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1NTUwQ0I0MjFFOTU1RTNDMDAxMTFBQTAgLyogSW1hZ2VUeXBl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU1MENC
NDExRTk1NUUzQzAwMTExQUEwIC8qIEltYWdlVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NTUxMzAwMTFFN0NDQ0NCMDBBNjlFMzggLyog
RGVjb2RpbmdPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1NTUxMzAwMDFFN0NDQ0NBMDBBNjlFMzggLyogRGVjb2RpbmdPcHRpb25zLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTU1Qjg3RUMx
Q0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1NUI4N0VBMUNBQUYwQUIwMDM0OTQyNSAvKiBJ
bWFnZURlY29kZXJDRy5jcHAgKi87IH07Ci0JCTU1NUI4N0VEMUNBQUYwQUIwMDM0OTQyNSAvKiBJ
bWFnZURlY29kZXJDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTU1Qjg3RUIxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmggKi87IH07
CiAJCTU1NzZBNTY0MUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1NzZBNTYyMUQ4OEE3MDgwMEND
QzA0QyAvKiBJbWFnZUZyYW1lLmNwcCAqLzsgfTsKIAkJNTU3NkE1NjUxRDg4QTcwODAwQ0NDMDRD
IC8qIEltYWdlRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU1NzZBNTYzMUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTU5N0Y4MjYxRDkxQzMx
MzAwNjZCQzIxIC8qIEltYWdlRnJhbWVDYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTk3RjgyNDFEOTFDMzEzMDA2NkJDMjEgLyogSW1hZ2VG
cmFtZUNhY2hlLmNwcCAqLzsgfTsKQEAgLTEwMjcxLDEwICsxMDI3MSwxMCBAQAogCQk1M0VGNzY2
QTE2NTMwQTYxMDA0Q0JFNDkgLyogU2V0dGluZ3NNYWNyb3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2V0dGluZ3NNYWNyb3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTUwQTBCQzcwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUXVhbGlm
aWVkTmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1Rh
YnMgPSAwOyB9OwogCQk1NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRX
aWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWFs
aWZpZWROYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1Rh
YnMgPSAwOyB9OworCQk1NTM0RUU5MTFFREU1Njg5MDA4MThDMDQgLyogSW1hZ2VEZWNvZGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEltYWdlRGVjb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1NTUwQ0I0MTFFOTU1RTNDMDAxMTFBQTAgLyogSW1hZ2VUeXBlcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTU1NTEzMDAwMUU3Q0NDQ0EwMEE2OUUzOCAvKiBEZWNvZGluZ09wdGlvbnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVjb2RpbmdPcHRpb25zLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1NUI4N0VBMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFn
ZURlY29kZXJDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFn
ZURlY29kZXJDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU1NUI4N0VCMUNB
QUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbWFnZURlY29kZXJDRy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1NTc2QTU2MjFEODhBNzA4MDBDQ0MwNEMgLyogSW1hZ2VGcmFtZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTU3NkE1NjMxRDg4QTcwODAwQ0NDMDRDIC8qIEltYWdlRnJhbWUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VGcmFtZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1NTk3RjgyNDFEOTFDMzEzMDA2NkJDMjEgLyogSW1hZ2VGcmFt
ZUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlRnJh
bWVDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzA1NCw3ICsyMzA1
NCw2IEBACiAJCQkJMjJCRDlGODAxMzUzNjRGRTAwOUJEMTAyIC8qIEltYWdlQnVmZmVyRGF0YUNH
LmggKi8sCiAJCQkJQjI3NTM1MzAwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlQ0cuY3BwICovLAog
CQkJCTU1NUI4N0VBMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5jcHAgKi8sCi0J
CQkJNTU1Qjg3RUIxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmggKi8sCiAJCQkJ
NEIzNDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0cuaCAqLywKIAkJCQk0QjM0
ODA5MTBFRUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VDR01hYy5tbSAqLywKIAkJCQlCMjc1
MzUzMjBCMDUzODE0MDAyQ0U2NEYgLyogSW50UG9pbnRDRy5jcHAgKi8sCkBAIC0yMzIyOCw2ICsy
MzIyNyw3IEBACiAJCQkJNDNEMjU5NzYxM0M4MTZGNDAwNjA4NTU5IC8qIEltYWdlQnVmZmVyLmNw
cCAqLywKIAkJCQlCMkExMEI5MTBCMzgxOEJEMDAwOTlBQTQgLyogSW1hZ2VCdWZmZXIuaCAqLywK
IAkJCQkyMkJEOUY3RDEzNTM2MjVDMDA5QkQxMDIgLyogSW1hZ2VCdWZmZXJEYXRhLmggKi8sCisJ
CQkJNTUzNEVFOTExRURFNTY4OTAwODE4QzA0IC8qIEltYWdlRGVjb2Rlci5oICovLAogCQkJCTU1
NzZBNTYyMUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmNwcCAqLywKIAkJCQk1NTc2QTU2
MzFEODhBNzA4MDBDQ0MwNEMgLyogSW1hZ2VGcmFtZS5oICovLAogCQkJCTU1OTdGODI0MUQ5MUMz
MTMwMDY2QkMyMSAvKiBJbWFnZUZyYW1lQ2FjaGUuY3BwICovLApAQCAtMjc2NzEsNyArMjc2NzEs
NiBAQAogCQkJCTUxMDE5MkQ2MThCNkI5QjcwMDdGQzdBMSAvKiBJbWFnZUNvbnRyb2xzUm9vdEVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDE5MkQyMThCNkI5QUIwMDdGQzdBMSAvKiBJ
bWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Nzk3OTFB
MEQ2QjlEMEMwMDM4NTFCOSAvKiBJbWFnZURhdGEuaCBpbiBIZWFkZXJzICovLAotCQkJCTU1NUI4
N0VEMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTcyMDVBQjYxMjM5MjkxMDAwQjE3MzgwIC8qIEltYWdlRG9jdW1lbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTU1NzZBNTY1MUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1NTk3RjgyNzFEOTFDMzEzMDA2NkJDMjEgLyogSW1hZ2VGcmFtZUNhY2hl
LmggaW4gSGVhZGVycyAqLywKQEAgLTI4MjMwLDYgKzI4MjI5LDcgQEAKIAkJCQkzMTZEQ0I0RTFF
NzkxMEE2MDAxQjVGODcgLyogSlNSVENJY2VHYXRoZXJpbmdTdGF0ZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMDczNzk0RUMxOUVFMzQxRTAwRTVBMDQ1IC8qIEpTUlRDSWNlU2VydmVyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkzMTZEQ0IyMDFFNzhDQTU1MDAxQjVGODcgLyogSlNSVENPZmZlckFuc3dl
ck9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1MzRFRTkyMUVERTU2OEQwMDgxOEMwNCAv
KiBJbWFnZURlY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OTY5REJBMTdEMTQxNTEwMDdG
Rjg0MiAvKiBKU1JUQ1BlZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzk2OURC
ODE3RDE0MTUxMDA3RkY4NDIgLyogSlNSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1RTJDNDM3NDFCQ0YwRDc1MDAwMUUyQkUgLyogSlNSVENSdHBQYXJhbWV0
ZXJzLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VEZWNvZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDBkOTMyNTlkOWQ3MmY0ZDc0NzM4OWQ0MWM5
ZTNjODE2YTlkZTEzNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oCkBAIC0wLDAgKzEsMTM4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE2LCAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJEZWNvZGluZ09wdGlvbnMuaCIKKyNpZiAhVVNFKENHKSAmJiAhVVNFKERJUkVDVDJE
KQorI2luY2x1ZGUgIkltYWdlRnJhbWUuaCIKKyNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKKyNl
bmRpZgorI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKKyNpbmNsdWRlICJJbWFnZVR5cGVz
LmgiCisjaW5jbHVkZSAiSW50UG9pbnQuaCIKKyNpbmNsdWRlICJJbnRTaXplLmgiCisjaW5jbHVk
ZSAiTmF0aXZlSW1hZ2UuaCIKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3
dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KKworI2lmIFVTRShDRykKK3R5cGVkZWYgc3RydWN0
IENHSW1hZ2VTb3VyY2UqIENHSW1hZ2VTb3VyY2VSZWY7CisjZWxpZiBVU0UoRElSRUNUMkQpCitp
bnRlcmZhY2UgSUQyRDFSZW5kZXJUYXJnZXQ7CitpbnRlcmZhY2UgSVdJQ0JpdG1hcERlY29kZXI7
CitpbnRlcmZhY2UgSVdJQ0ltYWdpbmdGYWN0b3J5OworI2VuZGlmCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKyAgICAKK2NsYXNzIFNoYXJlZEJ1ZmZlcjsKKworY2xhc3MgSW1hZ2VEZWNvZGVyIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEltYWdlRGVjb2Rlcj4geworICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEltYWdlRGVjb2Rlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVi
bGljOgorICAgIEltYWdlRGVjb2RlcihTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgdmlydHVhbCB+SW1hZ2VEZWNvZGVyKCkg
eyB9CisKKyAgICBzdGF0aWMgUmVmUHRyPEltYWdlRGVjb2Rlcj4gY3JlYXRlKFNoYXJlZEJ1ZmZl
ciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBz
dGF0aWMgc2l6ZV90IGJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpOworCisgICAg
RW5jb2RlZERhdGFTdGF0dXMgZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdDsKKyAgICBib29sIGlz
U2l6ZUF2YWlsYWJsZSgpIHsgcmV0dXJuIGVuY29kZWREYXRhU3RhdHVzKCkgPj0gRW5jb2RlZERh
dGFTdGF0dXM6OlNpemVBdmFpbGFibGU7IH0KKyAgICB2aXJ0dWFsIHNpemVfdCBmcmFtZUNvdW50
KCkgY29uc3Q7CisgICAgdmlydHVhbCBSZXBldGl0aW9uQ291bnQgcmVwZXRpdGlvbkNvdW50KCkg
Y29uc3Q7CisgICAgdmlydHVhbCBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdDsKKworICAg
IHZpcnR1YWwgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZl
bCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpOworICAgIGJvb2wgZnJhbWVJc0NvbXBsZXRl
QXRJbmRleChzaXplX3QpOworICAgIEltYWdlT3JpZW50YXRpb24gZnJhbWVPcmllbnRhdGlvbkF0
SW5kZXgoc2l6ZV90KSBjb25zdDsKKworICAgIGZsb2F0IGZyYW1lRHVyYXRpb25BdEluZGV4KHNp
emVfdCk7CisgICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QpOworICAgIGJvb2wg
ZnJhbWVBbGxvd1N1YnNhbXBsaW5nQXRJbmRleChzaXplX3QpIGNvbnN0OworICAgIHVuc2lnbmVk
IGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5n
TGV2ZWw6OkRlZmF1bHQpOworCisgICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0
SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVs
dCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpOwor
CisgICAgdmlydHVhbCB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpOworICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgeyB9CisKKyNpZiBVU0UoQ0cpCisg
ICAgU3RyaW5nIHV0aSgpIGNvbnN0OworI2VsaWYgVVNFKERJUkVDVDJEKQorICAgIHZvaWQgc2V0
VGFyZ2V0Q29udGV4dChJRDJEMVJlbmRlclRhcmdldCopOworICAgIHN0YXRpYyBJV0lDSW1hZ2lu
Z0ZhY3RvcnkqIHN5c3RlbUltYWdpbmdGYWN0b3J5KCk7CisjZWxzZQorICAgIHZvaWQgc2V0UHJl
bXVsdGlwbHlBbHBoYShib29sIHByZW11bHRpcGx5QWxwaGEpIHsgIG1fcHJlbXVsdGlwbHlBbHBo
YSA9IHByZW11bHRpcGx5QWxwaGE7IH0KKyAgICBib29sIHByZW11bHRpcGx5QWxwaGEoKSBjb25z
dCB7IHJldHVybiBtX3ByZW11bHRpcGx5QWxwaGE7IH0KKyAgICB2b2lkIHNldElnbm9yZUdhbW1h
QW5kQ29sb3JQcm9maWxlKGJvb2wgaWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUpIHsgbV9pZ25v
cmVHYW1tYUFuZENvbG9yUHJvZmlsZSA9IGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlOyB9Cisg
ICAgYm9vbCBpZ25vcmVzR2FtbWFBbmRDb2xvclByb2ZpbGUoKSBjb25zdCB7IHJldHVybiBtX2ln
bm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlOyB9CisgICAgCisgICAgdmlydHVhbCBib29sIHNldFNp
emUoY29uc3QgSW50U2l6ZSYpOworICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkgeyByZXR1cm4g
aXNTaXplQXZhaWxhYmxlKCkgPyBtX3NpemUgOiBJbnRTaXplKCk7IH0KKyAgICBJbnRTaXplIHNj
YWxlZFNpemUoKSB7IHJldHVybiBtX3NjYWxlZCA/IEludFNpemUobV9zY2FsZWRDb2x1bW5zLnNp
emUoKSwgbV9zY2FsZWRSb3dzLnNpemUoKSkgOiBzaXplKCk7IH0KKworICAgIHZpcnR1YWwgdm9p
ZCB0cnlEZWNvZGVTaXplKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0RmFpbGVkKCk7
CisgICAgYm9vbCBmYWlsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuY29kZWREYXRhU3RhdHVzID09
IEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcjsgfQorICAgIAorICAgIHZpcnR1YWwgSW1hZ2VGcmFt
ZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCkgPSAwOworCisgICAgdm9pZCBwcmVwYXJlU2Nh
bGVEYXRhSWZOZWNlc3NhcnkoKTsKKyAgICBpbnQgdXBwZXJCb3VuZFNjYWxlZFgoaW50IG9yaWdY
LCBpbnQgc2VhcmNoU3RhcnQgPSAwKTsKKyAgICBpbnQgbG93ZXJCb3VuZFNjYWxlZFgoaW50IG9y
aWdYLCBpbnQgc2VhcmNoU3RhcnQgPSAwKTsKKyAgICBpbnQgdXBwZXJCb3VuZFNjYWxlZFkoaW50
IG9yaWdZLCBpbnQgc2VhcmNoU3RhcnQgPSAwKTsKKyAgICBpbnQgbG93ZXJCb3VuZFNjYWxlZFko
aW50IG9yaWdZLCBpbnQgc2VhcmNoU3RhcnQgPSAwKTsKKyAgICBpbnQgc2NhbGVkWShpbnQgb3Jp
Z1ksIGludCBzZWFyY2hTdGFydCA9IDApOworI2VuZGlmCisKK3Byb3RlY3RlZDoKKyNpZiBVU0Uo
Q0cpCisgICAgUmV0YWluUHRyPENHSW1hZ2VTb3VyY2VSZWY+IG1fbmF0aXZlRGVjb2RlcjsKKyAg
ICBib29sIG1faXNBbGxEYXRhUmVjZWl2ZWQgeyBmYWxzZSB9OworI2VsaWYgVVNFKERJUkVDVDJE
KQorICAgIENPTVB0cjxJV0lDQml0bWFwRGVjb2Rlcj4gbV9uYXRpdmVEZWNvZGVyOworICAgIENP
TVB0cjxJRDJEMVJlbmRlclRhcmdldD4gbV9yZW5kZXJUYXJnZXQ7CisjZWxzZQorICAgIGJvb2wg
bV9wcmVtdWx0aXBseUFscGhhOworICAgIGJvb2wgbV9pZ25vcmVHYW1tYUFuZENvbG9yUHJvZmls
ZTsKKworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsgLy8gVGhlIGVuY29kZWQgZGF0
YS4KKyAgICBWZWN0b3I8SW1hZ2VGcmFtZSwgMT4gbV9mcmFtZUJ1ZmZlckNhY2hlOworICAgIEVu
Y29kZWREYXRhU3RhdHVzIG1fZW5jb2RlZERhdGFTdGF0dXMgeyBFbmNvZGVkRGF0YVN0YXR1czo6
VHlwZUF2YWlsYWJsZSB9OworICAgIGJvb2wgbV9kZWNvZGluZ1NpemVGcm9tU2V0RGF0YSB7IGZh
bHNlIH07CisKKyAgICBJbnRTaXplIG1fc2l6ZTsKKyAgICBJbWFnZU9yaWVudGF0aW9uIG1fb3Jp
ZW50YXRpb247CisKKyAgICBib29sIG1fc2NhbGVkIHsgZmFsc2UgfTsKKyAgICBWZWN0b3I8aW50
PiBtX3NjYWxlZENvbHVtbnM7CisgICAgVmVjdG9yPGludD4gbV9zY2FsZWRSb3dzOworI2VuZGlm
Cit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9J
bWFnZUZyYW1lQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VGcmFtZUNhY2hlLmNwcAppbmRleCBhNzQ1ZWE4MDE2N2Y2M2MyMjJjNzUyMjZjYjljMTI5NTJj
YzJlNzIyLi45OTMwZDFiYTA4OGIxNmEzNDZhMTY2MDg4MzBjNWY1Y2E4MDJmMTFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5j
cHAKQEAgLTI3LDE4ICsyNywxNSBAQAogI2luY2x1ZGUgIkltYWdlRnJhbWVDYWNoZS5oIgogCiAj
aW5jbHVkZSAiSW1hZ2UuaCIKKyNpbmNsdWRlICJJbWFnZURlY29kZXIuaCIKICNpbmNsdWRlICJJ
bWFnZU9ic2VydmVyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlVSTC5oIgog
I2luY2x1ZGUgPHd0Zi9TeXN0ZW1UcmFjaW5nLmg+CiAKLSNpZiBVU0UoQ0cpCi0jaW5jbHVkZSAi
SW1hZ2VEZWNvZGVyQ0cuaCIKLSNlbGlmIFVTRShESVJFQ1QyRCkKKyNpZiAhVVNFKENHKSAmJiBV
U0UoRElSRUNUMkQpCiAjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaCIKICNpbmNsdWRl
IDxXaW5Db2RlYy5oPgotI2Vsc2UKLSNpbmNsdWRlICJJbWFnZURlY29kZXIuaCIKICNlbmRpZgog
CiAjaW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKaW5kZXggM2Q0ODNmYjkzOTcyMmMy
Y2FmNzZmYjY3MTVkMGJmYWNhMzlkYjRjMS4uMWQ0NjY3ODA2NzQ0MWQ3N2EyMjkwMmIyZjc2NWM2
OTkwNTU5NjlmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW1hZ2VTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlU291cmNlLmNwcApAQCAtMzAsMTkgKzMwLDEyIEBACiAjaW5jbHVkZSAiSW1hZ2VTb3VyY2Uu
aCIKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkltYWdlRGVjb2Rl
ci5oIgorI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKIAotI2lmIFVTRShDRykKLSNpbmNs
dWRlICJJbWFnZURlY29kZXJDRy5oIgotI2lmIFBMQVRGT1JNKFdJTikKKyNpZiBVU0UoQ0cpICYm
IFBMQVRGT1JNKFdJTikKICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lz
dGVtSW50ZXJmYWNlLmg+CiAjZW5kaWYKLSNlbGlmIFVTRShESVJFQ1QyRCkKLSNpbmNsdWRlICJJ
bWFnZURlY29kZXJEaXJlY3QyRC5oIgotI2Vsc2UKLSNpbmNsdWRlICJJbWFnZURlY29kZXIuaCIK
LSNlbmRpZgotCi0jaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9D
dXJyZW50VGltZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9JbWFnZVR5cGVzLmgKaW5kZXggZGI2MTIxMmUyZWY4OWY1NWFkNTNm
NjY2M2Q4MzYwNGIwNjU4MDZiYS4uNzUxMTczYjFhNmMwNmNlNGQyMDcyMDJiMTAwYmMzYjY4YTY4
NjQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VU
eXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlVHlwZXMu
aApAQCAtMjUsMTAgKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBVU0UoQ0cpCi10eXBl
ZGVmIHN0cnVjdCBDR0ltYWdlU291cmNlKiBDR0ltYWdlU291cmNlUmVmOwotI2VuZGlmCi0KIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gVGhlcmUgYXJlIGZvdXIgc3Vic2FtcGxpbmcgbGV2ZWxz
OiAwID0gMXgsIDEgPSAwLjV4LCAyID0gMC4yNXgsIDMgPSAwLjEyNXguCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5k
ZXggYzdlMTE0ZWYxMjdlZWJiODA5ZmI0ZjUyNjIxNDM0M2UzODI1N2EyYy4uYTM1NjE5NzhmYmVi
ZjBmOWZhN2U4OTM1ZWVmMzZiYzg5ZmM0Y2FjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcApAQCAtMjQsMTUgKzI0
LDEzIEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkltYWdlRGVjb2Rl
ckNHLmgiCisjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCiAKICNpZiBVU0UoQ0cpCiAKICNpbmNs
dWRlICJJbWFnZUlPU1BJLmgiCiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1
ZGUgIkltYWdlU291cmNlQ0cuaCIKLSNpbmNsdWRlICJJbnRQb2ludC5oIgotI2luY2x1ZGUgIklu
dFNpemUuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CkBAIC0xNjMsNiArMTYxLDExIEBAIElt
YWdlRGVjb2Rlcjo6SW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24s
IEdhbW1hQW5kQ29sb3JQcm9maWxlCiAgICAgICAgIG1fbmF0aXZlRGVjb2RlciA9IGFkb3B0Q0Yo
Q0dJbWFnZVNvdXJjZUNyZWF0ZUluY3JlbWVudGFsKG51bGxwdHIpKTsKIH0KIAorUmVmUHRyPElt
YWdlRGVjb2Rlcj4gSW1hZ2VEZWNvZGVyOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBo
YU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24pCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbWFnZURlY29k
ZXIoZGF0YSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7Cit9CisK
IHNpemVfdCBJbWFnZURlY29kZXI6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygp
CiB7CiAgICAgLy8gTWVhc3VyZWQgYnkgdHJhY2luZyBtYWxsb2MvY2FsbG9jIGNhbGxzIG9uIE1h
YyBPUyAxMC42LjYsIHg4Nl82NC4KQEAgLTE3Myw3ICsxNzYsNyBAQCBzaXplX3QgSW1hZ2VEZWNv
ZGVyOjpieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKQogICAgIC8vIGJlaGF2aW9y
IGlzIHVuY2hhbmdlZC4KICAgICByZXR1cm4gMTMwODg7CiB9Ci0gICAgCisKIFN0cmluZyBJbWFn
ZURlY29kZXI6OnV0aSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIENHSW1hZ2VTb3VyY2VHZXRUeXBl
KG1fbmF0aXZlRGVjb2Rlci5nZXQoKSk7CkBAIC0xODQsNiArMTg3LDExIEBAIFN0cmluZyBJbWFn
ZURlY29kZXI6OmZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QKICAgICByZXR1cm4gV2ViQ29yZTo6
cHJlZmVycmVkRXh0ZW5zaW9uRm9ySW1hZ2VTb3VyY2VUeXBlKHV0aSgpKTsKIH0KIAorYm9vbCBJ
bWFnZURlY29kZXI6OmlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9p
c0FsbERhdGFSZWNlaXZlZDsKK30KKwogRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VEZWNvZGVyOjpl
bmNvZGVkRGF0YVN0YXR1cygpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChDR0ltYWdlU291cmNlR2V0
U3RhdHVzKG1fbmF0aXZlRGVjb2Rlci5nZXQoKSkpIHsKQEAgLTI4MCw3ICsyODgsNyBAQCBzdGQ6
Om9wdGlvbmFsPEludFBvaW50PiBJbWFnZURlY29kZXI6OmhvdFNwb3QoKSBjb25zdAogICAgIHJl
dHVybiBJbnRQb2ludCh4LCB5KTsKIH0KIAotSW50U2l6ZSBJbWFnZURlY29kZXI6OmZyYW1lU2l6
ZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwp
IGNvbnN0CitJbnRTaXplIEltYWdlRGVjb2Rlcjo6ZnJhbWVTaXplQXRJbmRleChzaXplX3QgaW5k
ZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCkKIHsKICAgICBSZXRhaW5QdHI8
Q0ZEaWN0aW9uYXJ5UmVmPiBwcm9wZXJ0aWVzID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ29weVBy
b3BlcnRpZXNBdEluZGV4KG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgaW5kZXgsIGltYWdlU291cmNl
T3B0aW9ucyhzdWJzYW1wbGluZ0xldmVsKS5nZXQoKSkpOwogICAgIApAQCAtMzAwLDcgKzMwOCw3
IEBAIEludFNpemUgSW1hZ2VEZWNvZGVyOjpmcmFtZVNpemVBdEluZGV4KHNpemVfdCBpbmRleCwg
U3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluCiAgICAgcmV0dXJuIEludFNpemUod2lkdGgsIGhl
aWdodCk7CiB9CiAKLWJvb2wgSW1hZ2VEZWNvZGVyOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNp
emVfdCBpbmRleCkgY29uc3QKK2Jvb2wgSW1hZ2VEZWNvZGVyOjpmcmFtZUlzQ29tcGxldGVBdElu
ZGV4KHNpemVfdCBpbmRleCkKIHsKICAgICBBU1NFUlQoZnJhbWVDb3VudCgpKTsKICAgICAvLyBD
R0ltYWdlU291cmNlR2V0U3RhdHVzQXRJbmRleCgpIGNoYW5nZXMgdGhlIHJldHVybiBzdGF0dXMg
dmFsdWUgZnJvbSBrQ0dJbWFnZVN0YXR1c0luY29tcGxldGUKQEAgLTMyMSw3ICszMjksNyBAQCBJ
bWFnZU9yaWVudGF0aW9uIEltYWdlRGVjb2Rlcjo6ZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgoc2l6
ZV90IGluZGV4KSBjb25zdAogICAgIHJldHVybiBvcmllbnRhdGlvbkZyb21Qcm9wZXJ0aWVzKHBy
b3BlcnRpZXMuZ2V0KCkpOwogfQogCi1mbG9hdCBJbWFnZURlY29kZXI6OmZyYW1lRHVyYXRpb25B
dEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKK2Zsb2F0IEltYWdlRGVjb2Rlcjo6ZnJhbWVEdXJh
dGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KQogewogICAgIGZsb2F0IGR1cmF0aW9uID0gMDsKICAg
ICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm9wZXJ0aWVzID0gYWRvcHRDRihDR0ltYWdl
U291cmNlQ29weVByb3BlcnRpZXNBdEluZGV4KG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgaW5kZXgs
IGltYWdlU291cmNlT3B0aW9ucygpLmdldCgpKSk7CkBAIC0zNzcsNyArMzg1LDcgQEAgYm9vbCBJ
bWFnZURlY29kZXI6OmZyYW1lQWxsb3dTdWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBjb25zdAog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEltYWdlRGVjb2Rlcjo6ZnJhbWVIYXNBbHBoYUF0
SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAorYm9vbCBJbWFnZURlY29kZXI6OmZyYW1lSGFzQWxw
aGFBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKICAgICBpZiAoIWZyYW1lSXNDb21wbGV0ZUF0SW5k
ZXgoaW5kZXgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTM5NSwxMyArNDAzLDEzIEBAIGJv
b2wgSW1hZ2VEZWNvZGVyOjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXVuc2lnbmVkIEltYWdlRGVjb2Rlcjo6ZnJhbWVCeXRl
c0F0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwp
IGNvbnN0Cit1bnNpZ25lZCBJbWFnZURlY29kZXI6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBp
bmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsKQogewogICAgIEludFNpemUg
ZnJhbWVTaXplID0gZnJhbWVTaXplQXRJbmRleChpbmRleCwgc3Vic2FtcGxpbmdMZXZlbCk7CiAg
ICAgcmV0dXJuIChmcmFtZVNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCk7CiB9CiAKLU5hdGl2
ZUltYWdlUHRyIEltYWdlRGVjb2Rlcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGlu
ZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0
aW9ucyYgZGVjb2RpbmdPcHRpb25zKSBjb25zdAorTmF0aXZlSW1hZ2VQdHIgSW1hZ2VEZWNvZGVy
OjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwg
c3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNvZGluZ09wdGlvbnMp
CiB7CiAgICAgTE9HKEltYWdlcywgIkltYWdlRGVjb2RlciAlcCBjcmVhdGVGcmFtZUltYWdlQXRJ
bmRleCAlbHUiLCB0aGlzLCBpbmRleCk7CiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4g
b3B0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlRGVjb2RlckNHLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZURlY29kZXJDRy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzI4NGU3MWZm
NDZjYWM1NzM0NTQyYmEwY2JmNmI4NWJmNWFlMDQyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlRGVjb2RlckNHLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
bmNsdWRlICJEZWNvZGluZ09wdGlvbnMuaCIKLSNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgi
Ci0jaW5jbHVkZSAiSW1hZ2VUeXBlcy5oIgotI2luY2x1ZGUgIkludFBvaW50LmgiCi0jaW5jbHVk
ZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCi0jaW5jbHVkZSA8d3RmL09w
dGlvbmFsLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLSAgICAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKLSAgICAKLWNsYXNzIElt
YWdlRGVjb2RlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbWFnZURlY29kZXI+IHsK
LSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBJbWFnZURlY29kZXIo
U2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pOwotCi0gICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXI+IGNyZWF0ZShTaGFyZWRCdWZmZXIm
IGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
biBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEltYWdlRGVjb2RlcihkYXRhLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pKTsKLSAgICB9Ci0gICAgCi0gICAgc3RhdGljIHNpemVfdCBieXRlc0RlY29k
ZWRUb0RldGVybWluZVByb3BlcnRpZXMoKTsKLQotICAgIEVuY29kZWREYXRhU3RhdHVzIGVuY29k
ZWREYXRhU3RhdHVzKCkgY29uc3Q7Ci0gICAgYm9vbCBpc1NpemVBdmFpbGFibGUoKSB7IHJldHVy
biBlbmNvZGVkRGF0YVN0YXR1cygpID49IEVuY29kZWREYXRhU3RhdHVzOjpTaXplQXZhaWxhYmxl
OyB9Ci0gICAgc2l6ZV90IGZyYW1lQ291bnQoKSBjb25zdDsKLSAgICBSZXBldGl0aW9uQ291bnQg
cmVwZXRpdGlvbkNvdW50KCkgY29uc3Q7Ci0gICAgU3RyaW5nIHV0aSgpIGNvbnN0OwotICAgIFN0
cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0OwotICAgIHN0ZDo6b3B0aW9uYWw8SW50UG9p
bnQ+IGhvdFNwb3QoKSBjb25zdDsKLQotICAgIEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXpl
X3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdDsK
LSAgICBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90KSBjb25zdDsKLSAgICBJbWFn
ZU9yaWVudGF0aW9uIGZyYW1lT3JpZW50YXRpb25BdEluZGV4KHNpemVfdCkgY29uc3Q7Ci0gICAg
Ci0gICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90KSBjb25zdDsKLSAgICBib29s
IGZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCkgY29uc3Q7Ci0gICAgYm9vbCBmcmFtZUFsbG93
U3Vic2FtcGxpbmdBdEluZGV4KHNpemVfdCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgZnJhbWVCeXRl
c0F0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVm
YXVsdCkgY29uc3Q7Ci0gICAgCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0
SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVs
dCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpIGNv
bnN0OwotICAgIAotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFS
ZWNlaXZlZCk7Ci0gICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNBbGxEYXRhUmVjZWl2ZWQ7IH0KLSAgICB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXpl
X3QpIHsgfQotICAgIAotcHJvdGVjdGVkOgotICAgIGJvb2wgbV9pc0FsbERhdGFSZWNlaXZlZCB7
IGZhbHNlIH07Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VTb3VyY2VSZWY+IG1fbmF0aXZlRGVjb2Rl
cjsKLX07Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCmluZGV4IDZhYmU3ZTNlYWU1NzYw
MjJlZDY0YWQ0NTkzNWE2NTdmOWJjOTgxMjAuLjY2ZTk5ZGYzNzJlMGY4YjQ5NDVlOTIxZWVhYmU4
MGRjNmMyNjRmMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcApAQCAtMjQsMTQgKzI0LDEy
IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkltYWdlRGVjb2RlckRp
cmVjdDJELmgiCisjaW5jbHVkZSAiSW1hZ2VEZWNvZGVyIgogCiAjaWYgVVNFKERJUkVDVDJEKQog
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlv
bi5oIgotI2luY2x1ZGUgIkludFBvaW50LmgiCi0jaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlci5oIgpAQCAtNDEsMTAgKzM5LDE1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotSW1hZ2VEZWNvZGVyOjpJbWFnZURlY29kZXIoKQorSW1hZ2VEZWNvZGVyOjpJbWFnZURlY29k
ZXIoU2hhcmVkQnVmZmVyJiwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KQogewogfQogCitSZWZQdHI8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRh
LCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbWFn
ZURlY29kZXIoZGF0YSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7
Cit9CisKIElXSUNJbWFnaW5nRmFjdG9yeSogSW1hZ2VEZWNvZGVyOjpzeXN0ZW1JbWFnaW5nRmFj
dG9yeSgpCiB7CiAgICAgc3RhdGljIElXSUNJbWFnaW5nRmFjdG9yeSogd2ljSW1hZ2luZ0ZhY3Rv
cnkgPSBudWxscHRyOwpAQCAtNzksNiArODIsMTIgQEAgRW5jb2RlZERhdGFTdGF0dXMgSW1hZ2VE
ZWNvZGVyOjplbmNvZGVkRGF0YVN0YXR1cygpIGNvbnN0CiAgICAgcmV0dXJuIEVuY29kZWREYXRh
U3RhdHVzOjpVbmtub3duOwogfQogCitib29sIEltYWdlRGVjb2Rlcjo6aXNBbGxEYXRhUmVjZWl2
ZWQoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCiBJbnRTaXplIEltYWdlRGVjb2Rlcjo6c2l6ZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX25h
dGl2ZURlY29kZXIpCkBAIC0xMjAsNyArMTI5LDcgQEAgc3RkOjpvcHRpb25hbDxJbnRQb2ludD4g
SW1hZ2VEZWNvZGVyOjpob3RTcG90KCkgY29uc3QKICAgICByZXR1cm4gSW50UG9pbnQoKTsKIH0K
IAotSW50U2l6ZSBJbWFnZURlY29kZXI6OmZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBT
dWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0CitJbnRTaXplIEltYWdlRGVj
b2Rlcjo6ZnJhbWVTaXplQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vi
c2FtcGxpbmdMZXZlbCkKIHsKICAgICBpZiAoIW1fbmF0aXZlRGVjb2RlcikKICAgICAgICAgcmV0
dXJuIEludFNpemUoKTsKQEAgLTEzOCw3ICsxNDcsNyBAQCBJbnRTaXplIEltYWdlRGVjb2Rlcjo6
ZnJhbWVTaXplQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxp
bgogICAgIHJldHVybiBJbnRTaXplKHdpZHRoLCBoZWlnaHQpOwogfQogCi1ib29sIEltYWdlRGVj
b2Rlcjo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Citib29sIElt
YWdlRGVjb2Rlcjo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgpCiB7CiAgICAg
aWYgKCFtX25hdGl2ZURlY29kZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE1NCw3ICsx
NjMsNyBAQCBJbWFnZU9yaWVudGF0aW9uIEltYWdlRGVjb2Rlcjo6ZnJhbWVPcmllbnRhdGlvbkF0
SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAogICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uKCk7
CiB9CiAKLWZsb2F0IEltYWdlRGVjb2Rlcjo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90IGlu
ZGV4KSBjb25zdAorZmxvYXQgSW1hZ2VEZWNvZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXpl
X3QgaW5kZXgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gMDsKQEAgLTE2
NiwxMyArMTc1LDEzIEBAIGJvb2wgSW1hZ2VEZWNvZGVyOjpmcmFtZUFsbG93U3Vic2FtcGxpbmdB
dEluZGV4KHNpemVfdCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBJbWFnZURl
Y29kZXI6OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKK2Jvb2wgSW1h
Z2VEZWNvZGVyOjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpCiB7CiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdW5zaWduZWQgSW1hZ2VEZWNv
ZGVyOjpmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vi
c2FtcGxpbmdMZXZlbCkgY29uc3QKK3Vuc2lnbmVkIEltYWdlRGVjb2Rlcjo6ZnJhbWVCeXRlc0F0
SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwpCiB7
CiAgICAgaWYgKCFtX25hdGl2ZURlY29kZXIpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTg2LDcg
KzE5NSw3IEBAIHZvaWQgSW1hZ2VEZWNvZGVyOjpzZXRUYXJnZXRDb250ZXh0KElEMkQxUmVuZGVy
VGFyZ2V0KiByZW5kZXJUYXJnZXQpCiAgICAgbV9yZW5kZXJUYXJnZXQgPSByZW5kZXJUYXJnZXQ7
CiB9CiAKLU5hdGl2ZUltYWdlUHRyIEltYWdlRGVjb2Rlcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5k
ZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0
IERlY29kaW5nT3B0aW9ucyYpIGNvbnN0CitOYXRpdmVJbWFnZVB0ciBJbWFnZURlY29kZXI6OmNy
ZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJz
YW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmKQogewogICAgIGlmICghbV9uYXRp
dmVEZWNvZGVyIHx8ICFtX3JlbmRlclRhcmdldCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNv
ZGVyRGlyZWN0MkQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZURlY29kZXJEaXJlY3QyRC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYmQ0ZDZm
NjdlNmJhMzI1ODhiNGE3ZDgxYjE4ZTY3NDk4ZDZiMDk4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaW5jbHVkZSAiQ09NUHRyLmgiCi0jaW5jbHVkZSAiSW1hZ2VTb3VyY2UuaCIKLSNp
bmNsdWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+Ci0KLWludGVyZmFj
ZSBJRDJEMVJlbmRlclRhcmdldDsKLWludGVyZmFjZSBJV0lDQml0bWFwRGVjb2RlcjsKLWludGVy
ZmFjZSBJV0lDSW1hZ2luZ0ZhY3Rvcnk7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
SW1hZ2VEZWNvZGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEltYWdlRGVjb2Rlcj4g
ewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIEltYWdlRGVjb2Rl
cigpOwotICAgIAotICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoU2hhcmVkQnVm
ZmVyJiwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNvZGVyKCkpOwotICAgIH0KLSAgICAK
LSAgICBzdGF0aWMgc2l6ZV90IGJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpOwot
ICAgIAotICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0OwotICAgIEVuY29kZWRE
YXRhU3RhdHVzIGVuY29kZWREYXRhU3RhdHVzKCkgY29uc3Q7Ci0gICAgYm9vbCBpc1NpemVBdmFp
bGFibGUoKSBjb25zdDsKLSAgICAKLSAgICAvLyBBbHdheXMgb3JpZ2luYWwgc2l6ZSwgd2l0aG91
dCBzdWJzYW1wbGluZy4KLSAgICBJbnRTaXplIHNpemUoKSBjb25zdDsKLSAgICBzaXplX3QgZnJh
bWVDb3VudCgpIGNvbnN0OwotCi0gICAgUmVwZXRpdGlvbkNvdW50IHJlcGV0aXRpb25Db3VudCgp
IGNvbnN0OwotICAgIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdDsKLSAg
ICAKLSAgICBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVs
ID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCkgY29uc3Q7Ci0gICAgYm9vbCBmcmFtZUlzQ29t
cGxldGVBdEluZGV4KHNpemVfdCkgY29uc3Q7Ci0gICAgSW1hZ2VPcmllbnRhdGlvbiBmcmFtZU9y
aWVudGF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0OwotICAgIAotICAgIGZsb2F0IGZyYW1lRHVy
YXRpb25BdEluZGV4KHNpemVfdCkgY29uc3Q7Ci0gICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRl
eChzaXplX3QpIGNvbnN0OwotICAgIGJvb2wgZnJhbWVBbGxvd1N1YnNhbXBsaW5nQXRJbmRleChz
aXplX3QpIGNvbnN0OwotICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCwgU3Vi
c2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpIGNvbnN0OwotICAgIAot
ICAgIE5hdGl2ZUltYWdlUHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2Ft
cGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0
aW9ucyYgPSBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzKSBjb25zdDsKLSAgICAKLSAgICB2b2lk
IHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwotICAgIGJvb2wg
aXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9
Ci0gICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSB7IH0KLQotICAgIHZvaWQg
c2V0VGFyZ2V0Q29udGV4dChJRDJEMVJlbmRlclRhcmdldCopOwotCi0gICAgc3RhdGljIElXSUNJ
bWFnaW5nRmFjdG9yeSogc3lzdGVtSW1hZ2luZ0ZhY3RvcnkoKTsKLQotcHJvdGVjdGVkOgotICAg
IGJvb2wgbV9pc0FsbERhdGFSZWNlaXZlZCB7IGZhbHNlIH07Ci0gICAgbXV0YWJsZSBJbnRTaXpl
IG1fc2l6ZTsKLSAgICBDT01QdHI8SVdJQ0JpdG1hcERlY29kZXI+IG1fbmF0aXZlRGVjb2RlcjsK
LSAgICBDT01QdHI8SUQyRDFSZW5kZXJUYXJnZXQ+IG1fcmVuZGVyVGFyZ2V0OwotfTsKLQotfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VE
ZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdl
RGVjb2Rlci5jcHAKaW5kZXggNGJhNGRiMmE2MjFjZmMyZjU4YTc2NGJlNGRhZmUyMzUxYzViNzU4
ZC4uMTYwODAyNjA1NjQyYTk5MWQ3ZjRjM2ZlODFkZWQ4MmFjNjVlNGMwZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIu
Y3BwCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAiSUNPSW1hZ2VEZWNvZGVyLmgiCiAjaW5j
bHVkZSAiSlBFR0ltYWdlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlBOR0ltYWdlRGVjb2Rlci5oIgot
I2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2lmIFVTRShXRUJQKQogI2luY2x1ZGUgIldFQlBJ
bWFnZURlY29kZXIuaCIKICNlbmRpZgpAQCAtOTgsNiArOTcsMTIgQEAgYm9vbCBtYXRjaGVzQ1VS
U2lnbmF0dXJlKGNoYXIqIGNvbnRlbnRzKQogCiB9CiAKK0ltYWdlRGVjb2Rlcjo6SW1hZ2VEZWNv
ZGVyKFNoYXJlZEJ1ZmZlciYsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKKyAgICA6IG1fcHJlbXVs
dGlwbHlBbHBoYShhbHBoYU9wdGlvbiA9PSBBbHBoYU9wdGlvbjo6UHJlbXVsdGlwbGllZCkKKyAg
ICAsIG1faWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUoZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24gPT0gR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb246Oklnbm9yZWQpCit7Cit9CisKIFJlZlB0
cjxJbWFnZURlY29kZXI+IEltYWdlRGVjb2Rlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwg
QWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsZW5n
dGhPZkxvbmdlc3RTaWduYXR1cmUgPSAxNDsgLy8gVG8gd2l0OiAiUklGRj8/Pz9XRUJQVlAiCkBA
IC0xMDcsMjQgKzExMiwyNCBAQCBSZWZQdHI8SW1hZ2VEZWNvZGVyPiBJbWFnZURlY29kZXI6OmNy
ZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhTwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKIAogICAgIGlmIChtYXRjaGVzR0lGU2lnbmF0dXJlKGNvbnRlbnRzKSkKLSAg
ICAgICAgcmV0dXJuIEdJRkltYWdlRGVjb2Rlcjo6Y3JlYXRlKGFscGhhT3B0aW9uLCBnYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgICAgIHJldHVybiBHSUZJbWFnZURlY29kZXI6OmNy
ZWF0ZShkYXRhLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogCiAg
ICAgaWYgKG1hdGNoZXNQTkdTaWduYXR1cmUoY29udGVudHMpKQotICAgICAgICByZXR1cm4gUE5H
SW1hZ2VEZWNvZGVyOjpjcmVhdGUoYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKTsKKyAgICAgICAgcmV0dXJuIFBOR0ltYWdlRGVjb2Rlcjo6Y3JlYXRlKGRhdGEsIGFscGhh
T3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAKICAgICBpZiAobWF0Y2hlc0lD
T1NpZ25hdHVyZShjb250ZW50cykgfHwgbWF0Y2hlc0NVUlNpZ25hdHVyZShjb250ZW50cykpCi0g
ICAgICAgIHJldHVybiBJQ09JbWFnZURlY29kZXI6OmNyZWF0ZShhbHBoYU9wdGlvbiwgZ2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgICAgICByZXR1cm4gSUNPSW1hZ2VEZWNvZGVyOjpj
cmVhdGUoZGF0YSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAog
ICAgIGlmIChtYXRjaGVzSlBFR1NpZ25hdHVyZShjb250ZW50cykpCi0gICAgICAgIHJldHVybiBK
UEVHSW1hZ2VEZWNvZGVyOjpjcmVhdGUoYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uKTsKKyAgICAgICAgcmV0dXJuIEpQRUdJbWFnZURlY29kZXI6OmNyZWF0ZShkYXRhLCBh
bHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogCiAjaWYgVVNFKFdFQlAp
CiAgICAgaWYgKG1hdGNoZXNXZWJQU2lnbmF0dXJlKGNvbnRlbnRzKSkKLSAgICAgICAgcmV0dXJu
IFdFQlBJbWFnZURlY29kZXI6OmNyZWF0ZShhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pOworICAgICAgICByZXR1cm4gV0VCUEltYWdlRGVjb2Rlcjo6Y3JlYXRlKGRhdGEs
IGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAjZW5kaWYKIAogICAg
IGlmIChtYXRjaGVzQk1QU2lnbmF0dXJlKGNvbnRlbnRzKSkKLSAgICAgICAgcmV0dXJuIEJNUElt
YWdlRGVjb2Rlcjo6Y3JlYXRlKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bik7CisgICAgICAgIHJldHVybiBCTVBJbWFnZURlY29kZXI6OmNyZWF0ZShkYXRhLCBhbHBoYU9w
dGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogCiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CkBAIC0xNzAsMTMgKzE3NSw5NyBAQCB0ZW1wbGF0ZSA8TWF0Y2hUeXBlIHR5cGU+IGludCBn
ZXRTY2FsZWRWYWx1ZShjb25zdCBWZWN0b3I8aW50PiYgc2NhbGVkVmFsdWVzLCBpbgogCiB9CiAK
K3NpemVfdCBJbWFnZURlY29kZXI6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygp
Cit7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit7CisgICAgaWYgKG1fZW5jb2Rl
ZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkVycm9yKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX2RhdGEgPSAmZGF0YTsKKyAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBF
bmNvZGVkRGF0YVN0YXR1czo6VHlwZUF2YWlsYWJsZSkgeworICAgICAgICBtX2RlY29kaW5nU2l6
ZUZyb21TZXREYXRhID0gdHJ1ZTsKKyAgICAgICAgdHJ5RGVjb2RlU2l6ZShhbGxEYXRhUmVjZWl2
ZWQpOworICAgICAgICBtX2RlY29kaW5nU2l6ZUZyb21TZXREYXRhID0gZmFsc2U7CisgICAgfQor
CisgICAgaWYgKG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkVycm9y
KQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYWxsRGF0YVJlY2VpdmVkKSB7CisgICAgICAg
IEFTU0VSVChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpTaXplQXZh
aWxhYmxlKTsKKyAgICAgICAgbV9lbmNvZGVkRGF0YVN0YXR1cyA9IEVuY29kZWREYXRhU3RhdHVz
OjpDb21wbGV0ZTsKKyAgICB9Cit9CisKK2Jvb2wgSW1hZ2VEZWNvZGVyOjppc0FsbERhdGFSZWNl
aXZlZCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFtX2RlY29kaW5nU2l6ZUZyb21TZXREYXRhKTsK
KyAgICByZXR1cm4gbV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6Q29t
cGxldGU7Cit9CisKK0VuY29kZWREYXRhU3RhdHVzIEltYWdlRGVjb2Rlcjo6ZW5jb2RlZERhdGFT
dGF0dXMoKSBjb25zdAoreworICAgIHJldHVybiBtX2VuY29kZWREYXRhU3RhdHVzOworfQorCiti
b29sIEltYWdlRGVjb2Rlcjo6c2V0RmFpbGVkKCkKK3sKKyAgICAvLyBTZXRzIHRoZSAiZGVjb2Rl
IGZhaWx1cmUiIGZsYWcuIEZvciBjYWxsZXIgY29udmVuaWVuY2UgKHNpbmNlIHNvCisgICAgLy8g
bWFueSBjYWxsZXJzIHdhbnQgdG8gcmV0dXJuIGZhbHNlIGFmdGVyIGNhbGxpbmcgdGhpcyksIHJl
dHVybnMgZmFsc2UKKyAgICAvLyB0byBlbmFibGUgZWFzeSB0YWlsY2FsbGluZy4gU3ViY2xhc3Nl
cyBtYXkgb3ZlcnJpZGUgdGhpcyB0byBhbHNvCisgICAgLy8gY2xlYW4gdXAgYW55IGxvY2FsIGRh
dGEuCisgICAgbV9lbmNvZGVkRGF0YVN0YXR1cyA9IEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcjsK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1N0cmluZyBJbWFnZURlY29kZXI6OmZpbGVuYW1lRXh0
ZW5zaW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKKy8vIFJldHVybnMg
d2hldGhlciB0aGUgc2l6ZSBpcyBsZWdhbCAoaS5lLiBub3QgZ29pbmcgdG8gcmVzdWx0IGluCisv
LyBvdmVyZmxvdyBlbHNld2hlcmUpLiBJZiBub3QsIG1hcmtzIGRlY29kaW5nIGFzIGZhaWxlZC4K
K2Jvb2wgSW1hZ2VEZWNvZGVyOjpzZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCit7CisgICAg
aWYgKEltYWdlQmFja2luZ1N0b3JlOjppc092ZXJTaXplKHNpemUpKQorICAgICAgICByZXR1cm4g
c2V0RmFpbGVkKCk7CisgICAgbV9zaXplID0gc2l6ZTsKKyAgICBtX2VuY29kZWREYXRhU3RhdHVz
ID0gRW5jb2RlZERhdGFTdGF0dXM6OlNpemVBdmFpbGFibGU7CisgICAgcmV0dXJuIHRydWU7Cit9
CisKK3NpemVfdCBJbWFnZURlY29kZXI6OmZyYW1lQ291bnQoKSBjb25zdAoreworICAgIC8vIExh
emlseS1kZWNvZGVzIGVub3VnaCBvZiB0aGUgaW1hZ2UgdG8gZ2V0IHRoZSBmcmFtZSBjb3VudCAo
aWYKKyAgICAvLyBwb3NzaWJsZSksIHdpdGhvdXQgZGVjb2RpbmcgdGhlIGluZGl2aWR1YWwgZnJh
bWVzLgorICAgIC8vIEZJWE1FOiBSaWdodCBub3cgdGhhdCBoYXMgdG8gYmUgZG9uZSBieSBlYWNo
IHN1YmNsYXNzOyBmYWN0b3IgdGhlCisgICAgLy8gZGVjb2RlIGNhbGwgb3V0IGFuZCB1c2UgaXQg
aGVyZS4KKyAgICByZXR1cm4gMTsKK30KKworUmVwZXRpdGlvbkNvdW50IEltYWdlRGVjb2Rlcjo6
cmVwZXRpdGlvbkNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gUmVwZXRpdGlvbkNvdW50Tm9u
ZTsKK30KKworc3RkOjpvcHRpb25hbDxJbnRQb2ludD4gSW1hZ2VEZWNvZGVyOjpob3RTcG90KCkg
Y29uc3QKK3sKKyAgICAvLyBJZiB0aGUgaW1hZ2UgaGFzIGEgY3Vyc29yIGhvdC1zcG90LCBzdG9y
ZXMgaXQgaW4gdGhlIGFyZ3VtZW50CisgICAgLy8gYW5kIHJldHVybnMgdHJ1ZS4gT3RoZXJ3aXNl
IHJldHVybnMgZmFsc2UuCisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKyAgICAKIGJvb2wg
SW1hZ2VEZWNvZGVyOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKICAg
ICBJbWFnZUZyYW1lKiBidWZmZXIgPSBmcmFtZUJ1ZmZlckF0SW5kZXgoaW5kZXgpOwogICAgIHJl
dHVybiBidWZmZXIgJiYgYnVmZmVyLT5pc0NvbXBsZXRlKCk7CiB9CiAKLWJvb2wgSW1hZ2VEZWNv
ZGVyOjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Citib29sIEltYWdl
RGVjb2Rlcjo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewogICAgIGlmICht
X2ZyYW1lQnVmZmVyQ2FjaGUuc2l6ZSgpIDw9IGluZGV4KQogICAgICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTE4NSw3ICsyNzQsNyBAQCBib29sIEltYWdlRGVjb2Rlcjo6ZnJhbWVIYXNBbHBoYUF0SW5k
ZXgoc2l6ZV90IGluZGV4KSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi11bnNpZ25lZCBJ
bWFnZURlY29kZXI6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKK3Vuc2ln
bmVkIEltYWdlRGVjb2Rlcjo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1w
bGluZ0xldmVsKQogewogICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuc2l6ZSgpIDw9IGluZGV4
KQogICAgICAgICByZXR1cm4gMDsKQEAgLTIwOSw2ICsyOTgsMjYgQEAgZmxvYXQgSW1hZ2VEZWNv
ZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgcmV0dXJuIGR1cmF0
aW9uOwogfQogCitJbWFnZU9yaWVudGF0aW9uIEltYWdlRGVjb2Rlcjo6ZnJhbWVPcmllbnRhdGlv
bkF0SW5kZXgoc2l6ZV90KSBjb25zdAoreworICAgIHJldHVybiBtX29yaWVudGF0aW9uOworfQor
CitJbnRTaXplIEltYWdlRGVjb2Rlcjo6ZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBs
aW5nTGV2ZWwpCit7CisgICAgLy8gVGhpcyB3aWxsIG9ubHkgZGlmZmVyIGZyb20gc2l6ZSgpIGZv
ciBJQ08gKHdoZXJlIGVhY2ggZnJhbWUgaXMgYQorICAgIC8vIGRpZmZlcmVudCBpY29uKSBvciBv
dGhlciBmb3JtYXRzIHdoZXJlIGRpZmZlcmVudCBmcmFtZXMgYXJlIGRpZmZlcmVudAorICAgIC8v
IHNpemVzLiBUaGlzIGRvZXMgTk9UIGRpZmZlciBmcm9tIHNpemUoKSBmb3IgR0lGLCBzaW5jZSBk
ZWNvZGluZyBHSUZzCisgICAgLy8gY29tcG9zaXRlcyBhbnkgc21hbGxlciBmcmFtZXMgYWdhaW5z
dCBwcmV2aW91cyBmcmFtZXMgdG8gY3JlYXRlIGZ1bGwtCisgICAgLy8gc2l6ZSBmcmFtZXMuCisg
ICAgcmV0dXJuIHNpemUoKTsKK30KKworYm9vbCBJbWFnZURlY29kZXI6OmZyYW1lQWxsb3dTdWJz
YW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKwog
TmF0aXZlSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXpl
X3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCiB7CiAg
ICAgLy8gWmVyby1oZWlnaHQgaW1hZ2VzIGNhbiBjYXVzZSBwcm9ibGVtcyBmb3Igc29tZSBwb3J0
cy4gSWYgd2UgaGF2ZSBhbiBlbXB0eSBpbWFnZSBkaW1lbnNpb24sIGp1c3QgYmFpbC4KQEAgLTIy
Niw2ICszMzUsMTIgQEAgTmF0aXZlSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyOjpjcmVhdGVGcmFtZUlt
YWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGUKIAogdm9pZCBJbWFnZURlY29k
ZXI6OnByZXBhcmVTY2FsZURhdGFJZk5lY2Vzc2FyeSgpCiB7CisjaWYgRU5BQkxFKElNQUdFX0RF
Q09ERVJfRE9XTl9TQU1QTElORykKKyAgICBzdGF0aWMgY29uc3QgaW50IE1heE51bVBpeGVscyB7
IDEwMjQgKiAxMDI0IH07CisjZWxzZQorICAgIHN0YXRpYyBjb25zdCBpbnQgTWF4TnVtUGl4ZWxz
IHsgLTEgfTsKKyNlbmRpZgorICAgIAogICAgIG1fc2NhbGVkID0gZmFsc2U7CiAgICAgbV9zY2Fs
ZWRDb2x1bW5zLmNsZWFyKCk7CiAgICAgbV9zY2FsZWRSb3dzLmNsZWFyKCk7CkBAIC0yMzMsMTEg
KzM0OCwxMSBAQCB2b2lkIEltYWdlRGVjb2Rlcjo6cHJlcGFyZVNjYWxlRGF0YUlmTmVjZXNzYXJ5
KCkKICAgICBpbnQgd2lkdGggPSBzaXplKCkud2lkdGgoKTsKICAgICBpbnQgaGVpZ2h0ID0gc2l6
ZSgpLmhlaWdodCgpOwogICAgIGludCBudW1QaXhlbHMgPSBoZWlnaHQgKiB3aWR0aDsKLSAgICBp
ZiAobV9tYXhOdW1QaXhlbHMgPD0gMCB8fCBudW1QaXhlbHMgPD0gbV9tYXhOdW1QaXhlbHMpCisg
ICAgaWYgKE1heE51bVBpeGVscyA8PSAwIHx8IG51bVBpeGVscyA8PSBNYXhOdW1QaXhlbHMpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIG1fc2NhbGVkID0gdHJ1ZTsKLSAgICBkb3VibGUgc2NhbGUg
PSBzcXJ0KG1fbWF4TnVtUGl4ZWxzIC8gKGRvdWJsZSludW1QaXhlbHMpOworICAgIGRvdWJsZSBz
Y2FsZSA9IHNxcnQoTWF4TnVtUGl4ZWxzIC8gKGRvdWJsZSludW1QaXhlbHMpOwogICAgIGZpbGxT
Y2FsZWRWYWx1ZXMobV9zY2FsZWRDb2x1bW5zLCBzY2FsZSwgd2lkdGgpOwogICAgIGZpbGxTY2Fs
ZWRWYWx1ZXMobV9zY2FsZWRSb3dzLCBzY2FsZSwgaGVpZ2h0KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0MmNkYjBkZGY2ZmE0ZmY0YWRmZTllODlhZWE5Y2E4
MWMyNmMzZjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKKysr
IC9kZXYvbnVsbApAQCAtMSwyMzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwg
MjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAy
MDA4LTIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCi0gKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIElu
IE1vdGlvbiBMaW1pdGVkIDIwMDktMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHly
aWdodCAoQykgMjAwOSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll
cykKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpbmNsdWRlICJJbWFnZUZyYW1lLmgiCi0jaW5jbHVkZSAiSW50UmVjdC5oIgotI2lu
Y2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgotI2luY2x1ZGUg
IlNoYXJlZEJ1ZmZlci5oIgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVkZSA8
d3RmL09wdGlvbmFsLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi0vLyBJbWFnZURlY29kZXIgaXMgYSBiYXNlIGZvciBhbGwgZm9ybWF0LXNwZWNp
ZmljIGRlY29kZXJzCi0vLyAoZS5nLiBKUEVHSW1hZ2VEZWNvZGVyKS4gVGhpcyBiYXNlIG1hbmFn
ZXMgdGhlIEltYWdlRnJhbWUgY2FjaGUuCi0vLwotLy8gRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9X
Tl9TQU1QTElORykgYWxsb3dzIGltYWdlIGRlY29kZXJzIHRvIGRvd25zYW1wbGUKLS8vIGF0IGRl
Y29kZSB0aW1lLiBJbWFnZSBkZWNvZGVycyB3aWxsIGRvd25zYW1wbGUgYW55IGltYWdlcyBsYXJn
ZXIgdGhhbgotLy8gfG1fbWF4TnVtUGl4ZWxzfC4gRklYTUU6IE5vdCB5ZXQgc3VwcG9ydGVkIGJ5
IGFsbCBkZWNvZGVycy4KLWNsYXNzIEltYWdlRGVjb2RlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxJbWFnZURlY29kZXI+IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZURl
Y29kZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBJbWFnZURlY29k
ZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQotICAgICAgICA6IG1fcHJlbXVsdGlwbHlBbHBoYShh
bHBoYU9wdGlvbiA9PSBBbHBoYU9wdGlvbjo6UHJlbXVsdGlwbGllZCkKLSAgICAgICAgLCBtX2ln
bm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uID09IEdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uOjpJZ25vcmVkKQotICAgIHsKLSAgICB9Ci0KLSAgICB2
aXJ0dWFsIH5JbWFnZURlY29kZXIoKQotICAgIHsKLSAgICB9Ci0KLSAgICAvLyBSZXR1cm5zIG51
bGxwdHIgaWYgd2UgY2FuJ3Qgc25pZmYgYSBzdXBwb3J0ZWQgdHlwZSBmcm9tIHRoZSBwcm92aWRl
ZCBkYXRhIChwb3NzaWJseQotICAgIC8vIGJlY2F1c2UgdGhlcmUgaXNuJ3QgZW5vdWdoIGRhdGEg
eWV0KS4KLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlRGVjb2Rlcj4gY3JlYXRlKFNoYXJlZEJ1ZmZl
ciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKLQotICAg
IHZpcnR1YWwgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgPSAwOwotCi0gICAgYm9v
bCBwcmVtdWx0aXBseUFscGhhKCkgY29uc3QgeyByZXR1cm4gbV9wcmVtdWx0aXBseUFscGhhOyB9
Ci0KLSAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFT
U0VSVCghbV9kZWNvZGluZ1NpemVGcm9tU2V0RGF0YSk7Ci0gICAgICAgIHJldHVybiBtX2VuY29k
ZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpDb21wbGV0ZTsKLSAgICB9Ci0KLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKQotICAgIHsKLSAgICAgICAgaWYgKG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2Rl
ZERhdGFTdGF0dXM6OkVycm9yKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1fZGF0
YSA9ICZkYXRhOwotICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0
YVN0YXR1czo6VHlwZUF2YWlsYWJsZSkgewotICAgICAgICAgICAgbV9kZWNvZGluZ1NpemVGcm9t
U2V0RGF0YSA9IHRydWU7Ci0gICAgICAgICAgICB0cnlEZWNvZGVTaXplKGFsbERhdGFSZWNlaXZl
ZCk7Ci0gICAgICAgICAgICBtX2RlY29kaW5nU2l6ZUZyb21TZXREYXRhID0gZmFsc2U7Ci0gICAg
ICAgIH0KLQotICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0
YXR1czo6RXJyb3IpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKGFsbERhdGFS
ZWNlaXZlZCkgewotICAgICAgICAgICAgQVNTRVJUKG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5j
b2RlZERhdGFTdGF0dXM6OlNpemVBdmFpbGFibGUpOwotICAgICAgICAgICAgbV9lbmNvZGVkRGF0
YVN0YXR1cyA9IEVuY29kZWREYXRhU3RhdHVzOjpDb21wbGV0ZTsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIEVuY29kZWREYXRhU3RhdHVzIGVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QgeyByZXR1
cm4gbV9lbmNvZGVkRGF0YVN0YXR1czsgfQotCi0gICAgYm9vbCBpc1NpemVBdmFpbGFibGUoKSB7
IHJldHVybiBtX2VuY29kZWREYXRhU3RhdHVzID49IEVuY29kZWREYXRhU3RhdHVzOjpTaXplQXZh
aWxhYmxlOyB9Ci0KLSAgICB2aXJ0dWFsIEludFNpemUgc2l6ZSgpIHsgcmV0dXJuIGlzU2l6ZUF2
YWlsYWJsZSgpID8gbV9zaXplIDogSW50U2l6ZSgpOyB9Ci0KLSAgICBJbnRTaXplIHNjYWxlZFNp
emUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fc2NhbGVkID8gSW50U2l6ZShtX3NjYWxlZENv
bHVtbnMuc2l6ZSgpLCBtX3NjYWxlZFJvd3Muc2l6ZSgpKSA6IHNpemUoKTsKLSAgICB9Ci0KLSAg
ICAvLyBUaGlzIHdpbGwgb25seSBkaWZmZXIgZnJvbSBzaXplKCkgZm9yIElDTyAod2hlcmUgZWFj
aCBmcmFtZSBpcyBhCi0gICAgLy8gZGlmZmVyZW50IGljb24pIG9yIG90aGVyIGZvcm1hdHMgd2hl
cmUgZGlmZmVyZW50IGZyYW1lcyBhcmUgZGlmZmVyZW50Ci0gICAgLy8gc2l6ZXMuIFRoaXMgZG9l
cyBOT1QgZGlmZmVyIGZyb20gc2l6ZSgpIGZvciBHSUYsIHNpbmNlIGRlY29kaW5nIEdJRnMKLSAg
ICAvLyBjb21wb3NpdGVzIGFueSBzbWFsbGVyIGZyYW1lcyBhZ2FpbnN0IHByZXZpb3VzIGZyYW1l
cyB0byBjcmVhdGUgZnVsbC0KLSAgICAvLyBzaXplIGZyYW1lcy4KLSAgICB2aXJ0dWFsIEludFNp
emUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwpCi0gICAgewotICAg
ICAgICByZXR1cm4gc2l6ZSgpOwotICAgIH0KLQotICAgIC8vIFJldHVybnMgd2hldGhlciB0aGUg
c2l6ZSBpcyBsZWdhbCAoaS5lLiBub3QgZ29pbmcgdG8gcmVzdWx0IGluCi0gICAgLy8gb3ZlcmZs
b3cgZWxzZXdoZXJlKS4gSWYgbm90LCBtYXJrcyBkZWNvZGluZyBhcyBmYWlsZWQuCi0gICAgdmly
dHVhbCBib29sIHNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKLSAgICB7Ci0gICAgICAgIGlm
IChJbWFnZUJhY2tpbmdTdG9yZTo6aXNPdmVyU2l6ZShzaXplKSkKLSAgICAgICAgICAgIHJldHVy
biBzZXRGYWlsZWQoKTsKLSAgICAgICAgbV9zaXplID0gc2l6ZTsKLSAgICAgICAgbV9lbmNvZGVk
RGF0YVN0YXR1cyA9IEVuY29kZWREYXRhU3RhdHVzOjpTaXplQXZhaWxhYmxlOwotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICAvLyBMYXppbHktZGVjb2RlcyBlbm91Z2ggb2YgdGhl
IGltYWdlIHRvIGdldCB0aGUgZnJhbWUgY291bnQgKGlmCi0gICAgLy8gcG9zc2libGUpLCB3aXRo
b3V0IGRlY29kaW5nIHRoZSBpbmRpdmlkdWFsIGZyYW1lcy4KLSAgICAvLyBGSVhNRTogUmlnaHQg
bm93IHRoYXQgaGFzIHRvIGJlIGRvbmUgYnkgZWFjaCBzdWJjbGFzczsgZmFjdG9yIHRoZQotICAg
IC8vIGRlY29kZSBjYWxsIG91dCBhbmQgdXNlIGl0IGhlcmUuCi0gICAgdmlydHVhbCBzaXplX3Qg
ZnJhbWVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIDE7IH0KLQotICAgIHZpcnR1YWwgUmVwZXRpdGlv
bkNvdW50IHJlcGV0aXRpb25Db3VudCgpIGNvbnN0IHsgcmV0dXJuIFJlcGV0aXRpb25Db3VudE5v
bmU7IH0KLQotICAgIC8vIERlY29kZXMgYXMgbXVjaCBvZiB0aGUgcmVxdWVzdGVkIGZyYW1lIGFz
IHBvc3NpYmxlLCBhbmQgcmV0dXJucyBhbgotICAgIC8vIEltYWdlRGVjb2Rlci1vd25lZCBwb2lu
dGVyLgotICAgIHZpcnR1YWwgSW1hZ2VGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCkg
PSAwOwotCi0gICAgYm9vbCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCk7Ci0KLSAgICAv
LyBNYWtlIHRoZSBiZXN0IGVmZm9ydCBndWVzcyB0byBjaGVjayBpZiB0aGUgcmVxdWVzdGVkIGZy
YW1lIGhhcyBhbHBoYSBjaGFubmVsLgotICAgIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6
ZV90KSBjb25zdDsKLQotICAgIC8vIE51bWJlciBvZiBieXRlcyBpbiB0aGUgZGVjb2RlZCBmcmFt
ZSByZXF1ZXN0ZWQuIFJldHVybiAwIGlmIG5vdCB5ZXQgZGVjb2RlZC4KLSAgICB1bnNpZ25lZCBm
cmFtZUJ5dGVzQXRJbmRleChzaXplX3QpIGNvbnN0OwotICAgIAotICAgIGZsb2F0IGZyYW1lRHVy
YXRpb25BdEluZGV4KHNpemVfdCk7Ci0gICAgCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJh
bWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZl
bDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nTW9kZTo6U3luY2hy
b25vdXMpOwotCi0gICAgdm9pZCBzZXRJZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZShib29sIGZs
YWcpIHsgbV9pZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZSA9IGZsYWc7IH0KLSAgICBib29sIGln
bm9yZXNHYW1tYUFuZENvbG9yUHJvZmlsZSgpIGNvbnN0IHsgcmV0dXJuIG1faWdub3JlR2FtbWFB
bmRDb2xvclByb2ZpbGU7IH0KLQotICAgIEltYWdlT3JpZW50YXRpb24gZnJhbWVPcmllbnRhdGlv
bkF0SW5kZXgoc2l6ZV90KSBjb25zdCB7IHJldHVybiBtX29yaWVudGF0aW9uOyB9Ci0gICAgCi0g
ICAgYm9vbCBmcmFtZUFsbG93U3Vic2FtcGxpbmdBdEluZGV4KHNpemVfdCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KLQotICAgIGVudW0geyBJQ0NDb2xvclByb2ZpbGVIZWFkZXJMZW5ndGggPSAx
MjggfTsKLQotICAgIHN0YXRpYyBib29sIHJnYkNvbG9yUHJvZmlsZShjb25zdCBjaGFyKiBwcm9m
aWxlRGF0YSwgdW5zaWduZWQgcHJvZmlsZUxlbmd0aCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVF9V
TlVTRUQocHJvZmlsZUxlbmd0aCwgcHJvZmlsZUxlbmd0aCA+PSBJQ0NDb2xvclByb2ZpbGVIZWFk
ZXJMZW5ndGgpOwotCi0gICAgICAgIHJldHVybiAhbWVtY21wKCZwcm9maWxlRGF0YVsxNl0sICJS
R0IgIiwgNCk7Ci0gICAgfQotCi0gICAgc3RhdGljIHNpemVfdCBieXRlc0RlY29kZWRUb0RldGVy
bWluZVByb3BlcnRpZXMoKSB7IHJldHVybiAwOyB9Ci0gICAgCi0gICAgc3RhdGljIFN1YnNhbXBs
aW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKGZsb2F0LCBTdWJzYW1wbGluZ0xldmVs
KSB7IHJldHVybiBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0OyB9Ci0KLSAgICBzdGF0aWMgYm9v
bCBpbnB1dERldmljZUNvbG9yUHJvZmlsZShjb25zdCBjaGFyKiBwcm9maWxlRGF0YSwgdW5zaWdu
ZWQgcHJvZmlsZUxlbmd0aCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQocHJvZmlsZUxl
bmd0aCwgcHJvZmlsZUxlbmd0aCA+PSBJQ0NDb2xvclByb2ZpbGVIZWFkZXJMZW5ndGgpOwotCi0g
ICAgICAgIHJldHVybiAhbWVtY21wKCZwcm9maWxlRGF0YVsxMl0sICJtbnRyIiwgNCkgfHwgIW1l
bWNtcCgmcHJvZmlsZURhdGFbMTJdLCAic2NuciIsIDQpOwotICAgIH0KLQotICAgIC8vIFNldHMg
dGhlICJkZWNvZGUgZmFpbHVyZSIgZmxhZy4gRm9yIGNhbGxlciBjb252ZW5pZW5jZSAoc2luY2Ug
c28KLSAgICAvLyBtYW55IGNhbGxlcnMgd2FudCB0byByZXR1cm4gZmFsc2UgYWZ0ZXIgY2FsbGlu
ZyB0aGlzKSwgcmV0dXJucyBmYWxzZQotICAgIC8vIHRvIGVuYWJsZSBlYXN5IHRhaWxjYWxsaW5n
LiBTdWJjbGFzc2VzIG1heSBvdmVycmlkZSB0aGlzIHRvIGFsc28KLSAgICAvLyBjbGVhbiB1cCBh
bnkgbG9jYWwgZGF0YS4KLSAgICB2aXJ0dWFsIGJvb2wgc2V0RmFpbGVkKCkKLSAgICB7Ci0gICAg
ICAgIG1fZW5jb2RlZERhdGFTdGF0dXMgPSBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3I7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBib29sIGZhaWxlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkVycm9yOyB9Ci0K
LSAgICAvLyBDbGVhcnMgZGVjb2RlZCBwaXhlbCBkYXRhIGZyb20gYmVmb3JlIHRoZSBwcm92aWRl
ZCBmcmFtZSB1bmxlc3MgdGhhdAotICAgIC8vIGRhdGEgbWF5IGJlIG5lZWRlZCB0byBkZWNvZGUg
ZnV0dXJlIGZyYW1lcyAoZS5nLiBkdWUgdG8gR0lGIGZyYW1lCi0gICAgLy8gY29tcG9zaXRpbmcp
LgotICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSB7IH0KLQot
ICAgIC8vIElmIHRoZSBpbWFnZSBoYXMgYSBjdXJzb3IgaG90LXNwb3QsIHN0b3JlcyBpdCBpbiB0
aGUgYXJndW1lbnQKLSAgICAvLyBhbmQgcmV0dXJucyB0cnVlLiBPdGhlcndpc2UgcmV0dXJucyBm
YWxzZS4KLSAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25z
dCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KLQotcHJvdGVjdGVkOgotICAgIHZvaWQgcHJlcGFy
ZVNjYWxlRGF0YUlmTmVjZXNzYXJ5KCk7Ci0gICAgaW50IHVwcGVyQm91bmRTY2FsZWRYKGludCBv
cmlnWCwgaW50IHNlYXJjaFN0YXJ0ID0gMCk7Ci0gICAgaW50IGxvd2VyQm91bmRTY2FsZWRYKGlu
dCBvcmlnWCwgaW50IHNlYXJjaFN0YXJ0ID0gMCk7Ci0gICAgaW50IHVwcGVyQm91bmRTY2FsZWRZ
KGludCBvcmlnWSwgaW50IHNlYXJjaFN0YXJ0ID0gMCk7Ci0gICAgaW50IGxvd2VyQm91bmRTY2Fs
ZWRZKGludCBvcmlnWSwgaW50IHNlYXJjaFN0YXJ0ID0gMCk7Ci0gICAgaW50IHNjYWxlZFkoaW50
IG9yaWdZLCBpbnQgc2VhcmNoU3RhcnQgPSAwKTsKLQotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IG1fZGF0YTsgLy8gVGhlIGVuY29kZWQgZGF0YS4KLSAgICBWZWN0b3I8SW1hZ2VGcmFtZSwgMT4g
bV9mcmFtZUJ1ZmZlckNhY2hlOwotICAgIGJvb2wgbV9zY2FsZWQgeyBmYWxzZSB9OwotICAgIFZl
Y3RvcjxpbnQ+IG1fc2NhbGVkQ29sdW1uczsKLSAgICBWZWN0b3I8aW50PiBtX3NjYWxlZFJvd3M7
Ci0gICAgYm9vbCBtX3ByZW11bHRpcGx5QWxwaGE7Ci0gICAgYm9vbCBtX2lnbm9yZUdhbW1hQW5k
Q29sb3JQcm9maWxlOwotICAgIEltYWdlT3JpZW50YXRpb24gbV9vcmllbnRhdGlvbjsKLQotcHJp
dmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgdHJ5RGVjb2RlU2l6ZShib29sKSA9IDA7Ci0KLSAgICBJ
bnRTaXplIG1fc2l6ZTsKLSAgICBFbmNvZGVkRGF0YVN0YXR1cyBtX2VuY29kZWREYXRhU3RhdHVz
IHsgRW5jb2RlZERhdGFTdGF0dXM6OlR5cGVBdmFpbGFibGUgfTsKLSAgICBib29sIG1fZGVjb2Rp
bmdTaXplRnJvbVNldERhdGEgeyBmYWxzZSB9OwotI2lmIEVOQUJMRShJTUFHRV9ERUNPREVSX0RP
V05fU0FNUExJTkcpCi0gICAgc3RhdGljIGNvbnN0IGludCBtX21heE51bVBpeGVscyB7IDEwMjQg
KiAxMDI0IH07Ci0jZWxzZQotICAgIHN0YXRpYyBjb25zdCBpbnQgbV9tYXhOdW1QaXhlbHMgeyAt
MSB9OwotI2VuZGlmCi19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFn
ZURlY29kZXIuY3BwCmluZGV4IDEzYjVjMDgwY2M3YmVjMWU3ZmM3ZWI4YTNmY2ZlMWRhMGI1ZjBm
ODQuLjUzOTg2ZWMxYWNlMzA3NjI2YWVkNGY0NWEwZTk4YTg0MGJmZmMyOWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29k
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9C
TVBJbWFnZURlY29kZXIuY3BwCkBAIC00MCw4ICs0MCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IC8vIGRvbid0IHBhY2spLgogc3RhdGljIGNvbnN0IHNpemVfdCBzaXplT2ZGaWxlSGVhZGVyID0g
MTQ7CiAKLUJNUEltYWdlRGVjb2Rlcjo6Qk1QSW1hZ2VEZWNvZGVyKEFscGhhT3B0aW9uIGFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbikKLSAgICA6IEltYWdlRGVjb2RlcihhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pCitCTVBJbWFnZURlY29kZXI6OkJNUEltYWdlRGVjb2RlcihTaGFyZWRCdWZmZXIm
IGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
biBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKKyAgICA6IEltYWdlRGVjb2RlcihkYXRhLCBh
bHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgLCBtX2RlY29kZWRP
ZmZzZXQoMCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaAppbmRleCBjNjI3NjkwYTgzMDY1
MDQ3NDM5NWMzYTI4YzVkZDY5MTk3MGEwYWMzLi42MjA3NzI4OTEyZmIzZWQxNmIzYzkxNTIzYWU4
MWNkNzE3ZWM3NTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oCkBAIC0zNyw5ICszNyw5IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAvLyBUaGlzIGNsYXNzIGRlY29kZXMgdGhlIEJNUCBp
bWFnZSBmb3JtYXQuCiAgICAgY2xhc3MgQk1QSW1hZ2VEZWNvZGVyIGZpbmFsIDogcHVibGljIElt
YWdlRGVjb2RlciB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUmVmPEltYWdlRGVjb2Rl
cj4gY3JlYXRlKEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKKyAgICAgICAgc3RhdGljIFJlZjxJbWFn
ZURlY29kZXI+IGNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0
aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bikKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQk1QSW1hZ2VE
ZWNvZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOworICAgICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQk1QSW1hZ2VEZWNvZGVyKGRhdGEsIGFscGhhT3B0
aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogICAgICAgICB9CiAKICAgICAgICAg
Ly8gSW1hZ2VEZWNvZGVyCkBAIC01Miw3ICs1Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgYm9vbCBzZXRGYWlsZWQoKSBvdmVycmlkZTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAg
IEJNUEltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
OworICAgICAgICBCTVBJbWFnZURlY29kZXIoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlv
biwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgICAgICB2b2lkIHRyeURlY29kZVNp
emUoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlIHsgZGVjb2RlKHRydWUsIGFsbERhdGFS
ZWNlaXZlZCk7IH0KIAogICAgICAgICBpbmxpbmUgdWludDMyX3QgcmVhZFVpbnQzMihpbnQgb2Zm
c2V0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBmZDBjYzc1MDk5ZjVi
YTQyZGU5OTljODcyMDE0MzZkMDUzMzk5N2JlLi45NmExY2YxODg3ODhhNmVlNmJkYTYzYjI3ODI3
ZDg3OTk4ZDI5MTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcApAQCAtMzEsOCArMzEs
OCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUdJRkltYWdlRGVjb2Rlcjo6R0lGSW1hZ2VE
ZWNvZGVyKEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
biBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKLSAgICA6IEltYWdlRGVjb2RlcihhbHBoYU9w
dGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitHSUZJbWFnZURlY29kZXI6OkdJRklt
YWdlRGVjb2RlcihTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKKyAg
ICA6IEltYWdlRGVjb2RlcihkYXRhLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaAppbmRleCBkNmNiYTM5ZGJiZTFh
OGZhODM1ZWE3NGU2MzEzYWU4YzM4NTFhMGMxLi5iNTJmNDUzNDgxODc3MTk4OWQyMTU4MjI2MGU1
ODRmODg2NzA5NmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCkBAIC0zNSw5ICszNSw5IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAvLyBUaGlzIGNsYXNzIGRlY29kZXMgdGhlIEdJRiBp
bWFnZSBmb3JtYXQuCiAgICAgY2xhc3MgR0lGSW1hZ2VEZWNvZGVyIGZpbmFsIDogcHVibGljIElt
YWdlRGVjb2RlciB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUmVmPEltYWdlRGVjb2Rl
cj4gY3JlYXRlKEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKKyAgICAgICAgc3RhdGljIFJlZjxJbWFn
ZURlY29kZXI+IGNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0
aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bikKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR0lGSW1hZ2VE
ZWNvZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOworICAgICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgR0lGSW1hZ2VEZWNvZGVyKGRhdGEsIGFscGhhT3B0
aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogICAgICAgICB9CiAKICAgICAgICAg
dmlydHVhbCB+R0lGSW1hZ2VEZWNvZGVyKCk7CkBAIC02Myw3ICs2Myw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdm9pZCBnaWZDb21wbGV0ZSgpOwogCiAgICAgcHJpdmF0ZToKLSAg
ICAgICAgR0lGSW1hZ2VEZWNvZGVyKEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbik7CisgICAgICAgIEdJRkltYWdlRGVjb2RlcihTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAgICAgICAgIHZvaWQgdHJ5RGVj
b2RlU2l6ZShib29sIGFsbERhdGFSZWNlaXZlZCkgb3ZlcnJpZGUgeyBkZWNvZGUoMCwgR0lGU2l6
ZVF1ZXJ5LCBhbGxEYXRhUmVjZWl2ZWQpOyB9CiAKICAgICAgICAgLy8gSWYgdGhlIHF1ZXJ5IGlz
IEdJRkZ1bGxRdWVyeSwgZGVjb2RlcyB0aGUgaW1hZ2UgdXAgdG8gKGJ1dCBub3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURl
Y29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lD
T0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggMzYzYWUyODNkMzRhZjdkY2Q1NDBiZTVkMjExYWFkYzJi
ZjA4ZTg2Ny4uZjBjZGEyOTljZDJiZGJkMGZiM2NmN2VkMmZjYTA2OGM5YTRiOTlmNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdl
RGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
aWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKQEAgLTQ0LDggKzQ0LDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogc3RhdGljIGNvbnN0IHNpemVfdCBzaXplT2ZEaXJlY3RvcnkgPSA2Owogc3RhdGljIGNv
bnN0IHNpemVfdCBzaXplT2ZEaXJFbnRyeSA9IDE2OwogCi1JQ09JbWFnZURlY29kZXI6OklDT0lt
YWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCi0gICAgOiBJbWFnZURlY29kZXIoYWxw
aGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorSUNPSW1hZ2VEZWNvZGVyOjpJ
Q09JbWFnZURlY29kZXIoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlv
biwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
CisgICAgOiBJbWFnZURlY29kZXIoZGF0YSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKQogICAgICwgbV9kZWNvZGVkT2Zmc2V0KDApCiB7CiB9CkBAIC0yMDgsNyArMjA4
LDcgQEAgYm9vbCBJQ09JbWFnZURlY29kZXI6OmRlY29kZUF0SW5kZXgoc2l6ZV90IGluZGV4KQog
ICAgIH0KIAogICAgIGlmICghbV9wbmdEZWNvZGVyc1tpbmRleF0pIHsKLSAgICAgICAgbV9wbmdE
ZWNvZGVyc1tpbmRleF0gPSBQTkdJbWFnZURlY29kZXI6OmNyZWF0ZShtX3ByZW11bHRpcGx5QWxw
aGEgPyBBbHBoYU9wdGlvbjo6UHJlbXVsdGlwbGllZCA6IEFscGhhT3B0aW9uOjpOb3RQcmVtdWx0
aXBsaWVkLCBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlID8gR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb246Oklnbm9yZWQgOiBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbjo6QXBwbGllZCk7
CisgICAgICAgIG1fcG5nRGVjb2RlcnNbaW5kZXhdID0gUE5HSW1hZ2VEZWNvZGVyOjpjcmVhdGUo
Km1fZGF0YSwgbV9wcmVtdWx0aXBseUFscGhhID8gQWxwaGFPcHRpb246OlByZW11bHRpcGxpZWQg
OiBBbHBoYU9wdGlvbjo6Tm90UHJlbXVsdGlwbGllZCwgbV9pZ25vcmVHYW1tYUFuZENvbG9yUHJv
ZmlsZSA/IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uOjpJZ25vcmVkIDogR2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb246OkFwcGxpZWQpOwogICAgICAgICBzZXREYXRhRm9yUE5HRGVjb2RlckF0
SW5kZXgoaW5kZXgpOwogICAgIH0KICAgICAvLyBGYWlsIGlmIHRoZSBzaXplIHRoZSBQTkdJbWFn
ZURlY29kZXIgY2FsY3VsYXRlZCBkb2VzIG5vdCBtYXRjaCB0aGUgc2l6ZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdl
RGVjb2Rlci5oCmluZGV4IGU0YmI2MGI5ODgxN2M2M2M3MDdlODhmYjI5OWMxOGVlYWMzZjhiMmEu
LjQyZjQzNDFmMmE1YTRjNGVhMWI2YjEyZmI0YThjOTc1YWM0OWNmNGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1h
Z2VEZWNvZGVyLmgKQEAgLTM2LDkgKzM2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIC8v
IFRoaXMgY2xhc3MgZGVjb2RlcyB0aGUgSUNPIGFuZCBDVVIgaW1hZ2UgZm9ybWF0cy4KICAgICBj
bGFzcyBJQ09JbWFnZURlY29kZXIgZmluYWwgOiBwdWJsaWMgSW1hZ2VEZWNvZGVyIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoQWxwaGFPcHRp
b24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKQorICAgICAgICBzdGF0aWMgUmVmPEltYWdlRGVjb2Rlcj4gY3JlYXRlKFNo
YXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJQ09JbWFnZURlY29kZXIoYWxwaGFPcHRpb24s
IGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBJQ09JbWFnZURlY29kZXIoZGF0YSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKSk7CiAgICAgICAgIH0KIAogICAgICAgICB2aXJ0dWFsIH5JQ09JbWFnZURl
Y29kZXIoKTsKQEAgLTc2LDcgKzc2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAg
ICAgdWludDMyX3QgbV9pbWFnZU9mZnNldDsKICAgICAgICAgfTsKIAotICAgICAgICBJQ09JbWFn
ZURlY29kZXIoQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICAg
ICAgSUNPSW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKICAgICAgICAgdm9pZCB0cnlEZWNvZGVTaXplKGJvb2wg
YWxsRGF0YVJlY2VpdmVkKSBvdmVycmlkZSB7IGRlY29kZSgwLCB0cnVlLCBhbGxEYXRhUmVjZWl2
ZWQpOyB9CiAKICAgICAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHxhfCBpcyBhIHByZWZlcmFibGUg
aWNvbiBlbnRyeSB0byB8YnwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA4
NmFlMDRjZjYwZjQ4YTk2MGU0NjgzNDAyZGUxMzFjNDQ1Y2VkNGZhLi4zZjU5MjJlYThkNzExMWJk
MjQzYjY5YjQ3ZjUyZjE1Njc1ZDk3NGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5j
cHAKQEAgLTUwMSw4ICs1MDEsOCBAQCB2b2lkIHRlcm1fc291cmNlKGpfZGVjb21wcmVzc19wdHIg
amQpCiAgICAgc3JjLT5kZWNvZGVyLT5kZWNvZGVyKCktPmpwZWdDb21wbGV0ZSgpOwogfQogCi1K
UEVHSW1hZ2VEZWNvZGVyOjpKUEVHSW1hZ2VEZWNvZGVyKEFscGhhT3B0aW9uIGFscGhhT3B0aW9u
LCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikK
LSAgICA6IEltYWdlRGVjb2RlcihhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pCitKUEVHSW1hZ2VEZWNvZGVyOjpKUEVHSW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZlciYgZGF0
YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAgIDogSW1hZ2VEZWNvZGVyKGRhdGEsIGFscGhh
T3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNv
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJ
bWFnZURlY29kZXIuaAppbmRleCA1YTQ2ZGZmZmFkM2UyNzA0NDExOWRmMGVlYjhlMzk1YWM1ZGRm
Y2ZlLi4xZGMxMGNiYWU0MTJjZmEzNGJkNmIyMmQ5MTBmMjY1MjEyYjIzMjg1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURl
Y29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVn
L0pQRUdJbWFnZURlY29kZXIuaApAQCAtNDMsOSArNDMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgLy8gVGhpcyBjbGFzcyBkZWNvZGVzIHRoZSBKUEVHIGltYWdlIGZvcm1hdC4KICAgICBj
bGFzcyBKUEVHSW1hZ2VEZWNvZGVyIGZpbmFsIDogcHVibGljIEltYWdlRGVjb2RlciB7CiAgICAg
cHVibGljOgotICAgICAgICBzdGF0aWMgUmVmPEltYWdlRGVjb2Rlcj4gY3JlYXRlKEFscGhhT3B0
aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbikKKyAgICAgICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXI+IGNyZWF0ZShT
aGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSlBFR0ltYWdlRGVjb2RlcihhbHBoYU9wdGlv
biwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEpQRUdJbWFnZURlY29kZXIoZGF0YSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uKSk7CiAgICAgICAgIH0KIAogICAgICAgICB2aXJ0dWFsIH5KUEVHSW1h
Z2VEZWNvZGVyKCk7CkBAIC03MSw3ICs3MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdm9pZCBzZXRPcmllbnRhdGlvbihJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKSB7IG1f
b3JpZW50YXRpb24gPSBvcmllbnRhdGlvbjsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgSlBF
R0ltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwor
ICAgICAgICBKUEVHSW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24s
IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKICAgICAgICAgdm9pZCB0cnlEZWNvZGVTaXpl
KGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBvdmVycmlkZSB7IGRlY29kZSh0cnVlLCBhbGxEYXRhUmVj
ZWl2ZWQpOyB9CiAKICAgICAgICAgLy8gRGVjb2RlcyB0aGUgaW1hZ2UuICBJZiB8b25seVNpemV8
IGlzIHRydWUsIHN0b3BzIGRlY29kaW5nIGFmdGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3Bw
CmluZGV4IDgwNzBmNjQ5ZmY2YzRjYjIxYWJiYmMxM2E1ZjI3ZTk3MGIwOTcwZGMuLmViNzc3YWE4
YzdjMjQ5ZGZiMTFmYjdmMTRkZGE4NmI1N2JlYTFjOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29k
ZXIuY3BwCkBAIC0yMDEsOCArMjAxLDggQEAgcHJpdmF0ZToKICAgICBwbmdfYnl0ZXAgbV9pbnRl
cmxhY2VCdWZmZXI7CiB9OwogCi1QTkdJbWFnZURlY29kZXI6OlBOR0ltYWdlRGVjb2RlcihBbHBo
YU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24pCi0gICAgOiBJbWFnZURlY29kZXIoYWxwaGFPcHRpb24sIGdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uKQorUE5HSW1hZ2VEZWNvZGVyOjpQTkdJbWFnZURlY29kZXIo
U2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCisgICAgOiBJbWFnZURl
Y29kZXIoZGF0YSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAg
ICwgbV9kb05vdGhpbmdPbkZhaWx1cmUoZmFsc2UpCiAgICAgLCBtX2N1cnJlbnRGcmFtZSgwKQog
I2lmIEVOQUJMRShBUE5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5oCmluZGV4IDAzZTFmYmMzMWNh
YjlhZmU2ZTQxNjIzYjUwNWY5NzdhOGQxNjYzNGYuLjc1ODgxYjg1MTgyZjEzMjQwYmEzZmI4MTJk
OTRmMzlmOTZmZDM1ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmgKQEAgLTM3LDkgKzM3LDkg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIC8vIFRoaXMgY2xhc3MgZGVjb2RlcyB0aGUgUE5H
IGltYWdlIGZvcm1hdC4KICAgICBjbGFzcyBQTkdJbWFnZURlY29kZXIgZmluYWwgOiBwdWJsaWMg
SW1hZ2VEZWNvZGVyIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNv
ZGVyPiBjcmVhdGUoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAgICAgICBzdGF0aWMgUmVmPElt
YWdlRGVjb2Rlcj4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFP
cHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQTkdJbWFn
ZURlY29kZXIoYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CisgICAg
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQTkdJbWFnZURlY29kZXIoZGF0YSwgYWxwaGFP
cHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CiAgICAgICAgIH0KIAogICAgICAg
ICB2aXJ0dWFsIH5QTkdJbWFnZURlY29kZXIoKTsKQEAgLTg4LDcgKzg4LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBQTkdJbWFnZURl
Y29kZXIoQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICAgICAg
UE5HSW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKTsKICAgICAgICAgdm9pZCB0cnlEZWNvZGVTaXplKGJvb2wgYWxs
RGF0YVJlY2VpdmVkKSBvdmVycmlkZSB7IGRlY29kZSh0cnVlLCAwLCBhbGxEYXRhUmVjZWl2ZWQp
OyB9CiAKICAgICAgICAgLy8gRGVjb2RlcyB0aGUgaW1hZ2UuICBJZiB8b25seVNpemV8IGlzIHRy
dWUsIHN0b3BzIGRlY29kaW5nIGFmdGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcApp
bmRleCA0OGNmNWFkMzZiNDMyMTFiMWZjMzlhYWY5NmRhMWFlNGQ0ZDk3NTk4Li5lYmJjZjUzNmRj
NjE4ZmM0Y2QxNWYzOWNkMzRiZTU4ZjliZmYxNjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVj
b2Rlci5jcHAKQEAgLTQ1LDggKzQ1LDggQEAgaW5saW5lIFdFQlBfQ1NQX01PREUgb3V0cHV0TW9k
ZShib29sIGhhc0FscGhhKSB7IHJldHVybiBoYXNBbHBoYSA/IE1PREVfYmdyQSA6IE0KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1XRUJQSW1hZ2VEZWNvZGVyOjpXRUJQSW1hZ2VEZWNvZGVyKEFs
cGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbikKLSAgICA6IEltYWdlRGVjb2RlcihhbHBoYU9wdGlvbiwgZ2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitXRUJQSW1hZ2VEZWNvZGVyOjpXRUJQSW1hZ2VEZWNv
ZGVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAgIDogSW1h
Z2VEZWNvZGVyKGRhdGEsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikK
ICAgICAsIG1fZGVjb2RlcigwKQogICAgICwgbV9oYXNBbHBoYShmYWxzZSkKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdl
RGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9X
RUJQSW1hZ2VEZWNvZGVyLmgKaW5kZXggZDc5NTZmMGNhMDFkNGYwNGY2ZjA4ZGQxMzA1N2NlN2My
M2M2NTQ5ZC4uYzczNTQ3ODJmZjEyZWQ3NWIxM2IyMDJlMjllOGE1Yjc3YmUzMzBiMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1h
Z2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
d2VicC9XRUJQSW1hZ2VEZWNvZGVyLmgKQEAgLTM4LDkgKzM4LDkgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBXRUJQSW1hZ2VEZWNvZGVyIGZpbmFsIDogcHVibGljIEltYWdlRGVjb2Rl
ciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXI+IGNyZWF0ZShBbHBoYU9w
dGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pCisgICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXI+IGNyZWF0ZShTaGFy
ZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFdFQlBJbWFnZURlY29kZXIoYWxwaGFPcHRpb24sIGdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdFQlBJ
bWFnZURlY29kZXIoZGF0YSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+V0VCUEltYWdlRGVjb2RlcigpOwpAQCAtNDksNyAr
NDksNyBAQCBwdWJsaWM6CiAgICAgSW1hZ2VGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVf
dCBpbmRleCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgV0VCUEltYWdlRGVjb2RlcihBbHBo
YU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIFdFQlBJbWFnZURlY29k
ZXIoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pOwogICAgIHZvaWQgdHJ5RGVjb2RlU2l6ZShib29sIGFsbERhdGFSZWNlaXZlZCkgb3Zl
cnJpZGUgeyBkZWNvZGUodHJ1ZSwgYWxsRGF0YVJlY2VpdmVkKTsgfQogCiAgICAgYm9vbCBkZWNv
ZGUoYm9vbCBvbmx5U2l6ZSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311848</attachid>
            <date>2017-06-02 13:04:14 -0700</date>
            <delta_ts>2017-06-02 14:55:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk172773.patch</filename>
            <type>text/plain</type>
            <size>66537</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkMmZiZmY3MzhmNi4uYjg0NDJmNDM2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDIgQEAKKzIwMTctMDUtMzEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdh
QGFwcGxlLmNvbT4KKworICAgICAgICBIYXZlIGEgc2luZ2xlIEltYWdlRGVjb2RlciBoZWFkZXIg
ZmlsZSBmb3IgYWxsIHBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzI3NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBbnkgY2hhbmdlIGluIHRoZSBkZWZpbml0aW9uIG9mIEltYWdlRGVjb2RlciBo
YXMgYmVlbiBhbm5veWluZyBzaW5jZSBpdCAKKyAgICAgICAgbWVhbnMgZG9pbmcgdGhlIHNhbWUg
Y2hhbmdlIGluIHRocmVlIGhlYWRlciBmaWxlcy4gVGhpcyBwYXRjaCB3aWxsIGNvbWJpbmUKKyAg
ICAgICAgdGhlbSBpbiBvbmUgaGVhZGVyIGZpbGUgYnV0IGl0IGhhcyB0aGVzZSBkcmF3YmFja3M6
CisKKyAgICAgICAgLS0gU29tZSBvZiB0aGUgSW1hZ2VEZW9jZGVyIGZ1bmN0aW9ucyB3ZXJlIG1h
ZGUgbm9uLWNvbnN0IGJlY2F1c2UgdGhlIEdUSworICAgICAgICBkZWNvZGVyIGNhbGxzIGZyYW1l
QnVmZmVyQXRJbmRleCgpLCB3aGljaCBpcyBub24tY29uc3QgYW5kIGNhbid0IGJlIG1hZGUKKyAg
ICAgICAgY29zdCwgaW4gdGhlc2UgZnVuY3Rpb25zLgorCisgICAgICAgIC0tIFNvbWUgb2YgdGhl
IEltYWdlRGVjb2RlciBpbi1saW5lIGZ1bmN0aW9ucyB3ZXJlIG1vdmVkIGZyb20gdGhlIGhlYWRl
cgorICAgICAgICBmaWxlIHRvIHRoZSBzb3VyY2UgZmlsZXMgYmVjYXVzZSB0aGUgcGxhdGZvcm1z
IGhhdmUgZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucy4KKworICAgICAgICAtLSBTb21lIG9mIHRo
ZSBJbWFnZURlb2NkZXIgZnVuY3Rpb25zIHdlcmUgbWFkZSB2aXJ0dWFsIGJlY2F1c2UgdGhlIEdU
SworICAgICAgICBkZWNvZGVyIGNvbnNpZGVycyBJbWFnZURlb2NkZXIgdGhlIGJhc2UgY2xhc3Mg
b2YgYWxsIHRoZSBkZWNvZGVycyBhbmQgZWFjaAorICAgICAgICBkZXJpdmVkIGNsYXNzIG92ZXJy
aWRlcyB0aGVzZSBmdW5jdGlvbiB0byBoYW5kbGUgdGhlIGltYWdlIGZvcm1hdCBkaWZmZXJlbnRs
eS4KKworICAgICAgICAtLSBUaGUgaGVhZGVyIGZpbGUgc2l6ZSBiZWNvbWVzIGxhcmdlciBzaW5j
ZSBpdCBpbmNsdWRlcyBhbGwgdGhlIHNwZWNpZmljCisgICAgICAgIG1lbWJlcnMgZm9yIGFsbCBw
bGF0Zm9ybXMuIFRoaXMgY2FuIGJlIGVhc2lseSBjbGVhbmVkIHVwIGxhdGVyLgorCisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RGVjb2Rlcjo6fkltYWdlRGVjb2Rlcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6
OmlzU2l6ZUF2YWlsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmNsZWFy
RnJhbWVCdWZmZXJDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnNldFBy
ZW11bHRpcGx5QWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpwcmVtdWx0
aXBseUFscGhhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c2V0SWdub3JlR2Ft
bWFBbmRDb2xvclByb2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjppZ25v
cmVzR2FtbWFBbmRDb2xvclByb2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
OjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c2NhbGVkU2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZhaWxlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVNvdXJjZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VU
eXBlcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRGVjb2Rlcjo6aXNBbGxEYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRGVjb2Rlcjo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUhhc0FscGhhQXRJbmRleCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oOiBSZW1vdmVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXI6OkltYWdlRGVjb2Rlcik6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjppc0FsbERhdGFSZWNlaXZl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1lSXNDb21wbGV0ZUF0SW5k
ZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1lSGFzQWxwaGFBdEluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5k
ZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3Qy
RC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVj
b2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OkltYWdlRGVjb2Rlcik6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZURlY29kZXI6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVyOjppc0FsbERhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZURlY29kZXI6OmVuY29kZWREYXRhU3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RGVjb2Rlcjo6c2V0RmFpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6Zmls
ZW5hbWVFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzZXRTaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6ZnJhbWVDb3VudCk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnJlcGV0aXRpb25Db3VudCk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZURlY29kZXI6OmhvdFNwb3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNv
ZGVyOjpmcmFtZUhhc0FscGhhQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29k
ZXI6OmZyYW1lQnl0ZXNBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6
ZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
OjpmcmFtZVNpemVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6ZnJh
bWVBbGxvd1N1YnNhbXBsaW5nQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29k
ZXI6OnByZXBhcmVTY2FsZURhdGFJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCTVBJbWFnZURlY29kZXI6OkJNUEltYWdlRGVjb2Rlcik6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R0lGSW1hZ2VEZWNvZGVyOjpHSUZJbWFnZURlY29kZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklDT0ltYWdlRGVjb2Rlcjo6SUNPSW1hZ2VEZWNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OklDT0ltYWdlRGVjb2Rlcjo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJQ09JbWFnZURlY29k
ZXI6OmZyYW1lU2l6ZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SUNPSW1hZ2VEZWNvZGVy
OjpkZWNvZGVBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28v
SUNPSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBl
Zy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFnZURlY29k
ZXI6OkpQRUdJbWFnZURlY29kZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VE
ZWNvZGVyOjpQTkdJbWFnZURlY29kZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0VCUElt
YWdlRGVjb2Rlcjo6V0VCUEltYWdlRGVjb2Rlcik6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmg6CisKIDIwMTctMDUtMzAgIFNhbSBXZWlu
aWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZlcnQgYWNjaWRlbnRhbGx5IGNoZWNr
ZWQgaW4gY2hhbmdlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDg2YTI2YTg0YWRmLi5iMGQ3YTM2ZTVmYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjUwMCwx
MCArMjUwMCwxMCBAQAogCQk1M0VGNzY2QzE2NTMxOTk0MDA0Q0JFNDkgLyogU2V0dGluZ3NNYWNy
b3MuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUzRUY3NjZBMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oICov
OyB9OwogCQk1NTBBMEJDOTA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTBBMEJDNzA4NUY2
MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgKi87IH07CiAJCTU1MEEwQkNBMDg1RjYw
MzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVk
TmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTU1MzRFRTkyMUVERTU2OEQwMDgxOEMwNCAvKiBJbWFnZURlY29kZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MzRFRTkxMUVERTU2ODkwMDgxOEMw
NCAvKiBJbWFnZURlY29kZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1NTUwQ0I0MjFFOTU1RTNDMDAxMTFBQTAgLyogSW1hZ2VUeXBlcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU1MENCNDExRTk1
NUUzQzAwMTExQUEwIC8qIEltYWdlVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk1NTUxMzAwMTFFN0NDQ0NCMDBBNjlFMzggLyogRGVjb2Rp
bmdPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NTUxMzAwMDFFN0NDQ0NBMDBBNjlFMzggLyogRGVjb2RpbmdPcHRpb25zLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTU1Qjg3RUMxQ0FBRjBB
QjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1NUI4N0VBMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURl
Y29kZXJDRy5jcHAgKi87IH07Ci0JCTU1NUI4N0VEMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURl
Y29kZXJDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTU1Qjg3RUIxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmggKi87IH07CiAJCTU1
NzZBNTY0MUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1NzZBNTYyMUQ4OEE3MDgwMENDQzA0QyAv
KiBJbWFnZUZyYW1lLmNwcCAqLzsgfTsKIAkJNTU3NkE1NjUxRDg4QTcwODAwQ0NDMDRDIC8qIElt
YWdlRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU1NzZBNTYzMUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTU5N0Y4MjYxRDkxQzMxMzAwNjZC
QzIxIC8qIEltYWdlRnJhbWVDYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1NTk3RjgyNDFEOTFDMzEzMDA2NkJDMjEgLyogSW1hZ2VGcmFtZUNh
Y2hlLmNwcCAqLzsgfTsKQEAgLTEwMjcxLDEwICsxMDI3MSwxMCBAQAogCQk1M0VGNzY2QTE2NTMw
QTYxMDA0Q0JFNDkgLyogU2V0dGluZ3NNYWNyb3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2V0dGluZ3NNYWNyb3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTUwQTBCQzcwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUXVhbGlmaWVkTmFt
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAw
OyB9OwogCQk1NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWFsaWZpZWRO
YW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAw
OyB9OworCQk1NTM0RUU5MTFFREU1Njg5MDA4MThDMDQgLyogSW1hZ2VEZWNvZGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEltYWdlRGVjb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
NTUwQ0I0MTFFOTU1RTNDMDAxMTFBQTAgLyogSW1hZ2VUeXBlcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbWFnZVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTU1NTEzMDAwMUU3Q0NDQ0EwMEE2OUUzOCAvKiBEZWNvZGluZ09wdGlvbnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVjb2RpbmdPcHRpb25zLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTU1NUI4N0VBMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29k
ZXJDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZURlY29k
ZXJDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU1NUI4N0VCMUNBQUYwQUIw
MDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbWFnZURlY29kZXJDRy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTc2
QTU2MjFEODhBNzA4MDBDQ0MwNEMgLyogSW1hZ2VGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTU3NkE1NjMxRDg4QTcwODAwQ0NDMDRDIC8qIEltYWdlRnJhbWUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1NTk3RjgyNDFEOTFDMzEzMDA2NkJDMjEgLyogSW1hZ2VGcmFtZUNhY2hl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlRnJhbWVDYWNo
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzA1NCw3ICsyMzA1NCw2IEBA
CiAJCQkJMjJCRDlGODAxMzUzNjRGRTAwOUJEMTAyIC8qIEltYWdlQnVmZmVyRGF0YUNHLmggKi8s
CiAJCQkJQjI3NTM1MzAwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlQ0cuY3BwICovLAogCQkJCTU1
NUI4N0VBMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5jcHAgKi8sCi0JCQkJNTU1
Qjg3RUIxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmggKi8sCiAJCQkJNEIzNDgw
OTIwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0cuaCAqLywKIAkJCQk0QjM0ODA5MTBF
RUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VDR01hYy5tbSAqLywKIAkJCQlCMjc1MzUzMjBC
MDUzODE0MDAyQ0U2NEYgLyogSW50UG9pbnRDRy5jcHAgKi8sCkBAIC0yMzIyOCw2ICsyMzIyNyw3
IEBACiAJCQkJNDNEMjU5NzYxM0M4MTZGNDAwNjA4NTU5IC8qIEltYWdlQnVmZmVyLmNwcCAqLywK
IAkJCQlCMkExMEI5MTBCMzgxOEJEMDAwOTlBQTQgLyogSW1hZ2VCdWZmZXIuaCAqLywKIAkJCQky
MkJEOUY3RDEzNTM2MjVDMDA5QkQxMDIgLyogSW1hZ2VCdWZmZXJEYXRhLmggKi8sCisJCQkJNTUz
NEVFOTExRURFNTY4OTAwODE4QzA0IC8qIEltYWdlRGVjb2Rlci5oICovLAogCQkJCTU1NzZBNTYy
MUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmNwcCAqLywKIAkJCQk1NTc2QTU2MzFEODhB
NzA4MDBDQ0MwNEMgLyogSW1hZ2VGcmFtZS5oICovLAogCQkJCTU1OTdGODI0MUQ5MUMzMTMwMDY2
QkMyMSAvKiBJbWFnZUZyYW1lQ2FjaGUuY3BwICovLApAQCAtMjc2NzEsNyArMjc2NzEsNiBAQAog
CQkJCTUxMDE5MkQ2MThCNkI5QjcwMDdGQzdBMSAvKiBJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDE5MkQyMThCNkI5QUIwMDdGQzdBMSAvKiBJbWFnZUNv
bnRyb2xzUm9vdEVsZW1lbnRNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Nzk3OTFBMEQ2QjlE
MEMwMDM4NTFCOSAvKiBJbWFnZURhdGEuaCBpbiBIZWFkZXJzICovLAotCQkJCTU1NUI4N0VEMUNB
QUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTcy
MDVBQjYxMjM5MjkxMDAwQjE3MzgwIC8qIEltYWdlRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTU1NzZBNTY1MUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1NTk3RjgyNzFEOTFDMzEzMDA2NkJDMjEgLyogSW1hZ2VGcmFtZUNhY2hlLmggaW4g
SGVhZGVycyAqLywKQEAgLTI4MjMwLDYgKzI4MjI5LDcgQEAKIAkJCQkzMTZEQ0I0RTFFNzkxMEE2
MDAxQjVGODcgLyogSlNSVENJY2VHYXRoZXJpbmdTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MDczNzk0RUMxOUVFMzQxRTAwRTVBMDQ1IC8qIEpTUlRDSWNlU2VydmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQkzMTZEQ0IyMDFFNzhDQTU1MDAxQjVGODcgLyogSlNSVENPZmZlckFuc3dlck9wdGlv
bnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1MzRFRTkyMUVERTU2OEQwMDgxOEMwNCAvKiBJbWFn
ZURlY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OTY5REJBMTdEMTQxNTEwMDdGRjg0MiAv
KiBKU1JUQ1BlZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzk2OURCODE3RDE0
MTUxMDA3RkY4NDIgLyogSlNSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQk1RTJDNDM3NDFCQ0YwRDc1MDAwMUUyQkUgLyogSlNSVENSdHBQYXJhbWV0ZXJzLmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VEZWNvZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjlmN2Qz
OTZmYTM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VEZWNvZGVyLmgKQEAgLTAsMCArMSwxMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYsIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IkRlY29kaW5nT3B0aW9ucy5oIgorI2lmICFVU0UoQ0cpICYmICFVU0UoRElSRUNUMkQpCisjaW5j
bHVkZSAiSW1hZ2VGcmFtZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2VuZGlmCisj
aW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgorI2luY2x1ZGUgIkltYWdlVHlwZXMuaCIKKyNp
bmNsdWRlICJJbnRQb2ludC5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJOYXRp
dmVJbWFnZS5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJl
YWRTYWZlUmVmQ291bnRlZC5oPgorCisjaWYgVVNFKENHKQordHlwZWRlZiBzdHJ1Y3QgQ0dJbWFn
ZVNvdXJjZSogQ0dJbWFnZVNvdXJjZVJlZjsKKyNlbGlmIFVTRShESVJFQ1QyRCkKK2ludGVyZmFj
ZSBJRDJEMVJlbmRlclRhcmdldDsKK2ludGVyZmFjZSBJV0lDQml0bWFwRGVjb2RlcjsKK2ludGVy
ZmFjZSBJV0lDSW1hZ2luZ0ZhY3Rvcnk7CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
ICAgIAorY2xhc3MgU2hhcmVkQnVmZmVyOworCitjbGFzcyBJbWFnZURlY29kZXIgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW1hZ2VEZWNvZGVyPiB7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoSW1hZ2VEZWNvZGVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6Cisg
ICAgSW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICB2aXJ0dWFsIH5JbWFnZURlY29kZXIoKSB7IH0KKwor
ICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRh
LCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIHN0YXRpYyBz
aXplX3QgYnl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCk7CisKKyAgICBFbmNvZGVk
RGF0YVN0YXR1cyBlbmNvZGVkRGF0YVN0YXR1cygpIGNvbnN0OworICAgIGJvb2wgaXNTaXplQXZh
aWxhYmxlKCkgY29uc3QgeyByZXR1cm4gZW5jb2RlZERhdGFTdGF0dXMoKSA+PSBFbmNvZGVkRGF0
YVN0YXR1czo6U2l6ZUF2YWlsYWJsZTsgfQorICAgIHZpcnR1YWwgc2l6ZV90IGZyYW1lQ291bnQo
KSBjb25zdDsKKyAgICB2aXJ0dWFsIFJlcGV0aXRpb25Db3VudCByZXBldGl0aW9uQ291bnQoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0OworICAg
IHZpcnR1YWwgc3RkOjpvcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0OworCisgICAg
dmlydHVhbCBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVs
ID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCkgY29uc3Q7CisgICAgYm9vbCBmcmFtZUlzQ29t
cGxldGVBdEluZGV4KHNpemVfdCk7CisgICAgSW1hZ2VPcmllbnRhdGlvbiBmcmFtZU9yaWVudGF0
aW9uQXRJbmRleChzaXplX3QpIGNvbnN0OworCisgICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5k
ZXgoc2l6ZV90KTsKKyAgICBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCk7CisgICAg
Ym9vbCBmcmFtZUFsbG93U3Vic2FtcGxpbmdBdEluZGV4KHNpemVfdCkgY29uc3Q7CisgICAgdW5z
aWduZWQgZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2Ft
cGxpbmdMZXZlbDo6RGVmYXVsdCkgY29uc3Q7CisKKyAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVG
cmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xl
dmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdNb2RlOjpTeW5j
aHJvbm91cyk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29s
IGFsbERhdGFSZWNlaXZlZCk7CisgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSB7IH0KKworI2lm
IFVTRShDRykKKyAgICBTdHJpbmcgdXRpKCkgY29uc3Q7CisjZWxpZiBVU0UoRElSRUNUMkQpCisg
ICAgdm9pZCBzZXRUYXJnZXRDb250ZXh0KElEMkQxUmVuZGVyVGFyZ2V0Kik7CisgICAgc3RhdGlj
IElXSUNJbWFnaW5nRmFjdG9yeSogc3lzdGVtSW1hZ2luZ0ZhY3RvcnkoKTsKKyNlbHNlCitwcm90
ZWN0ZWQ6CisgICAgdm9pZCBzZXRQcmVtdWx0aXBseUFscGhhKGJvb2wgcHJlbXVsdGlwbHlBbHBo
YSkgeyAgbV9wcmVtdWx0aXBseUFscGhhID0gcHJlbXVsdGlwbHlBbHBoYTsgfQorICAgIGJvb2wg
cHJlbXVsdGlwbHlBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlbXVsdGlwbHlBbHBoYTsgfQor
ICAgIHZvaWQgc2V0SWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUoYm9vbCBpZ25vcmVHYW1tYUFu
ZENvbG9yUHJvZmlsZSkgeyBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlID0gaWdub3JlR2Ft
bWFBbmRDb2xvclByb2ZpbGU7IH0KKyAgICBib29sIGlnbm9yZXNHYW1tYUFuZENvbG9yUHJvZmls
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGU7IH0KKyAgICAK
KyAgICB2aXJ0dWFsIGJvb2wgc2V0U2l6ZShjb25zdCBJbnRTaXplJik7CisgICAgdmlydHVhbCBJ
bnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBpc1NpemVBdmFpbGFibGUoKSA/IG1fc2l6ZSA6
IEludFNpemUoKTsgfQorICAgIEludFNpemUgc2NhbGVkU2l6ZSgpIHsgcmV0dXJuIG1fc2NhbGVk
ID8gSW50U2l6ZShtX3NjYWxlZENvbHVtbnMuc2l6ZSgpLCBtX3NjYWxlZFJvd3Muc2l6ZSgpKSA6
IHNpemUoKTsgfQorCisgICAgdmlydHVhbCB2b2lkIHRyeURlY29kZVNpemUoYm9vbCkgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBzZXRGYWlsZWQoKTsKKyAgICBib29sIGZhaWxlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkVycm9yOyB9
CisgICAgCisgICAgdmlydHVhbCBJbWFnZUZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90
KSA9IDA7CisKKyAgICB2b2lkIHByZXBhcmVTY2FsZURhdGFJZk5lY2Vzc2FyeSgpOworICAgIGlu
dCB1cHBlckJvdW5kU2NhbGVkWChpbnQgb3JpZ1gsIGludCBzZWFyY2hTdGFydCA9IDApOworICAg
IGludCBsb3dlckJvdW5kU2NhbGVkWChpbnQgb3JpZ1gsIGludCBzZWFyY2hTdGFydCA9IDApOwor
ICAgIGludCB1cHBlckJvdW5kU2NhbGVkWShpbnQgb3JpZ1ksIGludCBzZWFyY2hTdGFydCA9IDAp
OworICAgIGludCBsb3dlckJvdW5kU2NhbGVkWShpbnQgb3JpZ1ksIGludCBzZWFyY2hTdGFydCA9
IDApOworICAgIGludCBzY2FsZWRZKGludCBvcmlnWSwgaW50IHNlYXJjaFN0YXJ0ID0gMCk7Cisj
ZW5kaWYKKworcHJvdGVjdGVkOgorI2lmIFVTRShDRykKKyAgICBSZXRhaW5QdHI8Q0dJbWFnZVNv
dXJjZVJlZj4gbV9uYXRpdmVEZWNvZGVyOworICAgIGJvb2wgbV9pc0FsbERhdGFSZWNlaXZlZCB7
IGZhbHNlIH07CisjZWxpZiBVU0UoRElSRUNUMkQpCisgICAgQ09NUHRyPElXSUNCaXRtYXBEZWNv
ZGVyPiBtX25hdGl2ZURlY29kZXI7CisgICAgQ09NUHRyPElEMkQxUmVuZGVyVGFyZ2V0PiBtX3Jl
bmRlclRhcmdldDsKKyNlbHNlCisgICAgYm9vbCBtX3ByZW11bHRpcGx5QWxwaGE7CisgICAgYm9v
bCBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlOworCisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gbV9kYXRhOyAvLyBUaGUgZW5jb2RlZCBkYXRhLgorICAgIFZlY3RvcjxJbWFnZUZyYW1lLCAx
PiBtX2ZyYW1lQnVmZmVyQ2FjaGU7CisgICAgRW5jb2RlZERhdGFTdGF0dXMgbV9lbmNvZGVkRGF0
YVN0YXR1cyB7IEVuY29kZWREYXRhU3RhdHVzOjpUeXBlQXZhaWxhYmxlIH07CisgICAgYm9vbCBt
X2RlY29kaW5nU2l6ZUZyb21TZXREYXRhIHsgZmFsc2UgfTsKKworICAgIEludFNpemUgbV9zaXpl
OworICAgIEltYWdlT3JpZW50YXRpb24gbV9vcmllbnRhdGlvbjsKKworICAgIGJvb2wgbV9zY2Fs
ZWQgeyBmYWxzZSB9OworICAgIFZlY3RvcjxpbnQ+IG1fc2NhbGVkQ29sdW1uczsKKyAgICBWZWN0
b3I8aW50PiBtX3NjYWxlZFJvd3M7CisjZW5kaWYKK307CisKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuY3BwCmluZGV4IGE3NDVl
YTgwMTY3Li4yMGU1Zjg0MDhhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuY3BwCkBAIC0yNywyMyArMjcsMTQgQEAKICNpbmNs
dWRlICJJbWFnZUZyYW1lQ2FjaGUuaCIKIAogI2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSAi
SW1hZ2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiSW1hZ2VPYnNlcnZlci5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJVUkwuaCIKLSNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5o
PgotCi0jaWYgVVNFKENHKQotI2luY2x1ZGUgIkltYWdlRGVjb2RlckNHLmgiCi0jZWxpZiBVU0Uo
RElSRUNUMkQpCi0jaW5jbHVkZSAiSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaCIKLSNpbmNsdWRlIDxX
aW5Db2RlYy5oPgotI2Vsc2UKLSNpbmNsdWRlICJJbWFnZURlY29kZXIuaCIKLSNlbmRpZgotCiAj
aW5jbHVkZSA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorI2luY2x1ZGUgPHd0Zi9TeXN0ZW1UcmFj
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VTb3VyY2UuY3BwCmluZGV4IDNkNDgzZmI5Mzk3Li4xZDQ2Njc4
MDY3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VT
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291
cmNlLmNwcApAQCAtMzAsMTkgKzMwLDEyIEBACiAjaW5jbHVkZSAiSW1hZ2VTb3VyY2UuaCIKIAog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkltYWdlRGVjb2Rlci5oIgor
I2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKIAotI2lmIFVTRShDRykKLSNpbmNsdWRlICJJ
bWFnZURlY29kZXJDRy5oIgotI2lmIFBMQVRGT1JNKFdJTikKKyNpZiBVU0UoQ0cpICYmIFBMQVRG
T1JNKFdJTikKICNpbmNsdWRlIDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UvV2ViS2l0U3lzdGVtSW50
ZXJmYWNlLmg+CiAjZW5kaWYKLSNlbGlmIFVTRShESVJFQ1QyRCkKLSNpbmNsdWRlICJJbWFnZURl
Y29kZXJEaXJlY3QyRC5oIgotI2Vsc2UKLSNpbmNsdWRlICJJbWFnZURlY29kZXIuaCIKLSNlbmRp
ZgotCi0jaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50
VGltZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZVR5cGVzLmgKaW5kZXggZGI2MTIxMmUyZWYuLjc1MTE3M2IxYTZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVR5cGVzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VUeXBlcy5oCkBAIC0y
NSwxMCArMjUsNiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2lmIFVTRShDRykKLXR5cGVkZWYgc3Ry
dWN0IENHSW1hZ2VTb3VyY2UqIENHSW1hZ2VTb3VyY2VSZWY7Ci0jZW5kaWYKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAvLyBUaGVyZSBhcmUgZm91ciBzdWJzYW1wbGluZyBsZXZlbHM6IDAgPSAx
eCwgMSA9IDAuNXgsIDIgPSAwLjI1eCwgMyA9IDAuMTI1eC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAppbmRleCBjN2Ux
MTRlZjEyNy4uNDYwMDY0MjNhYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKQEAgLTI0LDE1ICsyNCwxMyBAQAog
ICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJbWFnZURlY29kZXJDRy5oIgor
I2luY2x1ZGUgIkltYWdlRGVjb2Rlci5oIgogCiAjaWYgVVNFKENHKQogCiAjaW5jbHVkZSAiSW1h
Z2VJT1NQSS5oIgogI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKICNpbmNsdWRlICJJbWFn
ZVNvdXJjZUNHLmgiCi0jaW5jbHVkZSAiSW50UG9pbnQuaCIKLSNpbmNsdWRlICJJbnRTaXplLmgi
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtMTYzLDYgKzE2MSwxMSBAQCBJbWFnZURlY29k
ZXI6OkltYWdlRGVjb2RlcihTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvZmlsZQogICAgICAgICBtX25hdGl2ZURlY29kZXIgPSBhZG9wdENGKENHSW1hZ2VT
b3VyY2VDcmVhdGVJbmNyZW1lbnRhbChudWxscHRyKSk7CiB9CiAKK1JlZlB0cjxJbWFnZURlY29k
ZXI+IEltYWdlRGVjb2Rlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24g
YWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1hZ2VEZWNvZGVyKGRhdGEs
IGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOworfQorCiBzaXplX3Qg
SW1hZ2VEZWNvZGVyOjpieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKQogewogICAg
IC8vIE1lYXN1cmVkIGJ5IHRyYWNpbmcgbWFsbG9jL2NhbGxvYyBjYWxscyBvbiBNYWMgT1MgMTAu
Ni42LCB4ODZfNjQuCkBAIC0xNzMsNyArMTc2LDcgQEAgc2l6ZV90IEltYWdlRGVjb2Rlcjo6Ynl0
ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCkKICAgICAvLyBiZWhhdmlvciBpcyB1bmNo
YW5nZWQuCiAgICAgcmV0dXJuIDEzMDg4OwogfQotICAgIAorCiBTdHJpbmcgSW1hZ2VEZWNvZGVy
Ojp1dGkoKSBjb25zdAogewogICAgIHJldHVybiBDR0ltYWdlU291cmNlR2V0VHlwZShtX25hdGl2
ZURlY29kZXIuZ2V0KCkpOwpAQCAtMTg0LDYgKzE4NywxMSBAQCBTdHJpbmcgSW1hZ2VEZWNvZGVy
OjpmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0CiAgICAgcmV0dXJuIFdlYkNvcmU6OnByZWZlcnJl
ZEV4dGVuc2lvbkZvckltYWdlU291cmNlVHlwZSh1dGkoKSk7CiB9CiAKK2Jvb2wgSW1hZ2VEZWNv
ZGVyOjppc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faXNBbGxEYXRh
UmVjZWl2ZWQ7Cit9CisKIEVuY29kZWREYXRhU3RhdHVzIEltYWdlRGVjb2Rlcjo6ZW5jb2RlZERh
dGFTdGF0dXMoKSBjb25zdAogewogICAgIHN3aXRjaCAoQ0dJbWFnZVNvdXJjZUdldFN0YXR1cyht
X25hdGl2ZURlY29kZXIuZ2V0KCkpKSB7CkBAIC0zMDAsNyArMzA4LDcgQEAgSW50U2l6ZSBJbWFn
ZURlY29kZXI6OmZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVs
IHN1YnNhbXBsaW4KICAgICByZXR1cm4gSW50U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKIH0KIAotYm9v
bCBJbWFnZURlY29kZXI6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25z
dAorYm9vbCBJbWFnZURlY29kZXI6OmZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90IGluZGV4
KQogewogICAgIEFTU0VSVChmcmFtZUNvdW50KCkpOwogICAgIC8vIENHSW1hZ2VTb3VyY2VHZXRT
dGF0dXNBdEluZGV4KCkgY2hhbmdlcyB0aGUgcmV0dXJuIHN0YXR1cyB2YWx1ZSBmcm9tIGtDR0lt
YWdlU3RhdHVzSW5jb21wbGV0ZQpAQCAtMzIxLDcgKzMyOSw3IEBAIEltYWdlT3JpZW50YXRpb24g
SW1hZ2VEZWNvZGVyOjpmcmFtZU9yaWVudGF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0
CiAgICAgcmV0dXJuIG9yaWVudGF0aW9uRnJvbVByb3BlcnRpZXMocHJvcGVydGllcy5nZXQoKSk7
CiB9CiAKLWZsb2F0IEltYWdlRGVjb2Rlcjo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90IGlu
ZGV4KSBjb25zdAorZmxvYXQgSW1hZ2VEZWNvZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXpl
X3QgaW5kZXgpCiB7CiAgICAgZmxvYXQgZHVyYXRpb24gPSAwOwogICAgIFJldGFpblB0cjxDRkRp
Y3Rpb25hcnlSZWY+IHByb3BlcnRpZXMgPSBhZG9wdENGKENHSW1hZ2VTb3VyY2VDb3B5UHJvcGVy
dGllc0F0SW5kZXgobV9uYXRpdmVEZWNvZGVyLmdldCgpLCBpbmRleCwgaW1hZ2VTb3VyY2VPcHRp
b25zKCkuZ2V0KCkpKTsKQEAgLTM3Nyw3ICszODUsNyBAQCBib29sIEltYWdlRGVjb2Rlcjo6ZnJh
bWVBbGxvd1N1YnNhbXBsaW5nQXRJbmRleChzaXplX3QpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgSW1hZ2VEZWNvZGVyOjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5k
ZXgpIGNvbnN0Citib29sIEltYWdlRGVjb2Rlcjo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90
IGluZGV4KQogewogICAgIGlmICghZnJhbWVJc0NvbXBsZXRlQXRJbmRleChpbmRleCkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwpAQCAtNDAxLDcgKzQwOSw3IEBAIHVuc2lnbmVkIEltYWdlRGVjb2Rl
cjo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNh
bXBsCiAgICAgcmV0dXJuIChmcmFtZVNpemUuYXJlYSgpICogNCkudW5zYWZlR2V0KCk7CiB9CiAK
LU5hdGl2ZUltYWdlUHRyIEltYWdlRGVjb2Rlcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6
ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29k
aW5nT3B0aW9ucyYgZGVjb2RpbmdPcHRpb25zKSBjb25zdAorTmF0aXZlSW1hZ2VQdHIgSW1hZ2VE
ZWNvZGVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5n
TGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiBkZWNvZGluZ09w
dGlvbnMpCiB7CiAgICAgTE9HKEltYWdlcywgIkltYWdlRGVjb2RlciAlcCBjcmVhdGVGcmFtZUlt
YWdlQXRJbmRleCAlbHUiLCB0aGlzLCBpbmRleCk7CiAgICAgUmV0YWluUHRyPENGRGljdGlvbmFy
eVJlZj4gb3B0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0ltYWdlRGVjb2RlckNHLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jZy9JbWFnZURlY29kZXJDRy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzI4
NGU3MWZmNC4uMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaAorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2luY2x1ZGUgIkRlY29kaW5nT3B0aW9ucy5oIgotI2luY2x1ZGUgIkltYWdlT3JpZW50YXRp
b24uaCIKLSNpbmNsdWRlICJJbWFnZVR5cGVzLmgiCi0jaW5jbHVkZSAiSW50UG9pbnQuaCIKLSNp
bmNsdWRlICJJbnRTaXplLmgiCi0jaW5jbHVkZSAiTmF0aXZlSW1hZ2UuaCIKLSNpbmNsdWRlIDx3
dGYvT3B0aW9uYWwuaD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAotY2xhc3MgU2hhcmVkQnVmZmVyOwotICAgIAotY2xh
c3MgSW1hZ2VEZWNvZGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEltYWdlRGVjb2Rl
cj4gewotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIEltYWdlRGVj
b2RlcihTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbik7Ci0KLSAgICBzdGF0aWMgUmVmPEltYWdlRGVjb2Rlcj4gY3JlYXRlKFNoYXJlZEJ1
ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgSW1hZ2VEZWNvZGVyKGRhdGEsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbikpOwotICAgIH0KLSAgICAKLSAgICBzdGF0aWMgc2l6ZV90IGJ5dGVz
RGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpOwotCi0gICAgRW5jb2RlZERhdGFTdGF0dXMg
ZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdDsKLSAgICBib29sIGlzU2l6ZUF2YWlsYWJsZSgpIHsg
cmV0dXJuIGVuY29kZWREYXRhU3RhdHVzKCkgPj0gRW5jb2RlZERhdGFTdGF0dXM6OlNpemVBdmFp
bGFibGU7IH0KLSAgICBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0OwotICAgIFJlcGV0aXRpb25D
b3VudCByZXBldGl0aW9uQ291bnQoKSBjb25zdDsKLSAgICBTdHJpbmcgdXRpKCkgY29uc3Q7Ci0g
ICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3Q7Ci0gICAgc3RkOjpvcHRpb25hbDxJ
bnRQb2ludD4gaG90U3BvdCgpIGNvbnN0OwotCi0gICAgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4
KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpIGNv
bnN0OwotICAgIGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QpIGNvbnN0OwotICAg
IEltYWdlT3JpZW50YXRpb24gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90KSBjb25zdDsK
LSAgICAKLSAgICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0OwotICAg
IGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90KSBjb25zdDsKLSAgICBib29sIGZyYW1l
QWxsb3dTdWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBjb25zdDsKLSAgICB1bnNpZ25lZCBmcmFt
ZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVs
OjpEZWZhdWx0KSBjb25zdDsKLSAgICAKLSAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUlt
YWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpE
ZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91
cykgY29uc3Q7Ci0gICAgCi0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKTsKLSAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgeyByZXR1
cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQotICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hl
KHNpemVfdCkgeyB9Ci0gICAgCi1wcm90ZWN0ZWQ6Ci0gICAgYm9vbCBtX2lzQWxsRGF0YVJlY2Vp
dmVkIHsgZmFsc2UgfTsKLSAgICBSZXRhaW5QdHI8Q0dJbWFnZVNvdXJjZVJlZj4gbV9uYXRpdmVE
ZWNvZGVyOwotfTsKLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKaW5kZXggNmFiZTdlM2Vh
ZTUuLmJiYmI1OWMyNzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAKQEAgLTI0LDE0ICsy
NCwxMiBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJbWFnZURlY29k
ZXJEaXJlY3QyRC5oIgorI2luY2x1ZGUgIkltYWdlRGVjb2RlciIKIAogI2lmIFVTRShESVJFQ1Qy
RCkKIAogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIkltYWdlT3JpZW50
YXRpb24uaCIKLSNpbmNsdWRlICJJbnRQb2ludC5oIgotI2luY2x1ZGUgIkludFNpemUuaCIKICNp
bmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRl
ICJTaGFyZWRCdWZmZXIuaCIKQEAgLTQxLDEwICszOSwxNSBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLUltYWdlRGVjb2Rlcjo6SW1hZ2VEZWNvZGVyKCkKK0ltYWdlRGVjb2Rlcjo6SW1hZ2VE
ZWNvZGVyKFNoYXJlZEJ1ZmZlciYsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbikKIHsKIH0KIAorUmVmUHRyPEltYWdlRGVjb2Rlcj4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
IGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcg
SW1hZ2VEZWNvZGVyKGRhdGEsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bikpOworfQorCiBJV0lDSW1hZ2luZ0ZhY3RvcnkqIEltYWdlRGVjb2Rlcjo6c3lzdGVtSW1hZ2lu
Z0ZhY3RvcnkoKQogewogICAgIHN0YXRpYyBJV0lDSW1hZ2luZ0ZhY3RvcnkqIHdpY0ltYWdpbmdG
YWN0b3J5ID0gbnVsbHB0cjsKQEAgLTc5LDYgKzgyLDEyIEBAIEVuY29kZWREYXRhU3RhdHVzIElt
YWdlRGVjb2Rlcjo6ZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdAogICAgIHJldHVybiBFbmNvZGVk
RGF0YVN0YXR1czo6VW5rbm93bjsKIH0KIAorYm9vbCBJbWFnZURlY29kZXI6OmlzQWxsRGF0YVJl
Y2VpdmVkKCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxz
ZTsKK30KKwogSW50U2l6ZSBJbWFnZURlY29kZXI6OnNpemUoKSBjb25zdAogewogICAgIGlmICgh
bV9uYXRpdmVEZWNvZGVyKQpAQCAtMTM4LDcgKzE0Nyw3IEBAIEludFNpemUgSW1hZ2VEZWNvZGVy
OjpmcmFtZVNpemVBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1w
bGluCiAgICAgcmV0dXJuIEludFNpemUod2lkdGgsIGhlaWdodCk7CiB9CiAKLWJvb2wgSW1hZ2VE
ZWNvZGVyOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKK2Jvb2wg
SW1hZ2VEZWNvZGVyOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKICAg
ICBpZiAoIW1fbmF0aXZlRGVjb2RlcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTU0LDcg
KzE2Myw3IEBAIEltYWdlT3JpZW50YXRpb24gSW1hZ2VEZWNvZGVyOjpmcmFtZU9yaWVudGF0aW9u
QXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0CiAgICAgcmV0dXJuIEltYWdlT3JpZW50YXRpb24o
KTsKIH0KIAotZmxvYXQgSW1hZ2VEZWNvZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3Qg
aW5kZXgpIGNvbnN0CitmbG9hdCBJbWFnZURlY29kZXI6OmZyYW1lRHVyYXRpb25BdEluZGV4KHNp
emVfdCBpbmRleCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiAwOwpAQCAt
MTY2LDcgKzE3NSw3IEBAIGJvb2wgSW1hZ2VEZWNvZGVyOjpmcmFtZUFsbG93U3Vic2FtcGxpbmdB
dEluZGV4KHNpemVfdCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBJbWFnZURl
Y29kZXI6OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKK2Jvb2wgSW1h
Z2VEZWNvZGVyOjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpCiB7CiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE4Niw3ICsxOTUsNyBAQCB2b2lk
IEltYWdlRGVjb2Rlcjo6c2V0VGFyZ2V0Q29udGV4dChJRDJEMVJlbmRlclRhcmdldCogcmVuZGVy
VGFyZ2V0KQogICAgIG1fcmVuZGVyVGFyZ2V0ID0gcmVuZGVyVGFyZ2V0OwogfQogCi1OYXRpdmVJ
bWFnZVB0ciBJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRl
eCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlv
bnMmKSBjb25zdAorTmF0aXZlSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyOjpjcmVhdGVGcmFtZUltYWdl
QXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwg
Y29uc3QgRGVjb2RpbmdPcHRpb25zJikKIHsKICAgICBpZiAoIW1fbmF0aXZlRGVjb2RlciB8fCAh
bV9yZW5kZXJUYXJnZXQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0
MkQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGJkNGQ2ZjY3ZTYuLjAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29k
ZXJEaXJlY3QyRC5oCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0g
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVk
ZSAiQ09NUHRyLmgiCi0jaW5jbHVkZSAiSW1hZ2VTb3VyY2UuaCIKLSNpbmNsdWRlICJJbnRTaXpl
LmgiCi0jaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+Ci0KLWludGVyZmFjZSBJRDJEMVJlbmRlclRh
cmdldDsKLWludGVyZmFjZSBJV0lDQml0bWFwRGVjb2RlcjsKLWludGVyZmFjZSBJV0lDSW1hZ2lu
Z0ZhY3Rvcnk7Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgSW1hZ2VEZWNvZGVyIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEltYWdlRGVjb2Rlcj4gewotICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIEltYWdlRGVjb2RlcigpOwotICAgIAotICAg
IHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiwgQWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgSW1hZ2VEZWNvZGVyKCkpOwotICAgIH0KLSAgICAKLSAgICBzdGF0aWMgc2l6
ZV90IGJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpOwotICAgIAotICAgIFN0cmlu
ZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0OwotICAgIEVuY29kZWREYXRhU3RhdHVzIGVuY29k
ZWREYXRhU3RhdHVzKCkgY29uc3Q7Ci0gICAgYm9vbCBpc1NpemVBdmFpbGFibGUoKSBjb25zdDsK
LSAgICAKLSAgICAvLyBBbHdheXMgb3JpZ2luYWwgc2l6ZSwgd2l0aG91dCBzdWJzYW1wbGluZy4K
LSAgICBJbnRTaXplIHNpemUoKSBjb25zdDsKLSAgICBzaXplX3QgZnJhbWVDb3VudCgpIGNvbnN0
OwotCi0gICAgUmVwZXRpdGlvbkNvdW50IHJlcGV0aXRpb25Db3VudCgpIGNvbnN0OwotICAgIHN0
ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdDsKLSAgICAKLSAgICBJbnRTaXpl
IGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdM
ZXZlbDo6RGVmYXVsdCkgY29uc3Q7Ci0gICAgYm9vbCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNp
emVfdCkgY29uc3Q7Ci0gICAgSW1hZ2VPcmllbnRhdGlvbiBmcmFtZU9yaWVudGF0aW9uQXRJbmRl
eChzaXplX3QpIGNvbnN0OwotICAgIAotICAgIGZsb2F0IGZyYW1lRHVyYXRpb25BdEluZGV4KHNp
emVfdCkgY29uc3Q7Ci0gICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QpIGNvbnN0
OwotICAgIGJvb2wgZnJhbWVBbGxvd1N1YnNhbXBsaW5nQXRJbmRleChzaXplX3QpIGNvbnN0Owot
ICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9
IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpIGNvbnN0OwotICAgIAotICAgIE5hdGl2ZUltYWdl
UHRyIGNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1
YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgPSBEZWNvZGlu
Z01vZGU6OlN5bmNocm9ub3VzKSBjb25zdDsKLSAgICAKLSAgICB2b2lkIHNldERhdGEoU2hhcmVk
QnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpOwotICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2
ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOyB9Ci0gICAgdm9pZCBjbGVh
ckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSB7IH0KLQotICAgIHZvaWQgc2V0VGFyZ2V0Q29udGV4
dChJRDJEMVJlbmRlclRhcmdldCopOwotCi0gICAgc3RhdGljIElXSUNJbWFnaW5nRmFjdG9yeSog
c3lzdGVtSW1hZ2luZ0ZhY3RvcnkoKTsKLQotcHJvdGVjdGVkOgotICAgIGJvb2wgbV9pc0FsbERh
dGFSZWNlaXZlZCB7IGZhbHNlIH07Ci0gICAgbXV0YWJsZSBJbnRTaXplIG1fc2l6ZTsKLSAgICBD
T01QdHI8SVdJQ0JpdG1hcERlY29kZXI+IG1fbmF0aXZlRGVjb2RlcjsKLSAgICBDT01QdHI8SUQy
RDFSZW5kZXJUYXJnZXQ+IG1fcmVuZGVyVGFyZ2V0OwotfTsKLQotfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKaW5k
ZXggNGJhNGRiMmE2MjEuLmEzYzgzNzYwMmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAKQEAgLTI4LDcgKzI4
LDYgQEAKICNpbmNsdWRlICJJQ09JbWFnZURlY29kZXIuaCIKICNpbmNsdWRlICJKUEVHSW1hZ2VE
ZWNvZGVyLmgiCiAjaW5jbHVkZSAiUE5HSW1hZ2VEZWNvZGVyLmgiCi0jaW5jbHVkZSAiU2hhcmVk
QnVmZmVyLmgiCiAjaWYgVVNFKFdFQlApCiAjaW5jbHVkZSAiV0VCUEltYWdlRGVjb2Rlci5oIgog
I2VuZGlmCkBAIC01OSw0MyArNTgsMTIgQEAgc3RhdGljIHVuc2lnbmVkIGNvcHlGcm9tU2hhcmVk
QnVmZmVyKGNoYXIqIGJ1ZmZlciwgdW5zaWduZWQgYnVmZmVyTGVuZ3RoLCBjb25zdAogICAgIHJl
dHVybiBieXRlc0V4dHJhY3RlZDsKIH0KIAotYm9vbCBtYXRjaGVzR0lGU2lnbmF0dXJlKGNoYXIq
IGNvbnRlbnRzKQotewotICAgIHJldHVybiAhbWVtY21wKGNvbnRlbnRzLCAiR0lGODdhIiwgNikg
fHwgIW1lbWNtcChjb250ZW50cywgIkdJRjg5YSIsIDYpOwotfQotCi1ib29sIG1hdGNoZXNQTkdT
aWduYXR1cmUoY2hhciogY29udGVudHMpCi17Ci0gICAgcmV0dXJuICFtZW1jbXAoY29udGVudHMs
ICJceDg5XHg1MFx4NEVceDQ3XHgwRFx4MEFceDFBXHgwQSIsIDgpOwotfQotCi1ib29sIG1hdGNo
ZXNKUEVHU2lnbmF0dXJlKGNoYXIqIGNvbnRlbnRzKQotewotICAgIHJldHVybiAhbWVtY21wKGNv
bnRlbnRzLCAiXHhGRlx4RDhceEZGIiwgMyk7CiB9CiAKLSNpZiBVU0UoV0VCUCkKLWJvb2wgbWF0
Y2hlc1dlYlBTaWduYXR1cmUoY2hhciogY29udGVudHMpCitJbWFnZURlY29kZXI6OkltYWdlRGVj
b2RlcihTaGFyZWRCdWZmZXImLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCisgICAgOiBtX3ByZW11
bHRpcGx5QWxwaGEoYWxwaGFPcHRpb24gPT0gQWxwaGFPcHRpb246OlByZW11bHRpcGxpZWQpCisg
ICAgLCBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uID09IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uOjpJZ25vcmVkKQogewotICAgIHJldHVy
biAhbWVtY21wKGNvbnRlbnRzLCAiUklGRiIsIDQpICYmICFtZW1jbXAoY29udGVudHMgKyA4LCAi
V0VCUFZQIiwgNik7Ci19Ci0jZW5kaWYKLQotYm9vbCBtYXRjaGVzQk1QU2lnbmF0dXJlKGNoYXIq
IGNvbnRlbnRzKQotewotICAgIHJldHVybiAhbWVtY21wKGNvbnRlbnRzLCAiQk0iLCAyKTsKLX0K
LQotYm9vbCBtYXRjaGVzSUNPU2lnbmF0dXJlKGNoYXIqIGNvbnRlbnRzKQotewotICAgIHJldHVy
biAhbWVtY21wKGNvbnRlbnRzLCAiXHgwMFx4MDBceDAxXHgwMCIsIDQpOwotfQotCi1ib29sIG1h
dGNoZXNDVVJTaWduYXR1cmUoY2hhciogY29udGVudHMpCi17Ci0gICAgcmV0dXJuICFtZW1jbXAo
Y29udGVudHMsICJceDAwXHgwMFx4MDJceDAwIiwgNCk7Ci19Ci0KIH0KIAogUmVmUHRyPEltYWdl
RGVjb2Rlcj4gSW1hZ2VEZWNvZGVyOjpjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9w
dGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pCkBAIC0xMDYsMjUgKzc0LDIxIEBAIFJlZlB0cjxJbWFnZURlY29kZXI+
IEltYWdlRGVjb2Rlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxw
aGFPCiAgICAgaWYgKGxlbmd0aCA8IGxlbmd0aE9mTG9uZ2VzdFNpZ25hdHVyZSkKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKLSAgICBpZiAobWF0Y2hlc0dJRlNpZ25hdHVyZShjb250ZW50cykp
Ci0gICAgICAgIHJldHVybiBHSUZJbWFnZURlY29kZXI6OmNyZWF0ZShhbHBoYU9wdGlvbiwgZ2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwotCi0gICAgaWYgKG1hdGNoZXNQTkdTaWduYXR1cmUo
Y29udGVudHMpKQotICAgICAgICByZXR1cm4gUE5HSW1hZ2VEZWNvZGVyOjpjcmVhdGUoYWxwaGFP
cHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKLQotICAgIGlmIChtYXRjaGVzSUNP
U2lnbmF0dXJlKGNvbnRlbnRzKSB8fCBtYXRjaGVzQ1VSU2lnbmF0dXJlKGNvbnRlbnRzKSkKLSAg
ICAgICAgcmV0dXJuIElDT0ltYWdlRGVjb2Rlcjo6Y3JlYXRlKGFscGhhT3B0aW9uLCBnYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbik7Ci0KLSAgICBpZiAobWF0Y2hlc0pQRUdTaWduYXR1cmUoY29u
dGVudHMpKQotICAgICAgICByZXR1cm4gSlBFR0ltYWdlRGVjb2Rlcjo6Y3JlYXRlKGFscGhhT3B0
aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7Ci0KKyAgICBWZWN0b3I8c3RkOjpwYWly
PFJlZlB0cjxJbWFnZURlY29kZXI+ICgqKShTaGFyZWRCdWZmZXImLCBBbHBoYU9wdGlvbiwgR2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pLCBib29sICgqKShjb25zdCBjaGFyKik+PiBtYXRjaGVy
cyA9IHsKKyAgICAgICAgc3RkOjptYWtlX3BhaXIoJkdJRkltYWdlRGVjb2Rlcjo6Y3JlYXRlLCAg
W10oY29uc3QgY2hhciogY29udGVudHMpIHsgcmV0dXJuICFtZW1jbXAoY29udGVudHMsICJHSUY4
N2EiLCA2KSB8fCAhbWVtY21wKGNvbnRlbnRzLCAiR0lGODlhIiwgNik7IH0pLAorICAgICAgICBz
dGQ6Om1ha2VfcGFpcigmUE5HSW1hZ2VEZWNvZGVyOjpjcmVhdGUsICBbXShjb25zdCBjaGFyKiBj
b250ZW50cykgeyByZXR1cm4gIW1lbWNtcChjb250ZW50cywgIlx4ODlceDUwXHg0RVx4NDdceDBE
XHgwQVx4MUFceDBBIiwgOCk7IH0pLAorICAgICAgICBzdGQ6Om1ha2VfcGFpcigmSUNPSW1hZ2VE
ZWNvZGVyOjpjcmVhdGUsICBbXShjb25zdCBjaGFyKiBjb250ZW50cykgeyByZXR1cm4gIW1lbWNt
cChjb250ZW50cywgIlx4MDBceDAwXHgwMVx4MDAiLCA0KSB8fCAhbWVtY21wKGNvbnRlbnRzLCAi
XHgwMFx4MDBceDAyXHgwMCIsIDQpOyB9KSwKKyAgICAgICAgc3RkOjptYWtlX3BhaXIoJkpQRUdJ
bWFnZURlY29kZXI6OmNyZWF0ZSwgW10oY29uc3QgY2hhciogY29udGVudHMpIHsgcmV0dXJuICFt
ZW1jbXAoY29udGVudHMsICJceEZGXHhEOFx4RkYiLCAzKTsgfSksCiAjaWYgVVNFKFdFQlApCi0g
ICAgaWYgKG1hdGNoZXNXZWJQU2lnbmF0dXJlKGNvbnRlbnRzKSkKLSAgICAgICAgcmV0dXJuIFdF
QlBJbWFnZURlY29kZXI6OmNyZWF0ZShhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pOworICAgICAgICBzdGQ6Om1ha2VfcGFpcigmV0VCUEltYWdlRGVjb2Rlcjo6Y3JlYXRl
LCBbXShjb25zdCBjaGFyKiBjb250ZW50cykgeyByZXR1cm4gIW1lbWNtcChjb250ZW50cywgIlJJ
RkYiLCA0KSAmJiAhbWVtY21wKGNvbnRlbnRzICsgOCwgIldFQlBWUCIsIDYpOyB9KSwKICNlbmRp
ZgorICAgICAgICBzdGQ6Om1ha2VfcGFpcigmQk1QSW1hZ2VEZWNvZGVyOjpjcmVhdGUsICBbXShj
b25zdCBjaGFyKiBjb250ZW50cykgeyByZXR1cm4gIW1lbWNtcChjb250ZW50cywgIkJNIiwgMik7
IH0pCisgICAgfTsKIAotICAgIGlmIChtYXRjaGVzQk1QU2lnbmF0dXJlKGNvbnRlbnRzKSkKLSAg
ICAgICAgcmV0dXJuIEJNUEltYWdlRGVjb2Rlcjo6Y3JlYXRlKGFscGhhT3B0aW9uLCBnYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgZm9yIChhdXRvJiBtYXRjaGVyIDogbWF0Y2hlcnMp
IHsKKyAgICAgICAgaWYgKCgqbWF0Y2hlci5zZWNvbmQpKGNvbnRlbnRzKSkKKyAgICAgICAgICAg
IHJldHVybiAoKm1hdGNoZXIuZmlyc3QpKGRhdGEsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbik7CisgICAgfQogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CkBAIC0xNzAs
MTMgKzEzNCw5NyBAQCB0ZW1wbGF0ZSA8TWF0Y2hUeXBlIHR5cGU+IGludCBnZXRTY2FsZWRWYWx1
ZShjb25zdCBWZWN0b3I8aW50PiYgc2NhbGVkVmFsdWVzLCBpbgogCiB9CiAKK3NpemVfdCBJbWFn
ZURlY29kZXI6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpCit7CisgICAgcmV0
dXJuIDA7Cit9CisKK3ZvaWQgSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0
YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit7CisgICAgaWYgKG1fZW5jb2RlZERhdGFTdGF0dXMg
PT0gRW5jb2RlZERhdGFTdGF0dXM6OkVycm9yKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Rh
dGEgPSAmZGF0YTsKKyAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0
YXR1czo6VHlwZUF2YWlsYWJsZSkgeworICAgICAgICBtX2RlY29kaW5nU2l6ZUZyb21TZXREYXRh
ID0gdHJ1ZTsKKyAgICAgICAgdHJ5RGVjb2RlU2l6ZShhbGxEYXRhUmVjZWl2ZWQpOworICAgICAg
ICBtX2RlY29kaW5nU2l6ZUZyb21TZXREYXRhID0gZmFsc2U7CisgICAgfQorCisgICAgaWYgKG1f
ZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkVycm9yKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpZiAoYWxsRGF0YVJlY2VpdmVkKSB7CisgICAgICAgIEFTU0VSVChtX2Vu
Y29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpTaXplQXZhaWxhYmxlKTsKKyAg
ICAgICAgbV9lbmNvZGVkRGF0YVN0YXR1cyA9IEVuY29kZWREYXRhU3RhdHVzOjpDb21wbGV0ZTsK
KyAgICB9Cit9CisKK2Jvb2wgSW1hZ2VEZWNvZGVyOjppc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0
Cit7CisgICAgQVNTRVJUKCFtX2RlY29kaW5nU2l6ZUZyb21TZXREYXRhKTsKKyAgICByZXR1cm4g
bV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6Q29tcGxldGU7Cit9CisK
K0VuY29kZWREYXRhU3RhdHVzIEltYWdlRGVjb2Rlcjo6ZW5jb2RlZERhdGFTdGF0dXMoKSBjb25z
dAoreworICAgIHJldHVybiBtX2VuY29kZWREYXRhU3RhdHVzOworfQorCitib29sIEltYWdlRGVj
b2Rlcjo6c2V0RmFpbGVkKCkKK3sKKyAgICAvLyBTZXRzIHRoZSAiZGVjb2RlIGZhaWx1cmUiIGZs
YWcuIEZvciBjYWxsZXIgY29udmVuaWVuY2UgKHNpbmNlIHNvCisgICAgLy8gbWFueSBjYWxsZXJz
IHdhbnQgdG8gcmV0dXJuIGZhbHNlIGFmdGVyIGNhbGxpbmcgdGhpcyksIHJldHVybnMgZmFsc2UK
KyAgICAvLyB0byBlbmFibGUgZWFzeSB0YWlsY2FsbGluZy4gU3ViY2xhc3NlcyBtYXkgb3ZlcnJp
ZGUgdGhpcyB0byBhbHNvCisgICAgLy8gY2xlYW4gdXAgYW55IGxvY2FsIGRhdGEuCisgICAgbV9l
bmNvZGVkRGF0YVN0YXR1cyA9IEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcjsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKK1N0cmluZyBJbWFnZURlY29kZXI6OmZpbGVuYW1lRXh0ZW5zaW9uKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKKy8vIFJldHVybnMgd2hldGhlciB0aGUg
c2l6ZSBpcyBsZWdhbCAoaS5lLiBub3QgZ29pbmcgdG8gcmVzdWx0IGluCisvLyBvdmVyZmxvdyBl
bHNld2hlcmUpLiBJZiBub3QsIG1hcmtzIGRlY29kaW5nIGFzIGZhaWxlZC4KK2Jvb2wgSW1hZ2VE
ZWNvZGVyOjpzZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCit7CisgICAgaWYgKEltYWdlQmFj
a2luZ1N0b3JlOjppc092ZXJTaXplKHNpemUpKQorICAgICAgICByZXR1cm4gc2V0RmFpbGVkKCk7
CisgICAgbV9zaXplID0gc2l6ZTsKKyAgICBtX2VuY29kZWREYXRhU3RhdHVzID0gRW5jb2RlZERh
dGFTdGF0dXM6OlNpemVBdmFpbGFibGU7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3NpemVfdCBJ
bWFnZURlY29kZXI6OmZyYW1lQ291bnQoKSBjb25zdAoreworICAgIC8vIExhemlseS1kZWNvZGVz
IGVub3VnaCBvZiB0aGUgaW1hZ2UgdG8gZ2V0IHRoZSBmcmFtZSBjb3VudCAoaWYKKyAgICAvLyBw
b3NzaWJsZSksIHdpdGhvdXQgZGVjb2RpbmcgdGhlIGluZGl2aWR1YWwgZnJhbWVzLgorICAgIC8v
IEZJWE1FOiBSaWdodCBub3cgdGhhdCBoYXMgdG8gYmUgZG9uZSBieSBlYWNoIHN1YmNsYXNzOyBm
YWN0b3IgdGhlCisgICAgLy8gZGVjb2RlIGNhbGwgb3V0IGFuZCB1c2UgaXQgaGVyZS4KKyAgICBy
ZXR1cm4gMTsKK30KKworUmVwZXRpdGlvbkNvdW50IEltYWdlRGVjb2Rlcjo6cmVwZXRpdGlvbkNv
dW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gUmVwZXRpdGlvbkNvdW50Tm9uZTsKK30KKworc3Rk
OjpvcHRpb25hbDxJbnRQb2ludD4gSW1hZ2VEZWNvZGVyOjpob3RTcG90KCkgY29uc3QKK3sKKyAg
ICAvLyBJZiB0aGUgaW1hZ2UgaGFzIGEgY3Vyc29yIGhvdC1zcG90LCBzdG9yZXMgaXQgaW4gdGhl
IGFyZ3VtZW50CisgICAgLy8gYW5kIHJldHVybnMgdHJ1ZS4gT3RoZXJ3aXNlIHJldHVybnMgZmFs
c2UuCisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKyAgICAKIGJvb2wgSW1hZ2VEZWNvZGVy
OjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKICAgICBJbWFnZUZyYW1l
KiBidWZmZXIgPSBmcmFtZUJ1ZmZlckF0SW5kZXgoaW5kZXgpOwogICAgIHJldHVybiBidWZmZXIg
JiYgYnVmZmVyLT5pc0NvbXBsZXRlKCk7CiB9CiAKLWJvb2wgSW1hZ2VEZWNvZGVyOjpmcmFtZUhh
c0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Citib29sIEltYWdlRGVjb2Rlcjo6ZnJh
bWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewogICAgIGlmIChtX2ZyYW1lQnVmZmVy
Q2FjaGUuc2l6ZSgpIDw9IGluZGV4KQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE4NSw3ICsy
MzMsNyBAQCBib29sIEltYWdlRGVjb2Rlcjo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGlu
ZGV4KSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi11bnNpZ25lZCBJbWFnZURlY29kZXI6
OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKK3Vuc2lnbmVkIEltYWdlRGVj
b2Rlcjo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsKSBj
b25zdAogewogICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuc2l6ZSgpIDw9IGluZGV4KQogICAg
ICAgICByZXR1cm4gMDsKQEAgLTIwOSw2ICsyNTcsMjYgQEAgZmxvYXQgSW1hZ2VEZWNvZGVyOjpm
cmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgcmV0dXJuIGR1cmF0aW9uOwog
fQogCitJbWFnZU9yaWVudGF0aW9uIEltYWdlRGVjb2Rlcjo6ZnJhbWVPcmllbnRhdGlvbkF0SW5k
ZXgoc2l6ZV90KSBjb25zdAoreworICAgIHJldHVybiBtX29yaWVudGF0aW9uOworfQorCitJbnRT
aXplIEltYWdlRGVjb2Rlcjo6ZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2
ZWwpIGNvbnN0Cit7CisgICAgLy8gVGhpcyB3aWxsIG9ubHkgZGlmZmVyIGZyb20gc2l6ZSgpIGZv
ciBJQ08gKHdoZXJlIGVhY2ggZnJhbWUgaXMgYQorICAgIC8vIGRpZmZlcmVudCBpY29uKSBvciBv
dGhlciBmb3JtYXRzIHdoZXJlIGRpZmZlcmVudCBmcmFtZXMgYXJlIGRpZmZlcmVudAorICAgIC8v
IHNpemVzLiBUaGlzIGRvZXMgTk9UIGRpZmZlciBmcm9tIHNpemUoKSBmb3IgR0lGLCBzaW5jZSBk
ZWNvZGluZyBHSUZzCisgICAgLy8gY29tcG9zaXRlcyBhbnkgc21hbGxlciBmcmFtZXMgYWdhaW5z
dCBwcmV2aW91cyBmcmFtZXMgdG8gY3JlYXRlIGZ1bGwtCisgICAgLy8gc2l6ZSBmcmFtZXMuCisg
ICAgcmV0dXJuIHNpemUoKTsKK30KKworYm9vbCBJbWFnZURlY29kZXI6OmZyYW1lQWxsb3dTdWJz
YW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKwog
TmF0aXZlSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXpl
X3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCiB7CiAg
ICAgLy8gWmVyby1oZWlnaHQgaW1hZ2VzIGNhbiBjYXVzZSBwcm9ibGVtcyBmb3Igc29tZSBwb3J0
cy4gSWYgd2UgaGF2ZSBhbiBlbXB0eSBpbWFnZSBkaW1lbnNpb24sIGp1c3QgYmFpbC4KQEAgLTIy
Niw2ICsyOTQsMTIgQEAgTmF0aXZlSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyOjpjcmVhdGVGcmFtZUlt
YWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGUKIAogdm9pZCBJbWFnZURlY29k
ZXI6OnByZXBhcmVTY2FsZURhdGFJZk5lY2Vzc2FyeSgpCiB7CisjaWYgRU5BQkxFKElNQUdFX0RF
Q09ERVJfRE9XTl9TQU1QTElORykKKyAgICBzdGF0aWMgY29uc3QgaW50IE1heE51bVBpeGVscyB7
IDEwMjQgKiAxMDI0IH07CisjZWxzZQorICAgIHN0YXRpYyBjb25zdCBpbnQgTWF4TnVtUGl4ZWxz
IHsgLTEgfTsKKyNlbmRpZgorICAgIAogICAgIG1fc2NhbGVkID0gZmFsc2U7CiAgICAgbV9zY2Fs
ZWRDb2x1bW5zLmNsZWFyKCk7CiAgICAgbV9zY2FsZWRSb3dzLmNsZWFyKCk7CkBAIC0yMzMsMTEg
KzMwNywxMSBAQCB2b2lkIEltYWdlRGVjb2Rlcjo6cHJlcGFyZVNjYWxlRGF0YUlmTmVjZXNzYXJ5
KCkKICAgICBpbnQgd2lkdGggPSBzaXplKCkud2lkdGgoKTsKICAgICBpbnQgaGVpZ2h0ID0gc2l6
ZSgpLmhlaWdodCgpOwogICAgIGludCBudW1QaXhlbHMgPSBoZWlnaHQgKiB3aWR0aDsKLSAgICBp
ZiAobV9tYXhOdW1QaXhlbHMgPD0gMCB8fCBudW1QaXhlbHMgPD0gbV9tYXhOdW1QaXhlbHMpCisg
ICAgaWYgKE1heE51bVBpeGVscyA8PSAwIHx8IG51bVBpeGVscyA8PSBNYXhOdW1QaXhlbHMpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIG1fc2NhbGVkID0gdHJ1ZTsKLSAgICBkb3VibGUgc2NhbGUg
PSBzcXJ0KG1fbWF4TnVtUGl4ZWxzIC8gKGRvdWJsZSludW1QaXhlbHMpOworICAgIGRvdWJsZSBz
Y2FsZSA9IHNxcnQoTWF4TnVtUGl4ZWxzIC8gKGRvdWJsZSludW1QaXhlbHMpOwogICAgIGZpbGxT
Y2FsZWRWYWx1ZXMobV9zY2FsZWRDb2x1bW5zLCBzY2FsZSwgd2lkdGgpOwogICAgIGZpbGxTY2Fs
ZWRWYWx1ZXMobV9zY2FsZWRSb3dzLCBzY2FsZSwgaGVpZ2h0KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0MmNkYjBkZGY2Li4wMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAorKysg
L2Rldi9udWxsCkBAIC0xLDIzMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAy
MDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDgtMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4KLSAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4g
TW90aW9uIExpbWl0ZWQgMjAwOS0yMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJp
Z2h0IChDKSAyMDA5IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVz
KQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9u
Y2UKLQotI2luY2x1ZGUgIkltYWdlRnJhbWUuaCIKLSNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5j
bHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCi0jaW5jbHVkZSAi
U2hhcmVkQnVmZmVyLmgiCi0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3
dGYvT3B0aW9uYWwuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLS8vIEltYWdlRGVjb2RlciBpcyBhIGJhc2UgZm9yIGFsbCBmb3JtYXQtc3BlY2lm
aWMgZGVjb2RlcnMKLS8vIChlLmcuIEpQRUdJbWFnZURlY29kZXIpLiBUaGlzIGJhc2UgbWFuYWdl
cyB0aGUgSW1hZ2VGcmFtZSBjYWNoZS4KLS8vCi0vLyBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dO
X1NBTVBMSU5HKSBhbGxvd3MgaW1hZ2UgZGVjb2RlcnMgdG8gZG93bnNhbXBsZQotLy8gYXQgZGVj
b2RlIHRpbWUuIEltYWdlIGRlY29kZXJzIHdpbGwgZG93bnNhbXBsZSBhbnkgaW1hZ2VzIGxhcmdl
ciB0aGFuCi0vLyB8bV9tYXhOdW1QaXhlbHN8LiBGSVhNRTogTm90IHlldCBzdXBwb3J0ZWQgYnkg
YWxsIGRlY29kZXJzLgotY2xhc3MgSW1hZ2VEZWNvZGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPEltYWdlRGVjb2Rlcj4gewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlRGVj
b2Rlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIEltYWdlRGVjb2Rl
cihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCi0gICAgICAgIDogbV9wcmVtdWx0aXBseUFscGhhKGFs
cGhhT3B0aW9uID09IEFscGhhT3B0aW9uOjpQcmVtdWx0aXBsaWVkKQotICAgICAgICAsIG1faWdu
b3JlR2FtbWFBbmRDb2xvclByb2ZpbGUoZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gPT0gR2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb246Oklnbm9yZWQpCi0gICAgewotICAgIH0KLQotICAgIHZp
cnR1YWwgfkltYWdlRGVjb2RlcigpCi0gICAgewotICAgIH0KLQotICAgIC8vIFJldHVybnMgbnVs
bHB0ciBpZiB3ZSBjYW4ndCBzbmlmZiBhIHN1cHBvcnRlZCB0eXBlIGZyb20gdGhlIHByb3ZpZGVk
IGRhdGEgKHBvc3NpYmx5Ci0gICAgLy8gYmVjYXVzZSB0aGVyZSBpc24ndCBlbm91Z2ggZGF0YSB5
ZXQpLgotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoU2hhcmVkQnVmZmVy
JiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwotCi0gICAg
dmlydHVhbCBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCA9IDA7Ci0KLSAgICBib29s
IHByZW11bHRpcGx5QWxwaGEoKSBjb25zdCB7IHJldHVybiBtX3ByZW11bHRpcGx5QWxwaGE7IH0K
LQotICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNT
RVJUKCFtX2RlY29kaW5nU2l6ZUZyb21TZXREYXRhKTsKLSAgICAgICAgcmV0dXJuIG1fZW5jb2Rl
ZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkNvbXBsZXRlOwotICAgIH0KLQotICAg
IHZpcnR1YWwgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpCi0gICAgewotICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVk
RGF0YVN0YXR1czo6RXJyb3IpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbV9kYXRh
ID0gJmRhdGE7Ci0gICAgICAgIGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRh
U3RhdHVzOjpUeXBlQXZhaWxhYmxlKSB7Ci0gICAgICAgICAgICBtX2RlY29kaW5nU2l6ZUZyb21T
ZXREYXRhID0gdHJ1ZTsKLSAgICAgICAgICAgIHRyeURlY29kZVNpemUoYWxsRGF0YVJlY2VpdmVk
KTsKLSAgICAgICAgICAgIG1fZGVjb2RpbmdTaXplRnJvbVNldERhdGEgPSBmYWxzZTsKLSAgICAg
ICAgfQotCi0gICAgICAgIGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3Rh
dHVzOjpFcnJvcikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAoYWxsRGF0YVJl
Y2VpdmVkKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNv
ZGVkRGF0YVN0YXR1czo6U2l6ZUF2YWlsYWJsZSk7Ci0gICAgICAgICAgICBtX2VuY29kZWREYXRh
U3RhdHVzID0gRW5jb2RlZERhdGFTdGF0dXM6OkNvbXBsZXRlOwotICAgICAgICB9Ci0gICAgfQot
Ci0gICAgRW5jb2RlZERhdGFTdGF0dXMgZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdCB7IHJldHVy
biBtX2VuY29kZWREYXRhU3RhdHVzOyB9Ci0KLSAgICBib29sIGlzU2l6ZUF2YWlsYWJsZSgpIHsg
cmV0dXJuIG1fZW5jb2RlZERhdGFTdGF0dXMgPj0gRW5jb2RlZERhdGFTdGF0dXM6OlNpemVBdmFp
bGFibGU7IH0KLQotICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkgeyByZXR1cm4gaXNTaXplQXZh
aWxhYmxlKCkgPyBtX3NpemUgOiBJbnRTaXplKCk7IH0KLQotICAgIEludFNpemUgc2NhbGVkU2l6
ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gbV9zY2FsZWQgPyBJbnRTaXplKG1fc2NhbGVkQ29s
dW1ucy5zaXplKCksIG1fc2NhbGVkUm93cy5zaXplKCkpIDogc2l6ZSgpOwotICAgIH0KLQotICAg
IC8vIFRoaXMgd2lsbCBvbmx5IGRpZmZlciBmcm9tIHNpemUoKSBmb3IgSUNPICh3aGVyZSBlYWNo
IGZyYW1lIGlzIGEKLSAgICAvLyBkaWZmZXJlbnQgaWNvbikgb3Igb3RoZXIgZm9ybWF0cyB3aGVy
ZSBkaWZmZXJlbnQgZnJhbWVzIGFyZSBkaWZmZXJlbnQKLSAgICAvLyBzaXplcy4gVGhpcyBkb2Vz
IE5PVCBkaWZmZXIgZnJvbSBzaXplKCkgZm9yIEdJRiwgc2luY2UgZGVjb2RpbmcgR0lGcwotICAg
IC8vIGNvbXBvc2l0ZXMgYW55IHNtYWxsZXIgZnJhbWVzIGFnYWluc3QgcHJldmlvdXMgZnJhbWVz
IHRvIGNyZWF0ZSBmdWxsLQotICAgIC8vIHNpemUgZnJhbWVzLgotICAgIHZpcnR1YWwgSW50U2l6
ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBzaXplKCk7Ci0gICAgfQotCi0gICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBz
aXplIGlzIGxlZ2FsIChpLmUuIG5vdCBnb2luZyB0byByZXN1bHQgaW4KLSAgICAvLyBvdmVyZmxv
dyBlbHNld2hlcmUpLiBJZiBub3QsIG1hcmtzIGRlY29kaW5nIGFzIGZhaWxlZC4KLSAgICB2aXJ0
dWFsIGJvb2wgc2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQotICAgIHsKLSAgICAgICAgaWYg
KEltYWdlQmFja2luZ1N0b3JlOjppc092ZXJTaXplKHNpemUpKQotICAgICAgICAgICAgcmV0dXJu
IHNldEZhaWxlZCgpOwotICAgICAgICBtX3NpemUgPSBzaXplOwotICAgICAgICBtX2VuY29kZWRE
YXRhU3RhdHVzID0gRW5jb2RlZERhdGFTdGF0dXM6OlNpemVBdmFpbGFibGU7Ci0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KLQotICAgIC8vIExhemlseS1kZWNvZGVzIGVub3VnaCBvZiB0aGUg
aW1hZ2UgdG8gZ2V0IHRoZSBmcmFtZSBjb3VudCAoaWYKLSAgICAvLyBwb3NzaWJsZSksIHdpdGhv
dXQgZGVjb2RpbmcgdGhlIGluZGl2aWR1YWwgZnJhbWVzLgotICAgIC8vIEZJWE1FOiBSaWdodCBu
b3cgdGhhdCBoYXMgdG8gYmUgZG9uZSBieSBlYWNoIHN1YmNsYXNzOyBmYWN0b3IgdGhlCi0gICAg
Ly8gZGVjb2RlIGNhbGwgb3V0IGFuZCB1c2UgaXQgaGVyZS4KLSAgICB2aXJ0dWFsIHNpemVfdCBm
cmFtZUNvdW50KCkgY29uc3QgeyByZXR1cm4gMTsgfQotCi0gICAgdmlydHVhbCBSZXBldGl0aW9u
Q291bnQgcmVwZXRpdGlvbkNvdW50KCkgY29uc3QgeyByZXR1cm4gUmVwZXRpdGlvbkNvdW50Tm9u
ZTsgfQotCi0gICAgLy8gRGVjb2RlcyBhcyBtdWNoIG9mIHRoZSByZXF1ZXN0ZWQgZnJhbWUgYXMg
cG9zc2libGUsIGFuZCByZXR1cm5zIGFuCi0gICAgLy8gSW1hZ2VEZWNvZGVyLW93bmVkIHBvaW50
ZXIuCi0gICAgdmlydHVhbCBJbWFnZUZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90KSA9
IDA7Ci0KLSAgICBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90KTsKLQotICAgIC8v
IE1ha2UgdGhlIGJlc3QgZWZmb3J0IGd1ZXNzIHRvIGNoZWNrIGlmIHRoZSByZXF1ZXN0ZWQgZnJh
bWUgaGFzIGFscGhhIGNoYW5uZWwuCi0gICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChzaXpl
X3QpIGNvbnN0OwotCi0gICAgLy8gTnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBkZWNvZGVkIGZyYW1l
IHJlcXVlc3RlZC4gUmV0dXJuIDAgaWYgbm90IHlldCBkZWNvZGVkLgotICAgIHVuc2lnbmVkIGZy
YW1lQnl0ZXNBdEluZGV4KHNpemVfdCkgY29uc3Q7Ci0gICAgCi0gICAgZmxvYXQgZnJhbWVEdXJh
dGlvbkF0SW5kZXgoc2l6ZV90KTsKLSAgICAKLSAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFt
ZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVs
OjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdNb2RlOjpTeW5jaHJv
bm91cyk7Ci0KLSAgICB2b2lkIHNldElnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKGJvb2wgZmxh
ZykgeyBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlID0gZmxhZzsgfQotICAgIGJvb2wgaWdu
b3Jlc0dhbW1hQW5kQ29sb3JQcm9maWxlKCkgY29uc3QgeyByZXR1cm4gbV9pZ25vcmVHYW1tYUFu
ZENvbG9yUHJvZmlsZTsgfQotCi0gICAgSW1hZ2VPcmllbnRhdGlvbiBmcmFtZU9yaWVudGF0aW9u
QXRJbmRleChzaXplX3QpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50YXRpb247IH0KLSAgICAKLSAg
ICBib29sIGZyYW1lQWxsb3dTdWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotCi0gICAgZW51bSB7IElDQ0NvbG9yUHJvZmlsZUhlYWRlckxlbmd0aCA9IDEy
OCB9OwotCi0gICAgc3RhdGljIGJvb2wgcmdiQ29sb3JQcm9maWxlKGNvbnN0IGNoYXIqIHByb2Zp
bGVEYXRhLCB1bnNpZ25lZCBwcm9maWxlTGVuZ3RoKQotICAgIHsKLSAgICAgICAgQVNTRVJUX1VO
VVNFRChwcm9maWxlTGVuZ3RoLCBwcm9maWxlTGVuZ3RoID49IElDQ0NvbG9yUHJvZmlsZUhlYWRl
ckxlbmd0aCk7Ci0KLSAgICAgICAgcmV0dXJuICFtZW1jbXAoJnByb2ZpbGVEYXRhWzE2XSwgIlJH
QiAiLCA0KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgc2l6ZV90IGJ5dGVzRGVjb2RlZFRvRGV0ZXJt
aW5lUHJvcGVydGllcygpIHsgcmV0dXJuIDA7IH0KLSAgICAKLSAgICBzdGF0aWMgU3Vic2FtcGxp
bmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxvYXQsIFN1YnNhbXBsaW5nTGV2ZWwp
IHsgcmV0dXJuIFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQ7IH0KLQotICAgIHN0YXRpYyBib29s
IGlucHV0RGV2aWNlQ29sb3JQcm9maWxlKGNvbnN0IGNoYXIqIHByb2ZpbGVEYXRhLCB1bnNpZ25l
ZCBwcm9maWxlTGVuZ3RoKQotICAgIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChwcm9maWxlTGVu
Z3RoLCBwcm9maWxlTGVuZ3RoID49IElDQ0NvbG9yUHJvZmlsZUhlYWRlckxlbmd0aCk7Ci0KLSAg
ICAgICAgcmV0dXJuICFtZW1jbXAoJnByb2ZpbGVEYXRhWzEyXSwgIm1udHIiLCA0KSB8fCAhbWVt
Y21wKCZwcm9maWxlRGF0YVsxMl0sICJzY25yIiwgNCk7Ci0gICAgfQotCi0gICAgLy8gU2V0cyB0
aGUgImRlY29kZSBmYWlsdXJlIiBmbGFnLiBGb3IgY2FsbGVyIGNvbnZlbmllbmNlIChzaW5jZSBz
bwotICAgIC8vIG1hbnkgY2FsbGVycyB3YW50IHRvIHJldHVybiBmYWxzZSBhZnRlciBjYWxsaW5n
IHRoaXMpLCByZXR1cm5zIGZhbHNlCi0gICAgLy8gdG8gZW5hYmxlIGVhc3kgdGFpbGNhbGxpbmcu
IFN1YmNsYXNzZXMgbWF5IG92ZXJyaWRlIHRoaXMgdG8gYWxzbwotICAgIC8vIGNsZWFuIHVwIGFu
eSBsb2NhbCBkYXRhLgotICAgIHZpcnR1YWwgYm9vbCBzZXRGYWlsZWQoKQotICAgIHsKLSAgICAg
ICAgbV9lbmNvZGVkRGF0YVN0YXR1cyA9IEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcjsKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGJvb2wgZmFpbGVkKCkgY29uc3QgeyByZXR1
cm4gbV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3I7IH0KLQot
ICAgIC8vIENsZWFycyBkZWNvZGVkIHBpeGVsIGRhdGEgZnJvbSBiZWZvcmUgdGhlIHByb3ZpZGVk
IGZyYW1lIHVubGVzcyB0aGF0Ci0gICAgLy8gZGF0YSBtYXkgYmUgbmVlZGVkIHRvIGRlY29kZSBm
dXR1cmUgZnJhbWVzIChlLmcuIGR1ZSB0byBHSUYgZnJhbWUKLSAgICAvLyBjb21wb3NpdGluZyku
Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIHsgfQotCi0g
ICAgLy8gSWYgdGhlIGltYWdlIGhhcyBhIGN1cnNvciBob3Qtc3BvdCwgc3RvcmVzIGl0IGluIHRo
ZSBhcmd1bWVudAotICAgIC8vIGFuZCByZXR1cm5zIHRydWUuIE90aGVyd2lzZSByZXR1cm5zIGZh
bHNlLgotICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0
IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgdm9pZCBwcmVwYXJl
U2NhbGVEYXRhSWZOZWNlc3NhcnkoKTsKLSAgICBpbnQgdXBwZXJCb3VuZFNjYWxlZFgoaW50IG9y
aWdYLCBpbnQgc2VhcmNoU3RhcnQgPSAwKTsKLSAgICBpbnQgbG93ZXJCb3VuZFNjYWxlZFgoaW50
IG9yaWdYLCBpbnQgc2VhcmNoU3RhcnQgPSAwKTsKLSAgICBpbnQgdXBwZXJCb3VuZFNjYWxlZFko
aW50IG9yaWdZLCBpbnQgc2VhcmNoU3RhcnQgPSAwKTsKLSAgICBpbnQgbG93ZXJCb3VuZFNjYWxl
ZFkoaW50IG9yaWdZLCBpbnQgc2VhcmNoU3RhcnQgPSAwKTsKLSAgICBpbnQgc2NhbGVkWShpbnQg
b3JpZ1ksIGludCBzZWFyY2hTdGFydCA9IDApOwotCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
bV9kYXRhOyAvLyBUaGUgZW5jb2RlZCBkYXRhLgotICAgIFZlY3RvcjxJbWFnZUZyYW1lLCAxPiBt
X2ZyYW1lQnVmZmVyQ2FjaGU7Ci0gICAgYm9vbCBtX3NjYWxlZCB7IGZhbHNlIH07Ci0gICAgVmVj
dG9yPGludD4gbV9zY2FsZWRDb2x1bW5zOwotICAgIFZlY3RvcjxpbnQ+IG1fc2NhbGVkUm93czsK
LSAgICBib29sIG1fcHJlbXVsdGlwbHlBbHBoYTsKLSAgICBib29sIG1faWdub3JlR2FtbWFBbmRD
b2xvclByb2ZpbGU7Ci0gICAgSW1hZ2VPcmllbnRhdGlvbiBtX29yaWVudGF0aW9uOwotCi1wcml2
YXRlOgotICAgIHZpcnR1YWwgdm9pZCB0cnlEZWNvZGVTaXplKGJvb2wpID0gMDsKLQotICAgIElu
dFNpemUgbV9zaXplOwotICAgIEVuY29kZWREYXRhU3RhdHVzIG1fZW5jb2RlZERhdGFTdGF0dXMg
eyBFbmNvZGVkRGF0YVN0YXR1czo6VHlwZUF2YWlsYWJsZSB9OwotICAgIGJvb2wgbV9kZWNvZGlu
Z1NpemVGcm9tU2V0RGF0YSB7IGZhbHNlIH07Ci0jaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9X
Tl9TQU1QTElORykKLSAgICBzdGF0aWMgY29uc3QgaW50IG1fbWF4TnVtUGl4ZWxzIHsgMTAyNCAq
IDEwMjQgfTsKLSNlbHNlCi0gICAgc3RhdGljIGNvbnN0IGludCBtX21heE51bVBpeGVscyB7IC0x
IH07Ci0jZW5kaWYKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdl
RGVjb2Rlci5jcHAKaW5kZXggMTNiNWMwODBjYzcuLjUzOTg2ZWMxYWNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1Q
SW1hZ2VEZWNvZGVyLmNwcApAQCAtNDAsOCArNDAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAv
LyBkb24ndCBwYWNrKS4KIHN0YXRpYyBjb25zdCBzaXplX3Qgc2l6ZU9mRmlsZUhlYWRlciA9IDE0
OwogCi1CTVBJbWFnZURlY29kZXI6OkJNUEltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9w
dGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pCi0gICAgOiBJbWFnZURlY29kZXIoYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uKQorQk1QSW1hZ2VEZWNvZGVyOjpCTVBJbWFnZURlY29kZXIoU2hhcmVkQnVmZmVyJiBk
YXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24g
Z2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCisgICAgOiBJbWFnZURlY29kZXIoZGF0YSwgYWxw
aGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgICwgbV9kZWNvZGVkT2Zm
c2V0KDApCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgKaW5kZXggYzYyNzY5MGE4MzAuLjYy
MDc3Mjg5MTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oCkBAIC0zNyw5ICszNyw5IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAvLyBUaGlzIGNsYXNzIGRlY29kZXMgdGhlIEJNUCBpbWFn
ZSBmb3JtYXQuCiAgICAgY2xhc3MgQk1QSW1hZ2VEZWNvZGVyIGZpbmFsIDogcHVibGljIEltYWdl
RGVjb2RlciB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUmVmPEltYWdlRGVjb2Rlcj4g
Y3JlYXRlKEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
biBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKKyAgICAgICAgc3RhdGljIFJlZjxJbWFnZURl
Y29kZXI+IGNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9u
LCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikK
ICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQk1QSW1hZ2VEZWNv
ZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOworICAgICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQk1QSW1hZ2VEZWNvZGVyKGRhdGEsIGFscGhhT3B0aW9u
LCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogICAgICAgICB9CiAKICAgICAgICAgLy8g
SW1hZ2VEZWNvZGVyCkBAIC01Miw3ICs1Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgYm9vbCBzZXRGYWlsZWQoKSBvdmVycmlkZTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEJN
UEltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwor
ICAgICAgICBCTVBJbWFnZURlY29kZXIoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwg
R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgICAgICB2b2lkIHRyeURlY29kZVNpemUo
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlIHsgZGVjb2RlKHRydWUsIGFsbERhdGFSZWNl
aXZlZCk7IH0KIAogICAgICAgICBpbmxpbmUgdWludDMyX3QgcmVhZFVpbnQzMihpbnQgb2Zmc2V0
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBmZDBjYzc1MDk5Zi4uOTZh
MWNmMTg4NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCkBAIC0zMSw4ICszMSw4IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotR0lGSW1hZ2VEZWNvZGVyOjpHSUZJbWFnZURlY29k
ZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQotICAgIDogSW1hZ2VEZWNvZGVyKGFscGhhT3B0aW9u
LCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK0dJRkltYWdlRGVjb2Rlcjo6R0lGSW1hZ2VE
ZWNvZGVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAgIDog
SW1hZ2VEZWNvZGVyKGRhdGEsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCmluZGV4IGQ2Y2JhMzlkYmJlLi5iNTJm
NDUzNDgxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaApAQCAtMzUsOSArMzUsOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgLy8gVGhpcyBjbGFzcyBkZWNvZGVzIHRoZSBHSUYgaW1hZ2Ug
Zm9ybWF0LgogICAgIGNsYXNzIEdJRkltYWdlRGVjb2RlciBmaW5hbCA6IHB1YmxpYyBJbWFnZURl
Y29kZXIgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXI+IGNy
ZWF0ZShBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24g
Z2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCisgICAgICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNv
ZGVyPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwg
R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdJRkltYWdlRGVjb2Rl
cihhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKKyAgICAgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IEdJRkltYWdlRGVjb2RlcihkYXRhLCBhbHBoYU9wdGlvbiwg
Z2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKICAgICAgICAgfQogCiAgICAgICAgIHZpcnR1
YWwgfkdJRkltYWdlRGVjb2RlcigpOwpAQCAtNjMsNyArNjMsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHZvaWQgZ2lmQ29tcGxldGUoKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAg
IEdJRkltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
OworICAgICAgICBHSUZJbWFnZURlY29kZXIoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlv
biwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgICAgICB2b2lkIHRyeURlY29kZVNp
emUoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlIHsgZGVjb2RlKDAsIEdJRlNpemVRdWVy
eSwgYWxsRGF0YVJlY2VpdmVkKTsgfQogCiAgICAgICAgIC8vIElmIHRoZSBxdWVyeSBpcyBHSUZG
dWxsUXVlcnksIGRlY29kZXMgdGhlIGltYWdlIHVwIHRvIChidXQgbm90CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFn
ZURlY29kZXIuY3BwCmluZGV4IDM2M2FlMjgzZDM0Li42ZGNlOTgxMDIyOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lD
T0ltYWdlRGVjb2Rlci5jcHAKQEAgLTQ0LDggKzQ0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
c3RhdGljIGNvbnN0IHNpemVfdCBzaXplT2ZEaXJlY3RvcnkgPSA2Owogc3RhdGljIGNvbnN0IHNp
emVfdCBzaXplT2ZEaXJFbnRyeSA9IDE2OwogCi1JQ09JbWFnZURlY29kZXI6OklDT0ltYWdlRGVj
b2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24g
Z2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCi0gICAgOiBJbWFnZURlY29kZXIoYWxwaGFPcHRp
b24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorSUNPSW1hZ2VEZWNvZGVyOjpJQ09JbWFn
ZURlY29kZXIoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCisgICAg
OiBJbWFnZURlY29kZXIoZGF0YSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKQogICAgICwgbV9kZWNvZGVkT2Zmc2V0KDApCiB7CiB9CkBAIC02OSwxMiArNjksMTIgQEAg
dm9pZCBJQ09JbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFs
bERhdGFSZWNlaXZlZCkKICAgICAgICAgc2V0RGF0YUZvclBOR0RlY29kZXJBdEluZGV4KGkpOwog
fQogCi1JbnRTaXplIElDT0ltYWdlRGVjb2Rlcjo6c2l6ZSgpCitJbnRTaXplIElDT0ltYWdlRGVj
b2Rlcjo6c2l6ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZnJhbWVTaXplLmlzRW1wdHkoKSA/
IEltYWdlRGVjb2Rlcjo6c2l6ZSgpIDogbV9mcmFtZVNpemU7CiB9CiAKLUludFNpemUgSUNPSW1h
Z2VEZWNvZGVyOjpmcmFtZVNpemVBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZl
bCkKK0ludFNpemUgSUNPSW1hZ2VEZWNvZGVyOjpmcmFtZVNpemVBdEluZGV4KHNpemVfdCBpbmRl
eCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3QKIHsKICAgICByZXR1cm4gKGluZGV4ICYmIChpbmRl
eCA8IG1fZGlyRW50cmllcy5zaXplKCkpKSA/IG1fZGlyRW50cmllc1tpbmRleF0ubV9zaXplIDog
c2l6ZSgpOwogfQpAQCAtMjA4LDcgKzIwOCw3IEBAIGJvb2wgSUNPSW1hZ2VEZWNvZGVyOjpkZWNv
ZGVBdEluZGV4KHNpemVfdCBpbmRleCkKICAgICB9CiAKICAgICBpZiAoIW1fcG5nRGVjb2RlcnNb
aW5kZXhdKSB7Ci0gICAgICAgIG1fcG5nRGVjb2RlcnNbaW5kZXhdID0gUE5HSW1hZ2VEZWNvZGVy
OjpjcmVhdGUobV9wcmVtdWx0aXBseUFscGhhID8gQWxwaGFPcHRpb246OlByZW11bHRpcGxpZWQg
OiBBbHBoYU9wdGlvbjo6Tm90UHJlbXVsdGlwbGllZCwgbV9pZ25vcmVHYW1tYUFuZENvbG9yUHJv
ZmlsZSA/IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uOjpJZ25vcmVkIDogR2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb246OkFwcGxpZWQpOworICAgICAgICBtX3BuZ0RlY29kZXJzW2luZGV4XSA9
IFBOR0ltYWdlRGVjb2Rlcjo6Y3JlYXRlKCptX2RhdGEsIG1fcHJlbXVsdGlwbHlBbHBoYSA/IEFs
cGhhT3B0aW9uOjpQcmVtdWx0aXBsaWVkIDogQWxwaGFPcHRpb246Ok5vdFByZW11bHRpcGxpZWQs
IG1faWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUgPyBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bjo6SWdub3JlZCA6IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uOjpBcHBsaWVkKTsKICAgICAg
ICAgc2V0RGF0YUZvclBOR0RlY29kZXJBdEluZGV4KGluZGV4KTsKICAgICB9CiAgICAgLy8gRmFp
bCBpZiB0aGUgc2l6ZSB0aGUgUE5HSW1hZ2VEZWNvZGVyIGNhbGN1bGF0ZWQgZG9lcyBub3QgbWF0
Y2ggdGhlIHNpemUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAppbmRleCBlNGJiNjBiOTg4MS4uMjZj
OGI3MjczMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgKQEAgLTM2LDkgKzM2LDkgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIC8vIFRoaXMgY2xhc3MgZGVjb2RlcyB0aGUgSUNPIGFuZCBD
VVIgaW1hZ2UgZm9ybWF0cy4KICAgICBjbGFzcyBJQ09JbWFnZURlY29kZXIgZmluYWwgOiBwdWJs
aWMgSW1hZ2VEZWNvZGVyIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBSZWY8SW1hZ2VE
ZWNvZGVyPiBjcmVhdGUoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAgICAgICBzdGF0aWMgUmVm
PEltYWdlRGVjb2Rlcj4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxw
aGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJQ09J
bWFnZURlY29kZXIoYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7Cisg
ICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJQ09JbWFnZURlY29kZXIoZGF0YSwgYWxw
aGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CiAgICAgICAgIH0KIAogICAg
ICAgICB2aXJ0dWFsIH5JQ09JbWFnZURlY29kZXIoKTsKQEAgLTQ2LDggKzQ2LDggQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICAvLyBJbWFnZURlY29kZXIKICAgICAgICAgU3RyaW5nIGZp
bGVuYW1lRXh0ZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQVNDSUlMaXRlcmFsKCJp
Y28iKTsgfQogICAgICAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpIG92ZXJyaWRlOwotICAgICAgICBJbnRTaXplIHNpemUoKSBvdmVycmlkZTsKLSAg
ICAgICAgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCkg
b3ZlcnJpZGU7CisgICAgICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgICAg
ICBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsKSBjb25z
dCBvdmVycmlkZTsKICAgICAgICAgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUmKSBvdmVycmlk
ZTsKICAgICAgICAgc2l6ZV90IGZyYW1lQ291bnQoKSBjb25zdCBvdmVycmlkZTsKICAgICAgICAg
SW1hZ2VGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCkgb3ZlcnJpZGU7CkBAIC03Niw3
ICs3Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHVpbnQzMl90IG1faW1h
Z2VPZmZzZXQ7CiAgICAgICAgIH07CiAKLSAgICAgICAgSUNPSW1hZ2VEZWNvZGVyKEFscGhhT3B0
aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgICAgIElDT0ltYWdlRGVjb2Rl
cihTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbik7CiAgICAgICAgIHZvaWQgdHJ5RGVjb2RlU2l6ZShib29sIGFsbERhdGFSZWNlaXZlZCkg
b3ZlcnJpZGUgeyBkZWNvZGUoMCwgdHJ1ZSwgYWxsRGF0YVJlY2VpdmVkKTsgfQogCiAgICAgICAg
IC8vIFJldHVybnMgdHJ1ZSBpZiB8YXwgaXMgYSBwcmVmZXJhYmxlIGljb24gZW50cnkgdG8gfGJ8
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBl
Zy9KUEVHSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggODZhZTA0Y2Y2MGYuLjNmNTky
MmVhOGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTUwMSw4ICs1MDEs
OCBAQCB2b2lkIHRlcm1fc291cmNlKGpfZGVjb21wcmVzc19wdHIgamQpCiAgICAgc3JjLT5kZWNv
ZGVyLT5kZWNvZGVyKCktPmpwZWdDb21wbGV0ZSgpOwogfQogCi1KUEVHSW1hZ2VEZWNvZGVyOjpK
UEVHSW1hZ2VEZWNvZGVyKEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKLSAgICA6IEltYWdlRGVjb2Rl
cihhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitKUEVHSW1hZ2VEZWNv
ZGVyOjpKUEVHSW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxw
aGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uKQorICAgIDogSW1hZ2VEZWNvZGVyKGRhdGEsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaAppbmRl
eCA1YTQ2ZGZmZmFkMy4uMWRjMTBjYmFlNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5o
CkBAIC00Myw5ICs0Myw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAvLyBUaGlzIGNsYXNz
IGRlY29kZXMgdGhlIEpQRUcgaW1hZ2UgZm9ybWF0LgogICAgIGNsYXNzIEpQRUdJbWFnZURlY29k
ZXIgZmluYWwgOiBwdWJsaWMgSW1hZ2VEZWNvZGVyIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0
YXRpYyBSZWY8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAg
ICAgICBzdGF0aWMgUmVmPEltYWdlRGVjb2Rlcj4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwg
QWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBKUEVHSW1hZ2VEZWNvZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbikpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSlBFR0ltYWdl
RGVjb2RlcihkYXRhLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsK
ICAgICAgICAgfQogCiAgICAgICAgIHZpcnR1YWwgfkpQRUdJbWFnZURlY29kZXIoKTsKQEAgLTcx
LDcgKzcxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldE9yaWVudGF0
aW9uKEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9yaWVu
dGF0aW9uOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBKUEVHSW1hZ2VEZWNvZGVyKEFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgICAgIEpQRUdJbWFnZURl
Y29kZXIoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pOwogICAgICAgICB2b2lkIHRyeURlY29kZVNpemUoYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpIG92ZXJyaWRlIHsgZGVjb2RlKHRydWUsIGFsbERhdGFSZWNlaXZlZCk7IH0KIAogICAgICAg
ICAvLyBEZWNvZGVzIHRoZSBpbWFnZS4gIElmIHxvbmx5U2l6ZXwgaXMgdHJ1ZSwgc3RvcHMgZGVj
b2RpbmcgYWZ0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggODA3MGY2NDlmZjYu
LmViNzc3YWE4YzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcApAQCAtMjAxLDggKzIw
MSw4IEBAIHByaXZhdGU6CiAgICAgcG5nX2J5dGVwIG1faW50ZXJsYWNlQnVmZmVyOwogfTsKIAot
UE5HSW1hZ2VEZWNvZGVyOjpQTkdJbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24s
IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQot
ICAgIDogSW1hZ2VEZWNvZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bikKK1BOR0ltYWdlRGVjb2Rlcjo6UE5HSW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwg
QWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAgIDogSW1hZ2VEZWNvZGVyKGRhdGEsIGFscGhhT3B0
aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICAsIG1fZG9Ob3RoaW5nT25GYWls
dXJlKGZhbHNlKQogICAgICwgbV9jdXJyZW50RnJhbWUoMCkKICNpZiBFTkFCTEUoQVBORykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJ
bWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3Bu
Zy9QTkdJbWFnZURlY29kZXIuaAppbmRleCAwM2UxZmJjMzFjYS4uNzU4ODFiODUxODIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFn
ZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9w
bmcvUE5HSW1hZ2VEZWNvZGVyLmgKQEAgLTM3LDkgKzM3LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIC8vIFRoaXMgY2xhc3MgZGVjb2RlcyB0aGUgUE5HIGltYWdlIGZvcm1hdC4KICAgICBj
bGFzcyBQTkdJbWFnZURlY29kZXIgZmluYWwgOiBwdWJsaWMgSW1hZ2VEZWNvZGVyIHsKICAgICBw
dWJsaWM6Ci0gICAgICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoQWxwaGFPcHRp
b24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKQorICAgICAgICBzdGF0aWMgUmVmPEltYWdlRGVjb2Rlcj4gY3JlYXRlKFNo
YXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgICAgICB7Ci0gICAg
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQTkdJbWFnZURlY29kZXIoYWxwaGFPcHRpb24s
IGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBQTkdJbWFnZURlY29kZXIoZGF0YSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKSk7CiAgICAgICAgIH0KIAogICAgICAgICB2aXJ0dWFsIH5QTkdJbWFnZURl
Y29kZXIoKTsKQEAgLTg4LDcgKzg4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB9
CiAKICAgICBwcml2YXRlOgotICAgICAgICBQTkdJbWFnZURlY29kZXIoQWxwaGFPcHRpb24sIEdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICAgICAgUE5HSW1hZ2VEZWNvZGVyKFNoYXJl
ZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsK
ICAgICAgICAgdm9pZCB0cnlEZWNvZGVTaXplKGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBvdmVycmlk
ZSB7IGRlY29kZSh0cnVlLCAwLCBhbGxEYXRhUmVjZWl2ZWQpOyB9CiAKICAgICAgICAgLy8gRGVj
b2RlcyB0aGUgaW1hZ2UuICBJZiB8b25seVNpemV8IGlzIHRydWUsIHN0b3BzIGRlY29kaW5nIGFm
dGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93
ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA0OGNmNWFkMzZiNC4uZWJi
Y2Y1MzZkYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcApAQCAtNDUsOCArNDUs
OCBAQCBpbmxpbmUgV0VCUF9DU1BfTU9ERSBvdXRwdXRNb2RlKGJvb2wgaGFzQWxwaGEpIHsgcmV0
dXJuIGhhc0FscGhhID8gTU9ERV9iZ3JBIDogTQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdF
QlBJbWFnZURlY29kZXI6OldFQlBJbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24s
IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQot
ICAgIDogSW1hZ2VEZWNvZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bikKK1dFQlBJbWFnZURlY29kZXI6OldFQlBJbWFnZURlY29kZXIoU2hhcmVkQnVmZmVyJiBkYXRh
LCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCisgICAgOiBJbWFnZURlY29kZXIoZGF0YSwgYWxwaGFP
cHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgICwgbV9kZWNvZGVyKDApCiAg
ICAgLCBtX2hhc0FscGhhKGZhbHNlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaAppbmRl
eCBkNzk1NmYwY2EwMS4uYzczNTQ3ODJmZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5o
CkBAIC0zOCw5ICszOCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV0VCUEltYWdl
RGVjb2RlciBmaW5hbCA6IHB1YmxpYyBJbWFnZURlY29kZXIgewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAgIHN0
YXRpYyBSZWY8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9w
dGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXRUJQ
SW1hZ2VEZWNvZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXRUJQSW1hZ2VEZWNvZGVyKGRhdGEsIGFscGhh
T3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogICAgIH0KIAogICAgIHZpcnR1
YWwgfldFQlBJbWFnZURlY29kZXIoKTsKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIElt
YWdlRnJhbWUqIGZyYW1lQnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpIG92ZXJyaWRlOwogCiBw
cml2YXRlOgotICAgIFdFQlBJbWFnZURlY29kZXIoQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKTsKKyAgICBXRUJQSW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwg
QWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKICAgICB2b2lkIHRyeURl
Y29kZVNpemUoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlIHsgZGVjb2RlKHRydWUsIGFs
bERhdGFSZWNlaXZlZCk7IH0KIAogICAgIGJvb2wgZGVjb2RlKGJvb2wgb25seVNpemUsIGJvb2wg
YWxsRGF0YVJlY2VpdmVkKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311866</attachid>
            <date>2017-06-02 14:55:53 -0700</date>
            <delta_ts>2017-06-02 15:15:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk172773.patch</filename>
            <type>text/plain</type>
            <size>66541</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkMmZiZmY3MzhmNi4uYjg0NDJmNDM2ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDIgQEAKKzIwMTctMDUtMzEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdh
QGFwcGxlLmNvbT4KKworICAgICAgICBIYXZlIGEgc2luZ2xlIEltYWdlRGVjb2RlciBoZWFkZXIg
ZmlsZSBmb3IgYWxsIHBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzI3NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBbnkgY2hhbmdlIGluIHRoZSBkZWZpbml0aW9uIG9mIEltYWdlRGVjb2RlciBo
YXMgYmVlbiBhbm5veWluZyBzaW5jZSBpdCAKKyAgICAgICAgbWVhbnMgZG9pbmcgdGhlIHNhbWUg
Y2hhbmdlIGluIHRocmVlIGhlYWRlciBmaWxlcy4gVGhpcyBwYXRjaCB3aWxsIGNvbWJpbmUKKyAg
ICAgICAgdGhlbSBpbiBvbmUgaGVhZGVyIGZpbGUgYnV0IGl0IGhhcyB0aGVzZSBkcmF3YmFja3M6
CisKKyAgICAgICAgLS0gU29tZSBvZiB0aGUgSW1hZ2VEZW9jZGVyIGZ1bmN0aW9ucyB3ZXJlIG1h
ZGUgbm9uLWNvbnN0IGJlY2F1c2UgdGhlIEdUSworICAgICAgICBkZWNvZGVyIGNhbGxzIGZyYW1l
QnVmZmVyQXRJbmRleCgpLCB3aGljaCBpcyBub24tY29uc3QgYW5kIGNhbid0IGJlIG1hZGUKKyAg
ICAgICAgY29zdCwgaW4gdGhlc2UgZnVuY3Rpb25zLgorCisgICAgICAgIC0tIFNvbWUgb2YgdGhl
IEltYWdlRGVjb2RlciBpbi1saW5lIGZ1bmN0aW9ucyB3ZXJlIG1vdmVkIGZyb20gdGhlIGhlYWRl
cgorICAgICAgICBmaWxlIHRvIHRoZSBzb3VyY2UgZmlsZXMgYmVjYXVzZSB0aGUgcGxhdGZvcm1z
IGhhdmUgZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucy4KKworICAgICAgICAtLSBTb21lIG9mIHRo
ZSBJbWFnZURlb2NkZXIgZnVuY3Rpb25zIHdlcmUgbWFkZSB2aXJ0dWFsIGJlY2F1c2UgdGhlIEdU
SworICAgICAgICBkZWNvZGVyIGNvbnNpZGVycyBJbWFnZURlb2NkZXIgdGhlIGJhc2UgY2xhc3Mg
b2YgYWxsIHRoZSBkZWNvZGVycyBhbmQgZWFjaAorICAgICAgICBkZXJpdmVkIGNsYXNzIG92ZXJy
aWRlcyB0aGVzZSBmdW5jdGlvbiB0byBoYW5kbGUgdGhlIGltYWdlIGZvcm1hdCBkaWZmZXJlbnRs
eS4KKworICAgICAgICAtLSBUaGUgaGVhZGVyIGZpbGUgc2l6ZSBiZWNvbWVzIGxhcmdlciBzaW5j
ZSBpdCBpbmNsdWRlcyBhbGwgdGhlIHNwZWNpZmljCisgICAgICAgIG1lbWJlcnMgZm9yIGFsbCBw
bGF0Zm9ybXMuIFRoaXMgY2FuIGJlIGVhc2lseSBjbGVhbmVkIHVwIGxhdGVyLgorCisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RGVjb2Rlcjo6fkltYWdlRGVjb2Rlcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6
OmlzU2l6ZUF2YWlsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmNsZWFy
RnJhbWVCdWZmZXJDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnNldFBy
ZW11bHRpcGx5QWxwaGEpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpwcmVtdWx0
aXBseUFscGhhKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c2V0SWdub3JlR2Ft
bWFBbmRDb2xvclByb2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjppZ25v
cmVzR2FtbWFBbmRDb2xvclByb2ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
OjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c2NhbGVkU2l6ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZhaWxlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVNvdXJjZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VU
eXBlcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRGVjb2Rlcjo6aXNBbGxEYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRGVjb2Rlcjo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUhhc0FscGhhQXRJbmRleCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oOiBSZW1vdmVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXI6OkltYWdlRGVjb2Rlcik6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjppc0FsbERhdGFSZWNlaXZl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1lSXNDb21wbGV0ZUF0SW5k
ZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1lSGFzQWxwaGFBdEluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5k
ZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3Qy
RC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVj
b2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OkltYWdlRGVjb2Rlcik6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZURlY29kZXI6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnNldERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVyOjppc0FsbERhdGFSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bWFnZURlY29kZXI6OmVuY29kZWREYXRhU3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RGVjb2Rlcjo6c2V0RmFpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6Zmls
ZW5hbWVFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzZXRTaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6ZnJhbWVDb3VudCk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnJlcGV0aXRpb25Db3VudCk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZURlY29kZXI6OmhvdFNwb3QpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNv
ZGVyOjpmcmFtZUhhc0FscGhhQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29k
ZXI6OmZyYW1lQnl0ZXNBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6
ZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVy
OjpmcmFtZVNpemVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6ZnJh
bWVBbGxvd1N1YnNhbXBsaW5nQXRJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29k
ZXI6OnByZXBhcmVTY2FsZURhdGFJZk5lY2Vzc2FyeSk6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCTVBJbWFnZURlY29kZXI6OkJNUEltYWdlRGVjb2Rlcik6CisgICAgICAgICogcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R0lGSW1hZ2VEZWNvZGVyOjpHSUZJbWFnZURlY29kZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OklDT0ltYWdlRGVjb2Rlcjo6SUNPSW1hZ2VEZWNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OklDT0ltYWdlRGVjb2Rlcjo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpJQ09JbWFnZURlY29k
ZXI6OmZyYW1lU2l6ZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6SUNPSW1hZ2VEZWNvZGVy
OjpkZWNvZGVBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28v
SUNPSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBl
Zy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpQRUdJbWFnZURlY29k
ZXI6OkpQRUdJbWFnZURlY29kZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UE5HSW1hZ2VE
ZWNvZGVyOjpQTkdJbWFnZURlY29kZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V0VCUElt
YWdlRGVjb2Rlcjo6V0VCUEltYWdlRGVjb2Rlcik6CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmg6CisKIDIwMTctMDUtMzAgIFNhbSBXZWlu
aWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZlcnQgYWNjaWRlbnRhbGx5IGNoZWNr
ZWQgaW4gY2hhbmdlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDg2YTI2YTg0YWRmLi5iMGQ3YTM2ZTVmYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjUwMCwx
MCArMjUwMCwxMCBAQAogCQk1M0VGNzY2QzE2NTMxOTk0MDA0Q0JFNDkgLyogU2V0dGluZ3NNYWNy
b3MuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUzRUY3NjZBMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oICov
OyB9OwogCQk1NTBBMEJDOTA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTBBMEJDNzA4NUY2
MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgKi87IH07CiAJCTU1MEEwQkNBMDg1RjYw
MzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVk
TmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTU1MzRFRTkyMUVERTU2OEQwMDgxOEMwNCAvKiBJbWFnZURlY29kZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MzRFRTkxMUVERTU2ODkwMDgxOEMw
NCAvKiBJbWFnZURlY29kZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk1NTUwQ0I0MjFFOTU1RTNDMDAxMTFBQTAgLyogSW1hZ2VUeXBlcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTU1MENCNDExRTk1
NUUzQzAwMTExQUEwIC8qIEltYWdlVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk1NTUxMzAwMTFFN0NDQ0NCMDBBNjlFMzggLyogRGVjb2Rp
bmdPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NTUxMzAwMDFFN0NDQ0NBMDBBNjlFMzggLyogRGVjb2RpbmdPcHRpb25zLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTU1Qjg3RUMxQ0FBRjBB
QjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1NUI4N0VBMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURl
Y29kZXJDRy5jcHAgKi87IH07Ci0JCTU1NUI4N0VEMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURl
Y29kZXJDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTU1Qjg3RUIxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmggKi87IH07CiAJCTU1
NzZBNTY0MUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1NzZBNTYyMUQ4OEE3MDgwMENDQzA0QyAv
KiBJbWFnZUZyYW1lLmNwcCAqLzsgfTsKIAkJNTU3NkE1NjUxRDg4QTcwODAwQ0NDMDRDIC8qIElt
YWdlRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDU1NzZBNTYzMUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTU5N0Y4MjYxRDkxQzMxMzAwNjZC
QzIxIC8qIEltYWdlRnJhbWVDYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1NTk3RjgyNDFEOTFDMzEzMDA2NkJDMjEgLyogSW1hZ2VGcmFtZUNh
Y2hlLmNwcCAqLzsgfTsKQEAgLTEwMjcxLDEwICsxMDI3MSwxMCBAQAogCQk1M0VGNzY2QTE2NTMw
QTYxMDA0Q0JFNDkgLyogU2V0dGluZ3NNYWNyb3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2V0dGluZ3NNYWNyb3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTUwQTBCQzcwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUXVhbGlmaWVkTmFt
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAw
OyB9OwogCQk1NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBRdWFsaWZpZWRO
YW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAw
OyB9OworCQk1NTM0RUU5MTFFREU1Njg5MDA4MThDMDQgLyogSW1hZ2VEZWNvZGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEltYWdlRGVjb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
NTUwQ0I0MTFFOTU1RTNDMDAxMTFBQTAgLyogSW1hZ2VUeXBlcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbWFnZVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTU1NTEzMDAwMUU3Q0NDQ0EwMEE2OUUzOCAvKiBEZWNvZGluZ09wdGlvbnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVjb2RpbmdPcHRpb25zLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTU1NUI4N0VBMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29k
ZXJDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZURlY29k
ZXJDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU1NUI4N0VCMUNBQUYwQUIw
MDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBJbWFnZURlY29kZXJDRy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTc2
QTU2MjFEODhBNzA4MDBDQ0MwNEMgLyogSW1hZ2VGcmFtZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUZyYW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTU3NkE1NjMxRDg4QTcwODAwQ0NDMDRDIC8qIEltYWdlRnJhbWUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1NTk3RjgyNDFEOTFDMzEzMDA2NkJDMjEgLyogSW1hZ2VGcmFtZUNhY2hl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlRnJhbWVDYWNo
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzA1NCw3ICsyMzA1NCw2IEBA
CiAJCQkJMjJCRDlGODAxMzUzNjRGRTAwOUJEMTAyIC8qIEltYWdlQnVmZmVyRGF0YUNHLmggKi8s
CiAJCQkJQjI3NTM1MzAwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlQ0cuY3BwICovLAogCQkJCTU1
NUI4N0VBMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5jcHAgKi8sCi0JCQkJNTU1
Qjg3RUIxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmggKi8sCiAJCQkJNEIzNDgw
OTIwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0cuaCAqLywKIAkJCQk0QjM0ODA5MTBF
RUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VDR01hYy5tbSAqLywKIAkJCQlCMjc1MzUzMjBC
MDUzODE0MDAyQ0U2NEYgLyogSW50UG9pbnRDRy5jcHAgKi8sCkBAIC0yMzIyOCw2ICsyMzIyNyw3
IEBACiAJCQkJNDNEMjU5NzYxM0M4MTZGNDAwNjA4NTU5IC8qIEltYWdlQnVmZmVyLmNwcCAqLywK
IAkJCQlCMkExMEI5MTBCMzgxOEJEMDAwOTlBQTQgLyogSW1hZ2VCdWZmZXIuaCAqLywKIAkJCQky
MkJEOUY3RDEzNTM2MjVDMDA5QkQxMDIgLyogSW1hZ2VCdWZmZXJEYXRhLmggKi8sCisJCQkJNTUz
NEVFOTExRURFNTY4OTAwODE4QzA0IC8qIEltYWdlRGVjb2Rlci5oICovLAogCQkJCTU1NzZBNTYy
MUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmNwcCAqLywKIAkJCQk1NTc2QTU2MzFEODhB
NzA4MDBDQ0MwNEMgLyogSW1hZ2VGcmFtZS5oICovLAogCQkJCTU1OTdGODI0MUQ5MUMzMTMwMDY2
QkMyMSAvKiBJbWFnZUZyYW1lQ2FjaGUuY3BwICovLApAQCAtMjc2NzEsNyArMjc2NzEsNiBAQAog
CQkJCTUxMDE5MkQ2MThCNkI5QjcwMDdGQzdBMSAvKiBJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDE5MkQyMThCNkI5QUIwMDdGQzdBMSAvKiBJbWFnZUNv
bnRyb2xzUm9vdEVsZW1lbnRNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE3Nzk3OTFBMEQ2QjlE
MEMwMDM4NTFCOSAvKiBJbWFnZURhdGEuaCBpbiBIZWFkZXJzICovLAotCQkJCTU1NUI4N0VEMUNB
QUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTcy
MDVBQjYxMjM5MjkxMDAwQjE3MzgwIC8qIEltYWdlRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTU1NzZBNTY1MUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmggaW4gSGVhZGVycyAq
LywKIAkJCQk1NTk3RjgyNzFEOTFDMzEzMDA2NkJDMjEgLyogSW1hZ2VGcmFtZUNhY2hlLmggaW4g
SGVhZGVycyAqLywKQEAgLTI4MjMwLDYgKzI4MjI5LDcgQEAKIAkJCQkzMTZEQ0I0RTFFNzkxMEE2
MDAxQjVGODcgLyogSlNSVENJY2VHYXRoZXJpbmdTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MDczNzk0RUMxOUVFMzQxRTAwRTVBMDQ1IC8qIEpTUlRDSWNlU2VydmVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQkzMTZEQ0IyMDFFNzhDQTU1MDAxQjVGODcgLyogSlNSVENPZmZlckFuc3dlck9wdGlv
bnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1MzRFRTkyMUVERTU2OEQwMDgxOEMwNCAvKiBJbWFn
ZURlY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OTY5REJBMTdEMTQxNTEwMDdGRjg0MiAv
KiBKU1JUQ1BlZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzk2OURCODE3RDE0
MTUxMDA3RkY4NDIgLyogSlNSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQk1RTJDNDM3NDFCQ0YwRDc1MDAwMUUyQkUgLyogSlNSVENSdHBQYXJhbWV0ZXJzLmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2VEZWNvZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjJhZGRj
YWRjOWU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VEZWNvZGVyLmgKQEAgLTAsMCArMSwxMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYsIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IkRlY29kaW5nT3B0aW9ucy5oIgorI2lmICFVU0UoQ0cpICYmICFVU0UoRElSRUNUMkQpCisjaW5j
bHVkZSAiSW1hZ2VGcmFtZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2VuZGlmCisj
aW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgorI2luY2x1ZGUgIkltYWdlVHlwZXMuaCIKKyNp
bmNsdWRlICJJbnRQb2ludC5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJOYXRp
dmVJbWFnZS5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9UaHJl
YWRTYWZlUmVmQ291bnRlZC5oPgorCisjaWYgVVNFKENHKQordHlwZWRlZiBzdHJ1Y3QgQ0dJbWFn
ZVNvdXJjZSogQ0dJbWFnZVNvdXJjZVJlZjsKKyNlbGlmIFVTRShESVJFQ1QyRCkKK2ludGVyZmFj
ZSBJRDJEMVJlbmRlclRhcmdldDsKK2ludGVyZmFjZSBJV0lDQml0bWFwRGVjb2RlcjsKK2ludGVy
ZmFjZSBJV0lDSW1hZ2luZ0ZhY3Rvcnk7CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
ICAgIAorY2xhc3MgU2hhcmVkQnVmZmVyOworCitjbGFzcyBJbWFnZURlY29kZXIgOiBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW1hZ2VEZWNvZGVyPiB7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoSW1hZ2VEZWNvZGVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6Cisg
ICAgSW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICB2aXJ0dWFsIH5JbWFnZURlY29kZXIoKSB7IH0KKwor
ICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRh
LCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIHN0YXRpYyBz
aXplX3QgYnl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCk7CisKKyAgICBFbmNvZGVk
RGF0YVN0YXR1cyBlbmNvZGVkRGF0YVN0YXR1cygpIGNvbnN0OworICAgIGJvb2wgaXNTaXplQXZh
aWxhYmxlKCkgY29uc3QgeyByZXR1cm4gZW5jb2RlZERhdGFTdGF0dXMoKSA+PSBFbmNvZGVkRGF0
YVN0YXR1czo6U2l6ZUF2YWlsYWJsZTsgfQorICAgIHZpcnR1YWwgc2l6ZV90IGZyYW1lQ291bnQo
KSBjb25zdDsKKyAgICB2aXJ0dWFsIFJlcGV0aXRpb25Db3VudCByZXBldGl0aW9uQ291bnQoKSBj
b25zdDsKKyAgICB2aXJ0dWFsIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0OworICAg
IHZpcnR1YWwgc3RkOjpvcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0OworCisgICAg
dmlydHVhbCBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVs
ID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCkgY29uc3Q7CisgICAgYm9vbCBmcmFtZUlzQ29t
cGxldGVBdEluZGV4KHNpemVfdCk7CisgICAgSW1hZ2VPcmllbnRhdGlvbiBmcmFtZU9yaWVudGF0
aW9uQXRJbmRleChzaXplX3QpIGNvbnN0OworCisgICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5k
ZXgoc2l6ZV90KTsKKyAgICBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCk7CisgICAg
Ym9vbCBmcmFtZUFsbG93U3Vic2FtcGxpbmdBdEluZGV4KHNpemVfdCkgY29uc3Q7CisgICAgdW5z
aWduZWQgZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2Ft
cGxpbmdMZXZlbDo6RGVmYXVsdCkgY29uc3Q7CisKKyAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVG
cmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xl
dmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdNb2RlOjpTeW5j
aHJvbm91cyk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29s
IGFsbERhdGFSZWNlaXZlZCk7CisgICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSB7IH0KKworI2lm
IFVTRShDRykKKyAgICBTdHJpbmcgdXRpKCkgY29uc3Q7CisjZWxpZiBVU0UoRElSRUNUMkQpCisg
ICAgdm9pZCBzZXRUYXJnZXRDb250ZXh0KElEMkQxUmVuZGVyVGFyZ2V0Kik7CisgICAgc3RhdGlj
IElXSUNJbWFnaW5nRmFjdG9yeSogc3lzdGVtSW1hZ2luZ0ZhY3RvcnkoKTsKKyNlbHNlCisgICAg
dmlydHVhbCBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBpc1NpemVBdmFpbGFibGUoKSA/
IG1fc2l6ZSA6IEludFNpemUoKTsgfQorcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgYm9vbCBzZXRT
aXplKGNvbnN0IEludFNpemUmKTsKKyAgICBJbnRTaXplIHNjYWxlZFNpemUoKSB7IHJldHVybiBt
X3NjYWxlZCA/IEludFNpemUobV9zY2FsZWRDb2x1bW5zLnNpemUoKSwgbV9zY2FsZWRSb3dzLnNp
emUoKSkgOiBzaXplKCk7IH0KKyAgICAKKyAgICB2b2lkIHNldFByZW11bHRpcGx5QWxwaGEoYm9v
bCBwcmVtdWx0aXBseUFscGhhKSB7ICBtX3ByZW11bHRpcGx5QWxwaGEgPSBwcmVtdWx0aXBseUFs
cGhhOyB9CisgICAgYm9vbCBwcmVtdWx0aXBseUFscGhhKCkgY29uc3QgeyByZXR1cm4gbV9wcmVt
dWx0aXBseUFscGhhOyB9CisgICAgdm9pZCBzZXRJZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZShi
b29sIGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKSB7IG1faWdub3JlR2FtbWFBbmRDb2xvclBy
b2ZpbGUgPSBpZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZTsgfQorICAgIGJvb2wgaWdub3Jlc0dh
bW1hQW5kQ29sb3JQcm9maWxlKCkgY29uc3QgeyByZXR1cm4gbV9pZ25vcmVHYW1tYUFuZENvbG9y
UHJvZmlsZTsgfQorICAgIAorICAgIHZpcnR1YWwgdm9pZCB0cnlEZWNvZGVTaXplKGJvb2wpID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0RmFpbGVkKCk7CisgICAgYm9vbCBmYWlsZWQoKSBjb25z
dCB7IHJldHVybiBtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpFcnJv
cjsgfQorICAgIAorICAgIHZpcnR1YWwgSW1hZ2VGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNp
emVfdCkgPSAwOworCisgICAgdm9pZCBwcmVwYXJlU2NhbGVEYXRhSWZOZWNlc3NhcnkoKTsKKyAg
ICBpbnQgdXBwZXJCb3VuZFNjYWxlZFgoaW50IG9yaWdYLCBpbnQgc2VhcmNoU3RhcnQgPSAwKTsK
KyAgICBpbnQgbG93ZXJCb3VuZFNjYWxlZFgoaW50IG9yaWdYLCBpbnQgc2VhcmNoU3RhcnQgPSAw
KTsKKyAgICBpbnQgdXBwZXJCb3VuZFNjYWxlZFkoaW50IG9yaWdZLCBpbnQgc2VhcmNoU3RhcnQg
PSAwKTsKKyAgICBpbnQgbG93ZXJCb3VuZFNjYWxlZFkoaW50IG9yaWdZLCBpbnQgc2VhcmNoU3Rh
cnQgPSAwKTsKKyAgICBpbnQgc2NhbGVkWShpbnQgb3JpZ1ksIGludCBzZWFyY2hTdGFydCA9IDAp
OworI2VuZGlmCisKK3Byb3RlY3RlZDoKKyNpZiBVU0UoQ0cpCisgICAgUmV0YWluUHRyPENHSW1h
Z2VTb3VyY2VSZWY+IG1fbmF0aXZlRGVjb2RlcjsKKyAgICBib29sIG1faXNBbGxEYXRhUmVjZWl2
ZWQgeyBmYWxzZSB9OworI2VsaWYgVVNFKERJUkVDVDJEKQorICAgIENPTVB0cjxJV0lDQml0bWFw
RGVjb2Rlcj4gbV9uYXRpdmVEZWNvZGVyOworICAgIENPTVB0cjxJRDJEMVJlbmRlclRhcmdldD4g
bV9yZW5kZXJUYXJnZXQ7CisjZWxzZQorICAgIGJvb2wgbV9wcmVtdWx0aXBseUFscGhhOworICAg
IGJvb2wgbV9pZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZTsKKworICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IG1fZGF0YTsgLy8gVGhlIGVuY29kZWQgZGF0YS4KKyAgICBWZWN0b3I8SW1hZ2VGcmFt
ZSwgMT4gbV9mcmFtZUJ1ZmZlckNhY2hlOworICAgIEVuY29kZWREYXRhU3RhdHVzIG1fZW5jb2Rl
ZERhdGFTdGF0dXMgeyBFbmNvZGVkRGF0YVN0YXR1czo6VHlwZUF2YWlsYWJsZSB9OworICAgIGJv
b2wgbV9kZWNvZGluZ1NpemVGcm9tU2V0RGF0YSB7IGZhbHNlIH07CisKKyAgICBJbnRTaXplIG1f
c2l6ZTsKKyAgICBJbWFnZU9yaWVudGF0aW9uIG1fb3JpZW50YXRpb247CisKKyAgICBib29sIG1f
c2NhbGVkIHsgZmFsc2UgfTsKKyAgICBWZWN0b3I8aW50PiBtX3NjYWxlZENvbHVtbnM7CisgICAg
VmVjdG9yPGludD4gbV9zY2FsZWRSb3dzOworI2VuZGlmCit9OworCit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmNwcAppbmRleCBh
NzQ1ZWE4MDE2Ny4uMjBlNWY4NDA4YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmNwcApAQCAtMjcsMjMgKzI3LDE0IEBACiAj
aW5jbHVkZSAiSW1hZ2VGcmFtZUNhY2hlLmgiCiAKICNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1
ZGUgIkltYWdlRGVjb2Rlci5oIgogI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKICNpbmNsdWRl
ICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiVVJMLmgiCi0jaW5jbHVkZSA8d3RmL1N5c3RlbVRyYWNp
bmcuaD4KLQotI2lmIFVTRShDRykKLSNpbmNsdWRlICJJbWFnZURlY29kZXJDRy5oIgotI2VsaWYg
VVNFKERJUkVDVDJEKQotI2luY2x1ZGUgIkltYWdlRGVjb2RlckRpcmVjdDJELmgiCi0jaW5jbHVk
ZSA8V2luQ29kZWMuaD4KLSNlbHNlCi0jaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCi0jZW5kaWYK
LQogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9NYWlu
VGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvU3lzdGVt
VHJhY2luZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRleCAzZDQ4M2ZiOTM5Ny4uMWQ0
NjY3ODA2NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0lt
YWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZVNvdXJjZS5jcHAKQEAgLTMwLDE5ICszMCwxMiBAQAogI2luY2x1ZGUgIkltYWdlU291cmNlLmgi
CiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJJbWFnZURlY29kZXIu
aCIKKyNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCiAKLSNpZiBVU0UoQ0cpCi0jaW5jbHVk
ZSAiSW1hZ2VEZWNvZGVyQ0cuaCIKLSNpZiBQTEFURk9STShXSU4pCisjaWYgVVNFKENHKSAmJiBQ
TEFURk9STShXSU4pCiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3Rl
bUludGVyZmFjZS5oPgogI2VuZGlmCi0jZWxpZiBVU0UoRElSRUNUMkQpCi0jaW5jbHVkZSAiSW1h
Z2VEZWNvZGVyRGlyZWN0MkQuaCIKLSNlbHNlCi0jaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCi0j
ZW5kaWYKLQotI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKICNpbmNsdWRlIDx3dGYvQ3Vy
cmVudFRpbWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VUeXBlcy5oCmluZGV4IGRiNjEyMTJlMmVmLi43NTExNzNiMWE2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VUeXBl
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlVHlwZXMuaApA
QCAtMjUsMTAgKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBVU0UoQ0cpCi10eXBlZGVm
IHN0cnVjdCBDR0ltYWdlU291cmNlKiBDR0ltYWdlU291cmNlUmVmOwotI2VuZGlmCi0KIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogLy8gVGhlcmUgYXJlIGZvdXIgc3Vic2FtcGxpbmcgbGV2ZWxzOiAw
ID0gMXgsIDEgPSAwLjV4LCAyID0gMC4yNXgsIDMgPSAwLjEyNXguCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXgg
YzdlMTE0ZWYxMjcuLjQ2MDA2NDIzYWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC0yNCwxNSArMjQsMTMg
QEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSW1hZ2VEZWNvZGVyQ0cu
aCIKKyNpbmNsdWRlICJJbWFnZURlY29kZXIuaCIKIAogI2lmIFVTRShDRykKIAogI2luY2x1ZGUg
IkltYWdlSU9TUEkuaCIKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCiAjaW5jbHVkZSAi
SW1hZ2VTb3VyY2VDRy5oIgotI2luY2x1ZGUgIkludFBvaW50LmgiCi0jaW5jbHVkZSAiSW50U2l6
ZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTE2Myw2ICsxNjEsMTEgQEAgSW1hZ2VE
ZWNvZGVyOjpJbWFnZURlY29kZXIoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2Ft
bWFBbmRDb2xvclByb2ZpbGUKICAgICAgICAgbV9uYXRpdmVEZWNvZGVyID0gYWRvcHRDRihDR0lt
YWdlU291cmNlQ3JlYXRlSW5jcmVtZW50YWwobnVsbHB0cikpOwogfQogCitSZWZQdHI8SW1hZ2VE
ZWNvZGVyPiBJbWFnZURlY29kZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0
aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEltYWdlRGVjb2Rlcihk
YXRhLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKK30KKwogc2l6
ZV90IEltYWdlRGVjb2Rlcjo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCkKIHsK
ICAgICAvLyBNZWFzdXJlZCBieSB0cmFjaW5nIG1hbGxvYy9jYWxsb2MgY2FsbHMgb24gTWFjIE9T
IDEwLjYuNiwgeDg2XzY0LgpAQCAtMTczLDcgKzE3Niw3IEBAIHNpemVfdCBJbWFnZURlY29kZXI6
OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpCiAgICAgLy8gYmVoYXZpb3IgaXMg
dW5jaGFuZ2VkLgogICAgIHJldHVybiAxMzA4ODsKIH0KLSAgICAKKwogU3RyaW5nIEltYWdlRGVj
b2Rlcjo6dXRpKCkgY29uc3QKIHsKICAgICByZXR1cm4gQ0dJbWFnZVNvdXJjZUdldFR5cGUobV9u
YXRpdmVEZWNvZGVyLmdldCgpKTsKQEAgLTE4NCw2ICsxODcsMTEgQEAgU3RyaW5nIEltYWdlRGVj
b2Rlcjo6ZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdAogICAgIHJldHVybiBXZWJDb3JlOjpwcmVm
ZXJyZWRFeHRlbnNpb25Gb3JJbWFnZVNvdXJjZVR5cGUodXRpKCkpOwogfQogCitib29sIEltYWdl
RGVjb2Rlcjo6aXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX2lzQWxs
RGF0YVJlY2VpdmVkOworfQorCiBFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZURlY29kZXI6OmVuY29k
ZWREYXRhU3RhdHVzKCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKENHSW1hZ2VTb3VyY2VHZXRTdGF0
dXMobV9uYXRpdmVEZWNvZGVyLmdldCgpKSkgewpAQCAtMzAwLDcgKzMwOCw3IEBAIEludFNpemUg
SW1hZ2VEZWNvZGVyOjpmcmFtZVNpemVBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdM
ZXZlbCBzdWJzYW1wbGluCiAgICAgcmV0dXJuIEludFNpemUod2lkdGgsIGhlaWdodCk7CiB9CiAK
LWJvb2wgSW1hZ2VEZWNvZGVyOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkg
Y29uc3QKK2Jvb2wgSW1hZ2VEZWNvZGVyOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBp
bmRleCkKIHsKICAgICBBU1NFUlQoZnJhbWVDb3VudCgpKTsKICAgICAvLyBDR0ltYWdlU291cmNl
R2V0U3RhdHVzQXRJbmRleCgpIGNoYW5nZXMgdGhlIHJldHVybiBzdGF0dXMgdmFsdWUgZnJvbSBr
Q0dJbWFnZVN0YXR1c0luY29tcGxldGUKQEAgLTMyMSw3ICszMjksNyBAQCBJbWFnZU9yaWVudGF0
aW9uIEltYWdlRGVjb2Rlcjo6ZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KSBj
b25zdAogICAgIHJldHVybiBvcmllbnRhdGlvbkZyb21Qcm9wZXJ0aWVzKHByb3BlcnRpZXMuZ2V0
KCkpOwogfQogCi1mbG9hdCBJbWFnZURlY29kZXI6OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVf
dCBpbmRleCkgY29uc3QKK2Zsb2F0IEltYWdlRGVjb2Rlcjo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgo
c2l6ZV90IGluZGV4KQogewogICAgIGZsb2F0IGR1cmF0aW9uID0gMDsKICAgICBSZXRhaW5QdHI8
Q0ZEaWN0aW9uYXJ5UmVmPiBwcm9wZXJ0aWVzID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ29weVBy
b3BlcnRpZXNBdEluZGV4KG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgaW5kZXgsIGltYWdlU291cmNl
T3B0aW9ucygpLmdldCgpKSk7CkBAIC0zNzcsNyArMzg1LDcgQEAgYm9vbCBJbWFnZURlY29kZXI6
OmZyYW1lQWxsb3dTdWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBjb25zdAogICAgIHJldHVybiB0
cnVlOwogfQogCi1ib29sIEltYWdlRGVjb2Rlcjo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90
IGluZGV4KSBjb25zdAorYm9vbCBJbWFnZURlY29kZXI6OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNp
emVfdCBpbmRleCkKIHsKICAgICBpZiAoIWZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoaW5kZXgpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQwMSw3ICs0MDksNyBAQCB1bnNpZ25lZCBJbWFnZURl
Y29kZXI6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBz
dWJzYW1wbAogICAgIHJldHVybiAoZnJhbWVTaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpOwog
fQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4
KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBE
ZWNvZGluZ09wdGlvbnMmIGRlY29kaW5nT3B0aW9ucykgY29uc3QKK05hdGl2ZUltYWdlUHRyIElt
YWdlRGVjb2Rlcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1w
bGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgZGVjb2Rp
bmdPcHRpb25zKQogewogICAgIExPRyhJbWFnZXMsICJJbWFnZURlY29kZXIgJXAgY3JlYXRlRnJh
bWVJbWFnZUF0SW5kZXggJWx1IiwgdGhpcywgaW5kZXgpOwogICAgIFJldGFpblB0cjxDRkRpY3Rp
b25hcnlSZWY+IG9wdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MmMyODRlNzFmZjQuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQot
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpbmNsdWRlICJEZWNvZGluZ09wdGlvbnMuaCIKLSNpbmNsdWRlICJJbWFnZU9yaWVu
dGF0aW9uLmgiCi0jaW5jbHVkZSAiSW1hZ2VUeXBlcy5oIgotI2luY2x1ZGUgIkludFBvaW50Lmgi
Ci0jaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCi0jaW5jbHVk
ZSA8d3RmL09wdGlvbmFsLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKLSAgICAK
LWNsYXNzIEltYWdlRGVjb2RlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbWFnZURl
Y29kZXI+IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBJbWFn
ZURlY29kZXIoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pOwotCi0gICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXI+IGNyZWF0ZShTaGFy
ZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGVjb2RlcihkYXRhLCBhbHBoYU9wdGlvbiwgZ2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pKTsKLSAgICB9Ci0gICAgCi0gICAgc3RhdGljIHNpemVfdCBi
eXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKTsKLQotICAgIEVuY29kZWREYXRhU3Rh
dHVzIGVuY29kZWREYXRhU3RhdHVzKCkgY29uc3Q7Ci0gICAgYm9vbCBpc1NpemVBdmFpbGFibGUo
KSB7IHJldHVybiBlbmNvZGVkRGF0YVN0YXR1cygpID49IEVuY29kZWREYXRhU3RhdHVzOjpTaXpl
QXZhaWxhYmxlOyB9Ci0gICAgc2l6ZV90IGZyYW1lQ291bnQoKSBjb25zdDsKLSAgICBSZXBldGl0
aW9uQ291bnQgcmVwZXRpdGlvbkNvdW50KCkgY29uc3Q7Ci0gICAgU3RyaW5nIHV0aSgpIGNvbnN0
OwotICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0OwotICAgIHN0ZDo6b3B0aW9u
YWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdDsKLQotICAgIEludFNpemUgZnJhbWVTaXplQXRJ
bmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0
KSBjb25zdDsKLSAgICBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90KSBjb25zdDsK
LSAgICBJbWFnZU9yaWVudGF0aW9uIGZyYW1lT3JpZW50YXRpb25BdEluZGV4KHNpemVfdCkgY29u
c3Q7Ci0gICAgCi0gICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90KSBjb25zdDsK
LSAgICBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCkgY29uc3Q7Ci0gICAgYm9vbCBm
cmFtZUFsbG93U3Vic2FtcGxpbmdBdEluZGV4KHNpemVfdCkgY29uc3Q7Ci0gICAgdW5zaWduZWQg
ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdM
ZXZlbDo6RGVmYXVsdCkgY29uc3Q7Ci0gICAgCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJh
bWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZl
bDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nTW9kZTo6U3luY2hy
b25vdXMpIGNvbnN0OwotICAgIAotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29s
IGFsbERhdGFSZWNlaXZlZCk7Ci0gICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0KLSAgICB2b2lkIGNsZWFyRnJhbWVCdWZmZXJD
YWNoZShzaXplX3QpIHsgfQotICAgIAotcHJvdGVjdGVkOgotICAgIGJvb2wgbV9pc0FsbERhdGFS
ZWNlaXZlZCB7IGZhbHNlIH07Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VTb3VyY2VSZWY+IG1fbmF0
aXZlRGVjb2RlcjsKLX07Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCmluZGV4IDZhYmU3
ZTNlYWU1Li5iYmJiNTljMjc1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCkBAIC0yNCwx
NCArMjQsMTIgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSW1hZ2VE
ZWNvZGVyRGlyZWN0MkQuaCIKKyNpbmNsdWRlICJJbWFnZURlY29kZXIiCiAKICNpZiBVU0UoRElS
RUNUMkQpCiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbWFnZU9y
aWVudGF0aW9uLmgiCi0jaW5jbHVkZSAiSW50UG9pbnQuaCIKLSNpbmNsdWRlICJJbnRTaXplLmgi
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5j
bHVkZSAiU2hhcmVkQnVmZmVyLmgiCkBAIC00MSwxMCArMzksMTUgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1JbWFnZURlY29kZXI6OkltYWdlRGVjb2RlcigpCitJbWFnZURlY29kZXI6Oklt
YWdlRGVjb2RlcihTaGFyZWRCdWZmZXImLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pCiB7CiB9CiAKK1JlZlB0cjxJbWFnZURlY29kZXI+IGNyZWF0ZShTaGFyZWRCdWZm
ZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEltYWdlRGVjb2RlcihkYXRhLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pKTsKK30KKwogSVdJQ0ltYWdpbmdGYWN0b3J5KiBJbWFnZURlY29kZXI6OnN5c3RlbUlt
YWdpbmdGYWN0b3J5KCkKIHsKICAgICBzdGF0aWMgSVdJQ0ltYWdpbmdGYWN0b3J5KiB3aWNJbWFn
aW5nRmFjdG9yeSA9IG51bGxwdHI7CkBAIC03OSw2ICs4MiwxMiBAQCBFbmNvZGVkRGF0YVN0YXR1
cyBJbWFnZURlY29kZXI6OmVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QKICAgICByZXR1cm4gRW5j
b2RlZERhdGFTdGF0dXM6OlVua25vd247CiB9CiAKK2Jvb2wgSW1hZ2VEZWNvZGVyOjppc0FsbERh
dGFSZWNlaXZlZCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKIEludFNpemUgSW1hZ2VEZWNvZGVyOjpzaXplKCkgY29uc3QKIHsKICAgICBp
ZiAoIW1fbmF0aXZlRGVjb2RlcikKQEAgLTEzOCw3ICsxNDcsNyBAQCBJbnRTaXplIEltYWdlRGVj
b2Rlcjo6ZnJhbWVTaXplQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vi
c2FtcGxpbgogICAgIHJldHVybiBJbnRTaXplKHdpZHRoLCBoZWlnaHQpOwogfQogCi1ib29sIElt
YWdlRGVjb2Rlcjo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Citi
b29sIEltYWdlRGVjb2Rlcjo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgpCiB7
CiAgICAgaWYgKCFtX25hdGl2ZURlY29kZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE1
NCw3ICsxNjMsNyBAQCBJbWFnZU9yaWVudGF0aW9uIEltYWdlRGVjb2Rlcjo6ZnJhbWVPcmllbnRh
dGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAogICAgIHJldHVybiBJbWFnZU9yaWVudGF0
aW9uKCk7CiB9CiAKLWZsb2F0IEltYWdlRGVjb2Rlcjo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6
ZV90IGluZGV4KSBjb25zdAorZmxvYXQgSW1hZ2VEZWNvZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRl
eChzaXplX3QgaW5kZXgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gMDsK
QEAgLTE2Niw3ICsxNzUsNyBAQCBib29sIEltYWdlRGVjb2Rlcjo6ZnJhbWVBbGxvd1N1YnNhbXBs
aW5nQXRJbmRleChzaXplX3QpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSW1h
Z2VEZWNvZGVyOjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Citib29s
IEltYWdlRGVjb2Rlcjo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewogICAg
IG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xODYsNyArMTk1LDcgQEAg
dm9pZCBJbWFnZURlY29kZXI6OnNldFRhcmdldENvbnRleHQoSUQyRDFSZW5kZXJUYXJnZXQqIHJl
bmRlclRhcmdldCkKICAgICBtX3JlbmRlclRhcmdldCA9IHJlbmRlclRhcmdldDsKIH0KIAotTmF0
aXZlSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3Qg
aW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdP
cHRpb25zJikgY29uc3QKK05hdGl2ZUltYWdlUHRyIEltYWdlRGVjb2Rlcjo6Y3JlYXRlRnJhbWVJ
bWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2
ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCiB7CiAgICAgaWYgKCFtX25hdGl2ZURlY29kZXIg
fHwgIW1fcmVuZGVyVGFyZ2V0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3Qy
RC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRp
cmVjdDJELmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiZDRkNmY2N2U2Li4wMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VE
ZWNvZGVyRGlyZWN0MkQuaAorKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lu
Y2x1ZGUgIkNPTVB0ci5oIgotI2luY2x1ZGUgIkltYWdlU291cmNlLmgiCi0jaW5jbHVkZSAiSW50
U2l6ZS5oIgotI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgotCi1pbnRlcmZhY2UgSUQyRDFSZW5k
ZXJUYXJnZXQ7Ci1pbnRlcmZhY2UgSVdJQ0JpdG1hcERlY29kZXI7Ci1pbnRlcmZhY2UgSVdJQ0lt
YWdpbmdGYWN0b3J5OwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEltYWdlRGVjb2Rl
ciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbWFnZURlY29kZXI+IHsKLSAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBJbWFnZURlY29kZXIoKTsKLSAgICAK
LSAgICBzdGF0aWMgUmVmPEltYWdlRGVjb2Rlcj4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYsIEFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKLSAgICB7Ci0gICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEltYWdlRGVjb2RlcigpKTsKLSAgICB9Ci0gICAgCi0gICAgc3RhdGlj
IHNpemVfdCBieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKTsKLSAgICAKLSAgICBT
dHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdDsKLSAgICBFbmNvZGVkRGF0YVN0YXR1cyBl
bmNvZGVkRGF0YVN0YXR1cygpIGNvbnN0OwotICAgIGJvb2wgaXNTaXplQXZhaWxhYmxlKCkgY29u
c3Q7Ci0gICAgCi0gICAgLy8gQWx3YXlzIG9yaWdpbmFsIHNpemUsIHdpdGhvdXQgc3Vic2FtcGxp
bmcuCi0gICAgSW50U2l6ZSBzaXplKCkgY29uc3Q7Ci0gICAgc2l6ZV90IGZyYW1lQ291bnQoKSBj
b25zdDsKLQotICAgIFJlcGV0aXRpb25Db3VudCByZXBldGl0aW9uQ291bnQoKSBjb25zdDsKLSAg
ICBzdGQ6Om9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3Q7Ci0gICAgCi0gICAgSW50
U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBs
aW5nTGV2ZWw6OkRlZmF1bHQpIGNvbnN0OwotICAgIGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRl
eChzaXplX3QpIGNvbnN0OwotICAgIEltYWdlT3JpZW50YXRpb24gZnJhbWVPcmllbnRhdGlvbkF0
SW5kZXgoc2l6ZV90KSBjb25zdDsKLSAgICAKLSAgICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRl
eChzaXplX3QpIGNvbnN0OwotICAgIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90KSBj
b25zdDsKLSAgICBib29sIGZyYW1lQWxsb3dTdWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBjb25z
dDsKLSAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2
ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdDsKLSAgICAKLSAgICBOYXRpdmVJ
bWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwg
PSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVj
b2RpbmdNb2RlOjpTeW5jaHJvbm91cykgY29uc3Q7Ci0gICAgCi0gICAgdm9pZCBzZXREYXRhKFNo
YXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAgICBib29sIGlzQWxsRGF0YVJl
Y2VpdmVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQotICAgIHZvaWQg
Y2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgeyB9Ci0KLSAgICB2b2lkIHNldFRhcmdldENv
bnRleHQoSUQyRDFSZW5kZXJUYXJnZXQqKTsKLQotICAgIHN0YXRpYyBJV0lDSW1hZ2luZ0ZhY3Rv
cnkqIHN5c3RlbUltYWdpbmdGYWN0b3J5KCk7Ci0KLXByb3RlY3RlZDoKLSAgICBib29sIG1faXNB
bGxEYXRhUmVjZWl2ZWQgeyBmYWxzZSB9OwotICAgIG11dGFibGUgSW50U2l6ZSBtX3NpemU7Ci0g
ICAgQ09NUHRyPElXSUNCaXRtYXBEZWNvZGVyPiBtX25hdGl2ZURlY29kZXI7Ci0gICAgQ09NUHRy
PElEMkQxUmVuZGVyVGFyZ2V0PiBtX3JlbmRlclRhcmdldDsKLX07Ci0KLX0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3Bw
CmluZGV4IDRiYTRkYjJhNjIxLi5hM2M4Mzc2MDJiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCkBAIC0yOCw3
ICsyOCw2IEBACiAjaW5jbHVkZSAiSUNPSW1hZ2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiSlBFR0lt
YWdlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlBOR0ltYWdlRGVjb2Rlci5oIgotI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlci5oIgogI2lmIFVTRShXRUJQKQogI2luY2x1ZGUgIldFQlBJbWFnZURlY29kZXIu
aCIKICNlbmRpZgpAQCAtNTksNDMgKzU4LDEyIEBAIHN0YXRpYyB1bnNpZ25lZCBjb3B5RnJvbVNo
YXJlZEJ1ZmZlcihjaGFyKiBidWZmZXIsIHVuc2lnbmVkIGJ1ZmZlckxlbmd0aCwgY29uc3QKICAg
ICByZXR1cm4gYnl0ZXNFeHRyYWN0ZWQ7CiB9CiAKLWJvb2wgbWF0Y2hlc0dJRlNpZ25hdHVyZShj
aGFyKiBjb250ZW50cykKLXsKLSAgICByZXR1cm4gIW1lbWNtcChjb250ZW50cywgIkdJRjg3YSIs
IDYpIHx8ICFtZW1jbXAoY29udGVudHMsICJHSUY4OWEiLCA2KTsKLX0KLQotYm9vbCBtYXRjaGVz
UE5HU2lnbmF0dXJlKGNoYXIqIGNvbnRlbnRzKQotewotICAgIHJldHVybiAhbWVtY21wKGNvbnRl
bnRzLCAiXHg4OVx4NTBceDRFXHg0N1x4MERceDBBXHgxQVx4MEEiLCA4KTsKLX0KLQotYm9vbCBt
YXRjaGVzSlBFR1NpZ25hdHVyZShjaGFyKiBjb250ZW50cykKLXsKLSAgICByZXR1cm4gIW1lbWNt
cChjb250ZW50cywgIlx4RkZceEQ4XHhGRiIsIDMpOwogfQogCi0jaWYgVVNFKFdFQlApCi1ib29s
IG1hdGNoZXNXZWJQU2lnbmF0dXJlKGNoYXIqIGNvbnRlbnRzKQorSW1hZ2VEZWNvZGVyOjpJbWFn
ZURlY29kZXIoU2hhcmVkQnVmZmVyJiwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAgIDogbV9w
cmVtdWx0aXBseUFscGhhKGFscGhhT3B0aW9uID09IEFscGhhT3B0aW9uOjpQcmVtdWx0aXBsaWVk
KQorICAgICwgbV9pZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZShnYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbiA9PSBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbjo6SWdub3JlZCkKIHsKLSAgICBy
ZXR1cm4gIW1lbWNtcChjb250ZW50cywgIlJJRkYiLCA0KSAmJiAhbWVtY21wKGNvbnRlbnRzICsg
OCwgIldFQlBWUCIsIDYpOwotfQotI2VuZGlmCi0KLWJvb2wgbWF0Y2hlc0JNUFNpZ25hdHVyZShj
aGFyKiBjb250ZW50cykKLXsKLSAgICByZXR1cm4gIW1lbWNtcChjb250ZW50cywgIkJNIiwgMik7
Ci19Ci0KLWJvb2wgbWF0Y2hlc0lDT1NpZ25hdHVyZShjaGFyKiBjb250ZW50cykKLXsKLSAgICBy
ZXR1cm4gIW1lbWNtcChjb250ZW50cywgIlx4MDBceDAwXHgwMVx4MDAiLCA0KTsKLX0KLQotYm9v
bCBtYXRjaGVzQ1VSU2lnbmF0dXJlKGNoYXIqIGNvbnRlbnRzKQotewotICAgIHJldHVybiAhbWVt
Y21wKGNvbnRlbnRzLCAiXHgwMFx4MDBceDAyXHgwMCIsIDQpOwotfQotCiB9CiAKIFJlZlB0cjxJ
bWFnZURlY29kZXI+IEltYWdlRGVjb2Rlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxw
aGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKQpAQCAtMTA2LDI1ICs3NCwyMSBAQCBSZWZQdHI8SW1hZ2VEZWNv
ZGVyPiBJbWFnZURlY29kZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9u
IGFscGhhTwogICAgIGlmIChsZW5ndGggPCBsZW5ndGhPZkxvbmdlc3RTaWduYXR1cmUpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCi0gICAgaWYgKG1hdGNoZXNHSUZTaWduYXR1cmUoY29udGVu
dHMpKQotICAgICAgICByZXR1cm4gR0lGSW1hZ2VEZWNvZGVyOjpjcmVhdGUoYWxwaGFPcHRpb24s
IGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKLQotICAgIGlmIChtYXRjaGVzUE5HU2lnbmF0
dXJlKGNvbnRlbnRzKSkKLSAgICAgICAgcmV0dXJuIFBOR0ltYWdlRGVjb2Rlcjo6Y3JlYXRlKGFs
cGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7Ci0KLSAgICBpZiAobWF0Y2hl
c0lDT1NpZ25hdHVyZShjb250ZW50cykgfHwgbWF0Y2hlc0NVUlNpZ25hdHVyZShjb250ZW50cykp
Ci0gICAgICAgIHJldHVybiBJQ09JbWFnZURlY29kZXI6OmNyZWF0ZShhbHBoYU9wdGlvbiwgZ2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwotCi0gICAgaWYgKG1hdGNoZXNKUEVHU2lnbmF0dXJl
KGNvbnRlbnRzKSkKLSAgICAgICAgcmV0dXJuIEpQRUdJbWFnZURlY29kZXI6OmNyZWF0ZShhbHBo
YU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwotCisgICAgVmVjdG9yPHN0ZDo6
cGFpcjxSZWZQdHI8SW1hZ2VEZWNvZGVyPiAoKikoU2hhcmVkQnVmZmVyJiwgQWxwaGFPcHRpb24s
IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSwgYm9vbCAoKikoY29uc3QgY2hhciopPj4gbWF0
Y2hlcnMgPSB7CisgICAgICAgIHN0ZDo6bWFrZV9wYWlyKCZHSUZJbWFnZURlY29kZXI6OmNyZWF0
ZSwgIFtdKGNvbnN0IGNoYXIqIGNvbnRlbnRzKSB7IHJldHVybiAhbWVtY21wKGNvbnRlbnRzLCAi
R0lGODdhIiwgNikgfHwgIW1lbWNtcChjb250ZW50cywgIkdJRjg5YSIsIDYpOyB9KSwKKyAgICAg
ICAgc3RkOjptYWtlX3BhaXIoJlBOR0ltYWdlRGVjb2Rlcjo6Y3JlYXRlLCAgW10oY29uc3QgY2hh
ciogY29udGVudHMpIHsgcmV0dXJuICFtZW1jbXAoY29udGVudHMsICJceDg5XHg1MFx4NEVceDQ3
XHgwRFx4MEFceDFBXHgwQSIsIDgpOyB9KSwKKyAgICAgICAgc3RkOjptYWtlX3BhaXIoJklDT0lt
YWdlRGVjb2Rlcjo6Y3JlYXRlLCAgW10oY29uc3QgY2hhciogY29udGVudHMpIHsgcmV0dXJuICFt
ZW1jbXAoY29udGVudHMsICJceDAwXHgwMFx4MDFceDAwIiwgNCkgfHwgIW1lbWNtcChjb250ZW50
cywgIlx4MDBceDAwXHgwMlx4MDAiLCA0KTsgfSksCisgICAgICAgIHN0ZDo6bWFrZV9wYWlyKCZK
UEVHSW1hZ2VEZWNvZGVyOjpjcmVhdGUsIFtdKGNvbnN0IGNoYXIqIGNvbnRlbnRzKSB7IHJldHVy
biAhbWVtY21wKGNvbnRlbnRzLCAiXHhGRlx4RDhceEZGIiwgMyk7IH0pLAogI2lmIFVTRShXRUJQ
KQotICAgIGlmIChtYXRjaGVzV2ViUFNpZ25hdHVyZShjb250ZW50cykpCi0gICAgICAgIHJldHVy
biBXRUJQSW1hZ2VEZWNvZGVyOjpjcmVhdGUoYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKTsKKyAgICAgICAgc3RkOjptYWtlX3BhaXIoJldFQlBJbWFnZURlY29kZXI6OmNy
ZWF0ZSwgW10oY29uc3QgY2hhciogY29udGVudHMpIHsgcmV0dXJuICFtZW1jbXAoY29udGVudHMs
ICJSSUZGIiwgNCkgJiYgIW1lbWNtcChjb250ZW50cyArIDgsICJXRUJQVlAiLCA2KTsgfSksCiAj
ZW5kaWYKKyAgICAgICAgc3RkOjptYWtlX3BhaXIoJkJNUEltYWdlRGVjb2Rlcjo6Y3JlYXRlLCAg
W10oY29uc3QgY2hhciogY29udGVudHMpIHsgcmV0dXJuICFtZW1jbXAoY29udGVudHMsICJCTSIs
IDIpOyB9KQorICAgIH07CiAKLSAgICBpZiAobWF0Y2hlc0JNUFNpZ25hdHVyZShjb250ZW50cykp
Ci0gICAgICAgIHJldHVybiBCTVBJbWFnZURlY29kZXI6OmNyZWF0ZShhbHBoYU9wdGlvbiwgZ2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgIGZvciAoYXV0byYgbWF0Y2hlciA6IG1hdGNo
ZXJzKSB7CisgICAgICAgIGlmICgoKm1hdGNoZXIuc2Vjb25kKShjb250ZW50cykpCisgICAgICAg
ICAgICByZXR1cm4gKCptYXRjaGVyLmZpcnN0KShkYXRhLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24pOworICAgIH0KIAogICAgIHJldHVybiBudWxscHRyOwogfQpAQCAt
MTcwLDEzICsxMzQsOTcgQEAgdGVtcGxhdGUgPE1hdGNoVHlwZSB0eXBlPiBpbnQgZ2V0U2NhbGVk
VmFsdWUoY29uc3QgVmVjdG9yPGludD4mIHNjYWxlZFZhbHVlcywgaW4KIAogfQogCitzaXplX3Qg
SW1hZ2VEZWNvZGVyOjpieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKQoreworICAg
IHJldHVybiAwOworfQorCit2b2lkIEltYWdlRGVjb2Rlcjo6c2V0RGF0YShTaGFyZWRCdWZmZXIm
IGRhdGEsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKQoreworICAgIGlmIChtX2VuY29kZWREYXRhU3Rh
dHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcikKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9kYXRhID0gJmRhdGE7CisgICAgaWYgKG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERh
dGFTdGF0dXM6OlR5cGVBdmFpbGFibGUpIHsKKyAgICAgICAgbV9kZWNvZGluZ1NpemVGcm9tU2V0
RGF0YSA9IHRydWU7CisgICAgICAgIHRyeURlY29kZVNpemUoYWxsRGF0YVJlY2VpdmVkKTsKKyAg
ICAgICAgbV9kZWNvZGluZ1NpemVGcm9tU2V0RGF0YSA9IGZhbHNlOworICAgIH0KKworICAgIGlm
IChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKGFsbERhdGFSZWNlaXZlZCkgeworICAgICAgICBBU1NFUlQo
bV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6U2l6ZUF2YWlsYWJsZSk7
CisgICAgICAgIG1fZW5jb2RlZERhdGFTdGF0dXMgPSBFbmNvZGVkRGF0YVN0YXR1czo6Q29tcGxl
dGU7CisgICAgfQorfQorCitib29sIEltYWdlRGVjb2Rlcjo6aXNBbGxEYXRhUmVjZWl2ZWQoKSBj
b25zdAoreworICAgIEFTU0VSVCghbV9kZWNvZGluZ1NpemVGcm9tU2V0RGF0YSk7CisgICAgcmV0
dXJuIG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkNvbXBsZXRlOwor
fQorCitFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZURlY29kZXI6OmVuY29kZWREYXRhU3RhdHVzKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9lbmNvZGVkRGF0YVN0YXR1czsKK30KKworYm9vbCBJbWFn
ZURlY29kZXI6OnNldEZhaWxlZCgpCit7CisgICAgLy8gU2V0cyB0aGUgImRlY29kZSBmYWlsdXJl
IiBmbGFnLiBGb3IgY2FsbGVyIGNvbnZlbmllbmNlIChzaW5jZSBzbworICAgIC8vIG1hbnkgY2Fs
bGVycyB3YW50IHRvIHJldHVybiBmYWxzZSBhZnRlciBjYWxsaW5nIHRoaXMpLCByZXR1cm5zIGZh
bHNlCisgICAgLy8gdG8gZW5hYmxlIGVhc3kgdGFpbGNhbGxpbmcuIFN1YmNsYXNzZXMgbWF5IG92
ZXJyaWRlIHRoaXMgdG8gYWxzbworICAgIC8vIGNsZWFuIHVwIGFueSBsb2NhbCBkYXRhLgorICAg
IG1fZW5jb2RlZERhdGFTdGF0dXMgPSBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3I7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitTdHJpbmcgSW1hZ2VEZWNvZGVyOjpmaWxlbmFtZUV4dGVuc2lvbigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCisvLyBSZXR1cm5zIHdoZXRoZXIg
dGhlIHNpemUgaXMgbGVnYWwgKGkuZS4gbm90IGdvaW5nIHRvIHJlc3VsdCBpbgorLy8gb3ZlcmZs
b3cgZWxzZXdoZXJlKS4gSWYgbm90LCBtYXJrcyBkZWNvZGluZyBhcyBmYWlsZWQuCitib29sIElt
YWdlRGVjb2Rlcjo6c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIGlmIChJbWFn
ZUJhY2tpbmdTdG9yZTo6aXNPdmVyU2l6ZShzaXplKSkKKyAgICAgICAgcmV0dXJuIHNldEZhaWxl
ZCgpOworICAgIG1fc2l6ZSA9IHNpemU7CisgICAgbV9lbmNvZGVkRGF0YVN0YXR1cyA9IEVuY29k
ZWREYXRhU3RhdHVzOjpTaXplQXZhaWxhYmxlOworICAgIHJldHVybiB0cnVlOworfQorCitzaXpl
X3QgSW1hZ2VEZWNvZGVyOjpmcmFtZUNvdW50KCkgY29uc3QKK3sKKyAgICAvLyBMYXppbHktZGVj
b2RlcyBlbm91Z2ggb2YgdGhlIGltYWdlIHRvIGdldCB0aGUgZnJhbWUgY291bnQgKGlmCisgICAg
Ly8gcG9zc2libGUpLCB3aXRob3V0IGRlY29kaW5nIHRoZSBpbmRpdmlkdWFsIGZyYW1lcy4KKyAg
ICAvLyBGSVhNRTogUmlnaHQgbm93IHRoYXQgaGFzIHRvIGJlIGRvbmUgYnkgZWFjaCBzdWJjbGFz
czsgZmFjdG9yIHRoZQorICAgIC8vIGRlY29kZSBjYWxsIG91dCBhbmQgdXNlIGl0IGhlcmUuCisg
ICAgcmV0dXJuIDE7Cit9CisKK1JlcGV0aXRpb25Db3VudCBJbWFnZURlY29kZXI6OnJlcGV0aXRp
b25Db3VudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFJlcGV0aXRpb25Db3VudE5vbmU7Cit9CisK
K3N0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IEltYWdlRGVjb2Rlcjo6aG90U3BvdCgpIGNvbnN0Cit7
CisgICAgLy8gSWYgdGhlIGltYWdlIGhhcyBhIGN1cnNvciBob3Qtc3BvdCwgc3RvcmVzIGl0IGlu
IHRoZSBhcmd1bWVudAorICAgIC8vIGFuZCByZXR1cm5zIHRydWUuIE90aGVyd2lzZSByZXR1cm5z
IGZhbHNlLgorICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisgICAgCiBib29sIEltYWdlRGVj
b2Rlcjo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgpCiB7CiAgICAgSW1hZ2VG
cmFtZSogYnVmZmVyID0gZnJhbWVCdWZmZXJBdEluZGV4KGluZGV4KTsKICAgICByZXR1cm4gYnVm
ZmVyICYmIGJ1ZmZlci0+aXNDb21wbGV0ZSgpOwogfQogCi1ib29sIEltYWdlRGVjb2Rlcjo6ZnJh
bWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAorYm9vbCBJbWFnZURlY29kZXI6
OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKICAgICBpZiAobV9mcmFtZUJ1
ZmZlckNhY2hlLnNpemUoKSA8PSBpbmRleCkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xODUs
NyArMjMzLDcgQEAgYm9vbCBJbWFnZURlY29kZXI6OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVf
dCBpbmRleCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdW5zaWduZWQgSW1hZ2VEZWNv
ZGVyOjpmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Cit1bnNpZ25lZCBJbWFn
ZURlY29kZXI6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZl
bCkgY29uc3QKIHsKICAgICBpZiAobV9mcmFtZUJ1ZmZlckNhY2hlLnNpemUoKSA8PSBpbmRleCkK
ICAgICAgICAgcmV0dXJuIDA7CkBAIC0yMDksNiArMjU3LDI2IEBAIGZsb2F0IEltYWdlRGVjb2Rl
cjo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KQogICAgIHJldHVybiBkdXJhdGlv
bjsKIH0KIAorSW1hZ2VPcmllbnRhdGlvbiBJbWFnZURlY29kZXI6OmZyYW1lT3JpZW50YXRpb25B
dEluZGV4KHNpemVfdCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9vcmllbnRhdGlvbjsKK30KKwor
SW50U2l6ZSBJbWFnZURlY29kZXI6OmZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGlu
Z0xldmVsKSBjb25zdAoreworICAgIC8vIFRoaXMgd2lsbCBvbmx5IGRpZmZlciBmcm9tIHNpemUo
KSBmb3IgSUNPICh3aGVyZSBlYWNoIGZyYW1lIGlzIGEKKyAgICAvLyBkaWZmZXJlbnQgaWNvbikg
b3Igb3RoZXIgZm9ybWF0cyB3aGVyZSBkaWZmZXJlbnQgZnJhbWVzIGFyZSBkaWZmZXJlbnQKKyAg
ICAvLyBzaXplcy4gVGhpcyBkb2VzIE5PVCBkaWZmZXIgZnJvbSBzaXplKCkgZm9yIEdJRiwgc2lu
Y2UgZGVjb2RpbmcgR0lGcworICAgIC8vIGNvbXBvc2l0ZXMgYW55IHNtYWxsZXIgZnJhbWVzIGFn
YWluc3QgcHJldmlvdXMgZnJhbWVzIHRvIGNyZWF0ZSBmdWxsLQorICAgIC8vIHNpemUgZnJhbWVz
LgorICAgIHJldHVybiBzaXplKCk7Cit9CisKK2Jvb2wgSW1hZ2VEZWNvZGVyOjpmcmFtZUFsbG93
U3Vic2FtcGxpbmdBdEluZGV4KHNpemVfdCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKIE5hdGl2ZUltYWdlUHRyIEltYWdlRGVjb2Rlcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgo
c2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmKQog
ewogICAgIC8vIFplcm8taGVpZ2h0IGltYWdlcyBjYW4gY2F1c2UgcHJvYmxlbXMgZm9yIHNvbWUg
cG9ydHMuIElmIHdlIGhhdmUgYW4gZW1wdHkgaW1hZ2UgZGltZW5zaW9uLCBqdXN0IGJhaWwuCkBA
IC0yMjYsNiArMjk0LDEyIEBAIE5hdGl2ZUltYWdlUHRyIEltYWdlRGVjb2Rlcjo6Y3JlYXRlRnJh
bWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xlCiAKIHZvaWQgSW1hZ2VE
ZWNvZGVyOjpwcmVwYXJlU2NhbGVEYXRhSWZOZWNlc3NhcnkoKQogeworI2lmIEVOQUJMRShJTUFH
RV9ERUNPREVSX0RPV05fU0FNUExJTkcpCisgICAgc3RhdGljIGNvbnN0IGludCBNYXhOdW1QaXhl
bHMgeyAxMDI0ICogMTAyNCB9OworI2Vsc2UKKyAgICBzdGF0aWMgY29uc3QgaW50IE1heE51bVBp
eGVscyB7IC0xIH07CisjZW5kaWYKKyAgICAKICAgICBtX3NjYWxlZCA9IGZhbHNlOwogICAgIG1f
c2NhbGVkQ29sdW1ucy5jbGVhcigpOwogICAgIG1fc2NhbGVkUm93cy5jbGVhcigpOwpAQCAtMjMz
LDExICszMDcsMTEgQEAgdm9pZCBJbWFnZURlY29kZXI6OnByZXBhcmVTY2FsZURhdGFJZk5lY2Vz
c2FyeSgpCiAgICAgaW50IHdpZHRoID0gc2l6ZSgpLndpZHRoKCk7CiAgICAgaW50IGhlaWdodCA9
IHNpemUoKS5oZWlnaHQoKTsKICAgICBpbnQgbnVtUGl4ZWxzID0gaGVpZ2h0ICogd2lkdGg7Ci0g
ICAgaWYgKG1fbWF4TnVtUGl4ZWxzIDw9IDAgfHwgbnVtUGl4ZWxzIDw9IG1fbWF4TnVtUGl4ZWxz
KQorICAgIGlmIChNYXhOdW1QaXhlbHMgPD0gMCB8fCBudW1QaXhlbHMgPD0gTWF4TnVtUGl4ZWxz
KQogICAgICAgICByZXR1cm47CiAKICAgICBtX3NjYWxlZCA9IHRydWU7Ci0gICAgZG91YmxlIHNj
YWxlID0gc3FydChtX21heE51bVBpeGVscyAvIChkb3VibGUpbnVtUGl4ZWxzKTsKKyAgICBkb3Vi
bGUgc2NhbGUgPSBzcXJ0KE1heE51bVBpeGVscyAvIChkb3VibGUpbnVtUGl4ZWxzKTsKICAgICBm
aWxsU2NhbGVkVmFsdWVzKG1fc2NhbGVkQ29sdW1ucywgc2NhbGUsIHdpZHRoKTsKICAgICBmaWxs
U2NhbGVkVmFsdWVzKG1fc2NhbGVkUm93cywgc2NhbGUsIGhlaWdodCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNDJjZGIwZGRmNi4uMDAwMDAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgK
KysrIC9kZXYvbnVsbApAQCAtMSwyMzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
NiwgMjAxNiBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChD
KSAyMDA4LTIwMDkgVG9yY2ggTW9iaWxlLCBJbmMuCi0gKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNo
IEluIE1vdGlvbiBMaW1pdGVkIDIwMDktMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENv
cHlyaWdodCAoQykgMjAwOSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnko
LWllcykKLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0g
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdt
YSBvbmNlCi0KLSNpbmNsdWRlICJJbWFnZUZyYW1lLmgiCi0jaW5jbHVkZSAiSW50UmVjdC5oIgot
I2luY2x1ZGUgIkludFNpemUuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgotI2luY2x1
ZGUgIlNoYXJlZEJ1ZmZlci5oIgotI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Ci0jaW5jbHVk
ZSA8d3RmL09wdGlvbmFsLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi0vLyBJbWFnZURlY29kZXIgaXMgYSBiYXNlIGZvciBhbGwgZm9ybWF0LXNw
ZWNpZmljIGRlY29kZXJzCi0vLyAoZS5nLiBKUEVHSW1hZ2VEZWNvZGVyKS4gVGhpcyBiYXNlIG1h
bmFnZXMgdGhlIEltYWdlRnJhbWUgY2FjaGUuCi0vLwotLy8gRU5BQkxFKElNQUdFX0RFQ09ERVJf
RE9XTl9TQU1QTElORykgYWxsb3dzIGltYWdlIGRlY29kZXJzIHRvIGRvd25zYW1wbGUKLS8vIGF0
IGRlY29kZSB0aW1lLiBJbWFnZSBkZWNvZGVycyB3aWxsIGRvd25zYW1wbGUgYW55IGltYWdlcyBs
YXJnZXIgdGhhbgotLy8gfG1fbWF4TnVtUGl4ZWxzfC4gRklYTUU6IE5vdCB5ZXQgc3VwcG9ydGVk
IGJ5IGFsbCBkZWNvZGVycy4KLWNsYXNzIEltYWdlRGVjb2RlciA6IHB1YmxpYyBUaHJlYWRTYWZl
UmVmQ291bnRlZDxJbWFnZURlY29kZXI+IHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFn
ZURlY29kZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBJbWFnZURl
Y29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
IGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQotICAgICAgICA6IG1fcHJlbXVsdGlwbHlBbHBo
YShhbHBoYU9wdGlvbiA9PSBBbHBoYU9wdGlvbjo6UHJlbXVsdGlwbGllZCkKLSAgICAgICAgLCBt
X2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uID09
IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uOjpJZ25vcmVkKQotICAgIHsKLSAgICB9Ci0KLSAg
ICB2aXJ0dWFsIH5JbWFnZURlY29kZXIoKQotICAgIHsKLSAgICB9Ci0KLSAgICAvLyBSZXR1cm5z
IG51bGxwdHIgaWYgd2UgY2FuJ3Qgc25pZmYgYSBzdXBwb3J0ZWQgdHlwZSBmcm9tIHRoZSBwcm92
aWRlZCBkYXRhIChwb3NzaWJseQotICAgIC8vIGJlY2F1c2UgdGhlcmUgaXNuJ3QgZW5vdWdoIGRh
dGEgeWV0KS4KLSAgICBzdGF0aWMgUmVmUHRyPEltYWdlRGVjb2Rlcj4gY3JlYXRlKFNoYXJlZEJ1
ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKLQot
ICAgIHZpcnR1YWwgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QgPSAwOwotCi0gICAg
Ym9vbCBwcmVtdWx0aXBseUFscGhhKCkgY29uc3QgeyByZXR1cm4gbV9wcmVtdWx0aXBseUFscGhh
OyB9Ci0KLSAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QKLSAgICB7Ci0gICAgICAg
IEFTU0VSVCghbV9kZWNvZGluZ1NpemVGcm9tU2V0RGF0YSk7Ci0gICAgICAgIHJldHVybiBtX2Vu
Y29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpDb21wbGV0ZTsKLSAgICB9Ci0K
LSAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImIGRhdGEsIGJvb2wgYWxsRGF0
YVJlY2VpdmVkKQotICAgIHsKLSAgICAgICAgaWYgKG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5j
b2RlZERhdGFTdGF0dXM6OkVycm9yKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIG1f
ZGF0YSA9ICZkYXRhOwotICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVk
RGF0YVN0YXR1czo6VHlwZUF2YWlsYWJsZSkgewotICAgICAgICAgICAgbV9kZWNvZGluZ1NpemVG
cm9tU2V0RGF0YSA9IHRydWU7Ci0gICAgICAgICAgICB0cnlEZWNvZGVTaXplKGFsbERhdGFSZWNl
aXZlZCk7Ci0gICAgICAgICAgICBtX2RlY29kaW5nU2l6ZUZyb21TZXREYXRhID0gZmFsc2U7Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0
YVN0YXR1czo6RXJyb3IpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKGFsbERh
dGFSZWNlaXZlZCkgewotICAgICAgICAgICAgQVNTRVJUKG1fZW5jb2RlZERhdGFTdGF0dXMgPT0g
RW5jb2RlZERhdGFTdGF0dXM6OlNpemVBdmFpbGFibGUpOwotICAgICAgICAgICAgbV9lbmNvZGVk
RGF0YVN0YXR1cyA9IEVuY29kZWREYXRhU3RhdHVzOjpDb21wbGV0ZTsKLSAgICAgICAgfQotICAg
IH0KLQotICAgIEVuY29kZWREYXRhU3RhdHVzIGVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9lbmNvZGVkRGF0YVN0YXR1czsgfQotCi0gICAgYm9vbCBpc1NpemVBdmFpbGFibGUo
KSB7IHJldHVybiBtX2VuY29kZWREYXRhU3RhdHVzID49IEVuY29kZWREYXRhU3RhdHVzOjpTaXpl
QXZhaWxhYmxlOyB9Ci0KLSAgICB2aXJ0dWFsIEludFNpemUgc2l6ZSgpIHsgcmV0dXJuIGlzU2l6
ZUF2YWlsYWJsZSgpID8gbV9zaXplIDogSW50U2l6ZSgpOyB9Ci0KLSAgICBJbnRTaXplIHNjYWxl
ZFNpemUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fc2NhbGVkID8gSW50U2l6ZShtX3NjYWxl
ZENvbHVtbnMuc2l6ZSgpLCBtX3NjYWxlZFJvd3Muc2l6ZSgpKSA6IHNpemUoKTsKLSAgICB9Ci0K
LSAgICAvLyBUaGlzIHdpbGwgb25seSBkaWZmZXIgZnJvbSBzaXplKCkgZm9yIElDTyAod2hlcmUg
ZWFjaCBmcmFtZSBpcyBhCi0gICAgLy8gZGlmZmVyZW50IGljb24pIG9yIG90aGVyIGZvcm1hdHMg
d2hlcmUgZGlmZmVyZW50IGZyYW1lcyBhcmUgZGlmZmVyZW50Ci0gICAgLy8gc2l6ZXMuIFRoaXMg
ZG9lcyBOT1QgZGlmZmVyIGZyb20gc2l6ZSgpIGZvciBHSUYsIHNpbmNlIGRlY29kaW5nIEdJRnMK
LSAgICAvLyBjb21wb3NpdGVzIGFueSBzbWFsbGVyIGZyYW1lcyBhZ2FpbnN0IHByZXZpb3VzIGZy
YW1lcyB0byBjcmVhdGUgZnVsbC0KLSAgICAvLyBzaXplIGZyYW1lcy4KLSAgICB2aXJ0dWFsIElu
dFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwpCi0gICAgewot
ICAgICAgICByZXR1cm4gc2l6ZSgpOwotICAgIH0KLQotICAgIC8vIFJldHVybnMgd2hldGhlciB0
aGUgc2l6ZSBpcyBsZWdhbCAoaS5lLiBub3QgZ29pbmcgdG8gcmVzdWx0IGluCi0gICAgLy8gb3Zl
cmZsb3cgZWxzZXdoZXJlKS4gSWYgbm90LCBtYXJrcyBkZWNvZGluZyBhcyBmYWlsZWQuCi0gICAg
dmlydHVhbCBib29sIHNldFNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKLSAgICB7Ci0gICAgICAg
IGlmIChJbWFnZUJhY2tpbmdTdG9yZTo6aXNPdmVyU2l6ZShzaXplKSkKLSAgICAgICAgICAgIHJl
dHVybiBzZXRGYWlsZWQoKTsKLSAgICAgICAgbV9zaXplID0gc2l6ZTsKLSAgICAgICAgbV9lbmNv
ZGVkRGF0YVN0YXR1cyA9IEVuY29kZWREYXRhU3RhdHVzOjpTaXplQXZhaWxhYmxlOwotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICAvLyBMYXppbHktZGVjb2RlcyBlbm91Z2ggb2Yg
dGhlIGltYWdlIHRvIGdldCB0aGUgZnJhbWUgY291bnQgKGlmCi0gICAgLy8gcG9zc2libGUpLCB3
aXRob3V0IGRlY29kaW5nIHRoZSBpbmRpdmlkdWFsIGZyYW1lcy4KLSAgICAvLyBGSVhNRTogUmln
aHQgbm93IHRoYXQgaGFzIHRvIGJlIGRvbmUgYnkgZWFjaCBzdWJjbGFzczsgZmFjdG9yIHRoZQot
ICAgIC8vIGRlY29kZSBjYWxsIG91dCBhbmQgdXNlIGl0IGhlcmUuCi0gICAgdmlydHVhbCBzaXpl
X3QgZnJhbWVDb3VudCgpIGNvbnN0IHsgcmV0dXJuIDE7IH0KLQotICAgIHZpcnR1YWwgUmVwZXRp
dGlvbkNvdW50IHJlcGV0aXRpb25Db3VudCgpIGNvbnN0IHsgcmV0dXJuIFJlcGV0aXRpb25Db3Vu
dE5vbmU7IH0KLQotICAgIC8vIERlY29kZXMgYXMgbXVjaCBvZiB0aGUgcmVxdWVzdGVkIGZyYW1l
IGFzIHBvc3NpYmxlLCBhbmQgcmV0dXJucyBhbgotICAgIC8vIEltYWdlRGVjb2Rlci1vd25lZCBw
b2ludGVyLgotICAgIHZpcnR1YWwgSW1hZ2VGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVf
dCkgPSAwOwotCi0gICAgYm9vbCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCk7Ci0KLSAg
ICAvLyBNYWtlIHRoZSBiZXN0IGVmZm9ydCBndWVzcyB0byBjaGVjayBpZiB0aGUgcmVxdWVzdGVk
IGZyYW1lIGhhcyBhbHBoYSBjaGFubmVsLgotICAgIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgo
c2l6ZV90KSBjb25zdDsKLQotICAgIC8vIE51bWJlciBvZiBieXRlcyBpbiB0aGUgZGVjb2RlZCBm
cmFtZSByZXF1ZXN0ZWQuIFJldHVybiAwIGlmIG5vdCB5ZXQgZGVjb2RlZC4KLSAgICB1bnNpZ25l
ZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QpIGNvbnN0OwotICAgIAotICAgIGZsb2F0IGZyYW1l
RHVyYXRpb25BdEluZGV4KHNpemVfdCk7Ci0gICAgCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRl
RnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdM
ZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nTW9kZTo6U3lu
Y2hyb25vdXMpOwotCi0gICAgdm9pZCBzZXRJZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZShib29s
IGZsYWcpIHsgbV9pZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZSA9IGZsYWc7IH0KLSAgICBib29s
IGlnbm9yZXNHYW1tYUFuZENvbG9yUHJvZmlsZSgpIGNvbnN0IHsgcmV0dXJuIG1faWdub3JlR2Ft
bWFBbmRDb2xvclByb2ZpbGU7IH0KLQotICAgIEltYWdlT3JpZW50YXRpb24gZnJhbWVPcmllbnRh
dGlvbkF0SW5kZXgoc2l6ZV90KSBjb25zdCB7IHJldHVybiBtX29yaWVudGF0aW9uOyB9Ci0gICAg
Ci0gICAgYm9vbCBmcmFtZUFsbG93U3Vic2FtcGxpbmdBdEluZGV4KHNpemVfdCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KLQotICAgIGVudW0geyBJQ0NDb2xvclByb2ZpbGVIZWFkZXJMZW5ndGgg
PSAxMjggfTsKLQotICAgIHN0YXRpYyBib29sIHJnYkNvbG9yUHJvZmlsZShjb25zdCBjaGFyKiBw
cm9maWxlRGF0YSwgdW5zaWduZWQgcHJvZmlsZUxlbmd0aCkKLSAgICB7Ci0gICAgICAgIEFTU0VS
VF9VTlVTRUQocHJvZmlsZUxlbmd0aCwgcHJvZmlsZUxlbmd0aCA+PSBJQ0NDb2xvclByb2ZpbGVI
ZWFkZXJMZW5ndGgpOwotCi0gICAgICAgIHJldHVybiAhbWVtY21wKCZwcm9maWxlRGF0YVsxNl0s
ICJSR0IgIiwgNCk7Ci0gICAgfQotCi0gICAgc3RhdGljIHNpemVfdCBieXRlc0RlY29kZWRUb0Rl
dGVybWluZVByb3BlcnRpZXMoKSB7IHJldHVybiAwOyB9Ci0gICAgCi0gICAgc3RhdGljIFN1YnNh
bXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbEZvclNjYWxlKGZsb2F0LCBTdWJzYW1wbGluZ0xl
dmVsKSB7IHJldHVybiBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0OyB9Ci0KLSAgICBzdGF0aWMg
Ym9vbCBpbnB1dERldmljZUNvbG9yUHJvZmlsZShjb25zdCBjaGFyKiBwcm9maWxlRGF0YSwgdW5z
aWduZWQgcHJvZmlsZUxlbmd0aCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQocHJvZmls
ZUxlbmd0aCwgcHJvZmlsZUxlbmd0aCA+PSBJQ0NDb2xvclByb2ZpbGVIZWFkZXJMZW5ndGgpOwot
Ci0gICAgICAgIHJldHVybiAhbWVtY21wKCZwcm9maWxlRGF0YVsxMl0sICJtbnRyIiwgNCkgfHwg
IW1lbWNtcCgmcHJvZmlsZURhdGFbMTJdLCAic2NuciIsIDQpOwotICAgIH0KLQotICAgIC8vIFNl
dHMgdGhlICJkZWNvZGUgZmFpbHVyZSIgZmxhZy4gRm9yIGNhbGxlciBjb252ZW5pZW5jZSAoc2lu
Y2Ugc28KLSAgICAvLyBtYW55IGNhbGxlcnMgd2FudCB0byByZXR1cm4gZmFsc2UgYWZ0ZXIgY2Fs
bGluZyB0aGlzKSwgcmV0dXJucyBmYWxzZQotICAgIC8vIHRvIGVuYWJsZSBlYXN5IHRhaWxjYWxs
aW5nLiBTdWJjbGFzc2VzIG1heSBvdmVycmlkZSB0aGlzIHRvIGFsc28KLSAgICAvLyBjbGVhbiB1
cCBhbnkgbG9jYWwgZGF0YS4KLSAgICB2aXJ0dWFsIGJvb2wgc2V0RmFpbGVkKCkKLSAgICB7Ci0g
ICAgICAgIG1fZW5jb2RlZERhdGFTdGF0dXMgPSBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3I7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBib29sIGZhaWxlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkVycm9yOyB9
Ci0KLSAgICAvLyBDbGVhcnMgZGVjb2RlZCBwaXhlbCBkYXRhIGZyb20gYmVmb3JlIHRoZSBwcm92
aWRlZCBmcmFtZSB1bmxlc3MgdGhhdAotICAgIC8vIGRhdGEgbWF5IGJlIG5lZWRlZCB0byBkZWNv
ZGUgZnV0dXJlIGZyYW1lcyAoZS5nLiBkdWUgdG8gR0lGIGZyYW1lCi0gICAgLy8gY29tcG9zaXRp
bmcpLgotICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6ZV90KSB7IH0K
LQotICAgIC8vIElmIHRoZSBpbWFnZSBoYXMgYSBjdXJzb3IgaG90LXNwb3QsIHN0b3JlcyBpdCBp
biB0aGUgYXJndW1lbnQKLSAgICAvLyBhbmQgcmV0dXJucyB0cnVlLiBPdGhlcndpc2UgcmV0dXJu
cyBmYWxzZS4KLSAgICB2aXJ0dWFsIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBj
b25zdCB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KLQotcHJvdGVjdGVkOgotICAgIHZvaWQgcHJl
cGFyZVNjYWxlRGF0YUlmTmVjZXNzYXJ5KCk7Ci0gICAgaW50IHVwcGVyQm91bmRTY2FsZWRYKGlu
dCBvcmlnWCwgaW50IHNlYXJjaFN0YXJ0ID0gMCk7Ci0gICAgaW50IGxvd2VyQm91bmRTY2FsZWRY
KGludCBvcmlnWCwgaW50IHNlYXJjaFN0YXJ0ID0gMCk7Ci0gICAgaW50IHVwcGVyQm91bmRTY2Fs
ZWRZKGludCBvcmlnWSwgaW50IHNlYXJjaFN0YXJ0ID0gMCk7Ci0gICAgaW50IGxvd2VyQm91bmRT
Y2FsZWRZKGludCBvcmlnWSwgaW50IHNlYXJjaFN0YXJ0ID0gMCk7Ci0gICAgaW50IHNjYWxlZFko
aW50IG9yaWdZLCBpbnQgc2VhcmNoU3RhcnQgPSAwKTsKLQotICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IG1fZGF0YTsgLy8gVGhlIGVuY29kZWQgZGF0YS4KLSAgICBWZWN0b3I8SW1hZ2VGcmFtZSwg
MT4gbV9mcmFtZUJ1ZmZlckNhY2hlOwotICAgIGJvb2wgbV9zY2FsZWQgeyBmYWxzZSB9OwotICAg
IFZlY3RvcjxpbnQ+IG1fc2NhbGVkQ29sdW1uczsKLSAgICBWZWN0b3I8aW50PiBtX3NjYWxlZFJv
d3M7Ci0gICAgYm9vbCBtX3ByZW11bHRpcGx5QWxwaGE7Ci0gICAgYm9vbCBtX2lnbm9yZUdhbW1h
QW5kQ29sb3JQcm9maWxlOwotICAgIEltYWdlT3JpZW50YXRpb24gbV9vcmllbnRhdGlvbjsKLQot
cHJpdmF0ZToKLSAgICB2aXJ0dWFsIHZvaWQgdHJ5RGVjb2RlU2l6ZShib29sKSA9IDA7Ci0KLSAg
ICBJbnRTaXplIG1fc2l6ZTsKLSAgICBFbmNvZGVkRGF0YVN0YXR1cyBtX2VuY29kZWREYXRhU3Rh
dHVzIHsgRW5jb2RlZERhdGFTdGF0dXM6OlR5cGVBdmFpbGFibGUgfTsKLSAgICBib29sIG1fZGVj
b2RpbmdTaXplRnJvbVNldERhdGEgeyBmYWxzZSB9OwotI2lmIEVOQUJMRShJTUFHRV9ERUNPREVS
X0RPV05fU0FNUExJTkcpCi0gICAgc3RhdGljIGNvbnN0IGludCBtX21heE51bVBpeGVscyB7IDEw
MjQgKiAxMDI0IH07Ci0jZWxzZQotICAgIHN0YXRpYyBjb25zdCBpbnQgbV9tYXhOdW1QaXhlbHMg
eyAtMSB9OwotI2VuZGlmCi19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNv
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJ
bWFnZURlY29kZXIuY3BwCmluZGV4IDEzYjVjMDgwY2M3Li41Mzk4NmVjMWFjZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVj
b2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1w
L0JNUEltYWdlRGVjb2Rlci5jcHAKQEAgLTQwLDggKzQwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogLy8gZG9uJ3QgcGFjaykuCiBzdGF0aWMgY29uc3Qgc2l6ZV90IHNpemVPZkZpbGVIZWFkZXIg
PSAxNDsKIAotQk1QSW1hZ2VEZWNvZGVyOjpCTVBJbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxw
aGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uKQotICAgIDogSW1hZ2VEZWNvZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbikKK0JNUEltYWdlRGVjb2Rlcjo6Qk1QSW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZl
ciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAgIDogSW1hZ2VEZWNvZGVyKGRhdGEs
IGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICAsIG1fZGVjb2Rl
ZE9mZnNldCgwKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oCmluZGV4IGM2Mjc2OTBhODMw
Li42MjA3NzI4OTEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuaApAQCAtMzcsOSArMzcsOSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgLy8gVGhpcyBjbGFzcyBkZWNvZGVzIHRoZSBCTVAg
aW1hZ2UgZm9ybWF0LgogICAgIGNsYXNzIEJNUEltYWdlRGVjb2RlciBmaW5hbCA6IHB1YmxpYyBJ
bWFnZURlY29kZXIgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFJlZjxJbWFnZURlY29k
ZXI+IGNyZWF0ZShBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCisgICAgICAgIHN0YXRpYyBSZWY8SW1h
Z2VEZWNvZGVyPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9w
dGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJNUEltYWdl
RGVjb2RlcihhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKKyAgICAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJNUEltYWdlRGVjb2RlcihkYXRhLCBhbHBoYU9w
dGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKICAgICAgICAgfQogCiAgICAgICAg
IC8vIEltYWdlRGVjb2RlcgpAQCAtNTIsNyArNTIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIGJvb2wgc2V0RmFpbGVkKCkgb3ZlcnJpZGU7CiAKICAgICBwcml2YXRlOgotICAgICAg
ICBCTVBJbWFnZURlY29kZXIoQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KTsKKyAgICAgICAgQk1QSW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKICAgICAgICAgdm9pZCB0cnlEZWNvZGVT
aXplKGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBvdmVycmlkZSB7IGRlY29kZSh0cnVlLCBhbGxEYXRh
UmVjZWl2ZWQpOyB9CiAKICAgICAgICAgaW5saW5lIHVpbnQzMl90IHJlYWRVaW50MzIoaW50IG9m
ZnNldCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAKaW5kZXggZmQwY2M3NTA5OWYu
Ljk2YTFjZjE4ODc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcApAQCAtMzEsOCArMzEs
OCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUdJRkltYWdlRGVjb2Rlcjo6R0lGSW1hZ2VE
ZWNvZGVyKEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
biBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKLSAgICA6IEltYWdlRGVjb2RlcihhbHBoYU9w
dGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitHSUZJbWFnZURlY29kZXI6OkdJRklt
YWdlRGVjb2RlcihTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKKyAg
ICA6IEltYWdlRGVjb2RlcihkYXRhLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaAppbmRleCBkNmNiYTM5ZGJiZS4u
YjUyZjQ1MzQ4MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmgKQEAgLTM1LDkgKzM1LDkgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIC8vIFRoaXMgY2xhc3MgZGVjb2RlcyB0aGUgR0lGIGlt
YWdlIGZvcm1hdC4KICAgICBjbGFzcyBHSUZJbWFnZURlY29kZXIgZmluYWwgOiBwdWJsaWMgSW1h
Z2VEZWNvZGVyIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVy
PiBjcmVhdGUoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAgICAgICBzdGF0aWMgUmVmPEltYWdl
RGVjb2Rlcj4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHSUZJbWFnZURl
Y29kZXIoYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CisgICAgICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBHSUZJbWFnZURlY29kZXIoZGF0YSwgYWxwaGFPcHRp
b24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CiAgICAgICAgIH0KIAogICAgICAgICB2
aXJ0dWFsIH5HSUZJbWFnZURlY29kZXIoKTsKQEAgLTYzLDcgKzYzLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICB2b2lkIGdpZkNvbXBsZXRlKCk7CiAKICAgICBwcml2YXRlOgotICAg
ICAgICBHSUZJbWFnZURlY29kZXIoQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKTsKKyAgICAgICAgR0lGSW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFP
cHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKICAgICAgICAgdm9pZCB0cnlEZWNv
ZGVTaXplKGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBvdmVycmlkZSB7IGRlY29kZSgwLCBHSUZTaXpl
UXVlcnksIGFsbERhdGFSZWNlaXZlZCk7IH0KIAogICAgICAgICAvLyBJZiB0aGUgcXVlcnkgaXMg
R0lGRnVsbFF1ZXJ5LCBkZWNvZGVzIHRoZSBpbWFnZSB1cCB0byAoYnV0IG5vdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVj
b2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNP
SW1hZ2VEZWNvZGVyLmNwcAppbmRleCAzNjNhZTI4M2QzNC4uNmRjZTk4MTAyMjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURl
Y29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2lj
by9JQ09JbWFnZURlY29kZXIuY3BwCkBAIC00NCw4ICs0NCw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIHN0YXRpYyBjb25zdCBzaXplX3Qgc2l6ZU9mRGlyZWN0b3J5ID0gNjsKIHN0YXRpYyBjb25z
dCBzaXplX3Qgc2l6ZU9mRGlyRW50cnkgPSAxNjsKIAotSUNPSW1hZ2VEZWNvZGVyOjpJQ09JbWFn
ZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQotICAgIDogSW1hZ2VEZWNvZGVyKGFscGhh
T3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK0lDT0ltYWdlRGVjb2Rlcjo6SUNP
SW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24s
IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQor
ICAgIDogSW1hZ2VEZWNvZGVyKGRhdGEsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbikKICAgICAsIG1fZGVjb2RlZE9mZnNldCgwKQogewogfQpAQCAtNjksMTIgKzY5LDEy
IEBAIHZvaWQgSUNPSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpCiAgICAgICAgIHNldERhdGFGb3JQTkdEZWNvZGVyQXRJbmRleChp
KTsKIH0KIAotSW50U2l6ZSBJQ09JbWFnZURlY29kZXI6OnNpemUoKQorSW50U2l6ZSBJQ09JbWFn
ZURlY29kZXI6OnNpemUoKSBjb25zdAogewogICAgIHJldHVybiBtX2ZyYW1lU2l6ZS5pc0VtcHR5
KCkgPyBJbWFnZURlY29kZXI6OnNpemUoKSA6IG1fZnJhbWVTaXplOwogfQogCi1JbnRTaXplIElD
T0ltYWdlRGVjb2Rlcjo6ZnJhbWVTaXplQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5n
TGV2ZWwpCitJbnRTaXplIElDT0ltYWdlRGVjb2Rlcjo6ZnJhbWVTaXplQXRJbmRleChzaXplX3Qg
aW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0CiB7CiAgICAgcmV0dXJuIChpbmRleCAmJiAo
aW5kZXggPCBtX2RpckVudHJpZXMuc2l6ZSgpKSkgPyBtX2RpckVudHJpZXNbaW5kZXhdLm1fc2l6
ZSA6IHNpemUoKTsKIH0KQEAgLTIwOCw3ICsyMDgsNyBAQCBib29sIElDT0ltYWdlRGVjb2Rlcjo6
ZGVjb2RlQXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgfQogCiAgICAgaWYgKCFtX3BuZ0RlY29k
ZXJzW2luZGV4XSkgewotICAgICAgICBtX3BuZ0RlY29kZXJzW2luZGV4XSA9IFBOR0ltYWdlRGVj
b2Rlcjo6Y3JlYXRlKG1fcHJlbXVsdGlwbHlBbHBoYSA/IEFscGhhT3B0aW9uOjpQcmVtdWx0aXBs
aWVkIDogQWxwaGFPcHRpb246Ok5vdFByZW11bHRpcGxpZWQsIG1faWdub3JlR2FtbWFBbmRDb2xv
clByb2ZpbGUgPyBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbjo6SWdub3JlZCA6IEdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uOjpBcHBsaWVkKTsKKyAgICAgICAgbV9wbmdEZWNvZGVyc1tpbmRl
eF0gPSBQTkdJbWFnZURlY29kZXI6OmNyZWF0ZSgqbV9kYXRhLCBtX3ByZW11bHRpcGx5QWxwaGEg
PyBBbHBoYU9wdGlvbjo6UHJlbXVsdGlwbGllZCA6IEFscGhhT3B0aW9uOjpOb3RQcmVtdWx0aXBs
aWVkLCBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlID8gR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb246Oklnbm9yZWQgOiBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbjo6QXBwbGllZCk7CiAg
ICAgICAgIHNldERhdGFGb3JQTkdEZWNvZGVyQXRJbmRleChpbmRleCk7CiAgICAgfQogICAgIC8v
IEZhaWwgaWYgdGhlIHNpemUgdGhlIFBOR0ltYWdlRGVjb2RlciBjYWxjdWxhdGVkIGRvZXMgbm90
IG1hdGNoIHRoZSBzaXplCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgKaW5kZXggZTRiYjYwYjk4ODEu
LjI2YzhiNzI3MzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5oCkBAIC0zNiw5ICszNiw5IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAvLyBUaGlzIGNsYXNzIGRlY29kZXMgdGhlIElDTyBh
bmQgQ1VSIGltYWdlIGZvcm1hdHMuCiAgICAgY2xhc3MgSUNPSW1hZ2VEZWNvZGVyIGZpbmFsIDog
cHVibGljIEltYWdlRGVjb2RlciB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUmVmPElt
YWdlRGVjb2Rlcj4gY3JlYXRlKEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKKyAgICAgICAgc3RhdGlj
IFJlZjxJbWFnZURlY29kZXI+IGNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9u
IGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbikKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
SUNPSW1hZ2VEZWNvZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikp
OworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSUNPSW1hZ2VEZWNvZGVyKGRhdGEs
IGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogICAgICAgICB9CiAK
ICAgICAgICAgdmlydHVhbCB+SUNPSW1hZ2VEZWNvZGVyKCk7CkBAIC00Niw4ICs0Niw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gSW1hZ2VEZWNvZGVyCiAgICAgICAgIFN0cmlu
ZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEFTQ0lJTGl0ZXJh
bCgiaWNvIik7IH0KICAgICAgICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxs
RGF0YVJlY2VpdmVkKSBvdmVycmlkZTsKLSAgICAgICAgSW50U2l6ZSBzaXplKCkgb3ZlcnJpZGU7
Ci0gICAgICAgIEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2
ZWwpIG92ZXJyaWRlOworICAgICAgICBJbnRTaXplIHNpemUoKSBjb25zdCBvdmVycmlkZTsKKyAg
ICAgICAgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCkg
Y29uc3Qgb3ZlcnJpZGU7CiAgICAgICAgIGJvb2wgc2V0U2l6ZShjb25zdCBJbnRTaXplJikgb3Zl
cnJpZGU7CiAgICAgICAgIHNpemVfdCBmcmFtZUNvdW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
ICAgIEltYWdlRnJhbWUqIGZyYW1lQnVmZmVyQXRJbmRleChzaXplX3QpIG92ZXJyaWRlOwpAQCAt
NzYsNyArNzYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICB1aW50MzJfdCBt
X2ltYWdlT2Zmc2V0OwogICAgICAgICB9OwogCi0gICAgICAgIElDT0ltYWdlRGVjb2RlcihBbHBo
YU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgICAgICBJQ09JbWFnZURl
Y29kZXIoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pOwogICAgICAgICB2b2lkIHRyeURlY29kZVNpemUoYm9vbCBhbGxEYXRhUmVjZWl2
ZWQpIG92ZXJyaWRlIHsgZGVjb2RlKDAsIHRydWUsIGFsbERhdGFSZWNlaXZlZCk7IH0KIAogICAg
ICAgICAvLyBSZXR1cm5zIHRydWUgaWYgfGF8IGlzIGEgcHJlZmVyYWJsZSBpY29uIGVudHJ5IHRv
IHxifC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCmluZGV4IDg2YWUwNGNmNjBmLi4z
ZjU5MjJlYThkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCkBAIC01MDEsOCAr
NTAxLDggQEAgdm9pZCB0ZXJtX3NvdXJjZShqX2RlY29tcHJlc3NfcHRyIGpkKQogICAgIHNyYy0+
ZGVjb2Rlci0+ZGVjb2RlcigpLT5qcGVnQ29tcGxldGUoKTsKIH0KIAotSlBFR0ltYWdlRGVjb2Rl
cjo6SlBFR0ltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCi0gICAgOiBJbWFnZURl
Y29kZXIoYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorSlBFR0ltYWdl
RGVjb2Rlcjo6SlBFR0ltYWdlRGVjb2RlcihTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9u
IGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbikKKyAgICA6IEltYWdlRGVjb2RlcihkYXRhLCBhbHBoYU9wdGlvbiwgZ2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmgK
aW5kZXggNWE0NmRmZmZhZDMuLjFkYzEwY2JhZTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29k
ZXIuaApAQCAtNDMsOSArNDMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgLy8gVGhpcyBj
bGFzcyBkZWNvZGVzIHRoZSBKUEVHIGltYWdlIGZvcm1hdC4KICAgICBjbGFzcyBKUEVHSW1hZ2VE
ZWNvZGVyIGZpbmFsIDogcHVibGljIEltYWdlRGVjb2RlciB7CiAgICAgcHVibGljOgotICAgICAg
ICBzdGF0aWMgUmVmPEltYWdlRGVjb2Rlcj4gY3JlYXRlKEFscGhhT3B0aW9uIGFscGhhT3B0aW9u
LCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikK
KyAgICAgICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXI+IGNyZWF0ZShTaGFyZWRCdWZmZXImIGRh
dGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBn
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgSlBFR0ltYWdlRGVjb2RlcihhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEpQRUdJ
bWFnZURlY29kZXIoZGF0YSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KSk7CiAgICAgICAgIH0KIAogICAgICAgICB2aXJ0dWFsIH5KUEVHSW1hZ2VEZWNvZGVyKCk7CkBA
IC03MSw3ICs3MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRPcmll
bnRhdGlvbihJbWFnZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKSB7IG1fb3JpZW50YXRpb24gPSBv
cmllbnRhdGlvbjsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgSlBFR0ltYWdlRGVjb2RlcihB
bHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgICAgICBKUEVHSW1h
Z2VEZWNvZGVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKTsKICAgICAgICAgdm9pZCB0cnlEZWNvZGVTaXplKGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKSBvdmVycmlkZSB7IGRlY29kZSh0cnVlLCBhbGxEYXRhUmVjZWl2ZWQpOyB9CiAKICAg
ICAgICAgLy8gRGVjb2RlcyB0aGUgaW1hZ2UuICBJZiB8b25seVNpemV8IGlzIHRydWUsIHN0b3Bz
IGRlY29kaW5nIGFmdGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwCmluZGV4IDgwNzBmNjQ5
ZmY2Li5lYjc3N2FhOGM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTIwMSw4
ICsyMDEsOCBAQCBwcml2YXRlOgogICAgIHBuZ19ieXRlcCBtX2ludGVybGFjZUJ1ZmZlcjsKIH07
CiAKLVBOR0ltYWdlRGVjb2Rlcjo6UE5HSW1hZ2VEZWNvZGVyKEFscGhhT3B0aW9uIGFscGhhT3B0
aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bikKLSAgICA6IEltYWdlRGVjb2RlcihhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pCitQTkdJbWFnZURlY29kZXI6OlBOR0ltYWdlRGVjb2RlcihTaGFyZWRCdWZmZXImIGRh
dGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBn
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKKyAgICA6IEltYWdlRGVjb2RlcihkYXRhLCBhbHBo
YU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgLCBtX2RvTm90aGluZ09u
RmFpbHVyZShmYWxzZSkKICAgICAsIG1fY3VycmVudEZyYW1lKDApCiAjaWYgRU5BQkxFKEFQTkcp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcv
UE5HSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmgKaW5kZXggMDNlMWZiYzMxY2EuLjc1ODgxYjg1MTgyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5H
SW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5oCkBAIC0zNyw5ICszNyw5IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAvLyBUaGlzIGNsYXNzIGRlY29kZXMgdGhlIFBORyBpbWFnZSBmb3JtYXQuCiAg
ICAgY2xhc3MgUE5HSW1hZ2VEZWNvZGVyIGZpbmFsIDogcHVibGljIEltYWdlRGVjb2RlciB7CiAg
ICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUmVmPEltYWdlRGVjb2Rlcj4gY3JlYXRlKEFscGhh
T3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbikKKyAgICAgICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXI+IGNyZWF0
ZShTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUE5HSW1hZ2VEZWNvZGVyKGFscGhhT3B0
aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOworICAgICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgUE5HSW1hZ2VEZWNvZGVyKGRhdGEsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbikpOwogICAgICAgICB9CiAKICAgICAgICAgdmlydHVhbCB+UE5HSW1h
Z2VEZWNvZGVyKCk7CkBAIC04OCw3ICs4OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUE5HSW1hZ2VEZWNvZGVyKEFscGhhT3B0aW9u
LCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgICAgIFBOR0ltYWdlRGVjb2RlcihT
aGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bik7CiAgICAgICAgIHZvaWQgdHJ5RGVjb2RlU2l6ZShib29sIGFsbERhdGFSZWNlaXZlZCkgb3Zl
cnJpZGUgeyBkZWNvZGUodHJ1ZSwgMCwgYWxsRGF0YVJlY2VpdmVkKTsgfQogCiAgICAgICAgIC8v
IERlY29kZXMgdGhlIGltYWdlLiAgSWYgfG9ubHlTaXplfCBpcyB0cnVlLCBzdG9wcyBkZWNvZGlu
ZyBhZnRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKaW5kZXggNDhjZjVhZDM2YjQu
LmViYmNmNTM2ZGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKQEAgLTQ1LDgg
KzQ1LDggQEAgaW5saW5lIFdFQlBfQ1NQX01PREUgb3V0cHV0TW9kZShib29sIGhhc0FscGhhKSB7
IHJldHVybiBoYXNBbHBoYSA/IE1PREVfYmdyQSA6IE0KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1XRUJQSW1hZ2VEZWNvZGVyOjpXRUJQSW1hZ2VEZWNvZGVyKEFscGhhT3B0aW9uIGFscGhhT3B0
aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bikKLSAgICA6IEltYWdlRGVjb2RlcihhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pCitXRUJQSW1hZ2VEZWNvZGVyOjpXRUJQSW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
IGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAgIDogSW1hZ2VEZWNvZGVyKGRhdGEsIGFs
cGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICAsIG1fZGVjb2Rlcigw
KQogICAgICwgbV9oYXNBbHBoYShmYWxzZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmgK
aW5kZXggZDc5NTZmMGNhMDEuLmM3MzU0NzgyZmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29k
ZXIuaApAQCAtMzgsOSArMzgsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdFQlBJ
bWFnZURlY29kZXIgZmluYWwgOiBwdWJsaWMgSW1hZ2VEZWNvZGVyIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPEltYWdlRGVjb2Rlcj4gY3JlYXRlKEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKKyAg
ICBzdGF0aWMgUmVmPEltYWdlRGVjb2Rlcj4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxw
aGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V0VCUEltYWdlRGVjb2RlcihhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV0VCUEltYWdlRGVjb2RlcihkYXRhLCBh
bHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKICAgICB9CiAKICAgICB2
aXJ0dWFsIH5XRUJQSW1hZ2VEZWNvZGVyKCk7CkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAg
ICBJbWFnZUZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90IGluZGV4KSBvdmVycmlkZTsK
IAogcHJpdmF0ZToKLSAgICBXRUJQSW1hZ2VEZWNvZGVyKEFscGhhT3B0aW9uLCBHYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbik7CisgICAgV0VCUEltYWdlRGVjb2RlcihTaGFyZWRCdWZmZXImIGRh
dGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAgICAgdm9pZCB0
cnlEZWNvZGVTaXplKGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBvdmVycmlkZSB7IGRlY29kZSh0cnVl
LCBhbGxEYXRhUmVjZWl2ZWQpOyB9CiAKICAgICBib29sIGRlY29kZShib29sIG9ubHlTaXplLCBi
b29sIGFsbERhdGFSZWNlaXZlZCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311871</attachid>
            <date>2017-06-02 15:15:27 -0700</date>
            <delta_ts>2017-06-02 15:33:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk172773.patch</filename>
            <type>text/plain</type>
            <size>63525</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkMmZiZmY3MzhmNi4uYzc1NzFkMjYzNDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDEgQEAKKzIwMTctMDYtMDIgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdh
QGFwcGxlLmNvbT4KKworICAgICAgICBIYXZlIGEgc2luZ2xlIEltYWdlRGVjb2RlciBoZWFkZXIg
ZmlsZSBmb3IgYWxsIHBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzI3NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBbnkgY2hhbmdlIGluIHRoZSBkZWZpbml0aW9uIG9mIEltYWdlRGVjb2RlciBo
YXMgYmVlbiBhbm5veWluZyBzaW5jZSBpdCAKKyAgICAgICAgbWVhbnMgZG9pbmcgdGhlIHNhbWUg
Y2hhbmdlIGluIHRocmVlIGhlYWRlciBmaWxlcy4gVGhpcyBwYXRjaCB3aWxsIGNvbWJpbmUKKyAg
ICAgICAgdGhlbSBpbiBvbmUgaGVhZGVyIGZpbGUgYnV0IGl0IGhhcyB0aGVzZSBkcmF3YmFja3M6
CisKKyAgICAgICAgLS0gU29tZSBvZiB0aGUgSW1hZ2VEZW9jZGVyIGZ1bmN0aW9ucyB3ZXJlIG1h
ZGUgbm9uLWNvbnN0IGJlY2F1c2UgdGhlIEdUSworICAgICAgICBkZWNvZGVyIGNhbGxzIGZyYW1l
QnVmZmVyQXRJbmRleCgpLCB3aGljaCBpcyBub24tY29uc3QgYW5kIGNhbid0IGJlIG1hZGUKKyAg
ICAgICAgY29zdCwgaW4gdGhlc2UgZnVuY3Rpb25zLgorCisgICAgICAgIC0tIFNvbWUgb2YgdGhl
IEltYWdlRGVjb2RlciBpbi1saW5lIGZ1bmN0aW9ucyB3ZXJlIG1vdmVkIGZyb20gdGhlIGhlYWRl
cgorICAgICAgICBmaWxlIHRvIHRoZSBzb3VyY2UgZmlsZXMgYmVjYXVzZSB0aGUgcGxhdGZvcm1z
IGhhdmUgZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucy4KKworICAgICAgICAtLSBTb21lIG9mIHRo
ZSBJbWFnZURlb2NkZXIgZnVuY3Rpb25zIHdlcmUgbWFkZSB2aXJ0dWFsIGJlY2F1c2UgdGhlIEdU
SworICAgICAgICBkZWNvZGVyIGNvbnNpZGVycyBJbWFnZURlb2NkZXIgdGhlIGJhc2UgY2xhc3Mg
b2YgYWxsIHRoZSBkZWNvZGVycyBhbmQgZWFjaAorICAgICAgICBkZXJpdmVkIGNsYXNzIG92ZXJy
aWRlcyB0aGVzZSBmdW5jdGlvbiB0byBoYW5kbGUgdGhlIGltYWdlIGZvcm1hdCBkaWZmZXJlbnRs
eS4KKworICAgICAgICAtLSBUaGUgaGVhZGVyIGZpbGUgc2l6ZSBiZWNvbWVzIGxhcmdlciBzaW5j
ZSBpdCBpbmNsdWRlcyBhbGwgdGhlIHNwZWNpZmljCisgICAgICAgIG1lbWJlcnMgZm9yIGFsbCBw
bGF0Zm9ybXMuIFRoaXMgY2FuIGJlIGVhc2lseSBjbGVhbmVkIHVwIGxhdGVyLgorCisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RGVjb2Rlcjo6fkltYWdlRGVjb2Rlcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6
OmlzU2l6ZUF2YWlsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmNsZWFy
RnJhbWVCdWZmZXJDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzY2FsZWRTaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c2V0UHJlbXVsdGlwbHlBbHBoYSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXI6OnByZW11bHRpcGx5QWxwaGEpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVyOjpzZXRJZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXI6Omlnbm9yZXNHYW1tYUFuZENvbG9yUHJvZmlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZhaWxlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVNvdXJjZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VU
eXBlcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRGVjb2Rlcjo6aXNBbGxEYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRGVjb2Rlcjo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUhhc0FscGhhQXRJbmRleCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oOiBSZW1vdmVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXI6OkltYWdlRGVjb2Rlcik6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjppc0FsbERhdGFSZWNlaXZl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1lSXNDb21wbGV0ZUF0SW5k
ZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1lSGFzQWxwaGFBdEluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5k
ZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3Qy
RC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVj
b2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OkltYWdlRGVjb2Rlcik6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5l
UHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnNldERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjppc0FsbERhdGFSZWNlaXZlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmVuY29kZWREYXRhU3RhdHVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c2V0RmFpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRGVjb2Rlcjo6ZmlsZW5hbWVFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
ZWNvZGVyOjpzZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6ZnJhbWVD
b3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnJlcGV0aXRpb25Db3VudCk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmhvdFNwb3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUhhc0FscGhhQXRJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZURlY29kZXI6OmZyYW1lQnl0ZXNBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlRGVjb2Rlcjo6ZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZVNpemVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRGVjb2Rlcjo6ZnJhbWVBbGxvd1N1YnNhbXBsaW5nQXRJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZURlY29kZXI6OnByZXBhcmVTY2FsZURhdGFJZk5lY2Vzc2FyeSk6CisgICAgICAg
ICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmg6IFJlbW92ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpCTVBJbWFnZURlY29kZXI6OkJNUEltYWdlRGVjb2Rlcik6CisgICAg
ICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R0lGSW1hZ2VEZWNvZGVyOjpHSUZJbWFnZURlY29kZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdlRGVjb2Rlcjo6SUNPSW1hZ2VEZWNvZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OklDT0ltYWdlRGVjb2Rlcjo6c2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJQ09JbWFnZURlY29kZXI6OmZyYW1lU2l6ZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
SUNPSW1hZ2VEZWNvZGVyOjpkZWNvZGVBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpQRUdJbWFnZURlY29kZXI6OkpQRUdJbWFnZURlY29kZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpQTkdJbWFnZURlY29kZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V0VCUEltYWdlRGVjb2Rlcjo6V0VCUEltYWdlRGVjb2Rlcik6CisgICAgICAgICog
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmg6CisKIDIwMTct
MDUtMzAgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZlcnQgYWNj
aWRlbnRhbGx5IGNoZWNrZWQgaW4gY2hhbmdlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg2YTI2YTg0YWRmLi5iMGQ3YTM2ZTVm
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMjUwMCwxMCArMjUwMCwxMCBAQAogCQk1M0VGNzY2QzE2NTMxOTk0MDA0Q0JFNDkg
LyogU2V0dGluZ3NNYWNyb3MuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRUY3NjZBMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0
aW5nc01hY3Jvcy5oICovOyB9OwogCQk1NTBBMEJDOTA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlm
aWVkTmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NTBBMEJDNzA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgKi87IH07CiAJ
CTU1MEEwQkNBMDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTBBMEJDODA4NUY2MDM5MDA3MzUz
RDYgLyogUXVhbGlmaWVkTmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTU1MzRFRTkyMUVERTU2OEQwMDgxOEMwNCAvKiBJbWFnZURlY29kZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MzRFRTkx
MUVERTU2ODkwMDgxOEMwNCAvKiBJbWFnZURlY29kZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NTUwQ0I0MjFFOTU1RTNDMDAxMTFBQTAgLyog
SW1hZ2VUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTU1MENCNDExRTk1NUUzQzAwMTExQUEwIC8qIEltYWdlVHlwZXMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NTUxMzAwMTFFN0NDQ0NCMDBB
NjlFMzggLyogRGVjb2RpbmdPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1NTUxMzAwMDFFN0NDQ0NBMDBBNjlFMzggLyogRGVjb2RpbmdPcHRp
b25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NTU1Qjg3RUMxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1NUI4N0VBMUNBQUYwQUIwMDM0
OTQyNSAvKiBJbWFnZURlY29kZXJDRy5jcHAgKi87IH07Ci0JCTU1NUI4N0VEMUNBQUYwQUIwMDM0
OTQyNSAvKiBJbWFnZURlY29kZXJDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTU1Qjg3RUIxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNH
LmggKi87IH07CiAJCTU1NzZBNTY0MUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1NzZBNTYyMUQ4
OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmNwcCAqLzsgfTsKIAkJNTU3NkE1NjUxRDg4QTcw
ODAwQ0NDMDRDIC8qIEltYWdlRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU1NzZBNTYzMUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTU5N0Y4
MjYxRDkxQzMxMzAwNjZCQzIxIC8qIEltYWdlRnJhbWVDYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTk3RjgyNDFEOTFDMzEzMDA2NkJDMjEg
LyogSW1hZ2VGcmFtZUNhY2hlLmNwcCAqLzsgfTsKQEAgLTEwMjcxLDEwICsxMDI3MSwxMCBAQAog
CQk1M0VGNzY2QTE2NTMwQTYxMDA0Q0JFNDkgLyogU2V0dGluZ3NNYWNyb3MuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2V0dGluZ3NNYWNyb3MuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTUwQTBCQzcwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRl
bnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUXVhbGlmaWVkTmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0g
ODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlm
aWVkTmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBRdWFsaWZpZWROYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0g
ODsgdXNlc1RhYnMgPSAwOyB9OworCQk1NTM0RUU5MTFFREU1Njg5MDA4MThDMDQgLyogSW1hZ2VE
ZWNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlRGVjb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1NTUwQ0I0MTFFOTU1RTNDMDAxMTFBQTAgLyogSW1hZ2VUeXBlcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZVR5cGVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTU1NTEzMDAwMUU3Q0NDQ0EwMEE2OUUzOCAvKiBEZWNvZGluZ09w
dGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVjb2RpbmdPcHRpb25z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1NUI4N0VBMUNBQUYwQUIwMDM0OTQy
NSAvKiBJbWFnZURlY29kZXJDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJbWFnZURlY29kZXJDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU1
NUI4N0VCMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZURlY29kZXJDRy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1NTc2QTU2MjFEODhBNzA4MDBDQ0MwNEMgLyogSW1hZ2VGcmFtZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUZyYW1lLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTU3NkE1NjMxRDg4QTcwODAwQ0NDMDRDIC8qIEltYWdl
RnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VGcmFtZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTk3RjgyNDFEOTFDMzEzMDA2NkJDMjEgLyog
SW1hZ2VGcmFtZUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEltYWdlRnJhbWVDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzA1
NCw3ICsyMzA1NCw2IEBACiAJCQkJMjJCRDlGODAxMzUzNjRGRTAwOUJEMTAyIC8qIEltYWdlQnVm
ZmVyRGF0YUNHLmggKi8sCiAJCQkJQjI3NTM1MzAwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlQ0cu
Y3BwICovLAogCQkJCTU1NUI4N0VBMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5j
cHAgKi8sCi0JCQkJNTU1Qjg3RUIxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmgg
Ki8sCiAJCQkJNEIzNDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0cuaCAqLywK
IAkJCQk0QjM0ODA5MTBFRUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VDR01hYy5tbSAqLywK
IAkJCQlCMjc1MzUzMjBCMDUzODE0MDAyQ0U2NEYgLyogSW50UG9pbnRDRy5jcHAgKi8sCkBAIC0y
MzIyOCw2ICsyMzIyNyw3IEBACiAJCQkJNDNEMjU5NzYxM0M4MTZGNDAwNjA4NTU5IC8qIEltYWdl
QnVmZmVyLmNwcCAqLywKIAkJCQlCMkExMEI5MTBCMzgxOEJEMDAwOTlBQTQgLyogSW1hZ2VCdWZm
ZXIuaCAqLywKIAkJCQkyMkJEOUY3RDEzNTM2MjVDMDA5QkQxMDIgLyogSW1hZ2VCdWZmZXJEYXRh
LmggKi8sCisJCQkJNTUzNEVFOTExRURFNTY4OTAwODE4QzA0IC8qIEltYWdlRGVjb2Rlci5oICov
LAogCQkJCTU1NzZBNTYyMUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmNwcCAqLywKIAkJ
CQk1NTc2QTU2MzFEODhBNzA4MDBDQ0MwNEMgLyogSW1hZ2VGcmFtZS5oICovLAogCQkJCTU1OTdG
ODI0MUQ5MUMzMTMwMDY2QkMyMSAvKiBJbWFnZUZyYW1lQ2FjaGUuY3BwICovLApAQCAtMjc2NzEs
NyArMjc2NzEsNiBAQAogCQkJCTUxMDE5MkQ2MThCNkI5QjcwMDdGQzdBMSAvKiBJbWFnZUNvbnRy
b2xzUm9vdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDE5MkQyMThCNkI5QUIwMDdG
QzdBMSAvKiBJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE3Nzk3OTFBMEQ2QjlEMEMwMDM4NTFCOSAvKiBJbWFnZURhdGEuaCBpbiBIZWFkZXJzICovLAot
CQkJCTU1NUI4N0VEMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTcyMDVBQjYxMjM5MjkxMDAwQjE3MzgwIC8qIEltYWdlRG9jdW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTU1NzZBNTY1MUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1l
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1NTk3RjgyNzFEOTFDMzEzMDA2NkJDMjEgLyogSW1hZ2VG
cmFtZUNhY2hlLmggaW4gSGVhZGVycyAqLywKQEAgLTI4MjMwLDYgKzI4MjI5LDcgQEAKIAkJCQkz
MTZEQ0I0RTFFNzkxMEE2MDAxQjVGODcgLyogSlNSVENJY2VHYXRoZXJpbmdTdGF0ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDczNzk0RUMxOUVFMzQxRTAwRTVBMDQ1IC8qIEpTUlRDSWNlU2VydmVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTZEQ0IyMDFFNzhDQTU1MDAxQjVGODcgLyogSlNSVENP
ZmZlckFuc3dlck9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1MzRFRTkyMUVERTU2OEQw
MDgxOEMwNCAvKiBJbWFnZURlY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OTY5REJBMTdE
MTQxNTEwMDdGRjg0MiAvKiBKU1JUQ1BlZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwNzk2OURCODE3RDE0MTUxMDA3RkY4NDIgLyogSlNSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1RTJDNDM3NDFCQ0YwRDc1MDAwMUUyQkUgLyogSlNSVENS
dHBQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLjJhZGRjYWRjOWU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgKQEAgLTAsMCArMSwxMzkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYsIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIkRlY29kaW5nT3B0aW9ucy5oIgorI2lmICFVU0UoQ0cpICYmICFVU0Uo
RElSRUNUMkQpCisjaW5jbHVkZSAiSW1hZ2VGcmFtZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgorI2VuZGlmCisjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgorI2luY2x1ZGUgIklt
YWdlVHlwZXMuaCIKKyNpbmNsdWRlICJJbnRQb2ludC5oIgorI2luY2x1ZGUgIkludFNpemUuaCIK
KyNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCisjaWYgVVNFKENHKQordHlwZWRl
ZiBzdHJ1Y3QgQ0dJbWFnZVNvdXJjZSogQ0dJbWFnZVNvdXJjZVJlZjsKKyNlbGlmIFVTRShESVJF
Q1QyRCkKK2ludGVyZmFjZSBJRDJEMVJlbmRlclRhcmdldDsKK2ludGVyZmFjZSBJV0lDQml0bWFw
RGVjb2RlcjsKK2ludGVyZmFjZSBJV0lDSW1hZ2luZ0ZhY3Rvcnk7CisjZW5kaWYKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworICAgIAorY2xhc3MgU2hhcmVkQnVmZmVyOworCitjbGFzcyBJbWFnZURl
Y29kZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW1hZ2VEZWNvZGVyPiB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VEZWNvZGVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CitwdWJsaWM6CisgICAgSW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFP
cHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICB2aXJ0dWFsIH5JbWFnZURl
Y29kZXIoKSB7IH0KKworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoU2hh
cmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
OworICAgIHN0YXRpYyBzaXplX3QgYnl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCk7
CisKKyAgICBFbmNvZGVkRGF0YVN0YXR1cyBlbmNvZGVkRGF0YVN0YXR1cygpIGNvbnN0OworICAg
IGJvb2wgaXNTaXplQXZhaWxhYmxlKCkgY29uc3QgeyByZXR1cm4gZW5jb2RlZERhdGFTdGF0dXMo
KSA+PSBFbmNvZGVkRGF0YVN0YXR1czo6U2l6ZUF2YWlsYWJsZTsgfQorICAgIHZpcnR1YWwgc2l6
ZV90IGZyYW1lQ291bnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFJlcGV0aXRpb25Db3VudCByZXBl
dGl0aW9uQ291bnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lv
bigpIGNvbnN0OworICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgp
IGNvbnN0OworCisgICAgdmlydHVhbCBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBT
dWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCkgY29uc3Q7CisgICAg
Ym9vbCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCk7CisgICAgSW1hZ2VPcmllbnRhdGlv
biBmcmFtZU9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0OworCisgICAgZmxvYXQgZnJh
bWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90KTsKKyAgICBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4
KHNpemVfdCk7CisgICAgYm9vbCBmcmFtZUFsbG93U3Vic2FtcGxpbmdBdEluZGV4KHNpemVfdCkg
Y29uc3Q7CisgICAgdW5zaWduZWQgZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGlu
Z0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCkgY29uc3Q7CisKKyAgICBOYXRpdmVJ
bWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwg
PSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVj
b2RpbmdNb2RlOjpTeW5jaHJvbm91cyk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShTaGFy
ZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgYm9vbCBpc0FsbERhdGFSZWNl
aXZlZCgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6
ZV90KSB7IH0KKworI2lmIFVTRShDRykKKyAgICBTdHJpbmcgdXRpKCkgY29uc3Q7CisjZWxpZiBV
U0UoRElSRUNUMkQpCisgICAgdm9pZCBzZXRUYXJnZXRDb250ZXh0KElEMkQxUmVuZGVyVGFyZ2V0
Kik7CisgICAgc3RhdGljIElXSUNJbWFnaW5nRmFjdG9yeSogc3lzdGVtSW1hZ2luZ0ZhY3Rvcnko
KTsKKyNlbHNlCisgICAgdmlydHVhbCBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBpc1Np
emVBdmFpbGFibGUoKSA/IG1fc2l6ZSA6IEludFNpemUoKTsgfQorcHJvdGVjdGVkOgorICAgIHZp
cnR1YWwgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUmKTsKKyAgICBJbnRTaXplIHNjYWxlZFNp
emUoKSB7IHJldHVybiBtX3NjYWxlZCA/IEludFNpemUobV9zY2FsZWRDb2x1bW5zLnNpemUoKSwg
bV9zY2FsZWRSb3dzLnNpemUoKSkgOiBzaXplKCk7IH0KKyAgICAKKyAgICB2b2lkIHNldFByZW11
bHRpcGx5QWxwaGEoYm9vbCBwcmVtdWx0aXBseUFscGhhKSB7ICBtX3ByZW11bHRpcGx5QWxwaGEg
PSBwcmVtdWx0aXBseUFscGhhOyB9CisgICAgYm9vbCBwcmVtdWx0aXBseUFscGhhKCkgY29uc3Qg
eyByZXR1cm4gbV9wcmVtdWx0aXBseUFscGhhOyB9CisgICAgdm9pZCBzZXRJZ25vcmVHYW1tYUFu
ZENvbG9yUHJvZmlsZShib29sIGlnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKSB7IG1faWdub3Jl
R2FtbWFBbmRDb2xvclByb2ZpbGUgPSBpZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZTsgfQorICAg
IGJvb2wgaWdub3Jlc0dhbW1hQW5kQ29sb3JQcm9maWxlKCkgY29uc3QgeyByZXR1cm4gbV9pZ25v
cmVHYW1tYUFuZENvbG9yUHJvZmlsZTsgfQorICAgIAorICAgIHZpcnR1YWwgdm9pZCB0cnlEZWNv
ZGVTaXplKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0RmFpbGVkKCk7CisgICAgYm9v
bCBmYWlsZWQoKSBjb25zdCB7IHJldHVybiBtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWRE
YXRhU3RhdHVzOjpFcnJvcjsgfQorICAgIAorICAgIHZpcnR1YWwgSW1hZ2VGcmFtZSogZnJhbWVC
dWZmZXJBdEluZGV4KHNpemVfdCkgPSAwOworCisgICAgdm9pZCBwcmVwYXJlU2NhbGVEYXRhSWZO
ZWNlc3NhcnkoKTsKKyAgICBpbnQgdXBwZXJCb3VuZFNjYWxlZFgoaW50IG9yaWdYLCBpbnQgc2Vh
cmNoU3RhcnQgPSAwKTsKKyAgICBpbnQgbG93ZXJCb3VuZFNjYWxlZFgoaW50IG9yaWdYLCBpbnQg
c2VhcmNoU3RhcnQgPSAwKTsKKyAgICBpbnQgdXBwZXJCb3VuZFNjYWxlZFkoaW50IG9yaWdZLCBp
bnQgc2VhcmNoU3RhcnQgPSAwKTsKKyAgICBpbnQgbG93ZXJCb3VuZFNjYWxlZFkoaW50IG9yaWdZ
LCBpbnQgc2VhcmNoU3RhcnQgPSAwKTsKKyAgICBpbnQgc2NhbGVkWShpbnQgb3JpZ1ksIGludCBz
ZWFyY2hTdGFydCA9IDApOworI2VuZGlmCisKK3Byb3RlY3RlZDoKKyNpZiBVU0UoQ0cpCisgICAg
UmV0YWluUHRyPENHSW1hZ2VTb3VyY2VSZWY+IG1fbmF0aXZlRGVjb2RlcjsKKyAgICBib29sIG1f
aXNBbGxEYXRhUmVjZWl2ZWQgeyBmYWxzZSB9OworI2VsaWYgVVNFKERJUkVDVDJEKQorICAgIENP
TVB0cjxJV0lDQml0bWFwRGVjb2Rlcj4gbV9uYXRpdmVEZWNvZGVyOworICAgIENPTVB0cjxJRDJE
MVJlbmRlclRhcmdldD4gbV9yZW5kZXJUYXJnZXQ7CisjZWxzZQorICAgIGJvb2wgbV9wcmVtdWx0
aXBseUFscGhhOworICAgIGJvb2wgbV9pZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZTsKKworICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YTsgLy8gVGhlIGVuY29kZWQgZGF0YS4KKyAgICBW
ZWN0b3I8SW1hZ2VGcmFtZSwgMT4gbV9mcmFtZUJ1ZmZlckNhY2hlOworICAgIEVuY29kZWREYXRh
U3RhdHVzIG1fZW5jb2RlZERhdGFTdGF0dXMgeyBFbmNvZGVkRGF0YVN0YXR1czo6VHlwZUF2YWls
YWJsZSB9OworICAgIGJvb2wgbV9kZWNvZGluZ1NpemVGcm9tU2V0RGF0YSB7IGZhbHNlIH07CisK
KyAgICBJbnRTaXplIG1fc2l6ZTsKKyAgICBJbWFnZU9yaWVudGF0aW9uIG1fb3JpZW50YXRpb247
CisKKyAgICBib29sIG1fc2NhbGVkIHsgZmFsc2UgfTsKKyAgICBWZWN0b3I8aW50PiBtX3NjYWxl
ZENvbHVtbnM7CisgICAgVmVjdG9yPGludD4gbV9zY2FsZWRSb3dzOworI2VuZGlmCit9OworCit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1l
Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNh
Y2hlLmNwcAppbmRleCBhNzQ1ZWE4MDE2Ny4uMjBlNWY4NDA4YWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmNwcApAQCAtMjcs
MjMgKzI3LDE0IEBACiAjaW5jbHVkZSAiSW1hZ2VGcmFtZUNhY2hlLmgiCiAKICNpbmNsdWRlICJJ
bWFnZS5oIgorI2luY2x1ZGUgIkltYWdlRGVjb2Rlci5oIgogI2luY2x1ZGUgIkltYWdlT2JzZXJ2
ZXIuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiVVJMLmgiCi0jaW5jbHVkZSA8
d3RmL1N5c3RlbVRyYWNpbmcuaD4KLQotI2lmIFVTRShDRykKLSNpbmNsdWRlICJJbWFnZURlY29k
ZXJDRy5oIgotI2VsaWYgVVNFKERJUkVDVDJEKQotI2luY2x1ZGUgIkltYWdlRGVjb2RlckRpcmVj
dDJELmgiCi0jaW5jbHVkZSA8V2luQ29kZWMuaD4KLSNlbHNlCi0jaW5jbHVkZSAiSW1hZ2VEZWNv
ZGVyLmgiCi0jZW5kaWYKLQogI2luY2x1ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2lu
Y2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNs
dWRlIDx3dGYvU3lzdGVtVHJhY2luZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRleCAz
ZDQ4M2ZiOTM5Ny4uMWQ0NjY3ODA2NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZVNvdXJjZS5jcHAKQEAgLTMwLDE5ICszMCwxMiBAQAogI2luY2x1ZGUg
IkltYWdlU291cmNlLmgiCiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRl
ICJJbWFnZURlY29kZXIuaCIKKyNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCiAKLSNpZiBV
U0UoQ0cpCi0jaW5jbHVkZSAiSW1hZ2VEZWNvZGVyQ0cuaCIKLSNpZiBQTEFURk9STShXSU4pCisj
aWYgVVNFKENHKSAmJiBQTEFURk9STShXSU4pCiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJm
YWNlL1dlYktpdFN5c3RlbUludGVyZmFjZS5oPgogI2VuZGlmCi0jZWxpZiBVU0UoRElSRUNUMkQp
Ci0jaW5jbHVkZSAiSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaCIKLSNlbHNlCi0jaW5jbHVkZSAiSW1h
Z2VEZWNvZGVyLmgiCi0jZW5kaWYKLQotI2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKICNp
bmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VUeXBlcy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VUeXBlcy5oCmluZGV4IGRiNjEyMTJl
MmVmLi43NTExNzNiMWE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlVHlwZXMuaApAQCAtMjUsMTAgKzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBV
U0UoQ0cpCi10eXBlZGVmIHN0cnVjdCBDR0ltYWdlU291cmNlKiBDR0ltYWdlU291cmNlUmVmOwot
I2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gVGhlcmUgYXJlIGZvdXIgc3Vic2Ft
cGxpbmcgbGV2ZWxzOiAwID0gMXgsIDEgPSAwLjV4LCAyID0gMC4yNXgsIDMgPSAwLjEyNXguCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29k
ZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29k
ZXJDRy5jcHAKaW5kZXggYzdlMTE0ZWYxMjcuLjQ2MDA2NDIzYWM0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBA
IC0yNCwxNSArMjQsMTMgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
SW1hZ2VEZWNvZGVyQ0cuaCIKKyNpbmNsdWRlICJJbWFnZURlY29kZXIuaCIKIAogI2lmIFVTRShD
RykKIAogI2luY2x1ZGUgIkltYWdlSU9TUEkuaCIKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9u
LmgiCiAjaW5jbHVkZSAiSW1hZ2VTb3VyY2VDRy5oIgotI2luY2x1ZGUgIkludFBvaW50LmgiCi0j
aW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTaGFy
ZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTE2Myw2ICsx
NjEsMTEgQEAgSW1hZ2VEZWNvZGVyOjpJbWFnZURlY29kZXIoU2hhcmVkQnVmZmVyJiBkYXRhLCBB
bHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGUKICAgICAgICAgbV9uYXRpdmVEZWNvZGVy
ID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ3JlYXRlSW5jcmVtZW50YWwobnVsbHB0cikpOwogfQog
CitSZWZQdHI8SW1hZ2VEZWNvZGVyPiBJbWFnZURlY29kZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXIm
IGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
biBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEltYWdlRGVjb2RlcihkYXRhLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pKTsKK30KKwogc2l6ZV90IEltYWdlRGVjb2Rlcjo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQ
cm9wZXJ0aWVzKCkKIHsKICAgICAvLyBNZWFzdXJlZCBieSB0cmFjaW5nIG1hbGxvYy9jYWxsb2Mg
Y2FsbHMgb24gTWFjIE9TIDEwLjYuNiwgeDg2XzY0LgpAQCAtMTczLDcgKzE3Niw3IEBAIHNpemVf
dCBJbWFnZURlY29kZXI6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpCiAgICAg
Ly8gYmVoYXZpb3IgaXMgdW5jaGFuZ2VkLgogICAgIHJldHVybiAxMzA4ODsKIH0KLSAgICAKKwog
U3RyaW5nIEltYWdlRGVjb2Rlcjo6dXRpKCkgY29uc3QKIHsKICAgICByZXR1cm4gQ0dJbWFnZVNv
dXJjZUdldFR5cGUobV9uYXRpdmVEZWNvZGVyLmdldCgpKTsKQEAgLTE4NCw2ICsxODcsMTEgQEAg
U3RyaW5nIEltYWdlRGVjb2Rlcjo6ZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdAogICAgIHJldHVy
biBXZWJDb3JlOjpwcmVmZXJyZWRFeHRlbnNpb25Gb3JJbWFnZVNvdXJjZVR5cGUodXRpKCkpOwog
fQogCitib29sIEltYWdlRGVjb2Rlcjo6aXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdAoreworICAg
IHJldHVybiBtX2lzQWxsRGF0YVJlY2VpdmVkOworfQorCiBFbmNvZGVkRGF0YVN0YXR1cyBJbWFn
ZURlY29kZXI6OmVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKENHSW1h
Z2VTb3VyY2VHZXRTdGF0dXMobV9uYXRpdmVEZWNvZGVyLmdldCgpKSkgewpAQCAtMzAwLDcgKzMw
OCw3IEBAIEludFNpemUgSW1hZ2VEZWNvZGVyOjpmcmFtZVNpemVBdEluZGV4KHNpemVfdCBpbmRl
eCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluCiAgICAgcmV0dXJuIEludFNpemUod2lkdGgs
IGhlaWdodCk7CiB9CiAKLWJvb2wgSW1hZ2VEZWNvZGVyOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4
KHNpemVfdCBpbmRleCkgY29uc3QKK2Jvb2wgSW1hZ2VEZWNvZGVyOjpmcmFtZUlzQ29tcGxldGVB
dEluZGV4KHNpemVfdCBpbmRleCkKIHsKICAgICBBU1NFUlQoZnJhbWVDb3VudCgpKTsKICAgICAv
LyBDR0ltYWdlU291cmNlR2V0U3RhdHVzQXRJbmRleCgpIGNoYW5nZXMgdGhlIHJldHVybiBzdGF0
dXMgdmFsdWUgZnJvbSBrQ0dJbWFnZVN0YXR1c0luY29tcGxldGUKQEAgLTMyMSw3ICszMjksNyBA
QCBJbWFnZU9yaWVudGF0aW9uIEltYWdlRGVjb2Rlcjo6ZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgo
c2l6ZV90IGluZGV4KSBjb25zdAogICAgIHJldHVybiBvcmllbnRhdGlvbkZyb21Qcm9wZXJ0aWVz
KHByb3BlcnRpZXMuZ2V0KCkpOwogfQogCi1mbG9hdCBJbWFnZURlY29kZXI6OmZyYW1lRHVyYXRp
b25BdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKK2Zsb2F0IEltYWdlRGVjb2Rlcjo6ZnJhbWVE
dXJhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KQogewogICAgIGZsb2F0IGR1cmF0aW9uID0gMDsK
ICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBwcm9wZXJ0aWVzID0gYWRvcHRDRihDR0lt
YWdlU291cmNlQ29weVByb3BlcnRpZXNBdEluZGV4KG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgaW5k
ZXgsIGltYWdlU291cmNlT3B0aW9ucygpLmdldCgpKSk7CkBAIC0zNzcsNyArMzg1LDcgQEAgYm9v
bCBJbWFnZURlY29kZXI6OmZyYW1lQWxsb3dTdWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBjb25z
dAogICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIEltYWdlRGVjb2Rlcjo6ZnJhbWVIYXNBbHBo
YUF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAorYm9vbCBJbWFnZURlY29kZXI6OmZyYW1lSGFz
QWxwaGFBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKICAgICBpZiAoIWZyYW1lSXNDb21wbGV0ZUF0
SW5kZXgoaW5kZXgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQwMSw3ICs0MDksNyBAQCB1
bnNpZ25lZCBJbWFnZURlY29kZXI6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vi
c2FtcGxpbmdMZXZlbCBzdWJzYW1wbAogICAgIHJldHVybiAoZnJhbWVTaXplLmFyZWEoKSAqIDQp
LnVuc2FmZUdldCgpOwogfQogCi1OYXRpdmVJbWFnZVB0ciBJbWFnZURlY29kZXI6OmNyZWF0ZUZy
YW1lSW1hZ2VBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGlu
Z0xldmVsLCBjb25zdCBEZWNvZGluZ09wdGlvbnMmIGRlY29kaW5nT3B0aW9ucykgY29uc3QKK05h
dGl2ZUltYWdlUHRyIEltYWdlRGVjb2Rlcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90
IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5n
T3B0aW9ucyYgZGVjb2RpbmdPcHRpb25zKQogewogICAgIExPRyhJbWFnZXMsICJJbWFnZURlY29k
ZXIgJXAgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXggJWx1IiwgdGhpcywgaW5kZXgpOwogICAgIFJl
dGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IG9wdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMmMyODRlNzFmZjQuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw4MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgot
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJEZWNvZGluZ09wdGlvbnMuaCIKLSNpbmNs
dWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCi0jaW5jbHVkZSAiSW1hZ2VUeXBlcy5oIgotI2luY2x1
ZGUgIkludFBvaW50LmgiCi0jaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIk5hdGl2ZUlt
YWdlLmgiCi0jaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZFNh
ZmVSZWZDb3VudGVkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKLWNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKLSAgICAKLWNsYXNzIEltYWdlRGVjb2RlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVm
Q291bnRlZDxJbWFnZURlY29kZXI+IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1
YmxpYzoKLSAgICBJbWFnZURlY29kZXIoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwg
R2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwotCi0gICAgc3RhdGljIFJlZjxJbWFnZURlY29k
ZXI+IGNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGVjb2RlcihkYXRhLCBhbHBo
YU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKLSAgICB9Ci0gICAgCi0gICAg
c3RhdGljIHNpemVfdCBieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKTsKLQotICAg
IEVuY29kZWREYXRhU3RhdHVzIGVuY29kZWREYXRhU3RhdHVzKCkgY29uc3Q7Ci0gICAgYm9vbCBp
c1NpemVBdmFpbGFibGUoKSB7IHJldHVybiBlbmNvZGVkRGF0YVN0YXR1cygpID49IEVuY29kZWRE
YXRhU3RhdHVzOjpTaXplQXZhaWxhYmxlOyB9Ci0gICAgc2l6ZV90IGZyYW1lQ291bnQoKSBjb25z
dDsKLSAgICBSZXBldGl0aW9uQ291bnQgcmVwZXRpdGlvbkNvdW50KCkgY29uc3Q7Ci0gICAgU3Ry
aW5nIHV0aSgpIGNvbnN0OwotICAgIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0Owot
ICAgIHN0ZDo6b3B0aW9uYWw8SW50UG9pbnQ+IGhvdFNwb3QoKSBjb25zdDsKLQotICAgIEludFNp
emUgZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGlu
Z0xldmVsOjpEZWZhdWx0KSBjb25zdDsKLSAgICBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgo
c2l6ZV90KSBjb25zdDsKLSAgICBJbWFnZU9yaWVudGF0aW9uIGZyYW1lT3JpZW50YXRpb25BdElu
ZGV4KHNpemVfdCkgY29uc3Q7Ci0gICAgCi0gICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5kZXgo
c2l6ZV90KSBjb25zdDsKLSAgICBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCkgY29u
c3Q7Ci0gICAgYm9vbCBmcmFtZUFsbG93U3Vic2FtcGxpbmdBdEluZGV4KHNpemVfdCkgY29uc3Q7
Ci0gICAgdW5zaWduZWQgZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVs
ID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCkgY29uc3Q7Ci0gICAgCi0gICAgTmF0aXZlSW1h
Z2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0g
U3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29k
aW5nTW9kZTo6U3luY2hyb25vdXMpIGNvbnN0OwotICAgIAotICAgIHZvaWQgc2V0RGF0YShTaGFy
ZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCk7Ci0gICAgYm9vbCBpc0FsbERhdGFSZWNl
aXZlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNBbGxEYXRhUmVjZWl2ZWQ7IH0KLSAgICB2b2lkIGNs
ZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIHsgfQotICAgIAotcHJvdGVjdGVkOgotICAgIGJv
b2wgbV9pc0FsbERhdGFSZWNlaXZlZCB7IGZhbHNlIH07Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VT
b3VyY2VSZWY+IG1fbmF0aXZlRGVjb2RlcjsKLX07Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQu
Y3BwCmluZGV4IDZhYmU3ZTNlYWU1Li5iYmJiNTljMjc1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0
MkQuY3BwCkBAIC0yNCwxNCArMjQsMTIgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaCIKKyNpbmNsdWRlICJJbWFnZURlY29kZXIi
CiAKICNpZiBVU0UoRElSRUNUMkQpCiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNp
bmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCi0jaW5jbHVkZSAiSW50UG9pbnQuaCIKLSNpbmNs
dWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCkBAIC00MSwxMCArMzksMTUgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JbWFnZURlY29kZXI6OkltYWdlRGVjb2RlcigpCitJ
bWFnZURlY29kZXI6OkltYWdlRGVjb2RlcihTaGFyZWRCdWZmZXImLCBBbHBoYU9wdGlvbiwgR2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiB7CiB9CiAKK1JlZlB0cjxJbWFnZURlY29kZXI+IGNy
ZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEltYWdlRGVjb2RlcihkYXRhLCBhbHBoYU9wdGlvbiwgZ2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pKTsKK30KKwogSVdJQ0ltYWdpbmdGYWN0b3J5KiBJbWFnZURl
Y29kZXI6OnN5c3RlbUltYWdpbmdGYWN0b3J5KCkKIHsKICAgICBzdGF0aWMgSVdJQ0ltYWdpbmdG
YWN0b3J5KiB3aWNJbWFnaW5nRmFjdG9yeSA9IG51bGxwdHI7CkBAIC03OSw2ICs4MiwxMiBAQCBF
bmNvZGVkRGF0YVN0YXR1cyBJbWFnZURlY29kZXI6OmVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QK
ICAgICByZXR1cm4gRW5jb2RlZERhdGFTdGF0dXM6OlVua25vd247CiB9CiAKK2Jvb2wgSW1hZ2VE
ZWNvZGVyOjppc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIEludFNpemUgSW1hZ2VEZWNvZGVyOjpzaXplKCkg
Y29uc3QKIHsKICAgICBpZiAoIW1fbmF0aXZlRGVjb2RlcikKQEAgLTEzOCw3ICsxNDcsNyBAQCBJ
bnRTaXplIEltYWdlRGVjb2Rlcjo6ZnJhbWVTaXplQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNh
bXBsaW5nTGV2ZWwgc3Vic2FtcGxpbgogICAgIHJldHVybiBJbnRTaXplKHdpZHRoLCBoZWlnaHQp
OwogfQogCi1ib29sIEltYWdlRGVjb2Rlcjo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3Qg
aW5kZXgpIGNvbnN0Citib29sIEltYWdlRGVjb2Rlcjo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChz
aXplX3QgaW5kZXgpCiB7CiAgICAgaWYgKCFtX25hdGl2ZURlY29kZXIpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTE1NCw3ICsxNjMsNyBAQCBJbWFnZU9yaWVudGF0aW9uIEltYWdlRGVjb2Rl
cjo6ZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAogICAgIHJldHVy
biBJbWFnZU9yaWVudGF0aW9uKCk7CiB9CiAKLWZsb2F0IEltYWdlRGVjb2Rlcjo6ZnJhbWVEdXJh
dGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAorZmxvYXQgSW1hZ2VEZWNvZGVyOjpmcmFt
ZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
ICAgICByZXR1cm4gMDsKQEAgLTE2Niw3ICsxNzUsNyBAQCBib29sIEltYWdlRGVjb2Rlcjo6ZnJh
bWVBbGxvd1N1YnNhbXBsaW5nQXRJbmRleChzaXplX3QpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLWJvb2wgSW1hZ2VEZWNvZGVyOjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5k
ZXgpIGNvbnN0Citib29sIEltYWdlRGVjb2Rlcjo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90
IGluZGV4KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0x
ODYsNyArMTk1LDcgQEAgdm9pZCBJbWFnZURlY29kZXI6OnNldFRhcmdldENvbnRleHQoSUQyRDFS
ZW5kZXJUYXJnZXQqIHJlbmRlclRhcmdldCkKICAgICBtX3JlbmRlclRhcmdldCA9IHJlbmRlclRh
cmdldDsKIH0KIAotTmF0aXZlSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyOjpjcmVhdGVGcmFtZUltYWdl
QXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwg
Y29uc3QgRGVjb2RpbmdPcHRpb25zJikgY29uc3QKK05hdGl2ZUltYWdlUHRyIEltYWdlRGVjb2Rl
cjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVs
IHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCiB7CiAgICAgaWYgKCFt
X25hdGl2ZURlY29kZXIgfHwgIW1fcmVuZGVyVGFyZ2V0KQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFn
ZURlY29kZXJEaXJlY3QyRC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlRGVjb2RlckRpcmVjdDJELmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBi
ZDRkNmY2N2U2Li4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuaAorKysgL2Rldi9udWxsCkBAIC0xLDg4ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
LSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2luY2x1ZGUgIkNPTVB0ci5oIgotI2luY2x1ZGUgIkltYWdlU291cmNlLmgi
Ci0jaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgotCi1pbnRl
cmZhY2UgSUQyRDFSZW5kZXJUYXJnZXQ7Ci1pbnRlcmZhY2UgSVdJQ0JpdG1hcERlY29kZXI7Ci1p
bnRlcmZhY2UgSVdJQ0ltYWdpbmdGYWN0b3J5OwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNs
YXNzIEltYWdlRGVjb2RlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbWFnZURlY29k
ZXI+IHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBJbWFnZURl
Y29kZXIoKTsKLSAgICAKLSAgICBzdGF0aWMgUmVmPEltYWdlRGVjb2Rlcj4gY3JlYXRlKFNoYXJl
ZEJ1ZmZlciYsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKLSAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEltYWdlRGVjb2RlcigpKTsKLSAgICB9Ci0g
ICAgCi0gICAgc3RhdGljIHNpemVfdCBieXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMo
KTsKLSAgICAKLSAgICBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdDsKLSAgICBFbmNv
ZGVkRGF0YVN0YXR1cyBlbmNvZGVkRGF0YVN0YXR1cygpIGNvbnN0OwotICAgIGJvb2wgaXNTaXpl
QXZhaWxhYmxlKCkgY29uc3Q7Ci0gICAgCi0gICAgLy8gQWx3YXlzIG9yaWdpbmFsIHNpemUsIHdp
dGhvdXQgc3Vic2FtcGxpbmcuCi0gICAgSW50U2l6ZSBzaXplKCkgY29uc3Q7Ci0gICAgc2l6ZV90
IGZyYW1lQ291bnQoKSBjb25zdDsKLQotICAgIFJlcGV0aXRpb25Db3VudCByZXBldGl0aW9uQ291
bnQoKSBjb25zdDsKLSAgICBzdGQ6Om9wdGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3Q7
Ci0gICAgCi0gICAgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdM
ZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpIGNvbnN0OwotICAgIGJvb2wgZnJhbWVJ
c0NvbXBsZXRlQXRJbmRleChzaXplX3QpIGNvbnN0OwotICAgIEltYWdlT3JpZW50YXRpb24gZnJh
bWVPcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90KSBjb25zdDsKLSAgICAKLSAgICBmbG9hdCBmcmFt
ZUR1cmF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0OwotICAgIGJvb2wgZnJhbWVIYXNBbHBoYUF0
SW5kZXgoc2l6ZV90KSBjb25zdDsKLSAgICBib29sIGZyYW1lQWxsb3dTdWJzYW1wbGluZ0F0SW5k
ZXgoc2l6ZV90KSBjb25zdDsKLSAgICB1bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3Qs
IFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdDsKLSAg
ICAKLSAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1
YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGlu
Z09wdGlvbnMmID0gRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cykgY29uc3Q7Ci0gICAgCi0gICAg
dm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAgICBi
b29sIGlzQWxsRGF0YVJlY2VpdmVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZl
ZDsgfQotICAgIHZvaWQgY2xlYXJGcmFtZUJ1ZmZlckNhY2hlKHNpemVfdCkgeyB9Ci0KLSAgICB2
b2lkIHNldFRhcmdldENvbnRleHQoSUQyRDFSZW5kZXJUYXJnZXQqKTsKLQotICAgIHN0YXRpYyBJ
V0lDSW1hZ2luZ0ZhY3RvcnkqIHN5c3RlbUltYWdpbmdGYWN0b3J5KCk7Ci0KLXByb3RlY3RlZDoK
LSAgICBib29sIG1faXNBbGxEYXRhUmVjZWl2ZWQgeyBmYWxzZSB9OwotICAgIG11dGFibGUgSW50
U2l6ZSBtX3NpemU7Ci0gICAgQ09NUHRyPElXSUNCaXRtYXBEZWNvZGVyPiBtX25hdGl2ZURlY29k
ZXI7Ci0gICAgQ09NUHRyPElEMkQxUmVuZGVyVGFyZ2V0PiBtX3JlbmRlclRhcmdldDsKLX07Ci0K
LX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0lt
YWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9J
bWFnZURlY29kZXIuY3BwCmluZGV4IDRiYTRkYjJhNjIxLi4xNTEzZDkyYzMzZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29k
ZXIuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSAiSUNPSW1hZ2VEZWNvZGVyLmgiCiAj
aW5jbHVkZSAiSlBFR0ltYWdlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlBOR0ltYWdlRGVjb2Rlci5o
IgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2lmIFVTRShXRUJQKQogI2luY2x1ZGUgIldF
QlBJbWFnZURlY29kZXIuaCIKICNlbmRpZgpAQCAtOTgsNiArOTcsMTIgQEAgYm9vbCBtYXRjaGVz
Q1VSU2lnbmF0dXJlKGNoYXIqIGNvbnRlbnRzKQogCiB9CiAKK0ltYWdlRGVjb2Rlcjo6SW1hZ2VE
ZWNvZGVyKFNoYXJlZEJ1ZmZlciYsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKKyAgICA6IG1fcHJl
bXVsdGlwbHlBbHBoYShhbHBoYU9wdGlvbiA9PSBBbHBoYU9wdGlvbjo6UHJlbXVsdGlwbGllZCkK
KyAgICAsIG1faWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUoZ2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24gPT0gR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb246Oklnbm9yZWQpCit7Cit9CisKIFJl
ZlB0cjxJbWFnZURlY29kZXI+IEltYWdlRGVjb2Rlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0
YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogewogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBs
ZW5ndGhPZkxvbmdlc3RTaWduYXR1cmUgPSAxNDsgLy8gVG8gd2l0OiAiUklGRj8/Pz9XRUJQVlAi
CkBAIC0xNzAsMTMgKzE3NSw5NyBAQCB0ZW1wbGF0ZSA8TWF0Y2hUeXBlIHR5cGU+IGludCBnZXRT
Y2FsZWRWYWx1ZShjb25zdCBWZWN0b3I8aW50PiYgc2NhbGVkVmFsdWVzLCBpbgogCiB9CiAKK3Np
emVfdCBJbWFnZURlY29kZXI6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpCit7
CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1
ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCit7CisgICAgaWYgKG1fZW5jb2RlZERh
dGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkVycm9yKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX2RhdGEgPSAmZGF0YTsKKyAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNv
ZGVkRGF0YVN0YXR1czo6VHlwZUF2YWlsYWJsZSkgeworICAgICAgICBtX2RlY29kaW5nU2l6ZUZy
b21TZXREYXRhID0gdHJ1ZTsKKyAgICAgICAgdHJ5RGVjb2RlU2l6ZShhbGxEYXRhUmVjZWl2ZWQp
OworICAgICAgICBtX2RlY29kaW5nU2l6ZUZyb21TZXREYXRhID0gZmFsc2U7CisgICAgfQorCisg
ICAgaWYgKG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkVycm9yKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYWxsRGF0YVJlY2VpdmVkKSB7CisgICAgICAgIEFT
U0VSVChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpTaXplQXZhaWxh
YmxlKTsKKyAgICAgICAgbV9lbmNvZGVkRGF0YVN0YXR1cyA9IEVuY29kZWREYXRhU3RhdHVzOjpD
b21wbGV0ZTsKKyAgICB9Cit9CisKK2Jvb2wgSW1hZ2VEZWNvZGVyOjppc0FsbERhdGFSZWNlaXZl
ZCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFtX2RlY29kaW5nU2l6ZUZyb21TZXREYXRhKTsKKyAg
ICByZXR1cm4gbV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6Q29tcGxl
dGU7Cit9CisKK0VuY29kZWREYXRhU3RhdHVzIEltYWdlRGVjb2Rlcjo6ZW5jb2RlZERhdGFTdGF0
dXMoKSBjb25zdAoreworICAgIHJldHVybiBtX2VuY29kZWREYXRhU3RhdHVzOworfQorCitib29s
IEltYWdlRGVjb2Rlcjo6c2V0RmFpbGVkKCkKK3sKKyAgICAvLyBTZXRzIHRoZSAiZGVjb2RlIGZh
aWx1cmUiIGZsYWcuIEZvciBjYWxsZXIgY29udmVuaWVuY2UgKHNpbmNlIHNvCisgICAgLy8gbWFu
eSBjYWxsZXJzIHdhbnQgdG8gcmV0dXJuIGZhbHNlIGFmdGVyIGNhbGxpbmcgdGhpcyksIHJldHVy
bnMgZmFsc2UKKyAgICAvLyB0byBlbmFibGUgZWFzeSB0YWlsY2FsbGluZy4gU3ViY2xhc3NlcyBt
YXkgb3ZlcnJpZGUgdGhpcyB0byBhbHNvCisgICAgLy8gY2xlYW4gdXAgYW55IGxvY2FsIGRhdGEu
CisgICAgbV9lbmNvZGVkRGF0YVN0YXR1cyA9IEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcjsKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK1N0cmluZyBJbWFnZURlY29kZXI6OmZpbGVuYW1lRXh0ZW5z
aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKKy8vIFJldHVybnMgd2hl
dGhlciB0aGUgc2l6ZSBpcyBsZWdhbCAoaS5lLiBub3QgZ29pbmcgdG8gcmVzdWx0IGluCisvLyBv
dmVyZmxvdyBlbHNld2hlcmUpLiBJZiBub3QsIG1hcmtzIGRlY29kaW5nIGFzIGZhaWxlZC4KK2Jv
b2wgSW1hZ2VEZWNvZGVyOjpzZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCit7CisgICAgaWYg
KEltYWdlQmFja2luZ1N0b3JlOjppc092ZXJTaXplKHNpemUpKQorICAgICAgICByZXR1cm4gc2V0
RmFpbGVkKCk7CisgICAgbV9zaXplID0gc2l6ZTsKKyAgICBtX2VuY29kZWREYXRhU3RhdHVzID0g
RW5jb2RlZERhdGFTdGF0dXM6OlNpemVBdmFpbGFibGU7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K3NpemVfdCBJbWFnZURlY29kZXI6OmZyYW1lQ291bnQoKSBjb25zdAoreworICAgIC8vIExhemls
eS1kZWNvZGVzIGVub3VnaCBvZiB0aGUgaW1hZ2UgdG8gZ2V0IHRoZSBmcmFtZSBjb3VudCAoaWYK
KyAgICAvLyBwb3NzaWJsZSksIHdpdGhvdXQgZGVjb2RpbmcgdGhlIGluZGl2aWR1YWwgZnJhbWVz
LgorICAgIC8vIEZJWE1FOiBSaWdodCBub3cgdGhhdCBoYXMgdG8gYmUgZG9uZSBieSBlYWNoIHN1
YmNsYXNzOyBmYWN0b3IgdGhlCisgICAgLy8gZGVjb2RlIGNhbGwgb3V0IGFuZCB1c2UgaXQgaGVy
ZS4KKyAgICByZXR1cm4gMTsKK30KKworUmVwZXRpdGlvbkNvdW50IEltYWdlRGVjb2Rlcjo6cmVw
ZXRpdGlvbkNvdW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gUmVwZXRpdGlvbkNvdW50Tm9uZTsK
K30KKworc3RkOjpvcHRpb25hbDxJbnRQb2ludD4gSW1hZ2VEZWNvZGVyOjpob3RTcG90KCkgY29u
c3QKK3sKKyAgICAvLyBJZiB0aGUgaW1hZ2UgaGFzIGEgY3Vyc29yIGhvdC1zcG90LCBzdG9yZXMg
aXQgaW4gdGhlIGFyZ3VtZW50CisgICAgLy8gYW5kIHJldHVybnMgdHJ1ZS4gT3RoZXJ3aXNlIHJl
dHVybnMgZmFsc2UuCisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKyAgICAKIGJvb2wgSW1h
Z2VEZWNvZGVyOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKICAgICBJ
bWFnZUZyYW1lKiBidWZmZXIgPSBmcmFtZUJ1ZmZlckF0SW5kZXgoaW5kZXgpOwogICAgIHJldHVy
biBidWZmZXIgJiYgYnVmZmVyLT5pc0NvbXBsZXRlKCk7CiB9CiAKLWJvb2wgSW1hZ2VEZWNvZGVy
OjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Citib29sIEltYWdlRGVj
b2Rlcjo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewogICAgIGlmIChtX2Zy
YW1lQnVmZmVyQ2FjaGUuc2l6ZSgpIDw9IGluZGV4KQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTE4NSw3ICsyNzQsNyBAQCBib29sIEltYWdlRGVjb2Rlcjo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgo
c2l6ZV90IGluZGV4KSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQogCi11bnNpZ25lZCBJbWFn
ZURlY29kZXI6OmZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKK3Vuc2lnbmVk
IEltYWdlRGVjb2Rlcjo6ZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGlu
Z0xldmVsKSBjb25zdAogewogICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuc2l6ZSgpIDw9IGlu
ZGV4KQogICAgICAgICByZXR1cm4gMDsKQEAgLTIwOSw2ICsyOTgsMjYgQEAgZmxvYXQgSW1hZ2VE
ZWNvZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgcmV0dXJuIGR1
cmF0aW9uOwogfQogCitJbWFnZU9yaWVudGF0aW9uIEltYWdlRGVjb2Rlcjo6ZnJhbWVPcmllbnRh
dGlvbkF0SW5kZXgoc2l6ZV90KSBjb25zdAoreworICAgIHJldHVybiBtX29yaWVudGF0aW9uOwor
fQorCitJbnRTaXplIEltYWdlRGVjb2Rlcjo6ZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNh
bXBsaW5nTGV2ZWwpIGNvbnN0Cit7CisgICAgLy8gVGhpcyB3aWxsIG9ubHkgZGlmZmVyIGZyb20g
c2l6ZSgpIGZvciBJQ08gKHdoZXJlIGVhY2ggZnJhbWUgaXMgYQorICAgIC8vIGRpZmZlcmVudCBp
Y29uKSBvciBvdGhlciBmb3JtYXRzIHdoZXJlIGRpZmZlcmVudCBmcmFtZXMgYXJlIGRpZmZlcmVu
dAorICAgIC8vIHNpemVzLiBUaGlzIGRvZXMgTk9UIGRpZmZlciBmcm9tIHNpemUoKSBmb3IgR0lG
LCBzaW5jZSBkZWNvZGluZyBHSUZzCisgICAgLy8gY29tcG9zaXRlcyBhbnkgc21hbGxlciBmcmFt
ZXMgYWdhaW5zdCBwcmV2aW91cyBmcmFtZXMgdG8gY3JlYXRlIGZ1bGwtCisgICAgLy8gc2l6ZSBm
cmFtZXMuCisgICAgcmV0dXJuIHNpemUoKTsKK30KKworYm9vbCBJbWFnZURlY29kZXI6OmZyYW1l
QWxsb3dTdWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBjb25zdAoreworICAgIHJldHVybiBmYWxz
ZTsKK30KKwogTmF0aXZlSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyOjpjcmVhdGVGcmFtZUltYWdlQXRJ
bmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9u
cyYpCiB7CiAgICAgLy8gWmVyby1oZWlnaHQgaW1hZ2VzIGNhbiBjYXVzZSBwcm9ibGVtcyBmb3Ig
c29tZSBwb3J0cy4gSWYgd2UgaGF2ZSBhbiBlbXB0eSBpbWFnZSBkaW1lbnNpb24sIGp1c3QgYmFp
bC4KQEAgLTIyNiw2ICszMzUsMTIgQEAgTmF0aXZlSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyOjpjcmVh
dGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGUKIAogdm9pZCBJ
bWFnZURlY29kZXI6OnByZXBhcmVTY2FsZURhdGFJZk5lY2Vzc2FyeSgpCiB7CisjaWYgRU5BQkxF
KElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKKyAgICBzdGF0aWMgY29uc3QgaW50IE1heE51
bVBpeGVscyB7IDEwMjQgKiAxMDI0IH07CisjZWxzZQorICAgIHN0YXRpYyBjb25zdCBpbnQgTWF4
TnVtUGl4ZWxzIHsgLTEgfTsKKyNlbmRpZgorICAgIAogICAgIG1fc2NhbGVkID0gZmFsc2U7CiAg
ICAgbV9zY2FsZWRDb2x1bW5zLmNsZWFyKCk7CiAgICAgbV9zY2FsZWRSb3dzLmNsZWFyKCk7CkBA
IC0yMzMsMTEgKzM0OCwxMSBAQCB2b2lkIEltYWdlRGVjb2Rlcjo6cHJlcGFyZVNjYWxlRGF0YUlm
TmVjZXNzYXJ5KCkKICAgICBpbnQgd2lkdGggPSBzaXplKCkud2lkdGgoKTsKICAgICBpbnQgaGVp
Z2h0ID0gc2l6ZSgpLmhlaWdodCgpOwogICAgIGludCBudW1QaXhlbHMgPSBoZWlnaHQgKiB3aWR0
aDsKLSAgICBpZiAobV9tYXhOdW1QaXhlbHMgPD0gMCB8fCBudW1QaXhlbHMgPD0gbV9tYXhOdW1Q
aXhlbHMpCisgICAgaWYgKE1heE51bVBpeGVscyA8PSAwIHx8IG51bVBpeGVscyA8PSBNYXhOdW1Q
aXhlbHMpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fc2NhbGVkID0gdHJ1ZTsKLSAgICBkb3Vi
bGUgc2NhbGUgPSBzcXJ0KG1fbWF4TnVtUGl4ZWxzIC8gKGRvdWJsZSludW1QaXhlbHMpOworICAg
IGRvdWJsZSBzY2FsZSA9IHNxcnQoTWF4TnVtUGl4ZWxzIC8gKGRvdWJsZSludW1QaXhlbHMpOwog
ICAgIGZpbGxTY2FsZWRWYWx1ZXMobV9zY2FsZWRDb2x1bW5zLCBzY2FsZSwgd2lkdGgpOwogICAg
IGZpbGxTY2FsZWRWYWx1ZXMobV9zY2FsZWRSb3dzLCBzY2FsZSwgaGVpZ2h0KTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVy
LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0MmNkYjBkZGY2Li4wMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29k
ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDIzMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDA2LCAyMDE2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDgtMjAwOSBUb3JjaCBNb2JpbGUsIEluYy4KLSAqIENvcHlyaWdodCAoQykgUmVz
ZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAwOS0yMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICogQ29weXJpZ2h0IChDKSAyMDA5IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
cHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkltYWdlRnJhbWUuaCIKLSNpbmNsdWRlICJJbnRSZWN0
LmgiCi0jaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCi0j
aW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNp
bmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLS8vIEltYWdlRGVjb2RlciBpcyBhIGJhc2UgZm9yIGFsbCBmb3Jt
YXQtc3BlY2lmaWMgZGVjb2RlcnMKLS8vIChlLmcuIEpQRUdJbWFnZURlY29kZXIpLiBUaGlzIGJh
c2UgbWFuYWdlcyB0aGUgSW1hZ2VGcmFtZSBjYWNoZS4KLS8vCi0vLyBFTkFCTEUoSU1BR0VfREVD
T0RFUl9ET1dOX1NBTVBMSU5HKSBhbGxvd3MgaW1hZ2UgZGVjb2RlcnMgdG8gZG93bnNhbXBsZQot
Ly8gYXQgZGVjb2RlIHRpbWUuIEltYWdlIGRlY29kZXJzIHdpbGwgZG93bnNhbXBsZSBhbnkgaW1h
Z2VzIGxhcmdlciB0aGFuCi0vLyB8bV9tYXhOdW1QaXhlbHN8LiBGSVhNRTogTm90IHlldCBzdXBw
b3J0ZWQgYnkgYWxsIGRlY29kZXJzLgotY2xhc3MgSW1hZ2VEZWNvZGVyIDogcHVibGljIFRocmVh
ZFNhZmVSZWZDb3VudGVkPEltYWdlRGVjb2Rlcj4gewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEltYWdlRGVjb2Rlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIElt
YWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCi0gICAgICAgIDogbV9wcmVtdWx0aXBs
eUFscGhhKGFscGhhT3B0aW9uID09IEFscGhhT3B0aW9uOjpQcmVtdWx0aXBsaWVkKQotICAgICAg
ICAsIG1faWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUoZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24gPT0gR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb246Oklnbm9yZWQpCi0gICAgewotICAgIH0K
LQotICAgIHZpcnR1YWwgfkltYWdlRGVjb2RlcigpCi0gICAgewotICAgIH0KLQotICAgIC8vIFJl
dHVybnMgbnVsbHB0ciBpZiB3ZSBjYW4ndCBzbmlmZiBhIHN1cHBvcnRlZCB0eXBlIGZyb20gdGhl
IHByb3ZpZGVkIGRhdGEgKHBvc3NpYmx5Ci0gICAgLy8gYmVjYXVzZSB0aGVyZSBpc24ndCBlbm91
Z2ggZGF0YSB5ZXQpLgotICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoU2hh
cmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
OwotCi0gICAgdmlydHVhbCBTdHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCA9IDA7Ci0K
LSAgICBib29sIHByZW11bHRpcGx5QWxwaGEoKSBjb25zdCB7IHJldHVybiBtX3ByZW11bHRpcGx5
QWxwaGE7IH0KLQotICAgIGJvb2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdAotICAgIHsKLSAg
ICAgICAgQVNTRVJUKCFtX2RlY29kaW5nU2l6ZUZyb21TZXREYXRhKTsKLSAgICAgICAgcmV0dXJu
IG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkNvbXBsZXRlOwotICAg
IH0KLQotICAgIHZpcnR1YWwgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpCi0gICAgewotICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9
PSBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3IpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgbV9kYXRhID0gJmRhdGE7Ci0gICAgICAgIGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09IEVu
Y29kZWREYXRhU3RhdHVzOjpUeXBlQXZhaWxhYmxlKSB7Ci0gICAgICAgICAgICBtX2RlY29kaW5n
U2l6ZUZyb21TZXREYXRhID0gdHJ1ZTsKLSAgICAgICAgICAgIHRyeURlY29kZVNpemUoYWxsRGF0
YVJlY2VpdmVkKTsKLSAgICAgICAgICAgIG1fZGVjb2RpbmdTaXplRnJvbVNldERhdGEgPSBmYWxz
ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29k
ZWREYXRhU3RhdHVzOjpFcnJvcikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAo
YWxsRGF0YVJlY2VpdmVkKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9lbmNvZGVkRGF0YVN0YXR1
cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6U2l6ZUF2YWlsYWJsZSk7Ci0gICAgICAgICAgICBtX2Vu
Y29kZWREYXRhU3RhdHVzID0gRW5jb2RlZERhdGFTdGF0dXM6OkNvbXBsZXRlOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgRW5jb2RlZERhdGFTdGF0dXMgZW5jb2RlZERhdGFTdGF0dXMoKSBjb25z
dCB7IHJldHVybiBtX2VuY29kZWREYXRhU3RhdHVzOyB9Ci0KLSAgICBib29sIGlzU2l6ZUF2YWls
YWJsZSgpIHsgcmV0dXJuIG1fZW5jb2RlZERhdGFTdGF0dXMgPj0gRW5jb2RlZERhdGFTdGF0dXM6
OlNpemVBdmFpbGFibGU7IH0KLQotICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkgeyByZXR1cm4g
aXNTaXplQXZhaWxhYmxlKCkgPyBtX3NpemUgOiBJbnRTaXplKCk7IH0KLQotICAgIEludFNpemUg
c2NhbGVkU2l6ZSgpCi0gICAgewotICAgICAgICByZXR1cm4gbV9zY2FsZWQgPyBJbnRTaXplKG1f
c2NhbGVkQ29sdW1ucy5zaXplKCksIG1fc2NhbGVkUm93cy5zaXplKCkpIDogc2l6ZSgpOwotICAg
IH0KLQotICAgIC8vIFRoaXMgd2lsbCBvbmx5IGRpZmZlciBmcm9tIHNpemUoKSBmb3IgSUNPICh3
aGVyZSBlYWNoIGZyYW1lIGlzIGEKLSAgICAvLyBkaWZmZXJlbnQgaWNvbikgb3Igb3RoZXIgZm9y
bWF0cyB3aGVyZSBkaWZmZXJlbnQgZnJhbWVzIGFyZSBkaWZmZXJlbnQKLSAgICAvLyBzaXplcy4g
VGhpcyBkb2VzIE5PVCBkaWZmZXIgZnJvbSBzaXplKCkgZm9yIEdJRiwgc2luY2UgZGVjb2Rpbmcg
R0lGcwotICAgIC8vIGNvbXBvc2l0ZXMgYW55IHNtYWxsZXIgZnJhbWVzIGFnYWluc3QgcHJldmlv
dXMgZnJhbWVzIHRvIGNyZWF0ZSBmdWxsLQotICAgIC8vIHNpemUgZnJhbWVzLgotICAgIHZpcnR1
YWwgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBzaXplKCk7Ci0gICAgfQotCi0gICAgLy8gUmV0dXJucyB3aGV0
aGVyIHRoZSBzaXplIGlzIGxlZ2FsIChpLmUuIG5vdCBnb2luZyB0byByZXN1bHQgaW4KLSAgICAv
LyBvdmVyZmxvdyBlbHNld2hlcmUpLiBJZiBub3QsIG1hcmtzIGRlY29kaW5nIGFzIGZhaWxlZC4K
LSAgICB2aXJ0dWFsIGJvb2wgc2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQotICAgIHsKLSAg
ICAgICAgaWYgKEltYWdlQmFja2luZ1N0b3JlOjppc092ZXJTaXplKHNpemUpKQotICAgICAgICAg
ICAgcmV0dXJuIHNldEZhaWxlZCgpOwotICAgICAgICBtX3NpemUgPSBzaXplOwotICAgICAgICBt
X2VuY29kZWREYXRhU3RhdHVzID0gRW5jb2RlZERhdGFTdGF0dXM6OlNpemVBdmFpbGFibGU7Ci0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIC8vIExhemlseS1kZWNvZGVzIGVub3Vn
aCBvZiB0aGUgaW1hZ2UgdG8gZ2V0IHRoZSBmcmFtZSBjb3VudCAoaWYKLSAgICAvLyBwb3NzaWJs
ZSksIHdpdGhvdXQgZGVjb2RpbmcgdGhlIGluZGl2aWR1YWwgZnJhbWVzLgotICAgIC8vIEZJWE1F
OiBSaWdodCBub3cgdGhhdCBoYXMgdG8gYmUgZG9uZSBieSBlYWNoIHN1YmNsYXNzOyBmYWN0b3Ig
dGhlCi0gICAgLy8gZGVjb2RlIGNhbGwgb3V0IGFuZCB1c2UgaXQgaGVyZS4KLSAgICB2aXJ0dWFs
IHNpemVfdCBmcmFtZUNvdW50KCkgY29uc3QgeyByZXR1cm4gMTsgfQotCi0gICAgdmlydHVhbCBS
ZXBldGl0aW9uQ291bnQgcmVwZXRpdGlvbkNvdW50KCkgY29uc3QgeyByZXR1cm4gUmVwZXRpdGlv
bkNvdW50Tm9uZTsgfQotCi0gICAgLy8gRGVjb2RlcyBhcyBtdWNoIG9mIHRoZSByZXF1ZXN0ZWQg
ZnJhbWUgYXMgcG9zc2libGUsIGFuZCByZXR1cm5zIGFuCi0gICAgLy8gSW1hZ2VEZWNvZGVyLW93
bmVkIHBvaW50ZXIuCi0gICAgdmlydHVhbCBJbWFnZUZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgo
c2l6ZV90KSA9IDA7Ci0KLSAgICBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90KTsK
LQotICAgIC8vIE1ha2UgdGhlIGJlc3QgZWZmb3J0IGd1ZXNzIHRvIGNoZWNrIGlmIHRoZSByZXF1
ZXN0ZWQgZnJhbWUgaGFzIGFscGhhIGNoYW5uZWwuCi0gICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJ
bmRleChzaXplX3QpIGNvbnN0OwotCi0gICAgLy8gTnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBkZWNv
ZGVkIGZyYW1lIHJlcXVlc3RlZC4gUmV0dXJuIDAgaWYgbm90IHlldCBkZWNvZGVkLgotICAgIHVu
c2lnbmVkIGZyYW1lQnl0ZXNBdEluZGV4KHNpemVfdCkgY29uc3Q7Ci0gICAgCi0gICAgZmxvYXQg
ZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90KTsKLSAgICAKLSAgICBOYXRpdmVJbWFnZVB0ciBj
cmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1w
bGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdNb2Rl
OjpTeW5jaHJvbm91cyk7Ci0KLSAgICB2b2lkIHNldElnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxl
KGJvb2wgZmxhZykgeyBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlID0gZmxhZzsgfQotICAg
IGJvb2wgaWdub3Jlc0dhbW1hQW5kQ29sb3JQcm9maWxlKCkgY29uc3QgeyByZXR1cm4gbV9pZ25v
cmVHYW1tYUFuZENvbG9yUHJvZmlsZTsgfQotCi0gICAgSW1hZ2VPcmllbnRhdGlvbiBmcmFtZU9y
aWVudGF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50YXRpb247IH0K
LSAgICAKLSAgICBib29sIGZyYW1lQWxsb3dTdWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgZW51bSB7IElDQ0NvbG9yUHJvZmlsZUhlYWRlckxl
bmd0aCA9IDEyOCB9OwotCi0gICAgc3RhdGljIGJvb2wgcmdiQ29sb3JQcm9maWxlKGNvbnN0IGNo
YXIqIHByb2ZpbGVEYXRhLCB1bnNpZ25lZCBwcm9maWxlTGVuZ3RoKQotICAgIHsKLSAgICAgICAg
QVNTRVJUX1VOVVNFRChwcm9maWxlTGVuZ3RoLCBwcm9maWxlTGVuZ3RoID49IElDQ0NvbG9yUHJv
ZmlsZUhlYWRlckxlbmd0aCk7Ci0KLSAgICAgICAgcmV0dXJuICFtZW1jbXAoJnByb2ZpbGVEYXRh
WzE2XSwgIlJHQiAiLCA0KTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgc2l6ZV90IGJ5dGVzRGVjb2Rl
ZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpIHsgcmV0dXJuIDA7IH0KLSAgICAKLSAgICBzdGF0aWMg
U3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxvYXQsIFN1YnNhbXBs
aW5nTGV2ZWwpIHsgcmV0dXJuIFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQ7IH0KLQotICAgIHN0
YXRpYyBib29sIGlucHV0RGV2aWNlQ29sb3JQcm9maWxlKGNvbnN0IGNoYXIqIHByb2ZpbGVEYXRh
LCB1bnNpZ25lZCBwcm9maWxlTGVuZ3RoKQotICAgIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChw
cm9maWxlTGVuZ3RoLCBwcm9maWxlTGVuZ3RoID49IElDQ0NvbG9yUHJvZmlsZUhlYWRlckxlbmd0
aCk7Ci0KLSAgICAgICAgcmV0dXJuICFtZW1jbXAoJnByb2ZpbGVEYXRhWzEyXSwgIm1udHIiLCA0
KSB8fCAhbWVtY21wKCZwcm9maWxlRGF0YVsxMl0sICJzY25yIiwgNCk7Ci0gICAgfQotCi0gICAg
Ly8gU2V0cyB0aGUgImRlY29kZSBmYWlsdXJlIiBmbGFnLiBGb3IgY2FsbGVyIGNvbnZlbmllbmNl
IChzaW5jZSBzbwotICAgIC8vIG1hbnkgY2FsbGVycyB3YW50IHRvIHJldHVybiBmYWxzZSBhZnRl
ciBjYWxsaW5nIHRoaXMpLCByZXR1cm5zIGZhbHNlCi0gICAgLy8gdG8gZW5hYmxlIGVhc3kgdGFp
bGNhbGxpbmcuIFN1YmNsYXNzZXMgbWF5IG92ZXJyaWRlIHRoaXMgdG8gYWxzbwotICAgIC8vIGNs
ZWFuIHVwIGFueSBsb2NhbCBkYXRhLgotICAgIHZpcnR1YWwgYm9vbCBzZXRGYWlsZWQoKQotICAg
IHsKLSAgICAgICAgbV9lbmNvZGVkRGF0YVN0YXR1cyA9IEVuY29kZWREYXRhU3RhdHVzOjpFcnJv
cjsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGJvb2wgZmFpbGVkKCkgY29u
c3QgeyByZXR1cm4gbV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6RXJy
b3I7IH0KLQotICAgIC8vIENsZWFycyBkZWNvZGVkIHBpeGVsIGRhdGEgZnJvbSBiZWZvcmUgdGhl
IHByb3ZpZGVkIGZyYW1lIHVubGVzcyB0aGF0Ci0gICAgLy8gZGF0YSBtYXkgYmUgbmVlZGVkIHRv
IGRlY29kZSBmdXR1cmUgZnJhbWVzIChlLmcuIGR1ZSB0byBHSUYgZnJhbWUKLSAgICAvLyBjb21w
b3NpdGluZykuCi0gICAgdmlydHVhbCB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3Qp
IHsgfQotCi0gICAgLy8gSWYgdGhlIGltYWdlIGhhcyBhIGN1cnNvciBob3Qtc3BvdCwgc3RvcmVz
IGl0IGluIHRoZSBhcmd1bWVudAotICAgIC8vIGFuZCByZXR1cm5zIHRydWUuIE90aGVyd2lzZSBy
ZXR1cm5zIGZhbHNlLgotICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxJbnRQb2ludD4gaG90U3Bv
dCgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgdm9p
ZCBwcmVwYXJlU2NhbGVEYXRhSWZOZWNlc3NhcnkoKTsKLSAgICBpbnQgdXBwZXJCb3VuZFNjYWxl
ZFgoaW50IG9yaWdYLCBpbnQgc2VhcmNoU3RhcnQgPSAwKTsKLSAgICBpbnQgbG93ZXJCb3VuZFNj
YWxlZFgoaW50IG9yaWdYLCBpbnQgc2VhcmNoU3RhcnQgPSAwKTsKLSAgICBpbnQgdXBwZXJCb3Vu
ZFNjYWxlZFkoaW50IG9yaWdZLCBpbnQgc2VhcmNoU3RhcnQgPSAwKTsKLSAgICBpbnQgbG93ZXJC
b3VuZFNjYWxlZFkoaW50IG9yaWdZLCBpbnQgc2VhcmNoU3RhcnQgPSAwKTsKLSAgICBpbnQgc2Nh
bGVkWShpbnQgb3JpZ1ksIGludCBzZWFyY2hTdGFydCA9IDApOwotCi0gICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gbV9kYXRhOyAvLyBUaGUgZW5jb2RlZCBkYXRhLgotICAgIFZlY3RvcjxJbWFnZUZy
YW1lLCAxPiBtX2ZyYW1lQnVmZmVyQ2FjaGU7Ci0gICAgYm9vbCBtX3NjYWxlZCB7IGZhbHNlIH07
Ci0gICAgVmVjdG9yPGludD4gbV9zY2FsZWRDb2x1bW5zOwotICAgIFZlY3RvcjxpbnQ+IG1fc2Nh
bGVkUm93czsKLSAgICBib29sIG1fcHJlbXVsdGlwbHlBbHBoYTsKLSAgICBib29sIG1faWdub3Jl
R2FtbWFBbmRDb2xvclByb2ZpbGU7Ci0gICAgSW1hZ2VPcmllbnRhdGlvbiBtX29yaWVudGF0aW9u
OwotCi1wcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCB0cnlEZWNvZGVTaXplKGJvb2wpID0gMDsK
LQotICAgIEludFNpemUgbV9zaXplOwotICAgIEVuY29kZWREYXRhU3RhdHVzIG1fZW5jb2RlZERh
dGFTdGF0dXMgeyBFbmNvZGVkRGF0YVN0YXR1czo6VHlwZUF2YWlsYWJsZSB9OwotICAgIGJvb2wg
bV9kZWNvZGluZ1NpemVGcm9tU2V0RGF0YSB7IGZhbHNlIH07Ci0jaWYgRU5BQkxFKElNQUdFX0RF
Q09ERVJfRE9XTl9TQU1QTElORykKLSAgICBzdGF0aWMgY29uc3QgaW50IG1fbWF4TnVtUGl4ZWxz
IHsgMTAyNCAqIDEwMjQgfTsKLSNlbHNlCi0gICAgc3RhdGljIGNvbnN0IGludCBtX21heE51bVBp
eGVscyB7IC0xIH07Ci0jZW5kaWYKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFn
ZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1w
L0JNUEltYWdlRGVjb2Rlci5jcHAKaW5kZXggMTNiNWMwODBjYzcuLjUzOTg2ZWMxYWNlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1h
Z2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcApAQCAtNDAsOCArNDAsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAvLyBkb24ndCBwYWNrKS4KIHN0YXRpYyBjb25zdCBzaXplX3Qgc2l6ZU9mRmlsZUhl
YWRlciA9IDE0OwogCi1CTVBJbWFnZURlY29kZXI6OkJNUEltYWdlRGVjb2RlcihBbHBoYU9wdGlv
biBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pCi0gICAgOiBJbWFnZURlY29kZXIoYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uKQorQk1QSW1hZ2VEZWNvZGVyOjpCTVBJbWFnZURlY29kZXIoU2hhcmVk
QnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCisgICAgOiBJbWFnZURlY29kZXIo
ZGF0YSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgICwgbV9k
ZWNvZGVkT2Zmc2V0KDApCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgKaW5kZXggYzYyNzY5
MGE4MzAuLjYyMDc3Mjg5MTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oCkBAIC0zNyw5ICsz
Nyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAvLyBUaGlzIGNsYXNzIGRlY29kZXMgdGhl
IEJNUCBpbWFnZSBmb3JtYXQuCiAgICAgY2xhc3MgQk1QSW1hZ2VEZWNvZGVyIGZpbmFsIDogcHVi
bGljIEltYWdlRGVjb2RlciB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUmVmPEltYWdl
RGVjb2Rlcj4gY3JlYXRlKEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKKyAgICAgICAgc3RhdGljIFJl
ZjxJbWFnZURlY29kZXI+IGNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFs
cGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbikKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQk1Q
SW1hZ2VEZWNvZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwor
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQk1QSW1hZ2VEZWNvZGVyKGRhdGEsIGFs
cGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogICAgICAgICB9CiAKICAg
ICAgICAgLy8gSW1hZ2VEZWNvZGVyCkBAIC01Miw3ICs1Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgYm9vbCBzZXRGYWlsZWQoKSBvdmVycmlkZTsKIAogICAgIHByaXZhdGU6Ci0g
ICAgICAgIEJNUEltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pOworICAgICAgICBCTVBJbWFnZURlY29kZXIoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBo
YU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgICAgICB2b2lkIHRyeURl
Y29kZVNpemUoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlIHsgZGVjb2RlKHRydWUsIGFs
bERhdGFSZWNlaXZlZCk7IH0KIAogICAgICAgICBpbmxpbmUgdWludDMyX3QgcmVhZFVpbnQzMihp
bnQgb2Zmc2V0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBmZDBjYzc1
MDk5Zi4uOTZhMWNmMTg4NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCkBAIC0zMSw4
ICszMSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotR0lGSW1hZ2VEZWNvZGVyOjpHSUZJ
bWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQotICAgIDogSW1hZ2VEZWNvZGVyKGFs
cGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK0dJRkltYWdlRGVjb2Rlcjo6
R0lGSW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KQorICAgIDogSW1hZ2VEZWNvZGVyKGRhdGEsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCmluZGV4IGQ2Y2JhMzlk
YmJlLi5iNTJmNDUzNDgxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaApAQCAtMzUsOSArMzUs
OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgLy8gVGhpcyBjbGFzcyBkZWNvZGVzIHRoZSBH
SUYgaW1hZ2UgZm9ybWF0LgogICAgIGNsYXNzIEdJRkltYWdlRGVjb2RlciBmaW5hbCA6IHB1Ymxp
YyBJbWFnZURlY29kZXIgewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFJlZjxJbWFnZURl
Y29kZXI+IGNyZWF0ZShBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCisgICAgICAgIHN0YXRpYyBSZWY8
SW1hZ2VEZWNvZGVyPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBo
YU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdJRklt
YWdlRGVjb2RlcihhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKKyAg
ICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdJRkltYWdlRGVjb2RlcihkYXRhLCBhbHBo
YU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKICAgICAgICAgfQogCiAgICAg
ICAgIHZpcnR1YWwgfkdJRkltYWdlRGVjb2RlcigpOwpAQCAtNjMsNyArNjMsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgZ2lmQ29tcGxldGUoKTsKIAogICAgIHByaXZhdGU6
Ci0gICAgICAgIEdJRkltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pOworICAgICAgICBHSUZJbWFnZURlY29kZXIoU2hhcmVkQnVmZmVyJiBkYXRhLCBB
bHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgICAgICB2b2lkIHRy
eURlY29kZVNpemUoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlIHsgZGVjb2RlKDAsIEdJ
RlNpemVRdWVyeSwgYWxsRGF0YVJlY2VpdmVkKTsgfQogCiAgICAgICAgIC8vIElmIHRoZSBxdWVy
eSBpcyBHSUZGdWxsUXVlcnksIGRlY29kZXMgdGhlIGltYWdlIHVwIHRvIChidXQgbm90CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1h
Z2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2lj
by9JQ09JbWFnZURlY29kZXIuY3BwCmluZGV4IDM2M2FlMjgzZDM0Li42ZGNlOTgxMDIyOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0lt
YWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKQEAgLTQ0LDggKzQ0LDggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogc3RhdGljIGNvbnN0IHNpemVfdCBzaXplT2ZEaXJlY3RvcnkgPSA2Owogc3RhdGlj
IGNvbnN0IHNpemVfdCBzaXplT2ZEaXJFbnRyeSA9IDE2OwogCi1JQ09JbWFnZURlY29kZXI6OklD
T0ltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCi0gICAgOiBJbWFnZURlY29kZXIo
YWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorSUNPSW1hZ2VEZWNvZGVy
OjpJQ09JbWFnZURlY29kZXIoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9w
dGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pCisgICAgOiBJbWFnZURlY29kZXIoZGF0YSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKQogICAgICwgbV9kZWNvZGVkT2Zmc2V0KDApCiB7CiB9CkBAIC02OSwxMiAr
NjksMTIgQEAgdm9pZCBJQ09JbWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRh
LCBib29sIGFsbERhdGFSZWNlaXZlZCkKICAgICAgICAgc2V0RGF0YUZvclBOR0RlY29kZXJBdElu
ZGV4KGkpOwogfQogCi1JbnRTaXplIElDT0ltYWdlRGVjb2Rlcjo6c2l6ZSgpCitJbnRTaXplIElD
T0ltYWdlRGVjb2Rlcjo6c2l6ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZnJhbWVTaXplLmlz
RW1wdHkoKSA/IEltYWdlRGVjb2Rlcjo6c2l6ZSgpIDogbV9mcmFtZVNpemU7CiB9CiAKLUludFNp
emUgSUNPSW1hZ2VEZWNvZGVyOjpmcmFtZVNpemVBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2Ft
cGxpbmdMZXZlbCkKK0ludFNpemUgSUNPSW1hZ2VEZWNvZGVyOjpmcmFtZVNpemVBdEluZGV4KHNp
emVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCkgY29uc3QKIHsKICAgICByZXR1cm4gKGluZGV4
ICYmIChpbmRleCA8IG1fZGlyRW50cmllcy5zaXplKCkpKSA/IG1fZGlyRW50cmllc1tpbmRleF0u
bV9zaXplIDogc2l6ZSgpOwogfQpAQCAtMjA4LDcgKzIwOCw3IEBAIGJvb2wgSUNPSW1hZ2VEZWNv
ZGVyOjpkZWNvZGVBdEluZGV4KHNpemVfdCBpbmRleCkKICAgICB9CiAKICAgICBpZiAoIW1fcG5n
RGVjb2RlcnNbaW5kZXhdKSB7Ci0gICAgICAgIG1fcG5nRGVjb2RlcnNbaW5kZXhdID0gUE5HSW1h
Z2VEZWNvZGVyOjpjcmVhdGUobV9wcmVtdWx0aXBseUFscGhhID8gQWxwaGFPcHRpb246OlByZW11
bHRpcGxpZWQgOiBBbHBoYU9wdGlvbjo6Tm90UHJlbXVsdGlwbGllZCwgbV9pZ25vcmVHYW1tYUFu
ZENvbG9yUHJvZmlsZSA/IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uOjpJZ25vcmVkIDogR2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb246OkFwcGxpZWQpOworICAgICAgICBtX3BuZ0RlY29kZXJz
W2luZGV4XSA9IFBOR0ltYWdlRGVjb2Rlcjo6Y3JlYXRlKCptX2RhdGEsIG1fcHJlbXVsdGlwbHlB
bHBoYSA/IEFscGhhT3B0aW9uOjpQcmVtdWx0aXBsaWVkIDogQWxwaGFPcHRpb246Ok5vdFByZW11
bHRpcGxpZWQsIG1faWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUgPyBHYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbjo6SWdub3JlZCA6IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uOjpBcHBsaWVk
KTsKICAgICAgICAgc2V0RGF0YUZvclBOR0RlY29kZXJBdEluZGV4KGluZGV4KTsKICAgICB9CiAg
ICAgLy8gRmFpbCBpZiB0aGUgc2l6ZSB0aGUgUE5HSW1hZ2VEZWNvZGVyIGNhbGN1bGF0ZWQgZG9l
cyBub3QgbWF0Y2ggdGhlIHNpemUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAppbmRleCBlNGJiNjBi
OTg4MS4uMjZjOGI3MjczMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgKQEAgLTM2LDkgKzM2
LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIC8vIFRoaXMgY2xhc3MgZGVjb2RlcyB0aGUg
SUNPIGFuZCBDVVIgaW1hZ2UgZm9ybWF0cy4KICAgICBjbGFzcyBJQ09JbWFnZURlY29kZXIgZmlu
YWwgOiBwdWJsaWMgSW1hZ2VEZWNvZGVyIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBS
ZWY8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAgICAgICBz
dGF0aWMgUmVmPEltYWdlRGVjb2Rlcj4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFP
cHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBJQ09JbWFnZURlY29kZXIoYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJQ09JbWFnZURlY29kZXIo
ZGF0YSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CiAgICAgICAg
IH0KIAogICAgICAgICB2aXJ0dWFsIH5JQ09JbWFnZURlY29kZXIoKTsKQEAgLTQ2LDggKzQ2LDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBJbWFnZURlY29kZXIKICAgICAgICAg
U3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQVNDSUlM
aXRlcmFsKCJpY28iKTsgfQogICAgICAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9v
bCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlOwotICAgICAgICBJbnRTaXplIHNpemUoKSBvdmVy
cmlkZTsKLSAgICAgICAgSW50U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxp
bmdMZXZlbCkgb3ZlcnJpZGU7CisgICAgICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IG92ZXJyaWRl
OworICAgICAgICBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xl
dmVsKSBjb25zdCBvdmVycmlkZTsKICAgICAgICAgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUm
KSBvdmVycmlkZTsKICAgICAgICAgc2l6ZV90IGZyYW1lQ291bnQoKSBjb25zdCBvdmVycmlkZTsK
ICAgICAgICAgSW1hZ2VGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCkgb3ZlcnJpZGU7
CkBAIC03Niw3ICs3Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHVpbnQz
Ml90IG1faW1hZ2VPZmZzZXQ7CiAgICAgICAgIH07CiAKLSAgICAgICAgSUNPSW1hZ2VEZWNvZGVy
KEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgICAgIElDT0lt
YWdlRGVjb2RlcihTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbik7CiAgICAgICAgIHZvaWQgdHJ5RGVjb2RlU2l6ZShib29sIGFsbERhdGFS
ZWNlaXZlZCkgb3ZlcnJpZGUgeyBkZWNvZGUoMCwgdHJ1ZSwgYWxsRGF0YVJlY2VpdmVkKTsgfQog
CiAgICAgICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB8YXwgaXMgYSBwcmVmZXJhYmxlIGljb24gZW50
cnkgdG8gfGJ8LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggODZhZTA0Y2Y2
MGYuLjNmNTkyMmVhOGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTUw
MSw4ICs1MDEsOCBAQCB2b2lkIHRlcm1fc291cmNlKGpfZGVjb21wcmVzc19wdHIgamQpCiAgICAg
c3JjLT5kZWNvZGVyLT5kZWNvZGVyKCktPmpwZWdDb21wbGV0ZSgpOwogfQogCi1KUEVHSW1hZ2VE
ZWNvZGVyOjpKUEVHSW1hZ2VEZWNvZGVyKEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKLSAgICA6IElt
YWdlRGVjb2RlcihhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitKUEVH
SW1hZ2VEZWNvZGVyOjpKUEVHSW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFP
cHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uKQorICAgIDogSW1hZ2VEZWNvZGVyKGRhdGEsIGFscGhhT3B0aW9uLCBn
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29k
ZXIuaAppbmRleCA1YTQ2ZGZmZmFkMy4uMWRjMTBjYmFlNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdl
RGVjb2Rlci5oCkBAIC00Myw5ICs0Myw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAvLyBU
aGlzIGNsYXNzIGRlY29kZXMgdGhlIEpQRUcgaW1hZ2UgZm9ybWF0LgogICAgIGNsYXNzIEpQRUdJ
bWFnZURlY29kZXIgZmluYWwgOiBwdWJsaWMgSW1hZ2VEZWNvZGVyIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoQWxwaGFPcHRpb24gYWxwaGFP
cHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKQorICAgICAgICBzdGF0aWMgUmVmPEltYWdlRGVjb2Rlcj4gY3JlYXRlKFNoYXJlZEJ1ZmZl
ciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBKUEVHSW1hZ2VEZWNvZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbikpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
SlBFR0ltYWdlRGVjb2RlcihkYXRhLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pKTsKICAgICAgICAgfQogCiAgICAgICAgIHZpcnR1YWwgfkpQRUdJbWFnZURlY29kZXIo
KTsKQEAgLTcxLDcgKzcxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNl
dE9yaWVudGF0aW9uKEltYWdlT3JpZW50YXRpb24gb3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlv
biA9IG9yaWVudGF0aW9uOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBKUEVHSW1hZ2VEZWNv
ZGVyKEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgICAgIEpQ
RUdJbWFnZURlY29kZXIoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24pOwogICAgICAgICB2b2lkIHRyeURlY29kZVNpemUoYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpIG92ZXJyaWRlIHsgZGVjb2RlKHRydWUsIGFsbERhdGFSZWNlaXZlZCk7IH0K
IAogICAgICAgICAvLyBEZWNvZGVzIHRoZSBpbWFnZS4gIElmIHxvbmx5U2l6ZXwgaXMgdHJ1ZSwg
c3RvcHMgZGVjb2RpbmcgYWZ0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggODA3
MGY2NDlmZjYuLmViNzc3YWE4YzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcApAQCAt
MjAxLDggKzIwMSw4IEBAIHByaXZhdGU6CiAgICAgcG5nX2J5dGVwIG1faW50ZXJsYWNlQnVmZmVy
OwogfTsKIAotUE5HSW1hZ2VEZWNvZGVyOjpQTkdJbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxw
aGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uKQotICAgIDogSW1hZ2VEZWNvZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbikKK1BOR0ltYWdlRGVjb2Rlcjo6UE5HSW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZl
ciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAgIDogSW1hZ2VEZWNvZGVyKGRhdGEs
IGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICAsIG1fZG9Ob3Ro
aW5nT25GYWlsdXJlKGZhbHNlKQogICAgICwgbV9jdXJyZW50RnJhbWUoMCkKICNpZiBFTkFCTEUo
QVBORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L3BuZy9QTkdJbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuaAppbmRleCAwM2UxZmJjMzFjYS4uNzU4ODFiODUx
ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3Bu
Zy9QTkdJbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmgKQEAgLTM3LDkgKzM3LDkgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIC8vIFRoaXMgY2xhc3MgZGVjb2RlcyB0aGUgUE5HIGltYWdlIGZvcm1h
dC4KICAgICBjbGFzcyBQTkdJbWFnZURlY29kZXIgZmluYWwgOiBwdWJsaWMgSW1hZ2VEZWNvZGVy
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyPiBjcmVhdGUo
QWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAgICAgICBzdGF0aWMgUmVmPEltYWdlRGVjb2Rlcj4g
Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQTkdJbWFnZURlY29kZXIoYWxw
aGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CisgICAgICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBQTkdJbWFnZURlY29kZXIoZGF0YSwgYWxwaGFPcHRpb24sIGdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CiAgICAgICAgIH0KIAogICAgICAgICB2aXJ0dWFsIH5Q
TkdJbWFnZURlY29kZXIoKTsKQEAgLTg4LDcgKzg4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBQTkdJbWFnZURlY29kZXIoQWxwaGFP
cHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICAgICAgUE5HSW1hZ2VEZWNv
ZGVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uKTsKICAgICAgICAgdm9pZCB0cnlEZWNvZGVTaXplKGJvb2wgYWxsRGF0YVJlY2VpdmVk
KSBvdmVycmlkZSB7IGRlY29kZSh0cnVlLCAwLCBhbGxEYXRhUmVjZWl2ZWQpOyB9CiAKICAgICAg
ICAgLy8gRGVjb2RlcyB0aGUgaW1hZ2UuICBJZiB8b25seVNpemV8IGlzIHRydWUsIHN0b3BzIGRl
Y29kaW5nIGFmdGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1k
ZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA0OGNmNWFk
MzZiNC4uZWJiY2Y1MzZkYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcApAQCAt
NDUsOCArNDUsOCBAQCBpbmxpbmUgV0VCUF9DU1BfTU9ERSBvdXRwdXRNb2RlKGJvb2wgaGFzQWxw
aGEpIHsgcmV0dXJuIGhhc0FscGhhID8gTU9ERV9iZ3JBIDogTQogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVdFQlBJbWFnZURlY29kZXI6OldFQlBJbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxw
aGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uKQotICAgIDogSW1hZ2VEZWNvZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJv
ZmlsZU9wdGlvbikKK1dFQlBJbWFnZURlY29kZXI6OldFQlBJbWFnZURlY29kZXIoU2hhcmVkQnVm
ZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCisgICAgOiBJbWFnZURlY29kZXIoZGF0
YSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgICwgbV9kZWNv
ZGVyKDApCiAgICAgLCBtX2hhc0FscGhhKGZhbHNlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29k
ZXIuaAppbmRleCBkNzk1NmYwY2EwMS4uYzczNTQ3ODJmZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdl
RGVjb2Rlci5oCkBAIC0zOCw5ICszOCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
V0VCUEltYWdlRGVjb2RlciBmaW5hbCA6IHB1YmxpYyBJbWFnZURlY29kZXIgewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoQWxwaGFPcHRpb24gYWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KQorICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRh
LCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBXRUJQSW1hZ2VEZWNvZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXRUJQSW1hZ2VEZWNvZGVyKGRh
dGEsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogICAgIH0KIAog
ICAgIHZpcnR1YWwgfldFQlBJbWFnZURlY29kZXIoKTsKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGlj
OgogICAgIEltYWdlRnJhbWUqIGZyYW1lQnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpIG92ZXJy
aWRlOwogCiBwcml2YXRlOgotICAgIFdFQlBJbWFnZURlY29kZXIoQWxwaGFPcHRpb24sIEdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICBXRUJQSW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZl
ciYgZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKICAgICB2
b2lkIHRyeURlY29kZVNpemUoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlIHsgZGVjb2Rl
KHRydWUsIGFsbERhdGFSZWNlaXZlZCk7IH0KIAogICAgIGJvb2wgZGVjb2RlKGJvb2wgb25seVNp
emUsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311875</attachid>
            <date>2017-06-02 15:33:52 -0700</date>
            <delta_ts>2017-06-02 15:55:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk172773.patch</filename>
            <type>text/plain</type>
            <size>63501</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkMmZiZmY3MzhmNi4uYzc1NzFkMjYzNDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDEgQEAKKzIwMTctMDYtMDIgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdh
QGFwcGxlLmNvbT4KKworICAgICAgICBIYXZlIGEgc2luZ2xlIEltYWdlRGVjb2RlciBoZWFkZXIg
ZmlsZSBmb3IgYWxsIHBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzI3NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBbnkgY2hhbmdlIGluIHRoZSBkZWZpbml0aW9uIG9mIEltYWdlRGVjb2RlciBo
YXMgYmVlbiBhbm5veWluZyBzaW5jZSBpdCAKKyAgICAgICAgbWVhbnMgZG9pbmcgdGhlIHNhbWUg
Y2hhbmdlIGluIHRocmVlIGhlYWRlciBmaWxlcy4gVGhpcyBwYXRjaCB3aWxsIGNvbWJpbmUKKyAg
ICAgICAgdGhlbSBpbiBvbmUgaGVhZGVyIGZpbGUgYnV0IGl0IGhhcyB0aGVzZSBkcmF3YmFja3M6
CisKKyAgICAgICAgLS0gU29tZSBvZiB0aGUgSW1hZ2VEZW9jZGVyIGZ1bmN0aW9ucyB3ZXJlIG1h
ZGUgbm9uLWNvbnN0IGJlY2F1c2UgdGhlIEdUSworICAgICAgICBkZWNvZGVyIGNhbGxzIGZyYW1l
QnVmZmVyQXRJbmRleCgpLCB3aGljaCBpcyBub24tY29uc3QgYW5kIGNhbid0IGJlIG1hZGUKKyAg
ICAgICAgY29zdCwgaW4gdGhlc2UgZnVuY3Rpb25zLgorCisgICAgICAgIC0tIFNvbWUgb2YgdGhl
IEltYWdlRGVjb2RlciBpbi1saW5lIGZ1bmN0aW9ucyB3ZXJlIG1vdmVkIGZyb20gdGhlIGhlYWRl
cgorICAgICAgICBmaWxlIHRvIHRoZSBzb3VyY2UgZmlsZXMgYmVjYXVzZSB0aGUgcGxhdGZvcm1z
IGhhdmUgZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucy4KKworICAgICAgICAtLSBTb21lIG9mIHRo
ZSBJbWFnZURlb2NkZXIgZnVuY3Rpb25zIHdlcmUgbWFkZSB2aXJ0dWFsIGJlY2F1c2UgdGhlIEdU
SworICAgICAgICBkZWNvZGVyIGNvbnNpZGVycyBJbWFnZURlb2NkZXIgdGhlIGJhc2UgY2xhc3Mg
b2YgYWxsIHRoZSBkZWNvZGVycyBhbmQgZWFjaAorICAgICAgICBkZXJpdmVkIGNsYXNzIG92ZXJy
aWRlcyB0aGVzZSBmdW5jdGlvbiB0byBoYW5kbGUgdGhlIGltYWdlIGZvcm1hdCBkaWZmZXJlbnRs
eS4KKworICAgICAgICAtLSBUaGUgaGVhZGVyIGZpbGUgc2l6ZSBiZWNvbWVzIGxhcmdlciBzaW5j
ZSBpdCBpbmNsdWRlcyBhbGwgdGhlIHNwZWNpZmljCisgICAgICAgIG1lbWJlcnMgZm9yIGFsbCBw
bGF0Zm9ybXMuIFRoaXMgY2FuIGJlIGVhc2lseSBjbGVhbmVkIHVwIGxhdGVyLgorCisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RGVjb2Rlcjo6fkltYWdlRGVjb2Rlcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6
OmlzU2l6ZUF2YWlsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmNsZWFy
RnJhbWVCdWZmZXJDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzY2FsZWRTaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c2V0UHJlbXVsdGlwbHlBbHBoYSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXI6OnByZW11bHRpcGx5QWxwaGEpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVyOjpzZXRJZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXI6Omlnbm9yZXNHYW1tYUFuZENvbG9yUHJvZmlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZhaWxlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVNvdXJjZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VU
eXBlcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRGVjb2Rlcjo6aXNBbGxEYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRGVjb2Rlcjo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUhhc0FscGhhQXRJbmRleCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oOiBSZW1vdmVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXI6OkltYWdlRGVjb2Rlcik6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjppc0FsbERhdGFSZWNlaXZl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1lSXNDb21wbGV0ZUF0SW5k
ZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1lSGFzQWxwaGFBdEluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5k
ZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3Qy
RC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVj
b2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OkltYWdlRGVjb2Rlcik6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5l
UHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnNldERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjppc0FsbERhdGFSZWNlaXZlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmVuY29kZWREYXRhU3RhdHVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c2V0RmFpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRGVjb2Rlcjo6ZmlsZW5hbWVFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
ZWNvZGVyOjpzZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6ZnJhbWVD
b3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnJlcGV0aXRpb25Db3VudCk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmhvdFNwb3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUhhc0FscGhhQXRJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZURlY29kZXI6OmZyYW1lQnl0ZXNBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlRGVjb2Rlcjo6ZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZVNpemVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRGVjb2Rlcjo6ZnJhbWVBbGxvd1N1YnNhbXBsaW5nQXRJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZURlY29kZXI6OnByZXBhcmVTY2FsZURhdGFJZk5lY2Vzc2FyeSk6CisgICAgICAg
ICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmg6IFJlbW92ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpCTVBJbWFnZURlY29kZXI6OkJNUEltYWdlRGVjb2Rlcik6CisgICAg
ICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R0lGSW1hZ2VEZWNvZGVyOjpHSUZJbWFnZURlY29kZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdlRGVjb2Rlcjo6SUNPSW1hZ2VEZWNvZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OklDT0ltYWdlRGVjb2Rlcjo6c2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJQ09JbWFnZURlY29kZXI6OmZyYW1lU2l6ZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
SUNPSW1hZ2VEZWNvZGVyOjpkZWNvZGVBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpQRUdJbWFnZURlY29kZXI6OkpQRUdJbWFnZURlY29kZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpQTkdJbWFnZURlY29kZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V0VCUEltYWdlRGVjb2Rlcjo6V0VCUEltYWdlRGVjb2Rlcik6CisgICAgICAgICog
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmg6CisKIDIwMTct
MDUtMzAgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZlcnQgYWNj
aWRlbnRhbGx5IGNoZWNrZWQgaW4gY2hhbmdlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg2YTI2YTg0YWRmLi5iMGQ3YTM2ZTVm
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMjUwMCwxMCArMjUwMCwxMCBAQAogCQk1M0VGNzY2QzE2NTMxOTk0MDA0Q0JFNDkg
LyogU2V0dGluZ3NNYWNyb3MuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRUY3NjZBMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0
aW5nc01hY3Jvcy5oICovOyB9OwogCQk1NTBBMEJDOTA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlm
aWVkTmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NTBBMEJDNzA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgKi87IH07CiAJ
CTU1MEEwQkNBMDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTBBMEJDODA4NUY2MDM5MDA3MzUz
RDYgLyogUXVhbGlmaWVkTmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTU1MzRFRTkyMUVERTU2OEQwMDgxOEMwNCAvKiBJbWFnZURlY29kZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MzRFRTkx
MUVERTU2ODkwMDgxOEMwNCAvKiBJbWFnZURlY29kZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NTUwQ0I0MjFFOTU1RTNDMDAxMTFBQTAgLyog
SW1hZ2VUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTU1MENCNDExRTk1NUUzQzAwMTExQUEwIC8qIEltYWdlVHlwZXMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NTUxMzAwMTFFN0NDQ0NCMDBB
NjlFMzggLyogRGVjb2RpbmdPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1NTUxMzAwMDFFN0NDQ0NBMDBBNjlFMzggLyogRGVjb2RpbmdPcHRp
b25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NTU1Qjg3RUMxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1NUI4N0VBMUNBQUYwQUIwMDM0
OTQyNSAvKiBJbWFnZURlY29kZXJDRy5jcHAgKi87IH07Ci0JCTU1NUI4N0VEMUNBQUYwQUIwMDM0
OTQyNSAvKiBJbWFnZURlY29kZXJDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTU1Qjg3RUIxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNH
LmggKi87IH07CiAJCTU1NzZBNTY0MUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1NzZBNTYyMUQ4
OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmNwcCAqLzsgfTsKIAkJNTU3NkE1NjUxRDg4QTcw
ODAwQ0NDMDRDIC8qIEltYWdlRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU1NzZBNTYzMUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTU5N0Y4
MjYxRDkxQzMxMzAwNjZCQzIxIC8qIEltYWdlRnJhbWVDYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTk3RjgyNDFEOTFDMzEzMDA2NkJDMjEg
LyogSW1hZ2VGcmFtZUNhY2hlLmNwcCAqLzsgfTsKQEAgLTEwMjcxLDEwICsxMDI3MSwxMCBAQAog
CQk1M0VGNzY2QTE2NTMwQTYxMDA0Q0JFNDkgLyogU2V0dGluZ3NNYWNyb3MuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2V0dGluZ3NNYWNyb3MuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTUwQTBCQzcwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRl
bnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUXVhbGlmaWVkTmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0g
ODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlm
aWVkTmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBRdWFsaWZpZWROYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0g
ODsgdXNlc1RhYnMgPSAwOyB9OworCQk1NTM0RUU5MTFFREU1Njg5MDA4MThDMDQgLyogSW1hZ2VE
ZWNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlRGVjb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1NTUwQ0I0MTFFOTU1RTNDMDAxMTFBQTAgLyogSW1hZ2VUeXBlcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZVR5cGVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTU1NTEzMDAwMUU3Q0NDQ0EwMEE2OUUzOCAvKiBEZWNvZGluZ09w
dGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVjb2RpbmdPcHRpb25z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1NUI4N0VBMUNBQUYwQUIwMDM0OTQy
NSAvKiBJbWFnZURlY29kZXJDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJbWFnZURlY29kZXJDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU1
NUI4N0VCMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZURlY29kZXJDRy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1NTc2QTU2MjFEODhBNzA4MDBDQ0MwNEMgLyogSW1hZ2VGcmFtZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUZyYW1lLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTU3NkE1NjMxRDg4QTcwODAwQ0NDMDRDIC8qIEltYWdl
RnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VGcmFtZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTk3RjgyNDFEOTFDMzEzMDA2NkJDMjEgLyog
SW1hZ2VGcmFtZUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEltYWdlRnJhbWVDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzA1
NCw3ICsyMzA1NCw2IEBACiAJCQkJMjJCRDlGODAxMzUzNjRGRTAwOUJEMTAyIC8qIEltYWdlQnVm
ZmVyRGF0YUNHLmggKi8sCiAJCQkJQjI3NTM1MzAwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlQ0cu
Y3BwICovLAogCQkJCTU1NUI4N0VBMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5j
cHAgKi8sCi0JCQkJNTU1Qjg3RUIxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmgg
Ki8sCiAJCQkJNEIzNDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0cuaCAqLywK
IAkJCQk0QjM0ODA5MTBFRUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VDR01hYy5tbSAqLywK
IAkJCQlCMjc1MzUzMjBCMDUzODE0MDAyQ0U2NEYgLyogSW50UG9pbnRDRy5jcHAgKi8sCkBAIC0y
MzIyOCw2ICsyMzIyNyw3IEBACiAJCQkJNDNEMjU5NzYxM0M4MTZGNDAwNjA4NTU5IC8qIEltYWdl
QnVmZmVyLmNwcCAqLywKIAkJCQlCMkExMEI5MTBCMzgxOEJEMDAwOTlBQTQgLyogSW1hZ2VCdWZm
ZXIuaCAqLywKIAkJCQkyMkJEOUY3RDEzNTM2MjVDMDA5QkQxMDIgLyogSW1hZ2VCdWZmZXJEYXRh
LmggKi8sCisJCQkJNTUzNEVFOTExRURFNTY4OTAwODE4QzA0IC8qIEltYWdlRGVjb2Rlci5oICov
LAogCQkJCTU1NzZBNTYyMUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmNwcCAqLywKIAkJ
CQk1NTc2QTU2MzFEODhBNzA4MDBDQ0MwNEMgLyogSW1hZ2VGcmFtZS5oICovLAogCQkJCTU1OTdG
ODI0MUQ5MUMzMTMwMDY2QkMyMSAvKiBJbWFnZUZyYW1lQ2FjaGUuY3BwICovLApAQCAtMjc2NzEs
NyArMjc2NzEsNiBAQAogCQkJCTUxMDE5MkQ2MThCNkI5QjcwMDdGQzdBMSAvKiBJbWFnZUNvbnRy
b2xzUm9vdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDE5MkQyMThCNkI5QUIwMDdG
QzdBMSAvKiBJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE3Nzk3OTFBMEQ2QjlEMEMwMDM4NTFCOSAvKiBJbWFnZURhdGEuaCBpbiBIZWFkZXJzICovLAot
CQkJCTU1NUI4N0VEMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTcyMDVBQjYxMjM5MjkxMDAwQjE3MzgwIC8qIEltYWdlRG9jdW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTU1NzZBNTY1MUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1l
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1NTk3RjgyNzFEOTFDMzEzMDA2NkJDMjEgLyogSW1hZ2VG
cmFtZUNhY2hlLmggaW4gSGVhZGVycyAqLywKQEAgLTI4MjMwLDYgKzI4MjI5LDcgQEAKIAkJCQkz
MTZEQ0I0RTFFNzkxMEE2MDAxQjVGODcgLyogSlNSVENJY2VHYXRoZXJpbmdTdGF0ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDczNzk0RUMxOUVFMzQxRTAwRTVBMDQ1IC8qIEpTUlRDSWNlU2VydmVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTZEQ0IyMDFFNzhDQTU1MDAxQjVGODcgLyogSlNSVENP
ZmZlckFuc3dlck9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1MzRFRTkyMUVERTU2OEQw
MDgxOEMwNCAvKiBJbWFnZURlY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OTY5REJBMTdE
MTQxNTEwMDdGRjg0MiAvKiBKU1JUQ1BlZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwNzk2OURCODE3RDE0MTUxMDA3RkY4NDIgLyogSlNSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1RTJDNDM3NDFCQ0YwRDc1MDAwMUUyQkUgLyogSlNSVENS
dHBQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLjNiMjEwNzUzNDdmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgKQEAgLTAsMCArMSwxMzggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYsIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIkRlY29kaW5nT3B0aW9ucy5oIgorI2lmICFVU0UoQ0cpICYmICFVU0Uo
RElSRUNUMkQpCisjaW5jbHVkZSAiSW1hZ2VGcmFtZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgorI2VuZGlmCisjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgorI2luY2x1ZGUgIklt
YWdlVHlwZXMuaCIKKyNpbmNsdWRlICJJbnRQb2ludC5oIgorI2luY2x1ZGUgIkludFNpemUuaCIK
KyNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCisjaWYgVVNFKENHKQordHlwZWRl
ZiBzdHJ1Y3QgQ0dJbWFnZVNvdXJjZSogQ0dJbWFnZVNvdXJjZVJlZjsKKyNlbGlmIFVTRShESVJF
Q1QyRCkKK2ludGVyZmFjZSBJRDJEMVJlbmRlclRhcmdldDsKK2ludGVyZmFjZSBJV0lDQml0bWFw
RGVjb2RlcjsKK2ludGVyZmFjZSBJV0lDSW1hZ2luZ0ZhY3Rvcnk7CisjZW5kaWYKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworICAgIAorY2xhc3MgU2hhcmVkQnVmZmVyOworCitjbGFzcyBJbWFnZURl
Y29kZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW1hZ2VEZWNvZGVyPiB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VEZWNvZGVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CitwdWJsaWM6CisgICAgSW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFP
cHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICB2aXJ0dWFsIH5JbWFnZURl
Y29kZXIoKSB7IH0KKworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoU2hh
cmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
OworICAgIHN0YXRpYyBzaXplX3QgYnl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCk7
CisKKyAgICBFbmNvZGVkRGF0YVN0YXR1cyBlbmNvZGVkRGF0YVN0YXR1cygpIGNvbnN0OworICAg
IGJvb2wgaXNTaXplQXZhaWxhYmxlKCkgY29uc3QgeyByZXR1cm4gZW5jb2RlZERhdGFTdGF0dXMo
KSA+PSBFbmNvZGVkRGF0YVN0YXR1czo6U2l6ZUF2YWlsYWJsZTsgfQorICAgIHZpcnR1YWwgc2l6
ZV90IGZyYW1lQ291bnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFJlcGV0aXRpb25Db3VudCByZXBl
dGl0aW9uQ291bnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lv
bigpIGNvbnN0OworICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgp
IGNvbnN0OworCisgICAgdmlydHVhbCBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBT
dWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCkgY29uc3Q7CisgICAg
Ym9vbCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCk7CisgICAgSW1hZ2VPcmllbnRhdGlv
biBmcmFtZU9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0OworCisgICAgZmxvYXQgZnJh
bWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90KTsKKyAgICBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4
KHNpemVfdCk7CisgICAgYm9vbCBmcmFtZUFsbG93U3Vic2FtcGxpbmdBdEluZGV4KHNpemVfdCkg
Y29uc3Q7CisgICAgdW5zaWduZWQgZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGlu
Z0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCkgY29uc3Q7CisKKyAgICBOYXRpdmVJ
bWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwg
PSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVj
b2RpbmdNb2RlOjpTeW5jaHJvbm91cyk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShTaGFy
ZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgYm9vbCBpc0FsbERhdGFSZWNl
aXZlZCgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6
ZV90KSB7IH0KKworI2lmIFVTRShDRykKKyAgICBTdHJpbmcgdXRpKCkgY29uc3Q7CisjZWxpZiBV
U0UoRElSRUNUMkQpCisgICAgdm9pZCBzZXRUYXJnZXRDb250ZXh0KElEMkQxUmVuZGVyVGFyZ2V0
Kik7CisgICAgc3RhdGljIElXSUNJbWFnaW5nRmFjdG9yeSogc3lzdGVtSW1hZ2luZ0ZhY3Rvcnko
KTsKKyNlbHNlCisgICAgdm9pZCBzZXRQcmVtdWx0aXBseUFscGhhKGJvb2wgcHJlbXVsdGlwbHlB
bHBoYSkgeyAgbV9wcmVtdWx0aXBseUFscGhhID0gcHJlbXVsdGlwbHlBbHBoYTsgfQorICAgIGJv
b2wgcHJlbXVsdGlwbHlBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlbXVsdGlwbHlBbHBoYTsg
fQorICAgIHZvaWQgc2V0SWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUoYm9vbCBpZ25vcmVHYW1t
YUFuZENvbG9yUHJvZmlsZSkgeyBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlID0gaWdub3Jl
R2FtbWFBbmRDb2xvclByb2ZpbGU7IH0KKyAgICBib29sIGlnbm9yZXNHYW1tYUFuZENvbG9yUHJv
ZmlsZSgpIGNvbnN0IHsgcmV0dXJuIG1faWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGU7IH0KKwor
ICAgIHZpcnR1YWwgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUmKTsKKyAgICB2aXJ0dWFsIElu
dFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGlzU2l6ZUF2YWlsYWJsZSgpID8gbV9zaXplIDog
SW50U2l6ZSgpOyB9CisgICAgSW50U2l6ZSBzY2FsZWRTaXplKCkgeyByZXR1cm4gbV9zY2FsZWQg
PyBJbnRTaXplKG1fc2NhbGVkQ29sdW1ucy5zaXplKCksIG1fc2NhbGVkUm93cy5zaXplKCkpIDog
c2l6ZSgpOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdHJ5RGVjb2RlU2l6ZShib29sKSA9IDA7Cisg
ICAgdmlydHVhbCBib29sIHNldEZhaWxlZCgpOworICAgIGJvb2wgZmFpbGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3I7IH0K
KworICAgIHZpcnR1YWwgSW1hZ2VGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCkgPSAw
OworCisgICAgdm9pZCBwcmVwYXJlU2NhbGVEYXRhSWZOZWNlc3NhcnkoKTsKKyAgICBpbnQgdXBw
ZXJCb3VuZFNjYWxlZFgoaW50IG9yaWdYLCBpbnQgc2VhcmNoU3RhcnQgPSAwKTsKKyAgICBpbnQg
bG93ZXJCb3VuZFNjYWxlZFgoaW50IG9yaWdYLCBpbnQgc2VhcmNoU3RhcnQgPSAwKTsKKyAgICBp
bnQgdXBwZXJCb3VuZFNjYWxlZFkoaW50IG9yaWdZLCBpbnQgc2VhcmNoU3RhcnQgPSAwKTsKKyAg
ICBpbnQgbG93ZXJCb3VuZFNjYWxlZFkoaW50IG9yaWdZLCBpbnQgc2VhcmNoU3RhcnQgPSAwKTsK
KyAgICBpbnQgc2NhbGVkWShpbnQgb3JpZ1ksIGludCBzZWFyY2hTdGFydCA9IDApOworI2VuZGlm
CisKK3Byb3RlY3RlZDoKKyNpZiBVU0UoQ0cpCisgICAgUmV0YWluUHRyPENHSW1hZ2VTb3VyY2VS
ZWY+IG1fbmF0aXZlRGVjb2RlcjsKKyAgICBib29sIG1faXNBbGxEYXRhUmVjZWl2ZWQgeyBmYWxz
ZSB9OworI2VsaWYgVVNFKERJUkVDVDJEKQorICAgIENPTVB0cjxJV0lDQml0bWFwRGVjb2Rlcj4g
bV9uYXRpdmVEZWNvZGVyOworICAgIENPTVB0cjxJRDJEMVJlbmRlclRhcmdldD4gbV9yZW5kZXJU
YXJnZXQ7CisjZWxzZQorICAgIGJvb2wgbV9wcmVtdWx0aXBseUFscGhhOworICAgIGJvb2wgbV9p
Z25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZTsKKworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1f
ZGF0YTsgLy8gVGhlIGVuY29kZWQgZGF0YS4KKyAgICBWZWN0b3I8SW1hZ2VGcmFtZSwgMT4gbV9m
cmFtZUJ1ZmZlckNhY2hlOworICAgIEVuY29kZWREYXRhU3RhdHVzIG1fZW5jb2RlZERhdGFTdGF0
dXMgeyBFbmNvZGVkRGF0YVN0YXR1czo6VHlwZUF2YWlsYWJsZSB9OworICAgIGJvb2wgbV9kZWNv
ZGluZ1NpemVGcm9tU2V0RGF0YSB7IGZhbHNlIH07CisKKyAgICBJbnRTaXplIG1fc2l6ZTsKKyAg
ICBJbWFnZU9yaWVudGF0aW9uIG1fb3JpZW50YXRpb247CisKKyAgICBib29sIG1fc2NhbGVkIHsg
ZmFsc2UgfTsKKyAgICBWZWN0b3I8aW50PiBtX3NjYWxlZENvbHVtbnM7CisgICAgVmVjdG9yPGlu
dD4gbV9zY2FsZWRSb3dzOworI2VuZGlmCit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmNwcAppbmRleCBhNzQ1ZWE4MDE2
Ny4uMjBlNWY4NDA4YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlRnJhbWVDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmNwcApAQCAtMjcsMjMgKzI3LDE0IEBACiAjaW5jbHVkZSAi
SW1hZ2VGcmFtZUNhY2hlLmgiCiAKICNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIkltYWdl
RGVjb2Rlci5oIgogI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJMb2dnaW5n
LmgiCiAjaW5jbHVkZSAiVVJMLmgiCi0jaW5jbHVkZSA8d3RmL1N5c3RlbVRyYWNpbmcuaD4KLQot
I2lmIFVTRShDRykKLSNpbmNsdWRlICJJbWFnZURlY29kZXJDRy5oIgotI2VsaWYgVVNFKERJUkVD
VDJEKQotI2luY2x1ZGUgIkltYWdlRGVjb2RlckRpcmVjdDJELmgiCi0jaW5jbHVkZSA8V2luQ29k
ZWMuaD4KLSNlbHNlCi0jaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCi0jZW5kaWYKLQogI2luY2x1
ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRleCAzZDQ4M2ZiOTM5Ny4uMWQ0NjY3ODA2NzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5j
cHAKQEAgLTMwLDE5ICszMCwxMiBAQAogI2luY2x1ZGUgIkltYWdlU291cmNlLmgiCiAKICNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJJbWFnZURlY29kZXIuaCIKKyNpbmNs
dWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCiAKLSNpZiBVU0UoQ0cpCi0jaW5jbHVkZSAiSW1hZ2VE
ZWNvZGVyQ0cuaCIKLSNpZiBQTEFURk9STShXSU4pCisjaWYgVVNFKENHKSAmJiBQTEFURk9STShX
SU4pCiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFj
ZS5oPgogI2VuZGlmCi0jZWxpZiBVU0UoRElSRUNUMkQpCi0jaW5jbHVkZSAiSW1hZ2VEZWNvZGVy
RGlyZWN0MkQuaCIKLSNlbHNlCi0jaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCi0jZW5kaWYKLQot
I2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VUeXBlcy5oCmluZGV4IGRiNjEyMTJlMmVmLi43NTExNzNiMWE2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VUeXBlcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlVHlwZXMuaApAQCAtMjUsMTAg
KzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBVU0UoQ0cpCi10eXBlZGVmIHN0cnVjdCBD
R0ltYWdlU291cmNlKiBDR0ltYWdlU291cmNlUmVmOwotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogLy8gVGhlcmUgYXJlIGZvdXIgc3Vic2FtcGxpbmcgbGV2ZWxzOiAwID0gMXgsIDEg
PSAwLjV4LCAyID0gMC4yNXgsIDMgPSAwLjEyNXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggYzdlMTE0ZWYx
MjcuLjQ2MDA2NDIzYWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC0yNCwxNSArMjQsMTMgQEAKICAqLwog
CiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSW1hZ2VEZWNvZGVyQ0cuaCIKKyNpbmNs
dWRlICJJbWFnZURlY29kZXIuaCIKIAogI2lmIFVTRShDRykKIAogI2luY2x1ZGUgIkltYWdlSU9T
UEkuaCIKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW1hZ2VTb3Vy
Y2VDRy5oIgotI2luY2x1ZGUgIkludFBvaW50LmgiCi0jaW5jbHVkZSAiSW50U2l6ZS5oIgogI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTE2Myw2ICsxNjEsMTEgQEAgSW1hZ2VEZWNvZGVyOjpJ
bWFnZURlY29kZXIoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xv
clByb2ZpbGUKICAgICAgICAgbV9uYXRpdmVEZWNvZGVyID0gYWRvcHRDRihDR0ltYWdlU291cmNl
Q3JlYXRlSW5jcmVtZW50YWwobnVsbHB0cikpOwogfQogCitSZWZQdHI8SW1hZ2VEZWNvZGVyPiBJ
bWFnZURlY29kZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEltYWdlRGVjb2RlcihkYXRhLCBhbHBo
YU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKK30KKwogc2l6ZV90IEltYWdl
RGVjb2Rlcjo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCkKIHsKICAgICAvLyBN
ZWFzdXJlZCBieSB0cmFjaW5nIG1hbGxvYy9jYWxsb2MgY2FsbHMgb24gTWFjIE9TIDEwLjYuNiwg
eDg2XzY0LgpAQCAtMTczLDcgKzE3Niw3IEBAIHNpemVfdCBJbWFnZURlY29kZXI6OmJ5dGVzRGVj
b2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpCiAgICAgLy8gYmVoYXZpb3IgaXMgdW5jaGFuZ2Vk
LgogICAgIHJldHVybiAxMzA4ODsKIH0KLSAgICAKKwogU3RyaW5nIEltYWdlRGVjb2Rlcjo6dXRp
KCkgY29uc3QKIHsKICAgICByZXR1cm4gQ0dJbWFnZVNvdXJjZUdldFR5cGUobV9uYXRpdmVEZWNv
ZGVyLmdldCgpKTsKQEAgLTE4NCw2ICsxODcsMTEgQEAgU3RyaW5nIEltYWdlRGVjb2Rlcjo6Zmls
ZW5hbWVFeHRlbnNpb24oKSBjb25zdAogICAgIHJldHVybiBXZWJDb3JlOjpwcmVmZXJyZWRFeHRl
bnNpb25Gb3JJbWFnZVNvdXJjZVR5cGUodXRpKCkpOwogfQogCitib29sIEltYWdlRGVjb2Rlcjo6
aXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX2lzQWxsRGF0YVJlY2Vp
dmVkOworfQorCiBFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZURlY29kZXI6OmVuY29kZWREYXRhU3Rh
dHVzKCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKENHSW1hZ2VTb3VyY2VHZXRTdGF0dXMobV9uYXRp
dmVEZWNvZGVyLmdldCgpKSkgewpAQCAtMzAwLDcgKzMwOCw3IEBAIEludFNpemUgSW1hZ2VEZWNv
ZGVyOjpmcmFtZVNpemVBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJz
YW1wbGluCiAgICAgcmV0dXJuIEludFNpemUod2lkdGgsIGhlaWdodCk7CiB9CiAKLWJvb2wgSW1h
Z2VEZWNvZGVyOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKK2Jv
b2wgSW1hZ2VEZWNvZGVyOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkKIHsK
ICAgICBBU1NFUlQoZnJhbWVDb3VudCgpKTsKICAgICAvLyBDR0ltYWdlU291cmNlR2V0U3RhdHVz
QXRJbmRleCgpIGNoYW5nZXMgdGhlIHJldHVybiBzdGF0dXMgdmFsdWUgZnJvbSBrQ0dJbWFnZVN0
YXR1c0luY29tcGxldGUKQEAgLTMyMSw3ICszMjksNyBAQCBJbWFnZU9yaWVudGF0aW9uIEltYWdl
RGVjb2Rlcjo6ZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAogICAg
IHJldHVybiBvcmllbnRhdGlvbkZyb21Qcm9wZXJ0aWVzKHByb3BlcnRpZXMuZ2V0KCkpOwogfQog
Ci1mbG9hdCBJbWFnZURlY29kZXI6OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkg
Y29uc3QKK2Zsb2F0IEltYWdlRGVjb2Rlcjo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90IGlu
ZGV4KQogewogICAgIGZsb2F0IGR1cmF0aW9uID0gMDsKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9u
YXJ5UmVmPiBwcm9wZXJ0aWVzID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ29weVByb3BlcnRpZXNB
dEluZGV4KG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgaW5kZXgsIGltYWdlU291cmNlT3B0aW9ucygp
LmdldCgpKSk7CkBAIC0zNzcsNyArMzg1LDcgQEAgYm9vbCBJbWFnZURlY29kZXI6OmZyYW1lQWxs
b3dTdWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIEltYWdlRGVjb2Rlcjo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGluZGV4KSBj
b25zdAorYm9vbCBJbWFnZURlY29kZXI6OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRl
eCkKIHsKICAgICBpZiAoIWZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoaW5kZXgpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTQwMSw3ICs0MDksNyBAQCB1bnNpZ25lZCBJbWFnZURlY29kZXI6OmZy
YW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbAog
ICAgIHJldHVybiAoZnJhbWVTaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpOwogfQogCi1OYXRp
dmVJbWFnZVB0ciBJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBp
bmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09w
dGlvbnMmIGRlY29kaW5nT3B0aW9ucykgY29uc3QKK05hdGl2ZUltYWdlUHRyIEltYWdlRGVjb2Rl
cjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVs
IHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgZGVjb2RpbmdPcHRpb25z
KQogewogICAgIExPRyhJbWFnZXMsICJJbWFnZURlY29kZXIgJXAgY3JlYXRlRnJhbWVJbWFnZUF0
SW5kZXggJWx1IiwgdGhpcywgaW5kZXgpOwogICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+
IG9wdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZURlY29kZXJDRy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VEZWNvZGVyQ0cuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmMyODRlNzFm
ZjQuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlRGVjb2RlckNHLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
bmNsdWRlICJEZWNvZGluZ09wdGlvbnMuaCIKLSNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgi
Ci0jaW5jbHVkZSAiSW1hZ2VUeXBlcy5oIgotI2luY2x1ZGUgIkludFBvaW50LmgiCi0jaW5jbHVk
ZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCi0jaW5jbHVkZSA8d3RmL09w
dGlvbmFsLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLSAgICAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKLSAgICAKLWNsYXNzIElt
YWdlRGVjb2RlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbWFnZURlY29kZXI+IHsK
LSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBJbWFnZURlY29kZXIo
U2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pOwotCi0gICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXI+IGNyZWF0ZShTaGFyZWRCdWZmZXIm
IGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
biBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEltYWdlRGVjb2RlcihkYXRhLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pKTsKLSAgICB9Ci0gICAgCi0gICAgc3RhdGljIHNpemVfdCBieXRlc0RlY29k
ZWRUb0RldGVybWluZVByb3BlcnRpZXMoKTsKLQotICAgIEVuY29kZWREYXRhU3RhdHVzIGVuY29k
ZWREYXRhU3RhdHVzKCkgY29uc3Q7Ci0gICAgYm9vbCBpc1NpemVBdmFpbGFibGUoKSB7IHJldHVy
biBlbmNvZGVkRGF0YVN0YXR1cygpID49IEVuY29kZWREYXRhU3RhdHVzOjpTaXplQXZhaWxhYmxl
OyB9Ci0gICAgc2l6ZV90IGZyYW1lQ291bnQoKSBjb25zdDsKLSAgICBSZXBldGl0aW9uQ291bnQg
cmVwZXRpdGlvbkNvdW50KCkgY29uc3Q7Ci0gICAgU3RyaW5nIHV0aSgpIGNvbnN0OwotICAgIFN0
cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0OwotICAgIHN0ZDo6b3B0aW9uYWw8SW50UG9p
bnQ+IGhvdFNwb3QoKSBjb25zdDsKLQotICAgIEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXpl
X3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdDsK
LSAgICBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90KSBjb25zdDsKLSAgICBJbWFn
ZU9yaWVudGF0aW9uIGZyYW1lT3JpZW50YXRpb25BdEluZGV4KHNpemVfdCkgY29uc3Q7Ci0gICAg
Ci0gICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90KSBjb25zdDsKLSAgICBib29s
IGZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCkgY29uc3Q7Ci0gICAgYm9vbCBmcmFtZUFsbG93
U3Vic2FtcGxpbmdBdEluZGV4KHNpemVfdCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgZnJhbWVCeXRl
c0F0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVm
YXVsdCkgY29uc3Q7Ci0gICAgCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0
SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVs
dCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpIGNv
bnN0OwotICAgIAotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFS
ZWNlaXZlZCk7Ci0gICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNBbGxEYXRhUmVjZWl2ZWQ7IH0KLSAgICB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXpl
X3QpIHsgfQotICAgIAotcHJvdGVjdGVkOgotICAgIGJvb2wgbV9pc0FsbERhdGFSZWNlaXZlZCB7
IGZhbHNlIH07Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VTb3VyY2VSZWY+IG1fbmF0aXZlRGVjb2Rl
cjsKLX07Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCmluZGV4IDZhYmU3ZTNlYWU1Li5i
YmJiNTljMjc1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCkBAIC0yNCwxNCArMjQsMTIg
QEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSW1hZ2VEZWNvZGVyRGly
ZWN0MkQuaCIKKyNpbmNsdWRlICJJbWFnZURlY29kZXIiCiAKICNpZiBVU0UoRElSRUNUMkQpCiAK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9u
LmgiCi0jaW5jbHVkZSAiSW50UG9pbnQuaCIKLSNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyLmgiCkBAIC00MSwxMCArMzksMTUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1JbWFnZURlY29kZXI6OkltYWdlRGVjb2RlcigpCitJbWFnZURlY29kZXI6OkltYWdlRGVjb2Rl
cihTaGFyZWRCdWZmZXImLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
CiB7CiB9CiAKK1JlZlB0cjxJbWFnZURlY29kZXI+IGNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEs
IEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEltYWdl
RGVjb2RlcihkYXRhLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsK
K30KKwogSVdJQ0ltYWdpbmdGYWN0b3J5KiBJbWFnZURlY29kZXI6OnN5c3RlbUltYWdpbmdGYWN0
b3J5KCkKIHsKICAgICBzdGF0aWMgSVdJQ0ltYWdpbmdGYWN0b3J5KiB3aWNJbWFnaW5nRmFjdG9y
eSA9IG51bGxwdHI7CkBAIC03OSw2ICs4MiwxMiBAQCBFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZURl
Y29kZXI6OmVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QKICAgICByZXR1cm4gRW5jb2RlZERhdGFT
dGF0dXM6OlVua25vd247CiB9CiAKK2Jvb2wgSW1hZ2VEZWNvZGVyOjppc0FsbERhdGFSZWNlaXZl
ZCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKIEludFNpemUgSW1hZ2VEZWNvZGVyOjpzaXplKCkgY29uc3QKIHsKICAgICBpZiAoIW1fbmF0
aXZlRGVjb2RlcikKQEAgLTEzOCw3ICsxNDcsNyBAQCBJbnRTaXplIEltYWdlRGVjb2Rlcjo6ZnJh
bWVTaXplQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbgog
ICAgIHJldHVybiBJbnRTaXplKHdpZHRoLCBoZWlnaHQpOwogfQogCi1ib29sIEltYWdlRGVjb2Rl
cjo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Citib29sIEltYWdl
RGVjb2Rlcjo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgpCiB7CiAgICAgaWYg
KCFtX25hdGl2ZURlY29kZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE1NCw3ICsxNjMs
NyBAQCBJbWFnZU9yaWVudGF0aW9uIEltYWdlRGVjb2Rlcjo6ZnJhbWVPcmllbnRhdGlvbkF0SW5k
ZXgoc2l6ZV90IGluZGV4KSBjb25zdAogICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uKCk7CiB9
CiAKLWZsb2F0IEltYWdlRGVjb2Rlcjo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4
KSBjb25zdAorZmxvYXQgSW1hZ2VEZWNvZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3Qg
aW5kZXgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gMDsKQEAgLTE2Niw3
ICsxNzUsNyBAQCBib29sIEltYWdlRGVjb2Rlcjo6ZnJhbWVBbGxvd1N1YnNhbXBsaW5nQXRJbmRl
eChzaXplX3QpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSW1hZ2VEZWNvZGVy
OjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Citib29sIEltYWdlRGVj
b2Rlcjo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xODYsNyArMTk1LDcgQEAgdm9pZCBJbWFn
ZURlY29kZXI6OnNldFRhcmdldENvbnRleHQoSUQyRDFSZW5kZXJUYXJnZXQqIHJlbmRlclRhcmdl
dCkKICAgICBtX3JlbmRlclRhcmdldCA9IHJlbmRlclRhcmdldDsKIH0KIAotTmF0aXZlSW1hZ2VQ
dHIgSW1hZ2VEZWNvZGVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1
YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikg
Y29uc3QKK05hdGl2ZUltYWdlUHRyIEltYWdlRGVjb2Rlcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5k
ZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0
IERlY29kaW5nT3B0aW9ucyYpCiB7CiAgICAgaWYgKCFtX25hdGl2ZURlY29kZXIgfHwgIW1fcmVu
ZGVyVGFyZ2V0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiZDRkNmY2N2U2Li4wMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGly
ZWN0MkQuaAorKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkNP
TVB0ci5oIgotI2luY2x1ZGUgIkltYWdlU291cmNlLmgiCi0jaW5jbHVkZSAiSW50U2l6ZS5oIgot
I2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgotCi1pbnRlcmZhY2UgSUQyRDFSZW5kZXJUYXJnZXQ7
Ci1pbnRlcmZhY2UgSVdJQ0JpdG1hcERlY29kZXI7Ci1pbnRlcmZhY2UgSVdJQ0ltYWdpbmdGYWN0
b3J5OwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEltYWdlRGVjb2RlciA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbWFnZURlY29kZXI+IHsKLSAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBJbWFnZURlY29kZXIoKTsKLSAgICAKLSAgICBzdGF0
aWMgUmVmPEltYWdlRGVjb2Rlcj4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYsIEFscGhhT3B0aW9uLCBH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEltYWdlRGVjb2RlcigpKTsKLSAgICB9Ci0gICAgCi0gICAgc3RhdGljIHNpemVfdCBi
eXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKTsKLSAgICAKLSAgICBTdHJpbmcgZmls
ZW5hbWVFeHRlbnNpb24oKSBjb25zdDsKLSAgICBFbmNvZGVkRGF0YVN0YXR1cyBlbmNvZGVkRGF0
YVN0YXR1cygpIGNvbnN0OwotICAgIGJvb2wgaXNTaXplQXZhaWxhYmxlKCkgY29uc3Q7Ci0gICAg
Ci0gICAgLy8gQWx3YXlzIG9yaWdpbmFsIHNpemUsIHdpdGhvdXQgc3Vic2FtcGxpbmcuCi0gICAg
SW50U2l6ZSBzaXplKCkgY29uc3Q7Ci0gICAgc2l6ZV90IGZyYW1lQ291bnQoKSBjb25zdDsKLQot
ICAgIFJlcGV0aXRpb25Db3VudCByZXBldGl0aW9uQ291bnQoKSBjb25zdDsKLSAgICBzdGQ6Om9w
dGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3Q7Ci0gICAgCi0gICAgSW50U2l6ZSBmcmFt
ZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6
OkRlZmF1bHQpIGNvbnN0OwotICAgIGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3Qp
IGNvbnN0OwotICAgIEltYWdlT3JpZW50YXRpb24gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgoc2l6
ZV90KSBjb25zdDsKLSAgICAKLSAgICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3Qp
IGNvbnN0OwotICAgIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90KSBjb25zdDsKLSAg
ICBib29sIGZyYW1lQWxsb3dTdWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBjb25zdDsKLSAgICB1
bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJz
YW1wbGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdDsKLSAgICAKLSAgICBOYXRpdmVJbWFnZVB0ciBj
cmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1w
bGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdNb2Rl
OjpTeW5jaHJvbm91cykgY29uc3Q7Ci0gICAgCi0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZl
ciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQotICAgIHZvaWQgY2xlYXJGcmFt
ZUJ1ZmZlckNhY2hlKHNpemVfdCkgeyB9Ci0KLSAgICB2b2lkIHNldFRhcmdldENvbnRleHQoSUQy
RDFSZW5kZXJUYXJnZXQqKTsKLQotICAgIHN0YXRpYyBJV0lDSW1hZ2luZ0ZhY3RvcnkqIHN5c3Rl
bUltYWdpbmdGYWN0b3J5KCk7Ci0KLXByb3RlY3RlZDoKLSAgICBib29sIG1faXNBbGxEYXRhUmVj
ZWl2ZWQgeyBmYWxzZSB9OwotICAgIG11dGFibGUgSW50U2l6ZSBtX3NpemU7Ci0gICAgQ09NUHRy
PElXSUNCaXRtYXBEZWNvZGVyPiBtX25hdGl2ZURlY29kZXI7Ci0gICAgQ09NUHRyPElEMkQxUmVu
ZGVyVGFyZ2V0PiBtX3JlbmRlclRhcmdldDsKLX07Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCmluZGV4IDRi
YTRkYjJhNjIxLi4xNTEzZDkyYzMzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCkBAIC0yOCw3ICsyOCw2IEBA
CiAjaW5jbHVkZSAiSUNPSW1hZ2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiSlBFR0ltYWdlRGVjb2Rl
ci5oIgogI2luY2x1ZGUgIlBOR0ltYWdlRGVjb2Rlci5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgogI2lmIFVTRShXRUJQKQogI2luY2x1ZGUgIldFQlBJbWFnZURlY29kZXIuaCIKICNlbmRp
ZgpAQCAtOTgsNiArOTcsMTIgQEAgYm9vbCBtYXRjaGVzQ1VSU2lnbmF0dXJlKGNoYXIqIGNvbnRl
bnRzKQogCiB9CiAKK0ltYWdlRGVjb2Rlcjo6SW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZlciYsIEFs
cGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbikKKyAgICA6IG1fcHJlbXVsdGlwbHlBbHBoYShhbHBoYU9wdGlv
biA9PSBBbHBoYU9wdGlvbjo6UHJlbXVsdGlwbGllZCkKKyAgICAsIG1faWdub3JlR2FtbWFBbmRD
b2xvclByb2ZpbGUoZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gPT0gR2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb246Oklnbm9yZWQpCit7Cit9CisKIFJlZlB0cjxJbWFnZURlY29kZXI+IEltYWdl
RGVjb2Rlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KQogewogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsZW5ndGhPZkxvbmdlc3RTaWduYXR1cmUg
PSAxNDsgLy8gVG8gd2l0OiAiUklGRj8/Pz9XRUJQVlAiCkBAIC0xNzAsMTMgKzE3NSw5NyBAQCB0
ZW1wbGF0ZSA8TWF0Y2hUeXBlIHR5cGU+IGludCBnZXRTY2FsZWRWYWx1ZShjb25zdCBWZWN0b3I8
aW50PiYgc2NhbGVkVmFsdWVzLCBpbgogCiB9CiAKK3NpemVfdCBJbWFnZURlY29kZXI6OmJ5dGVz
RGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpCit7CisgICAgcmV0dXJuIDA7Cit9CisKK3Zv
aWQgSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpCit7CisgICAgaWYgKG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2RlZERhdGFT
dGF0dXM6OkVycm9yKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2RhdGEgPSAmZGF0YTsKKyAg
ICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6VHlwZUF2YWls
YWJsZSkgeworICAgICAgICBtX2RlY29kaW5nU2l6ZUZyb21TZXREYXRhID0gdHJ1ZTsKKyAgICAg
ICAgdHJ5RGVjb2RlU2l6ZShhbGxEYXRhUmVjZWl2ZWQpOworICAgICAgICBtX2RlY29kaW5nU2l6
ZUZyb21TZXREYXRhID0gZmFsc2U7CisgICAgfQorCisgICAgaWYgKG1fZW5jb2RlZERhdGFTdGF0
dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkVycm9yKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAoYWxsRGF0YVJlY2VpdmVkKSB7CisgICAgICAgIEFTU0VSVChtX2VuY29kZWREYXRhU3RhdHVz
ID09IEVuY29kZWREYXRhU3RhdHVzOjpTaXplQXZhaWxhYmxlKTsKKyAgICAgICAgbV9lbmNvZGVk
RGF0YVN0YXR1cyA9IEVuY29kZWREYXRhU3RhdHVzOjpDb21wbGV0ZTsKKyAgICB9Cit9CisKK2Jv
b2wgSW1hZ2VEZWNvZGVyOjppc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0Cit7CisgICAgQVNTRVJU
KCFtX2RlY29kaW5nU2l6ZUZyb21TZXREYXRhKTsKKyAgICByZXR1cm4gbV9lbmNvZGVkRGF0YVN0
YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6Q29tcGxldGU7Cit9CisKK0VuY29kZWREYXRhU3Rh
dHVzIEltYWdlRGVjb2Rlcjo6ZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdAoreworICAgIHJldHVy
biBtX2VuY29kZWREYXRhU3RhdHVzOworfQorCitib29sIEltYWdlRGVjb2Rlcjo6c2V0RmFpbGVk
KCkKK3sKKyAgICAvLyBTZXRzIHRoZSAiZGVjb2RlIGZhaWx1cmUiIGZsYWcuIEZvciBjYWxsZXIg
Y29udmVuaWVuY2UgKHNpbmNlIHNvCisgICAgLy8gbWFueSBjYWxsZXJzIHdhbnQgdG8gcmV0dXJu
IGZhbHNlIGFmdGVyIGNhbGxpbmcgdGhpcyksIHJldHVybnMgZmFsc2UKKyAgICAvLyB0byBlbmFi
bGUgZWFzeSB0YWlsY2FsbGluZy4gU3ViY2xhc3NlcyBtYXkgb3ZlcnJpZGUgdGhpcyB0byBhbHNv
CisgICAgLy8gY2xlYW4gdXAgYW55IGxvY2FsIGRhdGEuCisgICAgbV9lbmNvZGVkRGF0YVN0YXR1
cyA9IEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcjsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK1N0
cmluZyBJbWFnZURlY29kZXI6OmZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gU3RyaW5nKCk7Cit9CisKKy8vIFJldHVybnMgd2hldGhlciB0aGUgc2l6ZSBpcyBsZWdhbCAo
aS5lLiBub3QgZ29pbmcgdG8gcmVzdWx0IGluCisvLyBvdmVyZmxvdyBlbHNld2hlcmUpLiBJZiBu
b3QsIG1hcmtzIGRlY29kaW5nIGFzIGZhaWxlZC4KK2Jvb2wgSW1hZ2VEZWNvZGVyOjpzZXRTaXpl
KGNvbnN0IEludFNpemUmIHNpemUpCit7CisgICAgaWYgKEltYWdlQmFja2luZ1N0b3JlOjppc092
ZXJTaXplKHNpemUpKQorICAgICAgICByZXR1cm4gc2V0RmFpbGVkKCk7CisgICAgbV9zaXplID0g
c2l6ZTsKKyAgICBtX2VuY29kZWREYXRhU3RhdHVzID0gRW5jb2RlZERhdGFTdGF0dXM6OlNpemVB
dmFpbGFibGU7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3NpemVfdCBJbWFnZURlY29kZXI6OmZy
YW1lQ291bnQoKSBjb25zdAoreworICAgIC8vIExhemlseS1kZWNvZGVzIGVub3VnaCBvZiB0aGUg
aW1hZ2UgdG8gZ2V0IHRoZSBmcmFtZSBjb3VudCAoaWYKKyAgICAvLyBwb3NzaWJsZSksIHdpdGhv
dXQgZGVjb2RpbmcgdGhlIGluZGl2aWR1YWwgZnJhbWVzLgorICAgIC8vIEZJWE1FOiBSaWdodCBu
b3cgdGhhdCBoYXMgdG8gYmUgZG9uZSBieSBlYWNoIHN1YmNsYXNzOyBmYWN0b3IgdGhlCisgICAg
Ly8gZGVjb2RlIGNhbGwgb3V0IGFuZCB1c2UgaXQgaGVyZS4KKyAgICByZXR1cm4gMTsKK30KKwor
UmVwZXRpdGlvbkNvdW50IEltYWdlRGVjb2Rlcjo6cmVwZXRpdGlvbkNvdW50KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gUmVwZXRpdGlvbkNvdW50Tm9uZTsKK30KKworc3RkOjpvcHRpb25hbDxJbnRQ
b2ludD4gSW1hZ2VEZWNvZGVyOjpob3RTcG90KCkgY29uc3QKK3sKKyAgICAvLyBJZiB0aGUgaW1h
Z2UgaGFzIGEgY3Vyc29yIGhvdC1zcG90LCBzdG9yZXMgaXQgaW4gdGhlIGFyZ3VtZW50CisgICAg
Ly8gYW5kIHJldHVybnMgdHJ1ZS4gT3RoZXJ3aXNlIHJldHVybnMgZmFsc2UuCisgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKK30KKyAgICAKIGJvb2wgSW1hZ2VEZWNvZGVyOjpmcmFtZUlzQ29tcGxl
dGVBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKICAgICBJbWFnZUZyYW1lKiBidWZmZXIgPSBmcmFt
ZUJ1ZmZlckF0SW5kZXgoaW5kZXgpOwogICAgIHJldHVybiBidWZmZXIgJiYgYnVmZmVyLT5pc0Nv
bXBsZXRlKCk7CiB9CiAKLWJvb2wgSW1hZ2VEZWNvZGVyOjpmcmFtZUhhc0FscGhhQXRJbmRleChz
aXplX3QgaW5kZXgpIGNvbnN0Citib29sIEltYWdlRGVjb2Rlcjo6ZnJhbWVIYXNBbHBoYUF0SW5k
ZXgoc2l6ZV90IGluZGV4KQogewogICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuc2l6ZSgpIDw9
IGluZGV4KQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE4NSw3ICsyNzQsNyBAQCBib29sIElt
YWdlRGVjb2Rlcjo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAogICAg
IHJldHVybiB0cnVlOwogfQogCi11bnNpZ25lZCBJbWFnZURlY29kZXI6OmZyYW1lQnl0ZXNBdElu
ZGV4KHNpemVfdCBpbmRleCkgY29uc3QKK3Vuc2lnbmVkIEltYWdlRGVjb2Rlcjo6ZnJhbWVCeXRl
c0F0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsKSBjb25zdAogewogICAgIGlm
IChtX2ZyYW1lQnVmZmVyQ2FjaGUuc2l6ZSgpIDw9IGluZGV4KQogICAgICAgICByZXR1cm4gMDsK
QEAgLTIwOSw2ICsyOTgsMjYgQEAgZmxvYXQgSW1hZ2VEZWNvZGVyOjpmcmFtZUR1cmF0aW9uQXRJ
bmRleChzaXplX3QgaW5kZXgpCiAgICAgcmV0dXJuIGR1cmF0aW9uOwogfQogCitJbWFnZU9yaWVu
dGF0aW9uIEltYWdlRGVjb2Rlcjo6ZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90KSBjb25z
dAoreworICAgIHJldHVybiBtX29yaWVudGF0aW9uOworfQorCitJbnRTaXplIEltYWdlRGVjb2Rl
cjo6ZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0Cit7Cisg
ICAgLy8gVGhpcyB3aWxsIG9ubHkgZGlmZmVyIGZyb20gc2l6ZSgpIGZvciBJQ08gKHdoZXJlIGVh
Y2ggZnJhbWUgaXMgYQorICAgIC8vIGRpZmZlcmVudCBpY29uKSBvciBvdGhlciBmb3JtYXRzIHdo
ZXJlIGRpZmZlcmVudCBmcmFtZXMgYXJlIGRpZmZlcmVudAorICAgIC8vIHNpemVzLiBUaGlzIGRv
ZXMgTk9UIGRpZmZlciBmcm9tIHNpemUoKSBmb3IgR0lGLCBzaW5jZSBkZWNvZGluZyBHSUZzCisg
ICAgLy8gY29tcG9zaXRlcyBhbnkgc21hbGxlciBmcmFtZXMgYWdhaW5zdCBwcmV2aW91cyBmcmFt
ZXMgdG8gY3JlYXRlIGZ1bGwtCisgICAgLy8gc2l6ZSBmcmFtZXMuCisgICAgcmV0dXJuIHNpemUo
KTsKK30KKworYm9vbCBJbWFnZURlY29kZXI6OmZyYW1lQWxsb3dTdWJzYW1wbGluZ0F0SW5kZXgo
c2l6ZV90KSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKwogTmF0aXZlSW1hZ2VQdHIg
SW1hZ2VEZWNvZGVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNh
bXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCiB7CiAgICAgLy8gWmVyby1oZWln
aHQgaW1hZ2VzIGNhbiBjYXVzZSBwcm9ibGVtcyBmb3Igc29tZSBwb3J0cy4gSWYgd2UgaGF2ZSBh
biBlbXB0eSBpbWFnZSBkaW1lbnNpb24sIGp1c3QgYmFpbC4KQEAgLTIyNiw2ICszMzUsMTIgQEAg
TmF0aXZlSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXpl
X3QgaW5kZXgsIFN1YnNhbXBsaW5nTGUKIAogdm9pZCBJbWFnZURlY29kZXI6OnByZXBhcmVTY2Fs
ZURhdGFJZk5lY2Vzc2FyeSgpCiB7CisjaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1Q
TElORykKKyAgICBzdGF0aWMgY29uc3QgaW50IE1heE51bVBpeGVscyB7IDEwMjQgKiAxMDI0IH07
CisjZWxzZQorICAgIHN0YXRpYyBjb25zdCBpbnQgTWF4TnVtUGl4ZWxzIHsgLTEgfTsKKyNlbmRp
ZgorICAgIAogICAgIG1fc2NhbGVkID0gZmFsc2U7CiAgICAgbV9zY2FsZWRDb2x1bW5zLmNsZWFy
KCk7CiAgICAgbV9zY2FsZWRSb3dzLmNsZWFyKCk7CkBAIC0yMzMsMTEgKzM0OCwxMSBAQCB2b2lk
IEltYWdlRGVjb2Rlcjo6cHJlcGFyZVNjYWxlRGF0YUlmTmVjZXNzYXJ5KCkKICAgICBpbnQgd2lk
dGggPSBzaXplKCkud2lkdGgoKTsKICAgICBpbnQgaGVpZ2h0ID0gc2l6ZSgpLmhlaWdodCgpOwog
ICAgIGludCBudW1QaXhlbHMgPSBoZWlnaHQgKiB3aWR0aDsKLSAgICBpZiAobV9tYXhOdW1QaXhl
bHMgPD0gMCB8fCBudW1QaXhlbHMgPD0gbV9tYXhOdW1QaXhlbHMpCisgICAgaWYgKE1heE51bVBp
eGVscyA8PSAwIHx8IG51bVBpeGVscyA8PSBNYXhOdW1QaXhlbHMpCiAgICAgICAgIHJldHVybjsK
IAogICAgIG1fc2NhbGVkID0gdHJ1ZTsKLSAgICBkb3VibGUgc2NhbGUgPSBzcXJ0KG1fbWF4TnVt
UGl4ZWxzIC8gKGRvdWJsZSludW1QaXhlbHMpOworICAgIGRvdWJsZSBzY2FsZSA9IHNxcnQoTWF4
TnVtUGl4ZWxzIC8gKGRvdWJsZSludW1QaXhlbHMpOwogICAgIGZpbGxTY2FsZWRWYWx1ZXMobV9z
Y2FsZWRDb2x1bW5zLCBzY2FsZSwgd2lkdGgpOwogICAgIGZpbGxTY2FsZWRWYWx1ZXMobV9zY2Fs
ZWRSb3dzLCBzY2FsZSwgaGVpZ2h0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDM0MmNkYjBkZGY2Li4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAorKysgL2Rldi9udWxsCkBAIC0x
LDIzMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDE2IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAwOSBUb3JjaCBN
b2JpbGUsIEluYy4KLSAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQg
MjAwOS0yMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5IE5v
a2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUg
IkltYWdlRnJhbWUuaCIKLSNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiSW50U2l6ZS5o
IgotI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
Ci0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4K
LSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIElt
YWdlRGVjb2RlciBpcyBhIGJhc2UgZm9yIGFsbCBmb3JtYXQtc3BlY2lmaWMgZGVjb2RlcnMKLS8v
IChlLmcuIEpQRUdJbWFnZURlY29kZXIpLiBUaGlzIGJhc2UgbWFuYWdlcyB0aGUgSW1hZ2VGcmFt
ZSBjYWNoZS4KLS8vCi0vLyBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dOX1NBTVBMSU5HKSBhbGxv
d3MgaW1hZ2UgZGVjb2RlcnMgdG8gZG93bnNhbXBsZQotLy8gYXQgZGVjb2RlIHRpbWUuIEltYWdl
IGRlY29kZXJzIHdpbGwgZG93bnNhbXBsZSBhbnkgaW1hZ2VzIGxhcmdlciB0aGFuCi0vLyB8bV9t
YXhOdW1QaXhlbHN8LiBGSVhNRTogTm90IHlldCBzdXBwb3J0ZWQgYnkgYWxsIGRlY29kZXJzLgot
Y2xhc3MgSW1hZ2VEZWNvZGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEltYWdlRGVj
b2Rlcj4gewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlRGVjb2Rlcik7IFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIEltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBh
bHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pCi0gICAgICAgIDogbV9wcmVtdWx0aXBseUFscGhhKGFscGhhT3B0aW9uID09IEFs
cGhhT3B0aW9uOjpQcmVtdWx0aXBsaWVkKQotICAgICAgICAsIG1faWdub3JlR2FtbWFBbmRDb2xv
clByb2ZpbGUoZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gPT0gR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb246Oklnbm9yZWQpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgfkltYWdlRGVj
b2RlcigpCi0gICAgewotICAgIH0KLQotICAgIC8vIFJldHVybnMgbnVsbHB0ciBpZiB3ZSBjYW4n
dCBzbmlmZiBhIHN1cHBvcnRlZCB0eXBlIGZyb20gdGhlIHByb3ZpZGVkIGRhdGEgKHBvc3NpYmx5
Ci0gICAgLy8gYmVjYXVzZSB0aGVyZSBpc24ndCBlbm91Z2ggZGF0YSB5ZXQpLgotICAgIHN0YXRp
YyBSZWZQdHI8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9w
dGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwotCi0gICAgdmlydHVhbCBTdHJpbmcg
ZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCA9IDA7Ci0KLSAgICBib29sIHByZW11bHRpcGx5QWxw
aGEoKSBjb25zdCB7IHJldHVybiBtX3ByZW11bHRpcGx5QWxwaGE7IH0KLQotICAgIGJvb2wgaXNB
bGxEYXRhUmVjZWl2ZWQoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX2RlY29kaW5n
U2l6ZUZyb21TZXREYXRhKTsKLSAgICAgICAgcmV0dXJuIG1fZW5jb2RlZERhdGFTdGF0dXMgPT0g
RW5jb2RlZERhdGFTdGF0dXM6OkNvbXBsZXRlOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBz
ZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCi0gICAgewot
ICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6RXJy
b3IpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbV9kYXRhID0gJmRhdGE7Ci0gICAg
ICAgIGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpUeXBlQXZh
aWxhYmxlKSB7Ci0gICAgICAgICAgICBtX2RlY29kaW5nU2l6ZUZyb21TZXREYXRhID0gdHJ1ZTsK
LSAgICAgICAgICAgIHRyeURlY29kZVNpemUoYWxsRGF0YVJlY2VpdmVkKTsKLSAgICAgICAgICAg
IG1fZGVjb2RpbmdTaXplRnJvbVNldERhdGEgPSBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAg
IGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcikKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAoYWxsRGF0YVJlY2VpdmVkKSB7Ci0gICAg
ICAgICAgICBBU1NFUlQobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6
U2l6ZUF2YWlsYWJsZSk7Ci0gICAgICAgICAgICBtX2VuY29kZWREYXRhU3RhdHVzID0gRW5jb2Rl
ZERhdGFTdGF0dXM6OkNvbXBsZXRlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgRW5jb2RlZERh
dGFTdGF0dXMgZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdCB7IHJldHVybiBtX2VuY29kZWREYXRh
U3RhdHVzOyB9Ci0KLSAgICBib29sIGlzU2l6ZUF2YWlsYWJsZSgpIHsgcmV0dXJuIG1fZW5jb2Rl
ZERhdGFTdGF0dXMgPj0gRW5jb2RlZERhdGFTdGF0dXM6OlNpemVBdmFpbGFibGU7IH0KLQotICAg
IHZpcnR1YWwgSW50U2l6ZSBzaXplKCkgeyByZXR1cm4gaXNTaXplQXZhaWxhYmxlKCkgPyBtX3Np
emUgOiBJbnRTaXplKCk7IH0KLQotICAgIEludFNpemUgc2NhbGVkU2l6ZSgpCi0gICAgewotICAg
ICAgICByZXR1cm4gbV9zY2FsZWQgPyBJbnRTaXplKG1fc2NhbGVkQ29sdW1ucy5zaXplKCksIG1f
c2NhbGVkUm93cy5zaXplKCkpIDogc2l6ZSgpOwotICAgIH0KLQotICAgIC8vIFRoaXMgd2lsbCBv
bmx5IGRpZmZlciBmcm9tIHNpemUoKSBmb3IgSUNPICh3aGVyZSBlYWNoIGZyYW1lIGlzIGEKLSAg
ICAvLyBkaWZmZXJlbnQgaWNvbikgb3Igb3RoZXIgZm9ybWF0cyB3aGVyZSBkaWZmZXJlbnQgZnJh
bWVzIGFyZSBkaWZmZXJlbnQKLSAgICAvLyBzaXplcy4gVGhpcyBkb2VzIE5PVCBkaWZmZXIgZnJv
bSBzaXplKCkgZm9yIEdJRiwgc2luY2UgZGVjb2RpbmcgR0lGcwotICAgIC8vIGNvbXBvc2l0ZXMg
YW55IHNtYWxsZXIgZnJhbWVzIGFnYWluc3QgcHJldmlvdXMgZnJhbWVzIHRvIGNyZWF0ZSBmdWxs
LQotICAgIC8vIHNpemUgZnJhbWVzLgotICAgIHZpcnR1YWwgSW50U2l6ZSBmcmFtZVNpemVBdElu
ZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBzaXpl
KCk7Ci0gICAgfQotCi0gICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBzaXplIGlzIGxlZ2FsIChp
LmUuIG5vdCBnb2luZyB0byByZXN1bHQgaW4KLSAgICAvLyBvdmVyZmxvdyBlbHNld2hlcmUpLiBJ
ZiBub3QsIG1hcmtzIGRlY29kaW5nIGFzIGZhaWxlZC4KLSAgICB2aXJ0dWFsIGJvb2wgc2V0U2l6
ZShjb25zdCBJbnRTaXplJiBzaXplKQotICAgIHsKLSAgICAgICAgaWYgKEltYWdlQmFja2luZ1N0
b3JlOjppc092ZXJTaXplKHNpemUpKQotICAgICAgICAgICAgcmV0dXJuIHNldEZhaWxlZCgpOwot
ICAgICAgICBtX3NpemUgPSBzaXplOwotICAgICAgICBtX2VuY29kZWREYXRhU3RhdHVzID0gRW5j
b2RlZERhdGFTdGF0dXM6OlNpemVBdmFpbGFibGU7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IH0KLQotICAgIC8vIExhemlseS1kZWNvZGVzIGVub3VnaCBvZiB0aGUgaW1hZ2UgdG8gZ2V0IHRo
ZSBmcmFtZSBjb3VudCAoaWYKLSAgICAvLyBwb3NzaWJsZSksIHdpdGhvdXQgZGVjb2RpbmcgdGhl
IGluZGl2aWR1YWwgZnJhbWVzLgotICAgIC8vIEZJWE1FOiBSaWdodCBub3cgdGhhdCBoYXMgdG8g
YmUgZG9uZSBieSBlYWNoIHN1YmNsYXNzOyBmYWN0b3IgdGhlCi0gICAgLy8gZGVjb2RlIGNhbGwg
b3V0IGFuZCB1c2UgaXQgaGVyZS4KLSAgICB2aXJ0dWFsIHNpemVfdCBmcmFtZUNvdW50KCkgY29u
c3QgeyByZXR1cm4gMTsgfQotCi0gICAgdmlydHVhbCBSZXBldGl0aW9uQ291bnQgcmVwZXRpdGlv
bkNvdW50KCkgY29uc3QgeyByZXR1cm4gUmVwZXRpdGlvbkNvdW50Tm9uZTsgfQotCi0gICAgLy8g
RGVjb2RlcyBhcyBtdWNoIG9mIHRoZSByZXF1ZXN0ZWQgZnJhbWUgYXMgcG9zc2libGUsIGFuZCBy
ZXR1cm5zIGFuCi0gICAgLy8gSW1hZ2VEZWNvZGVyLW93bmVkIHBvaW50ZXIuCi0gICAgdmlydHVh
bCBJbWFnZUZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90KSA9IDA7Ci0KLSAgICBib29s
IGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90KTsKLQotICAgIC8vIE1ha2UgdGhlIGJlc3Qg
ZWZmb3J0IGd1ZXNzIHRvIGNoZWNrIGlmIHRoZSByZXF1ZXN0ZWQgZnJhbWUgaGFzIGFscGhhIGNo
YW5uZWwuCi0gICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QpIGNvbnN0OwotCi0g
ICAgLy8gTnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBkZWNvZGVkIGZyYW1lIHJlcXVlc3RlZC4gUmV0
dXJuIDAgaWYgbm90IHlldCBkZWNvZGVkLgotICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNBdEluZGV4
KHNpemVfdCkgY29uc3Q7Ci0gICAgCi0gICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6
ZV90KTsKLSAgICAKLSAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChz
aXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25z
dCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cyk7Ci0KLSAgICB2
b2lkIHNldElnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKGJvb2wgZmxhZykgeyBtX2lnbm9yZUdh
bW1hQW5kQ29sb3JQcm9maWxlID0gZmxhZzsgfQotICAgIGJvb2wgaWdub3Jlc0dhbW1hQW5kQ29s
b3JQcm9maWxlKCkgY29uc3QgeyByZXR1cm4gbV9pZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZTsg
fQotCi0gICAgSW1hZ2VPcmllbnRhdGlvbiBmcmFtZU9yaWVudGF0aW9uQXRJbmRleChzaXplX3Qp
IGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50YXRpb247IH0KLSAgICAKLSAgICBib29sIGZyYW1lQWxs
b3dTdWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotCi0g
ICAgZW51bSB7IElDQ0NvbG9yUHJvZmlsZUhlYWRlckxlbmd0aCA9IDEyOCB9OwotCi0gICAgc3Rh
dGljIGJvb2wgcmdiQ29sb3JQcm9maWxlKGNvbnN0IGNoYXIqIHByb2ZpbGVEYXRhLCB1bnNpZ25l
ZCBwcm9maWxlTGVuZ3RoKQotICAgIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChwcm9maWxlTGVu
Z3RoLCBwcm9maWxlTGVuZ3RoID49IElDQ0NvbG9yUHJvZmlsZUhlYWRlckxlbmd0aCk7Ci0KLSAg
ICAgICAgcmV0dXJuICFtZW1jbXAoJnByb2ZpbGVEYXRhWzE2XSwgIlJHQiAiLCA0KTsKLSAgICB9
Ci0KLSAgICBzdGF0aWMgc2l6ZV90IGJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygp
IHsgcmV0dXJuIDA7IH0KLSAgICAKLSAgICBzdGF0aWMgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1w
bGluZ0xldmVsRm9yU2NhbGUoZmxvYXQsIFN1YnNhbXBsaW5nTGV2ZWwpIHsgcmV0dXJuIFN1YnNh
bXBsaW5nTGV2ZWw6OkRlZmF1bHQ7IH0KLQotICAgIHN0YXRpYyBib29sIGlucHV0RGV2aWNlQ29s
b3JQcm9maWxlKGNvbnN0IGNoYXIqIHByb2ZpbGVEYXRhLCB1bnNpZ25lZCBwcm9maWxlTGVuZ3Ro
KQotICAgIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChwcm9maWxlTGVuZ3RoLCBwcm9maWxlTGVu
Z3RoID49IElDQ0NvbG9yUHJvZmlsZUhlYWRlckxlbmd0aCk7Ci0KLSAgICAgICAgcmV0dXJuICFt
ZW1jbXAoJnByb2ZpbGVEYXRhWzEyXSwgIm1udHIiLCA0KSB8fCAhbWVtY21wKCZwcm9maWxlRGF0
YVsxMl0sICJzY25yIiwgNCk7Ci0gICAgfQotCi0gICAgLy8gU2V0cyB0aGUgImRlY29kZSBmYWls
dXJlIiBmbGFnLiBGb3IgY2FsbGVyIGNvbnZlbmllbmNlIChzaW5jZSBzbwotICAgIC8vIG1hbnkg
Y2FsbGVycyB3YW50IHRvIHJldHVybiBmYWxzZSBhZnRlciBjYWxsaW5nIHRoaXMpLCByZXR1cm5z
IGZhbHNlCi0gICAgLy8gdG8gZW5hYmxlIGVhc3kgdGFpbGNhbGxpbmcuIFN1YmNsYXNzZXMgbWF5
IG92ZXJyaWRlIHRoaXMgdG8gYWxzbwotICAgIC8vIGNsZWFuIHVwIGFueSBsb2NhbCBkYXRhLgot
ICAgIHZpcnR1YWwgYm9vbCBzZXRGYWlsZWQoKQotICAgIHsKLSAgICAgICAgbV9lbmNvZGVkRGF0
YVN0YXR1cyA9IEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcjsKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0KLQotICAgIGJvb2wgZmFpbGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmNvZGVkRGF0
YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3I7IH0KLQotICAgIC8vIENsZWFycyBk
ZWNvZGVkIHBpeGVsIGRhdGEgZnJvbSBiZWZvcmUgdGhlIHByb3ZpZGVkIGZyYW1lIHVubGVzcyB0
aGF0Ci0gICAgLy8gZGF0YSBtYXkgYmUgbmVlZGVkIHRvIGRlY29kZSBmdXR1cmUgZnJhbWVzIChl
LmcuIGR1ZSB0byBHSUYgZnJhbWUKLSAgICAvLyBjb21wb3NpdGluZykuCi0gICAgdmlydHVhbCB2
b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIHsgfQotCi0gICAgLy8gSWYgdGhlIGlt
YWdlIGhhcyBhIGN1cnNvciBob3Qtc3BvdCwgc3RvcmVzIGl0IGluIHRoZSBhcmd1bWVudAotICAg
IC8vIGFuZCByZXR1cm5zIHRydWUuIE90aGVyd2lzZSByZXR1cm5zIGZhbHNlLgotICAgIHZpcnR1
YWwgc3RkOjpvcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgdm9pZCBwcmVwYXJlU2NhbGVEYXRhSWZOZWNl
c3NhcnkoKTsKLSAgICBpbnQgdXBwZXJCb3VuZFNjYWxlZFgoaW50IG9yaWdYLCBpbnQgc2VhcmNo
U3RhcnQgPSAwKTsKLSAgICBpbnQgbG93ZXJCb3VuZFNjYWxlZFgoaW50IG9yaWdYLCBpbnQgc2Vh
cmNoU3RhcnQgPSAwKTsKLSAgICBpbnQgdXBwZXJCb3VuZFNjYWxlZFkoaW50IG9yaWdZLCBpbnQg
c2VhcmNoU3RhcnQgPSAwKTsKLSAgICBpbnQgbG93ZXJCb3VuZFNjYWxlZFkoaW50IG9yaWdZLCBp
bnQgc2VhcmNoU3RhcnQgPSAwKTsKLSAgICBpbnQgc2NhbGVkWShpbnQgb3JpZ1ksIGludCBzZWFy
Y2hTdGFydCA9IDApOwotCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOyAvLyBUaGUg
ZW5jb2RlZCBkYXRhLgotICAgIFZlY3RvcjxJbWFnZUZyYW1lLCAxPiBtX2ZyYW1lQnVmZmVyQ2Fj
aGU7Ci0gICAgYm9vbCBtX3NjYWxlZCB7IGZhbHNlIH07Ci0gICAgVmVjdG9yPGludD4gbV9zY2Fs
ZWRDb2x1bW5zOwotICAgIFZlY3RvcjxpbnQ+IG1fc2NhbGVkUm93czsKLSAgICBib29sIG1fcHJl
bXVsdGlwbHlBbHBoYTsKLSAgICBib29sIG1faWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGU7Ci0g
ICAgSW1hZ2VPcmllbnRhdGlvbiBtX29yaWVudGF0aW9uOwotCi1wcml2YXRlOgotICAgIHZpcnR1
YWwgdm9pZCB0cnlEZWNvZGVTaXplKGJvb2wpID0gMDsKLQotICAgIEludFNpemUgbV9zaXplOwot
ICAgIEVuY29kZWREYXRhU3RhdHVzIG1fZW5jb2RlZERhdGFTdGF0dXMgeyBFbmNvZGVkRGF0YVN0
YXR1czo6VHlwZUF2YWlsYWJsZSB9OwotICAgIGJvb2wgbV9kZWNvZGluZ1NpemVGcm9tU2V0RGF0
YSB7IGZhbHNlIH07Ci0jaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElORykKLSAg
ICBzdGF0aWMgY29uc3QgaW50IG1fbWF4TnVtUGl4ZWxzIHsgMTAyNCAqIDEwMjQgfTsKLSNlbHNl
Ci0gICAgc3RhdGljIGNvbnN0IGludCBtX21heE51bVBpeGVscyB7IC0xIH07Ci0jZW5kaWYKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHAKaW5k
ZXggMTNiNWMwODBjYzcuLjUzOTg2ZWMxYWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNw
cApAQCAtNDAsOCArNDAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBkb24ndCBwYWNrKS4K
IHN0YXRpYyBjb25zdCBzaXplX3Qgc2l6ZU9mRmlsZUhlYWRlciA9IDE0OwogCi1CTVBJbWFnZURl
Y29kZXI6OkJNUEltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCi0gICAgOiBJbWFn
ZURlY29kZXIoYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorQk1QSW1h
Z2VEZWNvZGVyOjpCTVBJbWFnZURlY29kZXIoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlv
biBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pCisgICAgOiBJbWFnZURlY29kZXIoZGF0YSwgYWxwaGFPcHRpb24sIGdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgICwgbV9kZWNvZGVkT2Zmc2V0KDApCiB7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1Q
SW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9i
bXAvQk1QSW1hZ2VEZWNvZGVyLmgKaW5kZXggYzYyNzY5MGE4MzAuLjYyMDc3Mjg5MTJmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1h
Z2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
Ym1wL0JNUEltYWdlRGVjb2Rlci5oCkBAIC0zNyw5ICszNyw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAvLyBUaGlzIGNsYXNzIGRlY29kZXMgdGhlIEJNUCBpbWFnZSBmb3JtYXQuCiAgICAg
Y2xhc3MgQk1QSW1hZ2VEZWNvZGVyIGZpbmFsIDogcHVibGljIEltYWdlRGVjb2RlciB7CiAgICAg
cHVibGljOgotICAgICAgICBzdGF0aWMgUmVmPEltYWdlRGVjb2Rlcj4gY3JlYXRlKEFscGhhT3B0
aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbikKKyAgICAgICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXI+IGNyZWF0ZShT
aGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICAgICAgewotICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQk1QSW1hZ2VEZWNvZGVyKGFscGhhT3B0aW9u
LCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQk1QSW1hZ2VEZWNvZGVyKGRhdGEsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbikpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gSW1hZ2VEZWNvZGVyCkBA
IC01Miw3ICs1Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBzZXRGYWls
ZWQoKSBvdmVycmlkZTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEJNUEltYWdlRGVjb2RlcihB
bHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgICAgICBCTVBJbWFn
ZURlY29kZXIoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pOwogICAgICAgICB2b2lkIHRyeURlY29kZVNpemUoYm9vbCBhbGxEYXRhUmVj
ZWl2ZWQpIG92ZXJyaWRlIHsgZGVjb2RlKHRydWUsIGFsbERhdGFSZWNlaXZlZCk7IH0KIAogICAg
ICAgICBpbmxpbmUgdWludDMyX3QgcmVhZFVpbnQzMihpbnQgb2Zmc2V0KSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdl
RGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9naWYv
R0lGSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBmZDBjYzc1MDk5Zi4uOTZhMWNmMTg4NzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFn
ZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCkBAIC0zMSw4ICszMSw4IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotR0lGSW1hZ2VEZWNvZGVyOjpHSUZJbWFnZURlY29kZXIoQWxwaGFPcHRpb24g
YWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKQotICAgIDogSW1hZ2VEZWNvZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbikKK0dJRkltYWdlRGVjb2Rlcjo6R0lGSW1hZ2VEZWNvZGVyKFNoYXJlZEJ1
ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAgIDogSW1hZ2VEZWNvZGVyKGRh
dGEsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRklt
YWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lm
L0dJRkltYWdlRGVjb2Rlci5oCmluZGV4IGQ2Y2JhMzlkYmJlLi5iNTJmNDUzNDgxOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJRkltYWdl
RGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dp
Zi9HSUZJbWFnZURlY29kZXIuaApAQCAtMzUsOSArMzUsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgLy8gVGhpcyBjbGFzcyBkZWNvZGVzIHRoZSBHSUYgaW1hZ2UgZm9ybWF0LgogICAgIGNs
YXNzIEdJRkltYWdlRGVjb2RlciBmaW5hbCA6IHB1YmxpYyBJbWFnZURlY29kZXIgewogICAgIHB1
YmxpYzoKLSAgICAgICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXI+IGNyZWF0ZShBbHBoYU9wdGlv
biBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pCisgICAgICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoU2hh
cmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdJRkltYWdlRGVjb2RlcihhbHBoYU9wdGlvbiwg
Z2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEdJRkltYWdlRGVjb2RlcihkYXRhLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pKTsKICAgICAgICAgfQogCiAgICAgICAgIHZpcnR1YWwgfkdJRkltYWdlRGVj
b2RlcigpOwpAQCAtNjMsNyArNjMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZv
aWQgZ2lmQ29tcGxldGUoKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEdJRkltYWdlRGVjb2Rl
cihBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgICAgICBHSUZJ
bWFnZURlY29kZXIoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pOwogICAgICAgICB2b2lkIHRyeURlY29kZVNpemUoYm9vbCBhbGxEYXRh
UmVjZWl2ZWQpIG92ZXJyaWRlIHsgZGVjb2RlKDAsIEdJRlNpemVRdWVyeSwgYWxsRGF0YVJlY2Vp
dmVkKTsgfQogCiAgICAgICAgIC8vIElmIHRoZSBxdWVyeSBpcyBHSUZGdWxsUXVlcnksIGRlY29k
ZXMgdGhlIGltYWdlIHVwIHRvIChidXQgbm90CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIuY3BwCmlu
ZGV4IDM2M2FlMjgzZDM0Li42ZGNlOTgxMDIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5j
cHAKQEAgLTQ0LDggKzQ0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIGNvbnN0IHNp
emVfdCBzaXplT2ZEaXJlY3RvcnkgPSA2Owogc3RhdGljIGNvbnN0IHNpemVfdCBzaXplT2ZEaXJF
bnRyeSA9IDE2OwogCi1JQ09JbWFnZURlY29kZXI6OklDT0ltYWdlRGVjb2RlcihBbHBoYU9wdGlv
biBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pCi0gICAgOiBJbWFnZURlY29kZXIoYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uKQorSUNPSW1hZ2VEZWNvZGVyOjpJQ09JbWFnZURlY29kZXIoU2hhcmVk
QnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCisgICAgOiBJbWFnZURlY29kZXIo
ZGF0YSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgICwgbV9k
ZWNvZGVkT2Zmc2V0KDApCiB7CiB9CkBAIC02OSwxMiArNjksMTIgQEAgdm9pZCBJQ09JbWFnZURl
Y29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNlaXZlZCkK
ICAgICAgICAgc2V0RGF0YUZvclBOR0RlY29kZXJBdEluZGV4KGkpOwogfQogCi1JbnRTaXplIElD
T0ltYWdlRGVjb2Rlcjo6c2l6ZSgpCitJbnRTaXplIElDT0ltYWdlRGVjb2Rlcjo6c2l6ZSgpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIG1fZnJhbWVTaXplLmlzRW1wdHkoKSA/IEltYWdlRGVjb2Rlcjo6
c2l6ZSgpIDogbV9mcmFtZVNpemU7CiB9CiAKLUludFNpemUgSUNPSW1hZ2VEZWNvZGVyOjpmcmFt
ZVNpemVBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCkKK0ludFNpemUgSUNP
SW1hZ2VEZWNvZGVyOjpmcmFtZVNpemVBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdM
ZXZlbCkgY29uc3QKIHsKICAgICByZXR1cm4gKGluZGV4ICYmIChpbmRleCA8IG1fZGlyRW50cmll
cy5zaXplKCkpKSA/IG1fZGlyRW50cmllc1tpbmRleF0ubV9zaXplIDogc2l6ZSgpOwogfQpAQCAt
MjA4LDcgKzIwOCw3IEBAIGJvb2wgSUNPSW1hZ2VEZWNvZGVyOjpkZWNvZGVBdEluZGV4KHNpemVf
dCBpbmRleCkKICAgICB9CiAKICAgICBpZiAoIW1fcG5nRGVjb2RlcnNbaW5kZXhdKSB7Ci0gICAg
ICAgIG1fcG5nRGVjb2RlcnNbaW5kZXhdID0gUE5HSW1hZ2VEZWNvZGVyOjpjcmVhdGUobV9wcmVt
dWx0aXBseUFscGhhID8gQWxwaGFPcHRpb246OlByZW11bHRpcGxpZWQgOiBBbHBoYU9wdGlvbjo6
Tm90UHJlbXVsdGlwbGllZCwgbV9pZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZSA/IEdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uOjpJZ25vcmVkIDogR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb246
OkFwcGxpZWQpOworICAgICAgICBtX3BuZ0RlY29kZXJzW2luZGV4XSA9IFBOR0ltYWdlRGVjb2Rl
cjo6Y3JlYXRlKCptX2RhdGEsIG1fcHJlbXVsdGlwbHlBbHBoYSA/IEFscGhhT3B0aW9uOjpQcmVt
dWx0aXBsaWVkIDogQWxwaGFPcHRpb246Ok5vdFByZW11bHRpcGxpZWQsIG1faWdub3JlR2FtbWFB
bmRDb2xvclByb2ZpbGUgPyBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbjo6SWdub3JlZCA6IEdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uOjpBcHBsaWVkKTsKICAgICAgICAgc2V0RGF0YUZvclBO
R0RlY29kZXJBdEluZGV4KGluZGV4KTsKICAgICB9CiAgICAgLy8gRmFpbCBpZiB0aGUgc2l6ZSB0
aGUgUE5HSW1hZ2VEZWNvZGVyIGNhbGN1bGF0ZWQgZG9lcyBub3QgbWF0Y2ggdGhlIHNpemUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09J
bWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2lj
by9JQ09JbWFnZURlY29kZXIuaAppbmRleCBlNGJiNjBiOTg4MS4uMjZjOGI3MjczMTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFn
ZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9p
Y28vSUNPSW1hZ2VEZWNvZGVyLmgKQEAgLTM2LDkgKzM2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIC8vIFRoaXMgY2xhc3MgZGVjb2RlcyB0aGUgSUNPIGFuZCBDVVIgaW1hZ2UgZm9ybWF0
cy4KICAgICBjbGFzcyBJQ09JbWFnZURlY29kZXIgZmluYWwgOiBwdWJsaWMgSW1hZ2VEZWNvZGVy
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyPiBjcmVhdGUo
QWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAgICAgICBzdGF0aWMgUmVmPEltYWdlRGVjb2Rlcj4g
Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgICAg
ICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJQ09JbWFnZURlY29kZXIoYWxw
aGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CisgICAgICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBJQ09JbWFnZURlY29kZXIoZGF0YSwgYWxwaGFPcHRpb24sIGdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CiAgICAgICAgIH0KIAogICAgICAgICB2aXJ0dWFsIH5J
Q09JbWFnZURlY29kZXIoKTsKQEAgLTQ2LDggKzQ2LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICAvLyBJbWFnZURlY29kZXIKICAgICAgICAgU3RyaW5nIGZpbGVuYW1lRXh0ZW5zaW9u
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQVNDSUlMaXRlcmFsKCJpY28iKTsgfQogICAgICAg
ICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJy
aWRlOwotICAgICAgICBJbnRTaXplIHNpemUoKSBvdmVycmlkZTsKLSAgICAgICAgSW50U2l6ZSBm
cmFtZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCkgb3ZlcnJpZGU7CisgICAg
ICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgICAgICBJbnRTaXplIGZyYW1l
U2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsKSBjb25zdCBvdmVycmlkZTsKICAg
ICAgICAgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsKICAgICAgICAgc2l6
ZV90IGZyYW1lQ291bnQoKSBjb25zdCBvdmVycmlkZTsKICAgICAgICAgSW1hZ2VGcmFtZSogZnJh
bWVCdWZmZXJBdEluZGV4KHNpemVfdCkgb3ZlcnJpZGU7CkBAIC03Niw3ICs3Niw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHVpbnQzMl90IG1faW1hZ2VPZmZzZXQ7CiAgICAg
ICAgIH07CiAKLSAgICAgICAgSUNPSW1hZ2VEZWNvZGVyKEFscGhhT3B0aW9uLCBHYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbik7CisgICAgICAgIElDT0ltYWdlRGVjb2RlcihTaGFyZWRCdWZmZXIm
IGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAgICAgICAg
IHZvaWQgdHJ5RGVjb2RlU2l6ZShib29sIGFsbERhdGFSZWNlaXZlZCkgb3ZlcnJpZGUgeyBkZWNv
ZGUoMCwgdHJ1ZSwgYWxsRGF0YVJlY2VpdmVkKTsgfQogCiAgICAgICAgIC8vIFJldHVybnMgdHJ1
ZSBpZiB8YXwgaXMgYSBwcmVmZXJhYmxlIGljb24gZW50cnkgdG8gfGJ8LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNv
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBF
R0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggODZhZTA0Y2Y2MGYuLjNmNTkyMmVhOGQ3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFn
ZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJz
L2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTUwMSw4ICs1MDEsOCBAQCB2b2lkIHRlcm1f
c291cmNlKGpfZGVjb21wcmVzc19wdHIgamQpCiAgICAgc3JjLT5kZWNvZGVyLT5kZWNvZGVyKCkt
PmpwZWdDb21wbGV0ZSgpOwogfQogCi1KUEVHSW1hZ2VEZWNvZGVyOjpKUEVHSW1hZ2VEZWNvZGVy
KEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbikKLSAgICA6IEltYWdlRGVjb2RlcihhbHBoYU9wdGlvbiwg
Z2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitKUEVHSW1hZ2VEZWNvZGVyOjpKUEVHSW1hZ2VE
ZWNvZGVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAgIDog
SW1hZ2VEZWNvZGVyKGRhdGEsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaAppbmRleCA1YTQ2ZGZmZmFkMy4u
MWRjMTBjYmFlNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCkBAIC00Myw5ICs0Myw5
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAvLyBUaGlzIGNsYXNzIGRlY29kZXMgdGhlIEpQ
RUcgaW1hZ2UgZm9ybWF0LgogICAgIGNsYXNzIEpQRUdJbWFnZURlY29kZXIgZmluYWwgOiBwdWJs
aWMgSW1hZ2VEZWNvZGVyIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBSZWY8SW1hZ2VE
ZWNvZGVyPiBjcmVhdGUoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAgICAgICBzdGF0aWMgUmVm
PEltYWdlRGVjb2Rlcj4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxw
aGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBKUEVH
SW1hZ2VEZWNvZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwor
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSlBFR0ltYWdlRGVjb2RlcihkYXRhLCBh
bHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKICAgICAgICAgfQogCiAg
ICAgICAgIHZpcnR1YWwgfkpQRUdJbWFnZURlY29kZXIoKTsKQEAgLTcxLDcgKzcxLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldE9yaWVudGF0aW9uKEltYWdlT3JpZW50
YXRpb24gb3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9CiAKICAg
ICBwcml2YXRlOgotICAgICAgICBKUEVHSW1hZ2VEZWNvZGVyKEFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgICAgIEpQRUdJbWFnZURlY29kZXIoU2hhcmVkQnVm
ZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAg
ICAgICB2b2lkIHRyeURlY29kZVNpemUoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlIHsg
ZGVjb2RlKHRydWUsIGFsbERhdGFSZWNlaXZlZCk7IH0KIAogICAgICAgICAvLyBEZWNvZGVzIHRo
ZSBpbWFnZS4gIElmIHxvbmx5U2l6ZXwgaXMgdHJ1ZSwgc3RvcHMgZGVjb2RpbmcgYWZ0ZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJ
bWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
cG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggODA3MGY2NDlmZjYuLmViNzc3YWE4YzdjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5H
SW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcApAQCAtMjAxLDggKzIwMSw4IEBAIHByaXZhdGU6
CiAgICAgcG5nX2J5dGVwIG1faW50ZXJsYWNlQnVmZmVyOwogfTsKIAotUE5HSW1hZ2VEZWNvZGVy
OjpQTkdJbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQotICAgIDogSW1hZ2VEZWNv
ZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1BOR0ltYWdlRGVj
b2Rlcjo6UE5HSW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxw
aGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uKQorICAgIDogSW1hZ2VEZWNvZGVyKGRhdGEsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENv
bG9yUHJvZmlsZU9wdGlvbikKICAgICAsIG1fZG9Ob3RoaW5nT25GYWlsdXJlKGZhbHNlKQogICAg
ICwgbV9jdXJyZW50RnJhbWUoMCkKICNpZiBFTkFCTEUoQVBORykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29k
ZXIuaAppbmRleCAwM2UxZmJjMzFjYS4uNzU4ODFiODUxODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNv
ZGVyLmgKQEAgLTM3LDkgKzM3LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIC8vIFRoaXMg
Y2xhc3MgZGVjb2RlcyB0aGUgUE5HIGltYWdlIGZvcm1hdC4KICAgICBjbGFzcyBQTkdJbWFnZURl
Y29kZXIgZmluYWwgOiBwdWJsaWMgSW1hZ2VEZWNvZGVyIHsKICAgICBwdWJsaWM6Ci0gICAgICAg
IHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24s
IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQor
ICAgICAgICBzdGF0aWMgUmVmPEltYWdlRGVjb2Rlcj4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0
YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBQTkdJbWFnZURlY29kZXIoYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQTkdJbWFn
ZURlY29kZXIoZGF0YSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7
CiAgICAgICAgIH0KIAogICAgICAgICB2aXJ0dWFsIH5QTkdJbWFnZURlY29kZXIoKTsKQEAgLTg4
LDcgKzg4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB9CiAKICAgICBwcml2YXRl
OgotICAgICAgICBQTkdJbWFnZURlY29kZXIoQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9m
aWxlT3B0aW9uKTsKKyAgICAgICAgUE5HSW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwg
QWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKICAgICAgICAgdm9pZCB0
cnlEZWNvZGVTaXplKGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBvdmVycmlkZSB7IGRlY29kZSh0cnVl
LCAwLCBhbGxEYXRhUmVjZWl2ZWQpOyB9CiAKICAgICAgICAgLy8gRGVjb2RlcyB0aGUgaW1hZ2Uu
ICBJZiB8b25seVNpemV8IGlzIHRydWUsIHN0b3BzIGRlY29kaW5nIGFmdGVyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURl
Y29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9X
RUJQSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA0OGNmNWFkMzZiNC4uZWJiY2Y1MzZkYzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUElt
YWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcApAQCAtNDUsOCArNDUsOCBAQCBpbmxpbmUgV0VC
UF9DU1BfTU9ERSBvdXRwdXRNb2RlKGJvb2wgaGFzQWxwaGEpIHsgcmV0dXJuIGhhc0FscGhhID8g
TU9ERV9iZ3JBIDogTQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdFQlBJbWFnZURlY29kZXI6
OldFQlBJbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQotICAgIDogSW1hZ2VEZWNv
ZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1dFQlBJbWFnZURl
Y29kZXI6OldFQlBJbWFnZURlY29kZXIoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBh
bHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2Zp
bGVPcHRpb24pCisgICAgOiBJbWFnZURlY29kZXIoZGF0YSwgYWxwaGFPcHRpb24sIGdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKQogICAgICwgbV9kZWNvZGVyKDApCiAgICAgLCBtX2hhc0FscGhh
KGZhbHNlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaAppbmRleCBkNzk1NmYwY2EwMS4u
YzczNTQ3ODJmZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oCkBAIC0zOCw5ICszOCw5
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV0VCUEltYWdlRGVjb2RlciBmaW5hbCA6
IHB1YmxpYyBJbWFnZURlY29kZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNv
ZGVyPiBjcmVhdGUoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxl
T3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAgIHN0YXRpYyBSZWY8SW1hZ2VE
ZWNvZGVyPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlv
biwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXRUJQSW1hZ2VEZWNvZGVyKGFs
cGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOworICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXRUJQSW1hZ2VEZWNvZGVyKGRhdGEsIGFscGhhT3B0aW9uLCBnYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgfldFQlBJbWFnZURl
Y29kZXIoKTsKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIEltYWdlRnJhbWUqIGZyYW1l
QnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIFdF
QlBJbWFnZURlY29kZXIoQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsK
KyAgICBXRUJQSW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24sIEdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKICAgICB2b2lkIHRyeURlY29kZVNpemUoYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlIHsgZGVjb2RlKHRydWUsIGFsbERhdGFSZWNlaXZlZCk7
IH0KIAogICAgIGJvb2wgZGVjb2RlKGJvb2wgb25seVNpemUsIGJvb2wgYWxsRGF0YVJlY2VpdmVk
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311878</attachid>
            <date>2017-06-02 15:55:22 -0700</date>
            <delta_ts>2020-05-30 19:28:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk172773.patch</filename>
            <type>text/plain</type>
            <size>64989</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkMmZiZmY3MzhmNi4uYzc1NzFkMjYzNDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDEgQEAKKzIwMTctMDYtMDIgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdh
QGFwcGxlLmNvbT4KKworICAgICAgICBIYXZlIGEgc2luZ2xlIEltYWdlRGVjb2RlciBoZWFkZXIg
ZmlsZSBmb3IgYWxsIHBvcnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzI3NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBbnkgY2hhbmdlIGluIHRoZSBkZWZpbml0aW9uIG9mIEltYWdlRGVjb2RlciBo
YXMgYmVlbiBhbm5veWluZyBzaW5jZSBpdCAKKyAgICAgICAgbWVhbnMgZG9pbmcgdGhlIHNhbWUg
Y2hhbmdlIGluIHRocmVlIGhlYWRlciBmaWxlcy4gVGhpcyBwYXRjaCB3aWxsIGNvbWJpbmUKKyAg
ICAgICAgdGhlbSBpbiBvbmUgaGVhZGVyIGZpbGUgYnV0IGl0IGhhcyB0aGVzZSBkcmF3YmFja3M6
CisKKyAgICAgICAgLS0gU29tZSBvZiB0aGUgSW1hZ2VEZW9jZGVyIGZ1bmN0aW9ucyB3ZXJlIG1h
ZGUgbm9uLWNvbnN0IGJlY2F1c2UgdGhlIEdUSworICAgICAgICBkZWNvZGVyIGNhbGxzIGZyYW1l
QnVmZmVyQXRJbmRleCgpLCB3aGljaCBpcyBub24tY29uc3QgYW5kIGNhbid0IGJlIG1hZGUKKyAg
ICAgICAgY29zdCwgaW4gdGhlc2UgZnVuY3Rpb25zLgorCisgICAgICAgIC0tIFNvbWUgb2YgdGhl
IEltYWdlRGVjb2RlciBpbi1saW5lIGZ1bmN0aW9ucyB3ZXJlIG1vdmVkIGZyb20gdGhlIGhlYWRl
cgorICAgICAgICBmaWxlIHRvIHRoZSBzb3VyY2UgZmlsZXMgYmVjYXVzZSB0aGUgcGxhdGZvcm1z
IGhhdmUgZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucy4KKworICAgICAgICAtLSBTb21lIG9mIHRo
ZSBJbWFnZURlb2NkZXIgZnVuY3Rpb25zIHdlcmUgbWFkZSB2aXJ0dWFsIGJlY2F1c2UgdGhlIEdU
SworICAgICAgICBkZWNvZGVyIGNvbnNpZGVycyBJbWFnZURlb2NkZXIgdGhlIGJhc2UgY2xhc3Mg
b2YgYWxsIHRoZSBkZWNvZGVycyBhbmQgZWFjaAorICAgICAgICBkZXJpdmVkIGNsYXNzIG92ZXJy
aWRlcyB0aGVzZSBmdW5jdGlvbiB0byBoYW5kbGUgdGhlIGltYWdlIGZvcm1hdCBkaWZmZXJlbnRs
eS4KKworICAgICAgICAtLSBUaGUgaGVhZGVyIGZpbGUgc2l6ZSBiZWNvbWVzIGxhcmdlciBzaW5j
ZSBpdCBpbmNsdWRlcyBhbGwgdGhlIHNwZWNpZmljCisgICAgICAgIG1lbWJlcnMgZm9yIGFsbCBw
bGF0Zm9ybXMuIFRoaXMgY2FuIGJlIGVhc2lseSBjbGVhbmVkIHVwIGxhdGVyLgorCisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkltYWdl
RGVjb2Rlcjo6fkltYWdlRGVjb2Rlcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6
OmlzU2l6ZUF2YWlsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmNsZWFy
RnJhbWVCdWZmZXJDYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnNpemUp
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzY2FsZWRTaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c2V0UHJlbXVsdGlwbHlBbHBoYSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXI6OnByZW11bHRpcGx5QWxwaGEpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVyOjpzZXRJZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbWFnZURlY29kZXI6Omlnbm9yZXNHYW1tYUFuZENvbG9yUHJvZmlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZhaWxlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZVNvdXJjZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VU
eXBlcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlRGVjb2RlckNHLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlRGVjb2Rlcjo6aXNBbGxEYXRhUmVjZWl2ZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KToKKyAgICAgICAgKFdlYkNv
cmU6OkltYWdlRGVjb2Rlcjo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUhhc0FscGhhQXRJbmRleCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5oOiBSZW1vdmVkLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZURlY29kZXI6OkltYWdlRGVjb2Rlcik6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjppc0FsbERhdGFSZWNlaXZl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1lSXNDb21wbGV0ZUF0SW5k
ZXgpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRl
eCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmZyYW1lSGFzQWxwaGFBdEluZGV4
KToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5k
ZXgpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3Qy
RC5oOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVj
b2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OkltYWdlRGVjb2Rlcik6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5l
UHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnNldERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjppc0FsbERhdGFSZWNlaXZlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmVuY29kZWREYXRhU3RhdHVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c2V0RmFpbGVkKToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRGVjb2Rlcjo6ZmlsZW5hbWVFeHRlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VE
ZWNvZGVyOjpzZXRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6ZnJhbWVD
b3VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OnJlcGV0aXRpb25Db3VudCk6
CisgICAgICAgIChXZWJDb3JlOjpJbWFnZURlY29kZXI6OmhvdFNwb3QpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZUhhc0FscGhhQXRJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZURlY29kZXI6OmZyYW1lQnl0ZXNBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6
OkltYWdlRGVjb2Rlcjo6ZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VEZWNvZGVyOjpmcmFtZVNpemVBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6Oklt
YWdlRGVjb2Rlcjo6ZnJhbWVBbGxvd1N1YnNhbXBsaW5nQXRJbmRleCk6CisgICAgICAgIChXZWJD
b3JlOjpJbWFnZURlY29kZXI6OnByZXBhcmVTY2FsZURhdGFJZk5lY2Vzc2FyeSk6CisgICAgICAg
ICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmg6IFJlbW92ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpCTVBJbWFnZURlY29kZXI6OkJNUEltYWdlRGVjb2Rlcik6CisgICAg
ICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6R0lGSW1hZ2VEZWNvZGVyOjpHSUZJbWFnZURlY29kZXIpOgorICAg
ICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OklDT0ltYWdlRGVjb2Rlcjo6SUNPSW1hZ2VEZWNvZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OklDT0ltYWdlRGVjb2Rlcjo6c2l6ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJQ09JbWFnZURlY29kZXI6OmZyYW1lU2l6ZUF0SW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6
SUNPSW1hZ2VEZWNvZGVyOjpkZWNvZGVBdEluZGV4KToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmg6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpQRUdJbWFnZURlY29kZXI6OkpQRUdJbWFnZURlY29kZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UE5HSW1hZ2VEZWNvZGVyOjpQTkdJbWFnZURlY29kZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6V0VCUEltYWdlRGVjb2Rlcjo6V0VCUEltYWdlRGVjb2Rlcik6CisgICAgICAgICog
cGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmg6CisKIDIwMTct
MDUtMzAgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZlcnQgYWNj
aWRlbnRhbGx5IGNoZWNrZWQgaW4gY2hhbmdlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg2YTI2YTg0YWRmLi5iMGQ3YTM2ZTVm
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMjUwMCwxMCArMjUwMCwxMCBAQAogCQk1M0VGNzY2QzE2NTMxOTk0MDA0Q0JFNDkg
LyogU2V0dGluZ3NNYWNyb3MuaCBpbiBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUzRUY3NjZBMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0
aW5nc01hY3Jvcy5oICovOyB9OwogCQk1NTBBMEJDOTA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlm
aWVkTmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NTBBMEJDNzA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgKi87IH07CiAJ
CTU1MEEwQkNBMDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTBBMEJDODA4NUY2MDM5MDA3MzUz
RDYgLyogUXVhbGlmaWVkTmFtZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTU1MzRFRTkyMUVERTU2OEQwMDgxOEMwNCAvKiBJbWFnZURlY29kZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MzRFRTkx
MUVERTU2ODkwMDgxOEMwNCAvKiBJbWFnZURlY29kZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NTUwQ0I0MjFFOTU1RTNDMDAxMTFBQTAgLyog
SW1hZ2VUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTU1MENCNDExRTk1NUUzQzAwMTExQUEwIC8qIEltYWdlVHlwZXMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1NTUxMzAwMTFFN0NDQ0NCMDBB
NjlFMzggLyogRGVjb2RpbmdPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1NTUxMzAwMDFFN0NDQ0NBMDBBNjlFMzggLyogRGVjb2RpbmdPcHRp
b25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NTU1Qjg3RUMxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1NUI4N0VBMUNBQUYwQUIwMDM0
OTQyNSAvKiBJbWFnZURlY29kZXJDRy5jcHAgKi87IH07Ci0JCTU1NUI4N0VEMUNBQUYwQUIwMDM0
OTQyNSAvKiBJbWFnZURlY29kZXJDRy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNTU1Qjg3RUIxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNH
LmggKi87IH07CiAJCTU1NzZBNTY0MUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1NzZBNTYyMUQ4
OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmNwcCAqLzsgfTsKIAkJNTU3NkE1NjUxRDg4QTcw
ODAwQ0NDMDRDIC8qIEltYWdlRnJhbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDU1NzZBNTYzMUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTU5N0Y4
MjYxRDkxQzMxMzAwNjZCQzIxIC8qIEltYWdlRnJhbWVDYWNoZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTk3RjgyNDFEOTFDMzEzMDA2NkJDMjEg
LyogSW1hZ2VGcmFtZUNhY2hlLmNwcCAqLzsgfTsKQEAgLTEwMjcxLDEwICsxMDI3MSwxMCBAQAog
CQk1M0VGNzY2QTE2NTMwQTYxMDA0Q0JFNDkgLyogU2V0dGluZ3NNYWNyb3MuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2V0dGluZ3NNYWNyb3MuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTUwQTBCQzcwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRl
bnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUXVhbGlmaWVkTmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0g
ODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlm
aWVkTmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBRdWFsaWZpZWROYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0g
ODsgdXNlc1RhYnMgPSAwOyB9OworCQk1NTM0RUU5MTFFREU1Njg5MDA4MThDMDQgLyogSW1hZ2VE
ZWNvZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlRGVjb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1NTUwQ0I0MTFFOTU1RTNDMDAxMTFBQTAgLyogSW1hZ2VUeXBlcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZVR5cGVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTU1NTEzMDAwMUU3Q0NDQ0EwMEE2OUUzOCAvKiBEZWNvZGluZ09w
dGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGVjb2RpbmdPcHRpb25z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU1NUI4N0VBMUNBQUYwQUIwMDM0OTQy
NSAvKiBJbWFnZURlY29kZXJDRy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBJbWFnZURlY29kZXJDRy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU1
NUI4N0VCMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZURlY29kZXJDRy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1NTc2QTU2MjFEODhBNzA4MDBDQ0MwNEMgLyogSW1hZ2VGcmFtZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbWFnZUZyYW1lLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTU3NkE1NjMxRDg4QTcwODAwQ0NDMDRDIC8qIEltYWdl
RnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VGcmFtZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NTk3RjgyNDFEOTFDMzEzMDA2NkJDMjEgLyog
SW1hZ2VGcmFtZUNhY2hlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEltYWdlRnJhbWVDYWNoZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzA1
NCw3ICsyMzA1NCw2IEBACiAJCQkJMjJCRDlGODAxMzUzNjRGRTAwOUJEMTAyIC8qIEltYWdlQnVm
ZmVyRGF0YUNHLmggKi8sCiAJCQkJQjI3NTM1MzAwQjA1MzgxNDAwMkNFNjRGIC8qIEltYWdlQ0cu
Y3BwICovLAogCQkJCTU1NUI4N0VBMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5j
cHAgKi8sCi0JCQkJNTU1Qjg3RUIxQ0FBRjBBQjAwMzQ5NDI1IC8qIEltYWdlRGVjb2RlckNHLmgg
Ki8sCiAJCQkJNEIzNDgwOTIwRUVGNTBENDAwQUMxQjQxIC8qIEltYWdlU291cmNlQ0cuaCAqLywK
IAkJCQk0QjM0ODA5MTBFRUY1MEQ0MDBBQzFCNDEgLyogSW1hZ2VTb3VyY2VDR01hYy5tbSAqLywK
IAkJCQlCMjc1MzUzMjBCMDUzODE0MDAyQ0U2NEYgLyogSW50UG9pbnRDRy5jcHAgKi8sCkBAIC0y
MzIyOCw2ICsyMzIyNyw3IEBACiAJCQkJNDNEMjU5NzYxM0M4MTZGNDAwNjA4NTU5IC8qIEltYWdl
QnVmZmVyLmNwcCAqLywKIAkJCQlCMkExMEI5MTBCMzgxOEJEMDAwOTlBQTQgLyogSW1hZ2VCdWZm
ZXIuaCAqLywKIAkJCQkyMkJEOUY3RDEzNTM2MjVDMDA5QkQxMDIgLyogSW1hZ2VCdWZmZXJEYXRh
LmggKi8sCisJCQkJNTUzNEVFOTExRURFNTY4OTAwODE4QzA0IC8qIEltYWdlRGVjb2Rlci5oICov
LAogCQkJCTU1NzZBNTYyMUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1lLmNwcCAqLywKIAkJ
CQk1NTc2QTU2MzFEODhBNzA4MDBDQ0MwNEMgLyogSW1hZ2VGcmFtZS5oICovLAogCQkJCTU1OTdG
ODI0MUQ5MUMzMTMwMDY2QkMyMSAvKiBJbWFnZUZyYW1lQ2FjaGUuY3BwICovLApAQCAtMjc2NzEs
NyArMjc2NzEsNiBAQAogCQkJCTUxMDE5MkQ2MThCNkI5QjcwMDdGQzdBMSAvKiBJbWFnZUNvbnRy
b2xzUm9vdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDE5MkQyMThCNkI5QUIwMDdG
QzdBMSAvKiBJbWFnZUNvbnRyb2xzUm9vdEVsZW1lbnRNYWMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUE3Nzk3OTFBMEQ2QjlEMEMwMDM4NTFCOSAvKiBJbWFnZURhdGEuaCBpbiBIZWFkZXJzICovLAot
CQkJCTU1NUI4N0VEMUNBQUYwQUIwMDM0OTQyNSAvKiBJbWFnZURlY29kZXJDRy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTcyMDVBQjYxMjM5MjkxMDAwQjE3MzgwIC8qIEltYWdlRG9jdW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTU1NzZBNTY1MUQ4OEE3MDgwMENDQzA0QyAvKiBJbWFnZUZyYW1l
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1NTk3RjgyNzFEOTFDMzEzMDA2NkJDMjEgLyogSW1hZ2VG
cmFtZUNhY2hlLmggaW4gSGVhZGVycyAqLywKQEAgLTI4MjMwLDYgKzI4MjI5LDcgQEAKIAkJCQkz
MTZEQ0I0RTFFNzkxMEE2MDAxQjVGODcgLyogSlNSVENJY2VHYXRoZXJpbmdTdGF0ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMDczNzk0RUMxOUVFMzQxRTAwRTVBMDQ1IC8qIEpTUlRDSWNlU2VydmVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTZEQ0IyMDFFNzhDQTU1MDAxQjVGODcgLyogSlNSVENP
ZmZlckFuc3dlck9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTU1MzRFRTkyMUVERTU2OEQw
MDgxOEMwNCAvKiBJbWFnZURlY29kZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OTY5REJBMTdE
MTQxNTEwMDdGRjg0MiAvKiBKU1JUQ1BlZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwNzk2OURCODE3RDE0MTUxMDA3RkY4NDIgLyogSlNSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1RTJDNDM3NDFCQ0YwRDc1MDAwMUUyQkUgLyogSlNSVENS
dHBQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLjNiMjEwNzUzNDdmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VEZWNvZGVyLmgKQEAgLTAsMCArMSwxMzggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYsIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgIkRlY29kaW5nT3B0aW9ucy5oIgorI2lmICFVU0UoQ0cpICYmICFVU0Uo
RElSRUNUMkQpCisjaW5jbHVkZSAiSW1hZ2VGcmFtZS5oIgorI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgorI2VuZGlmCisjaW5jbHVkZSAiSW1hZ2VPcmllbnRhdGlvbi5oIgorI2luY2x1ZGUgIklt
YWdlVHlwZXMuaCIKKyNpbmNsdWRlICJJbnRQb2ludC5oIgorI2luY2x1ZGUgIkludFNpemUuaCIK
KyNpbmNsdWRlICJOYXRpdmVJbWFnZS5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2lu
Y2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgorCisjaWYgVVNFKENHKQordHlwZWRl
ZiBzdHJ1Y3QgQ0dJbWFnZVNvdXJjZSogQ0dJbWFnZVNvdXJjZVJlZjsKKyNlbGlmIFVTRShESVJF
Q1QyRCkKK2ludGVyZmFjZSBJRDJEMVJlbmRlclRhcmdldDsKK2ludGVyZmFjZSBJV0lDQml0bWFw
RGVjb2RlcjsKK2ludGVyZmFjZSBJV0lDSW1hZ2luZ0ZhY3Rvcnk7CisjZW5kaWYKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworICAgIAorY2xhc3MgU2hhcmVkQnVmZmVyOworCitjbGFzcyBJbWFnZURl
Y29kZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8SW1hZ2VEZWNvZGVyPiB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VEZWNvZGVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CitwdWJsaWM6CisgICAgSW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFP
cHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICB2aXJ0dWFsIH5JbWFnZURl
Y29kZXIoKSB7IH0KKworICAgIHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoU2hh
cmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
OworICAgIHN0YXRpYyBzaXplX3QgYnl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCk7
CisKKyAgICBFbmNvZGVkRGF0YVN0YXR1cyBlbmNvZGVkRGF0YVN0YXR1cygpIGNvbnN0OworICAg
IGJvb2wgaXNTaXplQXZhaWxhYmxlKCkgY29uc3QgeyByZXR1cm4gZW5jb2RlZERhdGFTdGF0dXMo
KSA+PSBFbmNvZGVkRGF0YVN0YXR1czo6U2l6ZUF2YWlsYWJsZTsgfQorICAgIHZpcnR1YWwgc2l6
ZV90IGZyYW1lQ291bnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFJlcGV0aXRpb25Db3VudCByZXBl
dGl0aW9uQ291bnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFN0cmluZyBmaWxlbmFtZUV4dGVuc2lv
bigpIGNvbnN0OworICAgIHZpcnR1YWwgc3RkOjpvcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgp
IGNvbnN0OworCisgICAgdmlydHVhbCBJbnRTaXplIGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBT
dWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCkgY29uc3Q7CisgICAg
Ym9vbCBmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCk7CisgICAgSW1hZ2VPcmllbnRhdGlv
biBmcmFtZU9yaWVudGF0aW9uQXRJbmRleChzaXplX3QpIGNvbnN0OworCisgICAgZmxvYXQgZnJh
bWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90KTsKKyAgICBib29sIGZyYW1lSGFzQWxwaGFBdEluZGV4
KHNpemVfdCk7CisgICAgYm9vbCBmcmFtZUFsbG93U3Vic2FtcGxpbmdBdEluZGV4KHNpemVfdCkg
Y29uc3Q7CisgICAgdW5zaWduZWQgZnJhbWVCeXRlc0F0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGlu
Z0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCkgY29uc3Q7CisKKyAgICBOYXRpdmVJ
bWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwg
PSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVj
b2RpbmdNb2RlOjpTeW5jaHJvbm91cyk7CisKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RGF0YShTaGFy
ZWRCdWZmZXImLCBib29sIGFsbERhdGFSZWNlaXZlZCk7CisgICAgYm9vbCBpc0FsbERhdGFSZWNl
aXZlZCgpIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBjbGVhckZyYW1lQnVmZmVyQ2FjaGUoc2l6
ZV90KSB7IH0KKworI2lmIFVTRShDRykKKyAgICBTdHJpbmcgdXRpKCkgY29uc3Q7CisjZWxpZiBV
U0UoRElSRUNUMkQpCisgICAgdm9pZCBzZXRUYXJnZXRDb250ZXh0KElEMkQxUmVuZGVyVGFyZ2V0
Kik7CisgICAgc3RhdGljIElXSUNJbWFnaW5nRmFjdG9yeSogc3lzdGVtSW1hZ2luZ0ZhY3Rvcnko
KTsKKyNlbHNlCisgICAgdm9pZCBzZXRQcmVtdWx0aXBseUFscGhhKGJvb2wgcHJlbXVsdGlwbHlB
bHBoYSkgeyAgbV9wcmVtdWx0aXBseUFscGhhID0gcHJlbXVsdGlwbHlBbHBoYTsgfQorICAgIGJv
b2wgcHJlbXVsdGlwbHlBbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJlbXVsdGlwbHlBbHBoYTsg
fQorICAgIHZvaWQgc2V0SWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGUoYm9vbCBpZ25vcmVHYW1t
YUFuZENvbG9yUHJvZmlsZSkgeyBtX2lnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlID0gaWdub3Jl
R2FtbWFBbmRDb2xvclByb2ZpbGU7IH0KKyAgICBib29sIGlnbm9yZXNHYW1tYUFuZENvbG9yUHJv
ZmlsZSgpIGNvbnN0IHsgcmV0dXJuIG1faWdub3JlR2FtbWFBbmRDb2xvclByb2ZpbGU7IH0KKwor
ICAgIHZpcnR1YWwgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUmKTsKKyAgICB2aXJ0dWFsIElu
dFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIGlzU2l6ZUF2YWlsYWJsZSgpID8gbV9zaXplIDog
SW50U2l6ZSgpOyB9CisgICAgSW50U2l6ZSBzY2FsZWRTaXplKCkgeyByZXR1cm4gbV9zY2FsZWQg
PyBJbnRTaXplKG1fc2NhbGVkQ29sdW1ucy5zaXplKCksIG1fc2NhbGVkUm93cy5zaXplKCkpIDog
c2l6ZSgpOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdHJ5RGVjb2RlU2l6ZShib29sKSA9IDA7Cisg
ICAgdmlydHVhbCBib29sIHNldEZhaWxlZCgpOworICAgIGJvb2wgZmFpbGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3I7IH0K
KworICAgIHZpcnR1YWwgSW1hZ2VGcmFtZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCkgPSAw
OworCisgICAgdm9pZCBwcmVwYXJlU2NhbGVEYXRhSWZOZWNlc3NhcnkoKTsKKyAgICBpbnQgdXBw
ZXJCb3VuZFNjYWxlZFgoaW50IG9yaWdYLCBpbnQgc2VhcmNoU3RhcnQgPSAwKTsKKyAgICBpbnQg
bG93ZXJCb3VuZFNjYWxlZFgoaW50IG9yaWdYLCBpbnQgc2VhcmNoU3RhcnQgPSAwKTsKKyAgICBp
bnQgdXBwZXJCb3VuZFNjYWxlZFkoaW50IG9yaWdZLCBpbnQgc2VhcmNoU3RhcnQgPSAwKTsKKyAg
ICBpbnQgbG93ZXJCb3VuZFNjYWxlZFkoaW50IG9yaWdZLCBpbnQgc2VhcmNoU3RhcnQgPSAwKTsK
KyAgICBpbnQgc2NhbGVkWShpbnQgb3JpZ1ksIGludCBzZWFyY2hTdGFydCA9IDApOworI2VuZGlm
CisKK3Byb3RlY3RlZDoKKyNpZiBVU0UoQ0cpCisgICAgUmV0YWluUHRyPENHSW1hZ2VTb3VyY2VS
ZWY+IG1fbmF0aXZlRGVjb2RlcjsKKyAgICBib29sIG1faXNBbGxEYXRhUmVjZWl2ZWQgeyBmYWxz
ZSB9OworI2VsaWYgVVNFKERJUkVDVDJEKQorICAgIENPTVB0cjxJV0lDQml0bWFwRGVjb2Rlcj4g
bV9uYXRpdmVEZWNvZGVyOworICAgIENPTVB0cjxJRDJEMVJlbmRlclRhcmdldD4gbV9yZW5kZXJU
YXJnZXQ7CisjZWxzZQorICAgIGJvb2wgbV9wcmVtdWx0aXBseUFscGhhOworICAgIGJvb2wgbV9p
Z25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZTsKKworICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1f
ZGF0YTsgLy8gVGhlIGVuY29kZWQgZGF0YS4KKyAgICBWZWN0b3I8SW1hZ2VGcmFtZSwgMT4gbV9m
cmFtZUJ1ZmZlckNhY2hlOworICAgIEVuY29kZWREYXRhU3RhdHVzIG1fZW5jb2RlZERhdGFTdGF0
dXMgeyBFbmNvZGVkRGF0YVN0YXR1czo6VHlwZUF2YWlsYWJsZSB9OworICAgIGJvb2wgbV9kZWNv
ZGluZ1NpemVGcm9tU2V0RGF0YSB7IGZhbHNlIH07CisKKyAgICBJbnRTaXplIG1fc2l6ZTsKKyAg
ICBJbWFnZU9yaWVudGF0aW9uIG1fb3JpZW50YXRpb247CisKKyAgICBib29sIG1fc2NhbGVkIHsg
ZmFsc2UgfTsKKyAgICBWZWN0b3I8aW50PiBtX3NjYWxlZENvbHVtbnM7CisgICAgVmVjdG9yPGlu
dD4gbV9zY2FsZWRSb3dzOworI2VuZGlmCit9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmNwcAppbmRleCBhNzQ1ZWE4MDE2
Ny4uMjBlNWY4NDA4YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlRnJhbWVDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmNwcApAQCAtMjcsMjMgKzI3LDE0IEBACiAjaW5jbHVkZSAi
SW1hZ2VGcmFtZUNhY2hlLmgiCiAKICNpbmNsdWRlICJJbWFnZS5oIgorI2luY2x1ZGUgIkltYWdl
RGVjb2Rlci5oIgogI2luY2x1ZGUgIkltYWdlT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJMb2dnaW5n
LmgiCiAjaW5jbHVkZSAiVVJMLmgiCi0jaW5jbHVkZSA8d3RmL1N5c3RlbVRyYWNpbmcuaD4KLQot
I2lmIFVTRShDRykKLSNpbmNsdWRlICJJbWFnZURlY29kZXJDRy5oIgotI2VsaWYgVVNFKERJUkVD
VDJEKQotI2luY2x1ZGUgIkltYWdlRGVjb2RlckRpcmVjdDJELmgiCi0jaW5jbHVkZSA8V2luQ29k
ZWMuaD4KLSNlbHNlCi0jaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCi0jZW5kaWYKLQogI2luY2x1
ZGUgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKyNpbmNsdWRlIDx3dGYvU3lzdGVtVHJhY2luZy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAppbmRleCAzZDQ4M2ZiOTM5Ny4uMWQ0NjY3ODA2NzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5j
cHAKQEAgLTMwLDE5ICszMCwxMiBAQAogI2luY2x1ZGUgIkltYWdlU291cmNlLmgiCiAKICNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJJbWFnZURlY29kZXIuaCIKKyNpbmNs
dWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCiAKLSNpZiBVU0UoQ0cpCi0jaW5jbHVkZSAiSW1hZ2VE
ZWNvZGVyQ0cuaCIKLSNpZiBQTEFURk9STShXSU4pCisjaWYgVVNFKENHKSAmJiBQTEFURk9STShX
SU4pCiAjaW5jbHVkZSA8V2ViS2l0U3lzdGVtSW50ZXJmYWNlL1dlYktpdFN5c3RlbUludGVyZmFj
ZS5oPgogI2VuZGlmCi0jZWxpZiBVU0UoRElSRUNUMkQpCi0jaW5jbHVkZSAiSW1hZ2VEZWNvZGVy
RGlyZWN0MkQuaCIKLSNlbHNlCi0jaW5jbHVkZSAiSW1hZ2VEZWNvZGVyLmgiCi0jZW5kaWYKLQot
I2luY2x1ZGUgIkltYWdlT3JpZW50YXRpb24uaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvSW1hZ2VUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvSW1hZ2VUeXBlcy5oCmluZGV4IGRiNjEyMTJlMmVmLi43NTExNzNiMWE2YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VUeXBlcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlVHlwZXMuaApAQCAtMjUsMTAg
KzI1LDYgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpZiBVU0UoQ0cpCi10eXBlZGVmIHN0cnVjdCBD
R0ltYWdlU291cmNlKiBDR0ltYWdlU291cmNlUmVmOwotI2VuZGlmCi0KIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogLy8gVGhlcmUgYXJlIGZvdXIgc3Vic2FtcGxpbmcgbGV2ZWxzOiAwID0gMXgsIDEg
PSAwLjV4LCAyID0gMC4yNXgsIDMgPSAwLjEyNXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKaW5kZXggYzdlMTE0ZWYx
MjcuLjQ2MDA2NDIzYWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9JbWFnZURlY29kZXJDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvSW1hZ2VEZWNvZGVyQ0cuY3BwCkBAIC0yNCwxNSArMjQsMTMgQEAKICAqLwog
CiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSW1hZ2VEZWNvZGVyQ0cuaCIKKyNpbmNs
dWRlICJJbWFnZURlY29kZXIuaCIKIAogI2lmIFVTRShDRykKIAogI2luY2x1ZGUgIkltYWdlSU9T
UEkuaCIKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW1hZ2VTb3Vy
Y2VDRy5oIgotI2luY2x1ZGUgIkludFBvaW50LmgiCi0jaW5jbHVkZSAiSW50U2l6ZS5oIgogI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTE2Myw2ICsxNjEsMTEgQEAgSW1hZ2VEZWNvZGVyOjpJ
bWFnZURlY29kZXIoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xv
clByb2ZpbGUKICAgICAgICAgbV9uYXRpdmVEZWNvZGVyID0gYWRvcHRDRihDR0ltYWdlU291cmNl
Q3JlYXRlSW5jcmVtZW50YWwobnVsbHB0cikpOwogfQogCitSZWZQdHI8SW1hZ2VEZWNvZGVyPiBJ
bWFnZURlY29kZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhh
T3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9w
dGlvbikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEltYWdlRGVjb2RlcihkYXRhLCBhbHBo
YU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKK30KKwogc2l6ZV90IEltYWdl
RGVjb2Rlcjo6Ynl0ZXNEZWNvZGVkVG9EZXRlcm1pbmVQcm9wZXJ0aWVzKCkKIHsKICAgICAvLyBN
ZWFzdXJlZCBieSB0cmFjaW5nIG1hbGxvYy9jYWxsb2MgY2FsbHMgb24gTWFjIE9TIDEwLjYuNiwg
eDg2XzY0LgpAQCAtMTczLDcgKzE3Niw3IEBAIHNpemVfdCBJbWFnZURlY29kZXI6OmJ5dGVzRGVj
b2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpCiAgICAgLy8gYmVoYXZpb3IgaXMgdW5jaGFuZ2Vk
LgogICAgIHJldHVybiAxMzA4ODsKIH0KLSAgICAKKwogU3RyaW5nIEltYWdlRGVjb2Rlcjo6dXRp
KCkgY29uc3QKIHsKICAgICByZXR1cm4gQ0dJbWFnZVNvdXJjZUdldFR5cGUobV9uYXRpdmVEZWNv
ZGVyLmdldCgpKTsKQEAgLTE4NCw2ICsxODcsMTEgQEAgU3RyaW5nIEltYWdlRGVjb2Rlcjo6Zmls
ZW5hbWVFeHRlbnNpb24oKSBjb25zdAogICAgIHJldHVybiBXZWJDb3JlOjpwcmVmZXJyZWRFeHRl
bnNpb25Gb3JJbWFnZVNvdXJjZVR5cGUodXRpKCkpOwogfQogCitib29sIEltYWdlRGVjb2Rlcjo6
aXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX2lzQWxsRGF0YVJlY2Vp
dmVkOworfQorCiBFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZURlY29kZXI6OmVuY29kZWREYXRhU3Rh
dHVzKCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKENHSW1hZ2VTb3VyY2VHZXRTdGF0dXMobV9uYXRp
dmVEZWNvZGVyLmdldCgpKSkgewpAQCAtMzAwLDcgKzMwOCw3IEBAIEludFNpemUgSW1hZ2VEZWNv
ZGVyOjpmcmFtZVNpemVBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJz
YW1wbGluCiAgICAgcmV0dXJuIEludFNpemUod2lkdGgsIGhlaWdodCk7CiB9CiAKLWJvb2wgSW1h
Z2VEZWNvZGVyOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKK2Jv
b2wgSW1hZ2VEZWNvZGVyOjpmcmFtZUlzQ29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkKIHsK
ICAgICBBU1NFUlQoZnJhbWVDb3VudCgpKTsKICAgICAvLyBDR0ltYWdlU291cmNlR2V0U3RhdHVz
QXRJbmRleCgpIGNoYW5nZXMgdGhlIHJldHVybiBzdGF0dXMgdmFsdWUgZnJvbSBrQ0dJbWFnZVN0
YXR1c0luY29tcGxldGUKQEAgLTMyMSw3ICszMjksNyBAQCBJbWFnZU9yaWVudGF0aW9uIEltYWdl
RGVjb2Rlcjo6ZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25zdAogICAg
IHJldHVybiBvcmllbnRhdGlvbkZyb21Qcm9wZXJ0aWVzKHByb3BlcnRpZXMuZ2V0KCkpOwogfQog
Ci1mbG9hdCBJbWFnZURlY29kZXI6OmZyYW1lRHVyYXRpb25BdEluZGV4KHNpemVfdCBpbmRleCkg
Y29uc3QKK2Zsb2F0IEltYWdlRGVjb2Rlcjo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90IGlu
ZGV4KQogewogICAgIGZsb2F0IGR1cmF0aW9uID0gMDsKICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9u
YXJ5UmVmPiBwcm9wZXJ0aWVzID0gYWRvcHRDRihDR0ltYWdlU291cmNlQ29weVByb3BlcnRpZXNB
dEluZGV4KG1fbmF0aXZlRGVjb2Rlci5nZXQoKSwgaW5kZXgsIGltYWdlU291cmNlT3B0aW9ucygp
LmdldCgpKSk7CkBAIC0zNzcsNyArMzg1LDcgQEAgYm9vbCBJbWFnZURlY29kZXI6OmZyYW1lQWxs
b3dTdWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQog
Ci1ib29sIEltYWdlRGVjb2Rlcjo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGluZGV4KSBj
b25zdAorYm9vbCBJbWFnZURlY29kZXI6OmZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCBpbmRl
eCkKIHsKICAgICBpZiAoIWZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoaW5kZXgpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTQwMSw3ICs0MDksNyBAQCB1bnNpZ25lZCBJbWFnZURlY29kZXI6OmZy
YW1lQnl0ZXNBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbAog
ICAgIHJldHVybiAoZnJhbWVTaXplLmFyZWEoKSAqIDQpLnVuc2FmZUdldCgpOwogfQogCi1OYXRp
dmVJbWFnZVB0ciBJbWFnZURlY29kZXI6OmNyZWF0ZUZyYW1lSW1hZ2VBdEluZGV4KHNpemVfdCBp
bmRleCwgU3Vic2FtcGxpbmdMZXZlbCBzdWJzYW1wbGluZ0xldmVsLCBjb25zdCBEZWNvZGluZ09w
dGlvbnMmIGRlY29kaW5nT3B0aW9ucykgY29uc3QKK05hdGl2ZUltYWdlUHRyIEltYWdlRGVjb2Rl
cjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVs
IHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYgZGVjb2RpbmdPcHRpb25z
KQogewogICAgIExPRyhJbWFnZXMsICJJbWFnZURlY29kZXIgJXAgY3JlYXRlRnJhbWVJbWFnZUF0
SW5kZXggJWx1IiwgdGhpcywgaW5kZXgpOwogICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+
IG9wdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9JbWFnZURlY29kZXJDRy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cv
SW1hZ2VEZWNvZGVyQ0cuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmMyODRlNzFm
ZjQuLjAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0ltYWdlRGVjb2RlckNHLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
bmNsdWRlICJEZWNvZGluZ09wdGlvbnMuaCIKLSNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9uLmgi
Ci0jaW5jbHVkZSAiSW1hZ2VUeXBlcy5oIgotI2luY2x1ZGUgIkludFBvaW50LmgiCi0jaW5jbHVk
ZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIk5hdGl2ZUltYWdlLmgiCi0jaW5jbHVkZSA8d3RmL09w
dGlvbmFsLmg+Ci0jaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLSAgICAKLWNsYXNzIFNoYXJlZEJ1ZmZlcjsKLSAgICAKLWNsYXNzIElt
YWdlRGVjb2RlciA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbWFnZURlY29kZXI+IHsK
LSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBJbWFnZURlY29kZXIo
U2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRp
b24pOwotCi0gICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXI+IGNyZWF0ZShTaGFyZWRCdWZmZXIm
IGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
biBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IEltYWdlRGVjb2RlcihkYXRhLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pKTsKLSAgICB9Ci0gICAgCi0gICAgc3RhdGljIHNpemVfdCBieXRlc0RlY29k
ZWRUb0RldGVybWluZVByb3BlcnRpZXMoKTsKLQotICAgIEVuY29kZWREYXRhU3RhdHVzIGVuY29k
ZWREYXRhU3RhdHVzKCkgY29uc3Q7Ci0gICAgYm9vbCBpc1NpemVBdmFpbGFibGUoKSB7IHJldHVy
biBlbmNvZGVkRGF0YVN0YXR1cygpID49IEVuY29kZWREYXRhU3RhdHVzOjpTaXplQXZhaWxhYmxl
OyB9Ci0gICAgc2l6ZV90IGZyYW1lQ291bnQoKSBjb25zdDsKLSAgICBSZXBldGl0aW9uQ291bnQg
cmVwZXRpdGlvbkNvdW50KCkgY29uc3Q7Ci0gICAgU3RyaW5nIHV0aSgpIGNvbnN0OwotICAgIFN0
cmluZyBmaWxlbmFtZUV4dGVuc2lvbigpIGNvbnN0OwotICAgIHN0ZDo6b3B0aW9uYWw8SW50UG9p
bnQ+IGhvdFNwb3QoKSBjb25zdDsKLQotICAgIEludFNpemUgZnJhbWVTaXplQXRJbmRleChzaXpl
X3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdDsK
LSAgICBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90KSBjb25zdDsKLSAgICBJbWFn
ZU9yaWVudGF0aW9uIGZyYW1lT3JpZW50YXRpb25BdEluZGV4KHNpemVfdCkgY29uc3Q7Ci0gICAg
Ci0gICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90KSBjb25zdDsKLSAgICBib29s
IGZyYW1lSGFzQWxwaGFBdEluZGV4KHNpemVfdCkgY29uc3Q7Ci0gICAgYm9vbCBmcmFtZUFsbG93
U3Vic2FtcGxpbmdBdEluZGV4KHNpemVfdCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgZnJhbWVCeXRl
c0F0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVm
YXVsdCkgY29uc3Q7Ci0gICAgCi0gICAgTmF0aXZlSW1hZ2VQdHIgY3JlYXRlRnJhbWVJbWFnZUF0
SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsID0gU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVs
dCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJiA9IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpIGNv
bnN0OwotICAgIAotICAgIHZvaWQgc2V0RGF0YShTaGFyZWRCdWZmZXImLCBib29sIGFsbERhdGFS
ZWNlaXZlZCk7Ci0gICAgYm9vbCBpc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNBbGxEYXRhUmVjZWl2ZWQ7IH0KLSAgICB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXpl
X3QpIHsgfQotICAgIAotcHJvdGVjdGVkOgotICAgIGJvb2wgbV9pc0FsbERhdGFSZWNlaXZlZCB7
IGZhbHNlIH07Ci0gICAgUmV0YWluUHRyPENHSW1hZ2VTb3VyY2VSZWY+IG1fbmF0aXZlRGVjb2Rl
cjsKLX07Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCmluZGV4IDZhYmU3ZTNlYWU1Li5i
YmJiNTljMjc1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
d2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGlyZWN0MkQuY3BwCkBAIC0yNCwxNCArMjQsMTIg
QEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSW1hZ2VEZWNvZGVyRGly
ZWN0MkQuaCIKKyNpbmNsdWRlICJJbWFnZURlY29kZXIiCiAKICNpZiBVU0UoRElSRUNUMkQpCiAK
ICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbWFnZU9yaWVudGF0aW9u
LmgiCi0jaW5jbHVkZSAiSW50UG9pbnQuaCIKLSNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiU2hh
cmVkQnVmZmVyLmgiCkBAIC00MSwxMCArMzksMTUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1JbWFnZURlY29kZXI6OkltYWdlRGVjb2RlcigpCitJbWFnZURlY29kZXI6OkltYWdlRGVjb2Rl
cihTaGFyZWRCdWZmZXImLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
CiB7CiB9CiAKK1JlZlB0cjxJbWFnZURlY29kZXI+IGNyZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEs
IEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEltYWdl
RGVjb2RlcihkYXRhLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsK
K30KKwogSVdJQ0ltYWdpbmdGYWN0b3J5KiBJbWFnZURlY29kZXI6OnN5c3RlbUltYWdpbmdGYWN0
b3J5KCkKIHsKICAgICBzdGF0aWMgSVdJQ0ltYWdpbmdGYWN0b3J5KiB3aWNJbWFnaW5nRmFjdG9y
eSA9IG51bGxwdHI7CkBAIC03OSw2ICs4MiwxMiBAQCBFbmNvZGVkRGF0YVN0YXR1cyBJbWFnZURl
Y29kZXI6OmVuY29kZWREYXRhU3RhdHVzKCkgY29uc3QKICAgICByZXR1cm4gRW5jb2RlZERhdGFT
dGF0dXM6OlVua25vd247CiB9CiAKK2Jvb2wgSW1hZ2VEZWNvZGVyOjppc0FsbERhdGFSZWNlaXZl
ZCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKIEludFNpemUgSW1hZ2VEZWNvZGVyOjpzaXplKCkgY29uc3QKIHsKICAgICBpZiAoIW1fbmF0
aXZlRGVjb2RlcikKQEAgLTEzOCw3ICsxNDcsNyBAQCBJbnRTaXplIEltYWdlRGVjb2Rlcjo6ZnJh
bWVTaXplQXRJbmRleChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbgog
ICAgIHJldHVybiBJbnRTaXplKHdpZHRoLCBoZWlnaHQpOwogfQogCi1ib29sIEltYWdlRGVjb2Rl
cjo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Citib29sIEltYWdl
RGVjb2Rlcjo6ZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3QgaW5kZXgpCiB7CiAgICAgaWYg
KCFtX25hdGl2ZURlY29kZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE1NCw3ICsxNjMs
NyBAQCBJbWFnZU9yaWVudGF0aW9uIEltYWdlRGVjb2Rlcjo6ZnJhbWVPcmllbnRhdGlvbkF0SW5k
ZXgoc2l6ZV90IGluZGV4KSBjb25zdAogICAgIHJldHVybiBJbWFnZU9yaWVudGF0aW9uKCk7CiB9
CiAKLWZsb2F0IEltYWdlRGVjb2Rlcjo6ZnJhbWVEdXJhdGlvbkF0SW5kZXgoc2l6ZV90IGluZGV4
KSBjb25zdAorZmxvYXQgSW1hZ2VEZWNvZGVyOjpmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3Qg
aW5kZXgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gMDsKQEAgLTE2Niw3
ICsxNzUsNyBAQCBib29sIEltYWdlRGVjb2Rlcjo6ZnJhbWVBbGxvd1N1YnNhbXBsaW5nQXRJbmRl
eChzaXplX3QpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgSW1hZ2VEZWNvZGVy
OjpmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QgaW5kZXgpIGNvbnN0Citib29sIEltYWdlRGVj
b2Rlcjo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewogICAgIG5vdEltcGxl
bWVudGVkKCk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xODYsNyArMTk1LDcgQEAgdm9pZCBJbWFn
ZURlY29kZXI6OnNldFRhcmdldENvbnRleHQoSUQyRDFSZW5kZXJUYXJnZXQqIHJlbmRlclRhcmdl
dCkKICAgICBtX3JlbmRlclRhcmdldCA9IHJlbmRlclRhcmdldDsKIH0KIAotTmF0aXZlSW1hZ2VQ
dHIgSW1hZ2VEZWNvZGVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgsIFN1
YnNhbXBsaW5nTGV2ZWwgc3Vic2FtcGxpbmdMZXZlbCwgY29uc3QgRGVjb2RpbmdPcHRpb25zJikg
Y29uc3QKK05hdGl2ZUltYWdlUHRyIEltYWdlRGVjb2Rlcjo6Y3JlYXRlRnJhbWVJbWFnZUF0SW5k
ZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsIHN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0
IERlY29kaW5nT3B0aW9ucyYpCiB7CiAgICAgaWYgKCFtX25hdGl2ZURlY29kZXIgfHwgIW1fcmVu
ZGVyVGFyZ2V0KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURlY29kZXJEaXJlY3QyRC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGVjb2RlckRpcmVjdDJELmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiZDRkNmY2N2U2Li4wMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VEZWNvZGVyRGly
ZWN0MkQuaAorKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkNP
TVB0ci5oIgotI2luY2x1ZGUgIkltYWdlU291cmNlLmgiCi0jaW5jbHVkZSAiSW50U2l6ZS5oIgot
I2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgotCi1pbnRlcmZhY2UgSUQyRDFSZW5kZXJUYXJnZXQ7
Ci1pbnRlcmZhY2UgSVdJQ0JpdG1hcERlY29kZXI7Ci1pbnRlcmZhY2UgSVdJQ0ltYWdpbmdGYWN0
b3J5OwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEltYWdlRGVjb2RlciA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxJbWFnZURlY29kZXI+IHsKLSAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBJbWFnZURlY29kZXIoKTsKLSAgICAKLSAgICBzdGF0
aWMgUmVmPEltYWdlRGVjb2Rlcj4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYsIEFscGhhT3B0aW9uLCBH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEltYWdlRGVjb2RlcigpKTsKLSAgICB9Ci0gICAgCi0gICAgc3RhdGljIHNpemVfdCBi
eXRlc0RlY29kZWRUb0RldGVybWluZVByb3BlcnRpZXMoKTsKLSAgICAKLSAgICBTdHJpbmcgZmls
ZW5hbWVFeHRlbnNpb24oKSBjb25zdDsKLSAgICBFbmNvZGVkRGF0YVN0YXR1cyBlbmNvZGVkRGF0
YVN0YXR1cygpIGNvbnN0OwotICAgIGJvb2wgaXNTaXplQXZhaWxhYmxlKCkgY29uc3Q7Ci0gICAg
Ci0gICAgLy8gQWx3YXlzIG9yaWdpbmFsIHNpemUsIHdpdGhvdXQgc3Vic2FtcGxpbmcuCi0gICAg
SW50U2l6ZSBzaXplKCkgY29uc3Q7Ci0gICAgc2l6ZV90IGZyYW1lQ291bnQoKSBjb25zdDsKLQot
ICAgIFJlcGV0aXRpb25Db3VudCByZXBldGl0aW9uQ291bnQoKSBjb25zdDsKLSAgICBzdGQ6Om9w
dGlvbmFsPEludFBvaW50PiBob3RTcG90KCkgY29uc3Q7Ci0gICAgCi0gICAgSW50U2l6ZSBmcmFt
ZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCA9IFN1YnNhbXBsaW5nTGV2ZWw6
OkRlZmF1bHQpIGNvbnN0OwotICAgIGJvb2wgZnJhbWVJc0NvbXBsZXRlQXRJbmRleChzaXplX3Qp
IGNvbnN0OwotICAgIEltYWdlT3JpZW50YXRpb24gZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgoc2l6
ZV90KSBjb25zdDsKLSAgICAKLSAgICBmbG9hdCBmcmFtZUR1cmF0aW9uQXRJbmRleChzaXplX3Qp
IGNvbnN0OwotICAgIGJvb2wgZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90KSBjb25zdDsKLSAg
ICBib29sIGZyYW1lQWxsb3dTdWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBjb25zdDsKLSAgICB1
bnNpZ25lZCBmcmFtZUJ5dGVzQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJz
YW1wbGluZ0xldmVsOjpEZWZhdWx0KSBjb25zdDsKLSAgICAKLSAgICBOYXRpdmVJbWFnZVB0ciBj
cmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1w
bGluZ0xldmVsOjpEZWZhdWx0LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdNb2Rl
OjpTeW5jaHJvbm91cykgY29uc3Q7Ci0gICAgCi0gICAgdm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZl
ciYsIGJvb2wgYWxsRGF0YVJlY2VpdmVkKTsKLSAgICBib29sIGlzQWxsRGF0YVJlY2VpdmVkKCkg
Y29uc3QgeyByZXR1cm4gbV9pc0FsbERhdGFSZWNlaXZlZDsgfQotICAgIHZvaWQgY2xlYXJGcmFt
ZUJ1ZmZlckNhY2hlKHNpemVfdCkgeyB9Ci0KLSAgICB2b2lkIHNldFRhcmdldENvbnRleHQoSUQy
RDFSZW5kZXJUYXJnZXQqKTsKLQotICAgIHN0YXRpYyBJV0lDSW1hZ2luZ0ZhY3RvcnkqIHN5c3Rl
bUltYWdpbmdGYWN0b3J5KCk7Ci0KLXByb3RlY3RlZDoKLSAgICBib29sIG1faXNBbGxEYXRhUmVj
ZWl2ZWQgeyBmYWxzZSB9OwotICAgIG11dGFibGUgSW50U2l6ZSBtX3NpemU7Ci0gICAgQ09NUHRy
PElXSUNCaXRtYXBEZWNvZGVyPiBtX25hdGl2ZURlY29kZXI7Ci0gICAgQ09NUHRyPElEMkQxUmVu
ZGVyVGFyZ2V0PiBtX3JlbmRlclRhcmdldDsKLX07Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCmluZGV4IDRi
YTRkYjJhNjIxLi43ZjVkZDliZTFmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuY3BwCkBAIC0yOCw3ICsyOCw2IEBA
CiAjaW5jbHVkZSAiSUNPSW1hZ2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAiSlBFR0ltYWdlRGVjb2Rl
ci5oIgogI2luY2x1ZGUgIlBOR0ltYWdlRGVjb2Rlci5oIgotI2luY2x1ZGUgIlNoYXJlZEJ1ZmZl
ci5oIgogI2lmIFVTRShXRUJQKQogI2luY2x1ZGUgIldFQlBJbWFnZURlY29kZXIuaCIKICNlbmRp
ZgpAQCAtOTgsNiArOTcsMTIgQEAgYm9vbCBtYXRjaGVzQ1VSU2lnbmF0dXJlKGNoYXIqIGNvbnRl
bnRzKQogCiB9CiAKK0ltYWdlRGVjb2Rlcjo6SW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZlciYsIEFs
cGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbikKKyAgICA6IG1fcHJlbXVsdGlwbHlBbHBoYShhbHBoYU9wdGlv
biA9PSBBbHBoYU9wdGlvbjo6UHJlbXVsdGlwbGllZCkKKyAgICAsIG1faWdub3JlR2FtbWFBbmRD
b2xvclByb2ZpbGUoZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gPT0gR2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb246Oklnbm9yZWQpCit7Cit9CisKIFJlZlB0cjxJbWFnZURlY29kZXI+IEltYWdl
RGVjb2Rlcjo6Y3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
KQogewogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsZW5ndGhPZkxvbmdlc3RTaWduYXR1cmUg
PSAxNDsgLy8gVG8gd2l0OiAiUklGRj8/Pz9XRUJQVlAiCkBAIC0xMDcsMjQgKzExMiwyNCBAQCBS
ZWZQdHI8SW1hZ2VEZWNvZGVyPiBJbWFnZURlY29kZXI6OmNyZWF0ZShTaGFyZWRCdWZmZXImIGRh
dGEsIEFscGhhT3B0aW9uIGFscGhhTwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlm
IChtYXRjaGVzR0lGU2lnbmF0dXJlKGNvbnRlbnRzKSkKLSAgICAgICAgcmV0dXJuIEdJRkltYWdl
RGVjb2Rlcjo6Y3JlYXRlKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7
CisgICAgICAgIHJldHVybiBHSUZJbWFnZURlY29kZXI6OmNyZWF0ZShkYXRhLCBhbHBoYU9wdGlv
biwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwogCiAgICAgaWYgKG1hdGNoZXNQTkdTaWdu
YXR1cmUoY29udGVudHMpKQotICAgICAgICByZXR1cm4gUE5HSW1hZ2VEZWNvZGVyOjpjcmVhdGUo
YWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICAgICAgcmV0dXJu
IFBOR0ltYWdlRGVjb2Rlcjo6Y3JlYXRlKGRhdGEsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9y
UHJvZmlsZU9wdGlvbik7CiAKICAgICBpZiAobWF0Y2hlc0lDT1NpZ25hdHVyZShjb250ZW50cykg
fHwgbWF0Y2hlc0NVUlNpZ25hdHVyZShjb250ZW50cykpCi0gICAgICAgIHJldHVybiBJQ09JbWFn
ZURlY29kZXI6OmNyZWF0ZShhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
OworICAgICAgICByZXR1cm4gSUNPSW1hZ2VEZWNvZGVyOjpjcmVhdGUoZGF0YSwgYWxwaGFPcHRp
b24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKIAogICAgIGlmIChtYXRjaGVzSlBFR1Np
Z25hdHVyZShjb250ZW50cykpCi0gICAgICAgIHJldHVybiBKUEVHSW1hZ2VEZWNvZGVyOjpjcmVh
dGUoYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKKyAgICAgICAgcmV0
dXJuIEpQRUdJbWFnZURlY29kZXI6OmNyZWF0ZShkYXRhLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24pOwogCiAjaWYgVVNFKFdFQlApCiAgICAgaWYgKG1hdGNoZXNXZWJQ
U2lnbmF0dXJlKGNvbnRlbnRzKSkKLSAgICAgICAgcmV0dXJuIFdFQlBJbWFnZURlY29kZXI6OmNy
ZWF0ZShhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgICAgICBy
ZXR1cm4gV0VCUEltYWdlRGVjb2Rlcjo6Y3JlYXRlKGRhdGEsIGFscGhhT3B0aW9uLCBnYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbik7CiAjZW5kaWYKIAogICAgIGlmIChtYXRjaGVzQk1QU2lnbmF0
dXJlKGNvbnRlbnRzKSkKLSAgICAgICAgcmV0dXJuIEJNUEltYWdlRGVjb2Rlcjo6Y3JlYXRlKGFs
cGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgICAgIHJldHVybiBC
TVBJbWFnZURlY29kZXI6OmNyZWF0ZShkYXRhLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclBy
b2ZpbGVPcHRpb24pOwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CkBAIC0xNzAsMTMgKzE3NSw5
NyBAQCB0ZW1wbGF0ZSA8TWF0Y2hUeXBlIHR5cGU+IGludCBnZXRTY2FsZWRWYWx1ZShjb25zdCBW
ZWN0b3I8aW50PiYgc2NhbGVkVmFsdWVzLCBpbgogCiB9CiAKK3NpemVfdCBJbWFnZURlY29kZXI6
OmJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVydGllcygpCit7CisgICAgcmV0dXJuIDA7Cit9
CisKK3ZvaWQgSW1hZ2VEZWNvZGVyOjpzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpCit7CisgICAgaWYgKG1fZW5jb2RlZERhdGFTdGF0dXMgPT0gRW5jb2Rl
ZERhdGFTdGF0dXM6OkVycm9yKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2RhdGEgPSAmZGF0
YTsKKyAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6VHlw
ZUF2YWlsYWJsZSkgeworICAgICAgICBtX2RlY29kaW5nU2l6ZUZyb21TZXREYXRhID0gdHJ1ZTsK
KyAgICAgICAgdHJ5RGVjb2RlU2l6ZShhbGxEYXRhUmVjZWl2ZWQpOworICAgICAgICBtX2RlY29k
aW5nU2l6ZUZyb21TZXREYXRhID0gZmFsc2U7CisgICAgfQorCisgICAgaWYgKG1fZW5jb2RlZERh
dGFTdGF0dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkVycm9yKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAoYWxsRGF0YVJlY2VpdmVkKSB7CisgICAgICAgIEFTU0VSVChtX2VuY29kZWREYXRh
U3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpTaXplQXZhaWxhYmxlKTsKKyAgICAgICAgbV9l
bmNvZGVkRGF0YVN0YXR1cyA9IEVuY29kZWREYXRhU3RhdHVzOjpDb21wbGV0ZTsKKyAgICB9Cit9
CisKK2Jvb2wgSW1hZ2VEZWNvZGVyOjppc0FsbERhdGFSZWNlaXZlZCgpIGNvbnN0Cit7CisgICAg
QVNTRVJUKCFtX2RlY29kaW5nU2l6ZUZyb21TZXREYXRhKTsKKyAgICByZXR1cm4gbV9lbmNvZGVk
RGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6Q29tcGxldGU7Cit9CisKK0VuY29kZWRE
YXRhU3RhdHVzIEltYWdlRGVjb2Rlcjo6ZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdAoreworICAg
IHJldHVybiBtX2VuY29kZWREYXRhU3RhdHVzOworfQorCitib29sIEltYWdlRGVjb2Rlcjo6c2V0
RmFpbGVkKCkKK3sKKyAgICAvLyBTZXRzIHRoZSAiZGVjb2RlIGZhaWx1cmUiIGZsYWcuIEZvciBj
YWxsZXIgY29udmVuaWVuY2UgKHNpbmNlIHNvCisgICAgLy8gbWFueSBjYWxsZXJzIHdhbnQgdG8g
cmV0dXJuIGZhbHNlIGFmdGVyIGNhbGxpbmcgdGhpcyksIHJldHVybnMgZmFsc2UKKyAgICAvLyB0
byBlbmFibGUgZWFzeSB0YWlsY2FsbGluZy4gU3ViY2xhc3NlcyBtYXkgb3ZlcnJpZGUgdGhpcyB0
byBhbHNvCisgICAgLy8gY2xlYW4gdXAgYW55IGxvY2FsIGRhdGEuCisgICAgbV9lbmNvZGVkRGF0
YVN0YXR1cyA9IEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcjsKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK1N0cmluZyBJbWFnZURlY29kZXI6OmZpbGVuYW1lRXh0ZW5zaW9uKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gU3RyaW5nKCk7Cit9CisKKy8vIFJldHVybnMgd2hldGhlciB0aGUgc2l6ZSBpcyBs
ZWdhbCAoaS5lLiBub3QgZ29pbmcgdG8gcmVzdWx0IGluCisvLyBvdmVyZmxvdyBlbHNld2hlcmUp
LiBJZiBub3QsIG1hcmtzIGRlY29kaW5nIGFzIGZhaWxlZC4KK2Jvb2wgSW1hZ2VEZWNvZGVyOjpz
ZXRTaXplKGNvbnN0IEludFNpemUmIHNpemUpCit7CisgICAgaWYgKEltYWdlQmFja2luZ1N0b3Jl
Ojppc092ZXJTaXplKHNpemUpKQorICAgICAgICByZXR1cm4gc2V0RmFpbGVkKCk7CisgICAgbV9z
aXplID0gc2l6ZTsKKyAgICBtX2VuY29kZWREYXRhU3RhdHVzID0gRW5jb2RlZERhdGFTdGF0dXM6
OlNpemVBdmFpbGFibGU7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3NpemVfdCBJbWFnZURlY29k
ZXI6OmZyYW1lQ291bnQoKSBjb25zdAoreworICAgIC8vIExhemlseS1kZWNvZGVzIGVub3VnaCBv
ZiB0aGUgaW1hZ2UgdG8gZ2V0IHRoZSBmcmFtZSBjb3VudCAoaWYKKyAgICAvLyBwb3NzaWJsZSks
IHdpdGhvdXQgZGVjb2RpbmcgdGhlIGluZGl2aWR1YWwgZnJhbWVzLgorICAgIC8vIEZJWE1FOiBS
aWdodCBub3cgdGhhdCBoYXMgdG8gYmUgZG9uZSBieSBlYWNoIHN1YmNsYXNzOyBmYWN0b3IgdGhl
CisgICAgLy8gZGVjb2RlIGNhbGwgb3V0IGFuZCB1c2UgaXQgaGVyZS4KKyAgICByZXR1cm4gMTsK
K30KKworUmVwZXRpdGlvbkNvdW50IEltYWdlRGVjb2Rlcjo6cmVwZXRpdGlvbkNvdW50KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gUmVwZXRpdGlvbkNvdW50Tm9uZTsKK30KKworc3RkOjpvcHRpb25h
bDxJbnRQb2ludD4gSW1hZ2VEZWNvZGVyOjpob3RTcG90KCkgY29uc3QKK3sKKyAgICAvLyBJZiB0
aGUgaW1hZ2UgaGFzIGEgY3Vyc29yIGhvdC1zcG90LCBzdG9yZXMgaXQgaW4gdGhlIGFyZ3VtZW50
CisgICAgLy8gYW5kIHJldHVybnMgdHJ1ZS4gT3RoZXJ3aXNlIHJldHVybnMgZmFsc2UuCisgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKyAgICAKIGJvb2wgSW1hZ2VEZWNvZGVyOjpmcmFtZUlz
Q29tcGxldGVBdEluZGV4KHNpemVfdCBpbmRleCkKIHsKICAgICBJbWFnZUZyYW1lKiBidWZmZXIg
PSBmcmFtZUJ1ZmZlckF0SW5kZXgoaW5kZXgpOwogICAgIHJldHVybiBidWZmZXIgJiYgYnVmZmVy
LT5pc0NvbXBsZXRlKCk7CiB9CiAKLWJvb2wgSW1hZ2VEZWNvZGVyOjpmcmFtZUhhc0FscGhhQXRJ
bmRleChzaXplX3QgaW5kZXgpIGNvbnN0Citib29sIEltYWdlRGVjb2Rlcjo6ZnJhbWVIYXNBbHBo
YUF0SW5kZXgoc2l6ZV90IGluZGV4KQogewogICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuc2l6
ZSgpIDw9IGluZGV4KQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE4NSw3ICsyNzQsNyBAQCBi
b29sIEltYWdlRGVjb2Rlcjo6ZnJhbWVIYXNBbHBoYUF0SW5kZXgoc2l6ZV90IGluZGV4KSBjb25z
dAogICAgIHJldHVybiB0cnVlOwogfQogCi11bnNpZ25lZCBJbWFnZURlY29kZXI6OmZyYW1lQnl0
ZXNBdEluZGV4KHNpemVfdCBpbmRleCkgY29uc3QKK3Vuc2lnbmVkIEltYWdlRGVjb2Rlcjo6ZnJh
bWVCeXRlc0F0SW5kZXgoc2l6ZV90IGluZGV4LCBTdWJzYW1wbGluZ0xldmVsKSBjb25zdAogewog
ICAgIGlmIChtX2ZyYW1lQnVmZmVyQ2FjaGUuc2l6ZSgpIDw9IGluZGV4KQogICAgICAgICByZXR1
cm4gMDsKQEAgLTIwOSw2ICsyOTgsMjYgQEAgZmxvYXQgSW1hZ2VEZWNvZGVyOjpmcmFtZUR1cmF0
aW9uQXRJbmRleChzaXplX3QgaW5kZXgpCiAgICAgcmV0dXJuIGR1cmF0aW9uOwogfQogCitJbWFn
ZU9yaWVudGF0aW9uIEltYWdlRGVjb2Rlcjo6ZnJhbWVPcmllbnRhdGlvbkF0SW5kZXgoc2l6ZV90
KSBjb25zdAoreworICAgIHJldHVybiBtX29yaWVudGF0aW9uOworfQorCitJbnRTaXplIEltYWdl
RGVjb2Rlcjo6ZnJhbWVTaXplQXRJbmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwpIGNvbnN0
Cit7CisgICAgLy8gVGhpcyB3aWxsIG9ubHkgZGlmZmVyIGZyb20gc2l6ZSgpIGZvciBJQ08gKHdo
ZXJlIGVhY2ggZnJhbWUgaXMgYQorICAgIC8vIGRpZmZlcmVudCBpY29uKSBvciBvdGhlciBmb3Jt
YXRzIHdoZXJlIGRpZmZlcmVudCBmcmFtZXMgYXJlIGRpZmZlcmVudAorICAgIC8vIHNpemVzLiBU
aGlzIGRvZXMgTk9UIGRpZmZlciBmcm9tIHNpemUoKSBmb3IgR0lGLCBzaW5jZSBkZWNvZGluZyBH
SUZzCisgICAgLy8gY29tcG9zaXRlcyBhbnkgc21hbGxlciBmcmFtZXMgYWdhaW5zdCBwcmV2aW91
cyBmcmFtZXMgdG8gY3JlYXRlIGZ1bGwtCisgICAgLy8gc2l6ZSBmcmFtZXMuCisgICAgcmV0dXJu
IHNpemUoKTsKK30KKworYm9vbCBJbWFnZURlY29kZXI6OmZyYW1lQWxsb3dTdWJzYW1wbGluZ0F0
SW5kZXgoc2l6ZV90KSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKwogTmF0aXZlSW1h
Z2VQdHIgSW1hZ2VEZWNvZGVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRleChzaXplX3QgaW5kZXgs
IFN1YnNhbXBsaW5nTGV2ZWwsIGNvbnN0IERlY29kaW5nT3B0aW9ucyYpCiB7CiAgICAgLy8gWmVy
by1oZWlnaHQgaW1hZ2VzIGNhbiBjYXVzZSBwcm9ibGVtcyBmb3Igc29tZSBwb3J0cy4gSWYgd2Ug
aGF2ZSBhbiBlbXB0eSBpbWFnZSBkaW1lbnNpb24sIGp1c3QgYmFpbC4KQEAgLTIyNiw2ICszMzUs
MTIgQEAgTmF0aXZlSW1hZ2VQdHIgSW1hZ2VEZWNvZGVyOjpjcmVhdGVGcmFtZUltYWdlQXRJbmRl
eChzaXplX3QgaW5kZXgsIFN1YnNhbXBsaW5nTGUKIAogdm9pZCBJbWFnZURlY29kZXI6OnByZXBh
cmVTY2FsZURhdGFJZk5lY2Vzc2FyeSgpCiB7CisjaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9X
Tl9TQU1QTElORykKKyAgICBzdGF0aWMgY29uc3QgaW50IE1heE51bVBpeGVscyB7IDEwMjQgKiAx
MDI0IH07CisjZWxzZQorICAgIHN0YXRpYyBjb25zdCBpbnQgTWF4TnVtUGl4ZWxzIHsgLTEgfTsK
KyNlbmRpZgorICAgIAogICAgIG1fc2NhbGVkID0gZmFsc2U7CiAgICAgbV9zY2FsZWRDb2x1bW5z
LmNsZWFyKCk7CiAgICAgbV9zY2FsZWRSb3dzLmNsZWFyKCk7CkBAIC0yMzMsMTEgKzM0OCwxMSBA
QCB2b2lkIEltYWdlRGVjb2Rlcjo6cHJlcGFyZVNjYWxlRGF0YUlmTmVjZXNzYXJ5KCkKICAgICBp
bnQgd2lkdGggPSBzaXplKCkud2lkdGgoKTsKICAgICBpbnQgaGVpZ2h0ID0gc2l6ZSgpLmhlaWdo
dCgpOwogICAgIGludCBudW1QaXhlbHMgPSBoZWlnaHQgKiB3aWR0aDsKLSAgICBpZiAobV9tYXhO
dW1QaXhlbHMgPD0gMCB8fCBudW1QaXhlbHMgPD0gbV9tYXhOdW1QaXhlbHMpCisgICAgaWYgKE1h
eE51bVBpeGVscyA8PSAwIHx8IG51bVBpeGVscyA8PSBNYXhOdW1QaXhlbHMpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIG1fc2NhbGVkID0gdHJ1ZTsKLSAgICBkb3VibGUgc2NhbGUgPSBzcXJ0KG1f
bWF4TnVtUGl4ZWxzIC8gKGRvdWJsZSludW1QaXhlbHMpOworICAgIGRvdWJsZSBzY2FsZSA9IHNx
cnQoTWF4TnVtUGl4ZWxzIC8gKGRvdWJsZSludW1QaXhlbHMpOwogICAgIGZpbGxTY2FsZWRWYWx1
ZXMobV9zY2FsZWRDb2x1bW5zLCBzY2FsZSwgd2lkdGgpOwogICAgIGZpbGxTY2FsZWRWYWx1ZXMo
bV9zY2FsZWRSb3dzLCBzY2FsZSwgaGVpZ2h0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDM0MmNkYjBkZGY2Li4wMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAorKysgL2Rldi9udWxs
CkBAIC0xLDIzMiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDE2IEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAwOSBU
b3JjaCBNb2JpbGUsIEluYy4KLSAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExp
bWl0ZWQgMjAwOS0yMDEwLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAy
MDA5IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lu
Y2x1ZGUgIkltYWdlRnJhbWUuaCIKLSNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiSW50
U2l6ZS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVm
ZmVyLmgiCi0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvT3B0aW9u
YWwuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgot
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LS8vIEltYWdlRGVjb2RlciBpcyBhIGJhc2UgZm9yIGFsbCBmb3JtYXQtc3BlY2lmaWMgZGVjb2Rl
cnMKLS8vIChlLmcuIEpQRUdJbWFnZURlY29kZXIpLiBUaGlzIGJhc2UgbWFuYWdlcyB0aGUgSW1h
Z2VGcmFtZSBjYWNoZS4KLS8vCi0vLyBFTkFCTEUoSU1BR0VfREVDT0RFUl9ET1dOX1NBTVBMSU5H
KSBhbGxvd3MgaW1hZ2UgZGVjb2RlcnMgdG8gZG93bnNhbXBsZQotLy8gYXQgZGVjb2RlIHRpbWUu
IEltYWdlIGRlY29kZXJzIHdpbGwgZG93bnNhbXBsZSBhbnkgaW1hZ2VzIGxhcmdlciB0aGFuCi0v
LyB8bV9tYXhOdW1QaXhlbHN8LiBGSVhNRTogTm90IHlldCBzdXBwb3J0ZWQgYnkgYWxsIGRlY29k
ZXJzLgotY2xhc3MgSW1hZ2VEZWNvZGVyIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPElt
YWdlRGVjb2Rlcj4gewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEltYWdlRGVjb2Rlcik7IFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotICAgIEltYWdlRGVjb2RlcihBbHBoYU9w
dGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pCi0gICAgICAgIDogbV9wcmVtdWx0aXBseUFscGhhKGFscGhhT3B0aW9u
ID09IEFscGhhT3B0aW9uOjpQcmVtdWx0aXBsaWVkKQotICAgICAgICAsIG1faWdub3JlR2FtbWFB
bmRDb2xvclByb2ZpbGUoZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gPT0gR2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb246Oklnbm9yZWQpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgfklt
YWdlRGVjb2RlcigpCi0gICAgewotICAgIH0KLQotICAgIC8vIFJldHVybnMgbnVsbHB0ciBpZiB3
ZSBjYW4ndCBzbmlmZiBhIHN1cHBvcnRlZCB0eXBlIGZyb20gdGhlIHByb3ZpZGVkIGRhdGEgKHBv
c3NpYmx5Ci0gICAgLy8gYmVjYXVzZSB0aGVyZSBpc24ndCBlbm91Z2ggZGF0YSB5ZXQpLgotICAg
IHN0YXRpYyBSZWZQdHI8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBB
bHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOwotCi0gICAgdmlydHVhbCBT
dHJpbmcgZmlsZW5hbWVFeHRlbnNpb24oKSBjb25zdCA9IDA7Ci0KLSAgICBib29sIHByZW11bHRp
cGx5QWxwaGEoKSBjb25zdCB7IHJldHVybiBtX3ByZW11bHRpcGx5QWxwaGE7IH0KLQotICAgIGJv
b2wgaXNBbGxEYXRhUmVjZWl2ZWQoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKCFtX2Rl
Y29kaW5nU2l6ZUZyb21TZXREYXRhKTsKLSAgICAgICAgcmV0dXJuIG1fZW5jb2RlZERhdGFTdGF0
dXMgPT0gRW5jb2RlZERhdGFTdGF0dXM6OkNvbXBsZXRlOwotICAgIH0KLQotICAgIHZpcnR1YWwg
dm9pZCBzZXREYXRhKFNoYXJlZEJ1ZmZlciYgZGF0YSwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQpCi0g
ICAgewotICAgICAgICBpZiAobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1
czo6RXJyb3IpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbV9kYXRhID0gJmRhdGE7
Ci0gICAgICAgIGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpU
eXBlQXZhaWxhYmxlKSB7Ci0gICAgICAgICAgICBtX2RlY29kaW5nU2l6ZUZyb21TZXREYXRhID0g
dHJ1ZTsKLSAgICAgICAgICAgIHRyeURlY29kZVNpemUoYWxsRGF0YVJlY2VpdmVkKTsKLSAgICAg
ICAgICAgIG1fZGVjb2RpbmdTaXplRnJvbVNldERhdGEgPSBmYWxzZTsKLSAgICAgICAgfQotCi0g
ICAgICAgIGlmIChtX2VuY29kZWREYXRhU3RhdHVzID09IEVuY29kZWREYXRhU3RhdHVzOjpFcnJv
cikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAoYWxsRGF0YVJlY2VpdmVkKSB7
Ci0gICAgICAgICAgICBBU1NFUlQobV9lbmNvZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0
YXR1czo6U2l6ZUF2YWlsYWJsZSk7Ci0gICAgICAgICAgICBtX2VuY29kZWREYXRhU3RhdHVzID0g
RW5jb2RlZERhdGFTdGF0dXM6OkNvbXBsZXRlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgRW5j
b2RlZERhdGFTdGF0dXMgZW5jb2RlZERhdGFTdGF0dXMoKSBjb25zdCB7IHJldHVybiBtX2VuY29k
ZWREYXRhU3RhdHVzOyB9Ci0KLSAgICBib29sIGlzU2l6ZUF2YWlsYWJsZSgpIHsgcmV0dXJuIG1f
ZW5jb2RlZERhdGFTdGF0dXMgPj0gRW5jb2RlZERhdGFTdGF0dXM6OlNpemVBdmFpbGFibGU7IH0K
LQotICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkgeyByZXR1cm4gaXNTaXplQXZhaWxhYmxlKCkg
PyBtX3NpemUgOiBJbnRTaXplKCk7IH0KLQotICAgIEludFNpemUgc2NhbGVkU2l6ZSgpCi0gICAg
ewotICAgICAgICByZXR1cm4gbV9zY2FsZWQgPyBJbnRTaXplKG1fc2NhbGVkQ29sdW1ucy5zaXpl
KCksIG1fc2NhbGVkUm93cy5zaXplKCkpIDogc2l6ZSgpOwotICAgIH0KLQotICAgIC8vIFRoaXMg
d2lsbCBvbmx5IGRpZmZlciBmcm9tIHNpemUoKSBmb3IgSUNPICh3aGVyZSBlYWNoIGZyYW1lIGlz
IGEKLSAgICAvLyBkaWZmZXJlbnQgaWNvbikgb3Igb3RoZXIgZm9ybWF0cyB3aGVyZSBkaWZmZXJl
bnQgZnJhbWVzIGFyZSBkaWZmZXJlbnQKLSAgICAvLyBzaXplcy4gVGhpcyBkb2VzIE5PVCBkaWZm
ZXIgZnJvbSBzaXplKCkgZm9yIEdJRiwgc2luY2UgZGVjb2RpbmcgR0lGcwotICAgIC8vIGNvbXBv
c2l0ZXMgYW55IHNtYWxsZXIgZnJhbWVzIGFnYWluc3QgcHJldmlvdXMgZnJhbWVzIHRvIGNyZWF0
ZSBmdWxsLQotICAgIC8vIHNpemUgZnJhbWVzLgotICAgIHZpcnR1YWwgSW50U2l6ZSBmcmFtZVNp
emVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biBzaXplKCk7Ci0gICAgfQotCi0gICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBzaXplIGlzIGxl
Z2FsIChpLmUuIG5vdCBnb2luZyB0byByZXN1bHQgaW4KLSAgICAvLyBvdmVyZmxvdyBlbHNld2hl
cmUpLiBJZiBub3QsIG1hcmtzIGRlY29kaW5nIGFzIGZhaWxlZC4KLSAgICB2aXJ0dWFsIGJvb2wg
c2V0U2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQotICAgIHsKLSAgICAgICAgaWYgKEltYWdlQmFj
a2luZ1N0b3JlOjppc092ZXJTaXplKHNpemUpKQotICAgICAgICAgICAgcmV0dXJuIHNldEZhaWxl
ZCgpOwotICAgICAgICBtX3NpemUgPSBzaXplOwotICAgICAgICBtX2VuY29kZWREYXRhU3RhdHVz
ID0gRW5jb2RlZERhdGFTdGF0dXM6OlNpemVBdmFpbGFibGU7Ci0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0KLQotICAgIC8vIExhemlseS1kZWNvZGVzIGVub3VnaCBvZiB0aGUgaW1hZ2UgdG8g
Z2V0IHRoZSBmcmFtZSBjb3VudCAoaWYKLSAgICAvLyBwb3NzaWJsZSksIHdpdGhvdXQgZGVjb2Rp
bmcgdGhlIGluZGl2aWR1YWwgZnJhbWVzLgotICAgIC8vIEZJWE1FOiBSaWdodCBub3cgdGhhdCBo
YXMgdG8gYmUgZG9uZSBieSBlYWNoIHN1YmNsYXNzOyBmYWN0b3IgdGhlCi0gICAgLy8gZGVjb2Rl
IGNhbGwgb3V0IGFuZCB1c2UgaXQgaGVyZS4KLSAgICB2aXJ0dWFsIHNpemVfdCBmcmFtZUNvdW50
KCkgY29uc3QgeyByZXR1cm4gMTsgfQotCi0gICAgdmlydHVhbCBSZXBldGl0aW9uQ291bnQgcmVw
ZXRpdGlvbkNvdW50KCkgY29uc3QgeyByZXR1cm4gUmVwZXRpdGlvbkNvdW50Tm9uZTsgfQotCi0g
ICAgLy8gRGVjb2RlcyBhcyBtdWNoIG9mIHRoZSByZXF1ZXN0ZWQgZnJhbWUgYXMgcG9zc2libGUs
IGFuZCByZXR1cm5zIGFuCi0gICAgLy8gSW1hZ2VEZWNvZGVyLW93bmVkIHBvaW50ZXIuCi0gICAg
dmlydHVhbCBJbWFnZUZyYW1lKiBmcmFtZUJ1ZmZlckF0SW5kZXgoc2l6ZV90KSA9IDA7Ci0KLSAg
ICBib29sIGZyYW1lSXNDb21wbGV0ZUF0SW5kZXgoc2l6ZV90KTsKLQotICAgIC8vIE1ha2UgdGhl
IGJlc3QgZWZmb3J0IGd1ZXNzIHRvIGNoZWNrIGlmIHRoZSByZXF1ZXN0ZWQgZnJhbWUgaGFzIGFs
cGhhIGNoYW5uZWwuCi0gICAgYm9vbCBmcmFtZUhhc0FscGhhQXRJbmRleChzaXplX3QpIGNvbnN0
OwotCi0gICAgLy8gTnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBkZWNvZGVkIGZyYW1lIHJlcXVlc3Rl
ZC4gUmV0dXJuIDAgaWYgbm90IHlldCBkZWNvZGVkLgotICAgIHVuc2lnbmVkIGZyYW1lQnl0ZXNB
dEluZGV4KHNpemVfdCkgY29uc3Q7Ci0gICAgCi0gICAgZmxvYXQgZnJhbWVEdXJhdGlvbkF0SW5k
ZXgoc2l6ZV90KTsKLSAgICAKLSAgICBOYXRpdmVJbWFnZVB0ciBjcmVhdGVGcmFtZUltYWdlQXRJ
bmRleChzaXplX3QsIFN1YnNhbXBsaW5nTGV2ZWwgPSBTdWJzYW1wbGluZ0xldmVsOjpEZWZhdWx0
LCBjb25zdCBEZWNvZGluZ09wdGlvbnMmID0gRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cyk7Ci0K
LSAgICB2b2lkIHNldElnbm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlKGJvb2wgZmxhZykgeyBtX2ln
bm9yZUdhbW1hQW5kQ29sb3JQcm9maWxlID0gZmxhZzsgfQotICAgIGJvb2wgaWdub3Jlc0dhbW1h
QW5kQ29sb3JQcm9maWxlKCkgY29uc3QgeyByZXR1cm4gbV9pZ25vcmVHYW1tYUFuZENvbG9yUHJv
ZmlsZTsgfQotCi0gICAgSW1hZ2VPcmllbnRhdGlvbiBmcmFtZU9yaWVudGF0aW9uQXRJbmRleChz
aXplX3QpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50YXRpb247IH0KLSAgICAKLSAgICBib29sIGZy
YW1lQWxsb3dTdWJzYW1wbGluZ0F0SW5kZXgoc2l6ZV90KSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQotCi0gICAgZW51bSB7IElDQ0NvbG9yUHJvZmlsZUhlYWRlckxlbmd0aCA9IDEyOCB9OwotCi0g
ICAgc3RhdGljIGJvb2wgcmdiQ29sb3JQcm9maWxlKGNvbnN0IGNoYXIqIHByb2ZpbGVEYXRhLCB1
bnNpZ25lZCBwcm9maWxlTGVuZ3RoKQotICAgIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChwcm9m
aWxlTGVuZ3RoLCBwcm9maWxlTGVuZ3RoID49IElDQ0NvbG9yUHJvZmlsZUhlYWRlckxlbmd0aCk7
Ci0KLSAgICAgICAgcmV0dXJuICFtZW1jbXAoJnByb2ZpbGVEYXRhWzE2XSwgIlJHQiAiLCA0KTsK
LSAgICB9Ci0KLSAgICBzdGF0aWMgc2l6ZV90IGJ5dGVzRGVjb2RlZFRvRGV0ZXJtaW5lUHJvcGVy
dGllcygpIHsgcmV0dXJuIDA7IH0KLSAgICAKLSAgICBzdGF0aWMgU3Vic2FtcGxpbmdMZXZlbCBz
dWJzYW1wbGluZ0xldmVsRm9yU2NhbGUoZmxvYXQsIFN1YnNhbXBsaW5nTGV2ZWwpIHsgcmV0dXJu
IFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQ7IH0KLQotICAgIHN0YXRpYyBib29sIGlucHV0RGV2
aWNlQ29sb3JQcm9maWxlKGNvbnN0IGNoYXIqIHByb2ZpbGVEYXRhLCB1bnNpZ25lZCBwcm9maWxl
TGVuZ3RoKQotICAgIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChwcm9maWxlTGVuZ3RoLCBwcm9m
aWxlTGVuZ3RoID49IElDQ0NvbG9yUHJvZmlsZUhlYWRlckxlbmd0aCk7Ci0KLSAgICAgICAgcmV0
dXJuICFtZW1jbXAoJnByb2ZpbGVEYXRhWzEyXSwgIm1udHIiLCA0KSB8fCAhbWVtY21wKCZwcm9m
aWxlRGF0YVsxMl0sICJzY25yIiwgNCk7Ci0gICAgfQotCi0gICAgLy8gU2V0cyB0aGUgImRlY29k
ZSBmYWlsdXJlIiBmbGFnLiBGb3IgY2FsbGVyIGNvbnZlbmllbmNlIChzaW5jZSBzbwotICAgIC8v
IG1hbnkgY2FsbGVycyB3YW50IHRvIHJldHVybiBmYWxzZSBhZnRlciBjYWxsaW5nIHRoaXMpLCBy
ZXR1cm5zIGZhbHNlCi0gICAgLy8gdG8gZW5hYmxlIGVhc3kgdGFpbGNhbGxpbmcuIFN1YmNsYXNz
ZXMgbWF5IG92ZXJyaWRlIHRoaXMgdG8gYWxzbwotICAgIC8vIGNsZWFuIHVwIGFueSBsb2NhbCBk
YXRhLgotICAgIHZpcnR1YWwgYm9vbCBzZXRGYWlsZWQoKQotICAgIHsKLSAgICAgICAgbV9lbmNv
ZGVkRGF0YVN0YXR1cyA9IEVuY29kZWREYXRhU3RhdHVzOjpFcnJvcjsKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KLQotICAgIGJvb2wgZmFpbGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmNv
ZGVkRGF0YVN0YXR1cyA9PSBFbmNvZGVkRGF0YVN0YXR1czo6RXJyb3I7IH0KLQotICAgIC8vIENs
ZWFycyBkZWNvZGVkIHBpeGVsIGRhdGEgZnJvbSBiZWZvcmUgdGhlIHByb3ZpZGVkIGZyYW1lIHVu
bGVzcyB0aGF0Ci0gICAgLy8gZGF0YSBtYXkgYmUgbmVlZGVkIHRvIGRlY29kZSBmdXR1cmUgZnJh
bWVzIChlLmcuIGR1ZSB0byBHSUYgZnJhbWUKLSAgICAvLyBjb21wb3NpdGluZykuCi0gICAgdmly
dHVhbCB2b2lkIGNsZWFyRnJhbWVCdWZmZXJDYWNoZShzaXplX3QpIHsgfQotCi0gICAgLy8gSWYg
dGhlIGltYWdlIGhhcyBhIGN1cnNvciBob3Qtc3BvdCwgc3RvcmVzIGl0IGluIHRoZSBhcmd1bWVu
dAotICAgIC8vIGFuZCByZXR1cm5zIHRydWUuIE90aGVyd2lzZSByZXR1cm5zIGZhbHNlLgotICAg
IHZpcnR1YWwgc3RkOjpvcHRpb25hbDxJbnRQb2ludD4gaG90U3BvdCgpIGNvbnN0IHsgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgdm9pZCBwcmVwYXJlU2NhbGVEYXRh
SWZOZWNlc3NhcnkoKTsKLSAgICBpbnQgdXBwZXJCb3VuZFNjYWxlZFgoaW50IG9yaWdYLCBpbnQg
c2VhcmNoU3RhcnQgPSAwKTsKLSAgICBpbnQgbG93ZXJCb3VuZFNjYWxlZFgoaW50IG9yaWdYLCBp
bnQgc2VhcmNoU3RhcnQgPSAwKTsKLSAgICBpbnQgdXBwZXJCb3VuZFNjYWxlZFkoaW50IG9yaWdZ
LCBpbnQgc2VhcmNoU3RhcnQgPSAwKTsKLSAgICBpbnQgbG93ZXJCb3VuZFNjYWxlZFkoaW50IG9y
aWdZLCBpbnQgc2VhcmNoU3RhcnQgPSAwKTsKLSAgICBpbnQgc2NhbGVkWShpbnQgb3JpZ1ksIGlu
dCBzZWFyY2hTdGFydCA9IDApOwotCi0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9kYXRhOyAv
LyBUaGUgZW5jb2RlZCBkYXRhLgotICAgIFZlY3RvcjxJbWFnZUZyYW1lLCAxPiBtX2ZyYW1lQnVm
ZmVyQ2FjaGU7Ci0gICAgYm9vbCBtX3NjYWxlZCB7IGZhbHNlIH07Ci0gICAgVmVjdG9yPGludD4g
bV9zY2FsZWRDb2x1bW5zOwotICAgIFZlY3RvcjxpbnQ+IG1fc2NhbGVkUm93czsKLSAgICBib29s
IG1fcHJlbXVsdGlwbHlBbHBoYTsKLSAgICBib29sIG1faWdub3JlR2FtbWFBbmRDb2xvclByb2Zp
bGU7Ci0gICAgSW1hZ2VPcmllbnRhdGlvbiBtX29yaWVudGF0aW9uOwotCi1wcml2YXRlOgotICAg
IHZpcnR1YWwgdm9pZCB0cnlEZWNvZGVTaXplKGJvb2wpID0gMDsKLQotICAgIEludFNpemUgbV9z
aXplOwotICAgIEVuY29kZWREYXRhU3RhdHVzIG1fZW5jb2RlZERhdGFTdGF0dXMgeyBFbmNvZGVk
RGF0YVN0YXR1czo6VHlwZUF2YWlsYWJsZSB9OwotICAgIGJvb2wgbV9kZWNvZGluZ1NpemVGcm9t
U2V0RGF0YSB7IGZhbHNlIH07Ci0jaWYgRU5BQkxFKElNQUdFX0RFQ09ERVJfRE9XTl9TQU1QTElO
RykKLSAgICBzdGF0aWMgY29uc3QgaW50IG1fbWF4TnVtUGl4ZWxzIHsgMTAyNCAqIDEwMjQgfTsK
LSNlbHNlCi0gICAgc3RhdGljIGNvbnN0IGludCBtX21heE51bVBpeGVscyB7IC0xIH07Ci0jZW5k
aWYKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9CTVBJbWFnZURlY29kZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5j
cHAKaW5kZXggMTNiNWMwODBjYzcuLjUzOTg2ZWMxYWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAvQk1QSW1hZ2VEZWNv
ZGVyLmNwcApAQCAtNDAsOCArNDAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAvLyBkb24ndCBw
YWNrKS4KIHN0YXRpYyBjb25zdCBzaXplX3Qgc2l6ZU9mRmlsZUhlYWRlciA9IDE0OwogCi1CTVBJ
bWFnZURlY29kZXI6OkJNUEltYWdlRGVjb2RlcihBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2Ft
bWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCi0gICAg
OiBJbWFnZURlY29kZXIoYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQor
Qk1QSW1hZ2VEZWNvZGVyOjpCTVBJbWFnZURlY29kZXIoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBo
YU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24pCisgICAgOiBJbWFnZURlY29kZXIoZGF0YSwgYWxwaGFPcHRpb24s
IGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgICwgbV9kZWNvZGVkT2Zmc2V0KDApCiB7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9i
bXAvQk1QSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9ibXAvQk1QSW1hZ2VEZWNvZGVyLmgKaW5kZXggYzYyNzY5MGE4MzAuLjYyMDc3Mjg5MTJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9ibXAv
Qk1QSW1hZ2VEZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvYm1wL0JNUEltYWdlRGVjb2Rlci5oCkBAIC0zNyw5ICszNyw5IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAvLyBUaGlzIGNsYXNzIGRlY29kZXMgdGhlIEJNUCBpbWFnZSBmb3JtYXQu
CiAgICAgY2xhc3MgQk1QSW1hZ2VEZWNvZGVyIGZpbmFsIDogcHVibGljIEltYWdlRGVjb2RlciB7
CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUmVmPEltYWdlRGVjb2Rlcj4gY3JlYXRlKEFs
cGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbikKKyAgICAgICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXI+IGNy
ZWF0ZShTaGFyZWRCdWZmZXImIGRhdGEsIEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbiBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQk1QSW1hZ2VEZWNvZGVyKGFscGhh
T3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOworICAgICAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQk1QSW1hZ2VEZWNvZGVyKGRhdGEsIGFscGhhT3B0aW9uLCBnYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbikpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gSW1hZ2VEZWNv
ZGVyCkBAIC01Miw3ICs1Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBz
ZXRGYWlsZWQoKSBvdmVycmlkZTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEJNUEltYWdlRGVj
b2RlcihBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgICAgICBC
TVBJbWFnZURlY29kZXIoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24pOwogICAgICAgICB2b2lkIHRyeURlY29kZVNpemUoYm9vbCBhbGxE
YXRhUmVjZWl2ZWQpIG92ZXJyaWRlIHsgZGVjb2RlKHRydWUsIGFsbERhdGFSZWNlaXZlZCk7IH0K
IAogICAgICAgICBpbmxpbmUgdWludDMyX3QgcmVhZFVpbnQzMihpbnQgb2Zmc2V0KSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJ
RkltYWdlRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVy
cy9naWYvR0lGSW1hZ2VEZWNvZGVyLmNwcAppbmRleCBmZDBjYzc1MDk5Zi4uOTZhMWNmMTg4Nzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2dpZi9H
SUZJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuY3BwCkBAIC0zMSw4ICszMSw4IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotR0lGSW1hZ2VEZWNvZGVyOjpHSUZJbWFnZURlY29kZXIoQWxwaGFP
cHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uKQotICAgIDogSW1hZ2VEZWNvZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFu
ZENvbG9yUHJvZmlsZU9wdGlvbikKK0dJRkltYWdlRGVjb2Rlcjo6R0lGSW1hZ2VEZWNvZGVyKFNo
YXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAgIDogSW1hZ2VEZWNv
ZGVyKGRhdGEsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKIHsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lm
L0dJRkltYWdlRGVjb2Rlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvZ2lmL0dJRkltYWdlRGVjb2Rlci5oCmluZGV4IGQ2Y2JhMzlkYmJlLi5iNTJmNDUzNDgxOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvZ2lmL0dJ
RkltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2dpZi9HSUZJbWFnZURlY29kZXIuaApAQCAtMzUsOSArMzUsOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgLy8gVGhpcyBjbGFzcyBkZWNvZGVzIHRoZSBHSUYgaW1hZ2UgZm9ybWF0Lgog
ICAgIGNsYXNzIEdJRkltYWdlRGVjb2RlciBmaW5hbCA6IHB1YmxpYyBJbWFnZURlY29kZXIgewog
ICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFJlZjxJbWFnZURlY29kZXI+IGNyZWF0ZShBbHBo
YU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24pCisgICAgICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyPiBjcmVh
dGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEdJRkltYWdlRGVjb2RlcihhbHBoYU9w
dGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKKyAgICAgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEdJRkltYWdlRGVjb2RlcihkYXRhLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24pKTsKICAgICAgICAgfQogCiAgICAgICAgIHZpcnR1YWwgfkdJRklt
YWdlRGVjb2RlcigpOwpAQCAtNjMsNyArNjMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZvaWQgZ2lmQ29tcGxldGUoKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEdJRkltYWdl
RGVjb2RlcihBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pOworICAgICAg
ICBHSUZJbWFnZURlY29kZXIoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFB
bmRDb2xvclByb2ZpbGVPcHRpb24pOwogICAgICAgICB2b2lkIHRyeURlY29kZVNpemUoYm9vbCBh
bGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlIHsgZGVjb2RlKDAsIEdJRlNpemVRdWVyeSwgYWxsRGF0
YVJlY2VpdmVkKTsgfQogCiAgICAgICAgIC8vIElmIHRoZSBxdWVyeSBpcyBHSUZGdWxsUXVlcnks
IGRlY29kZXMgdGhlIGltYWdlIHVwIHRvIChidXQgbm90CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9JQ09JbWFnZURlY29kZXIu
Y3BwCmluZGV4IDM2M2FlMjgzZDM0Li42ZGNlOTgxMDIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVjb2Rlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvaWNvL0lDT0ltYWdlRGVj
b2Rlci5jcHAKQEAgLTQ0LDggKzQ0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogc3RhdGljIGNv
bnN0IHNpemVfdCBzaXplT2ZEaXJlY3RvcnkgPSA2Owogc3RhdGljIGNvbnN0IHNpemVfdCBzaXpl
T2ZEaXJFbnRyeSA9IDE2OwogCi1JQ09JbWFnZURlY29kZXI6OklDT0ltYWdlRGVjb2RlcihBbHBo
YU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRD
b2xvclByb2ZpbGVPcHRpb24pCi0gICAgOiBJbWFnZURlY29kZXIoYWxwaGFPcHRpb24sIGdhbW1h
QW5kQ29sb3JQcm9maWxlT3B0aW9uKQorSUNPSW1hZ2VEZWNvZGVyOjpJQ09JbWFnZURlY29kZXIo
U2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCisgICAgOiBJbWFnZURl
Y29kZXIoZGF0YSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAg
ICwgbV9kZWNvZGVkT2Zmc2V0KDApCiB7CiB9CkBAIC02OSwxMiArNjksMTIgQEAgdm9pZCBJQ09J
bWFnZURlY29kZXI6OnNldERhdGEoU2hhcmVkQnVmZmVyJiBkYXRhLCBib29sIGFsbERhdGFSZWNl
aXZlZCkKICAgICAgICAgc2V0RGF0YUZvclBOR0RlY29kZXJBdEluZGV4KGkpOwogfQogCi1JbnRT
aXplIElDT0ltYWdlRGVjb2Rlcjo6c2l6ZSgpCitJbnRTaXplIElDT0ltYWdlRGVjb2Rlcjo6c2l6
ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZnJhbWVTaXplLmlzRW1wdHkoKSA/IEltYWdlRGVj
b2Rlcjo6c2l6ZSgpIDogbV9mcmFtZVNpemU7CiB9CiAKLUludFNpemUgSUNPSW1hZ2VEZWNvZGVy
OjpmcmFtZVNpemVBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2FtcGxpbmdMZXZlbCkKK0ludFNp
emUgSUNPSW1hZ2VEZWNvZGVyOjpmcmFtZVNpemVBdEluZGV4KHNpemVfdCBpbmRleCwgU3Vic2Ft
cGxpbmdMZXZlbCkgY29uc3QKIHsKICAgICByZXR1cm4gKGluZGV4ICYmIChpbmRleCA8IG1fZGly
RW50cmllcy5zaXplKCkpKSA/IG1fZGlyRW50cmllc1tpbmRleF0ubV9zaXplIDogc2l6ZSgpOwog
fQpAQCAtMjA4LDcgKzIwOCw3IEBAIGJvb2wgSUNPSW1hZ2VEZWNvZGVyOjpkZWNvZGVBdEluZGV4
KHNpemVfdCBpbmRleCkKICAgICB9CiAKICAgICBpZiAoIW1fcG5nRGVjb2RlcnNbaW5kZXhdKSB7
Ci0gICAgICAgIG1fcG5nRGVjb2RlcnNbaW5kZXhdID0gUE5HSW1hZ2VEZWNvZGVyOjpjcmVhdGUo
bV9wcmVtdWx0aXBseUFscGhhID8gQWxwaGFPcHRpb246OlByZW11bHRpcGxpZWQgOiBBbHBoYU9w
dGlvbjo6Tm90UHJlbXVsdGlwbGllZCwgbV9pZ25vcmVHYW1tYUFuZENvbG9yUHJvZmlsZSA/IEdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uOjpJZ25vcmVkIDogR2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb246OkFwcGxpZWQpOworICAgICAgICBtX3BuZ0RlY29kZXJzW2luZGV4XSA9IFBOR0ltYWdl
RGVjb2Rlcjo6Y3JlYXRlKCptX2RhdGEsIG1fcHJlbXVsdGlwbHlBbHBoYSA/IEFscGhhT3B0aW9u
OjpQcmVtdWx0aXBsaWVkIDogQWxwaGFPcHRpb246Ok5vdFByZW11bHRpcGxpZWQsIG1faWdub3Jl
R2FtbWFBbmRDb2xvclByb2ZpbGUgPyBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbjo6SWdub3Jl
ZCA6IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uOjpBcHBsaWVkKTsKICAgICAgICAgc2V0RGF0
YUZvclBOR0RlY29kZXJBdEluZGV4KGluZGV4KTsKICAgICB9CiAgICAgLy8gRmFpbCBpZiB0aGUg
c2l6ZSB0aGUgUE5HSW1hZ2VEZWNvZGVyIGNhbGN1bGF0ZWQgZG9lcyBub3QgbWF0Y2ggdGhlIHNp
emUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2lj
by9JQ09JbWFnZURlY29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL2ljby9JQ09JbWFnZURlY29kZXIuaAppbmRleCBlNGJiNjBiOTg4MS4uMjZjOGI3MjczMTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2ljby9J
Q09JbWFnZURlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNv
ZGVycy9pY28vSUNPSW1hZ2VEZWNvZGVyLmgKQEAgLTM2LDkgKzM2LDkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIC8vIFRoaXMgY2xhc3MgZGVjb2RlcyB0aGUgSUNPIGFuZCBDVVIgaW1hZ2Ug
Zm9ybWF0cy4KICAgICBjbGFzcyBJQ09JbWFnZURlY29kZXIgZmluYWwgOiBwdWJsaWMgSW1hZ2VE
ZWNvZGVyIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyPiBj
cmVhdGUoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9u
IGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAgICAgICBzdGF0aWMgUmVmPEltYWdlRGVj
b2Rlcj4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24s
IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQog
ICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJQ09JbWFnZURlY29k
ZXIoYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CisgICAgICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJQ09JbWFnZURlY29kZXIoZGF0YSwgYWxwaGFPcHRpb24s
IGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKSk7CiAgICAgICAgIH0KIAogICAgICAgICB2aXJ0
dWFsIH5JQ09JbWFnZURlY29kZXIoKTsKQEAgLTQ2LDggKzQ2LDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICAvLyBJbWFnZURlY29kZXIKICAgICAgICAgU3RyaW5nIGZpbGVuYW1lRXh0
ZW5zaW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQVNDSUlMaXRlcmFsKCJpY28iKTsgfQog
ICAgICAgICB2b2lkIHNldERhdGEoU2hhcmVkQnVmZmVyJiwgYm9vbCBhbGxEYXRhUmVjZWl2ZWQp
IG92ZXJyaWRlOwotICAgICAgICBJbnRTaXplIHNpemUoKSBvdmVycmlkZTsKLSAgICAgICAgSW50
U2l6ZSBmcmFtZVNpemVBdEluZGV4KHNpemVfdCwgU3Vic2FtcGxpbmdMZXZlbCkgb3ZlcnJpZGU7
CisgICAgICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgICAgICBJbnRTaXpl
IGZyYW1lU2l6ZUF0SW5kZXgoc2l6ZV90LCBTdWJzYW1wbGluZ0xldmVsKSBjb25zdCBvdmVycmlk
ZTsKICAgICAgICAgYm9vbCBzZXRTaXplKGNvbnN0IEludFNpemUmKSBvdmVycmlkZTsKICAgICAg
ICAgc2l6ZV90IGZyYW1lQ291bnQoKSBjb25zdCBvdmVycmlkZTsKICAgICAgICAgSW1hZ2VGcmFt
ZSogZnJhbWVCdWZmZXJBdEluZGV4KHNpemVfdCkgb3ZlcnJpZGU7CkBAIC03Niw3ICs3Niw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHVpbnQzMl90IG1faW1hZ2VPZmZzZXQ7
CiAgICAgICAgIH07CiAKLSAgICAgICAgSUNPSW1hZ2VEZWNvZGVyKEFscGhhT3B0aW9uLCBHYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgICAgIElDT0ltYWdlRGVjb2RlcihTaGFyZWRC
dWZmZXImIGRhdGEsIEFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CiAg
ICAgICAgIHZvaWQgdHJ5RGVjb2RlU2l6ZShib29sIGFsbERhdGFSZWNlaXZlZCkgb3ZlcnJpZGUg
eyBkZWNvZGUoMCwgdHJ1ZSwgYWxsRGF0YVJlY2VpdmVkKTsgfQogCiAgICAgICAgIC8vIFJldHVy
bnMgdHJ1ZSBpZiB8YXwgaXMgYSBwcmVmZXJhYmxlIGljb24gZW50cnkgdG8gfGJ8LgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvanBlZy9KUEVHSW1h
Z2VEZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pw
ZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggODZhZTA0Y2Y2MGYuLjNmNTkyMmVhOGQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQ
RUdJbWFnZURlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRl
Y29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5jcHAKQEAgLTUwMSw4ICs1MDEsOCBAQCB2b2lk
IHRlcm1fc291cmNlKGpfZGVjb21wcmVzc19wdHIgamQpCiAgICAgc3JjLT5kZWNvZGVyLT5kZWNv
ZGVyKCktPmpwZWdDb21wbGV0ZSgpOwogfQogCi1KUEVHSW1hZ2VEZWNvZGVyOjpKUEVHSW1hZ2VE
ZWNvZGVyKEFscGhhT3B0aW9uIGFscGhhT3B0aW9uLCBHYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
biBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKLSAgICA6IEltYWdlRGVjb2RlcihhbHBoYU9w
dGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pCitKUEVHSW1hZ2VEZWNvZGVyOjpKUEVH
SW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24s
IEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQor
ICAgIDogSW1hZ2VEZWNvZGVyKGRhdGEsIGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmls
ZU9wdGlvbikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvanBlZy9KUEVHSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy9qcGVnL0pQRUdJbWFnZURlY29kZXIuaAppbmRleCA1YTQ2ZGZm
ZmFkMy4uMWRjMTBjYmFlNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvSlBFR0ltYWdlRGVjb2Rlci5oCkBAIC00Myw5
ICs0Myw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAvLyBUaGlzIGNsYXNzIGRlY29kZXMg
dGhlIEpQRUcgaW1hZ2UgZm9ybWF0LgogICAgIGNsYXNzIEpQRUdJbWFnZURlY29kZXIgZmluYWwg
OiBwdWJsaWMgSW1hZ2VEZWNvZGVyIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBSZWY8
SW1hZ2VEZWNvZGVyPiBjcmVhdGUoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAgICAgICBzdGF0
aWMgUmVmPEltYWdlRGVjb2Rlcj4gY3JlYXRlKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRp
b24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBKUEVHSW1hZ2VEZWNvZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlv
bikpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSlBFR0ltYWdlRGVjb2Rlcihk
YXRhLCBhbHBoYU9wdGlvbiwgZ2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24pKTsKICAgICAgICAg
fQogCiAgICAgICAgIHZpcnR1YWwgfkpQRUdJbWFnZURlY29kZXIoKTsKQEAgLTcxLDcgKzcxLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldE9yaWVudGF0aW9uKEltYWdl
T3JpZW50YXRpb24gb3JpZW50YXRpb24pIHsgbV9vcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOyB9
CiAKICAgICBwcml2YXRlOgotICAgICAgICBKUEVHSW1hZ2VEZWNvZGVyKEFscGhhT3B0aW9uLCBH
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbik7CisgICAgICAgIEpQRUdJbWFnZURlY29kZXIoU2hh
cmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24p
OwogICAgICAgICB2b2lkIHRyeURlY29kZVNpemUoYm9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJy
aWRlIHsgZGVjb2RlKHRydWUsIGFsbERhdGFSZWNlaXZlZCk7IH0KIAogICAgICAgICAvLyBEZWNv
ZGVzIHRoZSBpbWFnZS4gIElmIHxvbmx5U2l6ZXwgaXMgdHJ1ZSwgc3RvcHMgZGVjb2RpbmcgYWZ0
ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3Bu
Zy9QTkdJbWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvcG5nL1BOR0ltYWdlRGVjb2Rlci5jcHAKaW5kZXggODA3MGY2NDlmZjYuLmViNzc3YWE4
YzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9w
bmcvUE5HSW1hZ2VEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFn
ZS1kZWNvZGVycy9wbmcvUE5HSW1hZ2VEZWNvZGVyLmNwcApAQCAtMjAxLDggKzIwMSw4IEBAIHBy
aXZhdGU6CiAgICAgcG5nX2J5dGVwIG1faW50ZXJsYWNlQnVmZmVyOwogfTsKIAotUE5HSW1hZ2VE
ZWNvZGVyOjpQTkdJbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQotICAgIDogSW1h
Z2VEZWNvZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1BOR0lt
YWdlRGVjb2Rlcjo6UE5HSW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRp
b24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uKQorICAgIDogSW1hZ2VEZWNvZGVyKGRhdGEsIGFscGhhT3B0aW9uLCBnYW1t
YUFuZENvbG9yUHJvZmlsZU9wdGlvbikKICAgICAsIG1fZG9Ob3RoaW5nT25GYWlsdXJlKGZhbHNl
KQogICAgICwgbV9jdXJyZW50RnJhbWUoMCkKICNpZiBFTkFCTEUoQVBORykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29k
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFn
ZURlY29kZXIuaAppbmRleCAwM2UxZmJjMzFjYS4uNzU4ODFiODUxODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3BuZy9QTkdJbWFnZURlY29kZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9wbmcvUE5HSW1h
Z2VEZWNvZGVyLmgKQEAgLTM3LDkgKzM3LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIC8v
IFRoaXMgY2xhc3MgZGVjb2RlcyB0aGUgUE5HIGltYWdlIGZvcm1hdC4KICAgICBjbGFzcyBQTkdJ
bWFnZURlY29kZXIgZmluYWwgOiBwdWJsaWMgSW1hZ2VEZWNvZGVyIHsKICAgICBwdWJsaWM6Ci0g
ICAgICAgIHN0YXRpYyBSZWY8SW1hZ2VEZWNvZGVyPiBjcmVhdGUoQWxwaGFPcHRpb24gYWxwaGFP
cHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKQorICAgICAgICBzdGF0aWMgUmVmPEltYWdlRGVjb2Rlcj4gY3JlYXRlKFNoYXJlZEJ1ZmZl
ciYgZGF0YSwgQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBQTkdJbWFnZURlY29kZXIoYWxwaGFPcHRpb24sIGdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQ
TkdJbWFnZURlY29kZXIoZGF0YSwgYWxwaGFPcHRpb24sIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKSk7CiAgICAgICAgIH0KIAogICAgICAgICB2aXJ0dWFsIH5QTkdJbWFnZURlY29kZXIoKTsK
QEAgLTg4LDcgKzg4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB9CiAKICAgICBw
cml2YXRlOgotICAgICAgICBQTkdJbWFnZURlY29kZXIoQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29s
b3JQcm9maWxlT3B0aW9uKTsKKyAgICAgICAgUE5HSW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZlciYg
ZGF0YSwgQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKICAgICAgICAg
dm9pZCB0cnlEZWNvZGVTaXplKGJvb2wgYWxsRGF0YVJlY2VpdmVkKSBvdmVycmlkZSB7IGRlY29k
ZSh0cnVlLCAwLCBhbGxEYXRhUmVjZWl2ZWQpOyB9CiAKICAgICAgICAgLy8gRGVjb2RlcyB0aGUg
aW1hZ2UuICBJZiB8b25seVNpemV8IGlzIHRydWUsIHN0b3BzIGRlY29kaW5nIGFmdGVyCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJ
bWFnZURlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMv
d2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcAppbmRleCA0OGNmNWFkMzZiNC4uZWJiY2Y1MzZkYzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAv
V0VCUEltYWdlRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1hZ2Ut
ZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmNwcApAQCAtNDUsOCArNDUsOCBAQCBpbmxp
bmUgV0VCUF9DU1BfTU9ERSBvdXRwdXRNb2RlKGJvb2wgaGFzQWxwaGEpIHsgcmV0dXJuIGhhc0Fs
cGhhID8gTU9ERV9iZ3JBIDogTQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVdFQlBJbWFnZURl
Y29kZXI6OldFQlBJbWFnZURlY29kZXIoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5k
Q29sb3JQcm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQotICAgIDogSW1h
Z2VEZWNvZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikKK1dFQlBJ
bWFnZURlY29kZXI6OldFQlBJbWFnZURlY29kZXIoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9w
dGlvbiBhbHBoYU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xv
clByb2ZpbGVPcHRpb24pCisgICAgOiBJbWFnZURlY29kZXIoZGF0YSwgYWxwaGFPcHRpb24sIGdh
bW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQogICAgICwgbV9kZWNvZGVyKDApCiAgICAgLCBtX2hh
c0FscGhhKGZhbHNlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvd2VicC9XRUJQSW1hZ2VEZWNvZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL1dFQlBJbWFnZURlY29kZXIuaAppbmRleCBkNzk1NmYw
Y2EwMS4uYzczNTQ3ODJmZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lt
YWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3dlYnAvV0VCUEltYWdlRGVjb2Rlci5oCkBAIC0zOCw5
ICszOCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV0VCUEltYWdlRGVjb2RlciBm
aW5hbCA6IHB1YmxpYyBJbWFnZURlY29kZXIgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8SW1h
Z2VEZWNvZGVyPiBjcmVhdGUoQWxwaGFPcHRpb24gYWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQ
cm9maWxlT3B0aW9uIGdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKQorICAgIHN0YXRpYyBSZWY8
SW1hZ2VEZWNvZGVyPiBjcmVhdGUoU2hhcmVkQnVmZmVyJiBkYXRhLCBBbHBoYU9wdGlvbiBhbHBo
YU9wdGlvbiwgR2FtbWFBbmRDb2xvclByb2ZpbGVPcHRpb24gZ2FtbWFBbmRDb2xvclByb2ZpbGVP
cHRpb24pCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXRUJQSW1hZ2VEZWNv
ZGVyKGFscGhhT3B0aW9uLCBnYW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOworICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBXRUJQSW1hZ2VEZWNvZGVyKGRhdGEsIGFscGhhT3B0aW9uLCBn
YW1tYUFuZENvbG9yUHJvZmlsZU9wdGlvbikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgfldFQlBJ
bWFnZURlY29kZXIoKTsKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIEltYWdlRnJhbWUq
IGZyYW1lQnVmZmVyQXRJbmRleChzaXplX3QgaW5kZXgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgot
ICAgIFdFQlBJbWFnZURlY29kZXIoQWxwaGFPcHRpb24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0
aW9uKTsKKyAgICBXRUJQSW1hZ2VEZWNvZGVyKFNoYXJlZEJ1ZmZlciYgZGF0YSwgQWxwaGFPcHRp
b24sIEdhbW1hQW5kQ29sb3JQcm9maWxlT3B0aW9uKTsKICAgICB2b2lkIHRyeURlY29kZVNpemUo
Ym9vbCBhbGxEYXRhUmVjZWl2ZWQpIG92ZXJyaWRlIHsgZGVjb2RlKHRydWUsIGFsbERhdGFSZWNl
aXZlZCk7IH0KIAogICAgIGJvb2wgZGVjb2RlKGJvb2wgb25seVNpemUsIGJvb2wgYWxsRGF0YVJl
Y2VpdmVkKTsK
</data>
<flag name="review"
          id="332839"
          type_id="1"
          status="-"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>