<?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>137722</bug_id>
          
          <creation_ts>2014-10-14 15:39:57 -0700</creation_ts>
          <short_desc>Use is&lt;&gt;() / downcast&lt;&gt;() for PlatformCAAnimation subclasses</short_desc>
          <delta_ts>2014-10-14 17:41:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>137056</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1041704</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-14 15:39:57 -0700</bug_when>
    <thetext>Use is&lt;&gt;() / downcast&lt;&gt;() for PlatformCAAnimation subclasses.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041715</commentid>
    <comment_count>1</comment_count>
      <attachid>239830</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-14 16:14:35 -0700</bug_when>
    <thetext>Created attachment 239830
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041717</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-14 16:16:34 -0700</bug_when>
    <thetext>Attachment 239830 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/ca/win/PlatformCAAnimationWin.cpp:435:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/graphics/ca/mac/PlatformCAAnimationMac.mm:398:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/graphics/ca/mac/PlatformCAAnimationMac.mm:455:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/graphics/ca/mac/PlatformCAAnimationMac.mm:541:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 4 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041727</commentid>
    <comment_count>3</comment_count>
      <attachid>239834</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-14 16:58:01 -0700</bug_when>
    <thetext>Created attachment 239834
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041729</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-14 17:00:18 -0700</bug_when>
    <thetext>Attachment 239834 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/ca/win/PlatformCAAnimationWin.cpp:435:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/graphics/ca/mac/PlatformCAAnimationMac.mm:398:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/graphics/ca/mac/PlatformCAAnimationMac.mm:455:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/graphics/ca/mac/PlatformCAAnimationMac.mm:541:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 4 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041740</commentid>
    <comment_count>5</comment_count>
      <attachid>239834</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-14 17:41:02 -0700</bug_when>
    <thetext>Comment on attachment 239834
Patch

Clearing flags on attachment: 239834

Committed r174715: &lt;http://trac.webkit.org/changeset/174715&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041741</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-14 17:41:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239830</attachid>
            <date>2014-10-14 16:14:35 -0700</date>
            <delta_ts>2014-10-14 16:57:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137722-20141014161441.patch</filename>
            <type>text/plain</type>
            <size>50703</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTYwNWRhNDdmN2M5NWIx
YTMzZGY4NGZmOTVjMzMxYjBkMDMxZDA0Zi4uODdjNGM1ZDY3MTdlODcxZDViOTdiYzRiMWQwOWJl
ZmY5NTQ0YzQ0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE0LTEwLTE0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIGlzPD4oKSAvIGRvd25j
YXN0PD4oKSBmb3IgUGxhdGZvcm1DQUFuaW1hdGlvbiBzdWJjbGFzc2VzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc3MjIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgaXM8PigpIC8gZG93bmNhc3Q8
PigpIGZvciBQbGF0Zm9ybUNBQW5pbWF0aW9uIHN1YmNsYXNzZXMgYW5kIGNsZWFuCisgICAgICAg
IHVwIHRoZSBzdXJyb3VuZGluZyBjb2RlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVo
YXZpb3IgY2hhbmdlLgorCisgICAgICAgICogcGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJv
bGxlci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6Okhp
Z2hsaWdodDo6ZmFkZUluKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VzT3ZlcmxheUNvbnRy
b2xsZXI6OkhpZ2hsaWdodDo6ZmFkZU91dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvR3JhcGhpY3NMYXllckNBLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJD
QTo6bW92ZU9yQ29weUxheWVyQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJDQTo6dXBkYXRlQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyQ0E6OnNldEFuaW1hdGlvbk9uTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NM
YXllckNBOjpwYXVzZUNBQW5pbWF0aW9uT25MYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvUGxhdGZvcm1DQUFuaW1hdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
L1BsYXRmb3JtQ0FMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9Q
bGF0Zm9ybUNBQW5pbWF0aW9uTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
bWFjL1BsYXRmb3JtQ0FBbmltYXRpb25NYWMubW06CisgICAgICAgIChQbGF0Zm9ybUNBQW5pbWF0
aW9uTWFjOjpjb3B5KToKKyAgICAgICAgKFBsYXRmb3JtQ0FBbmltYXRpb25NYWM6OmNvcHlUaW1p
bmdGdW5jdGlvbkZyb20pOgorICAgICAgICAoUGxhdGZvcm1DQUFuaW1hdGlvbk1hYzo6Y29weUZy
b21WYWx1ZUZyb20pOgorICAgICAgICAoUGxhdGZvcm1DQUFuaW1hdGlvbk1hYzo6Y29weVRvVmFs
dWVGcm9tKToKKyAgICAgICAgKFBsYXRmb3JtQ0FBbmltYXRpb25NYWM6OmNvcHlWYWx1ZXNGcm9t
KToKKyAgICAgICAgKFBsYXRmb3JtQ0FBbmltYXRpb25NYWM6OmNvcHlLZXlUaW1lc0Zyb20pOgor
ICAgICAgICAoUGxhdGZvcm1DQUFuaW1hdGlvbk1hYzo6Y29weVRpbWluZ0Z1bmN0aW9uc0Zyb20p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBTGF5ZXJNYWMu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUxheWVyTWFj
Lm1tOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyTWFjOjphZGRBbmltYXRpb25Gb3JLZXkpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBQW5pbWF0aW9uV2lu
LmNwcDoKKyAgICAgICAgKFBsYXRmb3JtQ0FBbmltYXRpb25XaW46OmNvcHkpOgorICAgICAgICAo
UGxhdGZvcm1DQUFuaW1hdGlvbldpbjo6Y29weVRpbWluZ0Z1bmN0aW9uRnJvbSk6CisgICAgICAg
IChQbGF0Zm9ybUNBQW5pbWF0aW9uV2luOjpjb3B5RnJvbVZhbHVlRnJvbSk6CisgICAgICAgIChQ
bGF0Zm9ybUNBQW5pbWF0aW9uV2luOjpjb3B5VG9WYWx1ZUZyb20pOgorICAgICAgICAoUGxhdGZv
cm1DQUFuaW1hdGlvbldpbjo6Y29weVZhbHVlc0Zyb20pOgorICAgICAgICAoUGxhdGZvcm1DQUFu
aW1hdGlvbldpbjo6Y29weUtleVRpbWVzRnJvbSk6CisgICAgICAgIChQbGF0Zm9ybUNBQW5pbWF0
aW9uV2luOjpjb3B5VGltaW5nRnVuY3Rpb25zRnJvbSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FBbmltYXRpb25XaW4uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNwcDoKKyAgICAgICAgKFBsYXRm
b3JtQ0FMYXllcldpbjo6YWRkQW5pbWF0aW9uRm9yS2V5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmg6CisKIDIwMTQtMTAtMTQgIERlYW4g
SmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIENyYXNoIGluIFdlYkNvcmU6OlVz
ZXJHZXN0dXJlSW5kaWNhdG9yOjpwcm9jZXNzaW5nVXNlckdlc3R1cmUgd2l0aCBXZWJXb3JrZXJz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKaW5kZXggOGI1MjQzNjQ2N2ZkZDc2MjdhODRlNTM2MzBjMDZmMDMzY2MyZGIzMS4u
MDU5N2E2MGM1M2VhYjRkNDVmMmQxYTA3NjhhOGJkMjg1Y2IwMzc4OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAt
MSw1ICsxLDMxIEBACiAyMDE0LTEwLTE0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CiAKKyAgICAgICAgVXNlIGlzPD4oKSAvIGRvd25jYXN0PD4oKSBmb3IgUGxhdGZvcm1DQUFuaW1h
dGlvbiBzdWJjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzc3MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVc2UgaXM8PigpIC8gZG93bmNhc3Q8PigpIGZvciBQbGF0Zm9ybUNBQW5pbWF0aW9u
IHN1YmNsYXNzZXMgYW5kIGNsZWFuCisgICAgICAgIHVwIHRoZSBzdXJyb3VuZGluZyBjb2RlLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVt
b3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0
aW9uUmVtb3RlLm1tOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3Rl
Ojpjb3B5KToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6Y29w
eVRpbWluZ0Z1bmN0aW9uRnJvbSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FBbmltYXRp
b25SZW1vdGU6OmNvcHlGcm9tVmFsdWVGcm9tKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1D
QUFuaW1hdGlvblJlbW90ZTo6Y29weVRvVmFsdWVGcm9tKToKKyAgICAgICAgKFdlYktpdDo6UGxh
dGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6Y29weVZhbHVlc0Zyb20pOgorICAgICAgICAoV2ViS2l0
OjpQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpjb3B5S2V5VGltZXNGcm9tKToKKyAgICAgICAg
KFdlYktpdDo6UGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6Y29weVRpbWluZ0Z1bmN0aW9uc0Zy
b20pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVt
b3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjphZGRBbmlt
YXRpb25Gb3JLZXkpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmFu
aW1hdGlvblN0YXJ0ZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZv
cm1DQUxheWVyUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3Jl
QW5pbWF0aW9uRHJhd2luZ0FyZWE6OmNvbW1pdFRyYW5zaWVudFpvb20pOgorCisyMDE0LTEwLTE0
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKICAgICAgICAgVXNlIGlzPD4oKSAv
IGRvd25jYXN0PD4oKSBmb3IgUmVuZGVySW1hZ2UKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzY4MwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL21hYy9TZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbQppbmRleCAwZmMzM2E0YjI2NWY0
ZjYxNGRkM2QwNDJlMTE1NWM0NWZiNWY3OGEyLi45MGFlNTkwNGNmNGNlNTZiM2JkN2Q5ODI0MmZk
MWJlNWM5MTQ3ZWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNl
c092ZXJsYXlDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL1NlcnZp
Y2VzT3ZlcmxheUNvbnRyb2xsZXIubW0KQEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIFNlcnZpY2Vz
T3ZlcmxheUNvbnRyb2xsZXI6OkhpZ2hsaWdodDo6ZmFkZUluKCkKICAgICBbYW5pbWF0aW9uIHNl
dFRvVmFsdWU6QDFdOwogCiAgICAgUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IHBsYXRmb3Jt
QW5pbWF0aW9uID0gUGxhdGZvcm1DQUFuaW1hdGlvbk1hYzo6Y3JlYXRlKGFuaW1hdGlvbi5nZXQo
KSk7Ci0gICAgZG93bmNhc3Q8R3JhcGhpY3NMYXllckNBPigqbGF5ZXIoKSkucGxhdGZvcm1DQUxh
eWVyKCktPmFkZEFuaW1hdGlvbkZvcktleSgiRmFkZUhpZ2hsaWdodEluIiwgcGxhdGZvcm1Bbmlt
YXRpb24uZ2V0KCkpOworICAgIGRvd25jYXN0PEdyYXBoaWNzTGF5ZXJDQT4oKmxheWVyKCkpLnBs
YXRmb3JtQ0FMYXllcigpLT5hZGRBbmltYXRpb25Gb3JLZXkoIkZhZGVIaWdobGlnaHRJbiIsICpw
bGF0Zm9ybUFuaW1hdGlvbik7CiB9CiAKIHZvaWQgU2VydmljZXNPdmVybGF5Q29udHJvbGxlcjo6
SGlnaGxpZ2h0OjpmYWRlT3V0KCkKQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lkIFNlcnZpY2VzT3Zl
cmxheUNvbnRyb2xsZXI6OkhpZ2hsaWdodDo6ZmFkZU91dCgpCiAgICAgfV07CiAKICAgICBSZWZQ
dHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gcGxhdGZvcm1BbmltYXRpb24gPSBQbGF0Zm9ybUNBQW5p
bWF0aW9uTWFjOjpjcmVhdGUoYW5pbWF0aW9uLmdldCgpKTsKLSAgICBkb3duY2FzdDxHcmFwaGlj
c0xheWVyQ0E+KCpsYXllcigpKS5wbGF0Zm9ybUNBTGF5ZXIoKS0+YWRkQW5pbWF0aW9uRm9yS2V5
KCJGYWRlSGlnaGxpZ2h0T3V0IiwgcGxhdGZvcm1BbmltYXRpb24uZ2V0KCkpOworICAgIGRvd25j
YXN0PEdyYXBoaWNzTGF5ZXJDQT4oKmxheWVyKCkpLnBsYXRmb3JtQ0FMYXllcigpLT5hZGRBbmlt
YXRpb25Gb3JLZXkoIkZhZGVIaWdobGlnaHRPdXQiLCAqcGxhdGZvcm1BbmltYXRpb24pOwogICAg
IFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCmluZGV4IDk2MDI2MGYw
YzExNTE2NDM1MTI0MjRmMDhmNWQyMzZjYmRjYzA4ZjMuLjYwNjE3YzJlMGY3MDc1MjI1MzBjMzEz
MTIzYzc0ZGRjOTQwNmNmYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcApAQCAtNTQ5LDExICs1NDksMTEgQEAg
dm9pZCBHcmFwaGljc0xheWVyQ0E6Om1vdmVPckNvcHlMYXllckFuaW1hdGlvbihNb3ZlT3JDb3B5
IG9wZXJhdGlvbiwgY29uc3QgU3RyaW4KICAgICBzd2l0Y2ggKG9wZXJhdGlvbikgewogICAgIGNh
c2UgTW92ZToKICAgICAgICAgZnJvbUxheWVyLT5yZW1vdmVBbmltYXRpb25Gb3JLZXkoYW5pbWF0
aW9uSWRlbnRpZmllcik7Ci0gICAgICAgIHRvTGF5ZXItPmFkZEFuaW1hdGlvbkZvcktleShhbmlt
YXRpb25JZGVudGlmaWVyLCBhbmltLmdldCgpKTsKKyAgICAgICAgdG9MYXllci0+YWRkQW5pbWF0
aW9uRm9yS2V5KGFuaW1hdGlvbklkZW50aWZpZXIsICphbmltKTsKICAgICAgICAgYnJlYWs7CiAK
ICAgICBjYXNlIENvcHk6Ci0gICAgICAgIHRvTGF5ZXItPmFkZEFuaW1hdGlvbkZvcktleShhbmlt
YXRpb25JZGVudGlmaWVyLCBhbmltLmdldCgpKTsKKyAgICAgICAgdG9MYXllci0+YWRkQW5pbWF0
aW9uRm9yS2V5KGFuaW1hdGlvbklkZW50aWZpZXIsICphbmltKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogfQpAQCAtMjEwOSw3ICsyMTA5LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnVwZGF0
ZUFuaW1hdGlvbnMoKQogICAgIGlmICgobnVtQW5pbWF0aW9ucyA9IG1fdW5jb21pdHRlZEFuaW1h
dGlvbnMuc2l6ZSgpKSkgewogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUFuaW1h
dGlvbnM7ICsraSkgewogICAgICAgICAgICAgY29uc3QgTGF5ZXJQcm9wZXJ0eUFuaW1hdGlvbiYg
cGVuZGluZ0FuaW1hdGlvbiA9IG1fdW5jb21pdHRlZEFuaW1hdGlvbnNbaV07Ci0gICAgICAgICAg
ICBzZXRBbmltYXRpb25PbkxheWVyKHBlbmRpbmdBbmltYXRpb24ubV9hbmltYXRpb24uZ2V0KCks
IHBlbmRpbmdBbmltYXRpb24ubV9wcm9wZXJ0eSwgcGVuZGluZ0FuaW1hdGlvbi5tX25hbWUsIHBl
bmRpbmdBbmltYXRpb24ubV9pbmRleCwgcGVuZGluZ0FuaW1hdGlvbi5tX3N1YkluZGV4LCBwZW5k
aW5nQW5pbWF0aW9uLm1fdGltZU9mZnNldCk7CisgICAgICAgICAgICBzZXRBbmltYXRpb25Pbkxh
eWVyKCpwZW5kaW5nQW5pbWF0aW9uLm1fYW5pbWF0aW9uLCBwZW5kaW5nQW5pbWF0aW9uLm1fcHJv
cGVydHksIHBlbmRpbmdBbmltYXRpb24ubV9uYW1lLCBwZW5kaW5nQW5pbWF0aW9uLm1faW5kZXgs
IHBlbmRpbmdBbmltYXRpb24ubV9zdWJJbmRleCwgcGVuZGluZ0FuaW1hdGlvbi5tX3RpbWVPZmZz
ZXQpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBBbmltYXRpb25zTWFwOjppdGVyYXRvciBp
dCA9IG1fcnVubmluZ0FuaW1hdGlvbnMuZmluZChwZW5kaW5nQW5pbWF0aW9uLm1fbmFtZSk7CiAg
ICAgICAgICAgICBpZiAoaXQgPT0gbV9ydW5uaW5nQW5pbWF0aW9ucy5lbmQoKSkgewpAQCAtMjE0
MSwxMiArMjE0MSwxMiBAQCBib29sIEdyYXBoaWNzTGF5ZXJDQTo6aXNSdW5uaW5nVHJhbnNmb3Jt
QW5pbWF0aW9uKCkgY29uc3QKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgR3JhcGhpY3NM
YXllckNBOjpzZXRBbmltYXRpb25PbkxheWVyKFBsYXRmb3JtQ0FBbmltYXRpb24qIGNhQW5pbSwg
QW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUs
IGludCBpbmRleCwgaW50IHN1YkluZGV4LCBkb3VibGUgdGltZU9mZnNldCkKK3ZvaWQgR3JhcGhp
Y3NMYXllckNBOjpzZXRBbmltYXRpb25PbkxheWVyKFBsYXRmb3JtQ0FBbmltYXRpb24mIGNhQW5p
bSwgQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5LCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5h
bWUsIGludCBpbmRleCwgaW50IHN1YkluZGV4LCBkb3VibGUgdGltZU9mZnNldCkKIHsKICAgICBQ
bGF0Zm9ybUNBTGF5ZXIqIGxheWVyID0gYW5pbWF0ZWRMYXllcihwcm9wZXJ0eSk7CiAKICAgICBp
ZiAodGltZU9mZnNldCkKLSAgICAgICAgY2FBbmltLT5zZXRCZWdpblRpbWUoQ0FDdXJyZW50TWVk
aWFUaW1lKCkgLSB0aW1lT2Zmc2V0KTsKKyAgICAgICAgY2FBbmltLnNldEJlZ2luVGltZShDQUN1
cnJlbnRNZWRpYVRpbWUoKSAtIHRpbWVPZmZzZXQpOwogCiAgICAgU3RyaW5nIGFuaW1hdGlvbklE
ID0gYW5pbWF0aW9uSWRlbnRpZmllcihhbmltYXRpb25OYW1lLCBwcm9wZXJ0eSwgaW5kZXgsIHN1
YkluZGV4KTsKIApAQCAtMjIyMSw3ICsyMjIxLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnBh
dXNlQ0FBbmltYXRpb25PbkxheWVyKEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uc3QK
ICAgICBuZXdBbmltLT5zZXRTcGVlZCgwKTsKICAgICBuZXdBbmltLT5zZXRUaW1lT2Zmc2V0KHRp
bWVPZmZzZXQpOwogICAgIAotICAgIGxheWVyLT5hZGRBbmltYXRpb25Gb3JLZXkoYW5pbWF0aW9u
SUQsIG5ld0FuaW0uZ2V0KCkpOyAvLyBUaGlzIHdpbGwgcmVwbGFjZSB0aGUgcnVubmluZyBhbmlt
YXRpb24uCisgICAgbGF5ZXItPmFkZEFuaW1hdGlvbkZvcktleShhbmltYXRpb25JRCwgKm5ld0Fu
aW0pOyAvLyBUaGlzIHdpbGwgcmVwbGFjZSB0aGUgcnVubmluZyBhbmltYXRpb24uCiAKICAgICAv
LyBQYXVzZSB0aGUgYW5pbWF0aW9ucyBvbiB0aGUgY2xvbmVzIHRvby4KICAgICBpZiAoTGF5ZXJN
YXAqIGxheWVyQ2xvbmVNYXAgPSBhbmltYXRlZExheWVyQ2xvbmVzKHByb3BlcnR5KSkgewpAQCAt
MjIzMCw3ICsyMjMwLDcgQEAgdm9pZCBHcmFwaGljc0xheWVyQ0E6OnBhdXNlQ0FBbmltYXRpb25P
bkxheWVyKEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uc3QKICAgICAgICAgICAgIC8v
IFNraXAgaW1tZWRpYXRlIHJlcGxpY2FzLCBzaW5jZSB0aGV5IG1vdmUgd2l0aCB0aGUgb3JpZ2lu
YWwuCiAgICAgICAgICAgICBpZiAobV9yZXBsaWNhTGF5ZXIgJiYgaXNSZXBsaWNhdGVkUm9vdENs
b25lKGl0LT5rZXkpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaXQt
PnZhbHVlLT5hZGRBbmltYXRpb25Gb3JLZXkoYW5pbWF0aW9uSUQsIG5ld0FuaW0uZ2V0KCkpOwor
ICAgICAgICAgICAgaXQtPnZhbHVlLT5hZGRBbmltYXRpb25Gb3JLZXkoYW5pbWF0aW9uSUQsICpu
ZXdBbmltKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKaW5kZXggZGZjN2U4YWY5MDky
MzE3YTJlZWI5YWYwMDc4ZDFhMzk4ODg1Nzc0Yy4uNzUwZTlmOTdkM2U4ZjZiNGM1MjZjMGM3YjMz
MGE2ZTRmZjRlYzgyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvR3JhcGhpY3NMYXllckNBLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmgKQEAgLTM4OCw3ICszODgsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgZW5zdXJlU3RydWN0dXJhbExheWVyKFN0cnVjdHVyYWxMYXllclB1cnBvc2UpOwog
ICAgIFN0cnVjdHVyYWxMYXllclB1cnBvc2Ugc3RydWN0dXJhbExheWVyUHVycG9zZSgpIGNvbnN0
OwogCi0gICAgdm9pZCBzZXRBbmltYXRpb25PbkxheWVyKFBsYXRmb3JtQ0FBbmltYXRpb24qLCBB
bmltYXRlZFByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgaW50IGluZGV4
LCBpbnQgc3ViSW5kZXgsIGRvdWJsZSB0aW1lT2Zmc2V0KTsKKyAgICB2b2lkIHNldEFuaW1hdGlv
bk9uTGF5ZXIoUGxhdGZvcm1DQUFuaW1hdGlvbiYsIEFuaW1hdGVkUHJvcGVydHlJRCwgY29uc3Qg
U3RyaW5nJiBhbmltYXRpb25OYW1lLCBpbnQgaW5kZXgsIGludCBzdWJJbmRleCwgZG91YmxlIHRp
bWVPZmZzZXQpOwogICAgIGJvb2wgcmVtb3ZlQ0FBbmltYXRpb25Gcm9tTGF5ZXIoQW5pbWF0ZWRQ
cm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGludCBpbmRleCwgaW50IHN1
YklOZGV4KTsKICAgICB2b2lkIHBhdXNlQ0FBbmltYXRpb25PbkxheWVyKEFuaW1hdGVkUHJvcGVy
dHlJRCwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBpbnQgaW5kZXgsIGludCBzdWJJbmRl
eCwgZG91YmxlIHRpbWVPZmZzZXQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBQW5pbWF0aW9uLmgKaW5kZXggYTViYTY5M2I0
YzM3OGU3NWQwN2EzZjFjMzY1NGUzNGI3YjczMjU2Ny4uNTMzMTg5NjJmMDE4YjNiYzlkM2NlNTUw
NDM4ZDUxMWM3ZTM3ZDAzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvUGxhdGZvcm1DQUFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FBbmltYXRpb24uaApAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgIkZsb2F0UG9pbnQzRC5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4
LmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVHlwZUNhc3Rz
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03
Nyw3ICs3OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0RmlsbE1vZGUoRmlsbE1v
ZGVUeXBlKSA9IDA7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIHNldFRpbWluZ0Z1bmN0aW9uKGNv
bnN0IFRpbWluZ0Z1bmN0aW9uKiwgYm9vbCByZXZlcnNlID0gZmFsc2UpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgY29weVRpbWluZ0Z1bmN0aW9uRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9u
KikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjb3B5VGltaW5nRnVuY3Rpb25Gcm9tKGNvbnN0IFBs
YXRmb3JtQ0FBbmltYXRpb24mKSA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNSZW1vdmVkT25D
b21wbGV0aW9uKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRSZW1vdmVkT25Db21w
bGV0aW9uKGJvb2wpID0gMDsKQEAgLTk0LDE0ICs5NSwxNCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHNldEZyb21WYWx1ZShjb25zdCBGbG9hdFBvaW50M0QmKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHNldEZyb21WYWx1ZShjb25zdCBXZWJDb3JlOjpDb2xvciYpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0RnJvbVZhbHVlKGNvbnN0IEZpbHRlck9wZXJhdGlvbiosIGludCBpbnRlcm5h
bEZpbHRlclByb3BlcnR5SW5kZXgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY29weUZyb21WYWx1
ZUZyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
Y29weUZyb21WYWx1ZUZyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiYpID0gMDsKIAogICAg
IHZpcnR1YWwgdm9pZCBzZXRUb1ZhbHVlKGZsb2F0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNl
dFRvVmFsdWUoY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHNldFRvVmFsdWUoY29uc3QgRmxvYXRQb2ludDNEJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRUb1ZhbHVlKGNvbnN0IFdlYkNvcmU6OkNvbG9yJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRUb1ZhbHVlKGNvbnN0IEZpbHRlck9wZXJhdGlvbiosIGludCBpbnRlcm5h
bEZpbHRlclByb3BlcnR5SW5kZXgpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY29weVRvVmFsdWVG
cm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24qKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNv
cHlUb1ZhbHVlRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uJikgPSAwOwogCiAgICAgLy8g
S2V5ZnJhbWUtYW5pbWF0aW9uIHByb3BlcnRpZXMuCiAgICAgdmlydHVhbCB2b2lkIHNldFZhbHVl
cyhjb25zdCBWZWN0b3I8ZmxvYXQ+JikgPSAwOwpAQCAtMTA5LDEzICsxMTAsMTMgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPEZsb2F0UG9pbnQzRD4m
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6
Q29sb3I+JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPFJl
ZlB0cjxGaWx0ZXJPcGVyYXRpb24+PiYsIGludCBpbnRlcm5hbEZpbHRlclByb3BlcnR5SW5kZXgp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY29weVZhbHVlc0Zyb20oY29uc3QgUGxhdGZvcm1DQUFu
aW1hdGlvbiopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29weVZhbHVlc0Zyb20oY29uc3QgUGxh
dGZvcm1DQUFuaW1hdGlvbiYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRLZXlUaW1lcyhj
b25zdCBWZWN0b3I8ZmxvYXQ+JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjb3B5S2V5VGltZXNG
cm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24qKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNv
cHlLZXlUaW1lc0Zyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiYpID0gMDsKIAogICAgIHZp
cnR1YWwgdm9pZCBzZXRUaW1pbmdGdW5jdGlvbnMoY29uc3QgVmVjdG9yPGNvbnN0IFRpbWluZ0Z1
bmN0aW9uKj4mLCBib29sIHJldmVyc2UgPSBmYWxzZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBj
b3B5VGltaW5nRnVuY3Rpb25zRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uKikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBjb3B5VGltaW5nRnVuY3Rpb25zRnJvbShjb25zdCBQbGF0Zm9ybUNB
QW5pbWF0aW9uJikgPSAwOwogCiAgICAgdm9pZCBzZXRBY3R1YWxTdGFydFRpbWVJZk5lZWRlZChD
RlRpbWVJbnRlcnZhbCB0KQogICAgIHsKQEAgLTEzNSw5ICsxMzYsMTEgQEAgcHJpdmF0ZToKICAg
ICBBbmltYXRpb25UeXBlIG1fdHlwZTsKIH07CiAKLSNkZWZpbmUgUExBVEZPUk1fQ0FBTklNQVRJ
T05fVFlQRV9DQVNUUyhUb1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0ZSkgXAotICAgIFRZUEVfQ0FT
VFNfQkFTRShUb1ZhbHVlVHlwZU5hbWUsIFdlYkNvcmU6OlBsYXRmb3JtQ0FBbmltYXRpb24sIG9i
amVjdCwgb2JqZWN0LT5wcmVkaWNhdGUsIG9iamVjdC5wcmVkaWNhdGUpCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKLX0KKyNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19DQUFOSU1BVElP
TihUb1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0ZSkgXAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19C
RUdJTihUb1ZhbHVlVHlwZU5hbWUpIFwKKyAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2Vi
Q29yZTo6UGxhdGZvcm1DQUFuaW1hdGlvbiYgYW5pbWF0aW9uKSB7IHJldHVybiBhbmltYXRpb24u
cHJlZGljYXRlOyB9IFwKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKIAogI2VuZGlmIC8v
IFBsYXRmb3JtQ0FBbmltYXRpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaAppbmRleCA3MGFhMzEwMzNhNTEyYTk2YjYw
MzBjYjBkOTQ0ODBjOWU2ODM4ODY3Li5jYWE1YTg3ZTc5NDBiNjI5NjFiNGQ3NWRmNzkzZjc0Yzlk
Y2FhNGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9Q
bGF0Zm9ybUNBTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9QbGF0Zm9ybUNBTGF5ZXIuaApAQCAtMTI3LDcgKzEyNyw3IEBAIHB1YmxpYzoKICAgICAvLyBB
bnkgc3VibGF5ZXJzIHByZXZpb3VzbHkgaW4gdGhlIGN1cnJlbnQgbGF5ZXIgYXJlIHJlbW92ZWQu
CiAgICAgdmlydHVhbCB2b2lkIGFkb3B0U3VibGF5ZXJzKFBsYXRmb3JtQ0FMYXllciYgc291cmNl
KSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkQW5pbWF0aW9uRm9yS2V5KGNvbnN0IFN0cmlu
ZyYga2V5LCBQbGF0Zm9ybUNBQW5pbWF0aW9uKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBhZGRB
bmltYXRpb25Gb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIFBsYXRmb3JtQ0FBbmltYXRpb24mKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUFuaW1hdGlvbkZvcktleShjb25zdCBTdHJpbmcm
IGtleSkgPSAwOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBh
bmltYXRpb25Gb3JLZXkoY29uc3QgU3RyaW5nJiBrZXkpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FBbmltYXRpb25N
YWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNB
QW5pbWF0aW9uTWFjLmgKaW5kZXggM2YzNzBiNTY2Zjg1MjBhOGNhM2ViMzI0Nzc5ZDEzNDUwNDhi
NmExMy4uZDgyZDVjYjI0NWExM2I2ODBiNjA1YjFjZThmMGUzZTE0MDU1MTY3MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FBbmlt
YXRpb25NYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMv
UGxhdGZvcm1DQUFuaW1hdGlvbk1hYy5oCkBAIC04Myw3ICs4Myw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgc2V0RmlsbE1vZGUoRmlsbE1vZGVUeXBlKSBvdmVycmlkZTsKICAgICAKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0VGltaW5nRnVuY3Rpb24oY29uc3QgVGltaW5nRnVuY3Rpb24qLCBi
b29sIHJldmVyc2UgPSBmYWxzZSkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBjb3B5VGltaW5nRnVuY3Rp
b25Gcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24qKSBvdmVycmlkZTsKKyAgICB2b2lkIGNv
cHlUaW1pbmdGdW5jdGlvbkZyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiYpIG92ZXJyaWRl
OwogCiAgICAgdmlydHVhbCBib29sIGlzUmVtb3ZlZE9uQ29tcGxldGlvbigpIGNvbnN0IG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRSZW1vdmVkT25Db21wbGV0aW9uKGJvb2wpIG92ZXJy
aWRlOwpAQCAtMTAwLDE0ICsxMDAsMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRG
cm9tVmFsdWUoY29uc3QgRmxvYXRQb2ludDNEJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IHNldEZyb21WYWx1ZShjb25zdCBXZWJDb3JlOjpDb2xvciYpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRGcm9tVmFsdWUoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiwgaW50IGludGVybmFs
RmlsdGVyUHJvcGVydHlJbmRleCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNvcHlGcm9t
VmFsdWVGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24qKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQgY29weUZyb21WYWx1ZUZyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiYpIG92
ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIHNldFRvVmFsdWUoZmxvYXQpIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRUb1ZhbHVlKGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9u
TWF0cml4Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFRvVmFsdWUoY29uc3QgRmxv
YXRQb2ludDNEJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFRvVmFsdWUoY29uc3Qg
V2ViQ29yZTo6Q29sb3ImKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VG9WYWx1ZShj
b25zdCBGaWx0ZXJPcGVyYXRpb24qLCBpbnQgaW50ZXJuYWxGaWx0ZXJQcm9wZXJ0eUluZGV4KSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY29weVRvVmFsdWVGcm9tKGNvbnN0IFBsYXRmb3Jt
Q0FBbmltYXRpb24qKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgY29weVRvVmFsdWVGcm9t
KGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24mKSBvdmVycmlkZTsKIAogICAgIC8vIEtleWZyYW1l
LWFuaW1hdGlvbiBwcm9wZXJ0aWVzLgogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZXMoY29uc3Qg
VmVjdG9yPGZsb2F0PiYpIG92ZXJyaWRlOwpAQCAtMTE1LDEzICsxMTUsMTMgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPEZsb2F0UG9pbnQzRD4mKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpDb2xvcj4mKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVzKGNvbnN0IFZl
Y3RvcjxSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPj4mLCBpbnQgaW50ZXJuYWxGaWx0ZXJQcm9wZXJ0
eUluZGV4KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY29weVZhbHVlc0Zyb20oY29uc3Qg
UGxhdGZvcm1DQUFuaW1hdGlvbiopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBjb3B5VmFs
dWVzRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0
dWFsIHZvaWQgc2V0S2V5VGltZXMoY29uc3QgVmVjdG9yPGZsb2F0PiYpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdm9pZCBjb3B5S2V5VGltZXNGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24q
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgY29weUtleVRpbWVzRnJvbShjb25zdCBQbGF0
Zm9ybUNBQW5pbWF0aW9uJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGltaW5n
RnVuY3Rpb25zKGNvbnN0IFZlY3Rvcjxjb25zdCBUaW1pbmdGdW5jdGlvbio+JiwgYm9vbCByZXZl
cnNlID0gZmFsc2UpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjb3B5VGltaW5nRnVuY3Rp
b25zRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uKikgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIGNvcHlUaW1pbmdGdW5jdGlvbnNGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24m
KSBvdmVycmlkZTsKIAogcHJvdGVjdGVkOgogICAgIFBsYXRmb3JtQ0FBbmltYXRpb25NYWMoQW5p
bWF0aW9uVHlwZSwgY29uc3QgU3RyaW5nJiBrZXlQYXRoKTsKQEAgLTEzMSw4ICsxMzEsOCBAQCBw
cml2YXRlOgogICAgIFJldGFpblB0cjxDQVByb3BlcnR5QW5pbWF0aW9uPiBtX2FuaW1hdGlvbjsK
IH07CiAKLVBMQVRGT1JNX0NBQU5JTUFUSU9OX1RZUEVfQ0FTVFMoUGxhdGZvcm1DQUFuaW1hdGlv
bk1hYywgaXNQbGF0Zm9ybUNBQW5pbWF0aW9uTWFjKCkpCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CiAKLX0KK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ0FBTklNQVRJT04oV2ViQ29yZTo6UGxhdGZv
cm1DQUFuaW1hdGlvbk1hYywgaXNQbGF0Zm9ybUNBQW5pbWF0aW9uTWFjKCkpCiAKICNlbmRpZiAv
LyBQbGF0Zm9ybUNBQW5pbWF0aW9uTWFjX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FBbmltYXRpb25NYWMu
bW0KaW5kZXggMmJjNjVkYzkwYzMzYjYwNDc4NGMwNTVkY2NiMTkyZGNjMTc1Njg0MC4uY2VhMTA5
NjMyNTYwOTg3Y2JjNjEyNWNiZDA2YTBjMTVjYzRiNThlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FBbmltYXRpb25NYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FB
bmltYXRpb25NYWMubW0KQEAgLTE5OSwxOSArMTk5LDE5IEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1D
QUFuaW1hdGlvbj4gUGxhdGZvcm1DQUFuaW1hdGlvbk1hYzo6Y29weSgpIGNvbnN0CiAgICAgYW5p
bWF0aW9uLT5zZXRGaWxsTW9kZShmaWxsTW9kZSgpKTsKICAgICBhbmltYXRpb24tPnNldFJlbW92
ZWRPbkNvbXBsZXRpb24oaXNSZW1vdmVkT25Db21wbGV0aW9uKCkpOwogICAgIGFuaW1hdGlvbi0+
c2V0QWRkaXRpdmUoaXNBZGRpdGl2ZSgpKTsKLSAgICBhbmltYXRpb24tPmNvcHlUaW1pbmdGdW5j
dGlvbkZyb20odGhpcyk7CisgICAgYW5pbWF0aW9uLT5jb3B5VGltaW5nRnVuY3Rpb25Gcm9tKCp0
aGlzKTsKICAgICBhbmltYXRpb24tPnNldFZhbHVlRnVuY3Rpb24odmFsdWVGdW5jdGlvbigpKTsK
IAotICAgIHNldEhhc0V4cGxpY2l0QmVnaW5UaW1lKHRvUGxhdGZvcm1DQUFuaW1hdGlvbk1hYyhh
bmltYXRpb24uZ2V0KCkpLT5wbGF0Zm9ybUFuaW1hdGlvbigpLCBoYXNFeHBsaWNpdEJlZ2luVGlt
ZShwbGF0Zm9ybUFuaW1hdGlvbigpKSk7CisgICAgc2V0SGFzRXhwbGljaXRCZWdpblRpbWUoZG93
bmNhc3Q8UGxhdGZvcm1DQUFuaW1hdGlvbk1hYz4oKmFuaW1hdGlvbikucGxhdGZvcm1BbmltYXRp
b24oKSwgaGFzRXhwbGljaXRCZWdpblRpbWUocGxhdGZvcm1BbmltYXRpb24oKSkpOwogICAgIAog
ICAgIC8vIENvcHkgdGhlIHNwZWNpZmljIEJhc2ljIG9yIEtleWZyYW1lIHZhbHVlcy4KICAgICBp
ZiAoYW5pbWF0aW9uVHlwZSgpID09IEtleWZyYW1lKSB7Ci0gICAgICAgIGFuaW1hdGlvbi0+Y29w
eVZhbHVlc0Zyb20odGhpcyk7Ci0gICAgICAgIGFuaW1hdGlvbi0+Y29weUtleVRpbWVzRnJvbSh0
aGlzKTsKLSAgICAgICAgYW5pbWF0aW9uLT5jb3B5VGltaW5nRnVuY3Rpb25zRnJvbSh0aGlzKTsK
KyAgICAgICAgYW5pbWF0aW9uLT5jb3B5VmFsdWVzRnJvbSgqdGhpcyk7CisgICAgICAgIGFuaW1h
dGlvbi0+Y29weUtleVRpbWVzRnJvbSgqdGhpcyk7CisgICAgICAgIGFuaW1hdGlvbi0+Y29weVRp
bWluZ0Z1bmN0aW9uc0Zyb20oKnRoaXMpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIGFuaW1hdGlv
bi0+Y29weUZyb21WYWx1ZUZyb20odGhpcyk7Ci0gICAgICAgIGFuaW1hdGlvbi0+Y29weVRvVmFs
dWVGcm9tKHRoaXMpOworICAgICAgICBhbmltYXRpb24tPmNvcHlGcm9tVmFsdWVGcm9tKCp0aGlz
KTsKKyAgICAgICAgYW5pbWF0aW9uLT5jb3B5VG9WYWx1ZUZyb20oKnRoaXMpOwogICAgIH0KICAg
ICAKICAgICByZXR1cm4gYW5pbWF0aW9uOwpAQCAtMzA5LDkgKzMwOSw5IEBAIHZvaWQgUGxhdGZv
cm1DQUFuaW1hdGlvbk1hYzo6c2V0VGltaW5nRnVuY3Rpb24oY29uc3QgVGltaW5nRnVuY3Rpb24q
IHZhbHVlLCBib29sCiAgICAgW21fYW5pbWF0aW9uIHNldFRpbWluZ0Z1bmN0aW9uOnRvQ0FNZWRp
YVRpbWluZ0Z1bmN0aW9uKHZhbHVlLCByZXZlcnNlKV07CiB9CiAKLXZvaWQgUGxhdGZvcm1DQUFu
aW1hdGlvbk1hYzo6Y29weVRpbWluZ0Z1bmN0aW9uRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0
aW9uKiB2YWx1ZSkKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbk1hYzo6Y29weVRpbWluZ0Z1bmN0
aW9uRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uJiB2YWx1ZSkKIHsKLSAgICBbbV9hbmlt
YXRpb24gc2V0VGltaW5nRnVuY3Rpb246W3RvUGxhdGZvcm1DQUFuaW1hdGlvbk1hYyh2YWx1ZSkt
Pm1fYW5pbWF0aW9uLmdldCgpIHRpbWluZ0Z1bmN0aW9uXV07CisgICAgW21fYW5pbWF0aW9uIHNl
dFRpbWluZ0Z1bmN0aW9uOltkb3duY2FzdDxQbGF0Zm9ybUNBQW5pbWF0aW9uTWFjPih2YWx1ZSku
bV9hbmltYXRpb24uZ2V0KCkgdGltaW5nRnVuY3Rpb25dXTsKIH0KIAogYm9vbCBQbGF0Zm9ybUNB
QW5pbWF0aW9uTWFjOjppc1JlbW92ZWRPbkNvbXBsZXRpb24oKSBjb25zdApAQCAtMzkzLDEyICsz
OTMsMTIgQEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uTWFjOjpzZXRGcm9tVmFsdWUoY29uc3Qg
RmlsdGVyT3BlcmF0aW9uKiBvcGVyYXRpb24sIGludAogICAgIFtzdGF0aWNfY2FzdDxDQUJhc2lj
QW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldEZyb21WYWx1ZTp2YWx1ZS5nZXQoKV07
CiB9CiAKLXZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbk1hYzo6Y29weUZyb21WYWx1ZUZyb20oY29u
c3QgUGxhdGZvcm1DQUFuaW1hdGlvbiogdmFsdWUpCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25N
YWM6OmNvcHlGcm9tVmFsdWVGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24mIHZhbHVlKQog
ewotICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0gQmFzaWMgfHwgdmFsdWUtPmFuaW1hdGlvblR5
cGUoKSAhPSBCYXNpYykKKyAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEJhc2ljIHx8IHZhbHVl
LmFuaW1hdGlvblR5cGUoKSAhPSBCYXNpYykKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAg
ICBDQUJhc2ljQW5pbWF0aW9uKiBvdGhlckFuaW1hdGlvbiA9IHN0YXRpY19jYXN0PENBQmFzaWNB
bmltYXRpb24qPih0b1BsYXRmb3JtQ0FBbmltYXRpb25NYWModmFsdWUpLT5tX2FuaW1hdGlvbi5n
ZXQoKSk7CisgICAgQ0FCYXNpY0FuaW1hdGlvbiogb3RoZXJBbmltYXRpb24gPSBzdGF0aWNfY2Fz
dDxDQUJhc2ljQW5pbWF0aW9uKj4oZG93bmNhc3Q8UGxhdGZvcm1DQUFuaW1hdGlvbk1hYz4odmFs
dWUpLm1fYW5pbWF0aW9uLmdldCgpKTsKICAgICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlv
bio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRGcm9tVmFsdWU6W290aGVyQW5pbWF0aW9uIGZyb21W
YWx1ZV1dOwogfQogCkBAIC00NTAsMTIgKzQ1MCwxMiBAQCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRp
b25NYWM6OnNldFRvVmFsdWUoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBvcGVyYXRpb24sIGludCBp
bgogICAgIFtzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkp
IHNldFRvVmFsdWU6dmFsdWUuZ2V0KCldOwogfQogCi12b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25N
YWM6OmNvcHlUb1ZhbHVlRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uKiB2YWx1ZSkKK3Zv
aWQgUGxhdGZvcm1DQUFuaW1hdGlvbk1hYzo6Y29weVRvVmFsdWVGcm9tKGNvbnN0IFBsYXRmb3Jt
Q0FBbmltYXRpb24mIHZhbHVlKQogewotICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0gQmFzaWMg
fHwgdmFsdWUtPmFuaW1hdGlvblR5cGUoKSAhPSBCYXNpYykKKyAgICBpZiAoYW5pbWF0aW9uVHlw
ZSgpICE9IEJhc2ljIHx8IHZhbHVlLmFuaW1hdGlvblR5cGUoKSAhPSBCYXNpYykKICAgICAgICAg
cmV0dXJuOwogICAgICAgICAKLSAgICBDQUJhc2ljQW5pbWF0aW9uKiBvdGhlckFuaW1hdGlvbiA9
IHN0YXRpY19jYXN0PENBQmFzaWNBbmltYXRpb24qPih0b1BsYXRmb3JtQ0FBbmltYXRpb25NYWMo
dmFsdWUpLT5tX2FuaW1hdGlvbi5nZXQoKSk7CisgICAgQ0FCYXNpY0FuaW1hdGlvbiogb3RoZXJB
bmltYXRpb24gPSBzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4oZG93bmNhc3Q8UGxhdGZv
cm1DQUFuaW1hdGlvbk1hYz4odmFsdWUpLm1fYW5pbWF0aW9uLmdldCgpKTsKICAgICBbc3RhdGlj
X2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRUb1ZhbHVlOltv
dGhlckFuaW1hdGlvbiB0b1ZhbHVlXV07CiB9CiAKQEAgLTUzNiwxMiArNTM2LDEyIEBAIHZvaWQg
UGxhdGZvcm1DQUFuaW1hdGlvbk1hYzo6c2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8Rmls
dGVyT3BlcmF0aW9uPj4mIHZhCiAgICAgW3N0YXRpY19jYXN0PENBS2V5ZnJhbWVBbmltYXRpb24q
PihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0VmFsdWVzOmFycmF5XTsKIH0KIAotdm9pZCBQbGF0Zm9y
bUNBQW5pbWF0aW9uTWFjOjpjb3B5VmFsdWVzRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9u
KiB2YWx1ZSkKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbk1hYzo6Y29weVZhbHVlc0Zyb20oY29u
c3QgUGxhdGZvcm1DQUFuaW1hdGlvbiYgdmFsdWUpCiB7Ci0gICAgaWYgKGFuaW1hdGlvblR5cGUo
KSAhPSBLZXlmcmFtZSB8fCB2YWx1ZS0+YW5pbWF0aW9uVHlwZSgpICE9IEtleWZyYW1lKQorICAg
IGlmIChhbmltYXRpb25UeXBlKCkgIT0gS2V5ZnJhbWUgfHwgdmFsdWUuYW5pbWF0aW9uVHlwZSgp
ICE9IEtleWZyYW1lKQogICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgIENBS2V5ZnJhbWVB
bmltYXRpb24qIG90aGVyQW5pbWF0aW9uID0gc3RhdGljX2Nhc3Q8Q0FLZXlmcmFtZUFuaW1hdGlv
bio+KHRvUGxhdGZvcm1DQUFuaW1hdGlvbk1hYyh2YWx1ZSktPm1fYW5pbWF0aW9uLmdldCgpKTsK
KyAgICBDQUtleWZyYW1lQW5pbWF0aW9uKiBvdGhlckFuaW1hdGlvbiA9IHN0YXRpY19jYXN0PENB
S2V5ZnJhbWVBbmltYXRpb24qPihkb3duY2FzdDxQbGF0Zm9ybUNBQW5pbWF0aW9uTWFjPih2YWx1
ZSkubV9hbmltYXRpb24uZ2V0KCkpOwogICAgIFtzdGF0aWNfY2FzdDxDQUtleWZyYW1lQW5pbWF0
aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldFZhbHVlczpbb3RoZXJBbmltYXRpb24gdmFsdWVz
XV07CiB9CiAKQEAgLTU1NSw5ICs1NTUsOSBAQCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25NYWM6
OnNldEtleVRpbWVzKGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZhbHVlKQogICAgIFtzdGF0aWNfY2Fz
dDxDQUtleWZyYW1lQW5pbWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldEtleVRpbWVzOmFy
cmF5XTsKIH0KIAotdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uTWFjOjpjb3B5S2V5VGltZXNGcm9t
KGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24qIHZhbHVlKQordm9pZCBQbGF0Zm9ybUNBQW5pbWF0
aW9uTWFjOjpjb3B5S2V5VGltZXNGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24mIHZhbHVl
KQogewotICAgIENBS2V5ZnJhbWVBbmltYXRpb24qIG90aGVyID0gc3RhdGljX2Nhc3Q8Q0FLZXlm
cmFtZUFuaW1hdGlvbio+KHRvUGxhdGZvcm1DQUFuaW1hdGlvbk1hYyh2YWx1ZSktPm1fYW5pbWF0
aW9uLmdldCgpKTsKKyAgICBDQUtleWZyYW1lQW5pbWF0aW9uKiBvdGhlciA9IHN0YXRpY19jYXN0
PENBS2V5ZnJhbWVBbmltYXRpb24qPihkb3duY2FzdDxQbGF0Zm9ybUNBQW5pbWF0aW9uTWFjPih2
YWx1ZSkubV9hbmltYXRpb24uZ2V0KCkpOwogICAgIFtzdGF0aWNfY2FzdDxDQUtleWZyYW1lQW5p
bWF0aW9uKj4obV9hbmltYXRpb24uZ2V0KCkpIHNldEtleVRpbWVzOltvdGhlciBrZXlUaW1lc11d
OwogfQogCkBAIC01NzEsOCArNTcxLDggQEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uTWFjOjpz
ZXRUaW1pbmdGdW5jdGlvbnMoY29uc3QgVmVjdG9yPGNvbnN0IFRpbWluZ0Z1bmN0aW8KICAgICBb
c3RhdGljX2Nhc3Q8Q0FLZXlmcmFtZUFuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRU
aW1pbmdGdW5jdGlvbnM6YXJyYXldOwogfQogCi12b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25NYWM6
OmNvcHlUaW1pbmdGdW5jdGlvbnNGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24qIHZhbHVl
KQordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uTWFjOjpjb3B5VGltaW5nRnVuY3Rpb25zRnJvbShj
b25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uJiB2YWx1ZSkKIHsKLSAgICBDQUtleWZyYW1lQW5pbWF0
aW9uKiBvdGhlciA9IHN0YXRpY19jYXN0PENBS2V5ZnJhbWVBbmltYXRpb24qPih0b1BsYXRmb3Jt
Q0FBbmltYXRpb25NYWModmFsdWUpLT5tX2FuaW1hdGlvbi5nZXQoKSk7CisgICAgQ0FLZXlmcmFt
ZUFuaW1hdGlvbiogb3RoZXIgPSBzdGF0aWNfY2FzdDxDQUtleWZyYW1lQW5pbWF0aW9uKj4oZG93
bmNhc3Q8UGxhdGZvcm1DQUFuaW1hdGlvbk1hYz4odmFsdWUpLm1fYW5pbWF0aW9uLmdldCgpKTsK
ICAgICBbc3RhdGljX2Nhc3Q8Q0FLZXlmcmFtZUFuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgp
KSBzZXRUaW1pbmdGdW5jdGlvbnM6W290aGVyIHRpbWluZ0Z1bmN0aW9uc11dOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FM
YXllck1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRm
b3JtQ0FMYXllck1hYy5oCmluZGV4IDk4NmE5MDE1NWZmZmJhMzRiYzI5MDNkYWNmZWNiZmQ5MzU1
Y2E1ZDguLjY2YWUyNzIxMjM4NmJjYTJmNzdjMTgxZmNlOWEyMDExMThjMmU1NjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBTGF5
ZXJNYWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxh
dGZvcm1DQUxheWVyTWFjLmgKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
Y29uc3QgUGxhdGZvcm1DQUxheWVyTGlzdCogY3VzdG9tU3VibGF5ZXJzKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gbV9jdXN0b21TdWJsYXllcnMuZ2V0KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQg
YWRvcHRTdWJsYXllcnMoUGxhdGZvcm1DQUxheWVyJiBzb3VyY2UpIG92ZXJyaWRlOwogCi0gICAg
dmlydHVhbCB2b2lkIGFkZEFuaW1hdGlvbkZvcktleShjb25zdCBTdHJpbmcmIGtleSwgUGxhdGZv
cm1DQUFuaW1hdGlvbiopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBhZGRBbmltYXRpb25G
b3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIFBsYXRmb3JtQ0FBbmltYXRpb24mKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQW5pbWF0aW9uRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4g
YW5pbWF0aW9uRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5KSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgYW5pbWF0aW9uU3RhcnRlZChjb25zdCBTdHJpbmcmIGtleSwgQ0ZUaW1lSW50ZXJ2YWwg
YmVnaW5UaW1lKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBTGF5ZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUxheWVyTWFjLm1tCmluZGV4IDk1ZGYz
ZWU1MjljOWQxYTc5MWQ5NGE5MzUwY2IwZjI3MTQ4MjE0ZDAuLjFjMTUzZjk2ZGNjNzZiZmI4NmZm
Njg0YjdjMmEzYTU1YWI1YjA0N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBTGF5ZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FMYXllck1hYy5tbQpAQCAtNDUz
LDcgKzQ1Myw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyTWFjOjphZG9wdFN1YmxheWVycyhQbGF0
Zm9ybUNBTGF5ZXImIHNvdXJjZSkKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TCiB9CiAK
LXZvaWQgUGxhdGZvcm1DQUxheWVyTWFjOjphZGRBbmltYXRpb25Gb3JLZXkoY29uc3QgU3RyaW5n
JiBrZXksIFBsYXRmb3JtQ0FBbmltYXRpb24qIGFuaW1hdGlvbikKK3ZvaWQgUGxhdGZvcm1DQUxh
eWVyTWFjOjphZGRBbmltYXRpb25Gb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIFBsYXRmb3JtQ0FB
bmltYXRpb24mIGFuaW1hdGlvbikKIHsKICAgICAvLyBBZGQgdGhlIGRlbGVnYXRlCiAgICAgaWYg
KCFtX2RlbGVnYXRlKSB7CkBAIC00NjIsNyArNDYyLDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJN
YWM6OmFkZEFuaW1hdGlvbkZvcktleShjb25zdCBTdHJpbmcmIGtleSwgUGxhdGZvcm1DQUFuaW1h
dGkKICAgICAgICAgW3dlYkFuaW1hdGlvbkRlbGVnYXRlIHNldE93bmVyOnRoaXNdOwogICAgIH0K
ICAgICAKLSAgICBDQVByb3BlcnR5QW5pbWF0aW9uKiBwcm9wZXJ0eUFuaW1hdGlvbiA9IHN0YXRp
Y19jYXN0PENBUHJvcGVydHlBbmltYXRpb24qPih0b1BsYXRmb3JtQ0FBbmltYXRpb25NYWMoYW5p
bWF0aW9uKS0+cGxhdGZvcm1BbmltYXRpb24oKSk7CisgICAgQ0FQcm9wZXJ0eUFuaW1hdGlvbiog
cHJvcGVydHlBbmltYXRpb24gPSBzdGF0aWNfY2FzdDxDQVByb3BlcnR5QW5pbWF0aW9uKj4oZG93
bmNhc3Q8UGxhdGZvcm1DQUFuaW1hdGlvbk1hYz4oYW5pbWF0aW9uKS5wbGF0Zm9ybUFuaW1hdGlv
bigpKTsKICAgICBpZiAoIVtwcm9wZXJ0eUFuaW1hdGlvbiBkZWxlZ2F0ZV0pCiAgICAgICAgIFtw
cm9wZXJ0eUFuaW1hdGlvbiBzZXREZWxlZ2F0ZTpzdGF0aWNfY2FzdDxpZD4obV9kZWxlZ2F0ZS5n
ZXQoKSldOwogICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9QbGF0Zm9ybUNBQW5pbWF0aW9uV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBQW5pbWF0aW9uV2luLmNwcAppbmRleCA5
OTViZGQ2NWM3OGI4MTBhYTllOWExZDY1NDM4NGRkYTYwYmMzMjBkLi44MmNlM2RjODJkM2YzYTc1
NDFiNDU4ZjJjMmRlOTU2ZWE0Mjk4ZWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1hdGlvbldpbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FBbmltYXRpb25X
aW4uY3BwCkBAIC0xOTAsMTggKzE5MCwxOCBAQCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRp
b24+IFBsYXRmb3JtQ0FBbmltYXRpb25XaW46OmNvcHkoKSBjb25zdAogICAgIGFuaW1hdGlvbi0+
c2V0RmlsbE1vZGUoZmlsbE1vZGUoKSk7CiAgICAgYW5pbWF0aW9uLT5zZXRSZW1vdmVkT25Db21w
bGV0aW9uKGlzUmVtb3ZlZE9uQ29tcGxldGlvbigpKTsKICAgICBhbmltYXRpb24tPnNldEFkZGl0
aXZlKGlzQWRkaXRpdmUoKSk7Ci0gICAgYW5pbWF0aW9uLT5jb3B5VGltaW5nRnVuY3Rpb25Gcm9t
KHRoaXMpOworICAgIGFuaW1hdGlvbi0+Y29weVRpbWluZ0Z1bmN0aW9uRnJvbSgqdGhpcyk7CiAg
ICAgaWYgKHZhbHVlRnVuY3Rpb24oKSkKICAgICAgICAgYW5pbWF0aW9uLT5zZXRWYWx1ZUZ1bmN0
aW9uKHZhbHVlRnVuY3Rpb24oKSk7CiAgICAgCiAgICAgLy8gQ29weSB0aGUgc3BlY2lmaWMgQmFz
aWMgb3IgS2V5ZnJhbWUgdmFsdWVzCiAgICAgaWYgKGFuaW1hdGlvblR5cGUoKSA9PSBLZXlmcmFt
ZSkgewotICAgICAgICBhbmltYXRpb24tPmNvcHlWYWx1ZXNGcm9tKHRoaXMpOwotICAgICAgICBh
bmltYXRpb24tPmNvcHlLZXlUaW1lc0Zyb20odGhpcyk7Ci0gICAgICAgIGFuaW1hdGlvbi0+Y29w
eVRpbWluZ0Z1bmN0aW9uc0Zyb20odGhpcyk7CisgICAgICAgIGFuaW1hdGlvbi0+Y29weVZhbHVl
c0Zyb20oKnRoaXMpOworICAgICAgICBhbmltYXRpb24tPmNvcHlLZXlUaW1lc0Zyb20oKnRoaXMp
OworICAgICAgICBhbmltYXRpb24tPmNvcHlUaW1pbmdGdW5jdGlvbnNGcm9tKCp0aGlzKTsKICAg
ICB9IGVsc2UgewotICAgICAgICBhbmltYXRpb24tPmNvcHlGcm9tVmFsdWVGcm9tKHRoaXMpOwot
ICAgICAgICBhbmltYXRpb24tPmNvcHlUb1ZhbHVlRnJvbSh0aGlzKTsKKyAgICAgICAgYW5pbWF0
aW9uLT5jb3B5RnJvbVZhbHVlRnJvbSgqdGhpcyk7CisgICAgICAgIGFuaW1hdGlvbi0+Y29weVRv
VmFsdWVGcm9tKCp0aGlzKTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIGFuaW1hdGlvbjsKQEAg
LTI5Nyw5ICsyOTcsOSBAQCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25XaW46OnNldFRpbWluZ0Z1
bmN0aW9uKGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB2YWx1ZSwgYm9vbAogICAgIENBQ0ZBbmltYXRp
b25TZXRUaW1pbmdGdW5jdGlvbihtX2FuaW1hdGlvbi5nZXQoKSwgdG9DQUNGVGltaW5nRnVuY3Rp
b24odmFsdWUsIHJldmVyc2UpLmdldCgpKTsKIH0KIAotdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9u
V2luOjpjb3B5VGltaW5nRnVuY3Rpb25Gcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24qIHZh
bHVlKQordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uV2luOjpjb3B5VGltaW5nRnVuY3Rpb25Gcm9t
KGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24mIHZhbHVlKQogewotICAgIENBQ0ZUaW1pbmdGdW5j
dGlvblJlZiB0aW1pbmdGdW5jID0gQ0FDRkFuaW1hdGlvbkdldFRpbWluZ0Z1bmN0aW9uKHRvUGxh
dGZvcm1DQUFuaW1hdGlvbldpbih2YWx1ZSktPm1fYW5pbWF0aW9uLmdldCgpKTsKKyAgICBDQUNG
VGltaW5nRnVuY3Rpb25SZWYgdGltaW5nRnVuYyA9IENBQ0ZBbmltYXRpb25HZXRUaW1pbmdGdW5j
dGlvbihkb3duY2FzdDxQbGF0Zm9ybUNBQW5pbWF0aW9uV2luPih2YWx1ZSkubV9hbmltYXRpb24u
Z2V0KCkpOwogICAgIGlmICh0aW1pbmdGdW5jKQogICAgICAgICBDQUNGQW5pbWF0aW9uU2V0VGlt
aW5nRnVuY3Rpb24obV9hbmltYXRpb24uZ2V0KCksIHRpbWluZ0Z1bmMpOwogfQpAQCAtMzc5LDEy
ICszNzksMTIgQEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uV2luOjpzZXRGcm9tVmFsdWUoY29u
c3QgRmlsdGVyT3BlcmF0aW9uKiwgaW50KQogICAgIC8vIEZJWE1FOiBIYXJkd2FyZSBmaWx0ZXIg
YW5pbWF0aW9uIG5vdCBpbXBsZW1lbnRlZCBvbiBXaW5kb3dzCiB9CiAKLXZvaWQgUGxhdGZvcm1D
QUFuaW1hdGlvbldpbjo6Y29weUZyb21WYWx1ZUZyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlv
biogdmFsdWUpCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25XaW46OmNvcHlGcm9tVmFsdWVGcm9t
KGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24mIHZhbHVlKQogewotICAgIGlmIChhbmltYXRpb25U
eXBlKCkgIT0gQmFzaWMgfHwgdmFsdWUtPmFuaW1hdGlvblR5cGUoKSAhPSBCYXNpYykKKyAgICBp
ZiAoYW5pbWF0aW9uVHlwZSgpICE9IEJhc2ljIHx8IHZhbHVlLmFuaW1hdGlvblR5cGUoKSAhPSBC
YXNpYykKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIENBQ0ZBbmltYXRpb25TZXRGcm9tVmFs
dWUobV9hbmltYXRpb24uZ2V0KCksIENBQ0ZBbmltYXRpb25HZXRGcm9tVmFsdWUodG9QbGF0Zm9y
bUNBQW5pbWF0aW9uV2luKHZhbHVlKS0+cGxhdGZvcm1BbmltYXRpb24oKSkpOworICAgIENBQ0ZB
bmltYXRpb25TZXRGcm9tVmFsdWUobV9hbmltYXRpb24uZ2V0KCksIENBQ0ZBbmltYXRpb25HZXRG
cm9tVmFsdWUoZG93bmNhc3Q8UGxhdGZvcm1DQUFuaW1hdGlvbldpbj4oKnZhbHVlKS5wbGF0Zm9y
bUFuaW1hdGlvbigpKSk7CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbldpbjo6c2V0VG9W
YWx1ZShmbG9hdCB2YWx1ZSkKQEAgLTQzMCwxMiArNDMwLDEyIEBAIHZvaWQgUGxhdGZvcm1DQUFu
aW1hdGlvbldpbjo6c2V0VG9WYWx1ZShjb25zdCBGaWx0ZXJPcGVyYXRpb24qLCBpbnQpCiAgICAg
Ly8gRklYTUU6IEhhcmR3YXJlIGZpbHRlciBhbmltYXRpb24gbm90IGltcGxlbWVudGVkIG9uIFdp
bmRvd3MKIH0KIAotdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uV2luOjpjb3B5VG9WYWx1ZUZyb20o
Y29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiogdmFsdWUpCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRp
b25XaW46OmNvcHlUb1ZhbHVlRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uJiB2YWx1ZSkK
IHsKLSAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEJhc2ljIHx8IHZhbHVlLT5hbmltYXRpb25U
eXBlKCkgIT0gQmFzaWMpCisgICAgaWYgKGFuaW1hdGlvblR5cGUoKSAhPSBCYXNpYyB8fCB2YWx1
ZS5hbmltYXRpb25UeXBlKCkgIT0gQmFzaWMpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0g
ICAgQ0FDRkFuaW1hdGlvblNldFRvVmFsdWUobV9hbmltYXRpb24uZ2V0KCksIENBQ0ZBbmltYXRp
b25HZXRUb1ZhbHVlKHRvUGxhdGZvcm1DQUFuaW1hdGlvbldpbih2YWx1ZSktPnBsYXRmb3JtQW5p
bWF0aW9uKCkpKTsKKyAgICBDQUNGQW5pbWF0aW9uU2V0VG9WYWx1ZShtX2FuaW1hdGlvbi5nZXQo
KSwgQ0FDRkFuaW1hdGlvbkdldFRvVmFsdWUoZG93bmNhc3Q8UGxhdGZvcm1DQUFuaW1hdGlvbldp
bj4oKnZhbHVlKS5wbGF0Zm9ybUFuaW1hdGlvbigpKSk7CiB9CiAKIC8vIEtleWZyYW1lLWFuaW1h
dGlvbiBwcm9wZXJ0aWVzLgpAQCAtNTAyLDEyICs1MDIsMTIgQEAgdm9pZCBQbGF0Zm9ybUNBQW5p
bWF0aW9uV2luOjpzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+
ID4mLAogICAgIC8vIEZJWE1FOiBIYXJkd2FyZSBmaWx0ZXIgYW5pbWF0aW9uIG5vdCBpbXBsZW1l
bnRlZCBvbiBXaW5kb3dzCiB9CiAKLXZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbldpbjo6Y29weVZh
bHVlc0Zyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiogdmFsdWUpCit2b2lkIFBsYXRmb3Jt
Q0FBbmltYXRpb25XaW46OmNvcHlWYWx1ZXNGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24m
IHZhbHVlKQogewotICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0gS2V5ZnJhbWUgfHwgdmFsdWUt
PmFuaW1hdGlvblR5cGUoKSAhPSBLZXlmcmFtZSkKKyAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9
IEtleWZyYW1lIHx8IHZhbHVlLmFuaW1hdGlvblR5cGUoKSAhPSBLZXlmcmFtZSkKICAgICAgICAg
cmV0dXJuOwogICAgIAotICAgIENBQ0ZBbmltYXRpb25TZXRWYWx1ZXMobV9hbmltYXRpb24uZ2V0
KCksIENBQ0ZBbmltYXRpb25HZXRWYWx1ZXModG9QbGF0Zm9ybUNBQW5pbWF0aW9uV2luKHZhbHVl
KS0+cGxhdGZvcm1BbmltYXRpb24oKSkpOworICAgIENBQ0ZBbmltYXRpb25TZXRWYWx1ZXMobV9h
bmltYXRpb24uZ2V0KCksIENBQ0ZBbmltYXRpb25HZXRWYWx1ZXMoZG93bmNhc3Q8UGxhdGZvcm1D
QUFuaW1hdGlvbldpbj4oKnZhbHVlKS5wbGF0Zm9ybUFuaW1hdGlvbigpKSk7CiB9CiAKIHZvaWQg
UGxhdGZvcm1DQUFuaW1hdGlvbldpbjo6c2V0S2V5VGltZXMoY29uc3QgVmVjdG9yPGZsb2F0PiYg
dmFsdWUpCkBAIC01MjQsMTIgKzUyNCwxMiBAQCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25XaW46
OnNldEtleVRpbWVzKGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZhbHVlKQogICAgIENBQ0ZBbmltYXRp
b25TZXRLZXlUaW1lcyhtX2FuaW1hdGlvbi5nZXQoKSwgYXJyYXkuZ2V0KCkpOwogfQogCi12b2lk
IFBsYXRmb3JtQ0FBbmltYXRpb25XaW46OmNvcHlLZXlUaW1lc0Zyb20oY29uc3QgUGxhdGZvcm1D
QUFuaW1hdGlvbiogdmFsdWUpCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25XaW46OmNvcHlLZXlU
aW1lc0Zyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiYgdmFsdWUpCiB7CiAgICAgaWYgKGFu
aW1hdGlvblR5cGUoKSAhPSBLZXlmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ0FDRkFu
aW1hdGlvblNldEtleVRpbWVzKG1fYW5pbWF0aW9uLmdldCgpLCBDQUNGQW5pbWF0aW9uR2V0S2V5
VGltZXModG9QbGF0Zm9ybUNBQW5pbWF0aW9uV2luKHZhbHVlKS0+cGxhdGZvcm1BbmltYXRpb24o
KSkpOworICAgIENBQ0ZBbmltYXRpb25TZXRLZXlUaW1lcyhtX2FuaW1hdGlvbi5nZXQoKSwgQ0FD
RkFuaW1hdGlvbkdldEtleVRpbWVzKGRvd25jYXN0PFBsYXRmb3JtQ0FBbmltYXRpb25XaW4+KHZh
bHVlKS5wbGF0Zm9ybUFuaW1hdGlvbigpKSk7CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlv
bldpbjo6c2V0VGltaW5nRnVuY3Rpb25zKGNvbnN0IFZlY3Rvcjxjb25zdCBUaW1pbmdGdW5jdGlv
bio+JiB2YWx1ZSwgYm9vbCByZXZlcnNlKQpAQCAtNTQ3LDkgKzU0Nyw5IEBAIHZvaWQgUGxhdGZv
cm1DQUFuaW1hdGlvbldpbjo6c2V0VGltaW5nRnVuY3Rpb25zKGNvbnN0IFZlY3Rvcjxjb25zdCBU
aW1pbmdGdW5jdGlvCiAgICAgQ0FDRkFuaW1hdGlvblNldFRpbWluZ0Z1bmN0aW9ucyhtX2FuaW1h
dGlvbi5nZXQoKSwgYXJyYXkuZ2V0KCkpOwogfQogCi12b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25X
aW46OmNvcHlUaW1pbmdGdW5jdGlvbnNGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24qIHZh
bHVlKQordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uV2luOjpjb3B5VGltaW5nRnVuY3Rpb25zRnJv
bShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uJiB2YWx1ZSkKIHsKLSAgICBDQUNGQW5pbWF0aW9u
U2V0VGltaW5nRnVuY3Rpb25zKG1fYW5pbWF0aW9uLmdldCgpLCBDQUNGQW5pbWF0aW9uR2V0VGlt
aW5nRnVuY3Rpb25zKHRvUGxhdGZvcm1DQUFuaW1hdGlvbldpbih2YWx1ZSktPnBsYXRmb3JtQW5p
bWF0aW9uKCkpKTsKKyAgICBDQUNGQW5pbWF0aW9uU2V0VGltaW5nRnVuY3Rpb25zKG1fYW5pbWF0
aW9uLmdldCgpLCBDQUNGQW5pbWF0aW9uR2V0VGltaW5nRnVuY3Rpb25zKGRvd25jYXN0PFBsYXRm
b3JtQ0FBbmltYXRpb25XaW4+KHZhbHVlKS5wbGF0Zm9ybUFuaW1hdGlvbigpKSk7CiB9CiAKICNl
bmRpZiAvLyBQTEFURk9STShXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1hdGlvbldpbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FBbmltYXRpb25XaW4uaAppbmRl
eCAwZGFlZjllZTRlYTM3MmNjN2U0NGIyOGQxZTYyZTNlNDVmOWRhY2I3Li40OTY1YjgzOWJlNWZh
M2Q2ODUwMWRkZTA3ZjI5MTA3ZGFiYzY0ZWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1hdGlvbldpbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBQW5pbWF0aW9u
V2luLmgKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRGaWxs
TW9kZShGaWxsTW9kZVR5cGUpIG92ZXJyaWRlOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBzZXRU
aW1pbmdGdW5jdGlvbihjb25zdCBUaW1pbmdGdW5jdGlvbiosIGJvb2wgcmV2ZXJzZSA9IGZhbHNl
KSBvdmVycmlkZTsKLSAgICB2b2lkIGNvcHlUaW1pbmdGdW5jdGlvbkZyb20oY29uc3QgUGxhdGZv
cm1DQUFuaW1hdGlvbiopIG92ZXJyaWRlOworICAgIHZvaWQgY29weVRpbWluZ0Z1bmN0aW9uRnJv
bShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJv
b2wgaXNSZW1vdmVkT25Db21wbGV0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIHNldFJlbW92ZWRPbkNvbXBsZXRpb24oYm9vbCkgb3ZlcnJpZGU7CkBAIC05MCwxNCArOTAs
MTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRGcm9tVmFsdWUoY29uc3QgRmxvYXRQ
b2ludDNEJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldEZyb21WYWx1ZShjb25zdCBX
ZWJDb3JlOjpDb2xvciYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRGcm9tVmFsdWUo
Y29uc3QgRmlsdGVyT3BlcmF0aW9uKiwgaW50IGludGVybmFsRmlsdGVyUHJvcGVydHlJbmRleCkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNvcHlGcm9tVmFsdWVGcm9tKGNvbnN0IFBsYXRm
b3JtQ0FBbmltYXRpb24qKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgY29weUZyb21WYWx1
ZUZyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVh
bCB2b2lkIHNldFRvVmFsdWUoZmxvYXQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRU
b1ZhbHVlKGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Jikgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIHNldFRvVmFsdWUoY29uc3QgRmxvYXRQb2ludDNEJikgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIHNldFRvVmFsdWUoY29uc3QgV2ViQ29yZTo6Q29sb3ImKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VG9WYWx1ZShjb25zdCBGaWx0ZXJPcGVyYXRpb24q
LCBpbnQgaW50ZXJuYWxGaWx0ZXJQcm9wZXJ0eUluZGV4KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgY29weVRvVmFsdWVGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24qKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgY29weVRvVmFsdWVGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmlt
YXRpb24mKSBvdmVycmlkZTsKIAogICAgIC8vIEtleWZyYW1lLWFuaW1hdGlvbiBwcm9wZXJ0aWVz
LgogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPGZsb2F0PiYpIG92ZXJy
aWRlOwpAQCAtMTA1LDEzICsxMDUsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRW
YWx1ZXMoY29uc3QgVmVjdG9yPEZsb2F0UG9pbnQzRD4mKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb2xvcj4mKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8RmlsdGVyT3Bl
cmF0aW9uPj4mLCBpbnQgaW50ZXJuYWxGaWx0ZXJQcm9wZXJ0eUluZGV4KSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgY29weVZhbHVlc0Zyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiop
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBjb3B5VmFsdWVzRnJvbShjb25zdCBQbGF0Zm9y
bUNBQW5pbWF0aW9uJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0S2V5VGltZXMo
Y29uc3QgVmVjdG9yPGZsb2F0PiYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjb3B5S2V5
VGltZXNGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24qKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQgY29weUtleVRpbWVzRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uJikgb3Zl
cnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGltaW5nRnVuY3Rpb25zKGNvbnN0IFZlY3Rv
cjxjb25zdCBUaW1pbmdGdW5jdGlvbio+JiwgYm9vbCByZXZlcnNlID0gZmFsc2UpIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgdm9pZCBjb3B5VGltaW5nRnVuY3Rpb25zRnJvbShjb25zdCBQbGF0Zm9y
bUNBQW5pbWF0aW9uKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGNvcHlUaW1pbmdGdW5j
dGlvbnNGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24mKSBvdmVycmlkZTsKIAogcHJvdGVj
dGVkOgogICAgIFBsYXRmb3JtQ0FBbmltYXRpb25XaW4oQW5pbWF0aW9uVHlwZSwgY29uc3QgU3Ry
aW5nJiBrZXlQYXRoKTsKQEAgLTEyMSw5ICsxMjEsOSBAQCBwcml2YXRlOgogICAgIFJldGFpblB0
cjxDQUNGQW5pbWF0aW9uUmVmPiBtX2FuaW1hdGlvbjsKIH07CiAKLVBMQVRGT1JNX0NBQU5JTUFU
SU9OX1RZUEVfQ0FTVFMoUGxhdGZvcm1DQUFuaW1hdGlvbldpbiwgaXNQbGF0Zm9ybUNBQW5pbWF0
aW9uV2luKCkpCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLX0KK1NQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfQ0FBTklNQVRJT04oV2ViQ29yZTo6UGxhdGZvcm1DQUFuaW1hdGlvbldpbiwgaXNQbGF0
Zm9ybUNBQW5pbWF0aW9uV2luKCkpCiAKICNlbmRpZiAvLyBQTEFURk9STShXSU4pCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNB
TGF5ZXJXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1Bs
YXRmb3JtQ0FMYXllcldpbi5jcHAKaW5kZXggNzA0M2UyMWE2YWYyMzY5NGM3MDM0MjVkNWY4Yzc4
NjBjNTU2YTFiMi4uNjM2MzVkNmZkOWQwZjFlMGYzZjQ5NjY3MmQ1YjY5N2FiMTExZmM0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3Jt
Q0FMYXllcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
d2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHAKQEAgLTMwOSwxMiArMzA5LDEyIEBAIHZvaWQgUGxh
dGZvcm1DQUxheWVyV2luOjphZG9wdFN1YmxheWVycyhQbGF0Zm9ybUNBTGF5ZXImIHNvdXJjZSkK
ICAgICBzZXRTdWJsYXllcnMoc3VibGF5ZXJzKTsKIH0KIAotdm9pZCBQbGF0Zm9ybUNBTGF5ZXJX
aW46OmFkZEFuaW1hdGlvbkZvcktleShjb25zdCBTdHJpbmcmIGtleSwgUGxhdGZvcm1DQUFuaW1h
dGlvbiogYW5pbWF0aW9uKQordm9pZCBQbGF0Zm9ybUNBTGF5ZXJXaW46OmFkZEFuaW1hdGlvbkZv
cktleShjb25zdCBTdHJpbmcmIGtleSwgUGxhdGZvcm1DQUFuaW1hdGlvbiYgYW5pbWF0aW9uKQog
ewogICAgIC8vIEFkZCBpdCB0byB0aGUgYW5pbWF0aW9uIGxpc3QKLSAgICBtX2FuaW1hdGlvbnMu
YWRkKGtleSwgYW5pbWF0aW9uKTsKKyAgICBtX2FuaW1hdGlvbnMuYWRkKGtleSwgJmFuaW1hdGlv
bik7CiAKLSAgICBDQUNGTGF5ZXJBZGRBbmltYXRpb24obV9sYXllci5nZXQoKSwga2V5LmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCksIHRvUGxhdGZvcm1DQUFuaW1hdGlvbldpbihhbmltYXRpb24pLT5w
bGF0Zm9ybUFuaW1hdGlvbigpKTsKKyAgICBDQUNGTGF5ZXJBZGRBbmltYXRpb24obV9sYXllci5n
ZXQoKSwga2V5LmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGRvd25jYXN0PFBsYXRmb3JtQ0FBbmlt
YXRpb25XaW4+KGFuaW1hdGlvbikucGxhdGZvcm1BbmltYXRpb24oKSk7CiAgICAgc2V0TmVlZHND
b21taXQoKTsKIAogICAgIC8vIFRlbGwgdGhlIGhvc3QgYWJvdXQgaXQgc28gd2UgY2FuIGZpcmUg
dGhlIHN0YXJ0IGFuaW1hdGlvbiBldmVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5oCmluZGV4IDY2
ODNjMWM5MDZjNjcyNzUwNTFhMjlmYzEwNjU2YWExNjY1NzJhZDkuLmQwNjQ4ODA1YWMzM2Y1Yjk5
ODU2MWZkYWFhMGVjNGZhYzYwZWMwY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmgKQEAgLTUy
LDcgKzUyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgY29uc3QgUGxhdGZvcm1DQUxheWVyTGlz
dCogY3VzdG9tU3VibGF5ZXJzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9jdXN0b21TdWJs
YXllcnMuZ2V0KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgYWRvcHRTdWJsYXllcnMoUGxhdGZvcm1D
QUxheWVyJiBzb3VyY2UpIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGFkZEFuaW1hdGlv
bkZvcktleShjb25zdCBTdHJpbmcmIGtleSwgUGxhdGZvcm1DQUFuaW1hdGlvbiopIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgdm9pZCBhZGRBbmltYXRpb25Gb3JLZXkoY29uc3QgU3RyaW5nJiBrZXks
IFBsYXRmb3JtQ0FBbmltYXRpb24mKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
QW5pbWF0aW9uRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5KSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gYW5pbWF0aW9uRm9yS2V5KGNvbnN0IFN0
cmluZyYga2V5KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgYW5pbWF0aW9uU3RhcnRlZChj
b25zdCBTdHJpbmcmIGtleSwgQ0ZUaW1lSW50ZXJ2YWwgYmVnaW5UaW1lKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1D
QUFuaW1hdGlvblJlbW90ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLmgKaW5kZXggOTJlYmZmZDkzZjg4MTgxYmQ5ZWNk
MGUxYzQwZmQ3MTNiNGNhNzQwNC4uNTg3ODhjMTBhYWZkYWU0Y2Y2YjQ4NDI0ODU1ZmYzNWM2Y2Qw
YzY2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9Q
bGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLmgKQEAgLTc1LDcgKzc1LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRGaWxsTW9kZShGaWxsTW9kZVR5cGUpIG92
ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIHNldFRpbWluZ0Z1bmN0aW9uKGNvbnN0IFdlYkNv
cmU6OlRpbWluZ0Z1bmN0aW9uKiwgYm9vbCByZXZlcnNlID0gZmFsc2UpIG92ZXJyaWRlOwotICAg
IHZvaWQgY29weVRpbWluZ0Z1bmN0aW9uRnJvbShjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybUNBQW5p
bWF0aW9uKikgb3ZlcnJpZGU7CisgICAgdm9pZCBjb3B5VGltaW5nRnVuY3Rpb25Gcm9tKGNvbnN0
IFdlYkNvcmU6OlBsYXRmb3JtQ0FBbmltYXRpb24mKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwg
Ym9vbCBpc1JlbW92ZWRPbkNvbXBsZXRpb24oKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0UmVtb3ZlZE9uQ29tcGxldGlvbihib29sKSBvdmVycmlkZTsKQEAgLTkyLDE0ICs5
MiwxNCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEZyb21WYWx1ZShjb25zdCBXZWJD
b3JlOjpGbG9hdFBvaW50M0QmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RnJvbVZh
bHVlKGNvbnN0IFdlYkNvcmU6OkNvbG9yJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNl
dEZyb21WYWx1ZShjb25zdCBXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb24qLCBpbnQgaW50ZXJuYWxG
aWx0ZXJQcm9wZXJ0eUluZGV4KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY29weUZyb21W
YWx1ZUZyb20oY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1DQUFuaW1hdGlvbiopIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBjb3B5RnJvbVZhbHVlRnJvbShjb25zdCBXZWJDb3JlOjpQbGF0Zm9y
bUNBQW5pbWF0aW9uJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0VG9WYWx1ZShm
bG9hdCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFRvVmFsdWUoY29uc3QgV2ViQ29y
ZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
VG9WYWx1ZShjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50M0QmKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0VG9WYWx1ZShjb25zdCBXZWJDb3JlOjpDb2xvciYpIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRUb1ZhbHVlKGNvbnN0IFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbios
IGludCBpbnRlcm5hbEZpbHRlclByb3BlcnR5SW5kZXgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBjb3B5VG9WYWx1ZUZyb20oY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1DQUFuaW1hdGlvbiop
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBjb3B5VG9WYWx1ZUZyb20oY29uc3QgV2ViQ29y
ZTo6UGxhdGZvcm1DQUFuaW1hdGlvbiYpIG92ZXJyaWRlOwogCiAgICAgLy8gS2V5ZnJhbWUtYW5p
bWF0aW9uIHByb3BlcnRpZXMuCiAgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlcyhjb25zdCBWZWN0
b3I8ZmxvYXQ+Jikgb3ZlcnJpZGU7CkBAIC0xMDcsMTMgKzEwNywxMyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHNldFZhbHVlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRQb2ludDNE
PiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPFdl
YkNvcmU6OkNvbG9yPiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZXMoY29u
c3QgVmVjdG9yPFJlZlB0cjxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb24+PiYsIGludCBpbnRlcm5h
bEZpbHRlclByb3BlcnR5SW5kZXgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjb3B5VmFs
dWVzRnJvbShjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybUNBQW5pbWF0aW9uKikgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIGNvcHlWYWx1ZXNGcm9tKGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtQ0FB
bmltYXRpb24mKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRLZXlUaW1lcyhjb25z
dCBWZWN0b3I8ZmxvYXQ+Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNvcHlLZXlUaW1l
c0Zyb20oY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1DQUFuaW1hdGlvbiopIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCBjb3B5S2V5VGltZXNGcm9tKGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtQ0FB
bmltYXRpb24mKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRUaW1pbmdGdW5jdGlv
bnMoY29uc3QgVmVjdG9yPGNvbnN0IFdlYkNvcmU6OlRpbWluZ0Z1bmN0aW9uKj4mLCBib29sIHJl
dmVyc2UgPSBmYWxzZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNvcHlUaW1pbmdGdW5j
dGlvbnNGcm9tKGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtQ0FBbmltYXRpb24qKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgY29weVRpbWluZ0Z1bmN0aW9uc0Zyb20oY29uc3QgV2ViQ29yZTo6
UGxhdGZvcm1DQUFuaW1hdGlvbiYpIG92ZXJyaWRlOwogCiAgICAgQW5pbWF0aW9uVHlwZSBhbmlt
YXRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0aWVzLmFuaW1hdGlvblR5cGU7IH0K
ICAgICB2b2lkIHNldEhhc0V4cGxpY2l0QmVnaW5UaW1lKGJvb2wgaGFzRXhwbGljaXRCZWdpblRp
bWUpIHsgbV9wcm9wZXJ0aWVzLmhhc0V4cGxpY2l0QmVnaW5UaW1lID0gaGFzRXhwbGljaXRCZWdp
blRpbWU7IH0KQEAgLTI5Nyw4ICsyOTcsOCBAQCBwcml2YXRlOgogICAgIFByb3BlcnRpZXMgbV9w
cm9wZXJ0aWVzOwogfTsKIAotUExBVEZPUk1fQ0FBTklNQVRJT05fVFlQRV9DQVNUUyhQbGF0Zm9y
bUNBQW5pbWF0aW9uUmVtb3RlLCBpc1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUoKSkKLQogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ0FBTklNQVRJT04o
V2ViS2l0OjpQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLCBpc1BsYXRmb3JtQ0FBbmltYXRpb25S
ZW1vdGUoKSkKKwogI2VuZGlmIC8vIFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGVfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5p
bWF0aW9uUmVtb3RlLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9Q
bGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tCmluZGV4IDU4NjA0ZGFmYzJjODJlZWM4OGZmZjlh
NzczZjcxZGRkMTU1ZjM1YjQuLjU1MWJlMDk3MTNhYTBlZDU4Mzc0ODNkZjMxYzRlMjliNWI2ZDlk
YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxh
dGZvcm1DQUFuaW1hdGlvblJlbW90ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUubW0KQEAgLTI5NSwxOSArMjk1
LDE5IEBAIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gUGxhdGZvcm1DQUFuaW1hdGlv
blJlbW90ZTo6Y29weSgpIGNvbnN0CiAgICAgYW5pbWF0aW9uLT5zZXRGaWxsTW9kZShmaWxsTW9k
ZSgpKTsKICAgICBhbmltYXRpb24tPnNldFJlbW92ZWRPbkNvbXBsZXRpb24oaXNSZW1vdmVkT25D
b21wbGV0aW9uKCkpOwogICAgIGFuaW1hdGlvbi0+c2V0QWRkaXRpdmUoaXNBZGRpdGl2ZSgpKTsK
LSAgICBhbmltYXRpb24tPmNvcHlUaW1pbmdGdW5jdGlvbkZyb20odGhpcyk7CisgICAgYW5pbWF0
aW9uLT5jb3B5VGltaW5nRnVuY3Rpb25Gcm9tKCp0aGlzKTsKICAgICBhbmltYXRpb24tPnNldFZh
bHVlRnVuY3Rpb24odmFsdWVGdW5jdGlvbigpKTsKIAotICAgIHRvUGxhdGZvcm1DQUFuaW1hdGlv
blJlbW90ZShhbmltYXRpb24uZ2V0KCkpLT5zZXRIYXNFeHBsaWNpdEJlZ2luVGltZShoYXNFeHBs
aWNpdEJlZ2luVGltZSgpKTsKKyAgICBkb3duY2FzdDxQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3Rl
PigqYW5pbWF0aW9uKS5zZXRIYXNFeHBsaWNpdEJlZ2luVGltZShoYXNFeHBsaWNpdEJlZ2luVGlt
ZSgpKTsKICAgICAKICAgICAvLyBDb3B5IHRoZSBzcGVjaWZpYyBCYXNpYyBvciBLZXlmcmFtZSB2
YWx1ZXMuCiAgICAgaWYgKGFuaW1hdGlvblR5cGUoKSA9PSBLZXlmcmFtZSkgewotICAgICAgICBh
bmltYXRpb24tPmNvcHlWYWx1ZXNGcm9tKHRoaXMpOwotICAgICAgICBhbmltYXRpb24tPmNvcHlL
ZXlUaW1lc0Zyb20odGhpcyk7Ci0gICAgICAgIGFuaW1hdGlvbi0+Y29weVRpbWluZ0Z1bmN0aW9u
c0Zyb20odGhpcyk7CisgICAgICAgIGFuaW1hdGlvbi0+Y29weVZhbHVlc0Zyb20oKnRoaXMpOwor
ICAgICAgICBhbmltYXRpb24tPmNvcHlLZXlUaW1lc0Zyb20oKnRoaXMpOworICAgICAgICBhbmlt
YXRpb24tPmNvcHlUaW1pbmdGdW5jdGlvbnNGcm9tKCp0aGlzKTsKICAgICB9IGVsc2UgewotICAg
ICAgICBhbmltYXRpb24tPmNvcHlGcm9tVmFsdWVGcm9tKHRoaXMpOwotICAgICAgICBhbmltYXRp
b24tPmNvcHlUb1ZhbHVlRnJvbSh0aGlzKTsKKyAgICAgICAgYW5pbWF0aW9uLT5jb3B5RnJvbVZh
bHVlRnJvbSgqdGhpcyk7CisgICAgICAgIGFuaW1hdGlvbi0+Y29weVRvVmFsdWVGcm9tKCp0aGlz
KTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIGFuaW1hdGlvbjsKQEAgLTQxMSw3ICs0MTEsNyBA
QCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OnNldFRpbWluZ0Z1bmN0aW9uKGNvbnN0
IFRpbWluZ0Z1bmN0aW9uKiB2YWx1ZSwgYgogICAgIG1fcHJvcGVydGllcy5yZXZlcnNlVGltaW5n
RnVuY3Rpb25zID0gcmV2ZXJzZTsKIH0KIAotdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3Rl
Ojpjb3B5VGltaW5nRnVuY3Rpb25Gcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24qIHZhbHVl
KQordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpjb3B5VGltaW5nRnVuY3Rpb25Gcm9t
KGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24mIHZhbHVlKQogewogICAgIGNvcHlUaW1pbmdGdW5j
dGlvbnNGcm9tKHZhbHVlKTsKIH0KQEAgLTQ5MSwxNSArNDkxLDE1IEBAIHZvaWQgUGxhdGZvcm1D
QUFuaW1hdGlvblJlbW90ZTo6c2V0RnJvbVZhbHVlKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogb3Bl
cmF0aW9uLCBpCiAgICAgbV9wcm9wZXJ0aWVzLmtleVZhbHVlc1swXSA9IEtleWZyYW1lVmFsdWUo
b3BlcmF0aW9uLT5jbG9uZSgpKTsKIH0KIAotdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3Rl
Ojpjb3B5RnJvbVZhbHVlRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uKiB2YWx1ZSkKK3Zv
aWQgUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6Y29weUZyb21WYWx1ZUZyb20oY29uc3QgUGxh
dGZvcm1DQUFuaW1hdGlvbiYgdmFsdWUpCiB7Ci0gICAgY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlv
blJlbW90ZSogb3RoZXIgPSB0b1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUodmFsdWUpOworICAg
IGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUmIG90aGVyID0gZG93bmNhc3Q8UGxhdGZv
cm1DQUFuaW1hdGlvblJlbW90ZT4odmFsdWUpOwogCi0gICAgaWYgKG90aGVyLT5tX3Byb3BlcnRp
ZXMua2V5VmFsdWVzLmlzRW1wdHkoKSkKKyAgICBpZiAob3RoZXIubV9wcm9wZXJ0aWVzLmtleVZh
bHVlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBtX3Byb3BlcnRpZXMu
a2V5VmFsdWVzLnJlc2l6ZSgyKTsKLSAgICBtX3Byb3BlcnRpZXMua2V5VmFsdWVzWzBdID0gb3Ro
ZXItPm1fcHJvcGVydGllcy5rZXlWYWx1ZXNbMF07CisgICAgbV9wcm9wZXJ0aWVzLmtleVZhbHVl
c1swXSA9IG90aGVyLm1fcHJvcGVydGllcy5rZXlWYWx1ZXNbMF07CiB9CiAKIHZvaWQgUGxhdGZv
cm1DQUFuaW1hdGlvblJlbW90ZTo6c2V0VG9WYWx1ZShmbG9hdCB2YWx1ZSkKQEAgLTU0OSwxNCAr
NTQ5LDE0IEBAIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6c2V0VG9WYWx1ZShjb25z
dCBGaWx0ZXJPcGVyYXRpb24qIG9wZXJhdGlvbiwgaW50CiAgICAgbV9wcm9wZXJ0aWVzLmtleVZh
bHVlc1sxXSA9IEtleWZyYW1lVmFsdWUob3BlcmF0aW9uLT5jbG9uZSgpKTsKIH0KIAotdm9pZCBQ
bGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpjb3B5VG9WYWx1ZUZyb20oY29uc3QgUGxhdGZvcm1D
QUFuaW1hdGlvbiogdmFsdWUpCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OmNvcHlU
b1ZhbHVlRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uJiB2YWx1ZSkKIHsKLSAgICBjb25z
dCBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlKiBvdGhlciA9IHRvUGxhdGZvcm1DQUFuaW1hdGlv
blJlbW90ZSh2YWx1ZSk7CisgICAgY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZSYgb3Ro
ZXIgPSBkb3duY2FzdDxQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlPih2YWx1ZSk7CiAKLSAgICBp
ZiAob3RoZXItPm1fcHJvcGVydGllcy5rZXlWYWx1ZXMuc2l6ZSgpIDwgMikKKyAgICBpZiAob3Ro
ZXIubV9wcm9wZXJ0aWVzLmtleVZhbHVlcy5zaXplKCkgPCAyKQogICAgICAgICByZXR1cm47CiAg
ICAgbV9wcm9wZXJ0aWVzLmtleVZhbHVlcy5yZXNpemUoMik7Ci0gICAgbV9wcm9wZXJ0aWVzLmtl
eVZhbHVlc1sxXSA9IG90aGVyLT5tX3Byb3BlcnRpZXMua2V5VmFsdWVzWzFdOworICAgIG1fcHJv
cGVydGllcy5rZXlWYWx1ZXNbMV0gPSBvdGhlci5tX3Byb3BlcnRpZXMua2V5VmFsdWVzWzFdOwog
fQogCiAvLyBLZXlmcmFtZS1hbmltYXRpb24gcHJvcGVydGllcy4KQEAgLTYzMiwxMCArNjMyLDkg
QEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpzZXRWYWx1ZXMoY29uc3QgVmVjdG9y
PFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+PiYKICAgICBtX3Byb3BlcnRpZXMua2V5VmFsdWVzID0g
V1RGOjptb3ZlKGtleWZyYW1lcyk7CiB9CiAKLXZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90
ZTo6Y29weVZhbHVlc0Zyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiogdmFsdWUpCit2b2lk
IFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OmNvcHlWYWx1ZXNGcm9tKGNvbnN0IFBsYXRmb3Jt
Q0FBbmltYXRpb24mIHZhbHVlKQogewotICAgIGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb25SZW1v
dGUqIG90aGVyID0gdG9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlKHZhbHVlKTsKLSAgICBtX3By
b3BlcnRpZXMua2V5VmFsdWVzID0gb3RoZXItPm1fcHJvcGVydGllcy5rZXlWYWx1ZXM7CisgICAg
bV9wcm9wZXJ0aWVzLmtleVZhbHVlcyA9IGRvd25jYXN0PFBsYXRmb3JtQ0FBbmltYXRpb25SZW1v
dGU+KHZhbHVlKS5tX3Byb3BlcnRpZXMua2V5VmFsdWVzOwogfQogCiB2b2lkIFBsYXRmb3JtQ0FB
bmltYXRpb25SZW1vdGU6OnNldEtleVRpbWVzKGNvbnN0IFZlY3RvcjxmbG9hdD4mIGtleVRpbWVz
KQpAQCAtNjQzLDEwICs2NDIsOSBAQCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OnNl
dEtleVRpbWVzKGNvbnN0IFZlY3RvcjxmbG9hdD4mIGtleVRpbWVzKQogICAgIG1fcHJvcGVydGll
cy5rZXlUaW1lcyA9IGtleVRpbWVzOwogfQogCi12b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25SZW1v
dGU6OmNvcHlLZXlUaW1lc0Zyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiogdmFsdWUpCit2
b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OmNvcHlLZXlUaW1lc0Zyb20oY29uc3QgUGxh
dGZvcm1DQUFuaW1hdGlvbiYgdmFsdWUpCiB7Ci0gICAgY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlv
blJlbW90ZSogb3RoZXIgPSB0b1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUodmFsdWUpOwotICAg
IG1fcHJvcGVydGllcy5rZXlUaW1lcyA9IG90aGVyLT5tX3Byb3BlcnRpZXMua2V5VGltZXM7Cisg
ICAgbV9wcm9wZXJ0aWVzLmtleVRpbWVzID0gZG93bmNhc3Q8UGxhdGZvcm1DQUFuaW1hdGlvblJl
bW90ZT4odmFsdWUpLm1fcHJvcGVydGllcy5rZXlUaW1lczsKIH0KIAogdm9pZCBQbGF0Zm9ybUNB
QW5pbWF0aW9uUmVtb3RlOjpzZXRUaW1pbmdGdW5jdGlvbnMoY29uc3QgVmVjdG9yPGNvbnN0IFRp
bWluZ0Z1bmN0aW9uKj4mIHZhbHVlcywgYm9vbCByZXZlcnNlKQpAQCAtNjYxLDEyICs2NTksMTIg
QEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpzZXRUaW1pbmdGdW5jdGlvbnMoY29u
c3QgVmVjdG9yPGNvbnN0IFRpbWluZ0Z1bmMKICAgICBtX3Byb3BlcnRpZXMucmV2ZXJzZVRpbWlu
Z0Z1bmN0aW9ucyA9IHJldmVyc2U7CiB9CiAKLXZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90
ZTo6Y29weVRpbWluZ0Z1bmN0aW9uc0Zyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiogdmFs
dWUpCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OmNvcHlUaW1pbmdGdW5jdGlvbnNG
cm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24mIHZhbHVlKQogewotICAgIGNvbnN0IFBsYXRm
b3JtQ0FBbmltYXRpb25SZW1vdGUqIG90aGVyID0gdG9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3Rl
KHZhbHVlKTsKKyAgICBjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlJiBvdGhlciA9IGRv
d25jYXN0PFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU+KHZhbHVlKTsKIAotICAgIG1fcHJvcGVy
dGllcy50aW1pbmdGdW5jdGlvbnMgPSBvdGhlci0+bV9wcm9wZXJ0aWVzLnRpbWluZ0Z1bmN0aW9u
czsKLSAgICBtX3Byb3BlcnRpZXMucmV2ZXJzZVRpbWluZ0Z1bmN0aW9ucyA9IG90aGVyLT5tX3By
b3BlcnRpZXMucmV2ZXJzZVRpbWluZ0Z1bmN0aW9uczsKKyAgICBtX3Byb3BlcnRpZXMudGltaW5n
RnVuY3Rpb25zID0gb3RoZXIubV9wcm9wZXJ0aWVzLnRpbWluZ0Z1bmN0aW9uczsKKyAgICBtX3By
b3BlcnRpZXMucmV2ZXJzZVRpbWluZ0Z1bmN0aW9ucyA9IG90aGVyLm1fcHJvcGVydGllcy5yZXZl
cnNlVGltaW5nRnVuY3Rpb25zOwogfQogCiBzdGF0aWMgTlNPYmplY3QqIGFuaW1hdGlvblZhbHVl
RnJvbUtleWZyYW1lVmFsdWUoY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6S2V5ZnJh
bWVWYWx1ZSYga2V5ZnJhbWVWYWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcAppbmRl
eCA1YTI5ODZkMGRjM2I1Mjc1ZDU0YTc5NTQ0OTNmYzVkMWQ4YjAzZjBmLi42M2Q0NzVmNDUxMTcw
MTlkOTE3M2Q5NzA1NTY3NTcxMWI3MGRiMWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUu
Y3BwCkBAIC0zMjEsMTUgKzMyMSwxNSBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6YWRv
cHRTdWJsYXllcnMoUGxhdGZvcm1DQUxheWVyJiBzb3VyY2UpCiAgICAgc2V0U3VibGF5ZXJzKGxh
eWVyc1RvTW92ZSk7CiB9CiAKLXZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjphZGRBbmltYXRp
b25Gb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIFBsYXRmb3JtQ0FBbmltYXRpb24qIGFuaW1hdGlv
bikKK3ZvaWQgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjphZGRBbmltYXRpb25Gb3JLZXkoY29uc3Qg
U3RyaW5nJiBrZXksIFBsYXRmb3JtQ0FBbmltYXRpb24mIGFuaW1hdGlvbikKIHsKLSAgICBhdXRv
IGFkZFJlc3VsdCA9IG1fYW5pbWF0aW9ucy5zZXQoa2V5LCBhbmltYXRpb24pOworICAgIGF1dG8g
YWRkUmVzdWx0ID0gbV9hbmltYXRpb25zLnNldChrZXksICZhbmltYXRpb24pOwogICAgIGlmIChh
ZGRSZXN1bHQuaXNOZXdFbnRyeSkKLSAgICAgICAgbV9wcm9wZXJ0aWVzLmFkZGVkQW5pbWF0aW9u
cy5hcHBlbmQoc3RkOjpwYWlyPFN0cmluZywgUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6UHJv
cGVydGllcz4oa2V5LCB0b1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUoYW5pbWF0aW9uKS0+cHJv
cGVydGllcygpKSk7CisgICAgICAgIG1fcHJvcGVydGllcy5hZGRlZEFuaW1hdGlvbnMuYXBwZW5k
KHN0ZDo6cGFpcjxTdHJpbmcsIFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OlByb3BlcnRpZXM+
KGtleSwgZG93bmNhc3Q8UGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZT4oYW5pbWF0aW9uKS5wcm9w
ZXJ0aWVzKCkpKTsKICAgICBlbHNlIHsKICAgICAgICAgZm9yIChhdXRvJiBrZXlBbmltYXRpb25Q
YWlyIDogbV9wcm9wZXJ0aWVzLmFkZGVkQW5pbWF0aW9ucykgewogICAgICAgICAgICAgaWYgKGtl
eUFuaW1hdGlvblBhaXIuZmlyc3QgPT0ga2V5KSB7Ci0gICAgICAgICAgICAgICAga2V5QW5pbWF0
aW9uUGFpci5zZWNvbmQgPSB0b1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUoYW5pbWF0aW9uKS0+
cHJvcGVydGllcygpOworICAgICAgICAgICAgICAgIGtleUFuaW1hdGlvblBhaXIuc2Vjb25kID0g
ZG93bmNhc3Q8UGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZT4oYW5pbWF0aW9uKS5wcm9wZXJ0aWVz
KCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAg
LTM2NCw3ICszNjQsNyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6YW5pbWF0aW9uU3Rh
cnRlZChjb25zdCBTdHJpbmcmIGtleSwgQ0ZUaW1lSW50ZXJ2YWwgYgogewogICAgIGF1dG8gaXQg
PSBtX2FuaW1hdGlvbnMuZmluZChrZXkpOwogICAgIGlmIChpdCAhPSBtX2FuaW1hdGlvbnMuZW5k
KCkpCi0gICAgICAgIHRvUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZShpdC0+dmFsdWUuZ2V0KCkp
LT5kaWRTdGFydChiZWdpblRpbWUpOworICAgICAgICBkb3duY2FzdDxQbGF0Zm9ybUNBQW5pbWF0
aW9uUmVtb3RlPigqaXQtPnZhbHVlKS5kaWRTdGFydChiZWdpblRpbWUpOwogICAgIAogICAgIGlm
IChtX293bmVyKQogICAgICAgICBtX293bmVyLT5wbGF0Zm9ybUNBTGF5ZXJBbmltYXRpb25TdGFy
dGVkKGtleSwgYmVnaW5UaW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oCmluZGV4IDg2ODk1
NzZiNzkxMTc4ODJkNzFiNjI5MGE0M2RmNzUxZjE1ZDk5NzUuLjQ5Y2ZhOTE2YTY2ZWFkYmUxYmU1
ZDdlYWVmNTBjNTUwMTliYzBkZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaApAQCAtNjYs
NyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybUNB
TGF5ZXJMaXN0KiBjdXN0b21TdWJsYXllcnMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBudWxs
cHRyOyB9CiAgICAgdmlydHVhbCB2b2lkIGFkb3B0U3VibGF5ZXJzKFdlYkNvcmU6OlBsYXRmb3Jt
Q0FMYXllciYgc291cmNlKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGRBbmltYXRp
b25Gb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIFdlYkNvcmU6OlBsYXRmb3JtQ0FBbmltYXRpb24q
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkQW5pbWF0aW9uRm9yS2V5KGNvbnN0IFN0
cmluZyYga2V5LCBXZWJDb3JlOjpQbGF0Zm9ybUNBQW5pbWF0aW9uJikgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIHJlbW92ZUFuaW1hdGlvbkZvcktleShjb25zdCBTdHJpbmcmIGtleSkgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OlBsYXRmb3JtQ0FBbmltYXRp
b24+IGFuaW1hdGlvbkZvcktleShjb25zdCBTdHJpbmcmIGtleSkgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIGFuaW1hdGlvblN0YXJ0ZWQoY29uc3QgU3RyaW5nJiBrZXksIENGVGltZUludGVy
dmFsIGJlZ2luVGltZSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3
aW5nQXJlYS5tbQppbmRleCAxOTQxYWFhY2VhMjVlNDEzMmQ3ODBhMDMyMmFjMTk1ZGQyNWE1YzUw
Li5mZjdmYWM5ZGJhOGVmZjk4NTM0NjBhZWY3ZTJhNDhlN2YxOTU1YTUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRy
YXdpbmdBcmVhLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
VGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0KQEAgLTY3Myw3ICs2NzMsNyBAQCB2b2lk
IFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpjb21taXRUcmFuc2llbnRab29tKGRvdWJs
ZSBzY2FsZSwgRmxvYXRQb2ludAogICAgICAgICAgICAgZHJhd2luZ0FyZWEtPmFwcGx5VHJhbnNp
ZW50Wm9vbVRvUGFnZShzY2FsZSwgb3JpZ2luKTsKICAgICB9XTsKIAotICAgIHpvb21MYXllci0+
YWRkQW5pbWF0aW9uRm9yS2V5KCJ0cmFuc2llbnRab29tQ29tbWl0IiwgcmVuZGVyVmlld0FuaW1h
dGlvbi5nZXQoKSk7CisgICAgem9vbUxheWVyLT5hZGRBbmltYXRpb25Gb3JLZXkoInRyYW5zaWVu
dFpvb21Db21taXQiLCAqcmVuZGVyVmlld0FuaW1hdGlvbik7CiAKICAgICBpZiAoc2hhZG93Q0FM
YXllcikgewogICAgICAgICBGbG9hdFJlY3Qgc2hhZG93Qm91bmRzID0gc2hhZG93TGF5ZXJCb3Vu
ZHNGb3JGcmFtZShmcmFtZVZpZXcsIHNjYWxlKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239834</attachid>
            <date>2014-10-14 16:58:01 -0700</date>
            <delta_ts>2014-10-14 17:41:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137722-20141014165807.patch</filename>
            <type>text/plain</type>
            <size>50635</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NzExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjYzNGU1MmYzYTU4YmYy
YTQ1YzczZGIzNzBjOTZiYWYwN2ZlMWEwMC4uMGFmZjZkN2Y5ZTU2MGQxMmI3MzM1Mjk3MWIyMjA1
NWMzZjI0ODIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE0LTEwLTE0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIGlzPD4oKSAvIGRvd25j
YXN0PD4oKSBmb3IgUGxhdGZvcm1DQUFuaW1hdGlvbiBzdWJjbGFzc2VzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc3MjIKKworICAgICAgICBSZXZp
ZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgVXNlIGlzPD4oKSAvIGRvd25jYXN0PD4o
KSBmb3IgUGxhdGZvcm1DQUFuaW1hdGlvbiBzdWJjbGFzc2VzIGFuZCBjbGVhbgorICAgICAgICB1
cCB0aGUgc3Vycm91bmRpbmcgY29kZS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2
aW9yIGNoYW5nZS4KKworICAgICAgICAqIHBhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xs
ZXIubW06CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpIaWdo
bGlnaHQ6OmZhZGVJbik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlc092ZXJsYXlDb250cm9s
bGVyOjpIaWdobGlnaHQ6OmZhZGVPdXQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
L0dyYXBoaWNzTGF5ZXJDQS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6
Om1vdmVPckNvcHlMYXllckFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyQ0E6OnVwZGF0ZUFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
ckNBOjpzZXRBbmltYXRpb25PbkxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJDQTo6cGF1c2VDQUFuaW1hdGlvbk9uTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nh
L1BsYXRmb3JtQ0FBbmltYXRpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9Q
bGF0Zm9ybUNBTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxh
dGZvcm1DQUFuaW1hdGlvbk1hYy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL21h
Yy9QbGF0Zm9ybUNBQW5pbWF0aW9uTWFjLm1tOgorICAgICAgICAoUGxhdGZvcm1DQUFuaW1hdGlv
bk1hYzo6Y29weSk6CisgICAgICAgIChQbGF0Zm9ybUNBQW5pbWF0aW9uTWFjOjpjb3B5VGltaW5n
RnVuY3Rpb25Gcm9tKToKKyAgICAgICAgKFBsYXRmb3JtQ0FBbmltYXRpb25NYWM6OmNvcHlGcm9t
VmFsdWVGcm9tKToKKyAgICAgICAgKFBsYXRmb3JtQ0FBbmltYXRpb25NYWM6OmNvcHlUb1ZhbHVl
RnJvbSk6CisgICAgICAgIChQbGF0Zm9ybUNBQW5pbWF0aW9uTWFjOjpjb3B5VmFsdWVzRnJvbSk6
CisgICAgICAgIChQbGF0Zm9ybUNBQW5pbWF0aW9uTWFjOjpjb3B5S2V5VGltZXNGcm9tKToKKyAg
ICAgICAgKFBsYXRmb3JtQ0FBbmltYXRpb25NYWM6OmNvcHlUaW1pbmdGdW5jdGlvbnNGcm9tKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUxheWVyTWFjLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FMYXllck1hYy5t
bToKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllck1hYzo6YWRkQW5pbWF0aW9uRm9yS2V5KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1hdGlvbldpbi5j
cHA6CisgICAgICAgIChQbGF0Zm9ybUNBQW5pbWF0aW9uV2luOjpjb3B5KToKKyAgICAgICAgKFBs
YXRmb3JtQ0FBbmltYXRpb25XaW46OmNvcHlUaW1pbmdGdW5jdGlvbkZyb20pOgorICAgICAgICAo
UGxhdGZvcm1DQUFuaW1hdGlvbldpbjo6Y29weUZyb21WYWx1ZUZyb20pOgorICAgICAgICAoUGxh
dGZvcm1DQUFuaW1hdGlvbldpbjo6Y29weVRvVmFsdWVGcm9tKToKKyAgICAgICAgKFBsYXRmb3Jt
Q0FBbmltYXRpb25XaW46OmNvcHlWYWx1ZXNGcm9tKToKKyAgICAgICAgKFBsYXRmb3JtQ0FBbmlt
YXRpb25XaW46OmNvcHlLZXlUaW1lc0Zyb20pOgorICAgICAgICAoUGxhdGZvcm1DQUFuaW1hdGlv
bldpbjo6Y29weVRpbWluZ0Z1bmN0aW9uc0Zyb20pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9QbGF0Zm9ybUNBQW5pbWF0aW9uV2luLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5jcHA6CisgICAgICAgIChQbGF0Zm9y
bUNBTGF5ZXJXaW46OmFkZEFuaW1hdGlvbkZvcktleSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5oOgorCiAyMDE0LTEwLTE0ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5dIFVucmV2aWV3ZWQg
YnVpbGQgZml4IGFmdGVyIHIxNzQ2OTggYW5kIHIxNzQ3MDkuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYTkzMzNk
NDE4ZWQyNmY0YTgyZDVlYTJjOTYwODZkZTFjNjJiYzAzOS4uYzQyZWVlMjE5NTBiYmJhNmU3YWEy
NjQ3NzgwMjMwZmQzZDBiMmZiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE0LTEw
LTE0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIGlzPD4o
KSAvIGRvd25jYXN0PD4oKSBmb3IgUGxhdGZvcm1DQUFuaW1hdGlvbiBzdWJjbGFzc2VzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc3MjIKKworICAg
ICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgVXNlIGlzPD4oKSAvIGRv
d25jYXN0PD4oKSBmb3IgUGxhdGZvcm1DQUFuaW1hdGlvbiBzdWJjbGFzc2VzIGFuZCBjbGVhbgor
ICAgICAgICB1cCB0aGUgc3Vycm91bmRpbmcgY29kZS4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZS5tbToKKyAgICAgICAg
KFdlYktpdDo6UGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6Y29weSk6CisgICAgICAgIChXZWJL
aXQ6OlBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OmNvcHlUaW1pbmdGdW5jdGlvbkZyb20pOgor
ICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpjb3B5RnJvbVZhbHVl
RnJvbSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OmNvcHlU
b1ZhbHVlRnJvbSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6
OmNvcHlWYWx1ZXNGcm9tKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZvcm1DQUFuaW1hdGlvblJl
bW90ZTo6Y29weUtleVRpbWVzRnJvbSk6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtQ0FBbmlt
YXRpb25SZW1vdGU6OmNvcHlUaW1pbmdGdW5jdGlvbnNGcm9tKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlBsYXRmb3JtQ0FMYXllclJlbW90ZTo6YWRkQW5pbWF0aW9uRm9yS2V5KToKKyAgICAgICAg
KFdlYktpdDo6UGxhdGZvcm1DQUxheWVyUmVtb3RlOjphbmltYXRpb25TdGFydGVkKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWEubW06CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpj
b21taXRUcmFuc2llbnRab29tKToKKwogMjAxNC0xMC0xNCAgQWxleGV5IFByb3NrdXJ5YWtvdiAg
PGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTY1MzU2KTogSXNzdWVzIHdp
dGggSmFwYW5lc2UgdGV4dCBpbnB1dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9t
YWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvbWFj
L1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW0KaW5kZXggMGZjMzNhNGIyNjVmNGY2MTRkZDNk
MDQyZTExNTVjNDVmYjVmNzhhMi4uOTBhZTU5MDRjZjRjZTU2YjNiZDdkOTgyNDJmZDFiZTVjOTE0
N2ViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvU2VydmljZXNPdmVybGF5
Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9TZXJ2aWNlc092ZXJs
YXlDb250cm9sbGVyLm1tCkBAIC0xNzgsNyArMTc4LDcgQEAgdm9pZCBTZXJ2aWNlc092ZXJsYXlD
b250cm9sbGVyOjpIaWdobGlnaHQ6OmZhZGVJbigpCiAgICAgW2FuaW1hdGlvbiBzZXRUb1ZhbHVl
OkAxXTsKIAogICAgIFJlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBwbGF0Zm9ybUFuaW1hdGlv
biA9IFBsYXRmb3JtQ0FBbmltYXRpb25NYWM6OmNyZWF0ZShhbmltYXRpb24uZ2V0KCkpOwotICAg
IGRvd25jYXN0PEdyYXBoaWNzTGF5ZXJDQT4oKmxheWVyKCkpLnBsYXRmb3JtQ0FMYXllcigpLT5h
ZGRBbmltYXRpb25Gb3JLZXkoIkZhZGVIaWdobGlnaHRJbiIsIHBsYXRmb3JtQW5pbWF0aW9uLmdl
dCgpKTsKKyAgICBkb3duY2FzdDxHcmFwaGljc0xheWVyQ0E+KCpsYXllcigpKS5wbGF0Zm9ybUNB
TGF5ZXIoKS0+YWRkQW5pbWF0aW9uRm9yS2V5KCJGYWRlSGlnaGxpZ2h0SW4iLCAqcGxhdGZvcm1B
bmltYXRpb24pOwogfQogCiB2b2lkIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OkhpZ2hsaWdo
dDo6ZmFkZU91dCgpCkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBTZXJ2aWNlc092ZXJsYXlDb250
cm9sbGVyOjpIaWdobGlnaHQ6OmZhZGVPdXQoKQogICAgIH1dOwogCiAgICAgUmVmUHRyPFBsYXRm
b3JtQ0FBbmltYXRpb24+IHBsYXRmb3JtQW5pbWF0aW9uID0gUGxhdGZvcm1DQUFuaW1hdGlvbk1h
Yzo6Y3JlYXRlKGFuaW1hdGlvbi5nZXQoKSk7Ci0gICAgZG93bmNhc3Q8R3JhcGhpY3NMYXllckNB
PigqbGF5ZXIoKSkucGxhdGZvcm1DQUxheWVyKCktPmFkZEFuaW1hdGlvbkZvcktleSgiRmFkZUhp
Z2hsaWdodE91dCIsIHBsYXRmb3JtQW5pbWF0aW9uLmdldCgpKTsKKyAgICBkb3duY2FzdDxHcmFw
aGljc0xheWVyQ0E+KCpsYXllcigpKS5wbGF0Zm9ybUNBTGF5ZXIoKS0+YWRkQW5pbWF0aW9uRm9y
S2V5KCJGYWRlSGlnaGxpZ2h0T3V0IiwgKnBsYXRmb3JtQW5pbWF0aW9uKTsKICAgICBbQ0FUcmFu
c2FjdGlvbiBjb21taXRdOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCA5NjAyNjBmMGMxMTUxNjQz
NTEyNDI0ZjA4ZjVkMjM2Y2JkY2MwOGYzLi42MDYxN2MyZTBmNzA3NTIyNTMwYzMxMzEyM2M3NGRk
Yzk0MDZjZmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9HcmFwaGljc0xheWVyQ0EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKQEAgLTU0OSwxMSArNTQ5LDExIEBAIHZvaWQgR3Jh
cGhpY3NMYXllckNBOjptb3ZlT3JDb3B5TGF5ZXJBbmltYXRpb24oTW92ZU9yQ29weSBvcGVyYXRp
b24sIGNvbnN0IFN0cmluCiAgICAgc3dpdGNoIChvcGVyYXRpb24pIHsKICAgICBjYXNlIE1vdmU6
CiAgICAgICAgIGZyb21MYXllci0+cmVtb3ZlQW5pbWF0aW9uRm9yS2V5KGFuaW1hdGlvbklkZW50
aWZpZXIpOwotICAgICAgICB0b0xheWVyLT5hZGRBbmltYXRpb25Gb3JLZXkoYW5pbWF0aW9uSWRl
bnRpZmllciwgYW5pbS5nZXQoKSk7CisgICAgICAgIHRvTGF5ZXItPmFkZEFuaW1hdGlvbkZvcktl
eShhbmltYXRpb25JZGVudGlmaWVyLCAqYW5pbSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2Fz
ZSBDb3B5OgotICAgICAgICB0b0xheWVyLT5hZGRBbmltYXRpb25Gb3JLZXkoYW5pbWF0aW9uSWRl
bnRpZmllciwgYW5pbS5nZXQoKSk7CisgICAgICAgIHRvTGF5ZXItPmFkZEFuaW1hdGlvbkZvcktl
eShhbmltYXRpb25JZGVudGlmaWVyLCAqYW5pbSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0K
QEAgLTIxMDksNyArMjEwOSw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjp1cGRhdGVBbmltYXRp
b25zKCkKICAgICBpZiAoKG51bUFuaW1hdGlvbnMgPSBtX3VuY29taXR0ZWRBbmltYXRpb25zLnNp
emUoKSkpIHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1BbmltYXRpb25zOyAr
K2kpIHsKICAgICAgICAgICAgIGNvbnN0IExheWVyUHJvcGVydHlBbmltYXRpb24mIHBlbmRpbmdB
bmltYXRpb24gPSBtX3VuY29taXR0ZWRBbmltYXRpb25zW2ldOwotICAgICAgICAgICAgc2V0QW5p
bWF0aW9uT25MYXllcihwZW5kaW5nQW5pbWF0aW9uLm1fYW5pbWF0aW9uLmdldCgpLCBwZW5kaW5n
QW5pbWF0aW9uLm1fcHJvcGVydHksIHBlbmRpbmdBbmltYXRpb24ubV9uYW1lLCBwZW5kaW5nQW5p
bWF0aW9uLm1faW5kZXgsIHBlbmRpbmdBbmltYXRpb24ubV9zdWJJbmRleCwgcGVuZGluZ0FuaW1h
dGlvbi5tX3RpbWVPZmZzZXQpOworICAgICAgICAgICAgc2V0QW5pbWF0aW9uT25MYXllcigqcGVu
ZGluZ0FuaW1hdGlvbi5tX2FuaW1hdGlvbiwgcGVuZGluZ0FuaW1hdGlvbi5tX3Byb3BlcnR5LCBw
ZW5kaW5nQW5pbWF0aW9uLm1fbmFtZSwgcGVuZGluZ0FuaW1hdGlvbi5tX2luZGV4LCBwZW5kaW5n
QW5pbWF0aW9uLm1fc3ViSW5kZXgsIHBlbmRpbmdBbmltYXRpb24ubV90aW1lT2Zmc2V0KTsKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgQW5pbWF0aW9uc01hcDo6aXRlcmF0b3IgaXQgPSBtX3J1
bm5pbmdBbmltYXRpb25zLmZpbmQocGVuZGluZ0FuaW1hdGlvbi5tX25hbWUpOwogICAgICAgICAg
ICAgaWYgKGl0ID09IG1fcnVubmluZ0FuaW1hdGlvbnMuZW5kKCkpIHsKQEAgLTIxNDEsMTIgKzIx
NDEsMTIgQEAgYm9vbCBHcmFwaGljc0xheWVyQ0E6OmlzUnVubmluZ1RyYW5zZm9ybUFuaW1hdGlv
bigpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEdyYXBoaWNzTGF5ZXJDQTo6
c2V0QW5pbWF0aW9uT25MYXllcihQbGF0Zm9ybUNBQW5pbWF0aW9uKiBjYUFuaW0sIEFuaW1hdGVk
UHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBpbnQgaW5k
ZXgsIGludCBzdWJJbmRleCwgZG91YmxlIHRpbWVPZmZzZXQpCit2b2lkIEdyYXBoaWNzTGF5ZXJD
QTo6c2V0QW5pbWF0aW9uT25MYXllcihQbGF0Zm9ybUNBQW5pbWF0aW9uJiBjYUFuaW0sIEFuaW1h
dGVkUHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBpbnQg
aW5kZXgsIGludCBzdWJJbmRleCwgZG91YmxlIHRpbWVPZmZzZXQpCiB7CiAgICAgUGxhdGZvcm1D
QUxheWVyKiBsYXllciA9IGFuaW1hdGVkTGF5ZXIocHJvcGVydHkpOwogCiAgICAgaWYgKHRpbWVP
ZmZzZXQpCi0gICAgICAgIGNhQW5pbS0+c2V0QmVnaW5UaW1lKENBQ3VycmVudE1lZGlhVGltZSgp
IC0gdGltZU9mZnNldCk7CisgICAgICAgIGNhQW5pbS5zZXRCZWdpblRpbWUoQ0FDdXJyZW50TWVk
aWFUaW1lKCkgLSB0aW1lT2Zmc2V0KTsKIAogICAgIFN0cmluZyBhbmltYXRpb25JRCA9IGFuaW1h
dGlvbklkZW50aWZpZXIoYW5pbWF0aW9uTmFtZSwgcHJvcGVydHksIGluZGV4LCBzdWJJbmRleCk7
CiAKQEAgLTIyMjEsNyArMjIyMSw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpwYXVzZUNBQW5p
bWF0aW9uT25MYXllcihBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHksIGNvbnN0CiAgICAgbmV3
QW5pbS0+c2V0U3BlZWQoMCk7CiAgICAgbmV3QW5pbS0+c2V0VGltZU9mZnNldCh0aW1lT2Zmc2V0
KTsKICAgICAKLSAgICBsYXllci0+YWRkQW5pbWF0aW9uRm9yS2V5KGFuaW1hdGlvbklELCBuZXdB
bmltLmdldCgpKTsgLy8gVGhpcyB3aWxsIHJlcGxhY2UgdGhlIHJ1bm5pbmcgYW5pbWF0aW9uLgor
ICAgIGxheWVyLT5hZGRBbmltYXRpb25Gb3JLZXkoYW5pbWF0aW9uSUQsICpuZXdBbmltKTsgLy8g
VGhpcyB3aWxsIHJlcGxhY2UgdGhlIHJ1bm5pbmcgYW5pbWF0aW9uLgogCiAgICAgLy8gUGF1c2Ug
dGhlIGFuaW1hdGlvbnMgb24gdGhlIGNsb25lcyB0b28uCiAgICAgaWYgKExheWVyTWFwKiBsYXll
ckNsb25lTWFwID0gYW5pbWF0ZWRMYXllckNsb25lcyhwcm9wZXJ0eSkpIHsKQEAgLTIyMzAsNyAr
MjIzMCw3IEBAIHZvaWQgR3JhcGhpY3NMYXllckNBOjpwYXVzZUNBQW5pbWF0aW9uT25MYXllcihB
bmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHksIGNvbnN0CiAgICAgICAgICAgICAvLyBTa2lwIGlt
bWVkaWF0ZSByZXBsaWNhcywgc2luY2UgdGhleSBtb3ZlIHdpdGggdGhlIG9yaWdpbmFsLgogICAg
ICAgICAgICAgaWYgKG1fcmVwbGljYUxheWVyICYmIGlzUmVwbGljYXRlZFJvb3RDbG9uZShpdC0+
a2V5KSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGl0LT52YWx1ZS0+
YWRkQW5pbWF0aW9uRm9yS2V5KGFuaW1hdGlvbklELCBuZXdBbmltLmdldCgpKTsKKyAgICAgICAg
ICAgIGl0LT52YWx1ZS0+YWRkQW5pbWF0aW9uRm9yS2V5KGFuaW1hdGlvbklELCAqbmV3QW5pbSk7
CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5oCmluZGV4IGRmYzdlOGFmOTA5MjMxN2EyZWVi
OWFmMDA3OGQxYTM5ODg4NTc3NGMuLjc1MGU5Zjk3ZDNlOGY2YjRjNTI2YzBjN2IzMzBhNmU0ZmY0
ZWM4MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dy
YXBoaWNzTGF5ZXJDQS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L0dyYXBoaWNzTGF5ZXJDQS5oCkBAIC0zODgsNyArMzg4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGVuc3VyZVN0cnVjdHVyYWxMYXllcihTdHJ1Y3R1cmFsTGF5ZXJQdXJwb3NlKTsKICAgICBTdHJ1
Y3R1cmFsTGF5ZXJQdXJwb3NlIHN0cnVjdHVyYWxMYXllclB1cnBvc2UoKSBjb25zdDsKIAotICAg
IHZvaWQgc2V0QW5pbWF0aW9uT25MYXllcihQbGF0Zm9ybUNBQW5pbWF0aW9uKiwgQW5pbWF0ZWRQ
cm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGludCBpbmRleCwgaW50IHN1
YkluZGV4LCBkb3VibGUgdGltZU9mZnNldCk7CisgICAgdm9pZCBzZXRBbmltYXRpb25PbkxheWVy
KFBsYXRmb3JtQ0FBbmltYXRpb24mLCBBbmltYXRlZFByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYg
YW5pbWF0aW9uTmFtZSwgaW50IGluZGV4LCBpbnQgc3ViSW5kZXgsIGRvdWJsZSB0aW1lT2Zmc2V0
KTsKICAgICBib29sIHJlbW92ZUNBQW5pbWF0aW9uRnJvbUxheWVyKEFuaW1hdGVkUHJvcGVydHlJ
RCwgY29uc3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBpbnQgaW5kZXgsIGludCBzdWJJTmRleCk7
CiAgICAgdm9pZCBwYXVzZUNBQW5pbWF0aW9uT25MYXllcihBbmltYXRlZFByb3BlcnR5SUQsIGNv
bnN0IFN0cmluZyYgYW5pbWF0aW9uTmFtZSwgaW50IGluZGV4LCBpbnQgc3ViSW5kZXgsIGRvdWJs
ZSB0aW1lT2Zmc2V0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvUGxhdGZvcm1DQUFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvUGxhdGZvcm1DQUFuaW1hdGlvbi5oCmluZGV4IGE1YmE2OTNiNGMzNzhlNzVk
MDdhM2YxYzM2NTRlMzRiN2I3MzI1NjcuLjUzMzE4OTYyZjAxOGIzYmM5ZDNjZTU1MDQzOGQ1MTFj
N2UzN2QwMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L1BsYXRmb3JtQ0FBbmltYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9QbGF0Zm9ybUNBQW5pbWF0aW9uLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRl
ICJGbG9hdFBvaW50M0QuaCIKICNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzcsNyArNzgs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEZpbGxNb2RlKEZpbGxNb2RlVHlwZSkg
PSAwOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBzZXRUaW1pbmdGdW5jdGlvbihjb25zdCBUaW1p
bmdGdW5jdGlvbiosIGJvb2wgcmV2ZXJzZSA9IGZhbHNlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGNvcHlUaW1pbmdGdW5jdGlvbkZyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiopID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgY29weVRpbWluZ0Z1bmN0aW9uRnJvbShjb25zdCBQbGF0Zm9ybUNB
QW5pbWF0aW9uJikgPSAwOwogCiAgICAgdmlydHVhbCBib29sIGlzUmVtb3ZlZE9uQ29tcGxldGlv
bigpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UmVtb3ZlZE9uQ29tcGxldGlvbihi
b29sKSA9IDA7CkBAIC05NCwxNCArOTUsMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBz
ZXRGcm9tVmFsdWUoY29uc3QgRmxvYXRQb2ludDNEJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRGcm9tVmFsdWUoY29uc3QgV2ViQ29yZTo6Q29sb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHNldEZyb21WYWx1ZShjb25zdCBGaWx0ZXJPcGVyYXRpb24qLCBpbnQgaW50ZXJuYWxGaWx0ZXJQ
cm9wZXJ0eUluZGV4KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNvcHlGcm9tVmFsdWVGcm9tKGNv
bnN0IFBsYXRmb3JtQ0FBbmltYXRpb24qKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvcHlGcm9t
VmFsdWVGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24mKSA9IDA7CiAKICAgICB2aXJ0dWFs
IHZvaWQgc2V0VG9WYWx1ZShmbG9hdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRUb1ZhbHVl
KGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4JikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRUb1ZhbHVlKGNvbnN0IEZsb2F0UG9pbnQzRCYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0VG9WYWx1ZShjb25zdCBXZWJDb3JlOjpDb2xvciYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0VG9WYWx1ZShjb25zdCBGaWx0ZXJPcGVyYXRpb24qLCBpbnQgaW50ZXJuYWxGaWx0ZXJQ
cm9wZXJ0eUluZGV4KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNvcHlUb1ZhbHVlRnJvbShjb25z
dCBQbGF0Zm9ybUNBQW5pbWF0aW9uKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjb3B5VG9WYWx1
ZUZyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiYpID0gMDsKIAogICAgIC8vIEtleWZyYW1l
LWFuaW1hdGlvbiBwcm9wZXJ0aWVzLgogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZXMoY29uc3Qg
VmVjdG9yPGZsb2F0PiYpID0gMDsKQEAgLTEwOSwxMyArMTEwLDEzIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgc2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxGbG9hdFBvaW50M0Q+JikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkNvbG9yPiYp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8Rmls
dGVyT3BlcmF0aW9uPj4mLCBpbnQgaW50ZXJuYWxGaWx0ZXJQcm9wZXJ0eUluZGV4KSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGNvcHlWYWx1ZXNGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24q
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNvcHlWYWx1ZXNGcm9tKGNvbnN0IFBsYXRmb3JtQ0FB
bmltYXRpb24mKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0S2V5VGltZXMoY29uc3QgVmVj
dG9yPGZsb2F0PiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY29weUtleVRpbWVzRnJvbShjb25z
dCBQbGF0Zm9ybUNBQW5pbWF0aW9uKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjb3B5S2V5VGlt
ZXNGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24mKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZv
aWQgc2V0VGltaW5nRnVuY3Rpb25zKGNvbnN0IFZlY3Rvcjxjb25zdCBUaW1pbmdGdW5jdGlvbio+
JiwgYm9vbCByZXZlcnNlID0gZmFsc2UpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgY29weVRpbWlu
Z0Z1bmN0aW9uc0Zyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiopID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgY29weVRpbWluZ0Z1bmN0aW9uc0Zyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlv
biYpID0gMDsKIAogICAgIHZvaWQgc2V0QWN0dWFsU3RhcnRUaW1lSWZOZWVkZWQoQ0ZUaW1lSW50
ZXJ2YWwgdCkKICAgICB7CkBAIC0xMzUsOSArMTM2LDExIEBAIHByaXZhdGU6CiAgICAgQW5pbWF0
aW9uVHlwZSBtX3R5cGU7CiB9OwogCi0jZGVmaW5lIFBMQVRGT1JNX0NBQU5JTUFUSU9OX1RZUEVf
Q0FTVFMoVG9WYWx1ZVR5cGVOYW1lLCBwcmVkaWNhdGUpIFwKLSAgICBUWVBFX0NBU1RTX0JBU0Uo
VG9WYWx1ZVR5cGVOYW1lLCBXZWJDb3JlOjpQbGF0Zm9ybUNBQW5pbWF0aW9uLCBvYmplY3QsIG9i
amVjdC0+cHJlZGljYXRlLCBvYmplY3QucHJlZGljYXRlKQorfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCi19CisjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ0FBTklNQVRJT04oVG9WYWx1
ZVR5cGVOYW1lLCBwcmVkaWNhdGUpIFwKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oVG9W
YWx1ZVR5cGVOYW1lKSBcCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OlBs
YXRmb3JtQ0FBbmltYXRpb24mIGFuaW1hdGlvbikgeyByZXR1cm4gYW5pbWF0aW9uLnByZWRpY2F0
ZTsgfSBcCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0VORCgpCiAKICNlbmRpZiAvLyBQbGF0Zm9y
bUNBQW5pbWF0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL1BsYXRmb3JtQ0FMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvUGxhdGZvcm1DQUxheWVyLmgKaW5kZXggNzBhYTMxMDMzYTUxMmE5NmI2MDMwY2IwZDk0
NDgwYzllNjgzODg2Ny4uY2FhNWE4N2U3OTQwYjYyOTYxYjRkNzVkZjc5M2Y3NGM5ZGNhYTRhOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1D
QUxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZv
cm1DQUxheWVyLmgKQEAgLTEyNyw3ICsxMjcsNyBAQCBwdWJsaWM6CiAgICAgLy8gQW55IHN1Ymxh
eWVycyBwcmV2aW91c2x5IGluIHRoZSBjdXJyZW50IGxheWVyIGFyZSByZW1vdmVkLgogICAgIHZp
cnR1YWwgdm9pZCBhZG9wdFN1YmxheWVycyhQbGF0Zm9ybUNBTGF5ZXImIHNvdXJjZSkgPSAwOwog
Ci0gICAgdmlydHVhbCB2b2lkIGFkZEFuaW1hdGlvbkZvcktleShjb25zdCBTdHJpbmcmIGtleSwg
UGxhdGZvcm1DQUFuaW1hdGlvbiopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkQW5pbWF0aW9u
Rm9yS2V5KGNvbnN0IFN0cmluZyYga2V5LCBQbGF0Zm9ybUNBQW5pbWF0aW9uJikgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCByZW1vdmVBbmltYXRpb25Gb3JLZXkoY29uc3QgU3RyaW5nJiBrZXkpID0g
MDsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UGxhdGZvcm1DQUFuaW1hdGlvbj4gYW5pbWF0aW9u
Rm9yS2V5KGNvbnN0IFN0cmluZyYga2V5KSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uTWFjLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlv
bk1hYy5oCmluZGV4IDNmMzcwYjU2NmY4NTIwYThjYTNlYjMyNDc3OWQxMzQ1MDQ4YjZhMTMuLmQ4
MmQ1Y2IyNDVhMTNiNjgwYjYwNWIxY2U4ZjBlM2UxNDA1NTE2NzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uTWFj
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3Jt
Q0FBbmltYXRpb25NYWMuaApAQCAtODMsNyArODMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHNldEZpbGxNb2RlKEZpbGxNb2RlVHlwZSkgb3ZlcnJpZGU7CiAgICAgCiAgICAgdmlydHVh
bCB2b2lkIHNldFRpbWluZ0Z1bmN0aW9uKGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiwgYm9vbCByZXZl
cnNlID0gZmFsc2UpIG92ZXJyaWRlOwotICAgIHZvaWQgY29weVRpbWluZ0Z1bmN0aW9uRnJvbShj
b25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uKikgb3ZlcnJpZGU7CisgICAgdm9pZCBjb3B5VGltaW5n
RnVuY3Rpb25Gcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24mKSBvdmVycmlkZTsKIAogICAg
IHZpcnR1YWwgYm9vbCBpc1JlbW92ZWRPbkNvbXBsZXRpb24oKSBjb25zdCBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0UmVtb3ZlZE9uQ29tcGxldGlvbihib29sKSBvdmVycmlkZTsKQEAg
LTEwMCwxNCArMTAwLDE0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0RnJvbVZhbHVl
KGNvbnN0IEZsb2F0UG9pbnQzRCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRGcm9t
VmFsdWUoY29uc3QgV2ViQ29yZTo6Q29sb3ImKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0RnJvbVZhbHVlKGNvbnN0IEZpbHRlck9wZXJhdGlvbiosIGludCBpbnRlcm5hbEZpbHRlclBy
b3BlcnR5SW5kZXgpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjb3B5RnJvbVZhbHVlRnJv
bShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lk
IGNvcHlGcm9tVmFsdWVGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24mKSBvdmVycmlkZTsK
IAogICAgIHZpcnR1YWwgdm9pZCBzZXRUb1ZhbHVlKGZsb2F0KSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0VG9WYWx1ZShjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRUb1ZhbHVlKGNvbnN0IEZsb2F0UG9pbnQz
RCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRUb1ZhbHVlKGNvbnN0IFdlYkNvcmU6
OkNvbG9yJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFRvVmFsdWUoY29uc3QgRmls
dGVyT3BlcmF0aW9uKiwgaW50IGludGVybmFsRmlsdGVyUHJvcGVydHlJbmRleCkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB2b2lkIGNvcHlUb1ZhbHVlRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0
aW9uKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGNvcHlUb1ZhbHVlRnJvbShjb25zdCBQ
bGF0Zm9ybUNBQW5pbWF0aW9uJikgb3ZlcnJpZGU7CiAKICAgICAvLyBLZXlmcmFtZS1hbmltYXRp
b24gcHJvcGVydGllcy4KICAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVzKGNvbnN0IFZlY3Rvcjxm
bG9hdD4mKSBvdmVycmlkZTsKQEAgLTExNSwxMyArMTE1LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgc2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxGbG9hdFBvaW50M0Q+Jikgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29sb3I+
Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlcyhjb25zdCBWZWN0b3I8UmVm
UHRyPEZpbHRlck9wZXJhdGlvbj4+JiwgaW50IGludGVybmFsRmlsdGVyUHJvcGVydHlJbmRleCkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNvcHlWYWx1ZXNGcm9tKGNvbnN0IFBsYXRmb3Jt
Q0FBbmltYXRpb24qKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgY29weVZhbHVlc0Zyb20o
Y29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lk
IHNldEtleVRpbWVzKGNvbnN0IFZlY3RvcjxmbG9hdD4mKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgY29weUtleVRpbWVzRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uKikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIGNvcHlLZXlUaW1lc0Zyb20oY29uc3QgUGxhdGZvcm1DQUFu
aW1hdGlvbiYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIHNldFRpbWluZ0Z1bmN0aW9u
cyhjb25zdCBWZWN0b3I8Y29uc3QgVGltaW5nRnVuY3Rpb24qPiYsIGJvb2wgcmV2ZXJzZSA9IGZh
bHNlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY29weVRpbWluZ0Z1bmN0aW9uc0Zyb20o
Y29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBj
b3B5VGltaW5nRnVuY3Rpb25zRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uJikgb3ZlcnJp
ZGU7CiAKIHByb3RlY3RlZDoKICAgICBQbGF0Zm9ybUNBQW5pbWF0aW9uTWFjKEFuaW1hdGlvblR5
cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0aCk7CkBAIC0xMzEsOCArMTMxLDggQEAgcHJpdmF0ZToK
ICAgICBSZXRhaW5QdHI8Q0FQcm9wZXJ0eUFuaW1hdGlvbj4gbV9hbmltYXRpb247CiB9OwogCi1Q
TEFURk9STV9DQUFOSU1BVElPTl9UWVBFX0NBU1RTKFBsYXRmb3JtQ0FBbmltYXRpb25NYWMsIGlz
UGxhdGZvcm1DQUFuaW1hdGlvbk1hYygpKQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi19CitT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NBQU5JTUFUSU9OKFdlYkNvcmU6OlBsYXRmb3JtQ0FBbmlt
YXRpb25NYWMsIGlzUGxhdGZvcm1DQUFuaW1hdGlvbk1hYygpKQogCiAjZW5kaWYgLy8gUGxhdGZv
cm1DQUFuaW1hdGlvbk1hY19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvbk1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uTWFjLm1tCmluZGV4
IDJiYzY1ZGM5MGMzM2I2MDQ3ODRjMDU1ZGNjYjE5MmRjYzE3NTY4NDAuLmNlYTEwOTYzMjU2MDk4
N2NiYzYxMjVjYmQwNmEwYzE1Y2M0YjU4ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uTWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9u
TWFjLm1tCkBAIC0xOTksMTkgKzE5OSwxOSBAQCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRp
b24+IFBsYXRmb3JtQ0FBbmltYXRpb25NYWM6OmNvcHkoKSBjb25zdAogICAgIGFuaW1hdGlvbi0+
c2V0RmlsbE1vZGUoZmlsbE1vZGUoKSk7CiAgICAgYW5pbWF0aW9uLT5zZXRSZW1vdmVkT25Db21w
bGV0aW9uKGlzUmVtb3ZlZE9uQ29tcGxldGlvbigpKTsKICAgICBhbmltYXRpb24tPnNldEFkZGl0
aXZlKGlzQWRkaXRpdmUoKSk7Ci0gICAgYW5pbWF0aW9uLT5jb3B5VGltaW5nRnVuY3Rpb25Gcm9t
KHRoaXMpOworICAgIGFuaW1hdGlvbi0+Y29weVRpbWluZ0Z1bmN0aW9uRnJvbSgqdGhpcyk7CiAg
ICAgYW5pbWF0aW9uLT5zZXRWYWx1ZUZ1bmN0aW9uKHZhbHVlRnVuY3Rpb24oKSk7CiAKLSAgICBz
ZXRIYXNFeHBsaWNpdEJlZ2luVGltZSh0b1BsYXRmb3JtQ0FBbmltYXRpb25NYWMoYW5pbWF0aW9u
LmdldCgpKS0+cGxhdGZvcm1BbmltYXRpb24oKSwgaGFzRXhwbGljaXRCZWdpblRpbWUocGxhdGZv
cm1BbmltYXRpb24oKSkpOworICAgIHNldEhhc0V4cGxpY2l0QmVnaW5UaW1lKGRvd25jYXN0PFBs
YXRmb3JtQ0FBbmltYXRpb25NYWM+KCphbmltYXRpb24pLnBsYXRmb3JtQW5pbWF0aW9uKCksIGhh
c0V4cGxpY2l0QmVnaW5UaW1lKHBsYXRmb3JtQW5pbWF0aW9uKCkpKTsKICAgICAKICAgICAvLyBD
b3B5IHRoZSBzcGVjaWZpYyBCYXNpYyBvciBLZXlmcmFtZSB2YWx1ZXMuCiAgICAgaWYgKGFuaW1h
dGlvblR5cGUoKSA9PSBLZXlmcmFtZSkgewotICAgICAgICBhbmltYXRpb24tPmNvcHlWYWx1ZXNG
cm9tKHRoaXMpOwotICAgICAgICBhbmltYXRpb24tPmNvcHlLZXlUaW1lc0Zyb20odGhpcyk7Ci0g
ICAgICAgIGFuaW1hdGlvbi0+Y29weVRpbWluZ0Z1bmN0aW9uc0Zyb20odGhpcyk7CisgICAgICAg
IGFuaW1hdGlvbi0+Y29weVZhbHVlc0Zyb20oKnRoaXMpOworICAgICAgICBhbmltYXRpb24tPmNv
cHlLZXlUaW1lc0Zyb20oKnRoaXMpOworICAgICAgICBhbmltYXRpb24tPmNvcHlUaW1pbmdGdW5j
dGlvbnNGcm9tKCp0aGlzKTsKICAgICB9IGVsc2UgewotICAgICAgICBhbmltYXRpb24tPmNvcHlG
cm9tVmFsdWVGcm9tKHRoaXMpOwotICAgICAgICBhbmltYXRpb24tPmNvcHlUb1ZhbHVlRnJvbSh0
aGlzKTsKKyAgICAgICAgYW5pbWF0aW9uLT5jb3B5RnJvbVZhbHVlRnJvbSgqdGhpcyk7CisgICAg
ICAgIGFuaW1hdGlvbi0+Y29weVRvVmFsdWVGcm9tKCp0aGlzKTsKICAgICB9CiAgICAgCiAgICAg
cmV0dXJuIGFuaW1hdGlvbjsKQEAgLTMwOSw5ICszMDksOSBAQCB2b2lkIFBsYXRmb3JtQ0FBbmlt
YXRpb25NYWM6OnNldFRpbWluZ0Z1bmN0aW9uKGNvbnN0IFRpbWluZ0Z1bmN0aW9uKiB2YWx1ZSwg
Ym9vbAogICAgIFttX2FuaW1hdGlvbiBzZXRUaW1pbmdGdW5jdGlvbjp0b0NBTWVkaWFUaW1pbmdG
dW5jdGlvbih2YWx1ZSwgcmV2ZXJzZSldOwogfQogCi12b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25N
YWM6OmNvcHlUaW1pbmdGdW5jdGlvbkZyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiogdmFs
dWUpCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25NYWM6OmNvcHlUaW1pbmdGdW5jdGlvbkZyb20o
Y29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiYgdmFsdWUpCiB7Ci0gICAgW21fYW5pbWF0aW9uIHNl
dFRpbWluZ0Z1bmN0aW9uOlt0b1BsYXRmb3JtQ0FBbmltYXRpb25NYWModmFsdWUpLT5tX2FuaW1h
dGlvbi5nZXQoKSB0aW1pbmdGdW5jdGlvbl1dOworICAgIFttX2FuaW1hdGlvbiBzZXRUaW1pbmdG
dW5jdGlvbjpbZG93bmNhc3Q8UGxhdGZvcm1DQUFuaW1hdGlvbk1hYz4odmFsdWUpLm1fYW5pbWF0
aW9uLmdldCgpIHRpbWluZ0Z1bmN0aW9uXV07CiB9CiAKIGJvb2wgUGxhdGZvcm1DQUFuaW1hdGlv
bk1hYzo6aXNSZW1vdmVkT25Db21wbGV0aW9uKCkgY29uc3QKQEAgLTM5MywxMiArMzkzLDEyIEBA
IHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbk1hYzo6c2V0RnJvbVZhbHVlKGNvbnN0IEZpbHRlck9w
ZXJhdGlvbiogb3BlcmF0aW9uLCBpbnQKICAgICBbc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlv
bio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRGcm9tVmFsdWU6dmFsdWUuZ2V0KCldOwogfQogCi12
b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25NYWM6OmNvcHlGcm9tVmFsdWVGcm9tKGNvbnN0IFBsYXRm
b3JtQ0FBbmltYXRpb24qIHZhbHVlKQordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uTWFjOjpjb3B5
RnJvbVZhbHVlRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uJiB2YWx1ZSkKIHsKLSAgICBp
ZiAoYW5pbWF0aW9uVHlwZSgpICE9IEJhc2ljIHx8IHZhbHVlLT5hbmltYXRpb25UeXBlKCkgIT0g
QmFzaWMpCisgICAgaWYgKGFuaW1hdGlvblR5cGUoKSAhPSBCYXNpYyB8fCB2YWx1ZS5hbmltYXRp
b25UeXBlKCkgIT0gQmFzaWMpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgQ0FCYXNp
Y0FuaW1hdGlvbiogb3RoZXJBbmltYXRpb24gPSBzdGF0aWNfY2FzdDxDQUJhc2ljQW5pbWF0aW9u
Kj4odG9QbGF0Zm9ybUNBQW5pbWF0aW9uTWFjKHZhbHVlKS0+bV9hbmltYXRpb24uZ2V0KCkpOwor
ICAgIENBQmFzaWNBbmltYXRpb24qIG90aGVyQW5pbWF0aW9uID0gc3RhdGljX2Nhc3Q8Q0FCYXNp
Y0FuaW1hdGlvbio+KGRvd25jYXN0PFBsYXRmb3JtQ0FBbmltYXRpb25NYWM+KHZhbHVlKS5tX2Fu
aW1hdGlvbi5nZXQoKSk7CiAgICAgW3N0YXRpY19jYXN0PENBQmFzaWNBbmltYXRpb24qPihtX2Fu
aW1hdGlvbi5nZXQoKSkgc2V0RnJvbVZhbHVlOltvdGhlckFuaW1hdGlvbiBmcm9tVmFsdWVdXTsK
IH0KIApAQCAtNDUwLDEyICs0NTAsMTIgQEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uTWFjOjpz
ZXRUb1ZhbHVlKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogb3BlcmF0aW9uLCBpbnQgaW4KICAgICBb
c3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRUb1Zh
bHVlOnZhbHVlLmdldCgpXTsKIH0KIAotdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uTWFjOjpjb3B5
VG9WYWx1ZUZyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiogdmFsdWUpCit2b2lkIFBsYXRm
b3JtQ0FBbmltYXRpb25NYWM6OmNvcHlUb1ZhbHVlRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0
aW9uJiB2YWx1ZSkKIHsKLSAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9IEJhc2ljIHx8IHZhbHVl
LT5hbmltYXRpb25UeXBlKCkgIT0gQmFzaWMpCisgICAgaWYgKGFuaW1hdGlvblR5cGUoKSAhPSBC
YXNpYyB8fCB2YWx1ZS5hbmltYXRpb25UeXBlKCkgIT0gQmFzaWMpCiAgICAgICAgIHJldHVybjsK
ICAgICAgICAgCi0gICAgQ0FCYXNpY0FuaW1hdGlvbiogb3RoZXJBbmltYXRpb24gPSBzdGF0aWNf
Y2FzdDxDQUJhc2ljQW5pbWF0aW9uKj4odG9QbGF0Zm9ybUNBQW5pbWF0aW9uTWFjKHZhbHVlKS0+
bV9hbmltYXRpb24uZ2V0KCkpOworICAgIENBQmFzaWNBbmltYXRpb24qIG90aGVyQW5pbWF0aW9u
ID0gc3RhdGljX2Nhc3Q8Q0FCYXNpY0FuaW1hdGlvbio+KGRvd25jYXN0PFBsYXRmb3JtQ0FBbmlt
YXRpb25NYWM+KHZhbHVlKS5tX2FuaW1hdGlvbi5nZXQoKSk7CiAgICAgW3N0YXRpY19jYXN0PENB
QmFzaWNBbmltYXRpb24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0VG9WYWx1ZTpbb3RoZXJBbmlt
YXRpb24gdG9WYWx1ZV1dOwogfQogCkBAIC01MzYsMTIgKzUzNiwxMiBAQCB2b2lkIFBsYXRmb3Jt
Q0FBbmltYXRpb25NYWM6OnNldFZhbHVlcyhjb25zdCBWZWN0b3I8UmVmUHRyPEZpbHRlck9wZXJh
dGlvbj4+JiB2YQogICAgIFtzdGF0aWNfY2FzdDxDQUtleWZyYW1lQW5pbWF0aW9uKj4obV9hbmlt
YXRpb24uZ2V0KCkpIHNldFZhbHVlczphcnJheV07CiB9CiAKLXZvaWQgUGxhdGZvcm1DQUFuaW1h
dGlvbk1hYzo6Y29weVZhbHVlc0Zyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiogdmFsdWUp
Cit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25NYWM6OmNvcHlWYWx1ZXNGcm9tKGNvbnN0IFBsYXRm
b3JtQ0FBbmltYXRpb24mIHZhbHVlKQogewotICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0gS2V5
ZnJhbWUgfHwgdmFsdWUtPmFuaW1hdGlvblR5cGUoKSAhPSBLZXlmcmFtZSkKKyAgICBpZiAoYW5p
bWF0aW9uVHlwZSgpICE9IEtleWZyYW1lIHx8IHZhbHVlLmFuaW1hdGlvblR5cGUoKSAhPSBLZXlm
cmFtZSkKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKLSAgICBDQUtleWZyYW1lQW5pbWF0aW9u
KiBvdGhlckFuaW1hdGlvbiA9IHN0YXRpY19jYXN0PENBS2V5ZnJhbWVBbmltYXRpb24qPih0b1Bs
YXRmb3JtQ0FBbmltYXRpb25NYWModmFsdWUpLT5tX2FuaW1hdGlvbi5nZXQoKSk7CisgICAgQ0FL
ZXlmcmFtZUFuaW1hdGlvbiogb3RoZXJBbmltYXRpb24gPSBzdGF0aWNfY2FzdDxDQUtleWZyYW1l
QW5pbWF0aW9uKj4oZG93bmNhc3Q8UGxhdGZvcm1DQUFuaW1hdGlvbk1hYz4odmFsdWUpLm1fYW5p
bWF0aW9uLmdldCgpKTsKICAgICBbc3RhdGljX2Nhc3Q8Q0FLZXlmcmFtZUFuaW1hdGlvbio+KG1f
YW5pbWF0aW9uLmdldCgpKSBzZXRWYWx1ZXM6W290aGVyQW5pbWF0aW9uIHZhbHVlc11dOwogfQog
CkBAIC01NTUsOSArNTU1LDkgQEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uTWFjOjpzZXRLZXlU
aW1lcyhjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2YWx1ZSkKICAgICBbc3RhdGljX2Nhc3Q8Q0FLZXlm
cmFtZUFuaW1hdGlvbio+KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRLZXlUaW1lczphcnJheV07CiB9
CiAKLXZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbk1hYzo6Y29weUtleVRpbWVzRnJvbShjb25zdCBQ
bGF0Zm9ybUNBQW5pbWF0aW9uKiB2YWx1ZSkKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbk1hYzo6
Y29weUtleVRpbWVzRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uJiB2YWx1ZSkKIHsKLSAg
ICBDQUtleWZyYW1lQW5pbWF0aW9uKiBvdGhlciA9IHN0YXRpY19jYXN0PENBS2V5ZnJhbWVBbmlt
YXRpb24qPih0b1BsYXRmb3JtQ0FBbmltYXRpb25NYWModmFsdWUpLT5tX2FuaW1hdGlvbi5nZXQo
KSk7CisgICAgQ0FLZXlmcmFtZUFuaW1hdGlvbiogb3RoZXIgPSBzdGF0aWNfY2FzdDxDQUtleWZy
YW1lQW5pbWF0aW9uKj4oZG93bmNhc3Q8UGxhdGZvcm1DQUFuaW1hdGlvbk1hYz4odmFsdWUpLm1f
YW5pbWF0aW9uLmdldCgpKTsKICAgICBbc3RhdGljX2Nhc3Q8Q0FLZXlmcmFtZUFuaW1hdGlvbio+
KG1fYW5pbWF0aW9uLmdldCgpKSBzZXRLZXlUaW1lczpbb3RoZXIga2V5VGltZXNdXTsKIH0KIApA
QCAtNTcxLDggKzU3MSw4IEBAIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbk1hYzo6c2V0VGltaW5n
RnVuY3Rpb25zKGNvbnN0IFZlY3Rvcjxjb25zdCBUaW1pbmdGdW5jdGlvCiAgICAgW3N0YXRpY19j
YXN0PENBS2V5ZnJhbWVBbmltYXRpb24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0VGltaW5nRnVu
Y3Rpb25zOmFycmF5XTsKIH0KIAotdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uTWFjOjpjb3B5VGlt
aW5nRnVuY3Rpb25zRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uKiB2YWx1ZSkKK3ZvaWQg
UGxhdGZvcm1DQUFuaW1hdGlvbk1hYzo6Y29weVRpbWluZ0Z1bmN0aW9uc0Zyb20oY29uc3QgUGxh
dGZvcm1DQUFuaW1hdGlvbiYgdmFsdWUpCiB7Ci0gICAgQ0FLZXlmcmFtZUFuaW1hdGlvbiogb3Ro
ZXIgPSBzdGF0aWNfY2FzdDxDQUtleWZyYW1lQW5pbWF0aW9uKj4odG9QbGF0Zm9ybUNBQW5pbWF0
aW9uTWFjKHZhbHVlKS0+bV9hbmltYXRpb24uZ2V0KCkpOworICAgIENBS2V5ZnJhbWVBbmltYXRp
b24qIG90aGVyID0gc3RhdGljX2Nhc3Q8Q0FLZXlmcmFtZUFuaW1hdGlvbio+KGRvd25jYXN0PFBs
YXRmb3JtQ0FBbmltYXRpb25NYWM+KHZhbHVlKS5tX2FuaW1hdGlvbi5nZXQoKSk7CiAgICAgW3N0
YXRpY19jYXN0PENBS2V5ZnJhbWVBbmltYXRpb24qPihtX2FuaW1hdGlvbi5nZXQoKSkgc2V0VGlt
aW5nRnVuY3Rpb25zOltvdGhlciB0aW1pbmdGdW5jdGlvbnNdXTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBTGF5ZXJNYWMu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBTGF5
ZXJNYWMuaAppbmRleCA5ODZhOTAxNTVmZmZiYTM0YmMyOTAzZGFjZmVjYmZkOTM1NWNhNWQ4Li42
NmFlMjcyMTIzODZiY2EyZjc3YzE4MWZjZTlhMjAxMTE4YzJlNTYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUxheWVyTWFjLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FM
YXllck1hYy5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGNvbnN0IFBs
YXRmb3JtQ0FMYXllckxpc3QqIGN1c3RvbVN1YmxheWVycygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fY3VzdG9tU3VibGF5ZXJzLmdldCgpOyB9CiAgICAgdmlydHVhbCB2b2lkIGFkb3B0U3Vi
bGF5ZXJzKFBsYXRmb3JtQ0FMYXllciYgc291cmNlKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwg
dm9pZCBhZGRBbmltYXRpb25Gb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIFBsYXRmb3JtQ0FBbmlt
YXRpb24qKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkQW5pbWF0aW9uRm9yS2V5KGNv
bnN0IFN0cmluZyYga2V5LCBQbGF0Zm9ybUNBQW5pbWF0aW9uJikgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIHJlbW92ZUFuaW1hdGlvbkZvcktleShjb25zdCBTdHJpbmcmIGtleSkgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IGFuaW1hdGlv
bkZvcktleShjb25zdCBTdHJpbmcmIGtleSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGFu
aW1hdGlvblN0YXJ0ZWQoY29uc3QgU3RyaW5nJiBrZXksIENGVGltZUludGVydmFsIGJlZ2luVGlt
ZSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9tYWMvUGxhdGZvcm1DQUxheWVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FMYXllck1hYy5tbQppbmRleCA5NWRmM2VlNTI5Yzlk
MWE3OTFkOTRhOTM1MGNiMGYyNzE0ODIxNGQwLi4xYzE1M2Y5NmRjYzc2YmZiODZmZjY4NGI3YzJh
M2E1NWFiNWIwNDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9tYWMvUGxhdGZvcm1DQUxheWVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBTGF5ZXJNYWMubW0KQEAgLTQ1Myw3ICs0NTMs
NyBAQCB2b2lkIFBsYXRmb3JtQ0FMYXllck1hYzo6YWRvcHRTdWJsYXllcnMoUGxhdGZvcm1DQUxh
eWVyJiBzb3VyY2UpCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogfQogCi12b2lkIFBs
YXRmb3JtQ0FMYXllck1hYzo6YWRkQW5pbWF0aW9uRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5LCBQ
bGF0Zm9ybUNBQW5pbWF0aW9uKiBhbmltYXRpb24pCit2b2lkIFBsYXRmb3JtQ0FMYXllck1hYzo6
YWRkQW5pbWF0aW9uRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5LCBQbGF0Zm9ybUNBQW5pbWF0aW9u
JiBhbmltYXRpb24pCiB7CiAgICAgLy8gQWRkIHRoZSBkZWxlZ2F0ZQogICAgIGlmICghbV9kZWxl
Z2F0ZSkgewpAQCAtNDYyLDcgKzQ2Miw3IEBAIHZvaWQgUGxhdGZvcm1DQUxheWVyTWFjOjphZGRB
bmltYXRpb25Gb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIFBsYXRmb3JtQ0FBbmltYXRpCiAgICAg
ICAgIFt3ZWJBbmltYXRpb25EZWxlZ2F0ZSBzZXRPd25lcjp0aGlzXTsKICAgICB9CiAgICAgCi0g
ICAgQ0FQcm9wZXJ0eUFuaW1hdGlvbiogcHJvcGVydHlBbmltYXRpb24gPSBzdGF0aWNfY2FzdDxD
QVByb3BlcnR5QW5pbWF0aW9uKj4odG9QbGF0Zm9ybUNBQW5pbWF0aW9uTWFjKGFuaW1hdGlvbikt
PnBsYXRmb3JtQW5pbWF0aW9uKCkpOworICAgIENBUHJvcGVydHlBbmltYXRpb24qIHByb3BlcnR5
QW5pbWF0aW9uID0gc3RhdGljX2Nhc3Q8Q0FQcm9wZXJ0eUFuaW1hdGlvbio+KGRvd25jYXN0PFBs
YXRmb3JtQ0FBbmltYXRpb25NYWM+KGFuaW1hdGlvbikucGxhdGZvcm1BbmltYXRpb24oKSk7CiAg
ICAgaWYgKCFbcHJvcGVydHlBbmltYXRpb24gZGVsZWdhdGVdKQogICAgICAgICBbcHJvcGVydHlB
bmltYXRpb24gc2V0RGVsZWdhdGU6c3RhdGljX2Nhc3Q8aWQ+KG1fZGVsZWdhdGUuZ2V0KCkpXTsK
ICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93
aW4vUGxhdGZvcm1DQUFuaW1hdGlvbldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1hdGlvbldpbi5jcHAKaW5kZXggOTk1YmRkNjVj
NzhiODEwYWE5ZTlhMWQ2NTQzODRkZGE2MGJjMzIwZC4uNjJhMjRmYzA3YzEwNDU2NzE3MmRkNjk4
ODQ0NDI2YjY2MTVjZWJjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FBbmltYXRpb25XaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBQW5pbWF0aW9uV2luLmNwcApA
QCAtMTkwLDE4ICsxOTAsMTggQEAgUGFzc1JlZlB0cjxQbGF0Zm9ybUNBQW5pbWF0aW9uPiBQbGF0
Zm9ybUNBQW5pbWF0aW9uV2luOjpjb3B5KCkgY29uc3QKICAgICBhbmltYXRpb24tPnNldEZpbGxN
b2RlKGZpbGxNb2RlKCkpOwogICAgIGFuaW1hdGlvbi0+c2V0UmVtb3ZlZE9uQ29tcGxldGlvbihp
c1JlbW92ZWRPbkNvbXBsZXRpb24oKSk7CiAgICAgYW5pbWF0aW9uLT5zZXRBZGRpdGl2ZShpc0Fk
ZGl0aXZlKCkpOwotICAgIGFuaW1hdGlvbi0+Y29weVRpbWluZ0Z1bmN0aW9uRnJvbSh0aGlzKTsK
KyAgICBhbmltYXRpb24tPmNvcHlUaW1pbmdGdW5jdGlvbkZyb20oKnRoaXMpOwogICAgIGlmICh2
YWx1ZUZ1bmN0aW9uKCkpCiAgICAgICAgIGFuaW1hdGlvbi0+c2V0VmFsdWVGdW5jdGlvbih2YWx1
ZUZ1bmN0aW9uKCkpOwogICAgIAogICAgIC8vIENvcHkgdGhlIHNwZWNpZmljIEJhc2ljIG9yIEtl
eWZyYW1lIHZhbHVlcwogICAgIGlmIChhbmltYXRpb25UeXBlKCkgPT0gS2V5ZnJhbWUpIHsKLSAg
ICAgICAgYW5pbWF0aW9uLT5jb3B5VmFsdWVzRnJvbSh0aGlzKTsKLSAgICAgICAgYW5pbWF0aW9u
LT5jb3B5S2V5VGltZXNGcm9tKHRoaXMpOwotICAgICAgICBhbmltYXRpb24tPmNvcHlUaW1pbmdG
dW5jdGlvbnNGcm9tKHRoaXMpOworICAgICAgICBhbmltYXRpb24tPmNvcHlWYWx1ZXNGcm9tKCp0
aGlzKTsKKyAgICAgICAgYW5pbWF0aW9uLT5jb3B5S2V5VGltZXNGcm9tKCp0aGlzKTsKKyAgICAg
ICAgYW5pbWF0aW9uLT5jb3B5VGltaW5nRnVuY3Rpb25zRnJvbSgqdGhpcyk7CiAgICAgfSBlbHNl
IHsKLSAgICAgICAgYW5pbWF0aW9uLT5jb3B5RnJvbVZhbHVlRnJvbSh0aGlzKTsKLSAgICAgICAg
YW5pbWF0aW9uLT5jb3B5VG9WYWx1ZUZyb20odGhpcyk7CisgICAgICAgIGFuaW1hdGlvbi0+Y29w
eUZyb21WYWx1ZUZyb20oKnRoaXMpOworICAgICAgICBhbmltYXRpb24tPmNvcHlUb1ZhbHVlRnJv
bSgqdGhpcyk7CiAgICAgfQogICAgIAogICAgIHJldHVybiBhbmltYXRpb247CkBAIC0yOTcsOSAr
Mjk3LDkgQEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uV2luOjpzZXRUaW1pbmdGdW5jdGlvbihj
b25zdCBUaW1pbmdGdW5jdGlvbiogdmFsdWUsIGJvb2wKICAgICBDQUNGQW5pbWF0aW9uU2V0VGlt
aW5nRnVuY3Rpb24obV9hbmltYXRpb24uZ2V0KCksIHRvQ0FDRlRpbWluZ0Z1bmN0aW9uKHZhbHVl
LCByZXZlcnNlKS5nZXQoKSk7CiB9CiAKLXZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbldpbjo6Y29w
eVRpbWluZ0Z1bmN0aW9uRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uKiB2YWx1ZSkKK3Zv
aWQgUGxhdGZvcm1DQUFuaW1hdGlvbldpbjo6Y29weVRpbWluZ0Z1bmN0aW9uRnJvbShjb25zdCBQ
bGF0Zm9ybUNBQW5pbWF0aW9uJiB2YWx1ZSkKIHsKLSAgICBDQUNGVGltaW5nRnVuY3Rpb25SZWYg
dGltaW5nRnVuYyA9IENBQ0ZBbmltYXRpb25HZXRUaW1pbmdGdW5jdGlvbih0b1BsYXRmb3JtQ0FB
bmltYXRpb25XaW4odmFsdWUpLT5tX2FuaW1hdGlvbi5nZXQoKSk7CisgICAgQ0FDRlRpbWluZ0Z1
bmN0aW9uUmVmIHRpbWluZ0Z1bmMgPSBDQUNGQW5pbWF0aW9uR2V0VGltaW5nRnVuY3Rpb24oZG93
bmNhc3Q8UGxhdGZvcm1DQUFuaW1hdGlvbldpbj4odmFsdWUpLm1fYW5pbWF0aW9uLmdldCgpKTsK
ICAgICBpZiAodGltaW5nRnVuYykKICAgICAgICAgQ0FDRkFuaW1hdGlvblNldFRpbWluZ0Z1bmN0
aW9uKG1fYW5pbWF0aW9uLmdldCgpLCB0aW1pbmdGdW5jKTsKIH0KQEAgLTM3OSwxMiArMzc5LDEy
IEBAIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbldpbjo6c2V0RnJvbVZhbHVlKGNvbnN0IEZpbHRl
ck9wZXJhdGlvbiosIGludCkKICAgICAvLyBGSVhNRTogSGFyZHdhcmUgZmlsdGVyIGFuaW1hdGlv
biBub3QgaW1wbGVtZW50ZWQgb24gV2luZG93cwogfQogCi12b2lkIFBsYXRmb3JtQ0FBbmltYXRp
b25XaW46OmNvcHlGcm9tVmFsdWVGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24qIHZhbHVl
KQordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uV2luOjpjb3B5RnJvbVZhbHVlRnJvbShjb25zdCBQ
bGF0Zm9ybUNBQW5pbWF0aW9uJiB2YWx1ZSkKIHsKLSAgICBpZiAoYW5pbWF0aW9uVHlwZSgpICE9
IEJhc2ljIHx8IHZhbHVlLT5hbmltYXRpb25UeXBlKCkgIT0gQmFzaWMpCisgICAgaWYgKGFuaW1h
dGlvblR5cGUoKSAhPSBCYXNpYyB8fCB2YWx1ZS5hbmltYXRpb25UeXBlKCkgIT0gQmFzaWMpCiAg
ICAgICAgIHJldHVybjsKICAgICAKLSAgICBDQUNGQW5pbWF0aW9uU2V0RnJvbVZhbHVlKG1fYW5p
bWF0aW9uLmdldCgpLCBDQUNGQW5pbWF0aW9uR2V0RnJvbVZhbHVlKHRvUGxhdGZvcm1DQUFuaW1h
dGlvbldpbih2YWx1ZSktPnBsYXRmb3JtQW5pbWF0aW9uKCkpKTsKKyAgICBDQUNGQW5pbWF0aW9u
U2V0RnJvbVZhbHVlKG1fYW5pbWF0aW9uLmdldCgpLCBDQUNGQW5pbWF0aW9uR2V0RnJvbVZhbHVl
KGRvd25jYXN0PFBsYXRmb3JtQ0FBbmltYXRpb25XaW4+KHZhbHVlKS5wbGF0Zm9ybUFuaW1hdGlv
bigpKSk7CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbldpbjo6c2V0VG9WYWx1ZShmbG9h
dCB2YWx1ZSkKQEAgLTQzMCwxMiArNDMwLDEyIEBAIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvbldp
bjo6c2V0VG9WYWx1ZShjb25zdCBGaWx0ZXJPcGVyYXRpb24qLCBpbnQpCiAgICAgLy8gRklYTUU6
IEhhcmR3YXJlIGZpbHRlciBhbmltYXRpb24gbm90IGltcGxlbWVudGVkIG9uIFdpbmRvd3MKIH0K
IAotdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uV2luOjpjb3B5VG9WYWx1ZUZyb20oY29uc3QgUGxh
dGZvcm1DQUFuaW1hdGlvbiogdmFsdWUpCit2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25XaW46OmNv
cHlUb1ZhbHVlRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uJiB2YWx1ZSkKIHsKLSAgICBp
ZiAoYW5pbWF0aW9uVHlwZSgpICE9IEJhc2ljIHx8IHZhbHVlLT5hbmltYXRpb25UeXBlKCkgIT0g
QmFzaWMpCisgICAgaWYgKGFuaW1hdGlvblR5cGUoKSAhPSBCYXNpYyB8fCB2YWx1ZS5hbmltYXRp
b25UeXBlKCkgIT0gQmFzaWMpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0gICAgQ0FDRkFu
aW1hdGlvblNldFRvVmFsdWUobV9hbmltYXRpb24uZ2V0KCksIENBQ0ZBbmltYXRpb25HZXRUb1Zh
bHVlKHRvUGxhdGZvcm1DQUFuaW1hdGlvbldpbih2YWx1ZSktPnBsYXRmb3JtQW5pbWF0aW9uKCkp
KTsKKyAgICBDQUNGQW5pbWF0aW9uU2V0VG9WYWx1ZShtX2FuaW1hdGlvbi5nZXQoKSwgQ0FDRkFu
aW1hdGlvbkdldFRvVmFsdWUoZG93bmNhc3Q8UGxhdGZvcm1DQUFuaW1hdGlvbldpbj4odmFsdWUp
LnBsYXRmb3JtQW5pbWF0aW9uKCkpKTsKIH0KIAogLy8gS2V5ZnJhbWUtYW5pbWF0aW9uIHByb3Bl
cnRpZXMuCkBAIC01MDIsMTIgKzUwMiwxMiBAQCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25XaW46
OnNldFZhbHVlcyhjb25zdCBWZWN0b3I8UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gPiYsCiAgICAg
Ly8gRklYTUU6IEhhcmR3YXJlIGZpbHRlciBhbmltYXRpb24gbm90IGltcGxlbWVudGVkIG9uIFdp
bmRvd3MKIH0KIAotdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uV2luOjpjb3B5VmFsdWVzRnJvbShj
b25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uKiB2YWx1ZSkKK3ZvaWQgUGxhdGZvcm1DQUFuaW1hdGlv
bldpbjo6Y29weVZhbHVlc0Zyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiYgdmFsdWUpCiB7
Ci0gICAgaWYgKGFuaW1hdGlvblR5cGUoKSAhPSBLZXlmcmFtZSB8fCB2YWx1ZS0+YW5pbWF0aW9u
VHlwZSgpICE9IEtleWZyYW1lKQorICAgIGlmIChhbmltYXRpb25UeXBlKCkgIT0gS2V5ZnJhbWUg
fHwgdmFsdWUuYW5pbWF0aW9uVHlwZSgpICE9IEtleWZyYW1lKQogICAgICAgICByZXR1cm47CiAg
ICAgCi0gICAgQ0FDRkFuaW1hdGlvblNldFZhbHVlcyhtX2FuaW1hdGlvbi5nZXQoKSwgQ0FDRkFu
aW1hdGlvbkdldFZhbHVlcyh0b1BsYXRmb3JtQ0FBbmltYXRpb25XaW4odmFsdWUpLT5wbGF0Zm9y
bUFuaW1hdGlvbigpKSk7CisgICAgQ0FDRkFuaW1hdGlvblNldFZhbHVlcyhtX2FuaW1hdGlvbi5n
ZXQoKSwgQ0FDRkFuaW1hdGlvbkdldFZhbHVlcyhkb3duY2FzdDxQbGF0Zm9ybUNBQW5pbWF0aW9u
V2luPih2YWx1ZSkucGxhdGZvcm1BbmltYXRpb24oKSkpOwogfQogCiB2b2lkIFBsYXRmb3JtQ0FB
bmltYXRpb25XaW46OnNldEtleVRpbWVzKGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZhbHVlKQpAQCAt
NTI0LDEyICs1MjQsMTIgQEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uV2luOjpzZXRLZXlUaW1l
cyhjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2YWx1ZSkKICAgICBDQUNGQW5pbWF0aW9uU2V0S2V5VGlt
ZXMobV9hbmltYXRpb24uZ2V0KCksIGFycmF5LmdldCgpKTsKIH0KIAotdm9pZCBQbGF0Zm9ybUNB
QW5pbWF0aW9uV2luOjpjb3B5S2V5VGltZXNGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24q
IHZhbHVlKQordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uV2luOjpjb3B5S2V5VGltZXNGcm9tKGNv
bnN0IFBsYXRmb3JtQ0FBbmltYXRpb24mIHZhbHVlKQogewogICAgIGlmIChhbmltYXRpb25UeXBl
KCkgIT0gS2V5ZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIENBQ0ZBbmltYXRpb25TZXRL
ZXlUaW1lcyhtX2FuaW1hdGlvbi5nZXQoKSwgQ0FDRkFuaW1hdGlvbkdldEtleVRpbWVzKHRvUGxh
dGZvcm1DQUFuaW1hdGlvbldpbih2YWx1ZSktPnBsYXRmb3JtQW5pbWF0aW9uKCkpKTsKKyAgICBD
QUNGQW5pbWF0aW9uU2V0S2V5VGltZXMobV9hbmltYXRpb24uZ2V0KCksIENBQ0ZBbmltYXRpb25H
ZXRLZXlUaW1lcyhkb3duY2FzdDxQbGF0Zm9ybUNBQW5pbWF0aW9uV2luPih2YWx1ZSkucGxhdGZv
cm1BbmltYXRpb24oKSkpOwogfQogCiB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25XaW46OnNldFRp
bWluZ0Z1bmN0aW9ucyhjb25zdCBWZWN0b3I8Y29uc3QgVGltaW5nRnVuY3Rpb24qPiYgdmFsdWUs
IGJvb2wgcmV2ZXJzZSkKQEAgLTU0Nyw5ICs1NDcsOSBAQCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRp
b25XaW46OnNldFRpbWluZ0Z1bmN0aW9ucyhjb25zdCBWZWN0b3I8Y29uc3QgVGltaW5nRnVuY3Rp
bwogICAgIENBQ0ZBbmltYXRpb25TZXRUaW1pbmdGdW5jdGlvbnMobV9hbmltYXRpb24uZ2V0KCks
IGFycmF5LmdldCgpKTsKIH0KIAotdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uV2luOjpjb3B5VGlt
aW5nRnVuY3Rpb25zRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uKiB2YWx1ZSkKK3ZvaWQg
UGxhdGZvcm1DQUFuaW1hdGlvbldpbjo6Y29weVRpbWluZ0Z1bmN0aW9uc0Zyb20oY29uc3QgUGxh
dGZvcm1DQUFuaW1hdGlvbiYgdmFsdWUpCiB7Ci0gICAgQ0FDRkFuaW1hdGlvblNldFRpbWluZ0Z1
bmN0aW9ucyhtX2FuaW1hdGlvbi5nZXQoKSwgQ0FDRkFuaW1hdGlvbkdldFRpbWluZ0Z1bmN0aW9u
cyh0b1BsYXRmb3JtQ0FBbmltYXRpb25XaW4odmFsdWUpLT5wbGF0Zm9ybUFuaW1hdGlvbigpKSk7
CisgICAgQ0FDRkFuaW1hdGlvblNldFRpbWluZ0Z1bmN0aW9ucyhtX2FuaW1hdGlvbi5nZXQoKSwg
Q0FDRkFuaW1hdGlvbkdldFRpbWluZ0Z1bmN0aW9ucyhkb3duY2FzdDxQbGF0Zm9ybUNBQW5pbWF0
aW9uV2luPih2YWx1ZSkucGxhdGZvcm1BbmltYXRpb24oKSkpOwogfQogCiAjZW5kaWYgLy8gUExB
VEZPUk0oV0lOKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Evd2luL1BsYXRmb3JtQ0FBbmltYXRpb25XaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBQW5pbWF0aW9uV2luLmgKaW5kZXggMGRhZWY5ZWU0
ZWEzNzJjYzdlNDRiMjhkMWU2MmUzZTQ1ZjlkYWNiNy4uNDk2NWI4MzliZTVmYTNkNjg1MDFkZGUw
N2YyOTEwN2RhYmM2NGVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FBbmltYXRpb25XaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUFuaW1hdGlvbldpbi5oCkBAIC03
Myw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0RmlsbE1vZGUoRmlsbE1v
ZGVUeXBlKSBvdmVycmlkZTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGltaW5nRnVuY3Rp
b24oY29uc3QgVGltaW5nRnVuY3Rpb24qLCBib29sIHJldmVyc2UgPSBmYWxzZSkgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBjb3B5VGltaW5nRnVuY3Rpb25Gcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRp
b24qKSBvdmVycmlkZTsKKyAgICB2b2lkIGNvcHlUaW1pbmdGdW5jdGlvbkZyb20oY29uc3QgUGxh
dGZvcm1DQUFuaW1hdGlvbiYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBib29sIGlzUmVtb3Zl
ZE9uQ29tcGxldGlvbigpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRSZW1v
dmVkT25Db21wbGV0aW9uKGJvb2wpIG92ZXJyaWRlOwpAQCAtOTAsMTQgKzkwLDE0IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0RnJvbVZhbHVlKGNvbnN0IEZsb2F0UG9pbnQzRCYpIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRGcm9tVmFsdWUoY29uc3QgV2ViQ29yZTo6Q29s
b3ImKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0RnJvbVZhbHVlKGNvbnN0IEZpbHRl
ck9wZXJhdGlvbiosIGludCBpbnRlcm5hbEZpbHRlclByb3BlcnR5SW5kZXgpIG92ZXJyaWRlOwot
ICAgIHZpcnR1YWwgdm9pZCBjb3B5RnJvbVZhbHVlRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0
aW9uKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGNvcHlGcm9tVmFsdWVGcm9tKGNvbnN0
IFBsYXRmb3JtQ0FBbmltYXRpb24mKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRU
b1ZhbHVlKGZsb2F0KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VG9WYWx1ZShjb25z
dCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRUb1ZhbHVlKGNvbnN0IEZsb2F0UG9pbnQzRCYpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRUb1ZhbHVlKGNvbnN0IFdlYkNvcmU6OkNvbG9yJikgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIHNldFRvVmFsdWUoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiwgaW50IGludGVy
bmFsRmlsdGVyUHJvcGVydHlJbmRleCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNvcHlU
b1ZhbHVlRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uKikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIGNvcHlUb1ZhbHVlRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uJikgb3Zl
cnJpZGU7CiAKICAgICAvLyBLZXlmcmFtZS1hbmltYXRpb24gcHJvcGVydGllcy4KICAgICB2aXJ0
dWFsIHZvaWQgc2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxmbG9hdD4mKSBvdmVycmlkZTsKQEAgLTEw
NSwxMyArMTA1LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVzKGNvbnN0
IFZlY3RvcjxGbG9hdFBvaW50M0Q+Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFZh
bHVlcyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6Q29sb3I+Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIHNldFZhbHVlcyhjb25zdCBWZWN0b3I8UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4+Jiwg
aW50IGludGVybmFsRmlsdGVyUHJvcGVydHlJbmRleCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2
b2lkIGNvcHlWYWx1ZXNGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24qKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgY29weVZhbHVlc0Zyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlv
biYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIHNldEtleVRpbWVzKGNvbnN0IFZlY3Rv
cjxmbG9hdD4mKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY29weUtleVRpbWVzRnJvbShj
b25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGNv
cHlLZXlUaW1lc0Zyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiYpIG92ZXJyaWRlOwogCiAg
ICAgdmlydHVhbCB2b2lkIHNldFRpbWluZ0Z1bmN0aW9ucyhjb25zdCBWZWN0b3I8Y29uc3QgVGlt
aW5nRnVuY3Rpb24qPiYsIGJvb2wgcmV2ZXJzZSA9IGZhbHNlKSBvdmVycmlkZTsKLSAgICB2aXJ0
dWFsIHZvaWQgY29weVRpbWluZ0Z1bmN0aW9uc0Zyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlv
biopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBjb3B5VGltaW5nRnVuY3Rpb25zRnJvbShj
b25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uJikgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKICAgICBQ
bGF0Zm9ybUNBQW5pbWF0aW9uV2luKEFuaW1hdGlvblR5cGUsIGNvbnN0IFN0cmluZyYga2V5UGF0
aCk7CkBAIC0xMjEsOSArMTIxLDkgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8Q0FDRkFuaW1h
dGlvblJlZj4gbV9hbmltYXRpb247CiB9OwogCi1QTEFURk9STV9DQUFOSU1BVElPTl9UWVBFX0NB
U1RTKFBsYXRmb3JtQ0FBbmltYXRpb25XaW4sIGlzUGxhdGZvcm1DQUFuaW1hdGlvbldpbigpKQor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi19CitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NBQU5J
TUFUSU9OKFdlYkNvcmU6OlBsYXRmb3JtQ0FBbmltYXRpb25XaW4sIGlzUGxhdGZvcm1DQUFuaW1h
dGlvbldpbigpKQogCiAjZW5kaWYgLy8gUExBVEZPUk0oV0lOKQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5
ZXJXaW4uY3BwCmluZGV4IDcwNDNlMjFhNmFmMjM2OTRjNzAzNDI1ZDVmOGM3ODYwYzU1NmExYjIu
LjYzNjM1ZDZmZDlkMGYxZTBmM2Y0OTY2NzJkNWI2OTdhYjExMWZjNGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9y
bUNBTGF5ZXJXaW4uY3BwCkBAIC0zMDksMTIgKzMwOSwxMiBAQCB2b2lkIFBsYXRmb3JtQ0FMYXll
cldpbjo6YWRvcHRTdWJsYXllcnMoUGxhdGZvcm1DQUxheWVyJiBzb3VyY2UpCiAgICAgc2V0U3Vi
bGF5ZXJzKHN1YmxheWVycyk7CiB9CiAKLXZvaWQgUGxhdGZvcm1DQUxheWVyV2luOjphZGRBbmlt
YXRpb25Gb3JLZXkoY29uc3QgU3RyaW5nJiBrZXksIFBsYXRmb3JtQ0FBbmltYXRpb24qIGFuaW1h
dGlvbikKK3ZvaWQgUGxhdGZvcm1DQUxheWVyV2luOjphZGRBbmltYXRpb25Gb3JLZXkoY29uc3Qg
U3RyaW5nJiBrZXksIFBsYXRmb3JtQ0FBbmltYXRpb24mIGFuaW1hdGlvbikKIHsKICAgICAvLyBB
ZGQgaXQgdG8gdGhlIGFuaW1hdGlvbiBsaXN0Ci0gICAgbV9hbmltYXRpb25zLmFkZChrZXksIGFu
aW1hdGlvbik7CisgICAgbV9hbmltYXRpb25zLmFkZChrZXksICZhbmltYXRpb24pOwogCi0gICAg
Q0FDRkxheWVyQWRkQW5pbWF0aW9uKG1fbGF5ZXIuZ2V0KCksIGtleS5jcmVhdGVDRlN0cmluZygp
LmdldCgpLCB0b1BsYXRmb3JtQ0FBbmltYXRpb25XaW4oYW5pbWF0aW9uKS0+cGxhdGZvcm1Bbmlt
YXRpb24oKSk7CisgICAgQ0FDRkxheWVyQWRkQW5pbWF0aW9uKG1fbGF5ZXIuZ2V0KCksIGtleS5j
cmVhdGVDRlN0cmluZygpLmdldCgpLCBkb3duY2FzdDxQbGF0Zm9ybUNBQW5pbWF0aW9uV2luPihh
bmltYXRpb24pLnBsYXRmb3JtQW5pbWF0aW9uKCkpOwogICAgIHNldE5lZWRzQ29tbWl0KCk7CiAK
ICAgICAvLyBUZWxsIHRoZSBob3N0IGFib3V0IGl0IHNvIHdlIGNhbiBmaXJlIHRoZSBzdGFydCBh
bmltYXRpb24gZXZlbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhL3dpbi9QbGF0Zm9ybUNBTGF5ZXJXaW4uaAppbmRleCA2NjgzYzFjOTA2YzY3
Mjc1MDUxYTI5ZmMxMDY1NmFhMTY2NTcyYWQ5Li5kMDY0ODgwNWFjMzNmNWI5OTg1NjFmZGFhYTBl
YzRmYWM2MGVjMGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS93aW4vUGxhdGZvcm1DQUxheWVyV2luLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FMYXllcldpbi5oCkBAIC01Miw3ICs1Miw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGNvbnN0IFBsYXRmb3JtQ0FMYXllckxpc3QqIGN1c3RvbVN1
YmxheWVycygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fY3VzdG9tU3VibGF5ZXJzLmdldCgp
OyB9CiAgICAgdmlydHVhbCB2b2lkIGFkb3B0U3VibGF5ZXJzKFBsYXRmb3JtQ0FMYXllciYgc291
cmNlKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBhZGRBbmltYXRpb25Gb3JLZXkoY29u
c3QgU3RyaW5nJiBrZXksIFBsYXRmb3JtQ0FBbmltYXRpb24qKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQgYWRkQW5pbWF0aW9uRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5LCBQbGF0Zm9ybUNB
QW5pbWF0aW9uJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUFuaW1hdGlvbkZv
cktleShjb25zdCBTdHJpbmcmIGtleSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRy
PFBsYXRmb3JtQ0FBbmltYXRpb24+IGFuaW1hdGlvbkZvcktleShjb25zdCBTdHJpbmcmIGtleSkg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGFuaW1hdGlvblN0YXJ0ZWQoY29uc3QgU3RyaW5n
JiBrZXksIENGVGltZUludGVydmFsIGJlZ2luVGltZSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FBbmltYXRpb25S
ZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1D
QUFuaW1hdGlvblJlbW90ZS5oCmluZGV4IDkyZWJmZmQ5M2Y4ODE4MWJkOWVjZDBlMWM0MGZkNzEz
YjRjYTc0MDQuLjU4Nzg4YzEwYWFmZGFlNGNmNmI0ODQyNDg1NWZmMzVjNmNkMGM2NjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUFu
aW1hdGlvblJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZS5oCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0RmlsbE1vZGUoRmlsbE1vZGVUeXBlKSBvdmVycmlkZTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBzZXRUaW1pbmdGdW5jdGlvbihjb25zdCBXZWJDb3JlOjpUaW1pbmdG
dW5jdGlvbiosIGJvb2wgcmV2ZXJzZSA9IGZhbHNlKSBvdmVycmlkZTsKLSAgICB2b2lkIGNvcHlU
aW1pbmdGdW5jdGlvbkZyb20oY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1DQUFuaW1hdGlvbiopIG92
ZXJyaWRlOworICAgIHZvaWQgY29weVRpbWluZ0Z1bmN0aW9uRnJvbShjb25zdCBXZWJDb3JlOjpQ
bGF0Zm9ybUNBQW5pbWF0aW9uJikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNSZW1v
dmVkT25Db21wbGV0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFJl
bW92ZWRPbkNvbXBsZXRpb24oYm9vbCkgb3ZlcnJpZGU7CkBAIC05MiwxNCArOTIsMTQgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRGcm9tVmFsdWUoY29uc3QgV2ViQ29yZTo6RmxvYXRQ
b2ludDNEJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldEZyb21WYWx1ZShjb25zdCBX
ZWJDb3JlOjpDb2xvciYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRGcm9tVmFsdWUo
Y29uc3QgV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uKiwgaW50IGludGVybmFsRmlsdGVyUHJvcGVy
dHlJbmRleCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNvcHlGcm9tVmFsdWVGcm9tKGNv
bnN0IFdlYkNvcmU6OlBsYXRmb3JtQ0FBbmltYXRpb24qKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IHZvaWQgY29weUZyb21WYWx1ZUZyb20oY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1DQUFuaW1hdGlv
biYpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCB2b2lkIHNldFRvVmFsdWUoZmxvYXQpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRUb1ZhbHVlKGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9y
bWF0aW9uTWF0cml4Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFRvVmFsdWUoY29u
c3QgV2ViQ29yZTo6RmxvYXRQb2ludDNEJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNl
dFRvVmFsdWUoY29uc3QgV2ViQ29yZTo6Q29sb3ImKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0VG9WYWx1ZShjb25zdCBXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb24qLCBpbnQgaW50ZXJu
YWxGaWx0ZXJQcm9wZXJ0eUluZGV4KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY29weVRv
VmFsdWVGcm9tKGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtQ0FBbmltYXRpb24qKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgY29weVRvVmFsdWVGcm9tKGNvbnN0IFdlYkNvcmU6OlBsYXRmb3Jt
Q0FBbmltYXRpb24mKSBvdmVycmlkZTsKIAogICAgIC8vIEtleWZyYW1lLWFuaW1hdGlvbiBwcm9w
ZXJ0aWVzLgogICAgIHZpcnR1YWwgdm9pZCBzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPGZsb2F0PiYp
IG92ZXJyaWRlOwpAQCAtMTA3LDEzICsxMDcsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBzZXRWYWx1ZXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OkZsb2F0UG9pbnQzRD4mKSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpDb2xv
cj4mKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxS
ZWZQdHI8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uPj4mLCBpbnQgaW50ZXJuYWxGaWx0ZXJQcm9w
ZXJ0eUluZGV4KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY29weVZhbHVlc0Zyb20oY29u
c3QgV2ViQ29yZTo6UGxhdGZvcm1DQUFuaW1hdGlvbiopIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBjb3B5VmFsdWVzRnJvbShjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybUNBQW5pbWF0aW9uJikg
b3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0S2V5VGltZXMoY29uc3QgVmVjdG9yPGZs
b2F0PiYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjb3B5S2V5VGltZXNGcm9tKGNvbnN0
IFdlYkNvcmU6OlBsYXRmb3JtQ0FBbmltYXRpb24qKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZv
aWQgY29weUtleVRpbWVzRnJvbShjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybUNBQW5pbWF0aW9uJikg
b3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGltaW5nRnVuY3Rpb25zKGNvbnN0IFZl
Y3Rvcjxjb25zdCBXZWJDb3JlOjpUaW1pbmdGdW5jdGlvbio+JiwgYm9vbCByZXZlcnNlID0gZmFs
c2UpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBjb3B5VGltaW5nRnVuY3Rpb25zRnJvbShj
b25zdCBXZWJDb3JlOjpQbGF0Zm9ybUNBQW5pbWF0aW9uKikgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIGNvcHlUaW1pbmdGdW5jdGlvbnNGcm9tKGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtQ0FB
bmltYXRpb24mKSBvdmVycmlkZTsKIAogICAgIEFuaW1hdGlvblR5cGUgYW5pbWF0aW9uVHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydGllcy5hbmltYXRpb25UeXBlOyB9CiAgICAgdm9pZCBz
ZXRIYXNFeHBsaWNpdEJlZ2luVGltZShib29sIGhhc0V4cGxpY2l0QmVnaW5UaW1lKSB7IG1fcHJv
cGVydGllcy5oYXNFeHBsaWNpdEJlZ2luVGltZSA9IGhhc0V4cGxpY2l0QmVnaW5UaW1lOyB9CkBA
IC0yOTcsOCArMjk3LDggQEAgcHJpdmF0ZToKICAgICBQcm9wZXJ0aWVzIG1fcHJvcGVydGllczsK
IH07CiAKLVBMQVRGT1JNX0NBQU5JTUFUSU9OX1RZUEVfQ0FTVFMoUGxhdGZvcm1DQUFuaW1hdGlv
blJlbW90ZSwgaXNQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlKCkpCi0KIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NBQU5JTUFUSU9OKFdlYktpdDo6UGxh
dGZvcm1DQUFuaW1hdGlvblJlbW90ZSwgaXNQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlKCkpCisK
ICNlbmRpZiAvLyBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90
ZS5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUFu
aW1hdGlvblJlbW90ZS5tbQppbmRleCA1ODYwNGRhZmMyYzgyZWVjODhmZmY5YTc3M2Y3MWRkZDE1
NWYzNWI0Li41NTFiZTA5NzEzYWEwZWQ1ODM3NDgzZGYzMWM0ZTI5YjViNmQ5ZGE5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FBbmlt
YXRpb25SZW1vdGUubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tCkBAIC0yOTUsMTkgKzI5NSwxOSBAQCBQYXNz
UmVmUHRyPFBsYXRmb3JtQ0FBbmltYXRpb24+IFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OmNv
cHkoKSBjb25zdAogICAgIGFuaW1hdGlvbi0+c2V0RmlsbE1vZGUoZmlsbE1vZGUoKSk7CiAgICAg
YW5pbWF0aW9uLT5zZXRSZW1vdmVkT25Db21wbGV0aW9uKGlzUmVtb3ZlZE9uQ29tcGxldGlvbigp
KTsKICAgICBhbmltYXRpb24tPnNldEFkZGl0aXZlKGlzQWRkaXRpdmUoKSk7Ci0gICAgYW5pbWF0
aW9uLT5jb3B5VGltaW5nRnVuY3Rpb25Gcm9tKHRoaXMpOworICAgIGFuaW1hdGlvbi0+Y29weVRp
bWluZ0Z1bmN0aW9uRnJvbSgqdGhpcyk7CiAgICAgYW5pbWF0aW9uLT5zZXRWYWx1ZUZ1bmN0aW9u
KHZhbHVlRnVuY3Rpb24oKSk7CiAKLSAgICB0b1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUoYW5p
bWF0aW9uLmdldCgpKS0+c2V0SGFzRXhwbGljaXRCZWdpblRpbWUoaGFzRXhwbGljaXRCZWdpblRp
bWUoKSk7CisgICAgZG93bmNhc3Q8UGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZT4oKmFuaW1hdGlv
bikuc2V0SGFzRXhwbGljaXRCZWdpblRpbWUoaGFzRXhwbGljaXRCZWdpblRpbWUoKSk7CiAgICAg
CiAgICAgLy8gQ29weSB0aGUgc3BlY2lmaWMgQmFzaWMgb3IgS2V5ZnJhbWUgdmFsdWVzLgogICAg
IGlmIChhbmltYXRpb25UeXBlKCkgPT0gS2V5ZnJhbWUpIHsKLSAgICAgICAgYW5pbWF0aW9uLT5j
b3B5VmFsdWVzRnJvbSh0aGlzKTsKLSAgICAgICAgYW5pbWF0aW9uLT5jb3B5S2V5VGltZXNGcm9t
KHRoaXMpOwotICAgICAgICBhbmltYXRpb24tPmNvcHlUaW1pbmdGdW5jdGlvbnNGcm9tKHRoaXMp
OworICAgICAgICBhbmltYXRpb24tPmNvcHlWYWx1ZXNGcm9tKCp0aGlzKTsKKyAgICAgICAgYW5p
bWF0aW9uLT5jb3B5S2V5VGltZXNGcm9tKCp0aGlzKTsKKyAgICAgICAgYW5pbWF0aW9uLT5jb3B5
VGltaW5nRnVuY3Rpb25zRnJvbSgqdGhpcyk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgYW5pbWF0
aW9uLT5jb3B5RnJvbVZhbHVlRnJvbSh0aGlzKTsKLSAgICAgICAgYW5pbWF0aW9uLT5jb3B5VG9W
YWx1ZUZyb20odGhpcyk7CisgICAgICAgIGFuaW1hdGlvbi0+Y29weUZyb21WYWx1ZUZyb20oKnRo
aXMpOworICAgICAgICBhbmltYXRpb24tPmNvcHlUb1ZhbHVlRnJvbSgqdGhpcyk7CiAgICAgfQog
ICAgIAogICAgIHJldHVybiBhbmltYXRpb247CkBAIC00MTEsNyArNDExLDcgQEAgdm9pZCBQbGF0
Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpzZXRUaW1pbmdGdW5jdGlvbihjb25zdCBUaW1pbmdGdW5j
dGlvbiogdmFsdWUsIGIKICAgICBtX3Byb3BlcnRpZXMucmV2ZXJzZVRpbWluZ0Z1bmN0aW9ucyA9
IHJldmVyc2U7CiB9CiAKLXZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6Y29weVRpbWlu
Z0Z1bmN0aW9uRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uKiB2YWx1ZSkKK3ZvaWQgUGxh
dGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6Y29weVRpbWluZ0Z1bmN0aW9uRnJvbShjb25zdCBQbGF0
Zm9ybUNBQW5pbWF0aW9uJiB2YWx1ZSkKIHsKICAgICBjb3B5VGltaW5nRnVuY3Rpb25zRnJvbSh2
YWx1ZSk7CiB9CkBAIC00OTEsMTUgKzQ5MSwxNSBAQCB2b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25S
ZW1vdGU6OnNldEZyb21WYWx1ZShjb25zdCBGaWx0ZXJPcGVyYXRpb24qIG9wZXJhdGlvbiwgaQog
ICAgIG1fcHJvcGVydGllcy5rZXlWYWx1ZXNbMF0gPSBLZXlmcmFtZVZhbHVlKG9wZXJhdGlvbi0+
Y2xvbmUoKSk7CiB9CiAKLXZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6Y29weUZyb21W
YWx1ZUZyb20oY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiogdmFsdWUpCit2b2lkIFBsYXRmb3Jt
Q0FBbmltYXRpb25SZW1vdGU6OmNvcHlGcm9tVmFsdWVGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmlt
YXRpb24mIHZhbHVlKQogewotICAgIGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUqIG90
aGVyID0gdG9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlKHZhbHVlKTsKKyAgICBjb25zdCBQbGF0
Zm9ybUNBQW5pbWF0aW9uUmVtb3RlJiBvdGhlciA9IGRvd25jYXN0PFBsYXRmb3JtQ0FBbmltYXRp
b25SZW1vdGU+KHZhbHVlKTsKIAotICAgIGlmIChvdGhlci0+bV9wcm9wZXJ0aWVzLmtleVZhbHVl
cy5pc0VtcHR5KCkpCisgICAgaWYgKG90aGVyLm1fcHJvcGVydGllcy5rZXlWYWx1ZXMuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgbV9wcm9wZXJ0aWVzLmtleVZhbHVlcy5y
ZXNpemUoMik7Ci0gICAgbV9wcm9wZXJ0aWVzLmtleVZhbHVlc1swXSA9IG90aGVyLT5tX3Byb3Bl
cnRpZXMua2V5VmFsdWVzWzBdOworICAgIG1fcHJvcGVydGllcy5rZXlWYWx1ZXNbMF0gPSBvdGhl
ci5tX3Byb3BlcnRpZXMua2V5VmFsdWVzWzBdOwogfQogCiB2b2lkIFBsYXRmb3JtQ0FBbmltYXRp
b25SZW1vdGU6OnNldFRvVmFsdWUoZmxvYXQgdmFsdWUpCkBAIC01NDksMTQgKzU0OSwxNCBAQCB2
b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OnNldFRvVmFsdWUoY29uc3QgRmlsdGVyT3Bl
cmF0aW9uKiBvcGVyYXRpb24sIGludAogICAgIG1fcHJvcGVydGllcy5rZXlWYWx1ZXNbMV0gPSBL
ZXlmcmFtZVZhbHVlKG9wZXJhdGlvbi0+Y2xvbmUoKSk7CiB9CiAKLXZvaWQgUGxhdGZvcm1DQUFu
aW1hdGlvblJlbW90ZTo6Y29weVRvVmFsdWVGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24q
IHZhbHVlKQordm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpjb3B5VG9WYWx1ZUZyb20o
Y29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvbiYgdmFsdWUpCiB7Ci0gICAgY29uc3QgUGxhdGZvcm1D
QUFuaW1hdGlvblJlbW90ZSogb3RoZXIgPSB0b1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUodmFs
dWUpOworICAgIGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUmIG90aGVyID0gZG93bmNh
c3Q8UGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZT4odmFsdWUpOwogCi0gICAgaWYgKG90aGVyLT5t
X3Byb3BlcnRpZXMua2V5VmFsdWVzLnNpemUoKSA8IDIpCisgICAgaWYgKG90aGVyLm1fcHJvcGVy
dGllcy5rZXlWYWx1ZXMuc2l6ZSgpIDwgMikKICAgICAgICAgcmV0dXJuOwogICAgIG1fcHJvcGVy
dGllcy5rZXlWYWx1ZXMucmVzaXplKDIpOwotICAgIG1fcHJvcGVydGllcy5rZXlWYWx1ZXNbMV0g
PSBvdGhlci0+bV9wcm9wZXJ0aWVzLmtleVZhbHVlc1sxXTsKKyAgICBtX3Byb3BlcnRpZXMua2V5
VmFsdWVzWzFdID0gb3RoZXIubV9wcm9wZXJ0aWVzLmtleVZhbHVlc1sxXTsKIH0KIAogLy8gS2V5
ZnJhbWUtYW5pbWF0aW9uIHByb3BlcnRpZXMuCkBAIC02MzIsMTAgKzYzMiw5IEBAIHZvaWQgUGxh
dGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6c2V0VmFsdWVzKGNvbnN0IFZlY3RvcjxSZWZQdHI8Rmls
dGVyT3BlcmF0aW9uPj4mCiAgICAgbV9wcm9wZXJ0aWVzLmtleVZhbHVlcyA9IFdURjo6bW92ZShr
ZXlmcmFtZXMpOwogfQogCi12b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OmNvcHlWYWx1
ZXNGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24qIHZhbHVlKQordm9pZCBQbGF0Zm9ybUNB
QW5pbWF0aW9uUmVtb3RlOjpjb3B5VmFsdWVzRnJvbShjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9u
JiB2YWx1ZSkKIHsKLSAgICBjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlKiBvdGhlciA9
IHRvUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZSh2YWx1ZSk7Ci0gICAgbV9wcm9wZXJ0aWVzLmtl
eVZhbHVlcyA9IG90aGVyLT5tX3Byb3BlcnRpZXMua2V5VmFsdWVzOworICAgIG1fcHJvcGVydGll
cy5rZXlWYWx1ZXMgPSBkb3duY2FzdDxQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlPih2YWx1ZSku
bV9wcm9wZXJ0aWVzLmtleVZhbHVlczsKIH0KIAogdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVt
b3RlOjpzZXRLZXlUaW1lcyhjb25zdCBWZWN0b3I8ZmxvYXQ+JiBrZXlUaW1lcykKQEAgLTY0Mywx
MCArNjQyLDkgQEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpzZXRLZXlUaW1lcyhj
b25zdCBWZWN0b3I8ZmxvYXQ+JiBrZXlUaW1lcykKICAgICBtX3Byb3BlcnRpZXMua2V5VGltZXMg
PSBrZXlUaW1lczsKIH0KIAotdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpjb3B5S2V5
VGltZXNGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24qIHZhbHVlKQordm9pZCBQbGF0Zm9y
bUNBQW5pbWF0aW9uUmVtb3RlOjpjb3B5S2V5VGltZXNGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmlt
YXRpb24mIHZhbHVlKQogewotICAgIGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUqIG90
aGVyID0gdG9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlKHZhbHVlKTsKLSAgICBtX3Byb3BlcnRp
ZXMua2V5VGltZXMgPSBvdGhlci0+bV9wcm9wZXJ0aWVzLmtleVRpbWVzOworICAgIG1fcHJvcGVy
dGllcy5rZXlUaW1lcyA9IGRvd25jYXN0PFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU+KHZhbHVl
KS5tX3Byb3BlcnRpZXMua2V5VGltZXM7CiB9CiAKIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvblJl
bW90ZTo6c2V0VGltaW5nRnVuY3Rpb25zKGNvbnN0IFZlY3Rvcjxjb25zdCBUaW1pbmdGdW5jdGlv
bio+JiB2YWx1ZXMsIGJvb2wgcmV2ZXJzZSkKQEAgLTY2MSwxMiArNjU5LDEyIEBAIHZvaWQgUGxh
dGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6c2V0VGltaW5nRnVuY3Rpb25zKGNvbnN0IFZlY3Rvcjxj
b25zdCBUaW1pbmdGdW5jCiAgICAgbV9wcm9wZXJ0aWVzLnJldmVyc2VUaW1pbmdGdW5jdGlvbnMg
PSByZXZlcnNlOwogfQogCi12b2lkIFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OmNvcHlUaW1p
bmdGdW5jdGlvbnNGcm9tKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb24qIHZhbHVlKQordm9pZCBQ
bGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpjb3B5VGltaW5nRnVuY3Rpb25zRnJvbShjb25zdCBQ
bGF0Zm9ybUNBQW5pbWF0aW9uJiB2YWx1ZSkKIHsKLSAgICBjb25zdCBQbGF0Zm9ybUNBQW5pbWF0
aW9uUmVtb3RlKiBvdGhlciA9IHRvUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZSh2YWx1ZSk7Cisg
ICAgY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZSYgb3RoZXIgPSBkb3duY2FzdDxQbGF0
Zm9ybUNBQW5pbWF0aW9uUmVtb3RlPih2YWx1ZSk7CiAKLSAgICBtX3Byb3BlcnRpZXMudGltaW5n
RnVuY3Rpb25zID0gb3RoZXItPm1fcHJvcGVydGllcy50aW1pbmdGdW5jdGlvbnM7Ci0gICAgbV9w
cm9wZXJ0aWVzLnJldmVyc2VUaW1pbmdGdW5jdGlvbnMgPSBvdGhlci0+bV9wcm9wZXJ0aWVzLnJl
dmVyc2VUaW1pbmdGdW5jdGlvbnM7CisgICAgbV9wcm9wZXJ0aWVzLnRpbWluZ0Z1bmN0aW9ucyA9
IG90aGVyLm1fcHJvcGVydGllcy50aW1pbmdGdW5jdGlvbnM7CisgICAgbV9wcm9wZXJ0aWVzLnJl
dmVyc2VUaW1pbmdGdW5jdGlvbnMgPSBvdGhlci5tX3Byb3BlcnRpZXMucmV2ZXJzZVRpbWluZ0Z1
bmN0aW9uczsKIH0KIAogc3RhdGljIE5TT2JqZWN0KiBhbmltYXRpb25WYWx1ZUZyb21LZXlmcmFt
ZVZhbHVlKGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OktleWZyYW1lVmFsdWUmIGtl
eWZyYW1lVmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5jcHAKaW5kZXggNWEyOTg2ZDBk
YzNiNTI3NWQ1NGE3OTU0NDkzZmM1ZDFkOGIwM2YwZi4uNjNkNDc1ZjQ1MTE3MDE5ZDkxNzNkOTcw
NTU2NzU3MTFiNzBkYjFmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcApAQCAtMzIx
LDE1ICszMjEsMTUgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmFkb3B0U3VibGF5ZXJz
KFBsYXRmb3JtQ0FMYXllciYgc291cmNlKQogICAgIHNldFN1YmxheWVycyhsYXllcnNUb01vdmUp
OwogfQogCi12b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6YWRkQW5pbWF0aW9uRm9yS2V5KGNv
bnN0IFN0cmluZyYga2V5LCBQbGF0Zm9ybUNBQW5pbWF0aW9uKiBhbmltYXRpb24pCit2b2lkIFBs
YXRmb3JtQ0FMYXllclJlbW90ZTo6YWRkQW5pbWF0aW9uRm9yS2V5KGNvbnN0IFN0cmluZyYga2V5
LCBQbGF0Zm9ybUNBQW5pbWF0aW9uJiBhbmltYXRpb24pCiB7Ci0gICAgYXV0byBhZGRSZXN1bHQg
PSBtX2FuaW1hdGlvbnMuc2V0KGtleSwgYW5pbWF0aW9uKTsKKyAgICBhdXRvIGFkZFJlc3VsdCA9
IG1fYW5pbWF0aW9ucy5zZXQoa2V5LCAmYW5pbWF0aW9uKTsKICAgICBpZiAoYWRkUmVzdWx0Lmlz
TmV3RW50cnkpCi0gICAgICAgIG1fcHJvcGVydGllcy5hZGRlZEFuaW1hdGlvbnMuYXBwZW5kKHN0
ZDo6cGFpcjxTdHJpbmcsIFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OlByb3BlcnRpZXM+KGtl
eSwgdG9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlKGFuaW1hdGlvbiktPnByb3BlcnRpZXMoKSkp
OworICAgICAgICBtX3Byb3BlcnRpZXMuYWRkZWRBbmltYXRpb25zLmFwcGVuZChzdGQ6OnBhaXI8
U3RyaW5nLCBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpQcm9wZXJ0aWVzPihrZXksIGRvd25j
YXN0PFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU+KGFuaW1hdGlvbikucHJvcGVydGllcygpKSk7
CiAgICAgZWxzZSB7CiAgICAgICAgIGZvciAoYXV0byYga2V5QW5pbWF0aW9uUGFpciA6IG1fcHJv
cGVydGllcy5hZGRlZEFuaW1hdGlvbnMpIHsKICAgICAgICAgICAgIGlmIChrZXlBbmltYXRpb25Q
YWlyLmZpcnN0ID09IGtleSkgewotICAgICAgICAgICAgICAgIGtleUFuaW1hdGlvblBhaXIuc2Vj
b25kID0gdG9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlKGFuaW1hdGlvbiktPnByb3BlcnRpZXMo
KTsKKyAgICAgICAgICAgICAgICBrZXlBbmltYXRpb25QYWlyLnNlY29uZCA9IGRvd25jYXN0PFBs
YXRmb3JtQ0FBbmltYXRpb25SZW1vdGU+KGFuaW1hdGlvbikucHJvcGVydGllcygpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0zNjQsNyArMzY0
LDcgQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmFuaW1hdGlvblN0YXJ0ZWQoY29uc3Qg
U3RyaW5nJiBrZXksIENGVGltZUludGVydmFsIGIKIHsKICAgICBhdXRvIGl0ID0gbV9hbmltYXRp
b25zLmZpbmQoa2V5KTsKICAgICBpZiAoaXQgIT0gbV9hbmltYXRpb25zLmVuZCgpKQotICAgICAg
ICB0b1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUoaXQtPnZhbHVlLmdldCgpKS0+ZGlkU3RhcnQo
YmVnaW5UaW1lKTsKKyAgICAgICAgZG93bmNhc3Q8UGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZT4o
Kml0LT52YWx1ZSkuZGlkU3RhcnQoYmVnaW5UaW1lKTsKICAgICAKICAgICBpZiAobV9vd25lcikK
ICAgICAgICAgbV9vd25lci0+cGxhdGZvcm1DQUxheWVyQW5pbWF0aW9uU3RhcnRlZChrZXksIGJl
Z2luVGltZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuaAppbmRleCA4Njg5NTc2Yjc5MTE3ODgy
ZDcxYjYyOTBhNDNkZjc1MWYxNWQ5OTc1Li40OWNmYTkxNmE2NmVhZGJlMWJlNWQ3ZWFlZjUwYzU1
MDE5YmMwZGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
bWFjL1BsYXRmb3JtQ0FMYXllclJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmgKQEAgLTY2LDcgKzY2LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1DQUxheWVyTGlzdCog
Y3VzdG9tU3VibGF5ZXJzKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbnVsbHB0cjsgfQogICAg
IHZpcnR1YWwgdm9pZCBhZG9wdFN1YmxheWVycyhXZWJDb3JlOjpQbGF0Zm9ybUNBTGF5ZXImIHNv
dXJjZSkgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgYWRkQW5pbWF0aW9uRm9yS2V5KGNv
bnN0IFN0cmluZyYga2V5LCBXZWJDb3JlOjpQbGF0Zm9ybUNBQW5pbWF0aW9uKikgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCB2b2lkIGFkZEFuaW1hdGlvbkZvcktleShjb25zdCBTdHJpbmcmIGtleSwg
V2ViQ29yZTo6UGxhdGZvcm1DQUFuaW1hdGlvbiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVBbmltYXRpb25Gb3JLZXkoY29uc3QgU3RyaW5nJiBrZXkpIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpQbGF0Zm9ybUNBQW5pbWF0aW9uPiBhbmltYXRp
b25Gb3JLZXkoY29uc3QgU3RyaW5nJiBrZXkpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBh
bmltYXRpb25TdGFydGVkKGNvbnN0IFN0cmluZyYga2V5LCBDRlRpbWVJbnRlcnZhbCBiZWdpblRp
bWUpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW0K
aW5kZXggMTk0MWFhYWNlYTI1ZTQxMzJkNzgwYTAzMjJhYzE5NWRkMjVhNWM1MC4uZmY3ZmFjOWRi
YThlZmY5ODUzNDYwYWVmN2UyYTQ4ZTdmMTk1NWE1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhLm1tCkBAIC02NzMsNyArNjczLDcgQEAgdm9pZCBUaWxlZENvcmVB
bmltYXRpb25EcmF3aW5nQXJlYTo6Y29tbWl0VHJhbnNpZW50Wm9vbShkb3VibGUgc2NhbGUsIEZs
b2F0UG9pbnQKICAgICAgICAgICAgIGRyYXdpbmdBcmVhLT5hcHBseVRyYW5zaWVudFpvb21Ub1Bh
Z2Uoc2NhbGUsIG9yaWdpbik7CiAgICAgfV07CiAKLSAgICB6b29tTGF5ZXItPmFkZEFuaW1hdGlv
bkZvcktleSgidHJhbnNpZW50Wm9vbUNvbW1pdCIsIHJlbmRlclZpZXdBbmltYXRpb24uZ2V0KCkp
OworICAgIHpvb21MYXllci0+YWRkQW5pbWF0aW9uRm9yS2V5KCJ0cmFuc2llbnRab29tQ29tbWl0
IiwgKnJlbmRlclZpZXdBbmltYXRpb24pOwogCiAgICAgaWYgKHNoYWRvd0NBTGF5ZXIpIHsKICAg
ICAgICAgRmxvYXRSZWN0IHNoYWRvd0JvdW5kcyA9IHNoYWRvd0xheWVyQm91bmRzRm9yRnJhbWUo
ZnJhbWVWaWV3LCBzY2FsZSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>