<?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>218697</bug_id>
          
          <creation_ts>2020-11-08 18:13:41 -0800</creation_ts>
          <short_desc>[JSC] Support @@species in ArrayBuffer / SharedArrayBuffer slice</short_desc>
          <delta_ts>2020-11-08 21:03:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1705625</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-11-08 18:13:41 -0800</bug_when>
    <thetext>[JSC] Support @@species in ArrayBuffer / SharedArrayBuffer slice</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705626</commentid>
    <comment_count>1</comment_count>
      <attachid>413550</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-11-08 18:16:48 -0800</bug_when>
    <thetext>Created attachment 413550
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705630</commentid>
    <comment_count>2</comment_count>
      <attachid>413551</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-11-08 18:26:44 -0800</bug_when>
    <thetext>Created attachment 413551
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705631</commentid>
    <comment_count>3</comment_count>
      <attachid>413552</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-11-08 18:37:40 -0800</bug_when>
    <thetext>Created attachment 413552
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705632</commentid>
    <comment_count>4</comment_count>
      <attachid>413553</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-11-08 19:01:20 -0800</bug_when>
    <thetext>Created attachment 413553
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705633</commentid>
    <comment_count>5</comment_count>
      <attachid>413553</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-11-08 19:53:16 -0800</bug_when>
    <thetext>Comment on attachment 413553
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=413553&amp;action=review

LGTM, based on my read of the spec &amp; existing ArrayPrototype code and pending EWS.

&gt; Source/JavaScriptCore/runtime/ArrayBufferSharingMode.h:33
&gt;  enum class ArrayBufferSharingMode {

Should we mark this `: bool`?

&gt; Source/JavaScriptCore/runtime/JSArrayBufferPrototype.cpp:59
&gt; +enum class SpeciesConstructResult {

Should we mark this `: uint8_t`?

&gt; Source/JavaScriptCore/runtime/JSArrayBufferPrototype.cpp:101
&gt; +    // 16. Let new be ? Construct(ctor, Â« ð½(newLen) Â»).

It&apos;s kind of surprising that these `slice` checks have are all moved into speciesConstructArrayBuffer itself, but that may be fine as long as we&apos;re sure to link to the relevant spec sections beforehand:

https://tc39.es/ecma262/#sec-arraybuffer.prototype.slice
https://tc39.es/ecma262/#sec-sharedarraybuffer.prototype.slice</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705635</commentid>
    <comment_count>6</comment_count>
      <attachid>413553</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-11-08 20:18:09 -0800</bug_when>
    <thetext>Comment on attachment 413553
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=413553&amp;action=review

Thanks!

&gt;&gt; Source/JavaScriptCore/runtime/ArrayBufferSharingMode.h:33
&gt;&gt;  enum class ArrayBufferSharingMode {
&gt; 
&gt; Should we mark this `: bool`?

Nice! I&apos;ll use `uint8_t` for now since we use this as an index in some places :)

&gt;&gt; Source/JavaScriptCore/runtime/JSArrayBufferPrototype.cpp:59
&gt;&gt; +enum class SpeciesConstructResult {
&gt; 
&gt; Should we mark this `: uint8_t`?

Nice, done.

&gt;&gt; Source/JavaScriptCore/runtime/JSArrayBufferPrototype.cpp:101
&gt;&gt; +    // 16. Let new be ? Construct(ctor, Â« ð½(newLen) Â»).
&gt; 
&gt; It&apos;s kind of surprising that these `slice` checks have are all moved into speciesConstructArrayBuffer itself, but that may be fine as long as we&apos;re sure to link to the relevant spec sections beforehand:
&gt; 
&gt; https://tc39.es/ecma262/#sec-arraybuffer.prototype.slice
&gt; https://tc39.es/ecma262/#sec-sharedarraybuffer.prototype.slice

Nice! I&apos;ll put these links in this function :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705643</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-11-08 21:02:49 -0800</bug_when>
    <thetext>Committed r269574: &lt;https://trac.webkit.org/changeset/269574&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1705644</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-08 21:03:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/71175759&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413550</attachid>
            <date>2020-11-08 18:16:48 -0800</date>
            <delta_ts>2020-11-08 18:27:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218697-20201108181647.patch</filename>
            <type>text/plain</type>
            <size>42861</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
OTg4ZjgyOWQzYzRkODU0N2YyZWYzM2EyNDEyZWQ4YWY5MTk4NzY4Li42NzVmNjlkZDVjMTFjMDVk
YWIzZWY5YWVmNzY5OTQ3NTZkNzI3MzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MCBAQAorMjAyMC0xMS0wOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFN1cHBvcnQgQEBzcGVjaWVzIGluIEFycmF5QnVmZmVyIC8gU2hh
cmVkQXJyYXlCdWZmZXIgc2xpY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxODY5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBAQHNwZWNpZXMgaW4gQXJy
YXlCdWZmZXIvU2hhcmVkQXJyYXlCdWZmZXIucHJvdG90eXBlLnNsaWNlLgorICAgICAgICBXZSBs
ZXZlcmFnZSB0aGUgbWVjaGFuaXNtIHNpbWlsYXIgdG8gQXJyYXkncyBAQHNwZWNpZXMgaGFuZGxp
bmc6IGFkZGluZyBmYXN0IHBhdGggd2l0aCB3YXRjaHBvaW50LgorICAgICAgICBXaGVuIHdlIGZv
dW5kIHRoYXQgc29tZSBvZiBjcml0aWNhbCBwcm9wZXJ0aWVzIChlLmcuICVQcm90b3R5cGUlLmNv
bnN0cnVjdG9yLCAlQ29uc3RydWN0b3IlW0BAc3BlY2llc10pCisgICAgICAgIGFyZSBtb2RpZmll
ZCwgd2F0Y2hwb2ludCBpcyBmaXJlZCBhbmQgd2UgZ28gdG8gdGhlIHNsb3cgcGF0aC4gVW50aWwg
dGhhdCwgd2UgdXNlIGZhc3QgcGF0aCB0aGF0IGlzCisgICAgICAgIGJhc2ljYWxseSB0aGUgc2Ft
ZSB0byB0aGUgY29kZSBiZWZvcmUgdGhpcyBwYXRjaC4KKworICAgICAgICAqIHJ1bnRpbWUvQXJy
YXlCdWZmZXIuY3BwOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6c2xpY2UgY29uc3QpOgor
ICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6c2xpY2VXaXRoQ2xhbXBlZEluZGV4IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnNsaWNlSW1wbCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlci5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlC
dWZmZXJTaGFyaW5nTW9kZS5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjpzcGVjaWVzV2F0Y2hwb2ludElzVmFsaWQpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnNwZWNpZXNX
YXRjaHBvaW50SXNWYWxpZCk6CisgICAgICAgIChKU0M6OmFycmF5QnVmZmVyU2xpY2UpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6SlNHbG9iYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnRyeUluc3RhbGxTcGVjaWVzV2F0Y2hwb2ludCk6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJyYXlTcGVjaWVzV2F0
Y2hwb2ludCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJyYXlC
dWZmZXJTcGVjaWVzV2F0Y2hwb2ludCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXJyYXlCdWZmZXJTcGVjaWVzV2F0
Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphcnJheUJ1ZmZlclBy
b3RvdHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphcnJheUJ1ZmZl
clN0cnVjdHVyZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphcnJheUJ1
ZmZlckNvbnN0cnVjdG9yIGNvbnN0KToKKwogMjAyMC0xMS0wNiAgRG1pdHJ5IEJlemhldHNrb3Yg
IDxkYmV6aGV0c2tvdkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXQVNNLVJlZmVyZW5jZXNdIFJl
bmFtZSBhbnlyZWYgdG8gZXh0ZXJucmVmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheUJ1ZmZlci5jcHAKaW5kZXggMGExODZjMmVkNTA3MDE1NTIzMjExZTI5YWMyMGM1MzYw
M2M1ZTAxZC4uYzliOGYyYTcxOTFlM2FjNzIwZDg5ZGZlMDQ2YTYxNTg5ZjNmNDBjNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcApAQCAtMzExLDE1
ICszMTEsMTUgQEAgdW5zaWduZWQgQXJyYXlCdWZmZXI6OmNsYW1wSW5kZXgoZG91YmxlIGluZGV4
KSBjb25zdAogCiBSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZShkb3VibGUg
YmVnaW4sIGRvdWJsZSBlbmQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHNsaWNlSW1wbChjbGFtcElu
ZGV4KGJlZ2luKSwgY2xhbXBJbmRleChlbmQpKTsKKyAgICByZXR1cm4gc2xpY2VXaXRoQ2xhbXBl
ZEluZGV4KGNsYW1wSW5kZXgoYmVnaW4pLCBjbGFtcEluZGV4KGVuZCkpOwogfQogCiBSZWZQdHI8
QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZShkb3VibGUgYmVnaW4pIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIHNsaWNlSW1wbChjbGFtcEluZGV4KGJlZ2luKSwgYnl0ZUxlbmd0aCgpKTsKKyAg
ICByZXR1cm4gc2xpY2VXaXRoQ2xhbXBlZEluZGV4KGNsYW1wSW5kZXgoYmVnaW4pLCBieXRlTGVu
Z3RoKCkpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZUltcGwo
dW5zaWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3QKK1JlZlB0cjxBcnJheUJ1ZmZlcj4g
QXJyYXlCdWZmZXI6OnNsaWNlV2l0aENsYW1wZWRJbmRleCh1bnNpZ25lZCBiZWdpbiwgdW5zaWdu
ZWQgZW5kKSBjb25zdAogewogICAgIHVuc2lnbmVkIHNpemUgPSBiZWdpbiA8PSBlbmQgPyBlbmQg
LSBiZWdpbiA6IDA7CiAgICAgYXV0byByZXN1bHQgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHN0
YXRpY19jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpICsgYmVnaW4sIHNpemUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKaW5kZXggOTZhNGE0Yzc3MTBiNmUy
MzdmY2QxN2U4MmQ1ZmY4NjIzNzM2NDc1Mi4uNjhmZjkwZTEzZWJhM2MyZjdiY2ZhNjkyNzA1ZmQ3
Zjc1N2RkNTI2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlCdWZmZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZl
ci5oCkBAIC0xMzcsNiArMTM3LDcgQEAgY2xhc3MgQXJyYXlCdWZmZXIgOiBwdWJsaWMgR0NJbmNv
bWluZ1JlZkNvdW50ZWQ8QXJyYXlCdWZmZXI+IHsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2UoZG91YmxlIGJlZ2luLCBkb3VibGUgZW5kKSBjb25zdDsK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlKGRvdWJsZSBi
ZWdpbikgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPEFycmF5QnVmZmVyPiBz
bGljZVdpdGhDbGFtcGVkSW5kZXgodW5zaWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3Q7
CiAgICAgCiAgICAgaW5saW5lIHZvaWQgcGluKCk7CiAgICAgaW5saW5lIHZvaWQgdW5waW4oKTsK
QEAgLTE2NCw3ICsxNjUsNiBAQCBjbGFzcyBBcnJheUJ1ZmZlciA6IHB1YmxpYyBHQ0luY29taW5n
UmVmQ291bnRlZDxBcnJheUJ1ZmZlcj4gewogICAgIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNy
ZWF0ZUludGVybmFsKEFycmF5QnVmZmVyQ29udGVudHMmJiwgY29uc3Qgdm9pZCosIHVuc2lnbmVk
KTsKICAgICBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUodW5zaWduZWQgbnVt
RWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6
SW5pdGlhbGl6YXRpb25Qb2xpY3kpOwogICAgIEFycmF5QnVmZmVyKEFycmF5QnVmZmVyQ29udGVu
dHMmJik7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBzbGljZUltcGwodW5zaWduZWQgYmVnaW4s
IHVuc2lnbmVkIGVuZCkgY29uc3Q7CiAgICAgaW5saW5lIHVuc2lnbmVkIGNsYW1wSW5kZXgoZG91
YmxlIGluZGV4KSBjb25zdDsKICAgICBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNsYW1wVmFsdWUo
ZG91YmxlIHgsIHVuc2lnbmVkIGxlZnQsIHVuc2lnbmVkIHJpZ2h0KTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJTaGFyaW5nTW9kZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJTaGFyaW5nTW9kZS5oCmlu
ZGV4IDYzMGVkM2RkNDJmYzhlOWMwOGY2NjI4Zjg5NmRkODQyNmI3NTFjYjEuLmUzMGQzZDNjNmYz
YjAwMjE4ZjA1MWQzNWRhYjBmOGU0Njk0MmU0NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyU2hhcmluZ01vZGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclNoYXJpbmdNb2RlLmgKQEAgLTMxLDcgKzMx
LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBlbnVtIGNsYXNzIEFycmF5QnVmZmVyU2hhcmluZ01v
ZGUgewotICAgIERlZmF1bHQsCisgICAgRGVmYXVsdCA9IDAsCiAgICAgU2hhcmVkCiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKaW5k
ZXggZGJlZWViOGE3Mzc4NmYzNjNiNDFlZThhMGRjZWE4NzIyYmY4NWYzNi4uYmZmZmM4N2JmNGFj
ODhjYjQ0YTQwOTJjZTc0YTkzODNhNzc5Mjk5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApAQCAtMTg2LDcgKzE4Niw3IEBAIG5hbWVz
cGFjZSBBcnJheVByb3RvdHlwZUludGVybmFsIHsKIHN0YXRpYyBib29sIHZlcmJvc2UgPSBmYWxz
ZTsKIH0KIAotQUxXQVlTX0lOTElORSBib29sIHNwZWNpZXNXYXRjaHBvaW50SXNWYWxpZChWTSYg
dm0sIEpTT2JqZWN0KiB0aGlzT2JqZWN0KQorc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBzcGVj
aWVzV2F0Y2hwb2ludElzVmFsaWQoVk0mIHZtLCBKU09iamVjdCogdGhpc09iamVjdCkKIHsKICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0
KHZtKTsKICAgICBBcnJheVByb3RvdHlwZSogYXJyYXlQcm90b3R5cGUgPSBnbG9iYWxPYmplY3Qt
PmFycmF5UHJvdG90eXBlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCmluZGV4IDcwZjMxN2Y4ZTY1OWQxZDE1
YjRiYjdhNzQ4NmZmZjNmODk3NTUzNTYuLjY1YzhmNTJhZDIyZjIwMmU1NDQyMTAxNmU1MDNlNTRl
Yzc1ZGFmNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXlCdWZmZXJQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCkBAIC0zMCw0OCArMzAsMTk2IEBACiAjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBKU0FycmF5QnVm
ZmVyUHJvdG90eXBlSW50ZXJuYWwgeworc3RhdGljIGNvbnN0ZXhwciBib29sIHZlcmJvc2UgPSBm
YWxzZTsKK307CiAKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGFycmF5QnVmZmVy
UHJvdG9GdW5jU2xpY2UpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oYXJyYXlC
dWZmZXJQcm90b0dldHRlckZ1bmNCeXRlTGVuZ3RoKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NU
X0ZVTkNUSU9OKHNoYXJlZEFycmF5QnVmZmVyUHJvdG9GdW5jU2xpY2UpOwogc3RhdGljIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04oc2hhcmVkQXJyYXlCdWZmZXJQcm90b0dldHRlckZ1bmNCeXRl
TGVuZ3RoKTsKIAorCitzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIHNwZWNpZXNXYXRjaHBvaW50
SXNWYWxpZChWTSYgdm0sIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBBcnJheUJ1ZmZlclNoYXJpbmdN
b2RlIG1vZGUpCit7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRoaXNPYmpl
Y3QtPmdsb2JhbE9iamVjdCh2bSk7CisgICAgYXV0byogcHJvdG90eXBlID0gZ2xvYmFsT2JqZWN0
LT5hcnJheUJ1ZmZlclByb3RvdHlwZShtb2RlKTsKKworICAgIGlmIChnbG9iYWxPYmplY3QtPmFy
cmF5QnVmZmVyU3BlY2llc1dhdGNocG9pbnRTZXQobW9kZSkuc3RhdGVPbkpTVGhyZWFkKCkgPT0g
Q2xlYXJXYXRjaHBvaW50KSB7CisgICAgICAgIGRhdGFMb2dMbklmKEpTQXJyYXlCdWZmZXJQcm90
b3R5cGVJbnRlcm5hbDo6dmVyYm9zZSwgIkluaXRpYWxpemluZyBBcnJheUJ1ZmZlciBzcGVjaWVz
IHdhdGNocG9pbnRzIGZvciBBcnJheUJ1ZmZlci5wcm90b3R5cGU6ICIsIHBvaW50ZXJEdW1wKHBy
b3RvdHlwZSksICIgd2l0aCBzdHJ1Y3R1cmU6ICIsIHBvaW50ZXJEdW1wKHByb3RvdHlwZS0+c3Ry
dWN0dXJlKHZtKSksICJcbmFuZCBBcnJheUJ1ZmZlcjogIiwgcG9pbnRlckR1bXAoZ2xvYmFsT2Jq
ZWN0LT5hcnJheUJ1ZmZlckNvbnN0cnVjdG9yKG1vZGUpKSwgIiB3aXRoIHN0cnVjdHVyZTogIiwg
cG9pbnRlckR1bXAoZ2xvYmFsT2JqZWN0LT5hcnJheUJ1ZmZlckNvbnN0cnVjdG9yKG1vZGUpLT5z
dHJ1Y3R1cmUodm0pKSk7CisgICAgICAgIGdsb2JhbE9iamVjdC0+dHJ5SW5zdGFsbEFycmF5QnVm
ZmVyU3BlY2llc1dhdGNocG9pbnQobW9kZSk7CisgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3Qt
PmFycmF5QnVmZmVyU3BlY2llc1dhdGNocG9pbnRTZXQobW9kZSkuc3RhdGVPbkpTVGhyZWFkKCkg
IT0gQ2xlYXJXYXRjaHBvaW50KTsKKyAgICB9CisKKyAgICByZXR1cm4gIXRoaXNPYmplY3QtPmhh
c0N1c3RvbVByb3BlcnRpZXModm0pCisgICAgICAgICYmIHByb3RvdHlwZSA9PSB0aGlzT2JqZWN0
LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pCisgICAgICAgICYmIGdsb2JhbE9iamVjdC0+YXJyYXlC
dWZmZXJTcGVjaWVzV2F0Y2hwb2ludFNldChtb2RlKS5zdGF0ZU9uSlNUaHJlYWQoKSA9PSBJc1dh
dGNoZWQ7Cit9CisKK2VudW0gY2xhc3MgU3BlY2llc0NvbnN0cnVjdFJlc3VsdCB7CisgICAgRmFz
dFBhdGgsCisgICAgRXhjZXB0aW9uLAorICAgIENyZWF0ZWRPYmplY3QKK307CisKK3N0YXRpYyBB
TFdBWVNfSU5MSU5FIHN0ZDo6cGFpcjxTcGVjaWVzQ29uc3RydWN0UmVzdWx0LCBKU0FycmF5QnVm
ZmVyKj4gc3BlY2llc0NvbnN0cnVjdEFycmF5QnVmZmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQXJyYXlCdWZmZXIqIHRoaXNPYmplY3QsIHVuc2lnbmVkIGxlbmd0aCwgQXJyYXlC
dWZmZXJTaGFyaW5nTW9kZSBtb2RlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRv
IGV4Y2VwdGlvblJlc3VsdCA9IFtdICgpIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWly
KFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQ6OkV4Y2VwdGlvbiwgbnVsbHB0cik7CisgICAgfTsKKwor
ICAgIC8vIEZhc3QgcGF0aCBpbiB0aGUgbm9ybWFsIGNhc2Ugd2hlcmUgdGhlIHVzZXIgaGFzIG5v
dCBzZXQgYW4gb3duIGNvbnN0cnVjdG9yIGFuZCB0aGUgQXJyYXlCdWZmZXIucHJvdG90eXBlLmNv
bnN0cnVjdG9yIGlzIG5vcm1hbC4KKyAgICAvLyBXZSBuZWVkIHByb3RvdHlwZSBjaGVjayBmb3Ig
c3ViY2xhc3NlcyBvZiBBcnJheUJ1ZmZlciwgd2hpY2ggYXJlIEFycmF5QnVmZmVyIG9iamVjdHMg
YnV0IGhhdmUgYSBkaWZmZXJlbnQgcHJvdG90eXBlIGJ5IGRlZmF1bHQuCisgICAgYm9vbCBpc1Zh
bGlkID0gc3BlY2llc1dhdGNocG9pbnRJc1ZhbGlkKHZtLCB0aGlzT2JqZWN0LCBtb2RlKTsKKyAg
ICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOworICAgIGlmIChMSUtFTFkoaXNWYWxpZCkpCisg
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihTcGVjaWVzQ29uc3RydWN0UmVzdWx0OjpGYXN0
UGF0aCwgbnVsbHB0cik7CisKKyAgICBKU1ZhbHVlIGNvbnN0cnVjdG9yID0gdGhpc09iamVjdC0+
Z2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGV4Y2VwdGlvblJlc3VsdCgpKTsKKyAgICBpZiAoY29u
c3RydWN0b3IuaXNDb25zdHJ1Y3Rvcih2bSkpIHsKKyAgICAgICAgSlNPYmplY3QqIGNvbnN0cnVj
dG9yT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oY29uc3RydWN0b3IpOworICAgICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0RnJvbUNvbnN0cnVjdG9yID0gY29uc3RydWN0b3JPYmpl
Y3QtPmdsb2JhbE9iamVjdCh2bSk7CisgICAgICAgIGJvb2wgaXNBcnJheUJ1ZmZlckNvbnN0cnVj
dG9yRnJvbUFub3RoZXJSZWFsbSA9IGdsb2JhbE9iamVjdCAhPSBnbG9iYWxPYmplY3RGcm9tQ29u
c3RydWN0b3IKKyAgICAgICAgICAgICYmIGNvbnN0cnVjdG9yT2JqZWN0ID09IGdsb2JhbE9iamVj
dEZyb21Db25zdHJ1Y3Rvci0+YXJyYXlCdWZmZXJDb25zdHJ1Y3Rvcihtb2RlKTsKKyAgICAgICAg
aWYgKGlzQXJyYXlCdWZmZXJDb25zdHJ1Y3RvckZyb21Bbm90aGVyUmVhbG0pCisgICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3BhaXIoU3BlY2llc0NvbnN0cnVjdFJlc3VsdDo6RmFzdFBhdGgs
IG51bGxwdHIpOworICAgIH0KKyAgICBpZiAoY29uc3RydWN0b3IuaXNPYmplY3QoKSkgeworICAg
ICAgICBjb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yLmdldChnbG9iYWxPYmplY3QsIHZtLnByb3Bl
cnR5TmFtZXMtPnNwZWNpZXNTeW1ib2wpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBleGNlcHRpb25SZXN1bHQoKSk7CisgICAgICAgIGlmIChjb25zdHJ1Y3Rvci5pc051bGwo
KSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihTcGVjaWVzQ29uc3RydWN0UmVz
dWx0OjpGYXN0UGF0aCwgbnVsbHB0cik7CisgICAgfQorCisgICAgaWYgKGNvbnN0cnVjdG9yLmlz
VW5kZWZpbmVkKCkpCisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihTcGVjaWVzQ29uc3Ry
dWN0UmVzdWx0OjpGYXN0UGF0aCwgbnVsbHB0cik7CisKKyAgICAvLyAxNi4gTGV0IG5ldyBiZSA/
IENvbnN0cnVjdChjdG9yLCDCqyDwnZS9KG5ld0xlbikgwrspLgorICAgIE1hcmtlZEFyZ3VtZW50
QnVmZmVyIGFyZ3M7CisgICAgYXJncy5hcHBlbmQoanNOdW1iZXIobGVuZ3RoKSk7CisgICAgQVNT
RVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CisgICAgSlNPYmplY3QqIG5ld09iamVjdCA9IGNv
bnN0cnVjdChnbG9iYWxPYmplY3QsIGNvbnN0cnVjdG9yLCBhcmdzLCAiU3BlY2llcyBjb25zdHJ1
Y3Rpb24gZGlkIG5vdCBnZXQgYSB2YWxpZCBjb25zdHJ1Y3RvciIpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGV4Y2VwdGlvblJlc3VsdCgpKTsKKworICAgIC8vIDE3LiBQZXJmb3Jt
ID8gUmVxdWlyZUludGVybmFsU2xvdChuZXcsIFtbQXJyYXlCdWZmZXJEYXRhXV0pLgorICAgIEpT
QXJyYXlCdWZmZXIqIHJlc3VsdCA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KHZtLCBu
ZXdPYmplY3QpOworICAgIGlmIChVTkxJS0VMWSghcmVzdWx0KSkgeworICAgICAgICB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiU3BlY2llcyBjb25zdHJ1Y3Rpb24gZG9lcyBu
b3QgY3JlYXRlIEFycmF5QnVmZmVyIl9zKTsKKyAgICAgICAgcmV0dXJuIGV4Y2VwdGlvblJlc3Vs
dCgpOworICAgIH0KKworICAgIGlmIChtb2RlID09IEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OkRl
ZmF1bHQpIHsKKyAgICAgICAgLy8gMTguIElmIElzU2hhcmVkQXJyYXlCdWZmZXIobmV3KSBpcyB0
cnVlLCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCisgICAgICAgIGlmIChyZXN1bHQtPmlz
U2hhcmVkKCkpIHsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJBcnJheUJ1ZmZlci5wcm90b3R5cGUuc2xpY2UgY3JlYXRlcyBTaGFyZWRBcnJheUJ1ZmZl
ciJfcyk7CisgICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uUmVzdWx0KCk7CisgICAgICAgIH0K
KyAgICAgICAgLy8gMTkuIElmIElzRGV0YWNoZWRCdWZmZXIobmV3KSBpcyB0cnVlLCB0aHJvdyBh
IFR5cGVFcnJvciBleGNlcHRpb24uCisgICAgICAgIGlmIChyZXN1bHQtPmltcGwoKS0+aXNEZXRh
Y2hlZCgpKSB7CisgICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJDcmVhdGVkIEFycmF5QnVmZmVyIGlzIGRldGFjaGVkIl9zKTsKKyAgICAgICAgICAgIHJl
dHVybiBleGNlcHRpb25SZXN1bHQoKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAg
IC8vIDE3LiBJZiBJc1NoYXJlZEFycmF5QnVmZmVyKG5ldykgaXMgZmFsc2UsIHRocm93IGEgVHlw
ZUVycm9yIGV4Y2VwdGlvbi4KKyAgICAgICAgaWYgKCFyZXN1bHQtPmlzU2hhcmVkKCkpIHsKKyAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJTaGFyZWRBcnJh
eUJ1ZmZlci5wcm90b3R5cGUuc2xpY2UgY3JlYXRlcyBub24tc2hhcmVkIEFycmF5QnVmZmVyIl9z
KTsKKyAgICAgICAgICAgIHJldHVybiBleGNlcHRpb25SZXN1bHQoKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIC8vIDIwLiBJZiBTYW1lVmFsdWUobmV3LCBPKSBpcyB0cnVlLCB0aHJvdyBhIFR5
cGVFcnJvciBleGNlcHRpb24uCisgICAgaWYgKHJlc3VsdCA9PSB0aGlzT2JqZWN0KSB7CisgICAg
ICAgIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlNwZWNpZXMgY29uc3Ry
dWN0aW9uIHJldHVybnMgc2FtZSBBcnJheUJ1ZmZlciB0byBhIHJlY2VpdmVyIl9zKTsKKyAgICAg
ICAgcmV0dXJuIGV4Y2VwdGlvblJlc3VsdCgpOworICAgIH0KKworICAgIC8vIDIxLiBJZiBuZXcu
W1tBcnJheUJ1ZmZlckJ5dGVMZW5ndGhdXSA8IG5ld0xlbiwgdGhyb3cgYSBUeXBlRXJyb3IgZXhj
ZXB0aW9uLgorICAgIGlmIChyZXN1bHQtPmltcGwoKS0+Ynl0ZUxlbmd0aCgpIDwgbGVuZ3RoKSB7
CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlNwZWNpZXMg
Y29uc3RydWN0aW9uIHJldHVybnMgQXJyYXlCdWZmZXIgd2hpY2ggYnl0ZUxlbmd0aCBpcyBsZXNz
IHRoYW4gcmVxdWVzdGVkIl9zKTsKKyAgICAgICAgcmV0dXJuIGV4Y2VwdGlvblJlc3VsdCgpOwor
ICAgIH0KKworICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihTcGVjaWVzQ29uc3RydWN0UmVzdWx0
OjpDcmVhdGVkT2JqZWN0LCByZXN1bHQpOworfQorCisKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBh
cnJheUJ1ZmZlclNsaWNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYXJy
YXlCdWZmZXJWYWx1ZSwgSlNWYWx1ZSBzdGFydFZhbHVlLCBKU1ZhbHVlIGVuZFZhbHVlLCBBcnJh
eUJ1ZmZlclNoYXJpbmdNb2RlIG1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAorICAgIC8v
IDIuIFBlcmZvcm0gPyBSZXF1aXJlSW50ZXJuYWxTbG90KE8sIFtbQXJyYXlCdWZmZXJEYXRhXV0p
LgorICAgIC8vIDMuIElmIElzU2hhcmVkQXJyYXlCdWZmZXIoTykgaXMgdHJ1ZSwgdGhyb3cgYSBU
eXBlRXJyb3IgZXhjZXB0aW9uLgogICAgIEpTQXJyYXlCdWZmZXIqIHRoaXNPYmplY3QgPSBqc0R5
bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXIqPih2bSwgYXJyYXlCdWZmZXJWYWx1ZSk7CiAgICAgaWYg
KCF0aGlzT2JqZWN0IHx8IChtb2RlICE9IHRoaXNPYmplY3QtPmltcGwoKS0+c2hhcmluZ01vZGUo
KSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
IG1ha2VTdHJpbmcoIlJlY2VpdmVyIG11c3QgYmUgIl9zLCBtb2RlID09IEFycmF5QnVmZmVyU2hh
cmluZ01vZGU6OkRlZmF1bHQgPyAiQXJyYXlCdWZmZXIiX3MgOiAiU2hhcmVkQXJyYXlCdWZmZXIi
X3MpKTsKIAorICAgIC8vIDQuIElmIElzRGV0YWNoZWRCdWZmZXIoTykgaXMgdHJ1ZSwgdGhyb3cg
YSBUeXBlRXJyb3IgZXhjZXB0aW9uLgogICAgIGlmIChtb2RlID09IEFycmF5QnVmZmVyU2hhcmlu
Z01vZGU6OkRlZmF1bHQgJiYgdGhpc09iamVjdC0+aW1wbCgpLT5pc0RldGFjaGVkKCkpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZl
ciBpcyBkZXRhY2hlZCJfcyk7CiAKLSAgICBkb3VibGUgYmVnaW4gPSBzdGFydFZhbHVlLnRvSW50
ZWdlck9ySW5maW5pdHkoZ2xvYmFsT2JqZWN0KTsKKyAgICAvLyA1LiBMZXQgbGVuIGJlIE8uW1tB
cnJheUJ1ZmZlckJ5dGVMZW5ndGhdXS4KKyAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gdGhpc09i
amVjdC0+aW1wbCgpLT5ieXRlTGVuZ3RoKCk7CisgICAgaW50NjRfdCBmaXJzdEluZGV4ID0gMDsK
KyAgICBkb3VibGUgcmVsYXRpdmVTdGFydCA9IHN0YXJ0VmFsdWUudG9JbnRlZ2VyT3JJbmZpbml0
eShnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOworICAgIGlmIChyZWxhdGl2ZVN0YXJ0IDwgMCkKKyAgICAgICAgZmlyc3RJbmRl
eCA9IHN0YXRpY19jYXN0PGludDY0X3Q+KHN0ZDo6bWF4PGRvdWJsZT4oYnl0ZUxlbmd0aCArIHJl
bGF0aXZlU3RhcnQsIDApKTsKKyAgICBlbHNlCisgICAgICAgIGZpcnN0SW5kZXggPSBzdGF0aWNf
Y2FzdDxpbnQ2NF90PihzdGQ6Om1pbjxkb3VibGU+KHJlbGF0aXZlU3RhcnQsIGJ5dGVMZW5ndGgp
KTsKKyAgICBBU1NFUlQoZmlyc3RJbmRleCA+PSAwKTsKKyAgICBBU1NFUlQoZmlyc3RJbmRleCA8
PSBieXRlTGVuZ3RoKTsKIAotICAgIGRvdWJsZSBlbmQ7CisgICAgaW50NjRfdCBmaW5hbEluZGV4
ID0gMDsKICAgICBpZiAoIWVuZFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgZW5kID0g
ZW5kVmFsdWUudG9JbnRlZ2VyT3JJbmZpbml0eShnbG9iYWxPYmplY3QpOworICAgICAgICBkb3Vi
bGUgcmVsYXRpdmVFbmQgPSBlbmRWYWx1ZS50b0ludGVnZXJPckluZmluaXR5KGdsb2JhbE9iamVj
dCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OworICAgICAgICBpZiAocmVsYXRpdmVFbmQgPCAwKQorICAgICAgICAgICAgZmluYWxJbmRleCA9
IHN0YXRpY19jYXN0PGludDY0X3Q+KHN0ZDo6bWF4PGRvdWJsZT4oYnl0ZUxlbmd0aCArIHJlbGF0
aXZlRW5kLCAwKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZpbmFsSW5kZXggPSBzdGF0
aWNfY2FzdDxpbnQ2NF90PihzdGQ6Om1pbjxkb3VibGU+KHJlbGF0aXZlRW5kLCBieXRlTGVuZ3Ro
KSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGVuZCA9IHRoaXNPYmplY3QtPmltcGwoKS0+Ynl0ZUxl
bmd0aCgpOworICAgICAgICBmaW5hbEluZGV4ID0gdGhpc09iamVjdC0+aW1wbCgpLT5ieXRlTGVu
Z3RoKCk7CisgICAgQVNTRVJUKGZpbmFsSW5kZXggPj0gMCk7CisgICAgQVNTRVJUKGZpbmFsSW5k
ZXggPD0gYnl0ZUxlbmd0aCk7CisKKyAgICAvLyAxNC4gTGV0IG5ld0xlbiBiZSBtYXgoZmluYWwg
LSBmaXJzdCwgMCkuCisgICAgdW5zaWduZWQgbmV3TGVuZ3RoID0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHN0ZDo6bWF4PGludDY0X3Q+KGZpbmFsSW5kZXggLSBmaXJzdEluZGV4LCAwKSk7CisKKyAg
ICAvLyAxNS4gTGV0IGN0b3IgYmUgPyBTcGVjaWVzQ29uc3RydWN0b3IoTywgJUFycmF5QnVmZmVy
JSkuCisgICAgYXV0byBzcGVjaWVzUmVzdWx0ID0gc3BlY2llc0NvbnN0cnVjdEFycmF5QnVmZmVy
KGdsb2JhbE9iamVjdCwgdGhpc09iamVjdCwgbmV3TGVuZ3RoLCBtb2RlKTsKKyAgICAvLyBXZSBj
YW4gb25seSBnZXQgYW4gZXhjZXB0aW9uIGlmIHdlIGNhbGwgc29tZSB1c2VyIGZ1bmN0aW9uLgor
ICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAoc3BlY2llc1Jlc3Vs
dC5maXJzdCA9PSBTcGVjaWVzQ29uc3RydWN0UmVzdWx0OjpFeGNlcHRpb24pKTsKKyAgICBpZiAo
VU5MSUtFTFkoc3BlY2llc1Jlc3VsdC5maXJzdCA9PSBTcGVjaWVzQ29uc3RydWN0UmVzdWx0OjpF
eGNlcHRpb24pKQorICAgICAgICByZXR1cm4geyB9OwogCiAgICAgLy8gMjMuIElmIElzRGV0YWNo
ZWRCdWZmZXIoTykgaXMgdHJ1ZSwgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uLgotICAgIC8v
IENoZWNrIGRldGFjaCBzdGF0dXMgYWdhaW4gc2luY2UgdG9JbnRlZ2VyT3JJbmZpbml0eSBjYW4g
aGF2ZSBzaWRlIGVmZmVjdC4KICAgICBpZiAobW9kZSA9PSBBcnJheUJ1ZmZlclNoYXJpbmdNb2Rl
OjpEZWZhdWx0ICYmIHRoaXNPYmplY3QtPmltcGwoKS0+aXNEZXRhY2hlZCgpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIgaXMg
ZGV0YWNoZWQiX3MpOwogCi0gICAgYXV0byBuZXdCdWZmZXIgPSB0aGlzT2JqZWN0LT5pbXBsKCkt
PnNsaWNlKGJlZ2luLCBlbmQpOwotICAgIGlmICghbmV3QnVmZmVyKQotICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
KSk7Ci0KLSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+YXJyYXlCdWZm
ZXJTdHJ1Y3R1cmUobmV3QnVmZmVyLT5zaGFyaW5nTW9kZSgpKTsKLQotICAgIEpTQXJyYXlCdWZm
ZXIqIHJlc3VsdCA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0ZSh2bSwgc3RydWN0dXJlLCBXVEZNb3Zl
KG5ld0J1ZmZlcikpOworICAgIGlmIChMSUtFTFkoc3BlY2llc1Jlc3VsdC5maXJzdCA9PSBTcGVj
aWVzQ29uc3RydWN0UmVzdWx0OjpGYXN0UGF0aCkpIHsKKyAgICAgICAgQVNTRVJUKCF0aGlzT2Jq
ZWN0LT5pbXBsKCktPmlzRGV0YWNoZWQoKSk7CisgICAgICAgIGF1dG8gbmV3QnVmZmVyID0gdGhp
c09iamVjdC0+aW1wbCgpLT5zbGljZVdpdGhDbGFtcGVkSW5kZXgoZmlyc3RJbmRleCwgZmluYWxJ
bmRleCk7CisgICAgICAgIGlmICghbmV3QnVmZmVyKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSkpOwor
ICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+YXJyYXlCdWZmZXJT
dHJ1Y3R1cmUobmV3QnVmZmVyLT5zaGFyaW5nTW9kZSgpKTsKKyAgICAgICAgSlNBcnJheUJ1ZmZl
ciogcmVzdWx0ID0gSlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUo
bmV3QnVmZmVyKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAg
ICB9CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgLy8gMjQuIExl
dCBmcm9tQnVmIGJlIE8uW1tBcnJheUJ1ZmZlckRhdGFdXS4KKyAgICAvLyAyNS4gTGV0IHRvQnVm
IGJlIG5ldy5bW0FycmF5QnVmZmVyRGF0YV1dLgorICAgIC8vIDI2LiBQZXJmb3JtIENvcHlEYXRh
QmxvY2tCeXRlcyh0b0J1ZiwgMCwgZnJvbUJ1ZiwgZmlyc3QsIG5ld0xlbikuCisgICAgSlNBcnJh
eUJ1ZmZlciogbmV3T2JqZWN0ID0gc3BlY2llc1Jlc3VsdC5zZWNvbmQ7CisgICAgQVNTRVJUKCF0
aGlzT2JqZWN0LT5pbXBsKCktPmlzRGV0YWNoZWQoKSk7CisgICAgQVNTRVJUKCFuZXdPYmplY3Qt
PmltcGwoKS0+aXNEZXRhY2hlZCgpKTsKKyAgICBBU1NFUlQobmV3T2JqZWN0LT5pbXBsKCktPmJ5
dGVMZW5ndGgoKSA+PSBuZXdMZW5ndGgpOworICAgIG1lbWNweShuZXdPYmplY3QtPmltcGwoKS0+
ZGF0YSgpLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4odGhpc09iamVjdC0+aW1wbCgpLT5kYXRh
KCkpICsgZmlyc3RJbmRleCwgbmV3TGVuZ3RoKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KG5ld09iamVjdCk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBhcnJheUJ1ZmZlckJ5dGVM
ZW5ndGgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBhcnJheUJ1ZmZlclZh
bHVlLCBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlIG1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggYjVjNWYxNDcwODg2MTI2OGYw
OTQxOWViNTJkY2Y1OTc5NDY3ZjRiOS4uZDMzM2M0Y2I0MDUzNGUyYjY4OTIwOWFmMmZkODVkOTNm
ZDkwZGZmOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcApAQCAtNTAyLDYgKzUwMiw3IEBAIEpTR2xvYmFsT2JqZWN0OjpKU0dsb2JhbE9i
amVjdChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBHbG9iYWxPYmplY3RNCiAg
ICAgLCBtX2FycmF5U3BlY2llc1dhdGNocG9pbnRTZXQoQ2xlYXJXYXRjaHBvaW50KQogICAgICwg
bV9hcnJheUpvaW5XYXRjaHBvaW50U2V0KElzV2F0Y2hlZCkKICAgICAsIG1fbnVtYmVyVG9TdHJp
bmdXYXRjaHBvaW50U2V0KElzV2F0Y2hlZCkKKyAgICAsIG1fYXJyYXlCdWZmZXJTcGVjaWVzV2F0
Y2hwb2ludFNldHMgeyBDbGVhcldhdGNocG9pbnQsIENsZWFyV2F0Y2hwb2ludCB9CiAgICAgLCBt
X3J1bnRpbWVGbGFncygpCiAgICAgLCBtX3N0YWNrVHJhY2VMaW1pdChPcHRpb25zOjpkZWZhdWx0
RXJyb3JTdGFja1RyYWNlTGltaXQoKSkKICAgICAsIG1fZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUo
Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPyBnbG9iYWxPYmplY3RNZXRob2RUYWJsZSA6ICZzX2ds
b2JhbE9iamVjdE1ldGhvZFRhYmxlKQpAQCAtODMyLDggKzgzMywxMiBAQCB2b2lkIEpTR2xvYmFs
T2JqZWN0Ojppbml0KFZNJiB2bSkKIAogI2lmIEVOQUJMRShTSEFSRURfQVJSQVlfQlVGRkVSKQog
ICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRBcnJheUJ1ZmZlcigpKSB7Ci0gICAgICAgIG1fc2hh
cmVkQXJyYXlCdWZmZXJQcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBKU0FycmF5QnVmZmVyUHJvdG90
eXBlOjpjcmVhdGUodm0sIHRoaXMsIEpTQXJyYXlCdWZmZXJQcm90b3R5cGU6OmNyZWF0ZVN0cnVj
dHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpLCBBcnJheUJ1ZmZlclNoYXJp
bmdNb2RlOjpTaGFyZWQpKTsKLSAgICAgICAgbV9zaGFyZWRBcnJheUJ1ZmZlclN0cnVjdHVyZS5z
ZXQodm0sIHRoaXMsIEpTQXJyYXlCdWZmZXI6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9z
aGFyZWRBcnJheUJ1ZmZlclByb3RvdHlwZS5nZXQoKSkpOworICAgICAgICBtX3NoYXJlZEFycmF5
QnVmZmVyU3RydWN0dXJlLmluaXRMYXRlcigKKyAgICAgICAgICAgIFtdIChMYXp5Q2xhc3NTdHJ1
Y3R1cmU6OkluaXRpYWxpemVyJiBpbml0KSB7CisgICAgICAgICAgICAgICAgaW5pdC5zZXRQcm90
b3R5cGUoSlNBcnJheUJ1ZmZlclByb3RvdHlwZTo6Y3JlYXRlKGluaXQudm0sIGluaXQuZ2xvYmFs
LCBKU0FycmF5QnVmZmVyUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgaW5pdC5n
bG9iYWwsIGluaXQuZ2xvYmFsLT5tX29iamVjdFByb3RvdHlwZS5nZXQoKSksIEFycmF5QnVmZmVy
U2hhcmluZ01vZGU6OlNoYXJlZCkpOworICAgICAgICAgICAgICAgIGluaXQuc2V0U3RydWN0dXJl
KEpTQXJyYXlCdWZmZXI6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBpbml0Lmdsb2JhbCwgaW5p
dC5wcm90b3R5cGUpKTsKKyAgICAgICAgICAgICAgICBpbml0LnNldENvbnN0cnVjdG9yKEpTU2hh
cmVkQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGluaXQudm0sIEpTU2hhcmVkQXJyYXlC
dWZmZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGluaXQuZ2xvYmFsLCBp
bml0Lmdsb2JhbC0+bV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIGpzQ2FzdDxKU0FycmF5QnVm
ZmVyUHJvdG90eXBlKj4oaW5pdC5wcm90b3R5cGUpLCBpbml0Lmdsb2JhbC0+bV9zcGVjaWVzR2V0
dGVyU2V0dGVyLmdldCgpKSk7CisgICAgICAgICAgICB9KTsKICAgICB9CiAjZW5kaWYKIApAQCAt
OTAxLDE0ICs5MDYsOSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICBt
X3JlZ0V4cEdsb2JhbERhdGEuY2FjaGVkUmVzdWx0KCkucmVjb3JkKHZtLCB0aGlzLCBudWxscHRy
LCBqc0VtcHR5U3RyaW5nKHZtKSwgTWF0Y2hSZXN1bHQoMCwgMCkpOwogICAgIAogI2lmIEVOQUJM
RShTSEFSRURfQVJSQVlfQlVGRkVSKQotICAgIEpTU2hhcmVkQXJyYXlCdWZmZXJDb25zdHJ1Y3Rv
ciogc2hhcmVkQXJyYXlCdWZmZXJDb25zdHJ1Y3RvciA9IG51bGxwdHI7CiAgICAgQXRvbWljc09i
amVjdCogYXRvbWljc09iamVjdCA9IG51bGxwdHI7Ci0gICAgaWYgKE9wdGlvbnM6OnVzZVNoYXJl
ZEFycmF5QnVmZmVyKCkpIHsKLSAgICAgICAgc2hhcmVkQXJyYXlCdWZmZXJDb25zdHJ1Y3RvciA9
IEpTU2hhcmVkQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBKU1NoYXJlZEFycmF5
QnVmZmVyQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9mdW5jdGlvblBy
b3RvdHlwZS5nZXQoKSksIG1fc2hhcmVkQXJyYXlCdWZmZXJQcm90b3R5cGUuZ2V0KCksIG1fc3Bl
Y2llc0dldHRlclNldHRlci5nZXQoKSk7Ci0gICAgICAgIG1fc2hhcmVkQXJyYXlCdWZmZXJQcm90
b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5j
b25zdHJ1Y3Rvciwgc2hhcmVkQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvciwgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwotCisgICAgaWYgKE9wdGlvbnM6
OnVzZVNoYXJlZEFycmF5QnVmZmVyKCkpCiAgICAgICAgIGF0b21pY3NPYmplY3QgPSBBdG9taWNz
T2JqZWN0OjpjcmVhdGUodm0sIHRoaXMsIEF0b21pY3NPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKTsKLSAgICB9CiAjZW5kaWYKIAogI2Rl
ZmluZSBDUkVBVEVfQ09OU1RSVUNUT1JfRk9SX1NJTVBMRV9UWVBFKGNhcGl0YWxOYW1lLCBsb3dl
ck5hbWUsIHByb3Blck5hbWUsIGluc3RhbmNlVHlwZSwganNOYW1lLCBwcm90b3R5cGVCYXNlLCBm
ZWF0dXJlRmxhZykgXApAQCAtOTg5LDcgKzk4OSw3IEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVj
dG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1l
CiAKICNpZiBFTkFCTEUoU0hBUkVEX0FSUkFZX0JVRkZFUikKICAgICBpZiAoT3B0aW9uczo6dXNl
U2hhcmVkQXJyYXlCdWZmZXIoKSkgewotICAgICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+U2hhcmVkQXJyYXlCdWZmZXIsIHNoYXJlZEFycmF5QnVm
ZmVyQ29uc3RydWN0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pKTsKKyAgICAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnBy
b3BlcnR5TmFtZXMtPlNoYXJlZEFycmF5QnVmZmVyLCBtX3NoYXJlZEFycmF5QnVmZmVyU3RydWN0
dXJlLmNvbnN0cnVjdG9yKHRoaXMpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5BdG9taWNzLCBhdG9taWNzT2JqZWN0LCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgfQogI2VuZGlmCkBA
IC0yMDMzLDE0ICsyMDMzLDEyIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB0aGlzT2JqZWN0LT5tX3By
b3h5T2JqZWN0U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fY2Fs
bGFibGVQcm94eU9iamVjdFN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0
LT5tX3Byb3h5UmV2b2tlU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOworI2lmIEVOQUJMRShTSEFS
RURfQVJSQVlfQlVGRkVSKQorICAgIHRoaXNPYmplY3QtPm1fc2hhcmVkQXJyYXlCdWZmZXJTdHJ1
Y3R1cmUudmlzaXQodmlzaXRvcik7CisjZW5kaWYKIAogICAgIGZvciAoYXV0byYgcHJvcGVydHkg
OiB0aGlzT2JqZWN0LT5tX2xpbmtUaW1lQ29uc3RhbnRzKQogICAgICAgICBwcm9wZXJ0eS52aXNp
dCh2aXNpdG9yKTsKLSAgICAKLSNpZiBFTkFCTEUoU0hBUkVEX0FSUkFZX0JVRkZFUikKLSAgICB2
aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3NoYXJlZEFycmF5QnVmZmVyUHJvdG90eXBlKTsK
LSAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX3NoYXJlZEFycmF5QnVmZmVyU3RydWN0
dXJlKTsKLSNlbmRpZgogCiAjZGVmaW5lIFZJU0lUX1NJTVBMRV9UWVBFKENhcGl0YWxOYW1lLCBs
b3dlck5hbWUsIHByb3Blck5hbWUsIGluc3RhbmNlVHlwZSwganNOYW1lLCBwcm90b3R5cGVCYXNl
LCBmZWF0dXJlRmxhZykgaWYgKGZlYXR1cmVGbGFnKSB7IFwKICAgICAgICAgdmlzaXRvci5hcHBl
bmQodGhpc09iamVjdC0+bV8gIyMgbG93ZXJOYW1lICMjIFByb3RvdHlwZSk7IFwKQEAgLTIxMzYs
NDggKzIxMzQsNDUgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6Y2xlYXJSYXJlRGF0YShKU0NlbGwq
IGNlbGwpCiAgICAganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oY2VsbCktPm1fcmFyZURhdGEgPSBu
dWxscHRyOwogfQogCi12b2lkIEpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJyYXlTcGVjaWVz
V2F0Y2hwb2ludCgpCit2b2lkIEpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsU3BlY2llc1dhdGNo
cG9pbnQoSlNPYmplY3QqIHByb3RvdHlwZSwgSlNPYmplY3QqIGNvbnN0cnVjdG9yLCBzdGQ6OnVu
aXF1ZV9wdHI8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0
Y2hwb2ludFNldD4+JiBjb25zdHJ1Y3RvcldhdGNocG9pbnQsIHN0ZDo6dW5pcXVlX3B0cjxPYmpl
Y3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4m
IHNwZWNpZXNXYXRjaHBvaW50LCBJbmxpbmVXYXRjaHBvaW50U2V0JiBzcGVjaWVzV2F0Y2hwb2lu
dFNldCkKIHsKLSAgICBSRUxFQVNFX0FTU0VSVCghbV9hcnJheVByb3RvdHlwZUNvbnN0cnVjdG9y
V2F0Y2hwb2ludCk7Ci0gICAgUkVMRUFTRV9BU1NFUlQoIW1fYXJyYXlDb25zdHJ1Y3RvclNwZWNp
ZXNXYXRjaHBvaW50KTsKKyAgICBSRUxFQVNFX0FTU0VSVCghY29uc3RydWN0b3JXYXRjaHBvaW50
KTsKKyAgICBSRUxFQVNFX0FTU0VSVCghc3BlY2llc1dhdGNocG9pbnQpOwogCiAgICAgVk0mIHZt
ID0gdGhpcy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKLSAgICAvLyBGaXJzdCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBBcnJheS5wcm90
b3R5cGUuY29uc3RydWN0b3IgcHJvcGVydHkgcG9pbnRzIHRvIEFycmF5Ci0gICAgLy8gYW5kIHRo
YXQgQXJyYXlbU3ltYm9sLnNwZWNpZXNdIGlzIHRoZSBwcmltb3JkaWFsIEdldHRlclNldHRlci4K
LSAgICBBcnJheVByb3RvdHlwZSogYXJyYXlQcm90b3R5cGUgPSB0aGlzLT5hcnJheVByb3RvdHlw
ZSgpOworICAgIC8vIEZpcnN0IHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlICVwcm90b3R5
cGUlLmNvbnN0cnVjdG9yIHByb3BlcnR5IHBvaW50cyB0byBhICVjb25zdHJ1Y3RvciUKKyAgICAv
LyBhbmQgdGhhdCAlY29uc3RydWN0b3IlW1N5bWJvbC5zcGVjaWVzXSBpcyB0aGUgcHJpbW9yZGlh
bCBHZXR0ZXJTZXR0ZXIuCiAKICAgICAvLyBXZSBvbmx5IGluaXRpYWxpemUgb25jZSBzbyBmbGF0
dGVuaW5nIHRoZSBzdHJ1Y3R1cmVzIGRvZXMgbm90IGhhdmUgYW55IHJlYWwgY29zdC4KLSAgICBT
dHJ1Y3R1cmUqIHByb3RvdHlwZVN0cnVjdHVyZSA9IGFycmF5UHJvdG90eXBlLT5zdHJ1Y3R1cmUo
dm0pOworICAgIFN0cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlID0gcHJvdG90eXBlLT5zdHJ1
Y3R1cmUodm0pOwogICAgIGlmIChwcm90b3R5cGVTdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQot
ICAgICAgICBwcm90b3R5cGVTdHJ1Y3R1cmUgPSBwcm90b3R5cGVTdHJ1Y3R1cmUtPmZsYXR0ZW5E
aWN0aW9uYXJ5U3RydWN0dXJlKHZtLCBhcnJheVByb3RvdHlwZSk7CisgICAgICAgIHByb3RvdHlw
ZVN0cnVjdHVyZSA9IHByb3RvdHlwZVN0cnVjdHVyZS0+ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1
cmUodm0sIHByb3RvdHlwZSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIXByb3RvdHlwZVN0cnVjdHVy
ZS0+aXNEaWN0aW9uYXJ5KCkpOwogCi0gICAgQXJyYXlDb25zdHJ1Y3RvciogYXJyYXlDb25zdHJ1
Y3RvciA9IHRoaXMtPmFycmF5Q29uc3RydWN0b3IoKTsKLQogICAgIGF1dG8gaW52YWxpZGF0ZVdh
dGNocG9pbnQgPSBbJl0gewotICAgICAgICBtX2FycmF5U3BlY2llc1dhdGNocG9pbnRTZXQuaW52
YWxpZGF0ZSh2bSwgU3RyaW5nRmlyZURldGFpbCgiV2FzIG5vdCBhYmxlIHRvIHNldCB1cCBhcnJh
eSBzcGVjaWVzIHdhdGNocG9pbnQuIikpOworICAgICAgICBzcGVjaWVzV2F0Y2hwb2ludFNldC5p
bnZhbGlkYXRlKHZtLCBTdHJpbmdGaXJlRGV0YWlsKCJXYXMgbm90IGFibGUgdG8gc2V0IHVwIHNw
ZWNpZXMgd2F0Y2hwb2ludC4iKSk7CiAgICAgfTsKIAotICAgIFByb3BlcnR5U2xvdCBjb25zdHJ1
Y3RvclNsb3QoYXJyYXlQcm90b3R5cGUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBl
OjpWTUlucXVpcnksICZ2bSk7Ci0gICAgYXJyYXlQcm90b3R5cGUtPmdldE93blByb3BlcnR5U2xv
dChhcnJheVByb3RvdHlwZSwgdGhpcywgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIGNv
bnN0cnVjdG9yU2xvdCk7CisgICAgUHJvcGVydHlTbG90IGNvbnN0cnVjdG9yU2xvdChwcm90b3R5
cGUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnksICZ2bSk7Cisg
ICAgcHJvdG90eXBlLT5nZXRPd25Qcm9wZXJ0eVNsb3QocHJvdG90eXBlLCB0aGlzLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgY29uc3RydWN0b3JTbG90KTsKICAgICBzY29wZS5hc3Nl
cnROb0V4Y2VwdGlvbigpOwotICAgIGlmIChjb25zdHJ1Y3RvclNsb3Quc2xvdEJhc2UoKSAhPSBh
cnJheVByb3RvdHlwZQorICAgIGlmIChjb25zdHJ1Y3RvclNsb3Quc2xvdEJhc2UoKSAhPSBwcm90
b3R5cGUKICAgICAgICAgfHwgIWNvbnN0cnVjdG9yU2xvdC5pc0NhY2hlYWJsZVZhbHVlKCkKLSAg
ICAgICAgfHwgY29uc3RydWN0b3JTbG90LmdldFZhbHVlKHRoaXMsIHZtLnByb3BlcnR5TmFtZXMt
PmNvbnN0cnVjdG9yKSAhPSBhcnJheUNvbnN0cnVjdG9yKSB7CisgICAgICAgIHx8IGNvbnN0cnVj
dG9yU2xvdC5nZXRWYWx1ZSh0aGlzLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvcikgIT0g
Y29uc3RydWN0b3IpIHsKICAgICAgICAgaW52YWxpZGF0ZVdhdGNocG9pbnQoKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIFN0cnVjdHVyZSogY29uc3RydWN0b3JTdHJ1Y3R1cmUgPSBh
cnJheUNvbnN0cnVjdG9yLT5zdHJ1Y3R1cmUodm0pOworICAgIFN0cnVjdHVyZSogY29uc3RydWN0
b3JTdHJ1Y3R1cmUgPSBjb25zdHJ1Y3Rvci0+c3RydWN0dXJlKHZtKTsKICAgICBpZiAoY29uc3Ry
dWN0b3JTdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKQotICAgICAgICBjb25zdHJ1Y3RvclN0cnVj
dHVyZSA9IGNvbnN0cnVjdG9yU3RydWN0dXJlLT5mbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZSh2
bSwgYXJyYXlDb25zdHJ1Y3Rvcik7CisgICAgICAgIGNvbnN0cnVjdG9yU3RydWN0dXJlID0gY29u
c3RydWN0b3JTdHJ1Y3R1cmUtPmZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKHZtLCBjb25zdHJ1
Y3Rvcik7CiAKLSAgICBQcm9wZXJ0eVNsb3Qgc3BlY2llc1Nsb3QoYXJyYXlDb25zdHJ1Y3Rvciwg
UHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJnZtKTsKLSAgICBh
cnJheUNvbnN0cnVjdG9yLT5nZXRPd25Qcm9wZXJ0eVNsb3QoYXJyYXlDb25zdHJ1Y3RvciwgdGhp
cywgdm0ucHJvcGVydHlOYW1lcy0+c3BlY2llc1N5bWJvbCwgc3BlY2llc1Nsb3QpOworICAgIFBy
b3BlcnR5U2xvdCBzcGVjaWVzU2xvdChjb25zdHJ1Y3RvciwgUHJvcGVydHlTbG90OjpJbnRlcm5h
bE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJnZtKTsKKyAgICBjb25zdHJ1Y3Rvci0+Z2V0T3duUHJv
cGVydHlTbG90KGNvbnN0cnVjdG9yLCB0aGlzLCB2bS5wcm9wZXJ0eU5hbWVzLT5zcGVjaWVzU3lt
Ym9sLCBzcGVjaWVzU2xvdCk7CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb24oKTsKLSAgICBp
ZiAoc3BlY2llc1Nsb3Quc2xvdEJhc2UoKSAhPSBhcnJheUNvbnN0cnVjdG9yCisgICAgaWYgKHNw
ZWNpZXNTbG90LnNsb3RCYXNlKCkgIT0gY29uc3RydWN0b3IKICAgICAgICAgfHwgIXNwZWNpZXNT
bG90LmlzQ2FjaGVhYmxlR2V0dGVyKCkKICAgICAgICAgfHwgc3BlY2llc1Nsb3QuZ2V0dGVyU2V0
dGVyKCkgIT0gc3BlY2llc0dldHRlclNldHRlcigpKSB7CiAgICAgICAgIGludmFsaWRhdGVXYXRj
aHBvaW50KCk7CkBAIC0yMTg4LDggKzIxODMsOCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp0cnlJ
bnN0YWxsQXJyYXlTcGVjaWVzV2F0Y2hwb2ludCgpCiAgICAgcHJvdG90eXBlU3RydWN0dXJlLT5z
dGFydFdhdGNoaW5nUHJvcGVydHlGb3JSZXBsYWNlbWVudHModm0sIGNvbnN0cnVjdG9yU2xvdC5j
YWNoZWRPZmZzZXQoKSk7CiAgICAgY29uc3RydWN0b3JTdHJ1Y3R1cmUtPnN0YXJ0V2F0Y2hpbmdQ
cm9wZXJ0eUZvclJlcGxhY2VtZW50cyh2bSwgc3BlY2llc1Nsb3QuY2FjaGVkT2Zmc2V0KCkpOwog
Ci0gICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uc3RydWN0b3JDb25kaXRpb24gPSBPYmpl
Y3RQcm9wZXJ0eUNvbmRpdGlvbjo6ZXF1aXZhbGVuY2Uodm0sIGFycmF5UHJvdG90eXBlLCBhcnJh
eVByb3RvdHlwZSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IuaW1wbCgpLCBhcnJheUNv
bnN0cnVjdG9yKTsKLSAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBzcGVjaWVzQ29uZGl0aW9u
ID0gT2JqZWN0UHJvcGVydHlDb25kaXRpb246OmVxdWl2YWxlbmNlKHZtLCBhcnJheVByb3RvdHlw
ZSwgYXJyYXlDb25zdHJ1Y3Rvciwgdm0ucHJvcGVydHlOYW1lcy0+c3BlY2llc1N5bWJvbC5pbXBs
KCksIHNwZWNpZXNHZXR0ZXJTZXR0ZXIoKSk7CisgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24g
Y29uc3RydWN0b3JDb25kaXRpb24gPSBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbjo6ZXF1aXZhbGVu
Y2Uodm0sIHByb3RvdHlwZSwgcHJvdG90eXBlLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rv
ci5pbXBsKCksIGNvbnN0cnVjdG9yKTsKKyAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBzcGVj
aWVzQ29uZGl0aW9uID0gT2JqZWN0UHJvcGVydHlDb25kaXRpb246OmVxdWl2YWxlbmNlKHZtLCBw
cm90b3R5cGUsIGNvbnN0cnVjdG9yLCB2bS5wcm9wZXJ0eU5hbWVzLT5zcGVjaWVzU3ltYm9sLmlt
cGwoKSwgc3BlY2llc0dldHRlclNldHRlcigpKTsKIAogICAgIGlmICghY29uc3RydWN0b3JDb25k
aXRpb24uaXNXYXRjaGFibGUoKSB8fCAhc3BlY2llc0NvbmRpdGlvbi5pc1dhdGNoYWJsZSgpKSB7
CiAgICAgICAgIGludmFsaWRhdGVXYXRjaHBvaW50KCk7CkBAIC0yMTk3LDE0ICsyMTkyLDMwIEBA
IHZvaWQgSlNHbG9iYWxPYmplY3Q6OnRyeUluc3RhbGxBcnJheVNwZWNpZXNXYXRjaHBvaW50KCkK
ICAgICB9CiAKICAgICAvLyBXZSBvbmx5IHdhdGNoIHRoaXMgZnJvbSB0aGUgREZHLCBhbmQgdGhl
IERGRyBtYWtlcyBzdXJlIHRvIG9ubHkgc3RhcnQgd2F0Y2hpbmcgaWYgdGhlIHdhdGNocG9pbnQg
aXMgaW4gdGhlIElzV2F0Y2hlZCBzdGF0ZS4KLSAgICBSRUxFQVNFX0FTU0VSVCghbV9hcnJheVNw
ZWNpZXNXYXRjaHBvaW50U2V0LmlzQmVpbmdXYXRjaGVkKCkpOwotICAgIG1fYXJyYXlTcGVjaWVz
V2F0Y2hwb2ludFNldC50b3VjaCh2bSwgIlNldCB1cCBhcnJheSBzcGVjaWVzIHdhdGNocG9pbnQu
Iik7CisgICAgUkVMRUFTRV9BU1NFUlQoIXNwZWNpZXNXYXRjaHBvaW50U2V0LmlzQmVpbmdXYXRj
aGVkKCkpOworICAgIHNwZWNpZXNXYXRjaHBvaW50U2V0LnRvdWNoKHZtLCAiU2V0IHVwIHNwZWNp
ZXMgd2F0Y2hwb2ludC4iKTsKKworICAgIGNvbnN0cnVjdG9yV2F0Y2hwb2ludCA9IG1ha2VVbmlx
dWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2lu
dFNldD4+KHRoaXMsIGNvbnN0cnVjdG9yQ29uZGl0aW9uLCBzcGVjaWVzV2F0Y2hwb2ludFNldCk7
CisgICAgY29uc3RydWN0b3JXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKIAotICAgIG1fYXJyYXlQ
cm90b3R5cGVDb25zdHJ1Y3RvcldhdGNocG9pbnQgPSBtYWtlVW5pcXVlPE9iamVjdFByb3BlcnR5
Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih0aGlzLCBjb25z
dHJ1Y3RvckNvbmRpdGlvbiwgbV9hcnJheVNwZWNpZXNXYXRjaHBvaW50U2V0KTsKLSAgICBtX2Fy
cmF5UHJvdG90eXBlQ29uc3RydWN0b3JXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKKyAgICBzcGVj
aWVzV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdh
dGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIHNwZWNpZXNDb25kaXRpb24sIHNw
ZWNpZXNXYXRjaHBvaW50U2V0KTsKKyAgICBzcGVjaWVzV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7
Cit9CiAKLSAgICBtX2FycmF5Q29uc3RydWN0b3JTcGVjaWVzV2F0Y2hwb2ludCA9IG1ha2VVbmlx
dWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2lu
dFNldD4+KHRoaXMsIHNwZWNpZXNDb25kaXRpb24sIG1fYXJyYXlTcGVjaWVzV2F0Y2hwb2ludFNl
dCk7Ci0gICAgbV9hcnJheUNvbnN0cnVjdG9yU3BlY2llc1dhdGNocG9pbnQtPmluc3RhbGwodm0p
Owordm9pZCBKU0dsb2JhbE9iamVjdDo6dHJ5SW5zdGFsbEFycmF5U3BlY2llc1dhdGNocG9pbnQo
KQoreworICAgIFJFTEVBU0VfQVNTRVJUKCFtX2FycmF5UHJvdG90eXBlQ29uc3RydWN0b3JXYXRj
aHBvaW50KTsKKyAgICBSRUxFQVNFX0FTU0VSVCghbV9hcnJheUNvbnN0cnVjdG9yU3BlY2llc1dh
dGNocG9pbnQpOworCisgICAgdHJ5SW5zdGFsbFNwZWNpZXNXYXRjaHBvaW50KGFycmF5UHJvdG90
eXBlKCksIGFycmF5Q29uc3RydWN0b3IoKSwgbV9hcnJheVByb3RvdHlwZUNvbnN0cnVjdG9yV2F0
Y2hwb2ludCwgbV9hcnJheUNvbnN0cnVjdG9yU3BlY2llc1dhdGNocG9pbnQsIG1fYXJyYXlTcGVj
aWVzV2F0Y2hwb2ludFNldCk7Cit9CisKK3ZvaWQgSlNHbG9iYWxPYmplY3Q6OnRyeUluc3RhbGxB
cnJheUJ1ZmZlclNwZWNpZXNXYXRjaHBvaW50KEFycmF5QnVmZmVyU2hhcmluZ01vZGUgc2hhcmlu
Z01vZGUpCit7CisgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQXJyYXlC
dWZmZXJTaGFyaW5nTW9kZTo6RGVmYXVsdCkgPT0gMCk7CisgICAgc3RhdGljX2Fzc2VydChzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oQXJyYXlCdWZmZXJTaGFyaW5nTW9kZTo6U2hhcmVkKSA9PSAxKTsK
KyAgICB1bnNpZ25lZCBpbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzaGFyaW5nTW9kZSk7
CisgICAgdHJ5SW5zdGFsbFNwZWNpZXNXYXRjaHBvaW50KGFycmF5QnVmZmVyUHJvdG90eXBlKHNo
YXJpbmdNb2RlKSwgYXJyYXlCdWZmZXJDb25zdHJ1Y3RvcihzaGFyaW5nTW9kZSksIG1fYXJyYXlC
dWZmZXJQcm90b3R5cGVDb25zdHJ1Y3RvcldhdGNocG9pbnRzW2luZGV4XSwgbV9hcnJheUJ1ZmZl
ckNvbnN0cnVjdG9yU3BlY2llc1dhdGNocG9pbnRzW2luZGV4XSwgYXJyYXlCdWZmZXJTcGVjaWVz
V2F0Y2hwb2ludFNldChzaGFyaW5nTW9kZSkpOwogfQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0Ojpp
bnN0YWxsTnVtYmVyUHJvdG90eXBlV2F0Y2hwb2ludChOdW1iZXJQcm90b3R5cGUqIG51bWJlclBy
b3RvdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCmluZGV4IDIzYzY2Mzc0M2ZjYzRkYTgyYzZiODM2NTY3YmNkMDZmNDkxOTczMmYuLjRkNjky
M2Y3ZDM5ZTJjNzViYTg3MzZiNDRiNGQ3MmZlMjM5NGMyNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtNDIxLDggKzQyMSw3IEBAIGNs
YXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3Qgewog
ICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2NhbGxhYmxlUHJv
eHlPYmplY3RTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmU+IG1fcHJveHlSZXZva2VTdHJ1Y3R1cmU7CiAjaWYgRU5BQkxFKFNIQVJFRF9BUlJBWV9C
VUZGRVIpCi0gICAgV3JpdGVCYXJyaWVyPEpTQXJyYXlCdWZmZXJQcm90b3R5cGU+IG1fc2hhcmVk
QXJyYXlCdWZmZXJQcm90b3R5cGU7Ci0gICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9zaGFy
ZWRBcnJheUJ1ZmZlclN0cnVjdHVyZTsKKyAgICBMYXp5Q2xhc3NTdHJ1Y3R1cmUgbV9zaGFyZWRB
cnJheUJ1ZmZlclN0cnVjdHVyZTsKICNlbmRpZgogCiAjZGVmaW5lIERFRklORV9TVE9SQUdFX0ZP
Ul9TSU1QTEVfVFlQRShjYXBpdGFsTmFtZSwgbG93ZXJOYW1lLCBwcm9wZXJOYW1lLCBpbnN0YW5j
ZVR5cGUsIGpzTmFtZSwgcHJvdG90eXBlQmFzZSwgZmVhdHVyZUZsYWcpIFwKQEAgLTQ5MCw2ICs0
ODksNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxl
T2JqZWN0IHsKICAgICBJbmxpbmVXYXRjaHBvaW50U2V0IG1fYXJyYXlTcGVjaWVzV2F0Y2hwb2lu
dFNldDsKICAgICBJbmxpbmVXYXRjaHBvaW50U2V0IG1fYXJyYXlKb2luV2F0Y2hwb2ludFNldDsK
ICAgICBJbmxpbmVXYXRjaHBvaW50U2V0IG1fbnVtYmVyVG9TdHJpbmdXYXRjaHBvaW50U2V0Owor
ICAgIElubGluZVdhdGNocG9pbnRTZXQgbV9hcnJheUJ1ZmZlclNwZWNpZXNXYXRjaHBvaW50U2V0
c1syXTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdh
dGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+IG1fYXJyYXlDb25zdHJ1Y3RvclNwZWNpZXNX
YXRjaHBvaW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0
aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4gbV9hcnJheVByb3RvdHlwZUNvbnN0
cnVjdG9yV2F0Y2hwb2ludDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8T2JqZWN0UHJvcGVydHlDaGFu
Z2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+IG1fYXJyYXlQcm90b3R5
cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQ7CkBAIC01MDQsNiArNTA0LDggQEAgY2xhc3MgSlNH
bG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGlu
ZVdhdGNocG9pbnRTZXQ+PiBtX21hcFByb3RvdHlwZVNldFdhdGNocG9pbnQ7CiAgICAgc3RkOjp1
bmlxdWVfcHRyPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdh
dGNocG9pbnRTZXQ+PiBtX3NldFByb3RvdHlwZUFkZFdhdGNocG9pbnQ7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNo
cG9pbnRTZXQ+PiBtX251bWJlclByb3RvdHlwZVRvU3RyaW5nV2F0Y2hwb2ludDsKKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5l
V2F0Y2hwb2ludFNldD4+IG1fYXJyYXlCdWZmZXJDb25zdHJ1Y3RvclNwZWNpZXNXYXRjaHBvaW50
c1syXTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdh
dGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+IG1fYXJyYXlCdWZmZXJQcm90b3R5cGVDb25z
dHJ1Y3RvcldhdGNocG9pbnRzWzJdOwogCiBwdWJsaWM6CiAgICAgSlNDYWxsZWUqIHN0YWNrT3Zl
cmZsb3dGcmFtZUNhbGxlZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhY2tPdmVyZmxvd0ZyYW1lQ2Fs
bGVlLmdldCgpOyB9CkBAIC01MjEsNiArNTIzLDEyIEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDog
cHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgICAgICBSRUxFQVNFX0FTU0VS
VChPcHRpb25zOjp1c2VKSVQoKSk7CiAgICAgICAgIHJldHVybiBtX251bWJlclRvU3RyaW5nV2F0
Y2hwb2ludFNldDsKICAgICB9CisgICAgSW5saW5lV2F0Y2hwb2ludFNldCYgYXJyYXlCdWZmZXJT
cGVjaWVzV2F0Y2hwb2ludFNldChBcnJheUJ1ZmZlclNoYXJpbmdNb2RlIHNoYXJpbmdNb2RlKQor
ICAgIHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oQXJyYXlC
dWZmZXJTaGFyaW5nTW9kZTo6RGVmYXVsdCkgPT0gMCk7CisgICAgICAgIHN0YXRpY19hc3NlcnQo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OlNoYXJlZCkgPT0g
MSk7CisgICAgICAgIHJldHVybiBtX2FycmF5QnVmZmVyU3BlY2llc1dhdGNocG9pbnRTZXRzW3N0
YXRpY19jYXN0PHVuc2lnbmVkPihzaGFyaW5nTW9kZSldOworICAgIH0KIAogICAgIGJvb2wgaXNB
cnJheVByb3RvdHlwZUl0ZXJhdG9yUHJvdG9jb2xGYXN0QW5kTm9uT2JzZXJ2YWJsZSgpOwogICAg
IGJvb2wgaXNNYXBQcm90b3R5cGVJdGVyYXRvclByb3RvY29sRmFzdEFuZE5vbk9ic2VydmFibGUo
KTsKQEAgLTg3MSw4ICs4NzksNiBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1Nl
Z21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBzdGF0aWMgSlNPYmplY3QqIGN1cnJlbnRTY3Jp
cHRFeGVjdXRpb25Pd25lcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsKSB7IHJldHVybiBnbG9iYWw7
IH0KICAgICBzdGF0aWMgU2NyaXB0RXhlY3V0aW9uU3RhdHVzIHNjcmlwdEV4ZWN1dGlvblN0YXR1
cyhKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KikgeyByZXR1cm4gU2NyaXB0RXhlY3V0aW9uU3Rh
dHVzOjpSdW5uaW5nOyB9CiAKLSAgICBKU09iamVjdCogYXJyYXlCdWZmZXJDb25zdHJ1Y3Rvcigp
IGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlCdWZmZXJTdHJ1Y3R1cmUuY29uc3RydWN0b3IodGhpcyk7
IH0KLQogICAgIEpTT2JqZWN0KiBhcnJheUJ1ZmZlclByb3RvdHlwZShBcnJheUJ1ZmZlclNoYXJp
bmdNb2RlIHNoYXJpbmdNb2RlKSBjb25zdAogICAgIHsKICAgICAgICAgc3dpdGNoIChzaGFyaW5n
TW9kZSkgewpAQCAtODgwLDcgKzg4Niw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGlj
IEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgICAgICAgICAgcmV0dXJuIG1fYXJyYXlC
dWZmZXJTdHJ1Y3R1cmUucHJvdG90eXBlKHRoaXMpOwogI2lmIEVOQUJMRShTSEFSRURfQVJSQVlf
QlVGRkVSKQogICAgICAgICBjYXNlIEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OlNoYXJlZDoKLSAg
ICAgICAgICAgIHJldHVybiBtX3NoYXJlZEFycmF5QnVmZmVyUHJvdG90eXBlLmdldCgpOworICAg
ICAgICAgICAgcmV0dXJuIG1fc2hhcmVkQXJyYXlCdWZmZXJTdHJ1Y3R1cmUucHJvdG90eXBlKHRo
aXMpOwogI2Vsc2UKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBtX2FycmF5
QnVmZmVyU3RydWN0dXJlLnByb3RvdHlwZSh0aGlzKTsKQEAgLTg5NCw3ICs5MDAsNyBAQCBjbGFz
cyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAg
ICAgICAgICAgIHJldHVybiBtX2FycmF5QnVmZmVyU3RydWN0dXJlLmdldCh0aGlzKTsKICNpZiBF
TkFCTEUoU0hBUkVEX0FSUkFZX0JVRkZFUikKICAgICAgICAgY2FzZSBBcnJheUJ1ZmZlclNoYXJp
bmdNb2RlOjpTaGFyZWQ6Ci0gICAgICAgICAgICByZXR1cm4gbV9zaGFyZWRBcnJheUJ1ZmZlclN0
cnVjdHVyZS5nZXQoKTsKKyAgICAgICAgICAgIHJldHVybiBtX3NoYXJlZEFycmF5QnVmZmVyU3Ry
dWN0dXJlLmdldCh0aGlzKTsKICNlbHNlCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBy
ZXR1cm4gbV9hcnJheUJ1ZmZlclN0cnVjdHVyZS5nZXQodGhpcyk7CkBAIC05MDMsNiArOTA5LDIx
IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmpl
Y3QgewogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CisgICAgSlNPYmplY3QqIGFycmF5QnVmZmVyQ29uc3RydWN0b3Io
QXJyYXlCdWZmZXJTaGFyaW5nTW9kZSBzaGFyaW5nTW9kZSkgY29uc3QKKyAgICB7CisgICAgICAg
IHN3aXRjaCAoc2hhcmluZ01vZGUpIHsKKyAgICAgICAgY2FzZSBBcnJheUJ1ZmZlclNoYXJpbmdN
b2RlOjpEZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIG1fYXJyYXlCdWZmZXJTdHJ1Y3R1cmUu
Y29uc3RydWN0b3IodGhpcyk7CisjaWYgRU5BQkxFKFNIQVJFRF9BUlJBWV9CVUZGRVIpCisgICAg
ICAgIGNhc2UgQXJyYXlCdWZmZXJTaGFyaW5nTW9kZTo6U2hhcmVkOgorICAgICAgICAgICAgcmV0
dXJuIG1fc2hhcmVkQXJyYXlCdWZmZXJTdHJ1Y3R1cmUuY29uc3RydWN0b3IodGhpcyk7CisjZWxz
ZQorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIG1fYXJyYXlCdWZmZXJTdHJ1
Y3R1cmUucHJvdG90eXBlKHRoaXMpOworI2VuZGlmCisgICAgICAgIH0KKyAgICB9CisKIAogI2Rl
ZmluZSBERUZJTkVfQUNDRVNTT1JTX0ZPUl9TSU1QTEVfVFlQRShjYXBpdGFsTmFtZSwgbG93ZXJO
YW1lLCBwcm9wZXJOYW1lLCBpbnN0YW5jZVR5cGUsIGpzTmFtZSwgcHJvdG90eXBlQmFzZSwgZmVh
dHVyZUZsYWcpIFwKICAgICBTdHJ1Y3R1cmUqIHByb3Blck5hbWUgIyMgU3RydWN0dXJlKCkgeyBy
ZXR1cm4gbV8gIyMgcHJvcGVyTmFtZSAjIyBTdHJ1Y3R1cmUuZ2V0KCk7IH0KQEAgLTEwNzgsOCAr
MTA5OSwxMSBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlh
YmxlT2JqZWN0IHsKICAgICB2b2lkIGluc3RhbGxOdW1iZXJQcm90b3R5cGVXYXRjaHBvaW50KE51
bWJlclByb3RvdHlwZSopOwogICAgIHZvaWQgaW5zdGFsbE1hcFByb3RvdHlwZVdhdGNocG9pbnQo
TWFwUHJvdG90eXBlKik7CiAgICAgdm9pZCBpbnN0YWxsU2V0UHJvdG90eXBlV2F0Y2hwb2ludChT
ZXRQcm90b3R5cGUqKTsKKyAgICB2b2lkIHRyeUluc3RhbGxBcnJheUJ1ZmZlclNwZWNpZXNXYXRj
aHBvaW50KEFycmF5QnVmZmVyU2hhcmluZ01vZGUpOwogCiBwcm90ZWN0ZWQ6CisgICAgdm9pZCB0
cnlJbnN0YWxsU3BlY2llc1dhdGNocG9pbnQoSlNPYmplY3QqIHByb3RvdHlwZSwgSlNPYmplY3Qq
IGNvbnN0cnVjdG9yLCBzdGQ6OnVuaXF1ZV9wdHI8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2
ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+JiBjb25zdHJ1Y3RvcldhdGNocG9pbnQs
IHN0ZDo6dW5pcXVlX3B0cjxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJ
bmxpbmVXYXRjaHBvaW50U2V0Pj4mIHNwZWNpZXNXYXRjaHBvaW50LCBJbmxpbmVXYXRjaHBvaW50
U2V0JiBzcGVjaWVzV2F0Y2hwb2ludFNldCk7CisKICAgICBzdHJ1Y3QgR2xvYmFsUHJvcGVydHlJ
bmZvIHsKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKGNvbnN0IElkZW50aWZpZXImIGksIEpT
VmFsdWUgdiwgdW5zaWduZWQgYSkKICAgICAgICAgICAgIDogaWRlbnRpZmllcihpKQpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBiNjY5YTRl
NjVlNDRhZjlmZjNjOTNiYzViYWUxNDgwOGNjN2Y3YWE2Li4wZjU2YTRkMmNjMmE0NzczNzU1MDE1
MDNjZTVlY2EzNjI3ZTExYjQ1IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9K
U1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIwLTExLTA4ICBZdXN1a2UgU3V6
dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gU3VwcG9ydCBAQHNwZWNp
ZXMgaW4gQXJyYXlCdWZmZXIgLyBTaGFyZWRBcnJheUJ1ZmZlciBzbGljZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4Njk3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0MjYyL2V4cGVjdGF0aW9u
cy55YW1sOgorCiAyMDIwLTExLTA2ICBEbWl0cnkgQmV6aGV0c2tvdiAgPGRiZXpoZXRza292QGln
YWxpYS5jb20+CiAKICAgICAgICAgW1dBU00tUmVmZXJlbmNlc10gUmVuYW1lIGFueXJlZiB0byBl
eHRlcm5yZWYKZGlmZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbCBi
L0pTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbAppbmRleCA5NTQ0MzE0YmIwZWE0ZWY2
MWRjY2NhY2JlZjNhM2ZiZmQ2Nzk3OGM4Li5mNTk1ZDJlYWRhYTQwMThlNDZjMzY2OGZjNWQ0NTAx
YTkzODc0NDhhIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwK
KysrIGIvSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCkBAIC02MDMsMzAgKzYwMyw2
IEBAIHRlc3QvYW5uZXhCL2xhbmd1YWdlL2dsb2JhbC1jb2RlL3N3aXRjaC1kZmx0LWdsb2JhbC1z
a2lwLWVhcmx5LWVyci10cnkuanM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEFuIGluaXRp
YWxpemVkIGJpbmRpbmcgaXMgbm90IGNyZWF0ZWQgcHJpb3IgdG8gZXZhbHVhdGlvbiBFeHBlY3Rl
ZCBhIFJlZmVyZW5jZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJv
d24gYXQgYWxsJwogdGVzdC9hbm5leEIvbGFuZ3VhZ2UvZ2xvYmFsLWNvZGUvc3dpdGNoLWRmbHQt
Z2xvYmFsLXNraXAtZWFybHktZXJyLmpzOgogICBkZWZhdWx0OiAiU3ludGF4RXJyb3I6IENhbm5v
dCBkZWNsYXJlIGEgZnVuY3Rpb24gdGhhdCBzaGFkb3dzIGEgbGV0L2NvbnN0L2NsYXNzL2Z1bmN0
aW9uIHZhcmlhYmxlICdmJyBpbiBzdHJpY3QgbW9kZS4iCi10ZXN0L2J1aWx0LWlucy9BcnJheUJ1
ZmZlci9wcm90b3R5cGUvc2xpY2Uvc3BlY2llcy1jb25zdHJ1Y3Rvci1pcy1ub3Qtb2JqZWN0Lmpz
OgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBgY29uc3RydWN0b3JgIHZhbHVlIGlzIG51bGwg
RXhwZWN0ZWQgYSBUeXBlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRo
cm93biBhdCBhbGwnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBgY29uc3RydWN0b3Jg
IHZhbHVlIGlzIG51bGwgRXhwZWN0ZWQgYSBUeXBlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBl
eGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCi10ZXN0L2J1aWx0LWlucy9BcnJheUJ1ZmZlci9w
cm90b3R5cGUvc2xpY2Uvc3BlY2llcy1pcy1ub3QtY29uc3RydWN0b3IuanM6Ci0gIGRlZmF1bHQ6
ICdUZXN0MjYyRXJyb3I6IGBjb25zdHJ1Y3RvcltTeW1ib2wuc3BlY2llc11gIHZhbHVlIGlzIE9i
amVjdCBFeHBlY3RlZCBhIFR5cGVFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3
YXMgdGhyb3duIGF0IGFsbCcKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IGBjb25zdHJ1
Y3RvcltTeW1ib2wuc3BlY2llc11gIHZhbHVlIGlzIE9iamVjdCBFeHBlY3RlZCBhIFR5cGVFcnJv
ciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKLXRlc3Qv
YnVpbHQtaW5zL0FycmF5QnVmZmVyL3Byb3RvdHlwZS9zbGljZS9zcGVjaWVzLWlzLW5vdC1vYmpl
Y3QuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IGBjb25zdHJ1Y3RvcltTeW1ib2wuc3Bl
Y2llc11gIHZhbHVlIGlzIEJvb2xlYW4gRXhwZWN0ZWQgYSBUeXBlRXJyb3IgdG8gYmUgdGhyb3du
IGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCi0gIHN0cmljdCBtb2RlOiAnVGVz
dDI2MkVycm9yOiBgY29uc3RydWN0b3JbU3ltYm9sLnNwZWNpZXNdYCB2YWx1ZSBpcyBCb29sZWFu
IEV4cGVjdGVkIGEgVHlwZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0
aHJvd24gYXQgYWxsJwotdGVzdC9idWlsdC1pbnMvQXJyYXlCdWZmZXIvcHJvdG90eXBlL3NsaWNl
L3NwZWNpZXMtcmV0dXJucy1sYXJnZXItYXJyYXlidWZmZXIuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0
MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzjCuywgwqsxMMK7KSB0byBiZSB0cnVlJwot
ICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrOMK7LCDC
qzEwwrspIHRvIGJlIHRydWUnCi10ZXN0L2J1aWx0LWlucy9BcnJheUJ1ZmZlci9wcm90b3R5cGUv
c2xpY2Uvc3BlY2llcy1yZXR1cm5zLW5vdC1hcnJheWJ1ZmZlci5qczoKLSAgZGVmYXVsdDogJ1Rl
c3QyNjJFcnJvcjogRXhwZWN0ZWQgYSBUeXBlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNl
cHRpb24gd2FzIHRocm93biBhdCBhbGwnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBF
eHBlY3RlZCBhIFR5cGVFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhy
b3duIGF0IGFsbCcKLXRlc3QvYnVpbHQtaW5zL0FycmF5QnVmZmVyL3Byb3RvdHlwZS9zbGljZS9z
cGVjaWVzLXJldHVybnMtc2FtZS1hcnJheWJ1ZmZlci5qczoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJF
cnJvcjogRXhwZWN0ZWQgYSBUeXBlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24g
d2FzIHRocm93biBhdCBhbGwnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3Rl
ZCBhIFR5cGVFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0
IGFsbCcKLXRlc3QvYnVpbHQtaW5zL0FycmF5QnVmZmVyL3Byb3RvdHlwZS9zbGljZS9zcGVjaWVz
LXJldHVybnMtc21hbGxlci1hcnJheWJ1ZmZlci5qczoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJv
cjogRXhwZWN0ZWQgYSBUeXBlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2Fz
IHRocm93biBhdCBhbGwnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBh
IFR5cGVFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFs
bCcKLXRlc3QvYnVpbHQtaW5zL0FycmF5QnVmZmVyL3Byb3RvdHlwZS9zbGljZS9zcGVjaWVzLmpz
OgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqtbb2JqZWN0
IEFycmF5QnVmZmVyXcK7LCDCq3VuZGVmaW5lZMK7KSB0byBiZSB0cnVlJwotICBzdHJpY3QgbW9k
ZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrW29iamVjdCBBcnJheUJ1ZmZl
cl3Cuywgwqt1bmRlZmluZWTCuykgdG8gYmUgdHJ1ZScKIHRlc3QvYnVpbHQtaW5zL0RhdGUvVVRD
L2ZwLWV2YWx1YXRpb24tb3JkZXIuanM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IG9yZGVy
IG9mIG9wZXJhdGlvbnMgLyBwcmVjaXNpb24gaW4gTWFrZVRpbWUgRXhwZWN0ZWQgU2FtZVZhbHVl
KMKrTmFOwrssIMKrMjkzMTLCuykgdG8gYmUgdHJ1ZScKICAgc3RyaWN0IG1vZGU6ICdUZXN0MjYy
RXJyb3I6IG9yZGVyIG9mIG9wZXJhdGlvbnMgLyBwcmVjaXNpb24gaW4gTWFrZVRpbWUgRXhwZWN0
ZWQgU2FtZVZhbHVlKMKrTmFOwrssIMKrMjkzMTLCuykgdG8gYmUgdHJ1ZScKQEAgLTg0NywzMCAr
ODIzLDYgQEAgdGVzdC9idWlsdC1pbnMvUmVnRXhwL3Byb3RvdHlwZS9leGVjL3UtbGFzdGluZGV4
LWFkdi5qczoKIHRlc3QvYnVpbHQtaW5zL1JlZ0V4cC9xdWFudGlmaWVyLWludGVnZXItbGltaXQu
anM6CiAgIGRlZmF1bHQ6ICdTeW50YXhFcnJvcjogSW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb246
IG51bWJlciB0b28gbGFyZ2UgaW4ge30gcXVhbnRpZmllcicKICAgc3RyaWN0IG1vZGU6ICdTeW50
YXhFcnJvcjogSW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb246IG51bWJlciB0b28gbGFyZ2UgaW4g
e30gcXVhbnRpZmllcicKLXRlc3QvYnVpbHQtaW5zL1NoYXJlZEFycmF5QnVmZmVyL3Byb3RvdHlw
ZS9zbGljZS9zcGVjaWVzLWNvbnN0cnVjdG9yLWlzLW5vdC1vYmplY3QuanM6Ci0gIGRlZmF1bHQ6
ICdUZXN0MjYyRXJyb3I6IGBjb25zdHJ1Y3RvcmAgdmFsdWUgaXMgbnVsbCBFeHBlY3RlZCBhIFR5
cGVFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcK
LSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IGBjb25zdHJ1Y3RvcmAgdmFsdWUgaXMgbnVs
bCBFeHBlY3RlZCBhIFR5cGVFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMg
dGhyb3duIGF0IGFsbCcKLXRlc3QvYnVpbHQtaW5zL1NoYXJlZEFycmF5QnVmZmVyL3Byb3RvdHlw
ZS9zbGljZS9zcGVjaWVzLWlzLW5vdC1jb25zdHJ1Y3Rvci5qczoKLSAgZGVmYXVsdDogJ1Rlc3Qy
NjJFcnJvcjogYGNvbnN0cnVjdG9yW1N5bWJvbC5zcGVjaWVzXWAgdmFsdWUgaXMgT2JqZWN0IEV4
cGVjdGVkIGEgVHlwZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJv
d24gYXQgYWxsJwotICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogYGNvbnN0cnVjdG9yW1N5
bWJvbC5zcGVjaWVzXWAgdmFsdWUgaXMgT2JqZWN0IEV4cGVjdGVkIGEgVHlwZUVycm9yIHRvIGJl
IHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJwotdGVzdC9idWlsdC1p
bnMvU2hhcmVkQXJyYXlCdWZmZXIvcHJvdG90eXBlL3NsaWNlL3NwZWNpZXMtaXMtbm90LW9iamVj
dC5qczoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogYGNvbnN0cnVjdG9yW1N5bWJvbC5zcGVj
aWVzXWAgdmFsdWUgaXMgQm9vbGVhbiBFeHBlY3RlZCBhIFR5cGVFcnJvciB0byBiZSB0aHJvd24g
YnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKLSAgc3RyaWN0IG1vZGU6ICdUZXN0
MjYyRXJyb3I6IGBjb25zdHJ1Y3RvcltTeW1ib2wuc3BlY2llc11gIHZhbHVlIGlzIEJvb2xlYW4g
RXhwZWN0ZWQgYSBUeXBlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRo
cm93biBhdCBhbGwnCi10ZXN0L2J1aWx0LWlucy9TaGFyZWRBcnJheUJ1ZmZlci9wcm90b3R5cGUv
c2xpY2Uvc3BlY2llcy1yZXR1cm5zLWxhcmdlci1hcnJheWJ1ZmZlci5qczoKLSAgZGVmYXVsdDog
J1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrOMK7LCDCqzEwwrspIHRvIGJlIHRy
dWUnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqs4
wrssIMKrMTDCuykgdG8gYmUgdHJ1ZScKLXRlc3QvYnVpbHQtaW5zL1NoYXJlZEFycmF5QnVmZmVy
L3Byb3RvdHlwZS9zbGljZS9zcGVjaWVzLXJldHVybnMtbm90LWFycmF5YnVmZmVyLmpzOgotICBk
ZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBhIFR5cGVFcnJvciB0byBiZSB0aHJvd24g
YnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKLSAgc3RyaWN0IG1vZGU6ICdUZXN0
MjYyRXJyb3I6IEV4cGVjdGVkIGEgVHlwZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0
aW9uIHdhcyB0aHJvd24gYXQgYWxsJwotdGVzdC9idWlsdC1pbnMvU2hhcmVkQXJyYXlCdWZmZXIv
cHJvdG90eXBlL3NsaWNlL3NwZWNpZXMtcmV0dXJucy1zYW1lLWFycmF5YnVmZmVyLmpzOgotICBk
ZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBhIFR5cGVFcnJvciB0byBiZSB0aHJvd24g
YnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKLSAgc3RyaWN0IG1vZGU6ICdUZXN0
MjYyRXJyb3I6IEV4cGVjdGVkIGEgVHlwZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0
aW9uIHdhcyB0aHJvd24gYXQgYWxsJwotdGVzdC9idWlsdC1pbnMvU2hhcmVkQXJyYXlCdWZmZXIv
cHJvdG90eXBlL3NsaWNlL3NwZWNpZXMtcmV0dXJucy1zbWFsbGVyLWFycmF5YnVmZmVyLmpzOgot
ICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBhIFR5cGVFcnJvciB0byBiZSB0aHJv
d24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKLSAgc3RyaWN0IG1vZGU6ICdU
ZXN0MjYyRXJyb3I6IEV4cGVjdGVkIGEgVHlwZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhj
ZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJwotdGVzdC9idWlsdC1pbnMvU2hhcmVkQXJyYXlCdWZm
ZXIvcHJvdG90eXBlL3NsaWNlL3NwZWNpZXMuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6
IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq1tvYmplY3QgU2hhcmVkQXJyYXlCdWZmZXJdwrssIMKrdW5k
ZWZpbmVkwrspIHRvIGJlIHRydWUnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBl
Y3RlZCBTYW1lVmFsdWUowqtbb2JqZWN0IFNoYXJlZEFycmF5QnVmZmVyXcK7LCDCq3VuZGVmaW5l
ZMK7KSB0byBiZSB0cnVlJwogdGVzdC9idWlsdC1pbnMvVHlwZWRBcnJheS9wcm90b3R5cGUvZXZl
cnkvY2FsbGJhY2tmbi1kZXRhY2hidWZmZXIuanM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6
IEV4cGVjdGVkIGEgVHlwZUVycm9yIGJ1dCBnb3QgYSBUZXN0MjYyRXJyb3IgKFRlc3Rpbmcgd2l0
aCBGbG9hdDY0QXJyYXkuKScKICAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVk
IGEgVHlwZUVycm9yIGJ1dCBnb3QgYSBUZXN0MjYyRXJyb3IgKFRlc3Rpbmcgd2l0aCBGbG9hdDY0
QXJyYXkuKScKQEAgLTI3NDUsOSArMjY5Nyw2IEBAIHRlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9j
bGFzcy9tZXRob2QvZm9yYmlkZGVuLWV4dC9iMi9jbHMtZGVjbC1tZXRoLWZvcmJpZGRlbi1lCiAg
IGRlZmF1bHQ6ICdUeXBlRXJyb3I6IEZ1bmN0aW9uLmNhbGxlciB1c2VkIHRvIHJldHJpZXZlIHN0
cmljdCBjYWxsZXInCiB0ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvY2xhc3MvbWV0aG9kL2ZvcmJp
ZGRlbi1leHQvYjIvY2xzLWRlY2wtbWV0aC1mb3JiaWRkZW4tZXh0LWluZGlyZWN0LWFjY2Vzcy1w
cm9wLWNhbGxlci5qczoKICAgZGVmYXVsdDogJ1R5cGVFcnJvcjogRnVuY3Rpb24uY2FsbGVyIHVz
ZWQgdG8gcmV0cmlldmUgc3RyaWN0IGNhbGxlcicKLXRlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9j
bGFzcy9zdWJjbGFzcy9idWlsdGluLW9iamVjdHMvQXJyYXlCdWZmZXIvcmVndWxhci1zdWJjbGFz
c2luZy5qczoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgdHJ1ZSBidXQgZ290
IGZhbHNlJwotICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgdHJ1ZSBidXQg
Z290IGZhbHNlJwogdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2NvbnN0L2RzdHIvYXJ5LWluaXQt
aXRlci1nZXQtZXJyLWFycmF5LXByb3RvdHlwZS5qczoKICAgZGVmYXVsdDogJ1R5cGVFcnJvcjog
U3ByZWFkIHN5bnRheCByZXF1aXJlcyAuLi5pdGVyYWJsZVtTeW1ib2wuaXRlcmF0b3JdIHRvIGJl
IGEgZnVuY3Rpb24nCiAgIHN0cmljdCBtb2RlOiAnVHlwZUVycm9yOiBTcHJlYWQgc3ludGF4IHJl
cXVpcmVzIC4uLml0ZXJhYmxlW1N5bWJvbC5pdGVyYXRvcl0gdG8gYmUgYSBmdW5jdGlvbicK
</data>
<flag name="commit-queue"
          id="430182"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413551</attachid>
            <date>2020-11-08 18:26:44 -0800</date>
            <delta_ts>2020-11-08 18:40:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218697-20201108182644.patch</filename>
            <type>text/plain</type>
            <size>43006</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
OTg4ZjgyOWQzYzRkODU0N2YyZWYzM2EyNDEyZWQ4YWY5MTk4NzY4Li42NzVmNjlkZDVjMTFjMDVk
YWIzZWY5YWVmNzY5OTQ3NTZkNzI3MzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MCBAQAorMjAyMC0xMS0wOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFN1cHBvcnQgQEBzcGVjaWVzIGluIEFycmF5QnVmZmVyIC8gU2hh
cmVkQXJyYXlCdWZmZXIgc2xpY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxODY5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBAQHNwZWNpZXMgaW4gQXJy
YXlCdWZmZXIvU2hhcmVkQXJyYXlCdWZmZXIucHJvdG90eXBlLnNsaWNlLgorICAgICAgICBXZSBs
ZXZlcmFnZSB0aGUgbWVjaGFuaXNtIHNpbWlsYXIgdG8gQXJyYXkncyBAQHNwZWNpZXMgaGFuZGxp
bmc6IGFkZGluZyBmYXN0IHBhdGggd2l0aCB3YXRjaHBvaW50LgorICAgICAgICBXaGVuIHdlIGZv
dW5kIHRoYXQgc29tZSBvZiBjcml0aWNhbCBwcm9wZXJ0aWVzIChlLmcuICVQcm90b3R5cGUlLmNv
bnN0cnVjdG9yLCAlQ29uc3RydWN0b3IlW0BAc3BlY2llc10pCisgICAgICAgIGFyZSBtb2RpZmll
ZCwgd2F0Y2hwb2ludCBpcyBmaXJlZCBhbmQgd2UgZ28gdG8gdGhlIHNsb3cgcGF0aC4gVW50aWwg
dGhhdCwgd2UgdXNlIGZhc3QgcGF0aCB0aGF0IGlzCisgICAgICAgIGJhc2ljYWxseSB0aGUgc2Ft
ZSB0byB0aGUgY29kZSBiZWZvcmUgdGhpcyBwYXRjaC4KKworICAgICAgICAqIHJ1bnRpbWUvQXJy
YXlCdWZmZXIuY3BwOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6c2xpY2UgY29uc3QpOgor
ICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6c2xpY2VXaXRoQ2xhbXBlZEluZGV4IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnNsaWNlSW1wbCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlci5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlC
dWZmZXJTaGFyaW5nTW9kZS5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjpzcGVjaWVzV2F0Y2hwb2ludElzVmFsaWQpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnNwZWNpZXNX
YXRjaHBvaW50SXNWYWxpZCk6CisgICAgICAgIChKU0M6OmFycmF5QnVmZmVyU2xpY2UpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6SlNHbG9iYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnRyeUluc3RhbGxTcGVjaWVzV2F0Y2hwb2ludCk6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJyYXlTcGVjaWVzV2F0
Y2hwb2ludCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJyYXlC
dWZmZXJTcGVjaWVzV2F0Y2hwb2ludCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXJyYXlCdWZmZXJTcGVjaWVzV2F0
Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphcnJheUJ1ZmZlclBy
b3RvdHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphcnJheUJ1ZmZl
clN0cnVjdHVyZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphcnJheUJ1
ZmZlckNvbnN0cnVjdG9yIGNvbnN0KToKKwogMjAyMC0xMS0wNiAgRG1pdHJ5IEJlemhldHNrb3Yg
IDxkYmV6aGV0c2tvdkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXQVNNLVJlZmVyZW5jZXNdIFJl
bmFtZSBhbnlyZWYgdG8gZXh0ZXJucmVmCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheUJ1ZmZlci5jcHAKaW5kZXggMGExODZjMmVkNTA3MDE1NTIzMjExZTI5YWMyMGM1MzYw
M2M1ZTAxZC4uYzliOGYyYTcxOTFlM2FjNzIwZDg5ZGZlMDQ2YTYxNTg5ZjNmNDBjNyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcApAQCAtMzExLDE1
ICszMTEsMTUgQEAgdW5zaWduZWQgQXJyYXlCdWZmZXI6OmNsYW1wSW5kZXgoZG91YmxlIGluZGV4
KSBjb25zdAogCiBSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZShkb3VibGUg
YmVnaW4sIGRvdWJsZSBlbmQpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHNsaWNlSW1wbChjbGFtcElu
ZGV4KGJlZ2luKSwgY2xhbXBJbmRleChlbmQpKTsKKyAgICByZXR1cm4gc2xpY2VXaXRoQ2xhbXBl
ZEluZGV4KGNsYW1wSW5kZXgoYmVnaW4pLCBjbGFtcEluZGV4KGVuZCkpOwogfQogCiBSZWZQdHI8
QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZShkb3VibGUgYmVnaW4pIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIHNsaWNlSW1wbChjbGFtcEluZGV4KGJlZ2luKSwgYnl0ZUxlbmd0aCgpKTsKKyAg
ICByZXR1cm4gc2xpY2VXaXRoQ2xhbXBlZEluZGV4KGNsYW1wSW5kZXgoYmVnaW4pLCBieXRlTGVu
Z3RoKCkpOwogfQogCi1SZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZUltcGwo
dW5zaWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3QKK1JlZlB0cjxBcnJheUJ1ZmZlcj4g
QXJyYXlCdWZmZXI6OnNsaWNlV2l0aENsYW1wZWRJbmRleCh1bnNpZ25lZCBiZWdpbiwgdW5zaWdu
ZWQgZW5kKSBjb25zdAogewogICAgIHVuc2lnbmVkIHNpemUgPSBiZWdpbiA8PSBlbmQgPyBlbmQg
LSBiZWdpbiA6IDA7CiAgICAgYXV0byByZXN1bHQgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHN0
YXRpY19jYXN0PGNvbnN0IGNoYXIqPihkYXRhKCkpICsgYmVnaW4sIHNpemUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmgKaW5kZXggOTZhNGE0Yzc3MTBiNmUy
MzdmY2QxN2U4MmQ1ZmY4NjIzNzM2NDc1Mi4uNjhmZjkwZTEzZWJhM2MyZjdiY2ZhNjkyNzA1ZmQ3
Zjc1N2RkNTI2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlCdWZmZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZl
ci5oCkBAIC0xMzcsNiArMTM3LDcgQEAgY2xhc3MgQXJyYXlCdWZmZXIgOiBwdWJsaWMgR0NJbmNv
bWluZ1JlZkNvdW50ZWQ8QXJyYXlCdWZmZXI+IHsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIFJl
ZlB0cjxBcnJheUJ1ZmZlcj4gc2xpY2UoZG91YmxlIGJlZ2luLCBkb3VibGUgZW5kKSBjb25zdDsK
ICAgICBKU19FWFBPUlRfUFJJVkFURSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlKGRvdWJsZSBi
ZWdpbikgY29uc3Q7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPEFycmF5QnVmZmVyPiBz
bGljZVdpdGhDbGFtcGVkSW5kZXgodW5zaWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3Q7
CiAgICAgCiAgICAgaW5saW5lIHZvaWQgcGluKCk7CiAgICAgaW5saW5lIHZvaWQgdW5waW4oKTsK
QEAgLTE2NCw3ICsxNjUsNiBAQCBjbGFzcyBBcnJheUJ1ZmZlciA6IHB1YmxpYyBHQ0luY29taW5n
UmVmQ291bnRlZDxBcnJheUJ1ZmZlcj4gewogICAgIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNy
ZWF0ZUludGVybmFsKEFycmF5QnVmZmVyQ29udGVudHMmJiwgY29uc3Qgdm9pZCosIHVuc2lnbmVk
KTsKICAgICBzdGF0aWMgUmVmUHRyPEFycmF5QnVmZmVyPiB0cnlDcmVhdGUodW5zaWduZWQgbnVt
RWxlbWVudHMsIHVuc2lnbmVkIGVsZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6
SW5pdGlhbGl6YXRpb25Qb2xpY3kpOwogICAgIEFycmF5QnVmZmVyKEFycmF5QnVmZmVyQ29udGVu
dHMmJik7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBzbGljZUltcGwodW5zaWduZWQgYmVnaW4s
IHVuc2lnbmVkIGVuZCkgY29uc3Q7CiAgICAgaW5saW5lIHVuc2lnbmVkIGNsYW1wSW5kZXgoZG91
YmxlIGluZGV4KSBjb25zdDsKICAgICBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNsYW1wVmFsdWUo
ZG91YmxlIHgsIHVuc2lnbmVkIGxlZnQsIHVuc2lnbmVkIHJpZ2h0KTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJTaGFyaW5nTW9kZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXJTaGFyaW5nTW9kZS5oCmlu
ZGV4IDYzMGVkM2RkNDJmYzhlOWMwOGY2NjI4Zjg5NmRkODQyNmI3NTFjYjEuLmUzMGQzZDNjNmYz
YjAwMjE4ZjA1MWQzNWRhYjBmOGU0Njk0MmU0NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyU2hhcmluZ01vZGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclNoYXJpbmdNb2RlLmgKQEAgLTMxLDcgKzMx
LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBlbnVtIGNsYXNzIEFycmF5QnVmZmVyU2hhcmluZ01v
ZGUgewotICAgIERlZmF1bHQsCisgICAgRGVmYXVsdCA9IDAsCiAgICAgU2hhcmVkCiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKaW5k
ZXggZGJlZWViOGE3Mzc4NmYzNjNiNDFlZThhMGRjZWE4NzIyYmY4NWYzNi4uYmZmZmM4N2JmNGFj
ODhjYjQ0YTQwOTJjZTc0YTkzODNhNzc5Mjk5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApAQCAtMTg2LDcgKzE4Niw3IEBAIG5hbWVz
cGFjZSBBcnJheVByb3RvdHlwZUludGVybmFsIHsKIHN0YXRpYyBib29sIHZlcmJvc2UgPSBmYWxz
ZTsKIH0KIAotQUxXQVlTX0lOTElORSBib29sIHNwZWNpZXNXYXRjaHBvaW50SXNWYWxpZChWTSYg
dm0sIEpTT2JqZWN0KiB0aGlzT2JqZWN0KQorc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBzcGVj
aWVzV2F0Y2hwb2ludElzVmFsaWQoVk0mIHZtLCBKU09iamVjdCogdGhpc09iamVjdCkKIHsKICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0
KHZtKTsKICAgICBBcnJheVByb3RvdHlwZSogYXJyYXlQcm90b3R5cGUgPSBnbG9iYWxPYmplY3Qt
PmFycmF5UHJvdG90eXBlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCmluZGV4IDcwZjMxN2Y4ZTY1OWQxZDE1
YjRiYjdhNzQ4NmZmZjNmODk3NTUzNTYuLjQwODUwYzgwMjVhNTU3ODQ4NDM2MGEyY2RjY2QzYjY4
MmFiZDBmYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXlCdWZmZXJQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCkBAIC0zMCw0OCArMzAsMTk2IEBACiAjaW5jbHVk
ZSAiSlNDSW5saW5lcy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBKU0FycmF5QnVm
ZmVyUHJvdG90eXBlSW50ZXJuYWwgeworc3RhdGljIGNvbnN0ZXhwciBib29sIHZlcmJvc2UgPSBm
YWxzZTsKK307CiAKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGFycmF5QnVmZmVy
UHJvdG9GdW5jU2xpY2UpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oYXJyYXlC
dWZmZXJQcm90b0dldHRlckZ1bmNCeXRlTGVuZ3RoKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NU
X0ZVTkNUSU9OKHNoYXJlZEFycmF5QnVmZmVyUHJvdG9GdW5jU2xpY2UpOwogc3RhdGljIEpTQ19E
RUNMQVJFX0hPU1RfRlVOQ1RJT04oc2hhcmVkQXJyYXlCdWZmZXJQcm90b0dldHRlckZ1bmNCeXRl
TGVuZ3RoKTsKIAorCitzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIHNwZWNpZXNXYXRjaHBvaW50
SXNWYWxpZChWTSYgdm0sIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBBcnJheUJ1ZmZlclNoYXJpbmdN
b2RlIG1vZGUpCit7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRoaXNPYmpl
Y3QtPmdsb2JhbE9iamVjdCh2bSk7CisgICAgYXV0byogcHJvdG90eXBlID0gZ2xvYmFsT2JqZWN0
LT5hcnJheUJ1ZmZlclByb3RvdHlwZShtb2RlKTsKKworICAgIGlmIChnbG9iYWxPYmplY3QtPmFy
cmF5QnVmZmVyU3BlY2llc1dhdGNocG9pbnRTZXQobW9kZSkuc3RhdGVPbkpTVGhyZWFkKCkgPT0g
Q2xlYXJXYXRjaHBvaW50KSB7CisgICAgICAgIGRhdGFMb2dMbklmKEpTQXJyYXlCdWZmZXJQcm90
b3R5cGVJbnRlcm5hbDo6dmVyYm9zZSwgIkluaXRpYWxpemluZyBBcnJheUJ1ZmZlciBzcGVjaWVz
IHdhdGNocG9pbnRzIGZvciBBcnJheUJ1ZmZlci5wcm90b3R5cGU6ICIsIHBvaW50ZXJEdW1wKHBy
b3RvdHlwZSksICIgd2l0aCBzdHJ1Y3R1cmU6ICIsIHBvaW50ZXJEdW1wKHByb3RvdHlwZS0+c3Ry
dWN0dXJlKHZtKSksICJcbmFuZCBBcnJheUJ1ZmZlcjogIiwgcG9pbnRlckR1bXAoZ2xvYmFsT2Jq
ZWN0LT5hcnJheUJ1ZmZlckNvbnN0cnVjdG9yKG1vZGUpKSwgIiB3aXRoIHN0cnVjdHVyZTogIiwg
cG9pbnRlckR1bXAoZ2xvYmFsT2JqZWN0LT5hcnJheUJ1ZmZlckNvbnN0cnVjdG9yKG1vZGUpLT5z
dHJ1Y3R1cmUodm0pKSk7CisgICAgICAgIGdsb2JhbE9iamVjdC0+dHJ5SW5zdGFsbEFycmF5QnVm
ZmVyU3BlY2llc1dhdGNocG9pbnQobW9kZSk7CisgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3Qt
PmFycmF5QnVmZmVyU3BlY2llc1dhdGNocG9pbnRTZXQobW9kZSkuc3RhdGVPbkpTVGhyZWFkKCkg
IT0gQ2xlYXJXYXRjaHBvaW50KTsKKyAgICB9CisKKyAgICByZXR1cm4gIXRoaXNPYmplY3QtPmhh
c0N1c3RvbVByb3BlcnRpZXModm0pCisgICAgICAgICYmIHByb3RvdHlwZSA9PSB0aGlzT2JqZWN0
LT5nZXRQcm90b3R5cGVEaXJlY3Qodm0pCisgICAgICAgICYmIGdsb2JhbE9iamVjdC0+YXJyYXlC
dWZmZXJTcGVjaWVzV2F0Y2hwb2ludFNldChtb2RlKS5zdGF0ZU9uSlNUaHJlYWQoKSA9PSBJc1dh
dGNoZWQ7Cit9CisKK2VudW0gY2xhc3MgU3BlY2llc0NvbnN0cnVjdFJlc3VsdCB7CisgICAgRmFz
dFBhdGgsCisgICAgRXhjZXB0aW9uLAorICAgIENyZWF0ZWRPYmplY3QKK307CisKK3N0YXRpYyBB
TFdBWVNfSU5MSU5FIHN0ZDo6cGFpcjxTcGVjaWVzQ29uc3RydWN0UmVzdWx0LCBKU0FycmF5QnVm
ZmVyKj4gc3BlY2llc0NvbnN0cnVjdEFycmF5QnVmZmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQXJyYXlCdWZmZXIqIHRoaXNPYmplY3QsIHVuc2lnbmVkIGxlbmd0aCwgQXJyYXlC
dWZmZXJTaGFyaW5nTW9kZSBtb2RlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRv
IGV4Y2VwdGlvblJlc3VsdCA9IFtdICgpIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWly
KFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQ6OkV4Y2VwdGlvbiwgbnVsbHB0cik7CisgICAgfTsKKwor
ICAgIC8vIEZhc3QgcGF0aCBpbiB0aGUgbm9ybWFsIGNhc2Ugd2hlcmUgdGhlIHVzZXIgaGFzIG5v
dCBzZXQgYW4gb3duIGNvbnN0cnVjdG9yIGFuZCB0aGUgQXJyYXlCdWZmZXIucHJvdG90eXBlLmNv
bnN0cnVjdG9yIGlzIG5vcm1hbC4KKyAgICAvLyBXZSBuZWVkIHByb3RvdHlwZSBjaGVjayBmb3Ig
c3ViY2xhc3NlcyBvZiBBcnJheUJ1ZmZlciwgd2hpY2ggYXJlIEFycmF5QnVmZmVyIG9iamVjdHMg
YnV0IGhhdmUgYSBkaWZmZXJlbnQgcHJvdG90eXBlIGJ5IGRlZmF1bHQuCisgICAgYm9vbCBpc1Zh
bGlkID0gc3BlY2llc1dhdGNocG9pbnRJc1ZhbGlkKHZtLCB0aGlzT2JqZWN0LCBtb2RlKTsKKyAg
ICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOworICAgIGlmIChMSUtFTFkoaXNWYWxpZCkpCisg
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihTcGVjaWVzQ29uc3RydWN0UmVzdWx0OjpGYXN0
UGF0aCwgbnVsbHB0cik7CisKKyAgICBKU1ZhbHVlIGNvbnN0cnVjdG9yID0gdGhpc09iamVjdC0+
Z2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGV4Y2VwdGlvblJlc3VsdCgpKTsKKyAgICBpZiAoY29u
c3RydWN0b3IuaXNDb25zdHJ1Y3Rvcih2bSkpIHsKKyAgICAgICAgSlNPYmplY3QqIGNvbnN0cnVj
dG9yT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oY29uc3RydWN0b3IpOworICAgICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0RnJvbUNvbnN0cnVjdG9yID0gY29uc3RydWN0b3JPYmpl
Y3QtPmdsb2JhbE9iamVjdCh2bSk7CisgICAgICAgIGJvb2wgaXNBcnJheUJ1ZmZlckNvbnN0cnVj
dG9yRnJvbUFub3RoZXJSZWFsbSA9IGdsb2JhbE9iamVjdCAhPSBnbG9iYWxPYmplY3RGcm9tQ29u
c3RydWN0b3IKKyAgICAgICAgICAgICYmIGNvbnN0cnVjdG9yT2JqZWN0ID09IGdsb2JhbE9iamVj
dEZyb21Db25zdHJ1Y3Rvci0+YXJyYXlCdWZmZXJDb25zdHJ1Y3Rvcihtb2RlKTsKKyAgICAgICAg
aWYgKGlzQXJyYXlCdWZmZXJDb25zdHJ1Y3RvckZyb21Bbm90aGVyUmVhbG0pCisgICAgICAgICAg
ICByZXR1cm4gc3RkOjptYWtlX3BhaXIoU3BlY2llc0NvbnN0cnVjdFJlc3VsdDo6RmFzdFBhdGgs
IG51bGxwdHIpOworICAgIH0KKyAgICBpZiAoY29uc3RydWN0b3IuaXNPYmplY3QoKSkgeworICAg
ICAgICBjb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yLmdldChnbG9iYWxPYmplY3QsIHZtLnByb3Bl
cnR5TmFtZXMtPnNwZWNpZXNTeW1ib2wpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBleGNlcHRpb25SZXN1bHQoKSk7CisgICAgICAgIGlmIChjb25zdHJ1Y3Rvci5pc051bGwo
KSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihTcGVjaWVzQ29uc3RydWN0UmVz
dWx0OjpGYXN0UGF0aCwgbnVsbHB0cik7CisgICAgfQorCisgICAgaWYgKGNvbnN0cnVjdG9yLmlz
VW5kZWZpbmVkKCkpCisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihTcGVjaWVzQ29uc3Ry
dWN0UmVzdWx0OjpGYXN0UGF0aCwgbnVsbHB0cik7CisKKyAgICAvLyAxNi4gTGV0IG5ldyBiZSA/
IENvbnN0cnVjdChjdG9yLCDCqyDwnZS9KG5ld0xlbikgwrspLgorICAgIE1hcmtlZEFyZ3VtZW50
QnVmZmVyIGFyZ3M7CisgICAgYXJncy5hcHBlbmQoanNOdW1iZXIobGVuZ3RoKSk7CisgICAgQVNT
RVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CisgICAgSlNPYmplY3QqIG5ld09iamVjdCA9IGNv
bnN0cnVjdChnbG9iYWxPYmplY3QsIGNvbnN0cnVjdG9yLCBhcmdzLCAiU3BlY2llcyBjb25zdHJ1
Y3Rpb24gZGlkIG5vdCBnZXQgYSB2YWxpZCBjb25zdHJ1Y3RvciIpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGV4Y2VwdGlvblJlc3VsdCgpKTsKKworICAgIC8vIDE3LiBQZXJmb3Jt
ID8gUmVxdWlyZUludGVybmFsU2xvdChuZXcsIFtbQXJyYXlCdWZmZXJEYXRhXV0pLgorICAgIEpT
QXJyYXlCdWZmZXIqIHJlc3VsdCA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KHZtLCBu
ZXdPYmplY3QpOworICAgIGlmIChVTkxJS0VMWSghcmVzdWx0KSkgeworICAgICAgICB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiU3BlY2llcyBjb25zdHJ1Y3Rpb24gZG9lcyBu
b3QgY3JlYXRlIEFycmF5QnVmZmVyIl9zKTsKKyAgICAgICAgcmV0dXJuIGV4Y2VwdGlvblJlc3Vs
dCgpOworICAgIH0KKworICAgIGlmIChtb2RlID09IEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OkRl
ZmF1bHQpIHsKKyAgICAgICAgLy8gMTguIElmIElzU2hhcmVkQXJyYXlCdWZmZXIobmV3KSBpcyB0
cnVlLCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCisgICAgICAgIGlmIChyZXN1bHQtPmlz
U2hhcmVkKCkpIHsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJBcnJheUJ1ZmZlci5wcm90b3R5cGUuc2xpY2UgY3JlYXRlcyBTaGFyZWRBcnJheUJ1ZmZl
ciJfcyk7CisgICAgICAgICAgICByZXR1cm4gZXhjZXB0aW9uUmVzdWx0KCk7CisgICAgICAgIH0K
KyAgICAgICAgLy8gMTkuIElmIElzRGV0YWNoZWRCdWZmZXIobmV3KSBpcyB0cnVlLCB0aHJvdyBh
IFR5cGVFcnJvciBleGNlcHRpb24uCisgICAgICAgIGlmIChyZXN1bHQtPmltcGwoKS0+aXNEZXRh
Y2hlZCgpKSB7CisgICAgICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJDcmVhdGVkIEFycmF5QnVmZmVyIGlzIGRldGFjaGVkIl9zKTsKKyAgICAgICAgICAgIHJl
dHVybiBleGNlcHRpb25SZXN1bHQoKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAg
IC8vIDE3LiBJZiBJc1NoYXJlZEFycmF5QnVmZmVyKG5ldykgaXMgZmFsc2UsIHRocm93IGEgVHlw
ZUVycm9yIGV4Y2VwdGlvbi4KKyAgICAgICAgaWYgKCFyZXN1bHQtPmlzU2hhcmVkKCkpIHsKKyAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJTaGFyZWRBcnJh
eUJ1ZmZlci5wcm90b3R5cGUuc2xpY2UgY3JlYXRlcyBub24tc2hhcmVkIEFycmF5QnVmZmVyIl9z
KTsKKyAgICAgICAgICAgIHJldHVybiBleGNlcHRpb25SZXN1bHQoKTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIC8vIDIwLiBJZiBTYW1lVmFsdWUobmV3LCBPKSBpcyB0cnVlLCB0aHJvdyBhIFR5
cGVFcnJvciBleGNlcHRpb24uCisgICAgaWYgKHJlc3VsdCA9PSB0aGlzT2JqZWN0KSB7CisgICAg
ICAgIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlNwZWNpZXMgY29uc3Ry
dWN0aW9uIHJldHVybnMgc2FtZSBBcnJheUJ1ZmZlciB0byBhIHJlY2VpdmVyIl9zKTsKKyAgICAg
ICAgcmV0dXJuIGV4Y2VwdGlvblJlc3VsdCgpOworICAgIH0KKworICAgIC8vIDIxLiBJZiBuZXcu
W1tBcnJheUJ1ZmZlckJ5dGVMZW5ndGhdXSA8IG5ld0xlbiwgdGhyb3cgYSBUeXBlRXJyb3IgZXhj
ZXB0aW9uLgorICAgIGlmIChyZXN1bHQtPmltcGwoKS0+Ynl0ZUxlbmd0aCgpIDwgbGVuZ3RoKSB7
CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlNwZWNpZXMg
Y29uc3RydWN0aW9uIHJldHVybnMgQXJyYXlCdWZmZXIgd2hpY2ggYnl0ZUxlbmd0aCBpcyBsZXNz
IHRoYW4gcmVxdWVzdGVkIl9zKTsKKyAgICAgICAgcmV0dXJuIGV4Y2VwdGlvblJlc3VsdCgpOwor
ICAgIH0KKworICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihTcGVjaWVzQ29uc3RydWN0UmVzdWx0
OjpDcmVhdGVkT2JqZWN0LCByZXN1bHQpOworfQorCisKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBh
cnJheUJ1ZmZlclNsaWNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYXJy
YXlCdWZmZXJWYWx1ZSwgSlNWYWx1ZSBzdGFydFZhbHVlLCBKU1ZhbHVlIGVuZFZhbHVlLCBBcnJh
eUJ1ZmZlclNoYXJpbmdNb2RlIG1vZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAorICAgIC8v
IDIuIFBlcmZvcm0gPyBSZXF1aXJlSW50ZXJuYWxTbG90KE8sIFtbQXJyYXlCdWZmZXJEYXRhXV0p
LgorICAgIC8vIDMuIElmIElzU2hhcmVkQXJyYXlCdWZmZXIoTykgaXMgdHJ1ZSwgdGhyb3cgYSBU
eXBlRXJyb3IgZXhjZXB0aW9uLgogICAgIEpTQXJyYXlCdWZmZXIqIHRoaXNPYmplY3QgPSBqc0R5
bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXIqPih2bSwgYXJyYXlCdWZmZXJWYWx1ZSk7CiAgICAgaWYg
KCF0aGlzT2JqZWN0IHx8IChtb2RlICE9IHRoaXNPYmplY3QtPmltcGwoKS0+c2hhcmluZ01vZGUo
KSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
IG1ha2VTdHJpbmcoIlJlY2VpdmVyIG11c3QgYmUgIl9zLCBtb2RlID09IEFycmF5QnVmZmVyU2hh
cmluZ01vZGU6OkRlZmF1bHQgPyAiQXJyYXlCdWZmZXIiX3MgOiAiU2hhcmVkQXJyYXlCdWZmZXIi
X3MpKTsKIAorICAgIC8vIDQuIElmIElzRGV0YWNoZWRCdWZmZXIoTykgaXMgdHJ1ZSwgdGhyb3cg
YSBUeXBlRXJyb3IgZXhjZXB0aW9uLgogICAgIGlmIChtb2RlID09IEFycmF5QnVmZmVyU2hhcmlu
Z01vZGU6OkRlZmF1bHQgJiYgdGhpc09iamVjdC0+aW1wbCgpLT5pc0RldGFjaGVkKCkpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZl
ciBpcyBkZXRhY2hlZCJfcyk7CiAKLSAgICBkb3VibGUgYmVnaW4gPSBzdGFydFZhbHVlLnRvSW50
ZWdlck9ySW5maW5pdHkoZ2xvYmFsT2JqZWN0KTsKKyAgICAvLyA1LiBMZXQgbGVuIGJlIE8uW1tB
cnJheUJ1ZmZlckJ5dGVMZW5ndGhdXS4KKyAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gdGhpc09i
amVjdC0+aW1wbCgpLT5ieXRlTGVuZ3RoKCk7CisgICAgdW5zaWduZWQgZmlyc3RJbmRleCA9IDA7
CisgICAgZG91YmxlIHJlbGF0aXZlU3RhcnQgPSBzdGFydFZhbHVlLnRvSW50ZWdlck9ySW5maW5p
dHkoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKKyAgICBpZiAocmVsYXRpdmVTdGFydCA8IDApCisgICAgICAgIGZpcnN0SW5k
ZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RkOjptYXg8ZG91YmxlPihieXRlTGVuZ3RoICsg
cmVsYXRpdmVTdGFydCwgMCkpOworICAgIGVsc2UKKyAgICAgICAgZmlyc3RJbmRleCA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihzdGQ6Om1pbjxkb3VibGU+KHJlbGF0aXZlU3RhcnQsIGJ5dGVMZW5n
dGgpKTsKKyAgICBBU1NFUlQoZmlyc3RJbmRleCA+PSAwKTsKKyAgICBBU1NFUlQoZmlyc3RJbmRl
eCA8PSBieXRlTGVuZ3RoKTsKIAotICAgIGRvdWJsZSBlbmQ7CisgICAgdW5zaWduZWQgZmluYWxJ
bmRleCA9IDA7CiAgICAgaWYgKCFlbmRWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIGVu
ZCA9IGVuZFZhbHVlLnRvSW50ZWdlck9ySW5maW5pdHkoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAg
ZG91YmxlIHJlbGF0aXZlRW5kID0gZW5kVmFsdWUudG9JbnRlZ2VyT3JJbmZpbml0eShnbG9iYWxP
YmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKKyAgICAgICAgaWYgKHJlbGF0aXZlRW5kIDwgMCkKKyAgICAgICAgICAgIGZpbmFsSW5k
ZXggPSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RkOjptYXg8ZG91YmxlPihieXRlTGVuZ3RoICsg
cmVsYXRpdmVFbmQsIDApKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZmluYWxJbmRleCA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGQ6Om1pbjxkb3VibGU+KHJlbGF0aXZlRW5kLCBieXRl
TGVuZ3RoKSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGVuZCA9IHRoaXNPYmplY3QtPmltcGwoKS0+
Ynl0ZUxlbmd0aCgpOworICAgICAgICBmaW5hbEluZGV4ID0gdGhpc09iamVjdC0+aW1wbCgpLT5i
eXRlTGVuZ3RoKCk7CisgICAgQVNTRVJUKGZpbmFsSW5kZXggPj0gMCk7CisgICAgQVNTRVJUKGZp
bmFsSW5kZXggPD0gYnl0ZUxlbmd0aCk7CisKKyAgICAvLyAxNC4gTGV0IG5ld0xlbiBiZSBtYXgo
ZmluYWwgLSBmaXJzdCwgMCkuCisgICAgdW5zaWduZWQgbmV3TGVuZ3RoID0gKGZpbmFsSW5kZXgg
Pj0gZmlyc3RJbmRleCkgPyBmaW5hbEluZGV4IC0gZmlyc3RJbmRleCA6IDA7CisKKyAgICAvLyAx
NS4gTGV0IGN0b3IgYmUgPyBTcGVjaWVzQ29uc3RydWN0b3IoTywgJUFycmF5QnVmZmVyJSkuCisg
ICAgYXV0byBzcGVjaWVzUmVzdWx0ID0gc3BlY2llc0NvbnN0cnVjdEFycmF5QnVmZmVyKGdsb2Jh
bE9iamVjdCwgdGhpc09iamVjdCwgbmV3TGVuZ3RoLCBtb2RlKTsKKyAgICAvLyBXZSBjYW4gb25s
eSBnZXQgYW4gZXhjZXB0aW9uIGlmIHdlIGNhbGwgc29tZSB1c2VyIGZ1bmN0aW9uLgorICAgIEVY
Q0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAoc3BlY2llc1Jlc3VsdC5maXJz
dCA9PSBTcGVjaWVzQ29uc3RydWN0UmVzdWx0OjpFeGNlcHRpb24pKTsKKyAgICBpZiAoVU5MSUtF
TFkoc3BlY2llc1Jlc3VsdC5maXJzdCA9PSBTcGVjaWVzQ29uc3RydWN0UmVzdWx0OjpFeGNlcHRp
b24pKQorICAgICAgICByZXR1cm4geyB9OwogCiAgICAgLy8gMjMuIElmIElzRGV0YWNoZWRCdWZm
ZXIoTykgaXMgdHJ1ZSwgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uLgotICAgIC8vIENoZWNr
IGRldGFjaCBzdGF0dXMgYWdhaW4gc2luY2UgdG9JbnRlZ2VyT3JJbmZpbml0eSBjYW4gaGF2ZSBz
aWRlIGVmZmVjdC4KICAgICBpZiAobW9kZSA9PSBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlOjpEZWZh
dWx0ICYmIHRoaXNPYmplY3QtPmltcGwoKS0+aXNEZXRhY2hlZCgpKQogICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIgaXMgZGV0YWNo
ZWQiX3MpOwogCi0gICAgYXV0byBuZXdCdWZmZXIgPSB0aGlzT2JqZWN0LT5pbXBsKCktPnNsaWNl
KGJlZ2luLCBlbmQpOwotICAgIGlmICghbmV3QnVmZmVyKQotICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKSk7Ci0K
LSAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+YXJyYXlCdWZmZXJTdHJ1
Y3R1cmUobmV3QnVmZmVyLT5zaGFyaW5nTW9kZSgpKTsKLQotICAgIEpTQXJyYXlCdWZmZXIqIHJl
c3VsdCA9IEpTQXJyYXlCdWZmZXI6OmNyZWF0ZSh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKG5ld0J1
ZmZlcikpOworICAgIGlmIChMSUtFTFkoc3BlY2llc1Jlc3VsdC5maXJzdCA9PSBTcGVjaWVzQ29u
c3RydWN0UmVzdWx0OjpGYXN0UGF0aCkpIHsKKyAgICAgICAgQVNTRVJUKCF0aGlzT2JqZWN0LT5p
bXBsKCktPmlzRGV0YWNoZWQoKSk7CisgICAgICAgIGF1dG8gbmV3QnVmZmVyID0gdGhpc09iamVj
dC0+aW1wbCgpLT5zbGljZVdpdGhDbGFtcGVkSW5kZXgoZmlyc3RJbmRleCwgZmluYWxJbmRleCk7
CisgICAgICAgIGlmICghbmV3QnVmZmVyKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSkpOworICAgICAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+YXJyYXlCdWZmZXJTdHJ1Y3R1
cmUobmV3QnVmZmVyLT5zaGFyaW5nTW9kZSgpKTsKKyAgICAgICAgSlNBcnJheUJ1ZmZlciogcmVz
dWx0ID0gSlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUobmV3QnVm
ZmVyKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAgICB9CiAK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgLy8gMjQuIExldCBmcm9t
QnVmIGJlIE8uW1tBcnJheUJ1ZmZlckRhdGFdXS4KKyAgICAvLyAyNS4gTGV0IHRvQnVmIGJlIG5l
dy5bW0FycmF5QnVmZmVyRGF0YV1dLgorICAgIC8vIDI2LiBQZXJmb3JtIENvcHlEYXRhQmxvY2tC
eXRlcyh0b0J1ZiwgMCwgZnJvbUJ1ZiwgZmlyc3QsIG5ld0xlbikuCisgICAgSlNBcnJheUJ1ZmZl
ciogbmV3T2JqZWN0ID0gc3BlY2llc1Jlc3VsdC5zZWNvbmQ7CisgICAgQVNTRVJUKCF0aGlzT2Jq
ZWN0LT5pbXBsKCktPmlzRGV0YWNoZWQoKSk7CisgICAgQVNTRVJUKCFuZXdPYmplY3QtPmltcGwo
KS0+aXNEZXRhY2hlZCgpKTsKKyAgICBBU1NFUlQobmV3T2JqZWN0LT5pbXBsKCktPmJ5dGVMZW5n
dGgoKSA+PSBuZXdMZW5ndGgpOworICAgIG1lbWNweShuZXdPYmplY3QtPmltcGwoKS0+ZGF0YSgp
LCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4odGhpc09iamVjdC0+aW1wbCgpLT5kYXRhKCkpICsg
Zmlyc3RJbmRleCwgbmV3TGVuZ3RoKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG5ld09i
amVjdCk7CiB9CiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBhcnJheUJ1ZmZlckJ5dGVMZW5ndGgo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBhcnJheUJ1ZmZlclZhbHVlLCBB
cnJheUJ1ZmZlclNoYXJpbmdNb2RlIG1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggYjVjNWYxNDcwODg2MTI2OGYwOTQxOWVi
NTJkY2Y1OTc5NDY3ZjRiOS4uZmQ4ODk0NzJmMjJiZGZiNDE1ZTc5ZmYzYTJkZGJiOTNkZjMzYWUy
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcApAQCAtNDk5LDcgKzQ5OSw2IEBAIEpTR2xvYmFsT2JqZWN0OjpKU0dsb2JhbE9iamVjdChW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBHbG9iYWxPYmplY3RNCiAgICAgLCBt
X3N0cmluZ0l0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50U2V0KElzV2F0Y2hlZCkKICAgICAsIG1f
bWFwU2V0V2F0Y2hwb2ludFNldChJc1dhdGNoZWQpCiAgICAgLCBtX3NldEFkZFdhdGNocG9pbnRT
ZXQoSXNXYXRjaGVkKQotICAgICwgbV9hcnJheVNwZWNpZXNXYXRjaHBvaW50U2V0KENsZWFyV2F0
Y2hwb2ludCkKICAgICAsIG1fYXJyYXlKb2luV2F0Y2hwb2ludFNldChJc1dhdGNoZWQpCiAgICAg
LCBtX251bWJlclRvU3RyaW5nV2F0Y2hwb2ludFNldChJc1dhdGNoZWQpCiAgICAgLCBtX3J1bnRp
bWVGbGFncygpCkBAIC04MzIsOCArODMxLDEyIEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQo
Vk0mIHZtKQogCiAjaWYgRU5BQkxFKFNIQVJFRF9BUlJBWV9CVUZGRVIpCiAgICAgaWYgKE9wdGlv
bnM6OnVzZVNoYXJlZEFycmF5QnVmZmVyKCkpIHsKLSAgICAgICAgbV9zaGFyZWRBcnJheUJ1ZmZl
clByb3RvdHlwZS5zZXQodm0sIHRoaXMsIEpTQXJyYXlCdWZmZXJQcm90b3R5cGU6OmNyZWF0ZSh2
bSwgdGhpcywgSlNBcnJheUJ1ZmZlclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlz
LCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSksIEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OlNoYXJl
ZCkpOwotICAgICAgICBtX3NoYXJlZEFycmF5QnVmZmVyU3RydWN0dXJlLnNldCh2bSwgdGhpcywg
SlNBcnJheUJ1ZmZlcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX3NoYXJlZEFycmF5QnVm
ZmVyUHJvdG90eXBlLmdldCgpKSk7CisgICAgICAgIG1fc2hhcmVkQXJyYXlCdWZmZXJTdHJ1Y3R1
cmUuaW5pdExhdGVyKAorICAgICAgICAgICAgW10gKExhenlDbGFzc1N0cnVjdHVyZTo6SW5pdGlh
bGl6ZXImIGluaXQpIHsKKyAgICAgICAgICAgICAgICBpbml0LnNldFByb3RvdHlwZShKU0FycmF5
QnVmZmVyUHJvdG90eXBlOjpjcmVhdGUoaW5pdC52bSwgaW5pdC5nbG9iYWwsIEpTQXJyYXlCdWZm
ZXJQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBpbml0Lmdsb2JhbCwgaW5pdC5n
bG9iYWwtPm1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSwgQXJyYXlCdWZmZXJTaGFyaW5nTW9kZTo6
U2hhcmVkKSk7CisgICAgICAgICAgICAgICAgaW5pdC5zZXRTdHJ1Y3R1cmUoSlNBcnJheUJ1ZmZl
cjo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGluaXQuZ2xvYmFsLCBpbml0LnByb3RvdHlwZSkp
OworICAgICAgICAgICAgICAgIGluaXQuc2V0Q29uc3RydWN0b3IoSlNTaGFyZWRBcnJheUJ1ZmZl
ckNvbnN0cnVjdG9yOjpjcmVhdGUoaW5pdC52bSwgSlNTaGFyZWRBcnJheUJ1ZmZlckNvbnN0cnVj
dG9yOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgaW5pdC5nbG9iYWwsIGluaXQuZ2xvYmFsLT5t
X2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwganNDYXN0PEpTQXJyYXlCdWZmZXJQcm90b3R5cGUq
Pihpbml0LnByb3RvdHlwZSksIGluaXQuZ2xvYmFsLT5tX3NwZWNpZXNHZXR0ZXJTZXR0ZXIuZ2V0
KCkpKTsKKyAgICAgICAgICAgIH0pOwogICAgIH0KICNlbmRpZgogCkBAIC05MDEsMTQgKzkwNCw5
IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIG1fcmVnRXhwR2xvYmFs
RGF0YS5jYWNoZWRSZXN1bHQoKS5yZWNvcmQodm0sIHRoaXMsIG51bGxwdHIsIGpzRW1wdHlTdHJp
bmcodm0pLCBNYXRjaFJlc3VsdCgwLCAwKSk7CiAgICAgCiAjaWYgRU5BQkxFKFNIQVJFRF9BUlJB
WV9CVUZGRVIpCi0gICAgSlNTaGFyZWRBcnJheUJ1ZmZlckNvbnN0cnVjdG9yKiBzaGFyZWRBcnJh
eUJ1ZmZlckNvbnN0cnVjdG9yID0gbnVsbHB0cjsKICAgICBBdG9taWNzT2JqZWN0KiBhdG9taWNz
T2JqZWN0ID0gbnVsbHB0cjsKLSAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkQXJyYXlCdWZmZXIo
KSkgewotICAgICAgICBzaGFyZWRBcnJheUJ1ZmZlckNvbnN0cnVjdG9yID0gSlNTaGFyZWRBcnJh
eUJ1ZmZlckNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIEpTU2hhcmVkQXJyYXlCdWZmZXJDb25zdHJ1
Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgp
KSwgbV9zaGFyZWRBcnJheUJ1ZmZlclByb3RvdHlwZS5nZXQoKSwgbV9zcGVjaWVzR2V0dGVyU2V0
dGVyLmdldCgpKTsKLSAgICAgICAgbV9zaGFyZWRBcnJheUJ1ZmZlclByb3RvdHlwZS0+cHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBz
aGFyZWRBcnJheUJ1ZmZlckNvbnN0cnVjdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Ci0KKyAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkQXJy
YXlCdWZmZXIoKSkKICAgICAgICAgYXRvbWljc09iamVjdCA9IEF0b21pY3NPYmplY3Q6OmNyZWF0
ZSh2bSwgdGhpcywgQXRvbWljc09iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29i
amVjdFByb3RvdHlwZS5nZXQoKSkpOwotICAgIH0KICNlbmRpZgogCiAjZGVmaW5lIENSRUFURV9D
T05TVFJVQ1RPUl9GT1JfU0lNUExFX1RZUEUoY2FwaXRhbE5hbWUsIGxvd2VyTmFtZSwgcHJvcGVy
TmFtZSwgaW5zdGFuY2VUeXBlLCBqc05hbWUsIHByb3RvdHlwZUJhc2UsIGZlYXR1cmVGbGFnKSBc
CkBAIC05ODksNyArOTg3LDcgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFt
ZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKIAogI2lmIEVOQUJM
RShTSEFSRURfQVJSQVlfQlVGRkVSKQogICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRBcnJheUJ1
ZmZlcigpKSB7Ci0gICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5TaGFyZWRBcnJheUJ1ZmZlciwgc2hhcmVkQXJyYXlCdWZmZXJDb25zdHJ1Y3Rv
ciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwor
ICAgICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
U2hhcmVkQXJyYXlCdWZmZXIsIG1fc2hhcmVkQXJyYXlCdWZmZXJTdHJ1Y3R1cmUuY29uc3RydWN0
b3IodGhpcyksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pKTsKICAgICAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPkF0b21pY3MsIGF0b21pY3NPYmplY3QsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICB9CiAjZW5kaWYKQEAgLTIwMzMsMTQgKzIw
MzEsMTIgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGws
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHRoaXNPYmplY3QtPm1fcHJveHlPYmplY3RTdHJ1
Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9jYWxsYWJsZVByb3h5T2Jq
ZWN0U3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fcHJveHlSZXZv
a2VTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CisjaWYgRU5BQkxFKFNIQVJFRF9BUlJBWV9CVUZG
RVIpCisgICAgdGhpc09iamVjdC0+bV9zaGFyZWRBcnJheUJ1ZmZlclN0cnVjdHVyZS52aXNpdCh2
aXNpdG9yKTsKKyNlbmRpZgogCiAgICAgZm9yIChhdXRvJiBwcm9wZXJ0eSA6IHRoaXNPYmplY3Qt
Pm1fbGlua1RpbWVDb25zdGFudHMpCiAgICAgICAgIHByb3BlcnR5LnZpc2l0KHZpc2l0b3IpOwot
ICAgIAotI2lmIEVOQUJMRShTSEFSRURfQVJSQVlfQlVGRkVSKQotICAgIHZpc2l0b3IuYXBwZW5k
KHRoaXNPYmplY3QtPm1fc2hhcmVkQXJyYXlCdWZmZXJQcm90b3R5cGUpOwotICAgIHZpc2l0b3Iu
YXBwZW5kKHRoaXNPYmplY3QtPm1fc2hhcmVkQXJyYXlCdWZmZXJTdHJ1Y3R1cmUpOwotI2VuZGlm
CiAKICNkZWZpbmUgVklTSVRfU0lNUExFX1RZUEUoQ2FwaXRhbE5hbWUsIGxvd2VyTmFtZSwgcHJv
cGVyTmFtZSwgaW5zdGFuY2VUeXBlLCBqc05hbWUsIHByb3RvdHlwZUJhc2UsIGZlYXR1cmVGbGFn
KSBpZiAoZmVhdHVyZUZsYWcpIHsgXAogICAgICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0
LT5tXyAjIyBsb3dlck5hbWUgIyMgUHJvdG90eXBlKTsgXApAQCAtMjEzNiw0OCArMjEzMiw0NSBA
QCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpjbGVhclJhcmVEYXRhKEpTQ2VsbCogY2VsbCkKICAgICBq
c0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihjZWxsKS0+bV9yYXJlRGF0YSA9IG51bGxwdHI7CiB9CiAK
LXZvaWQgSlNHbG9iYWxPYmplY3Q6OnRyeUluc3RhbGxBcnJheVNwZWNpZXNXYXRjaHBvaW50KCkK
K3ZvaWQgSlNHbG9iYWxPYmplY3Q6OnRyeUluc3RhbGxTcGVjaWVzV2F0Y2hwb2ludChKU09iamVj
dCogcHJvdG90eXBlLCBKU09iamVjdCogY29uc3RydWN0b3IsIHN0ZDo6dW5pcXVlX3B0cjxPYmpl
Y3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4m
IGNvbnN0cnVjdG9yV2F0Y2hwb2ludCwgc3RkOjp1bmlxdWVfcHRyPE9iamVjdFByb3BlcnR5Q2hh
bmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+PiYgc3BlY2llc1dhdGNo
cG9pbnQsIElubGluZVdhdGNocG9pbnRTZXQmIHNwZWNpZXNXYXRjaHBvaW50U2V0KQogewotICAg
IFJFTEVBU0VfQVNTRVJUKCFtX2FycmF5UHJvdG90eXBlQ29uc3RydWN0b3JXYXRjaHBvaW50KTsK
LSAgICBSRUxFQVNFX0FTU0VSVCghbV9hcnJheUNvbnN0cnVjdG9yU3BlY2llc1dhdGNocG9pbnQp
OworICAgIFJFTEVBU0VfQVNTRVJUKCFjb25zdHJ1Y3RvcldhdGNocG9pbnQpOworICAgIFJFTEVB
U0VfQVNTRVJUKCFzcGVjaWVzV2F0Y2hwb2ludCk7CiAKICAgICBWTSYgdm0gPSB0aGlzLT52bSgp
OwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIC8vIEZp
cnN0IHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIEFycmF5LnByb3RvdHlwZS5jb25zdHJ1
Y3RvciBwcm9wZXJ0eSBwb2ludHMgdG8gQXJyYXkKLSAgICAvLyBhbmQgdGhhdCBBcnJheVtTeW1i
b2wuc3BlY2llc10gaXMgdGhlIHByaW1vcmRpYWwgR2V0dGVyU2V0dGVyLgotICAgIEFycmF5UHJv
dG90eXBlKiBhcnJheVByb3RvdHlwZSA9IHRoaXMtPmFycmF5UHJvdG90eXBlKCk7CisgICAgLy8g
Rmlyc3Qgd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgJXByb3RvdHlwZSUuY29uc3RydWN0
b3IgcHJvcGVydHkgcG9pbnRzIHRvIGEgJWNvbnN0cnVjdG9yJQorICAgIC8vIGFuZCB0aGF0ICVj
b25zdHJ1Y3RvciVbU3ltYm9sLnNwZWNpZXNdIGlzIHRoZSBwcmltb3JkaWFsIEdldHRlclNldHRl
ci4KIAogICAgIC8vIFdlIG9ubHkgaW5pdGlhbGl6ZSBvbmNlIHNvIGZsYXR0ZW5pbmcgdGhlIHN0
cnVjdHVyZXMgZG9lcyBub3QgaGF2ZSBhbnkgcmVhbCBjb3N0LgotICAgIFN0cnVjdHVyZSogcHJv
dG90eXBlU3RydWN0dXJlID0gYXJyYXlQcm90b3R5cGUtPnN0cnVjdHVyZSh2bSk7CisgICAgU3Ry
dWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUgPSBwcm90b3R5cGUtPnN0cnVjdHVyZSh2bSk7CiAg
ICAgaWYgKHByb3RvdHlwZVN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpCi0gICAgICAgIHByb3Rv
dHlwZVN0cnVjdHVyZSA9IHByb3RvdHlwZVN0cnVjdHVyZS0+ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1
Y3R1cmUodm0sIGFycmF5UHJvdG90eXBlKTsKKyAgICAgICAgcHJvdG90eXBlU3RydWN0dXJlID0g
cHJvdG90eXBlU3RydWN0dXJlLT5mbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZSh2bSwgcHJvdG90
eXBlKTsKICAgICBSRUxFQVNFX0FTU0VSVCghcHJvdG90eXBlU3RydWN0dXJlLT5pc0RpY3Rpb25h
cnkoKSk7CiAKLSAgICBBcnJheUNvbnN0cnVjdG9yKiBhcnJheUNvbnN0cnVjdG9yID0gdGhpcy0+
YXJyYXlDb25zdHJ1Y3RvcigpOwotCiAgICAgYXV0byBpbnZhbGlkYXRlV2F0Y2hwb2ludCA9IFsm
XSB7Ci0gICAgICAgIG1fYXJyYXlTcGVjaWVzV2F0Y2hwb2ludFNldC5pbnZhbGlkYXRlKHZtLCBT
dHJpbmdGaXJlRGV0YWlsKCJXYXMgbm90IGFibGUgdG8gc2V0IHVwIGFycmF5IHNwZWNpZXMgd2F0
Y2hwb2ludC4iKSk7CisgICAgICAgIHNwZWNpZXNXYXRjaHBvaW50U2V0LmludmFsaWRhdGUodm0s
IFN0cmluZ0ZpcmVEZXRhaWwoIldhcyBub3QgYWJsZSB0byBzZXQgdXAgc3BlY2llcyB3YXRjaHBv
aW50LiIpKTsKICAgICB9OwogCi0gICAgUHJvcGVydHlTbG90IGNvbnN0cnVjdG9yU2xvdChhcnJh
eVByb3RvdHlwZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwg
JnZtKTsKLSAgICBhcnJheVByb3RvdHlwZS0+Z2V0T3duUHJvcGVydHlTbG90KGFycmF5UHJvdG90
eXBlLCB0aGlzLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgY29uc3RydWN0b3JTbG90
KTsKKyAgICBQcm9wZXJ0eVNsb3QgY29uc3RydWN0b3JTbG90KHByb3RvdHlwZSwgUHJvcGVydHlT
bG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJnZtKTsKKyAgICBwcm90b3R5cGUt
PmdldE93blByb3BlcnR5U2xvdChwcm90b3R5cGUsIHRoaXMsIHZtLnByb3BlcnR5TmFtZXMtPmNv
bnN0cnVjdG9yLCBjb25zdHJ1Y3RvclNsb3QpOwogICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9u
KCk7Ci0gICAgaWYgKGNvbnN0cnVjdG9yU2xvdC5zbG90QmFzZSgpICE9IGFycmF5UHJvdG90eXBl
CisgICAgaWYgKGNvbnN0cnVjdG9yU2xvdC5zbG90QmFzZSgpICE9IHByb3RvdHlwZQogICAgICAg
ICB8fCAhY29uc3RydWN0b3JTbG90LmlzQ2FjaGVhYmxlVmFsdWUoKQotICAgICAgICB8fCBjb25z
dHJ1Y3RvclNsb3QuZ2V0VmFsdWUodGhpcywgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3Ip
ICE9IGFycmF5Q29uc3RydWN0b3IpIHsKKyAgICAgICAgfHwgY29uc3RydWN0b3JTbG90LmdldFZh
bHVlKHRoaXMsIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yKSAhPSBjb25zdHJ1Y3Rvcikg
ewogICAgICAgICBpbnZhbGlkYXRlV2F0Y2hwb2ludCgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgU3RydWN0dXJlKiBjb25zdHJ1Y3RvclN0cnVjdHVyZSA9IGFycmF5Q29uc3RydWN0
b3ItPnN0cnVjdHVyZSh2bSk7CisgICAgU3RydWN0dXJlKiBjb25zdHJ1Y3RvclN0cnVjdHVyZSA9
IGNvbnN0cnVjdG9yLT5zdHJ1Y3R1cmUodm0pOwogICAgIGlmIChjb25zdHJ1Y3RvclN0cnVjdHVy
ZS0+aXNEaWN0aW9uYXJ5KCkpCi0gICAgICAgIGNvbnN0cnVjdG9yU3RydWN0dXJlID0gY29uc3Ry
dWN0b3JTdHJ1Y3R1cmUtPmZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKHZtLCBhcnJheUNvbnN0
cnVjdG9yKTsKKyAgICAgICAgY29uc3RydWN0b3JTdHJ1Y3R1cmUgPSBjb25zdHJ1Y3RvclN0cnVj
dHVyZS0+ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUodm0sIGNvbnN0cnVjdG9yKTsKIAotICAg
IFByb3BlcnR5U2xvdCBzcGVjaWVzU2xvdChhcnJheUNvbnN0cnVjdG9yLCBQcm9wZXJ0eVNsb3Q6
OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmdm0pOwotICAgIGFycmF5Q29uc3RydWN0
b3ItPmdldE93blByb3BlcnR5U2xvdChhcnJheUNvbnN0cnVjdG9yLCB0aGlzLCB2bS5wcm9wZXJ0
eU5hbWVzLT5zcGVjaWVzU3ltYm9sLCBzcGVjaWVzU2xvdCk7CisgICAgUHJvcGVydHlTbG90IHNw
ZWNpZXNTbG90KGNvbnN0cnVjdG9yLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6
Vk1JbnF1aXJ5LCAmdm0pOworICAgIGNvbnN0cnVjdG9yLT5nZXRPd25Qcm9wZXJ0eVNsb3QoY29u
c3RydWN0b3IsIHRoaXMsIHZtLnByb3BlcnR5TmFtZXMtPnNwZWNpZXNTeW1ib2wsIHNwZWNpZXNT
bG90KTsKICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwotICAgIGlmIChzcGVjaWVzU2xv
dC5zbG90QmFzZSgpICE9IGFycmF5Q29uc3RydWN0b3IKKyAgICBpZiAoc3BlY2llc1Nsb3Quc2xv
dEJhc2UoKSAhPSBjb25zdHJ1Y3RvcgogICAgICAgICB8fCAhc3BlY2llc1Nsb3QuaXNDYWNoZWFi
bGVHZXR0ZXIoKQogICAgICAgICB8fCBzcGVjaWVzU2xvdC5nZXR0ZXJTZXR0ZXIoKSAhPSBzcGVj
aWVzR2V0dGVyU2V0dGVyKCkpIHsKICAgICAgICAgaW52YWxpZGF0ZVdhdGNocG9pbnQoKTsKQEAg
LTIxODgsOCArMjE4MSw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnRyeUluc3RhbGxBcnJheVNw
ZWNpZXNXYXRjaHBvaW50KCkKICAgICBwcm90b3R5cGVTdHJ1Y3R1cmUtPnN0YXJ0V2F0Y2hpbmdQ
cm9wZXJ0eUZvclJlcGxhY2VtZW50cyh2bSwgY29uc3RydWN0b3JTbG90LmNhY2hlZE9mZnNldCgp
KTsKICAgICBjb25zdHJ1Y3RvclN0cnVjdHVyZS0+c3RhcnRXYXRjaGluZ1Byb3BlcnR5Rm9yUmVw
bGFjZW1lbnRzKHZtLCBzcGVjaWVzU2xvdC5jYWNoZWRPZmZzZXQoKSk7CiAKLSAgICBPYmplY3RQ
cm9wZXJ0eUNvbmRpdGlvbiBjb25zdHJ1Y3RvckNvbmRpdGlvbiA9IE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uOjplcXVpdmFsZW5jZSh2bSwgYXJyYXlQcm90b3R5cGUsIGFycmF5UHJvdG90eXBlLCB2
bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rvci5pbXBsKCksIGFycmF5Q29uc3RydWN0b3IpOwot
ICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIHNwZWNpZXNDb25kaXRpb24gPSBPYmplY3RQcm9w
ZXJ0eUNvbmRpdGlvbjo6ZXF1aXZhbGVuY2Uodm0sIGFycmF5UHJvdG90eXBlLCBhcnJheUNvbnN0
cnVjdG9yLCB2bS5wcm9wZXJ0eU5hbWVzLT5zcGVjaWVzU3ltYm9sLmltcGwoKSwgc3BlY2llc0dl
dHRlclNldHRlcigpKTsKKyAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25zdHJ1Y3RvckNv
bmRpdGlvbiA9IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uOjplcXVpdmFsZW5jZSh2bSwgcHJvdG90
eXBlLCBwcm90b3R5cGUsIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLmltcGwoKSwgY29u
c3RydWN0b3IpOworICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIHNwZWNpZXNDb25kaXRpb24g
PSBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbjo6ZXF1aXZhbGVuY2Uodm0sIHByb3RvdHlwZSwgY29u
c3RydWN0b3IsIHZtLnByb3BlcnR5TmFtZXMtPnNwZWNpZXNTeW1ib2wuaW1wbCgpLCBzcGVjaWVz
R2V0dGVyU2V0dGVyKCkpOwogCiAgICAgaWYgKCFjb25zdHJ1Y3RvckNvbmRpdGlvbi5pc1dhdGNo
YWJsZSgpIHx8ICFzcGVjaWVzQ29uZGl0aW9uLmlzV2F0Y2hhYmxlKCkpIHsKICAgICAgICAgaW52
YWxpZGF0ZVdhdGNocG9pbnQoKTsKQEAgLTIxOTcsMTQgKzIxOTAsMzAgQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdDo6dHJ5SW5zdGFsbEFycmF5U3BlY2llc1dhdGNocG9pbnQoKQogICAgIH0KIAogICAg
IC8vIFdlIG9ubHkgd2F0Y2ggdGhpcyBmcm9tIHRoZSBERkcsIGFuZCB0aGUgREZHIG1ha2VzIHN1
cmUgdG8gb25seSBzdGFydCB3YXRjaGluZyBpZiB0aGUgd2F0Y2hwb2ludCBpcyBpbiB0aGUgSXNX
YXRjaGVkIHN0YXRlLgotICAgIFJFTEVBU0VfQVNTRVJUKCFtX2FycmF5U3BlY2llc1dhdGNocG9p
bnRTZXQuaXNCZWluZ1dhdGNoZWQoKSk7Ci0gICAgbV9hcnJheVNwZWNpZXNXYXRjaHBvaW50U2V0
LnRvdWNoKHZtLCAiU2V0IHVwIGFycmF5IHNwZWNpZXMgd2F0Y2hwb2ludC4iKTsKKyAgICBSRUxF
QVNFX0FTU0VSVCghc3BlY2llc1dhdGNocG9pbnRTZXQuaXNCZWluZ1dhdGNoZWQoKSk7CisgICAg
c3BlY2llc1dhdGNocG9pbnRTZXQudG91Y2godm0sICJTZXQgdXAgc3BlY2llcyB3YXRjaHBvaW50
LiIpOworCisgICAgY29uc3RydWN0b3JXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9w
ZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywg
Y29uc3RydWN0b3JDb25kaXRpb24sIHNwZWNpZXNXYXRjaHBvaW50U2V0KTsKKyAgICBjb25zdHJ1
Y3RvcldhdGNocG9pbnQtPmluc3RhbGwodm0pOwogCi0gICAgbV9hcnJheVByb3RvdHlwZUNvbnN0
cnVjdG9yV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2
ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbnN0cnVjdG9yQ29uZGl0
aW9uLCBtX2FycmF5U3BlY2llc1dhdGNocG9pbnRTZXQpOwotICAgIG1fYXJyYXlQcm90b3R5cGVD
b25zdHJ1Y3RvcldhdGNocG9pbnQtPmluc3RhbGwodm0pOworICAgIHNwZWNpZXNXYXRjaHBvaW50
ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxp
bmVXYXRjaHBvaW50U2V0Pj4odGhpcywgc3BlY2llc0NvbmRpdGlvbiwgc3BlY2llc1dhdGNocG9p
bnRTZXQpOworICAgIHNwZWNpZXNXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsKK30KIAotICAgIG1f
YXJyYXlDb25zdHJ1Y3RvclNwZWNpZXNXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9w
ZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywg
c3BlY2llc0NvbmRpdGlvbiwgbV9hcnJheVNwZWNpZXNXYXRjaHBvaW50U2V0KTsKLSAgICBtX2Fy
cmF5Q29uc3RydWN0b3JTcGVjaWVzV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7Cit2b2lkIEpTR2xv
YmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJyYXlTcGVjaWVzV2F0Y2hwb2ludCgpCit7CisgICAgUkVM
RUFTRV9BU1NFUlQoIW1fYXJyYXlQcm90b3R5cGVDb25zdHJ1Y3RvcldhdGNocG9pbnQpOworICAg
IFJFTEVBU0VfQVNTRVJUKCFtX2FycmF5Q29uc3RydWN0b3JTcGVjaWVzV2F0Y2hwb2ludCk7CisK
KyAgICB0cnlJbnN0YWxsU3BlY2llc1dhdGNocG9pbnQoYXJyYXlQcm90b3R5cGUoKSwgYXJyYXlD
b25zdHJ1Y3RvcigpLCBtX2FycmF5UHJvdG90eXBlQ29uc3RydWN0b3JXYXRjaHBvaW50LCBtX2Fy
cmF5Q29uc3RydWN0b3JTcGVjaWVzV2F0Y2hwb2ludCwgbV9hcnJheVNwZWNpZXNXYXRjaHBvaW50
U2V0KTsKK30KKwordm9pZCBKU0dsb2JhbE9iamVjdDo6dHJ5SW5zdGFsbEFycmF5QnVmZmVyU3Bl
Y2llc1dhdGNocG9pbnQoQXJyYXlCdWZmZXJTaGFyaW5nTW9kZSBzaGFyaW5nTW9kZSkKK3sKKyAg
ICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHVuc2lnbmVkPihBcnJheUJ1ZmZlclNoYXJpbmdN
b2RlOjpEZWZhdWx0KSA9PSAwKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHVuc2ln
bmVkPihBcnJheUJ1ZmZlclNoYXJpbmdNb2RlOjpTaGFyZWQpID09IDEpOworICAgIHVuc2lnbmVk
IGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNoYXJpbmdNb2RlKTsKKyAgICB0cnlJbnN0
YWxsU3BlY2llc1dhdGNocG9pbnQoYXJyYXlCdWZmZXJQcm90b3R5cGUoc2hhcmluZ01vZGUpLCBh
cnJheUJ1ZmZlckNvbnN0cnVjdG9yKHNoYXJpbmdNb2RlKSwgbV9hcnJheUJ1ZmZlclByb3RvdHlw
ZUNvbnN0cnVjdG9yV2F0Y2hwb2ludHNbaW5kZXhdLCBtX2FycmF5QnVmZmVyQ29uc3RydWN0b3JT
cGVjaWVzV2F0Y2hwb2ludHNbaW5kZXhdLCBhcnJheUJ1ZmZlclNwZWNpZXNXYXRjaHBvaW50U2V0
KHNoYXJpbmdNb2RlKSk7CiB9CiAKIHZvaWQgSlNHbG9iYWxPYmplY3Q6Omluc3RhbGxOdW1iZXJQ
cm90b3R5cGVXYXRjaHBvaW50KE51bWJlclByb3RvdHlwZSogbnVtYmVyUHJvdG90eXBlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggMjNj
NjYzNzQzZmNjNGRhODJjNmI4MzY1NjdiY2QwNmY0OTE5NzMyZi4uMzNiZDM5ZDdjNzY4NjNkZjMz
YmYyMzgxYWNjYWE1ZGY2NzFjMDQ3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC00MjEsOCArNDIxLDcgQEAgY2xhc3MgSlNHbG9iYWxP
YmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgTGF6eVByb3Bl
cnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fY2FsbGFibGVQcm94eU9iamVjdFN0cnVj
dHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9wcm94
eVJldm9rZVN0cnVjdHVyZTsKICNpZiBFTkFCTEUoU0hBUkVEX0FSUkFZX0JVRkZFUikKLSAgICBX
cml0ZUJhcnJpZXI8SlNBcnJheUJ1ZmZlclByb3RvdHlwZT4gbV9zaGFyZWRBcnJheUJ1ZmZlclBy
b3RvdHlwZTsKLSAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3NoYXJlZEFycmF5QnVmZmVy
U3RydWN0dXJlOworICAgIExhenlDbGFzc1N0cnVjdHVyZSBtX3NoYXJlZEFycmF5QnVmZmVyU3Ry
dWN0dXJlOwogI2VuZGlmCiAKICNkZWZpbmUgREVGSU5FX1NUT1JBR0VfRk9SX1NJTVBMRV9UWVBF
KGNhcGl0YWxOYW1lLCBsb3dlck5hbWUsIHByb3Blck5hbWUsIGluc3RhbmNlVHlwZSwganNOYW1l
LCBwcm90b3R5cGVCYXNlLCBmZWF0dXJlRmxhZykgXApAQCAtNDg3LDkgKzQ4NiwxMCBAQCBjbGFz
cyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAg
ICBJbmxpbmVXYXRjaHBvaW50U2V0IG1fc3RyaW5nSXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnRT
ZXQ7CiAgICAgSW5saW5lV2F0Y2hwb2ludFNldCBtX21hcFNldFdhdGNocG9pbnRTZXQ7CiAgICAg
SW5saW5lV2F0Y2hwb2ludFNldCBtX3NldEFkZFdhdGNocG9pbnRTZXQ7Ci0gICAgSW5saW5lV2F0
Y2hwb2ludFNldCBtX2FycmF5U3BlY2llc1dhdGNocG9pbnRTZXQ7CisgICAgSW5saW5lV2F0Y2hw
b2ludFNldCBtX2FycmF5U3BlY2llc1dhdGNocG9pbnRTZXQgeyBDbGVhcldhdGNocG9pbnQgfTsK
ICAgICBJbmxpbmVXYXRjaHBvaW50U2V0IG1fYXJyYXlKb2luV2F0Y2hwb2ludFNldDsKICAgICBJ
bmxpbmVXYXRjaHBvaW50U2V0IG1fbnVtYmVyVG9TdHJpbmdXYXRjaHBvaW50U2V0OworICAgIElu
bGluZVdhdGNocG9pbnRTZXQgbV9hcnJheUJ1ZmZlclNwZWNpZXNXYXRjaHBvaW50U2V0c1syXSB7
IENsZWFyV2F0Y2hwb2ludCwgQ2xlYXJXYXRjaHBvaW50IH07CiAgICAgc3RkOjp1bmlxdWVfcHRy
PE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRT
ZXQ+PiBtX2FycmF5Q29uc3RydWN0b3JTcGVjaWVzV2F0Y2hwb2ludDsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hw
b2ludFNldD4+IG1fYXJyYXlQcm90b3R5cGVDb25zdHJ1Y3RvcldhdGNocG9pbnQ7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGlu
ZVdhdGNocG9pbnRTZXQ+PiBtX2FycmF5UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50
OwpAQCAtNTA0LDYgKzUwNCw4IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2Vn
bWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIHN0ZDo6dW5pcXVlX3B0cjxPYmplY3RQcm9wZXJ0
eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4gbV9tYXBQcm90
b3R5cGVTZXRXYXRjaHBvaW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxPYmplY3RQcm9wZXJ0eUNo
YW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4gbV9zZXRQcm90b3R5
cGVBZGRXYXRjaHBvaW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxPYmplY3RQcm9wZXJ0eUNoYW5n
ZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4gbV9udW1iZXJQcm90b3R5
cGVUb1N0cmluZ1dhdGNocG9pbnQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPE9iamVjdFByb3BlcnR5
Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+PiBtX2FycmF5QnVm
ZmVyQ29uc3RydWN0b3JTcGVjaWVzV2F0Y2hwb2ludHNbMl07CisgICAgc3RkOjp1bmlxdWVfcHRy
PE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRT
ZXQ+PiBtX2FycmF5QnVmZmVyUHJvdG90eXBlQ29uc3RydWN0b3JXYXRjaHBvaW50c1syXTsKIAog
cHVibGljOgogICAgIEpTQ2FsbGVlKiBzdGFja092ZXJmbG93RnJhbWVDYWxsZWUoKSBjb25zdCB7
IHJldHVybiBtX3N0YWNrT3ZlcmZsb3dGcmFtZUNhbGxlZS5nZXQoKTsgfQpAQCAtNTIxLDYgKzUy
MywxMiBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxl
T2JqZWN0IHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoT3B0aW9uczo6dXNlSklUKCkpOwogICAg
ICAgICByZXR1cm4gbV9udW1iZXJUb1N0cmluZ1dhdGNocG9pbnRTZXQ7CiAgICAgfQorICAgIElu
bGluZVdhdGNocG9pbnRTZXQmIGFycmF5QnVmZmVyU3BlY2llc1dhdGNocG9pbnRTZXQoQXJyYXlC
dWZmZXJTaGFyaW5nTW9kZSBzaGFyaW5nTW9kZSkKKyAgICB7CisgICAgICAgIHN0YXRpY19hc3Nl
cnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OkRlZmF1bHQp
ID09IDApOworICAgICAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHVuc2lnbmVkPihBcnJh
eUJ1ZmZlclNoYXJpbmdNb2RlOjpTaGFyZWQpID09IDEpOworICAgICAgICByZXR1cm4gbV9hcnJh
eUJ1ZmZlclNwZWNpZXNXYXRjaHBvaW50U2V0c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2hhcmlu
Z01vZGUpXTsKKyAgICB9CiAKICAgICBib29sIGlzQXJyYXlQcm90b3R5cGVJdGVyYXRvclByb3Rv
Y29sRmFzdEFuZE5vbk9ic2VydmFibGUoKTsKICAgICBib29sIGlzTWFwUHJvdG90eXBlSXRlcmF0
b3JQcm90b2NvbEZhc3RBbmROb25PYnNlcnZhYmxlKCk7CkBAIC04NzEsOCArODc5LDYgQEAgY2xh
c3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAg
ICAgc3RhdGljIEpTT2JqZWN0KiBjdXJyZW50U2NyaXB0RXhlY3V0aW9uT3duZXIoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbCkgeyByZXR1cm4gZ2xvYmFsOyB9CiAgICAgc3RhdGljIFNjcmlwdEV4ZWN1
dGlvblN0YXR1cyBzY3JpcHRFeGVjdXRpb25TdGF0dXMoSlNHbG9iYWxPYmplY3QqLCBKU09iamVj
dCopIHsgcmV0dXJuIFNjcmlwdEV4ZWN1dGlvblN0YXR1czo6UnVubmluZzsgfQogCi0gICAgSlNP
YmplY3QqIGFycmF5QnVmZmVyQ29uc3RydWN0b3IoKSBjb25zdCB7IHJldHVybiBtX2FycmF5QnVm
ZmVyU3RydWN0dXJlLmNvbnN0cnVjdG9yKHRoaXMpOyB9Ci0KICAgICBKU09iamVjdCogYXJyYXlC
dWZmZXJQcm90b3R5cGUoQXJyYXlCdWZmZXJTaGFyaW5nTW9kZSBzaGFyaW5nTW9kZSkgY29uc3QK
ICAgICB7CiAgICAgICAgIHN3aXRjaCAoc2hhcmluZ01vZGUpIHsKQEAgLTg4MCw3ICs4ODYsNyBA
QCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0
IHsKICAgICAgICAgICAgIHJldHVybiBtX2FycmF5QnVmZmVyU3RydWN0dXJlLnByb3RvdHlwZSh0
aGlzKTsKICNpZiBFTkFCTEUoU0hBUkVEX0FSUkFZX0JVRkZFUikKICAgICAgICAgY2FzZSBBcnJh
eUJ1ZmZlclNoYXJpbmdNb2RlOjpTaGFyZWQ6Ci0gICAgICAgICAgICByZXR1cm4gbV9zaGFyZWRB
cnJheUJ1ZmZlclByb3RvdHlwZS5nZXQoKTsKKyAgICAgICAgICAgIHJldHVybiBtX3NoYXJlZEFy
cmF5QnVmZmVyU3RydWN0dXJlLnByb3RvdHlwZSh0aGlzKTsKICNlbHNlCiAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICByZXR1cm4gbV9hcnJheUJ1ZmZlclN0cnVjdHVyZS5wcm90b3R5cGUo
dGhpcyk7CkBAIC04OTQsNyArOTAwLDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMg
SlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgICAgICAgICByZXR1cm4gbV9hcnJheUJ1
ZmZlclN0cnVjdHVyZS5nZXQodGhpcyk7CiAjaWYgRU5BQkxFKFNIQVJFRF9BUlJBWV9CVUZGRVIp
CiAgICAgICAgIGNhc2UgQXJyYXlCdWZmZXJTaGFyaW5nTW9kZTo6U2hhcmVkOgotICAgICAgICAg
ICAgcmV0dXJuIG1fc2hhcmVkQXJyYXlCdWZmZXJTdHJ1Y3R1cmUuZ2V0KCk7CisgICAgICAgICAg
ICByZXR1cm4gbV9zaGFyZWRBcnJheUJ1ZmZlclN0cnVjdHVyZS5nZXQodGhpcyk7CiAjZWxzZQog
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIG1fYXJyYXlCdWZmZXJTdHJ1Y3R1
cmUuZ2V0KHRoaXMpOwpAQCAtOTAzLDYgKzkwOSwyMSBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6
IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQorICAgIEpT
T2JqZWN0KiBhcnJheUJ1ZmZlckNvbnN0cnVjdG9yKEFycmF5QnVmZmVyU2hhcmluZ01vZGUgc2hh
cmluZ01vZGUpIGNvbnN0CisgICAgeworICAgICAgICBzd2l0Y2ggKHNoYXJpbmdNb2RlKSB7Cisg
ICAgICAgIGNhc2UgQXJyYXlCdWZmZXJTaGFyaW5nTW9kZTo6RGVmYXVsdDoKKyAgICAgICAgICAg
IHJldHVybiBtX2FycmF5QnVmZmVyU3RydWN0dXJlLmNvbnN0cnVjdG9yKHRoaXMpOworI2lmIEVO
QUJMRShTSEFSRURfQVJSQVlfQlVGRkVSKQorICAgICAgICBjYXNlIEFycmF5QnVmZmVyU2hhcmlu
Z01vZGU6OlNoYXJlZDoKKyAgICAgICAgICAgIHJldHVybiBtX3NoYXJlZEFycmF5QnVmZmVyU3Ry
dWN0dXJlLmNvbnN0cnVjdG9yKHRoaXMpOworI2Vsc2UKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIHJldHVybiBtX2FycmF5QnVmZmVyU3RydWN0dXJlLnByb3RvdHlwZSh0aGlzKTsKKyNl
bmRpZgorICAgICAgICB9CisgICAgfQorCiAKICNkZWZpbmUgREVGSU5FX0FDQ0VTU09SU19GT1Jf
U0lNUExFX1RZUEUoY2FwaXRhbE5hbWUsIGxvd2VyTmFtZSwgcHJvcGVyTmFtZSwgaW5zdGFuY2VU
eXBlLCBqc05hbWUsIHByb3RvdHlwZUJhc2UsIGZlYXR1cmVGbGFnKSBcCiAgICAgU3RydWN0dXJl
KiBwcm9wZXJOYW1lICMjIFN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fICMjIHByb3Blck5hbWUgIyMg
U3RydWN0dXJlLmdldCgpOyB9CkBAIC0xMDc4LDggKzEwOTksMTEgQEAgY2xhc3MgSlNHbG9iYWxP
YmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgdm9pZCBpbnN0
YWxsTnVtYmVyUHJvdG90eXBlV2F0Y2hwb2ludChOdW1iZXJQcm90b3R5cGUqKTsKICAgICB2b2lk
IGluc3RhbGxNYXBQcm90b3R5cGVXYXRjaHBvaW50KE1hcFByb3RvdHlwZSopOwogICAgIHZvaWQg
aW5zdGFsbFNldFByb3RvdHlwZVdhdGNocG9pbnQoU2V0UHJvdG90eXBlKik7CisgICAgdm9pZCB0
cnlJbnN0YWxsQXJyYXlCdWZmZXJTcGVjaWVzV2F0Y2hwb2ludChBcnJheUJ1ZmZlclNoYXJpbmdN
b2RlKTsKIAogcHJvdGVjdGVkOgorICAgIHZvaWQgdHJ5SW5zdGFsbFNwZWNpZXNXYXRjaHBvaW50
KEpTT2JqZWN0KiBwcm90b3R5cGUsIEpTT2JqZWN0KiBjb25zdHJ1Y3Rvciwgc3RkOjp1bmlxdWVf
cHRyPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9p
bnRTZXQ+PiYgY29uc3RydWN0b3JXYXRjaHBvaW50LCBzdGQ6OnVuaXF1ZV9wdHI8T2JqZWN0UHJv
cGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+JiBzcGVj
aWVzV2F0Y2hwb2ludCwgSW5saW5lV2F0Y2hwb2ludFNldCYgc3BlY2llc1dhdGNocG9pbnRTZXQp
OworCiAgICAgc3RydWN0IEdsb2JhbFByb3BlcnR5SW5mbyB7CiAgICAgICAgIEdsb2JhbFByb3Bl
cnR5SW5mbyhjb25zdCBJZGVudGlmaWVyJiBpLCBKU1ZhbHVlIHYsIHVuc2lnbmVkIGEpCiAgICAg
ICAgICAgICA6IGlkZW50aWZpZXIoaSkKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIv
SlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYjY2OWE0ZTY1ZTQ0YWY5ZmYzYzkzYmM1YmFlMTQ4MDhj
YzdmN2FhNi4uMGY1NmE0ZDJjYzJhNDc3Mzc1NTAxNTAzY2U1ZWNhMzYyN2UxMWI0NSAxMDA2NDQK
LS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMiBAQAorMjAyMC0xMS0wOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgor
CisgICAgICAgIFtKU0NdIFN1cHBvcnQgQEBzcGVjaWVzIGluIEFycmF5QnVmZmVyIC8gU2hhcmVk
QXJyYXlCdWZmZXIgc2xpY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxODY5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbDoKKwogMjAyMC0xMS0wNiAgRG1p
dHJ5IEJlemhldHNrb3YgIDxkYmV6aGV0c2tvdkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXQVNN
LVJlZmVyZW5jZXNdIFJlbmFtZSBhbnlyZWYgdG8gZXh0ZXJucmVmCmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwgYi9KU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRp
b25zLnlhbWwKaW5kZXggOTU0NDMxNGJiMGVhNGVmNjFkY2NjYWNiZWYzYTNmYmZkNjc5NzhjOC4u
ZjU5NWQyZWFkYWE0MDE4ZTQ2YzM2NjhmYzVkNDUwMWE5Mzg3NDQ4YSAxMDA2NDQKLS0tIGEvSlNU
ZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCisrKyBiL0pTVGVzdHMvdGVzdDI2Mi9leHBl
Y3RhdGlvbnMueWFtbApAQCAtNjAzLDMwICs2MDMsNiBAQCB0ZXN0L2FubmV4Qi9sYW5ndWFnZS9n
bG9iYWwtY29kZS9zd2l0Y2gtZGZsdC1nbG9iYWwtc2tpcC1lYXJseS1lcnItdHJ5LmpzOgogICBk
ZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBBbiBpbml0aWFsaXplZCBiaW5kaW5nIGlzIG5vdCBjcmVh
dGVkIHByaW9yIHRvIGV2YWx1YXRpb24gRXhwZWN0ZWQgYSBSZWZlcmVuY2VFcnJvciB0byBiZSB0
aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKIHRlc3QvYW5uZXhCL2xh
bmd1YWdlL2dsb2JhbC1jb2RlL3N3aXRjaC1kZmx0LWdsb2JhbC1za2lwLWVhcmx5LWVyci5qczoK
ICAgZGVmYXVsdDogIlN5bnRheEVycm9yOiBDYW5ub3QgZGVjbGFyZSBhIGZ1bmN0aW9uIHRoYXQg
c2hhZG93cyBhIGxldC9jb25zdC9jbGFzcy9mdW5jdGlvbiB2YXJpYWJsZSAnZicgaW4gc3RyaWN0
IG1vZGUuIgotdGVzdC9idWlsdC1pbnMvQXJyYXlCdWZmZXIvcHJvdG90eXBlL3NsaWNlL3NwZWNp
ZXMtY29uc3RydWN0b3ItaXMtbm90LW9iamVjdC5qczoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJv
cjogYGNvbnN0cnVjdG9yYCB2YWx1ZSBpcyBudWxsIEV4cGVjdGVkIGEgVHlwZUVycm9yIHRvIGJl
IHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJwotICBzdHJpY3QgbW9k
ZTogJ1Rlc3QyNjJFcnJvcjogYGNvbnN0cnVjdG9yYCB2YWx1ZSBpcyBudWxsIEV4cGVjdGVkIGEg
VHlwZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxs
JwotdGVzdC9idWlsdC1pbnMvQXJyYXlCdWZmZXIvcHJvdG90eXBlL3NsaWNlL3NwZWNpZXMtaXMt
bm90LWNvbnN0cnVjdG9yLmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBgY29uc3RydWN0
b3JbU3ltYm9sLnNwZWNpZXNdYCB2YWx1ZSBpcyBPYmplY3QgRXhwZWN0ZWQgYSBUeXBlRXJyb3Ig
dG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCi0gIHN0cmlj
dCBtb2RlOiAnVGVzdDI2MkVycm9yOiBgY29uc3RydWN0b3JbU3ltYm9sLnNwZWNpZXNdYCB2YWx1
ZSBpcyBPYmplY3QgRXhwZWN0ZWQgYSBUeXBlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNl
cHRpb24gd2FzIHRocm93biBhdCBhbGwnCi10ZXN0L2J1aWx0LWlucy9BcnJheUJ1ZmZlci9wcm90
b3R5cGUvc2xpY2Uvc3BlY2llcy1pcy1ub3Qtb2JqZWN0LmpzOgotICBkZWZhdWx0OiAnVGVzdDI2
MkVycm9yOiBgY29uc3RydWN0b3JbU3ltYm9sLnNwZWNpZXNdYCB2YWx1ZSBpcyBCb29sZWFuIEV4
cGVjdGVkIGEgVHlwZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJv
d24gYXQgYWxsJwotICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogYGNvbnN0cnVjdG9yW1N5
bWJvbC5zcGVjaWVzXWAgdmFsdWUgaXMgQm9vbGVhbiBFeHBlY3RlZCBhIFR5cGVFcnJvciB0byBi
ZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKLXRlc3QvYnVpbHQt
aW5zL0FycmF5QnVmZmVyL3Byb3RvdHlwZS9zbGljZS9zcGVjaWVzLXJldHVybnMtbGFyZ2VyLWFy
cmF5YnVmZmVyLmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFs
dWUowqs4wrssIMKrMTDCuykgdG8gYmUgdHJ1ZScKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJy
b3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzjCuywgwqsxMMK7KSB0byBiZSB0cnVlJwotdGVzdC9i
dWlsdC1pbnMvQXJyYXlCdWZmZXIvcHJvdG90eXBlL3NsaWNlL3NwZWNpZXMtcmV0dXJucy1ub3Qt
YXJyYXlidWZmZXIuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIGEgVHlw
ZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJwot
ICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgYSBUeXBlRXJyb3IgdG8gYmUg
dGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCi10ZXN0L2J1aWx0LWlu
cy9BcnJheUJ1ZmZlci9wcm90b3R5cGUvc2xpY2Uvc3BlY2llcy1yZXR1cm5zLXNhbWUtYXJyYXli
dWZmZXIuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIGEgVHlwZUVycm9y
IHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJwotICBzdHJp
Y3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgYSBUeXBlRXJyb3IgdG8gYmUgdGhyb3du
IGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCi10ZXN0L2J1aWx0LWlucy9BcnJh
eUJ1ZmZlci9wcm90b3R5cGUvc2xpY2Uvc3BlY2llcy1yZXR1cm5zLXNtYWxsZXItYXJyYXlidWZm
ZXIuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIGEgVHlwZUVycm9yIHRv
IGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJwotICBzdHJpY3Qg
bW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgYSBUeXBlRXJyb3IgdG8gYmUgdGhyb3duIGJ1
dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCi10ZXN0L2J1aWx0LWlucy9BcnJheUJ1
ZmZlci9wcm90b3R5cGUvc2xpY2Uvc3BlY2llcy5qczoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJv
cjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrW29iamVjdCBBcnJheUJ1ZmZlcl3Cuywgwqt1bmRlZmlu
ZWTCuykgdG8gYmUgdHJ1ZScKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVk
IFNhbWVWYWx1ZSjCq1tvYmplY3QgQXJyYXlCdWZmZXJdwrssIMKrdW5kZWZpbmVkwrspIHRvIGJl
IHRydWUnCiB0ZXN0L2J1aWx0LWlucy9EYXRlL1VUQy9mcC1ldmFsdWF0aW9uLW9yZGVyLmpzOgog
ICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBvcmRlciBvZiBvcGVyYXRpb25zIC8gcHJlY2lzaW9u
IGluIE1ha2VUaW1lIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq05hTsK7LCDCqzI5MzEywrspIHRvIGJl
IHRydWUnCiAgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBvcmRlciBvZiBvcGVyYXRpb25z
IC8gcHJlY2lzaW9uIGluIE1ha2VUaW1lIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq05hTsK7LCDCqzI5
MzEywrspIHRvIGJlIHRydWUnCkBAIC04NDcsMzAgKzgyMyw2IEBAIHRlc3QvYnVpbHQtaW5zL1Jl
Z0V4cC9wcm90b3R5cGUvZXhlYy91LWxhc3RpbmRleC1hZHYuanM6CiB0ZXN0L2J1aWx0LWlucy9S
ZWdFeHAvcXVhbnRpZmllci1pbnRlZ2VyLWxpbWl0LmpzOgogICBkZWZhdWx0OiAnU3ludGF4RXJy
b3I6IEludmFsaWQgcmVndWxhciBleHByZXNzaW9uOiBudW1iZXIgdG9vIGxhcmdlIGluIHt9IHF1
YW50aWZpZXInCiAgIHN0cmljdCBtb2RlOiAnU3ludGF4RXJyb3I6IEludmFsaWQgcmVndWxhciBl
eHByZXNzaW9uOiBudW1iZXIgdG9vIGxhcmdlIGluIHt9IHF1YW50aWZpZXInCi10ZXN0L2J1aWx0
LWlucy9TaGFyZWRBcnJheUJ1ZmZlci9wcm90b3R5cGUvc2xpY2Uvc3BlY2llcy1jb25zdHJ1Y3Rv
ci1pcy1ub3Qtb2JqZWN0LmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBgY29uc3RydWN0
b3JgIHZhbHVlIGlzIG51bGwgRXhwZWN0ZWQgYSBUeXBlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBu
byBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVy
cm9yOiBgY29uc3RydWN0b3JgIHZhbHVlIGlzIG51bGwgRXhwZWN0ZWQgYSBUeXBlRXJyb3IgdG8g
YmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCi10ZXN0L2J1aWx0
LWlucy9TaGFyZWRBcnJheUJ1ZmZlci9wcm90b3R5cGUvc2xpY2Uvc3BlY2llcy1pcy1ub3QtY29u
c3RydWN0b3IuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IGBjb25zdHJ1Y3RvcltTeW1i
b2wuc3BlY2llc11gIHZhbHVlIGlzIE9iamVjdCBFeHBlY3RlZCBhIFR5cGVFcnJvciB0byBiZSB0
aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKLSAgc3RyaWN0IG1vZGU6
ICdUZXN0MjYyRXJyb3I6IGBjb25zdHJ1Y3RvcltTeW1ib2wuc3BlY2llc11gIHZhbHVlIGlzIE9i
amVjdCBFeHBlY3RlZCBhIFR5cGVFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3
YXMgdGhyb3duIGF0IGFsbCcKLXRlc3QvYnVpbHQtaW5zL1NoYXJlZEFycmF5QnVmZmVyL3Byb3Rv
dHlwZS9zbGljZS9zcGVjaWVzLWlzLW5vdC1vYmplY3QuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYy
RXJyb3I6IGBjb25zdHJ1Y3RvcltTeW1ib2wuc3BlY2llc11gIHZhbHVlIGlzIEJvb2xlYW4gRXhw
ZWN0ZWQgYSBUeXBlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93
biBhdCBhbGwnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBgY29uc3RydWN0b3JbU3lt
Ym9sLnNwZWNpZXNdYCB2YWx1ZSBpcyBCb29sZWFuIEV4cGVjdGVkIGEgVHlwZUVycm9yIHRvIGJl
IHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJwotdGVzdC9idWlsdC1p
bnMvU2hhcmVkQXJyYXlCdWZmZXIvcHJvdG90eXBlL3NsaWNlL3NwZWNpZXMtcmV0dXJucy1sYXJn
ZXItYXJyYXlidWZmZXIuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNh
bWVWYWx1ZSjCqzjCuywgwqsxMMK7KSB0byBiZSB0cnVlJwotICBzdHJpY3QgbW9kZTogJ1Rlc3Qy
NjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrOMK7LCDCqzEwwrspIHRvIGJlIHRydWUnCi10
ZXN0L2J1aWx0LWlucy9TaGFyZWRBcnJheUJ1ZmZlci9wcm90b3R5cGUvc2xpY2Uvc3BlY2llcy1y
ZXR1cm5zLW5vdC1hcnJheWJ1ZmZlci5qczoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhw
ZWN0ZWQgYSBUeXBlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93
biBhdCBhbGwnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBhIFR5cGVF
cnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKLXRl
c3QvYnVpbHQtaW5zL1NoYXJlZEFycmF5QnVmZmVyL3Byb3RvdHlwZS9zbGljZS9zcGVjaWVzLXJl
dHVybnMtc2FtZS1hcnJheWJ1ZmZlci5qczoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhw
ZWN0ZWQgYSBUeXBlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93
biBhdCBhbGwnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBhIFR5cGVF
cnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKLXRl
c3QvYnVpbHQtaW5zL1NoYXJlZEFycmF5QnVmZmVyL3Byb3RvdHlwZS9zbGljZS9zcGVjaWVzLXJl
dHVybnMtc21hbGxlci1hcnJheWJ1ZmZlci5qczoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjog
RXhwZWN0ZWQgYSBUeXBlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRo
cm93biBhdCBhbGwnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBhIFR5
cGVFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcK
LXRlc3QvYnVpbHQtaW5zL1NoYXJlZEFycmF5QnVmZmVyL3Byb3RvdHlwZS9zbGljZS9zcGVjaWVz
LmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqtbb2Jq
ZWN0IFNoYXJlZEFycmF5QnVmZmVyXcK7LCDCq3VuZGVmaW5lZMK7KSB0byBiZSB0cnVlJwotICBz
dHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrW29iamVjdCBT
aGFyZWRBcnJheUJ1ZmZlcl3Cuywgwqt1bmRlZmluZWTCuykgdG8gYmUgdHJ1ZScKIHRlc3QvYnVp
bHQtaW5zL1R5cGVkQXJyYXkvcHJvdG90eXBlL2V2ZXJ5L2NhbGxiYWNrZm4tZGV0YWNoYnVmZmVy
LmpzOgogICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBhIFR5cGVFcnJvciBidXQg
Z290IGEgVGVzdDI2MkVycm9yIChUZXN0aW5nIHdpdGggRmxvYXQ2NEFycmF5LiknCiAgIHN0cmlj
dCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBhIFR5cGVFcnJvciBidXQgZ290IGEgVGVz
dDI2MkVycm9yIChUZXN0aW5nIHdpdGggRmxvYXQ2NEFycmF5LiknCkBAIC0yNzQ1LDkgKzI2OTcs
NiBAQCB0ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvY2xhc3MvbWV0aG9kL2ZvcmJpZGRlbi1leHQv
YjIvY2xzLWRlY2wtbWV0aC1mb3JiaWRkZW4tZQogICBkZWZhdWx0OiAnVHlwZUVycm9yOiBGdW5j
dGlvbi5jYWxsZXIgdXNlZCB0byByZXRyaWV2ZSBzdHJpY3QgY2FsbGVyJwogdGVzdC9sYW5ndWFn
ZS9zdGF0ZW1lbnRzL2NsYXNzL21ldGhvZC9mb3JiaWRkZW4tZXh0L2IyL2Nscy1kZWNsLW1ldGgt
Zm9yYmlkZGVuLWV4dC1pbmRpcmVjdC1hY2Nlc3MtcHJvcC1jYWxsZXIuanM6CiAgIGRlZmF1bHQ6
ICdUeXBlRXJyb3I6IEZ1bmN0aW9uLmNhbGxlciB1c2VkIHRvIHJldHJpZXZlIHN0cmljdCBjYWxs
ZXInCi10ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvY2xhc3Mvc3ViY2xhc3MvYnVpbHRpbi1vYmpl
Y3RzL0FycmF5QnVmZmVyL3JlZ3VsYXItc3ViY2xhc3NpbmcuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0
MjYyRXJyb3I6IEV4cGVjdGVkIHRydWUgYnV0IGdvdCBmYWxzZScKLSAgc3RyaWN0IG1vZGU6ICdU
ZXN0MjYyRXJyb3I6IEV4cGVjdGVkIHRydWUgYnV0IGdvdCBmYWxzZScKIHRlc3QvbGFuZ3VhZ2Uv
c3RhdGVtZW50cy9jb25zdC9kc3RyL2FyeS1pbml0LWl0ZXItZ2V0LWVyci1hcnJheS1wcm90b3R5
cGUuanM6CiAgIGRlZmF1bHQ6ICdUeXBlRXJyb3I6IFNwcmVhZCBzeW50YXggcmVxdWlyZXMgLi4u
aXRlcmFibGVbU3ltYm9sLml0ZXJhdG9yXSB0byBiZSBhIGZ1bmN0aW9uJwogICBzdHJpY3QgbW9k
ZTogJ1R5cGVFcnJvcjogU3ByZWFkIHN5bnRheCByZXF1aXJlcyAuLi5pdGVyYWJsZVtTeW1ib2wu
aXRlcmF0b3JdIHRvIGJlIGEgZnVuY3Rpb24nCg==
</data>
<flag name="commit-queue"
          id="430184"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413552</attachid>
            <date>2020-11-08 18:37:40 -0800</date>
            <delta_ts>2020-11-08 19:01:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218697-20201108183739.patch</filename>
            <type>text/plain</type>
            <size>45725</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
OTg4ZjgyOWQzYzRkODU0N2YyZWYzM2EyNDEyZWQ4YWY5MTk4NzY4Li42NzVmNjlkZDVjMTFjMDVk
YWIzZWY5YWVmNzY5OTQ3NTZkNzI3MzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MCBAQAorMjAyMC0xMS0wOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFN1cHBvcnQgQEBzcGVjaWVzIGluIEFycmF5QnVmZmVyIC8gU2hh
cmVkQXJyYXlCdWZmZXIgc2xpY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxODY5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBAQHNwZWNpZXMgaW4gQXJy
YXlCdWZmZXIvU2hhcmVkQXJyYXlCdWZmZXIucHJvdG90eXBlLnNsaWNlLgorICAgICAgICBXZSBs
ZXZlcmFnZSB0aGUgbWVjaGFuaXNtIHNpbWlsYXIgdG8gQXJyYXkncyBAQHNwZWNpZXMgaGFuZGxp
bmc6IGFkZGluZyBmYXN0IHBhdGggd2l0aCB3YXRjaHBvaW50LgorICAgICAgICBXaGVuIHdlIGZv
dW5kIHRoYXQgc29tZSBvZiBjcml0aWNhbCBwcm9wZXJ0aWVzIChlLmcuICVQcm90b3R5cGUlLmNv
bnN0cnVjdG9yLCAlQ29uc3RydWN0b3IlW0BAc3BlY2llc10pCisgICAgICAgIGFyZSBtb2RpZmll
ZCwgd2F0Y2hwb2ludCBpcyBmaXJlZCBhbmQgd2UgZ28gdG8gdGhlIHNsb3cgcGF0aC4gVW50aWwg
dGhhdCwgd2UgdXNlIGZhc3QgcGF0aCB0aGF0IGlzCisgICAgICAgIGJhc2ljYWxseSB0aGUgc2Ft
ZSB0byB0aGUgY29kZSBiZWZvcmUgdGhpcyBwYXRjaC4KKworICAgICAgICAqIHJ1bnRpbWUvQXJy
YXlCdWZmZXIuY3BwOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6c2xpY2UgY29uc3QpOgor
ICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6c2xpY2VXaXRoQ2xhbXBlZEluZGV4IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnNsaWNlSW1wbCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlci5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlC
dWZmZXJTaGFyaW5nTW9kZS5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjpzcGVjaWVzV2F0Y2hwb2ludElzVmFsaWQpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnNwZWNpZXNX
YXRjaHBvaW50SXNWYWxpZCk6CisgICAgICAgIChKU0M6OmFycmF5QnVmZmVyU2xpY2UpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6SlNHbG9iYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnRyeUluc3RhbGxTcGVjaWVzV2F0Y2hwb2ludCk6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJyYXlTcGVjaWVzV2F0
Y2hwb2ludCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJyYXlC
dWZmZXJTcGVjaWVzV2F0Y2hwb2ludCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXJyYXlCdWZmZXJTcGVjaWVzV2F0
Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphcnJheUJ1ZmZlclBy
b3RvdHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphcnJheUJ1ZmZl
clN0cnVjdHVyZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphcnJheUJ1
ZmZlckNvbnN0cnVjdG9yIGNvbnN0KToKKwogMjAyMC0xMS0wNiAgRG1pdHJ5IEJlemhldHNrb3Yg
IDxkYmV6aGV0c2tvdkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXQVNNLVJlZmVyZW5jZXNdIFJl
bmFtZSBhbnlyZWYgdG8gZXh0ZXJucmVmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDcwYzdkNjAxNDAyNjQxYTA4MTkwZTczN2Fi
MWEwZWRlNTA4NzZmNTIuLjk1ZWIxZTU0MmNjMjFhOTUwMTg3YTZjYjIyZDU2YzdhYTlhNWQwOTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMTEtMDggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtp
QGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBTdXBwb3J0IEBAc3BlY2llcyBpbiBBcnJheUJ1
ZmZlciAvIFNoYXJlZEFycmF5QnVmZmVyIHNsaWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg2OTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgRU5BQkxFKFNIQVJFRF9BUlJBWV9CVUZGRVIp
IGZsYWcuIFdlIHVzZSBPcHRpb25zOjp1c2VTaGFyZWRBcnJheUJ1ZmZlcigpIHJ1bnRpbWUgZmxh
ZyBpbnN0ZWFkLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxlLmg6CisKIDIwMjAtMTEt
MDYgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIEZ1cnRoZXIgcHJv
Z3Jlc3MgdG93YXJkcyBtZXJnaW5nIFNldHRpbmdzLnlhbWwgaW50byBXZWJQcmVmZXJlbmNlcy55
YW1sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKaW5k
ZXggMGExODZjMmVkNTA3MDE1NTIzMjExZTI5YWMyMGM1MzYwM2M1ZTAxZC4uYzliOGYyYTcxOTFl
M2FjNzIwZDg5ZGZlMDQ2YTYxNTg5ZjNmNDBjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcApAQCAtMzExLDE1ICszMTEsMTUgQEAgdW5zaWduZWQg
QXJyYXlCdWZmZXI6OmNsYW1wSW5kZXgoZG91YmxlIGluZGV4KSBjb25zdAogCiBSZWZQdHI8QXJy
YXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZShkb3VibGUgYmVnaW4sIGRvdWJsZSBlbmQpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIHNsaWNlSW1wbChjbGFtcEluZGV4KGJlZ2luKSwgY2xhbXBJbmRl
eChlbmQpKTsKKyAgICByZXR1cm4gc2xpY2VXaXRoQ2xhbXBlZEluZGV4KGNsYW1wSW5kZXgoYmVn
aW4pLCBjbGFtcEluZGV4KGVuZCkpOwogfQogCiBSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVm
ZmVyOjpzbGljZShkb3VibGUgYmVnaW4pIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHNsaWNlSW1wbChj
bGFtcEluZGV4KGJlZ2luKSwgYnl0ZUxlbmd0aCgpKTsKKyAgICByZXR1cm4gc2xpY2VXaXRoQ2xh
bXBlZEluZGV4KGNsYW1wSW5kZXgoYmVnaW4pLCBieXRlTGVuZ3RoKCkpOwogfQogCi1SZWZQdHI8
QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZUltcGwodW5zaWduZWQgYmVnaW4sIHVuc2ln
bmVkIGVuZCkgY29uc3QKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlV2l0
aENsYW1wZWRJbmRleCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdAogewogICAg
IHVuc2lnbmVkIHNpemUgPSBiZWdpbiA8PSBlbmQgPyBlbmQgLSBiZWdpbiA6IDA7CiAgICAgYXV0
byByZXN1bHQgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIq
PihkYXRhKCkpICsgYmVnaW4sIHNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5QnVmZmVyLmgKaW5kZXggOTZhNGE0Yzc3MTBiNmUyMzdmY2QxN2U4MmQ1ZmY4NjIzNzM2
NDc1Mi4uNjhmZjkwZTEzZWJhM2MyZjdiY2ZhNjkyNzA1ZmQ3Zjc1N2RkNTI2YSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCkBAIC0xMzcsNiArMTM3LDcg
QEAgY2xhc3MgQXJyYXlCdWZmZXIgOiBwdWJsaWMgR0NJbmNvbWluZ1JlZkNvdW50ZWQ8QXJyYXlC
dWZmZXI+IHsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xp
Y2UoZG91YmxlIGJlZ2luLCBkb3VibGUgZW5kKSBjb25zdDsKICAgICBKU19FWFBPUlRfUFJJVkFU
RSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlKGRvdWJsZSBiZWdpbikgY29uc3Q7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgUmVmUHRyPEFycmF5QnVmZmVyPiBzbGljZVdpdGhDbGFtcGVkSW5kZXgo
dW5zaWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3Q7CiAgICAgCiAgICAgaW5saW5lIHZv
aWQgcGluKCk7CiAgICAgaW5saW5lIHZvaWQgdW5waW4oKTsKQEAgLTE2NCw3ICsxNjUsNiBAQCBj
bGFzcyBBcnJheUJ1ZmZlciA6IHB1YmxpYyBHQ0luY29taW5nUmVmQ291bnRlZDxBcnJheUJ1ZmZl
cj4gewogICAgIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUludGVybmFsKEFycmF5QnVm
ZmVyQ29udGVudHMmJiwgY29uc3Qgdm9pZCosIHVuc2lnbmVkKTsKICAgICBzdGF0aWMgUmVmUHRy
PEFycmF5QnVmZmVyPiB0cnlDcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVs
ZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kp
OwogICAgIEFycmF5QnVmZmVyKEFycmF5QnVmZmVyQ29udGVudHMmJik7Ci0gICAgUmVmUHRyPEFy
cmF5QnVmZmVyPiBzbGljZUltcGwodW5zaWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3Q7
CiAgICAgaW5saW5lIHVuc2lnbmVkIGNsYW1wSW5kZXgoZG91YmxlIGluZGV4KSBjb25zdDsKICAg
ICBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNsYW1wVmFsdWUoZG91YmxlIHgsIHVuc2lnbmVkIGxl
ZnQsIHVuc2lnbmVkIHJpZ2h0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlCdWZmZXJTaGFyaW5nTW9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlCdWZmZXJTaGFyaW5nTW9kZS5oCmluZGV4IDYzMGVkM2RkNDJmYzhlOWMw
OGY2NjI4Zjg5NmRkODQyNmI3NTFjYjEuLmUzMGQzZDNjNmYzYjAwMjE4ZjA1MWQzNWRhYjBmOGU0
Njk0MmU0NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
QnVmZmVyU2hhcmluZ01vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUJ1ZmZlclNoYXJpbmdNb2RlLmgKQEAgLTMxLDcgKzMxLDcgQEAKIG5hbWVzcGFjZSBKU0Mg
ewogCiBlbnVtIGNsYXNzIEFycmF5QnVmZmVyU2hhcmluZ01vZGUgewotICAgIERlZmF1bHQsCisg
ICAgRGVmYXVsdCA9IDAsCiAgICAgU2hhcmVkCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKaW5kZXggZGJlZWViOGE3Mzc4NmYzNjNi
NDFlZThhMGRjZWE4NzIyYmY4NWYzNi4uYmZmZmM4N2JmNGFjODhjYjQ0YTQwOTJjZTc0YTkzODNh
Nzc5Mjk5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQ
cm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJv
dG90eXBlLmNwcApAQCAtMTg2LDcgKzE4Niw3IEBAIG5hbWVzcGFjZSBBcnJheVByb3RvdHlwZUlu
dGVybmFsIHsKIHN0YXRpYyBib29sIHZlcmJvc2UgPSBmYWxzZTsKIH0KIAotQUxXQVlTX0lOTElO
RSBib29sIHNwZWNpZXNXYXRjaHBvaW50SXNWYWxpZChWTSYgdm0sIEpTT2JqZWN0KiB0aGlzT2Jq
ZWN0KQorc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBzcGVjaWVzV2F0Y2hwb2ludElzVmFsaWQo
Vk0mIHZtLCBKU09iamVjdCogdGhpc09iamVjdCkKIHsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KHZtKTsKICAgICBBcnJheVByb3Rv
dHlwZSogYXJyYXlQcm90b3R5cGUgPSBnbG9iYWxPYmplY3QtPmFycmF5UHJvdG90eXBlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJv
dG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQ
cm90b3R5cGUuY3BwCmluZGV4IDcwZjMxN2Y4ZTY1OWQxZDE1YjRiYjdhNzQ4NmZmZjNmODk3NTUz
NTYuLjQwODUwYzgwMjVhNTU3ODQ4NDM2MGEyY2RjY2QzYjY4MmFiZDBmYWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5
cGUuY3BwCkBAIC0zMCw0OCArMzAsMTk2IEBACiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogCiBu
YW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBKU0FycmF5QnVmZmVyUHJvdG90eXBlSW50ZXJuYWwg
eworc3RhdGljIGNvbnN0ZXhwciBib29sIHZlcmJvc2UgPSBmYWxzZTsKK307CiAKIHN0YXRpYyBK
U0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGFycmF5QnVmZmVyUHJvdG9GdW5jU2xpY2UpOwogc3Rh
dGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oYXJyYXlCdWZmZXJQcm90b0dldHRlckZ1bmNC
eXRlTGVuZ3RoKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHNoYXJlZEFycmF5
QnVmZmVyUHJvdG9GdW5jU2xpY2UpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04o
c2hhcmVkQXJyYXlCdWZmZXJQcm90b0dldHRlckZ1bmNCeXRlTGVuZ3RoKTsKIAorCitzdGF0aWMg
QUxXQVlTX0lOTElORSBib29sIHNwZWNpZXNXYXRjaHBvaW50SXNWYWxpZChWTSYgdm0sIEpTT2Jq
ZWN0KiB0aGlzT2JqZWN0LCBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlIG1vZGUpCit7CisgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCh2bSk7
CisgICAgYXV0byogcHJvdG90eXBlID0gZ2xvYmFsT2JqZWN0LT5hcnJheUJ1ZmZlclByb3RvdHlw
ZShtb2RlKTsKKworICAgIGlmIChnbG9iYWxPYmplY3QtPmFycmF5QnVmZmVyU3BlY2llc1dhdGNo
cG9pbnRTZXQobW9kZSkuc3RhdGVPbkpTVGhyZWFkKCkgPT0gQ2xlYXJXYXRjaHBvaW50KSB7Cisg
ICAgICAgIGRhdGFMb2dMbklmKEpTQXJyYXlCdWZmZXJQcm90b3R5cGVJbnRlcm5hbDo6dmVyYm9z
ZSwgIkluaXRpYWxpemluZyBBcnJheUJ1ZmZlciBzcGVjaWVzIHdhdGNocG9pbnRzIGZvciBBcnJh
eUJ1ZmZlci5wcm90b3R5cGU6ICIsIHBvaW50ZXJEdW1wKHByb3RvdHlwZSksICIgd2l0aCBzdHJ1
Y3R1cmU6ICIsIHBvaW50ZXJEdW1wKHByb3RvdHlwZS0+c3RydWN0dXJlKHZtKSksICJcbmFuZCBB
cnJheUJ1ZmZlcjogIiwgcG9pbnRlckR1bXAoZ2xvYmFsT2JqZWN0LT5hcnJheUJ1ZmZlckNvbnN0
cnVjdG9yKG1vZGUpKSwgIiB3aXRoIHN0cnVjdHVyZTogIiwgcG9pbnRlckR1bXAoZ2xvYmFsT2Jq
ZWN0LT5hcnJheUJ1ZmZlckNvbnN0cnVjdG9yKG1vZGUpLT5zdHJ1Y3R1cmUodm0pKSk7CisgICAg
ICAgIGdsb2JhbE9iamVjdC0+dHJ5SW5zdGFsbEFycmF5QnVmZmVyU3BlY2llc1dhdGNocG9pbnQo
bW9kZSk7CisgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QtPmFycmF5QnVmZmVyU3BlY2llc1dh
dGNocG9pbnRTZXQobW9kZSkuc3RhdGVPbkpTVGhyZWFkKCkgIT0gQ2xlYXJXYXRjaHBvaW50KTsK
KyAgICB9CisKKyAgICByZXR1cm4gIXRoaXNPYmplY3QtPmhhc0N1c3RvbVByb3BlcnRpZXModm0p
CisgICAgICAgICYmIHByb3RvdHlwZSA9PSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qo
dm0pCisgICAgICAgICYmIGdsb2JhbE9iamVjdC0+YXJyYXlCdWZmZXJTcGVjaWVzV2F0Y2hwb2lu
dFNldChtb2RlKS5zdGF0ZU9uSlNUaHJlYWQoKSA9PSBJc1dhdGNoZWQ7Cit9CisKK2VudW0gY2xh
c3MgU3BlY2llc0NvbnN0cnVjdFJlc3VsdCB7CisgICAgRmFzdFBhdGgsCisgICAgRXhjZXB0aW9u
LAorICAgIENyZWF0ZWRPYmplY3QKK307CisKK3N0YXRpYyBBTFdBWVNfSU5MSU5FIHN0ZDo6cGFp
cjxTcGVjaWVzQ29uc3RydWN0UmVzdWx0LCBKU0FycmF5QnVmZmVyKj4gc3BlY2llc0NvbnN0cnVj
dEFycmF5QnVmZmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQXJyYXlCdWZmZXIq
IHRoaXNPYmplY3QsIHVuc2lnbmVkIGxlbmd0aCwgQXJyYXlCdWZmZXJTaGFyaW5nTW9kZSBtb2Rl
KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvIGV4Y2VwdGlvblJlc3VsdCA9IFtd
ICgpIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKFNwZWNpZXNDb25zdHJ1Y3RSZXN1
bHQ6OkV4Y2VwdGlvbiwgbnVsbHB0cik7CisgICAgfTsKKworICAgIC8vIEZhc3QgcGF0aCBpbiB0
aGUgbm9ybWFsIGNhc2Ugd2hlcmUgdGhlIHVzZXIgaGFzIG5vdCBzZXQgYW4gb3duIGNvbnN0cnVj
dG9yIGFuZCB0aGUgQXJyYXlCdWZmZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yIGlzIG5vcm1hbC4K
KyAgICAvLyBXZSBuZWVkIHByb3RvdHlwZSBjaGVjayBmb3Igc3ViY2xhc3NlcyBvZiBBcnJheUJ1
ZmZlciwgd2hpY2ggYXJlIEFycmF5QnVmZmVyIG9iamVjdHMgYnV0IGhhdmUgYSBkaWZmZXJlbnQg
cHJvdG90eXBlIGJ5IGRlZmF1bHQuCisgICAgYm9vbCBpc1ZhbGlkID0gc3BlY2llc1dhdGNocG9p
bnRJc1ZhbGlkKHZtLCB0aGlzT2JqZWN0LCBtb2RlKTsKKyAgICBzY29wZS5hc3NlcnROb0V4Y2Vw
dGlvbigpOworICAgIGlmIChMSUtFTFkoaXNWYWxpZCkpCisgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfcGFpcihTcGVjaWVzQ29uc3RydWN0UmVzdWx0OjpGYXN0UGF0aCwgbnVsbHB0cik7CisKKyAg
ICBKU1ZhbHVlIGNvbnN0cnVjdG9yID0gdGhpc09iamVjdC0+Z2V0KGdsb2JhbE9iamVjdCwgdm0u
cHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGV4Y2VwdGlvblJlc3VsdCgpKTsKKyAgICBpZiAoY29uc3RydWN0b3IuaXNDb25zdHJ1Y3Rv
cih2bSkpIHsKKyAgICAgICAgSlNPYmplY3QqIGNvbnN0cnVjdG9yT2JqZWN0ID0ganNDYXN0PEpT
T2JqZWN0Kj4oY29uc3RydWN0b3IpOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0RnJvbUNvbnN0cnVjdG9yID0gY29uc3RydWN0b3JPYmplY3QtPmdsb2JhbE9iamVjdCh2bSk7
CisgICAgICAgIGJvb2wgaXNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yRnJvbUFub3RoZXJSZWFsbSA9
IGdsb2JhbE9iamVjdCAhPSBnbG9iYWxPYmplY3RGcm9tQ29uc3RydWN0b3IKKyAgICAgICAgICAg
ICYmIGNvbnN0cnVjdG9yT2JqZWN0ID09IGdsb2JhbE9iamVjdEZyb21Db25zdHJ1Y3Rvci0+YXJy
YXlCdWZmZXJDb25zdHJ1Y3Rvcihtb2RlKTsKKyAgICAgICAgaWYgKGlzQXJyYXlCdWZmZXJDb25z
dHJ1Y3RvckZyb21Bbm90aGVyUmVhbG0pCisgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Bh
aXIoU3BlY2llc0NvbnN0cnVjdFJlc3VsdDo6RmFzdFBhdGgsIG51bGxwdHIpOworICAgIH0KKyAg
ICBpZiAoY29uc3RydWN0b3IuaXNPYmplY3QoKSkgeworICAgICAgICBjb25zdHJ1Y3RvciA9IGNv
bnN0cnVjdG9yLmdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnNwZWNpZXNTeW1i
b2wpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBleGNlcHRpb25SZXN1bHQo
KSk7CisgICAgICAgIGlmIChjb25zdHJ1Y3Rvci5pc051bGwoKSkKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfcGFpcihTcGVjaWVzQ29uc3RydWN0UmVzdWx0OjpGYXN0UGF0aCwgbnVsbHB0
cik7CisgICAgfQorCisgICAgaWYgKGNvbnN0cnVjdG9yLmlzVW5kZWZpbmVkKCkpCisgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfcGFpcihTcGVjaWVzQ29uc3RydWN0UmVzdWx0OjpGYXN0UGF0aCwg
bnVsbHB0cik7CisKKyAgICAvLyAxNi4gTGV0IG5ldyBiZSA/IENvbnN0cnVjdChjdG9yLCDCqyDw
nZS9KG5ld0xlbikgwrspLgorICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CisgICAgYXJn
cy5hcHBlbmQoanNOdW1iZXIobGVuZ3RoKSk7CisgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93
ZWQoKSk7CisgICAgSlNPYmplY3QqIG5ld09iamVjdCA9IGNvbnN0cnVjdChnbG9iYWxPYmplY3Qs
IGNvbnN0cnVjdG9yLCBhcmdzLCAiU3BlY2llcyBjb25zdHJ1Y3Rpb24gZGlkIG5vdCBnZXQgYSB2
YWxpZCBjb25zdHJ1Y3RvciIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGV4Y2Vw
dGlvblJlc3VsdCgpKTsKKworICAgIC8vIDE3LiBQZXJmb3JtID8gUmVxdWlyZUludGVybmFsU2xv
dChuZXcsIFtbQXJyYXlCdWZmZXJEYXRhXV0pLgorICAgIEpTQXJyYXlCdWZmZXIqIHJlc3VsdCA9
IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KHZtLCBuZXdPYmplY3QpOworICAgIGlmIChV
TkxJS0VMWSghcmVzdWx0KSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiU3BlY2llcyBjb25zdHJ1Y3Rpb24gZG9lcyBub3QgY3JlYXRlIEFycmF5QnVmZmVy
Il9zKTsKKyAgICAgICAgcmV0dXJuIGV4Y2VwdGlvblJlc3VsdCgpOworICAgIH0KKworICAgIGlm
IChtb2RlID09IEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OkRlZmF1bHQpIHsKKyAgICAgICAgLy8g
MTguIElmIElzU2hhcmVkQXJyYXlCdWZmZXIobmV3KSBpcyB0cnVlLCB0aHJvdyBhIFR5cGVFcnJv
ciBleGNlcHRpb24uCisgICAgICAgIGlmIChyZXN1bHQtPmlzU2hhcmVkKCkpIHsKKyAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJBcnJheUJ1ZmZlci5wcm90
b3R5cGUuc2xpY2UgY3JlYXRlcyBTaGFyZWRBcnJheUJ1ZmZlciJfcyk7CisgICAgICAgICAgICBy
ZXR1cm4gZXhjZXB0aW9uUmVzdWx0KCk7CisgICAgICAgIH0KKyAgICAgICAgLy8gMTkuIElmIElz
RGV0YWNoZWRCdWZmZXIobmV3KSBpcyB0cnVlLCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24u
CisgICAgICAgIGlmIChyZXN1bHQtPmltcGwoKS0+aXNEZXRhY2hlZCgpKSB7CisgICAgICAgICAg
ICB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDcmVhdGVkIEFycmF5QnVm
ZmVyIGlzIGRldGFjaGVkIl9zKTsKKyAgICAgICAgICAgIHJldHVybiBleGNlcHRpb25SZXN1bHQo
KTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIC8vIDE3LiBJZiBJc1NoYXJlZEFy
cmF5QnVmZmVyKG5ldykgaXMgZmFsc2UsIHRocm93IGEgVHlwZUVycm9yIGV4Y2VwdGlvbi4KKyAg
ICAgICAgaWYgKCFyZXN1bHQtPmlzU2hhcmVkKCkpIHsKKyAgICAgICAgICAgIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJTaGFyZWRBcnJheUJ1ZmZlci5wcm90b3R5cGUuc2xp
Y2UgY3JlYXRlcyBub24tc2hhcmVkIEFycmF5QnVmZmVyIl9zKTsKKyAgICAgICAgICAgIHJldHVy
biBleGNlcHRpb25SZXN1bHQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIDIwLiBJZiBT
YW1lVmFsdWUobmV3LCBPKSBpcyB0cnVlLCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCisg
ICAgaWYgKHJlc3VsdCA9PSB0aGlzT2JqZWN0KSB7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlNwZWNpZXMgY29uc3RydWN0aW9uIHJldHVybnMgc2FtZSBB
cnJheUJ1ZmZlciB0byBhIHJlY2VpdmVyIl9zKTsKKyAgICAgICAgcmV0dXJuIGV4Y2VwdGlvblJl
c3VsdCgpOworICAgIH0KKworICAgIC8vIDIxLiBJZiBuZXcuW1tBcnJheUJ1ZmZlckJ5dGVMZW5n
dGhdXSA8IG5ld0xlbiwgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uLgorICAgIGlmIChyZXN1
bHQtPmltcGwoKS0+Ynl0ZUxlbmd0aCgpIDwgbGVuZ3RoKSB7CisgICAgICAgIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlNwZWNpZXMgY29uc3RydWN0aW9uIHJldHVybnMg
QXJyYXlCdWZmZXIgd2hpY2ggYnl0ZUxlbmd0aCBpcyBsZXNzIHRoYW4gcmVxdWVzdGVkIl9zKTsK
KyAgICAgICAgcmV0dXJuIGV4Y2VwdGlvblJlc3VsdCgpOworICAgIH0KKworICAgIHJldHVybiBz
dGQ6Om1ha2VfcGFpcihTcGVjaWVzQ29uc3RydWN0UmVzdWx0OjpDcmVhdGVkT2JqZWN0LCByZXN1
bHQpOworfQorCisKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBhcnJheUJ1ZmZlclNsaWNlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYXJyYXlCdWZmZXJWYWx1ZSwgSlNWYWx1
ZSBzdGFydFZhbHVlLCBKU1ZhbHVlIGVuZFZhbHVlLCBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlIG1v
ZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAorICAgIC8vIDIuIFBlcmZvcm0gPyBSZXF1aXJl
SW50ZXJuYWxTbG90KE8sIFtbQXJyYXlCdWZmZXJEYXRhXV0pLgorICAgIC8vIDMuIElmIElzU2hh
cmVkQXJyYXlCdWZmZXIoTykgaXMgdHJ1ZSwgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uLgog
ICAgIEpTQXJyYXlCdWZmZXIqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZm
ZXIqPih2bSwgYXJyYXlCdWZmZXJWYWx1ZSk7CiAgICAgaWYgKCF0aGlzT2JqZWN0IHx8IChtb2Rl
ICE9IHRoaXNPYmplY3QtPmltcGwoKS0+c2hhcmluZ01vZGUoKSkpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIG1ha2VTdHJpbmcoIlJlY2VpdmVy
IG11c3QgYmUgIl9zLCBtb2RlID09IEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OkRlZmF1bHQgPyAi
QXJyYXlCdWZmZXIiX3MgOiAiU2hhcmVkQXJyYXlCdWZmZXIiX3MpKTsKIAorICAgIC8vIDQuIElm
IElzRGV0YWNoZWRCdWZmZXIoTykgaXMgdHJ1ZSwgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9u
LgogICAgIGlmIChtb2RlID09IEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OkRlZmF1bHQgJiYgdGhp
c09iamVjdC0+aW1wbCgpLT5pc0RldGFjaGVkKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZlciBpcyBkZXRhY2hlZCJfcyk7CiAK
LSAgICBkb3VibGUgYmVnaW4gPSBzdGFydFZhbHVlLnRvSW50ZWdlck9ySW5maW5pdHkoZ2xvYmFs
T2JqZWN0KTsKKyAgICAvLyA1LiBMZXQgbGVuIGJlIE8uW1tBcnJheUJ1ZmZlckJ5dGVMZW5ndGhd
XS4KKyAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gdGhpc09iamVjdC0+aW1wbCgpLT5ieXRlTGVu
Z3RoKCk7CisgICAgdW5zaWduZWQgZmlyc3RJbmRleCA9IDA7CisgICAgZG91YmxlIHJlbGF0aXZl
U3RhcnQgPSBzdGFydFZhbHVlLnRvSW50ZWdlck9ySW5maW5pdHkoZ2xvYmFsT2JqZWN0KTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBpZiAo
cmVsYXRpdmVTdGFydCA8IDApCisgICAgICAgIGZpcnN0SW5kZXggPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oc3RkOjptYXg8ZG91YmxlPihieXRlTGVuZ3RoICsgcmVsYXRpdmVTdGFydCwgMCkpOwor
ICAgIGVsc2UKKyAgICAgICAgZmlyc3RJbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGQ6
Om1pbjxkb3VibGU+KHJlbGF0aXZlU3RhcnQsIGJ5dGVMZW5ndGgpKTsKKyAgICBBU1NFUlQoZmly
c3RJbmRleCA+PSAwKTsKKyAgICBBU1NFUlQoZmlyc3RJbmRleCA8PSBieXRlTGVuZ3RoKTsKIAot
ICAgIGRvdWJsZSBlbmQ7CisgICAgdW5zaWduZWQgZmluYWxJbmRleCA9IDA7CiAgICAgaWYgKCFl
bmRWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIGVuZCA9IGVuZFZhbHVlLnRvSW50ZWdl
ck9ySW5maW5pdHkoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgZG91YmxlIHJlbGF0aXZlRW5kID0g
ZW5kVmFsdWUudG9JbnRlZ2VyT3JJbmZpbml0eShnbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICAgICAgaWYgKHJl
bGF0aXZlRW5kIDwgMCkKKyAgICAgICAgICAgIGZpbmFsSW5kZXggPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oc3RkOjptYXg8ZG91YmxlPihieXRlTGVuZ3RoICsgcmVsYXRpdmVFbmQsIDApKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgZmluYWxJbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihzdGQ6Om1pbjxkb3VibGU+KHJlbGF0aXZlRW5kLCBieXRlTGVuZ3RoKSk7CiAgICAgfSBlbHNl
Ci0gICAgICAgIGVuZCA9IHRoaXNPYmplY3QtPmltcGwoKS0+Ynl0ZUxlbmd0aCgpOworICAgICAg
ICBmaW5hbEluZGV4ID0gdGhpc09iamVjdC0+aW1wbCgpLT5ieXRlTGVuZ3RoKCk7CisgICAgQVNT
RVJUKGZpbmFsSW5kZXggPj0gMCk7CisgICAgQVNTRVJUKGZpbmFsSW5kZXggPD0gYnl0ZUxlbmd0
aCk7CisKKyAgICAvLyAxNC4gTGV0IG5ld0xlbiBiZSBtYXgoZmluYWwgLSBmaXJzdCwgMCkuCisg
ICAgdW5zaWduZWQgbmV3TGVuZ3RoID0gKGZpbmFsSW5kZXggPj0gZmlyc3RJbmRleCkgPyBmaW5h
bEluZGV4IC0gZmlyc3RJbmRleCA6IDA7CisKKyAgICAvLyAxNS4gTGV0IGN0b3IgYmUgPyBTcGVj
aWVzQ29uc3RydWN0b3IoTywgJUFycmF5QnVmZmVyJSkuCisgICAgYXV0byBzcGVjaWVzUmVzdWx0
ID0gc3BlY2llc0NvbnN0cnVjdEFycmF5QnVmZmVyKGdsb2JhbE9iamVjdCwgdGhpc09iamVjdCwg
bmV3TGVuZ3RoLCBtb2RlKTsKKyAgICAvLyBXZSBjYW4gb25seSBnZXQgYW4gZXhjZXB0aW9uIGlm
IHdlIGNhbGwgc29tZSB1c2VyIGZ1bmN0aW9uLgorICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29w
ZS5leGNlcHRpb24oKSA9PSAoc3BlY2llc1Jlc3VsdC5maXJzdCA9PSBTcGVjaWVzQ29uc3RydWN0
UmVzdWx0OjpFeGNlcHRpb24pKTsKKyAgICBpZiAoVU5MSUtFTFkoc3BlY2llc1Jlc3VsdC5maXJz
dCA9PSBTcGVjaWVzQ29uc3RydWN0UmVzdWx0OjpFeGNlcHRpb24pKQorICAgICAgICByZXR1cm4g
eyB9OwogCiAgICAgLy8gMjMuIElmIElzRGV0YWNoZWRCdWZmZXIoTykgaXMgdHJ1ZSwgdGhyb3cg
YSBUeXBlRXJyb3IgZXhjZXB0aW9uLgotICAgIC8vIENoZWNrIGRldGFjaCBzdGF0dXMgYWdhaW4g
c2luY2UgdG9JbnRlZ2VyT3JJbmZpbml0eSBjYW4gaGF2ZSBzaWRlIGVmZmVjdC4KICAgICBpZiAo
bW9kZSA9PSBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlOjpEZWZhdWx0ICYmIHRoaXNPYmplY3QtPmlt
cGwoKS0+aXNEZXRhY2hlZCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIgaXMgZGV0YWNoZWQiX3MpOwogCi0gICAgYXV0byBu
ZXdCdWZmZXIgPSB0aGlzT2JqZWN0LT5pbXBsKCktPnNsaWNlKGJlZ2luLCBlbmQpOwotICAgIGlm
ICghbmV3QnVmZmVyKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZN
ZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKSk7Ci0KLSAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IGdsb2JhbE9iamVjdC0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUobmV3QnVmZmVyLT5zaGFy
aW5nTW9kZSgpKTsKLQotICAgIEpTQXJyYXlCdWZmZXIqIHJlc3VsdCA9IEpTQXJyYXlCdWZmZXI6
OmNyZWF0ZSh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKG5ld0J1ZmZlcikpOworICAgIGlmIChMSUtF
TFkoc3BlY2llc1Jlc3VsdC5maXJzdCA9PSBTcGVjaWVzQ29uc3RydWN0UmVzdWx0OjpGYXN0UGF0
aCkpIHsKKyAgICAgICAgQVNTRVJUKCF0aGlzT2JqZWN0LT5pbXBsKCktPmlzRGV0YWNoZWQoKSk7
CisgICAgICAgIGF1dG8gbmV3QnVmZmVyID0gdGhpc09iamVjdC0+aW1wbCgpLT5zbGljZVdpdGhD
bGFtcGVkSW5kZXgoZmlyc3RJbmRleCwgZmluYWxJbmRleCk7CisgICAgICAgIGlmICghbmV3QnVm
ZmVyKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd091dE9mTWVtb3J5
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSkpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IGdsb2JhbE9iamVjdC0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUobmV3QnVmZmVyLT5zaGFyaW5n
TW9kZSgpKTsKKyAgICAgICAgSlNBcnJheUJ1ZmZlciogcmVzdWx0ID0gSlNBcnJheUJ1ZmZlcjo6
Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUobmV3QnVmZmVyKSk7CisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAgICB9CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7CisgICAgLy8gMjQuIExldCBmcm9tQnVmIGJlIE8uW1tBcnJheUJ1ZmZl
ckRhdGFdXS4KKyAgICAvLyAyNS4gTGV0IHRvQnVmIGJlIG5ldy5bW0FycmF5QnVmZmVyRGF0YV1d
LgorICAgIC8vIDI2LiBQZXJmb3JtIENvcHlEYXRhQmxvY2tCeXRlcyh0b0J1ZiwgMCwgZnJvbUJ1
ZiwgZmlyc3QsIG5ld0xlbikuCisgICAgSlNBcnJheUJ1ZmZlciogbmV3T2JqZWN0ID0gc3BlY2ll
c1Jlc3VsdC5zZWNvbmQ7CisgICAgQVNTRVJUKCF0aGlzT2JqZWN0LT5pbXBsKCktPmlzRGV0YWNo
ZWQoKSk7CisgICAgQVNTRVJUKCFuZXdPYmplY3QtPmltcGwoKS0+aXNEZXRhY2hlZCgpKTsKKyAg
ICBBU1NFUlQobmV3T2JqZWN0LT5pbXBsKCktPmJ5dGVMZW5ndGgoKSA+PSBuZXdMZW5ndGgpOwor
ICAgIG1lbWNweShuZXdPYmplY3QtPmltcGwoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDxjb25zdCBj
aGFyKj4odGhpc09iamVjdC0+aW1wbCgpLT5kYXRhKCkpICsgZmlyc3RJbmRleCwgbmV3TGVuZ3Ro
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG5ld09iamVjdCk7CiB9CiAKIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBhcnJheUJ1ZmZlckJ5dGVMZW5ndGgoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBhcnJheUJ1ZmZlclZhbHVlLCBBcnJheUJ1ZmZlclNoYXJpbmdNb2Rl
IG1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKaW5kZXggYjVjNWYxNDcwODg2MTI2OGYwOTQxOWViNTJkY2Y1OTc5NDY3ZjRiOS4uYWQ3
NGNkNjJlMzAwNDZkMTY3YWUzNzZiNjg1YzMyODQzYjdiZTMwMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNDk5LDcgKzQ5OSw2
IEBAIEpTR2xvYmFsT2JqZWN0OjpKU0dsb2JhbE9iamVjdChWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBjb25zdCBHbG9iYWxPYmplY3RNCiAgICAgLCBtX3N0cmluZ0l0ZXJhdG9yUHJvdG9j
b2xXYXRjaHBvaW50U2V0KElzV2F0Y2hlZCkKICAgICAsIG1fbWFwU2V0V2F0Y2hwb2ludFNldChJ
c1dhdGNoZWQpCiAgICAgLCBtX3NldEFkZFdhdGNocG9pbnRTZXQoSXNXYXRjaGVkKQotICAgICwg
bV9hcnJheVNwZWNpZXNXYXRjaHBvaW50U2V0KENsZWFyV2F0Y2hwb2ludCkKICAgICAsIG1fYXJy
YXlKb2luV2F0Y2hwb2ludFNldChJc1dhdGNoZWQpCiAgICAgLCBtX251bWJlclRvU3RyaW5nV2F0
Y2hwb2ludFNldChJc1dhdGNoZWQpCiAgICAgLCBtX3J1bnRpbWVGbGFncygpCkBAIC04MzAsMTIg
KzgyOSwxNCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICAgICAgICAg
IGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBpbml0Lm93bmVyLCAxLCBpbml0
LnZtLnByb3BlcnR5TmFtZXMtPnBhcnNlRmxvYXQuc3RyaW5nKCksIGdsb2JhbEZ1bmNQYXJzZUZs
b2F0LCBOb0ludHJpbnNpYykpOwogICAgICAgICB9KTsKIAotI2lmIEVOQUJMRShTSEFSRURfQVJS
QVlfQlVGRkVSKQogICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRBcnJheUJ1ZmZlcigpKSB7Ci0g
ICAgICAgIG1fc2hhcmVkQXJyYXlCdWZmZXJQcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBKU0FycmF5
QnVmZmVyUHJvdG90eXBlOjpjcmVhdGUodm0sIHRoaXMsIEpTQXJyYXlCdWZmZXJQcm90b3R5cGU6
OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpLCBBcnJh
eUJ1ZmZlclNoYXJpbmdNb2RlOjpTaGFyZWQpKTsKLSAgICAgICAgbV9zaGFyZWRBcnJheUJ1ZmZl
clN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTQXJyYXlCdWZmZXI6OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgdGhpcywgbV9zaGFyZWRBcnJheUJ1ZmZlclByb3RvdHlwZS5nZXQoKSkpOworICAgICAgICBt
X3NoYXJlZEFycmF5QnVmZmVyU3RydWN0dXJlLmluaXRMYXRlcigKKyAgICAgICAgICAgIFtdIChM
YXp5Q2xhc3NTdHJ1Y3R1cmU6OkluaXRpYWxpemVyJiBpbml0KSB7CisgICAgICAgICAgICAgICAg
aW5pdC5zZXRQcm90b3R5cGUoSlNBcnJheUJ1ZmZlclByb3RvdHlwZTo6Y3JlYXRlKGluaXQudm0s
IGluaXQuZ2xvYmFsLCBKU0FycmF5QnVmZmVyUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5p
dC52bSwgaW5pdC5nbG9iYWwsIGluaXQuZ2xvYmFsLT5tX29iamVjdFByb3RvdHlwZS5nZXQoKSks
IEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OlNoYXJlZCkpOworICAgICAgICAgICAgICAgIGluaXQu
c2V0U3RydWN0dXJlKEpTQXJyYXlCdWZmZXI6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBpbml0
Lmdsb2JhbCwgaW5pdC5wcm90b3R5cGUpKTsKKyAgICAgICAgICAgICAgICBpbml0LnNldENvbnN0
cnVjdG9yKEpTU2hhcmVkQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGluaXQudm0sIEpT
U2hhcmVkQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGlu
aXQuZ2xvYmFsLCBpbml0Lmdsb2JhbC0+bV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIGpzQ2Fz
dDxKU0FycmF5QnVmZmVyUHJvdG90eXBlKj4oaW5pdC5wcm90b3R5cGUpLCBpbml0Lmdsb2JhbC0+
bV9zcGVjaWVzR2V0dGVyU2V0dGVyLmdldCgpKSk7CisgICAgICAgICAgICB9KTsKICAgICB9Ci0j
ZW5kaWYKIAogICAgIG1faXRlcmF0b3JQcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBJdGVyYXRvclBy
b3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0
dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpKTsKICAgICBtX2FzeW5jSXRl
cmF0b3JQcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBBc3luY0l0ZXJhdG9yUHJvdG90eXBlOjpjcmVh
dGUodm0sIHRoaXMsIEFzeW5jSXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwg
dGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7CkBAIC05MDAsMTYgKzkwMSw5IEBAIHZv
aWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIG1fbGlua1RpbWVDb25zdGFudHNb
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OlJlZ0V4cCldLnNldCh2bSwg
dGhpcywgcmVnRXhwQ29uc3RydWN0b3IpOwogICAgIG1fcmVnRXhwR2xvYmFsRGF0YS5jYWNoZWRS
ZXN1bHQoKS5yZWNvcmQodm0sIHRoaXMsIG51bGxwdHIsIGpzRW1wdHlTdHJpbmcodm0pLCBNYXRj
aFJlc3VsdCgwLCAwKSk7CiAgICAgCi0jaWYgRU5BQkxFKFNIQVJFRF9BUlJBWV9CVUZGRVIpCi0g
ICAgSlNTaGFyZWRBcnJheUJ1ZmZlckNvbnN0cnVjdG9yKiBzaGFyZWRBcnJheUJ1ZmZlckNvbnN0
cnVjdG9yID0gbnVsbHB0cjsKICAgICBBdG9taWNzT2JqZWN0KiBhdG9taWNzT2JqZWN0ID0gbnVs
bHB0cjsKLSAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkQXJyYXlCdWZmZXIoKSkgewotICAgICAg
ICBzaGFyZWRBcnJheUJ1ZmZlckNvbnN0cnVjdG9yID0gSlNTaGFyZWRBcnJheUJ1ZmZlckNvbnN0
cnVjdG9yOjpjcmVhdGUodm0sIEpTU2hhcmVkQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRl
U3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9zaGFyZWRB
cnJheUJ1ZmZlclByb3RvdHlwZS5nZXQoKSwgbV9zcGVjaWVzR2V0dGVyU2V0dGVyLmdldCgpKTsK
LSAgICAgICAgbV9zaGFyZWRBcnJheUJ1ZmZlclByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBzaGFyZWRBcnJheUJ1
ZmZlckNvbnN0cnVjdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSk7Ci0KKyAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkQXJyYXlCdWZmZXIoKSkK
ICAgICAgICAgYXRvbWljc09iamVjdCA9IEF0b21pY3NPYmplY3Q6OmNyZWF0ZSh2bSwgdGhpcywg
QXRvbWljc09iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlw
ZS5nZXQoKSkpOwotICAgIH0KLSNlbmRpZgogCiAjZGVmaW5lIENSRUFURV9DT05TVFJVQ1RPUl9G
T1JfU0lNUExFX1RZUEUoY2FwaXRhbE5hbWUsIGxvd2VyTmFtZSwgcHJvcGVyTmFtZSwgaW5zdGFu
Y2VUeXBlLCBqc05hbWUsIHByb3RvdHlwZUJhc2UsIGZlYXR1cmVGbGFnKSBcCiBjYXBpdGFsTmFt
ZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcg
PyBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBjYXBpdGFsTmFtZSAjIyBD
b25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBl
LmdldCgpKSwgbV8gIyMgbG93ZXJOYW1lICMjIFByb3RvdHlwZS5nZXQoKSwgbV9zcGVjaWVzR2V0
dGVyU2V0dGVyLmdldCgpKSA6IG51bGxwdHI7IFwKQEAgLTk4NywxMiArOTgxLDEwIEBAIGNhcGl0
YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJl
RmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZt
LnByb3BlcnR5TmFtZXMtPkFycmF5LCBhcnJheUNvbnN0cnVjdG9yLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPlJlZ0V4cCwgcmVnRXhwQ29uc3RydWN0
b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsK
IAotI2lmIEVOQUJMRShTSEFSRURfQVJSQVlfQlVGRkVSKQogICAgIGlmIChPcHRpb25zOjp1c2VT
aGFyZWRBcnJheUJ1ZmZlcigpKSB7Ci0gICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5TaGFyZWRBcnJheUJ1ZmZlciwgc2hhcmVkQXJyYXlCdWZm
ZXJDb25zdHJ1Y3Rvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSkpOworICAgICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+U2hhcmVkQXJyYXlCdWZmZXIsIG1fc2hhcmVkQXJyYXlCdWZmZXJTdHJ1Y3R1
cmUuY29uc3RydWN0b3IodGhpcyksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pKTsKICAgICAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPkF0b21pY3MsIGF0b21pY3NPYmplY3QsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICB9Ci0jZW5kaWYKIAog
I2RlZmluZSBQVVRfQ09OU1RSVUNUT1JfRk9SX1NJTVBMRV9UWVBFKGNhcGl0YWxOYW1lLCBsb3dl
ck5hbWUsIHByb3Blck5hbWUsIGluc3RhbmNlVHlwZSwganNOYW1lLCBwcm90b3R5cGVCYXNlLCBm
ZWF0dXJlRmxhZykgXAogICAgIGlmIChmZWF0dXJlRmxhZykgXApAQCAtMjAzMywxNCArMjAyNSwx
MCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdGhpc09iamVjdC0+bV9wcm94eU9iamVjdFN0cnVjdHVy
ZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2NhbGxhYmxlUHJveHlPYmplY3RT
dHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9wcm94eVJldm9rZVN0
cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKKyAgICB0aGlzT2JqZWN0LT5tX3NoYXJlZEFycmF5QnVm
ZmVyU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogCiAgICAgZm9yIChhdXRvJiBwcm9wZXJ0eSA6
IHRoaXNPYmplY3QtPm1fbGlua1RpbWVDb25zdGFudHMpCiAgICAgICAgIHByb3BlcnR5LnZpc2l0
KHZpc2l0b3IpOwotICAgIAotI2lmIEVOQUJMRShTSEFSRURfQVJSQVlfQlVGRkVSKQotICAgIHZp
c2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fc2hhcmVkQXJyYXlCdWZmZXJQcm90b3R5cGUpOwot
ICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fc2hhcmVkQXJyYXlCdWZmZXJTdHJ1Y3R1
cmUpOwotI2VuZGlmCiAKICNkZWZpbmUgVklTSVRfU0lNUExFX1RZUEUoQ2FwaXRhbE5hbWUsIGxv
d2VyTmFtZSwgcHJvcGVyTmFtZSwgaW5zdGFuY2VUeXBlLCBqc05hbWUsIHByb3RvdHlwZUJhc2Us
IGZlYXR1cmVGbGFnKSBpZiAoZmVhdHVyZUZsYWcpIHsgXAogICAgICAgICB2aXNpdG9yLmFwcGVu
ZCh0aGlzT2JqZWN0LT5tXyAjIyBsb3dlck5hbWUgIyMgUHJvdG90eXBlKTsgXApAQCAtMjEzNiw0
OCArMjEyNCw0NSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpjbGVhclJhcmVEYXRhKEpTQ2VsbCog
Y2VsbCkKICAgICBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihjZWxsKS0+bV9yYXJlRGF0YSA9IG51
bGxwdHI7CiB9CiAKLXZvaWQgSlNHbG9iYWxPYmplY3Q6OnRyeUluc3RhbGxBcnJheVNwZWNpZXNX
YXRjaHBvaW50KCkKK3ZvaWQgSlNHbG9iYWxPYmplY3Q6OnRyeUluc3RhbGxTcGVjaWVzV2F0Y2hw
b2ludChKU09iamVjdCogcHJvdG90eXBlLCBKU09iamVjdCogY29uc3RydWN0b3IsIHN0ZDo6dW5p
cXVlX3B0cjxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRj
aHBvaW50U2V0Pj4mIGNvbnN0cnVjdG9yV2F0Y2hwb2ludCwgc3RkOjp1bmlxdWVfcHRyPE9iamVj
dFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+PiYg
c3BlY2llc1dhdGNocG9pbnQsIElubGluZVdhdGNocG9pbnRTZXQmIHNwZWNpZXNXYXRjaHBvaW50
U2V0KQogewotICAgIFJFTEVBU0VfQVNTRVJUKCFtX2FycmF5UHJvdG90eXBlQ29uc3RydWN0b3JX
YXRjaHBvaW50KTsKLSAgICBSRUxFQVNFX0FTU0VSVCghbV9hcnJheUNvbnN0cnVjdG9yU3BlY2ll
c1dhdGNocG9pbnQpOworICAgIFJFTEVBU0VfQVNTRVJUKCFjb25zdHJ1Y3RvcldhdGNocG9pbnQp
OworICAgIFJFTEVBU0VfQVNTRVJUKCFzcGVjaWVzV2F0Y2hwb2ludCk7CiAKICAgICBWTSYgdm0g
PSB0aGlzLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IAotICAgIC8vIEZpcnN0IHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIEFycmF5LnByb3Rv
dHlwZS5jb25zdHJ1Y3RvciBwcm9wZXJ0eSBwb2ludHMgdG8gQXJyYXkKLSAgICAvLyBhbmQgdGhh
dCBBcnJheVtTeW1ib2wuc3BlY2llc10gaXMgdGhlIHByaW1vcmRpYWwgR2V0dGVyU2V0dGVyLgot
ICAgIEFycmF5UHJvdG90eXBlKiBhcnJheVByb3RvdHlwZSA9IHRoaXMtPmFycmF5UHJvdG90eXBl
KCk7CisgICAgLy8gRmlyc3Qgd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgJXByb3RvdHlw
ZSUuY29uc3RydWN0b3IgcHJvcGVydHkgcG9pbnRzIHRvIGEgJWNvbnN0cnVjdG9yJQorICAgIC8v
IGFuZCB0aGF0ICVjb25zdHJ1Y3RvciVbU3ltYm9sLnNwZWNpZXNdIGlzIHRoZSBwcmltb3JkaWFs
IEdldHRlclNldHRlci4KIAogICAgIC8vIFdlIG9ubHkgaW5pdGlhbGl6ZSBvbmNlIHNvIGZsYXR0
ZW5pbmcgdGhlIHN0cnVjdHVyZXMgZG9lcyBub3QgaGF2ZSBhbnkgcmVhbCBjb3N0LgotICAgIFN0
cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlID0gYXJyYXlQcm90b3R5cGUtPnN0cnVjdHVyZSh2
bSk7CisgICAgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUgPSBwcm90b3R5cGUtPnN0cnVj
dHVyZSh2bSk7CiAgICAgaWYgKHByb3RvdHlwZVN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpCi0g
ICAgICAgIHByb3RvdHlwZVN0cnVjdHVyZSA9IHByb3RvdHlwZVN0cnVjdHVyZS0+ZmxhdHRlbkRp
Y3Rpb25hcnlTdHJ1Y3R1cmUodm0sIGFycmF5UHJvdG90eXBlKTsKKyAgICAgICAgcHJvdG90eXBl
U3RydWN0dXJlID0gcHJvdG90eXBlU3RydWN0dXJlLT5mbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVy
ZSh2bSwgcHJvdG90eXBlKTsKICAgICBSRUxFQVNFX0FTU0VSVCghcHJvdG90eXBlU3RydWN0dXJl
LT5pc0RpY3Rpb25hcnkoKSk7CiAKLSAgICBBcnJheUNvbnN0cnVjdG9yKiBhcnJheUNvbnN0cnVj
dG9yID0gdGhpcy0+YXJyYXlDb25zdHJ1Y3RvcigpOwotCiAgICAgYXV0byBpbnZhbGlkYXRlV2F0
Y2hwb2ludCA9IFsmXSB7Ci0gICAgICAgIG1fYXJyYXlTcGVjaWVzV2F0Y2hwb2ludFNldC5pbnZh
bGlkYXRlKHZtLCBTdHJpbmdGaXJlRGV0YWlsKCJXYXMgbm90IGFibGUgdG8gc2V0IHVwIGFycmF5
IHNwZWNpZXMgd2F0Y2hwb2ludC4iKSk7CisgICAgICAgIHNwZWNpZXNXYXRjaHBvaW50U2V0Lmlu
dmFsaWRhdGUodm0sIFN0cmluZ0ZpcmVEZXRhaWwoIldhcyBub3QgYWJsZSB0byBzZXQgdXAgc3Bl
Y2llcyB3YXRjaHBvaW50LiIpKTsKICAgICB9OwogCi0gICAgUHJvcGVydHlTbG90IGNvbnN0cnVj
dG9yU2xvdChhcnJheVByb3RvdHlwZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6
OlZNSW5xdWlyeSwgJnZtKTsKLSAgICBhcnJheVByb3RvdHlwZS0+Z2V0T3duUHJvcGVydHlTbG90
KGFycmF5UHJvdG90eXBlLCB0aGlzLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgY29u
c3RydWN0b3JTbG90KTsKKyAgICBQcm9wZXJ0eVNsb3QgY29uc3RydWN0b3JTbG90KHByb3RvdHlw
ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJnZtKTsKKyAg
ICBwcm90b3R5cGUtPmdldE93blByb3BlcnR5U2xvdChwcm90b3R5cGUsIHRoaXMsIHZtLnByb3Bl
cnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBjb25zdHJ1Y3RvclNsb3QpOwogICAgIHNjb3BlLmFzc2Vy
dE5vRXhjZXB0aW9uKCk7Ci0gICAgaWYgKGNvbnN0cnVjdG9yU2xvdC5zbG90QmFzZSgpICE9IGFy
cmF5UHJvdG90eXBlCisgICAgaWYgKGNvbnN0cnVjdG9yU2xvdC5zbG90QmFzZSgpICE9IHByb3Rv
dHlwZQogICAgICAgICB8fCAhY29uc3RydWN0b3JTbG90LmlzQ2FjaGVhYmxlVmFsdWUoKQotICAg
ICAgICB8fCBjb25zdHJ1Y3RvclNsb3QuZ2V0VmFsdWUodGhpcywgdm0ucHJvcGVydHlOYW1lcy0+
Y29uc3RydWN0b3IpICE9IGFycmF5Q29uc3RydWN0b3IpIHsKKyAgICAgICAgfHwgY29uc3RydWN0
b3JTbG90LmdldFZhbHVlKHRoaXMsIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yKSAhPSBj
b25zdHJ1Y3RvcikgewogICAgICAgICBpbnZhbGlkYXRlV2F0Y2hwb2ludCgpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgU3RydWN0dXJlKiBjb25zdHJ1Y3RvclN0cnVjdHVyZSA9IGFy
cmF5Q29uc3RydWN0b3ItPnN0cnVjdHVyZSh2bSk7CisgICAgU3RydWN0dXJlKiBjb25zdHJ1Y3Rv
clN0cnVjdHVyZSA9IGNvbnN0cnVjdG9yLT5zdHJ1Y3R1cmUodm0pOwogICAgIGlmIChjb25zdHJ1
Y3RvclN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpCi0gICAgICAgIGNvbnN0cnVjdG9yU3RydWN0
dXJlID0gY29uc3RydWN0b3JTdHJ1Y3R1cmUtPmZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKHZt
LCBhcnJheUNvbnN0cnVjdG9yKTsKKyAgICAgICAgY29uc3RydWN0b3JTdHJ1Y3R1cmUgPSBjb25z
dHJ1Y3RvclN0cnVjdHVyZS0+ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUodm0sIGNvbnN0cnVj
dG9yKTsKIAotICAgIFByb3BlcnR5U2xvdCBzcGVjaWVzU2xvdChhcnJheUNvbnN0cnVjdG9yLCBQ
cm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmdm0pOwotICAgIGFy
cmF5Q29uc3RydWN0b3ItPmdldE93blByb3BlcnR5U2xvdChhcnJheUNvbnN0cnVjdG9yLCB0aGlz
LCB2bS5wcm9wZXJ0eU5hbWVzLT5zcGVjaWVzU3ltYm9sLCBzcGVjaWVzU2xvdCk7CisgICAgUHJv
cGVydHlTbG90IHNwZWNpZXNTbG90KGNvbnN0cnVjdG9yLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFs
TWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmdm0pOworICAgIGNvbnN0cnVjdG9yLT5nZXRPd25Qcm9w
ZXJ0eVNsb3QoY29uc3RydWN0b3IsIHRoaXMsIHZtLnByb3BlcnR5TmFtZXMtPnNwZWNpZXNTeW1i
b2wsIHNwZWNpZXNTbG90KTsKICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwotICAgIGlm
IChzcGVjaWVzU2xvdC5zbG90QmFzZSgpICE9IGFycmF5Q29uc3RydWN0b3IKKyAgICBpZiAoc3Bl
Y2llc1Nsb3Quc2xvdEJhc2UoKSAhPSBjb25zdHJ1Y3RvcgogICAgICAgICB8fCAhc3BlY2llc1Ns
b3QuaXNDYWNoZWFibGVHZXR0ZXIoKQogICAgICAgICB8fCBzcGVjaWVzU2xvdC5nZXR0ZXJTZXR0
ZXIoKSAhPSBzcGVjaWVzR2V0dGVyU2V0dGVyKCkpIHsKICAgICAgICAgaW52YWxpZGF0ZVdhdGNo
cG9pbnQoKTsKQEAgLTIxODgsOCArMjE3Myw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnRyeUlu
c3RhbGxBcnJheVNwZWNpZXNXYXRjaHBvaW50KCkKICAgICBwcm90b3R5cGVTdHJ1Y3R1cmUtPnN0
YXJ0V2F0Y2hpbmdQcm9wZXJ0eUZvclJlcGxhY2VtZW50cyh2bSwgY29uc3RydWN0b3JTbG90LmNh
Y2hlZE9mZnNldCgpKTsKICAgICBjb25zdHJ1Y3RvclN0cnVjdHVyZS0+c3RhcnRXYXRjaGluZ1By
b3BlcnR5Rm9yUmVwbGFjZW1lbnRzKHZtLCBzcGVjaWVzU2xvdC5jYWNoZWRPZmZzZXQoKSk7CiAK
LSAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25zdHJ1Y3RvckNvbmRpdGlvbiA9IE9iamVj
dFByb3BlcnR5Q29uZGl0aW9uOjplcXVpdmFsZW5jZSh2bSwgYXJyYXlQcm90b3R5cGUsIGFycmF5
UHJvdG90eXBlLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rvci5pbXBsKCksIGFycmF5Q29u
c3RydWN0b3IpOwotICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIHNwZWNpZXNDb25kaXRpb24g
PSBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbjo6ZXF1aXZhbGVuY2Uodm0sIGFycmF5UHJvdG90eXBl
LCBhcnJheUNvbnN0cnVjdG9yLCB2bS5wcm9wZXJ0eU5hbWVzLT5zcGVjaWVzU3ltYm9sLmltcGwo
KSwgc3BlY2llc0dldHRlclNldHRlcigpKTsKKyAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBj
b25zdHJ1Y3RvckNvbmRpdGlvbiA9IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uOjplcXVpdmFsZW5j
ZSh2bSwgcHJvdG90eXBlLCBwcm90b3R5cGUsIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9y
LmltcGwoKSwgY29uc3RydWN0b3IpOworICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIHNwZWNp
ZXNDb25kaXRpb24gPSBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbjo6ZXF1aXZhbGVuY2Uodm0sIHBy
b3RvdHlwZSwgY29uc3RydWN0b3IsIHZtLnByb3BlcnR5TmFtZXMtPnNwZWNpZXNTeW1ib2wuaW1w
bCgpLCBzcGVjaWVzR2V0dGVyU2V0dGVyKCkpOwogCiAgICAgaWYgKCFjb25zdHJ1Y3RvckNvbmRp
dGlvbi5pc1dhdGNoYWJsZSgpIHx8ICFzcGVjaWVzQ29uZGl0aW9uLmlzV2F0Y2hhYmxlKCkpIHsK
ICAgICAgICAgaW52YWxpZGF0ZVdhdGNocG9pbnQoKTsKQEAgLTIxOTcsMTQgKzIxODIsMzAgQEAg
dm9pZCBKU0dsb2JhbE9iamVjdDo6dHJ5SW5zdGFsbEFycmF5U3BlY2llc1dhdGNocG9pbnQoKQog
ICAgIH0KIAogICAgIC8vIFdlIG9ubHkgd2F0Y2ggdGhpcyBmcm9tIHRoZSBERkcsIGFuZCB0aGUg
REZHIG1ha2VzIHN1cmUgdG8gb25seSBzdGFydCB3YXRjaGluZyBpZiB0aGUgd2F0Y2hwb2ludCBp
cyBpbiB0aGUgSXNXYXRjaGVkIHN0YXRlLgotICAgIFJFTEVBU0VfQVNTRVJUKCFtX2FycmF5U3Bl
Y2llc1dhdGNocG9pbnRTZXQuaXNCZWluZ1dhdGNoZWQoKSk7Ci0gICAgbV9hcnJheVNwZWNpZXNX
YXRjaHBvaW50U2V0LnRvdWNoKHZtLCAiU2V0IHVwIGFycmF5IHNwZWNpZXMgd2F0Y2hwb2ludC4i
KTsKKyAgICBSRUxFQVNFX0FTU0VSVCghc3BlY2llc1dhdGNocG9pbnRTZXQuaXNCZWluZ1dhdGNo
ZWQoKSk7CisgICAgc3BlY2llc1dhdGNocG9pbnRTZXQudG91Y2godm0sICJTZXQgdXAgc3BlY2ll
cyB3YXRjaHBvaW50LiIpOworCisgICAgY29uc3RydWN0b3JXYXRjaHBvaW50ID0gbWFrZVVuaXF1
ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50
U2V0Pj4odGhpcywgY29uc3RydWN0b3JDb25kaXRpb24sIHNwZWNpZXNXYXRjaHBvaW50U2V0KTsK
KyAgICBjb25zdHJ1Y3RvcldhdGNocG9pbnQtPmluc3RhbGwodm0pOwogCi0gICAgbV9hcnJheVBy
b3RvdHlwZUNvbnN0cnVjdG9yV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlD
aGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbnN0
cnVjdG9yQ29uZGl0aW9uLCBtX2FycmF5U3BlY2llc1dhdGNocG9pbnRTZXQpOwotICAgIG1fYXJy
YXlQcm90b3R5cGVDb25zdHJ1Y3RvcldhdGNocG9pbnQtPmluc3RhbGwodm0pOworICAgIHNwZWNp
ZXNXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0
Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgc3BlY2llc0NvbmRpdGlvbiwgc3Bl
Y2llc1dhdGNocG9pbnRTZXQpOworICAgIHNwZWNpZXNXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsK
K30KIAotICAgIG1fYXJyYXlDb25zdHJ1Y3RvclNwZWNpZXNXYXRjaHBvaW50ID0gbWFrZVVuaXF1
ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50
U2V0Pj4odGhpcywgc3BlY2llc0NvbmRpdGlvbiwgbV9hcnJheVNwZWNpZXNXYXRjaHBvaW50U2V0
KTsKLSAgICBtX2FycmF5Q29uc3RydWN0b3JTcGVjaWVzV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7
Cit2b2lkIEpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJyYXlTcGVjaWVzV2F0Y2hwb2ludCgp
Cit7CisgICAgUkVMRUFTRV9BU1NFUlQoIW1fYXJyYXlQcm90b3R5cGVDb25zdHJ1Y3RvcldhdGNo
cG9pbnQpOworICAgIFJFTEVBU0VfQVNTRVJUKCFtX2FycmF5Q29uc3RydWN0b3JTcGVjaWVzV2F0
Y2hwb2ludCk7CisKKyAgICB0cnlJbnN0YWxsU3BlY2llc1dhdGNocG9pbnQoYXJyYXlQcm90b3R5
cGUoKSwgYXJyYXlDb25zdHJ1Y3RvcigpLCBtX2FycmF5UHJvdG90eXBlQ29uc3RydWN0b3JXYXRj
aHBvaW50LCBtX2FycmF5Q29uc3RydWN0b3JTcGVjaWVzV2F0Y2hwb2ludCwgbV9hcnJheVNwZWNp
ZXNXYXRjaHBvaW50U2V0KTsKK30KKwordm9pZCBKU0dsb2JhbE9iamVjdDo6dHJ5SW5zdGFsbEFy
cmF5QnVmZmVyU3BlY2llc1dhdGNocG9pbnQoQXJyYXlCdWZmZXJTaGFyaW5nTW9kZSBzaGFyaW5n
TW9kZSkKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHVuc2lnbmVkPihBcnJheUJ1
ZmZlclNoYXJpbmdNb2RlOjpEZWZhdWx0KSA9PSAwKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihBcnJheUJ1ZmZlclNoYXJpbmdNb2RlOjpTaGFyZWQpID09IDEpOwor
ICAgIHVuc2lnbmVkIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNoYXJpbmdNb2RlKTsK
KyAgICB0cnlJbnN0YWxsU3BlY2llc1dhdGNocG9pbnQoYXJyYXlCdWZmZXJQcm90b3R5cGUoc2hh
cmluZ01vZGUpLCBhcnJheUJ1ZmZlckNvbnN0cnVjdG9yKHNoYXJpbmdNb2RlKSwgbV9hcnJheUJ1
ZmZlclByb3RvdHlwZUNvbnN0cnVjdG9yV2F0Y2hwb2ludHNbaW5kZXhdLCBtX2FycmF5QnVmZmVy
Q29uc3RydWN0b3JTcGVjaWVzV2F0Y2hwb2ludHNbaW5kZXhdLCBhcnJheUJ1ZmZlclNwZWNpZXNX
YXRjaHBvaW50U2V0KHNoYXJpbmdNb2RlKSk7CiB9CiAKIHZvaWQgSlNHbG9iYWxPYmplY3Q6Omlu
c3RhbGxOdW1iZXJQcm90b3R5cGVXYXRjaHBvaW50KE51bWJlclByb3RvdHlwZSogbnVtYmVyUHJv
dG90eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKaW5kZXggMjNjNjYzNzQzZmNjNGRhODJjNmI4MzY1NjdiY2QwNmY0OTE5NzMyZi4uYzVjYmVl
YTAyYjI3ZGMxMTRiNTNjYTFlYTA2Y2Y0YzYzMTUxNDEzZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC00MjAsMTAgKzQyMCw3IEBAIGNs
YXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3Qgewog
ICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX3Byb3h5T2JqZWN0
U3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBt
X2NhbGxhYmxlUHJveHlPYmplY3RTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmU+IG1fcHJveHlSZXZva2VTdHJ1Y3R1cmU7Ci0jaWYgRU5BQkxFKFNI
QVJFRF9BUlJBWV9CVUZGRVIpCi0gICAgV3JpdGVCYXJyaWVyPEpTQXJyYXlCdWZmZXJQcm90b3R5
cGU+IG1fc2hhcmVkQXJyYXlCdWZmZXJQcm90b3R5cGU7Ci0gICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9zaGFyZWRBcnJheUJ1ZmZlclN0cnVjdHVyZTsKLSNlbmRpZgorICAgIExhenlDbGFz
c1N0cnVjdHVyZSBtX3NoYXJlZEFycmF5QnVmZmVyU3RydWN0dXJlOwogCiAjZGVmaW5lIERFRklO
RV9TVE9SQUdFX0ZPUl9TSU1QTEVfVFlQRShjYXBpdGFsTmFtZSwgbG93ZXJOYW1lLCBwcm9wZXJO
YW1lLCBpbnN0YW5jZVR5cGUsIGpzTmFtZSwgcHJvdG90eXBlQmFzZSwgZmVhdHVyZUZsYWcpIFwK
ICAgICBXcml0ZUJhcnJpZXI8Y2FwaXRhbE5hbWUgIyMgUHJvdG90eXBlPiBtXyAjIyBsb3dlck5h
bWUgIyMgUHJvdG90eXBlOyBcCkBAIC00ODcsOSArNDg0LDEwIEBAIGNsYXNzIEpTR2xvYmFsT2Jq
ZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIElubGluZVdhdGNo
cG9pbnRTZXQgbV9zdHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldDsKICAgICBJbmxp
bmVXYXRjaHBvaW50U2V0IG1fbWFwU2V0V2F0Y2hwb2ludFNldDsKICAgICBJbmxpbmVXYXRjaHBv
aW50U2V0IG1fc2V0QWRkV2F0Y2hwb2ludFNldDsKLSAgICBJbmxpbmVXYXRjaHBvaW50U2V0IG1f
YXJyYXlTcGVjaWVzV2F0Y2hwb2ludFNldDsKKyAgICBJbmxpbmVXYXRjaHBvaW50U2V0IG1fYXJy
YXlTcGVjaWVzV2F0Y2hwb2ludFNldCB7IENsZWFyV2F0Y2hwb2ludCB9OwogICAgIElubGluZVdh
dGNocG9pbnRTZXQgbV9hcnJheUpvaW5XYXRjaHBvaW50U2V0OwogICAgIElubGluZVdhdGNocG9p
bnRTZXQgbV9udW1iZXJUb1N0cmluZ1dhdGNocG9pbnRTZXQ7CisgICAgSW5saW5lV2F0Y2hwb2lu
dFNldCBtX2FycmF5QnVmZmVyU3BlY2llc1dhdGNocG9pbnRTZXRzWzJdIHsgQ2xlYXJXYXRjaHBv
aW50LCBDbGVhcldhdGNocG9pbnQgfTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8T2JqZWN0UHJvcGVy
dHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+IG1fYXJyYXlD
b25zdHJ1Y3RvclNwZWNpZXNXYXRjaHBvaW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxPYmplY3RQ
cm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4gbV9h
cnJheVByb3RvdHlwZUNvbnN0cnVjdG9yV2F0Y2hwb2ludDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNl
dD4+IG1fYXJyYXlQcm90b3R5cGVTeW1ib2xJdGVyYXRvcldhdGNocG9pbnQ7CkBAIC01MDQsNiAr
NTAyLDggQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJs
ZU9iamVjdCB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRp
dmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+PiBtX21hcFByb3RvdHlwZVNldFdhdGNo
cG9pbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVX
YXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+PiBtX3NldFByb3RvdHlwZUFkZFdhdGNocG9p
bnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRj
aHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+PiBtX251bWJlclByb3RvdHlwZVRvU3RyaW5nV2F0
Y2hwb2ludDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2
ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+IG1fYXJyYXlCdWZmZXJDb25zdHJ1Y3Rv
clNwZWNpZXNXYXRjaHBvaW50c1syXTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8T2JqZWN0UHJvcGVy
dHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+IG1fYXJyYXlC
dWZmZXJQcm90b3R5cGVDb25zdHJ1Y3RvcldhdGNocG9pbnRzWzJdOwogCiBwdWJsaWM6CiAgICAg
SlNDYWxsZWUqIHN0YWNrT3ZlcmZsb3dGcmFtZUNhbGxlZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
Y2tPdmVyZmxvd0ZyYW1lQ2FsbGVlLmdldCgpOyB9CkBAIC01MjEsNiArNTIxLDEyIEBAIGNsYXNz
IEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAg
ICAgICBSRUxFQVNFX0FTU0VSVChPcHRpb25zOjp1c2VKSVQoKSk7CiAgICAgICAgIHJldHVybiBt
X251bWJlclRvU3RyaW5nV2F0Y2hwb2ludFNldDsKICAgICB9CisgICAgSW5saW5lV2F0Y2hwb2lu
dFNldCYgYXJyYXlCdWZmZXJTcGVjaWVzV2F0Y2hwb2ludFNldChBcnJheUJ1ZmZlclNoYXJpbmdN
b2RlIHNoYXJpbmdNb2RlKQorICAgIHsKKyAgICAgICAgc3RhdGljX2Fzc2VydChzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oQXJyYXlCdWZmZXJTaGFyaW5nTW9kZTo6RGVmYXVsdCkgPT0gMCk7CisgICAg
ICAgIHN0YXRpY19hc3NlcnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEFycmF5QnVmZmVyU2hhcmlu
Z01vZGU6OlNoYXJlZCkgPT0gMSk7CisgICAgICAgIHJldHVybiBtX2FycmF5QnVmZmVyU3BlY2ll
c1dhdGNocG9pbnRTZXRzW3N0YXRpY19jYXN0PHVuc2lnbmVkPihzaGFyaW5nTW9kZSldOworICAg
IH0KIAogICAgIGJvb2wgaXNBcnJheVByb3RvdHlwZUl0ZXJhdG9yUHJvdG9jb2xGYXN0QW5kTm9u
T2JzZXJ2YWJsZSgpOwogICAgIGJvb2wgaXNNYXBQcm90b3R5cGVJdGVyYXRvclByb3RvY29sRmFz
dEFuZE5vbk9ic2VydmFibGUoKTsKQEAgLTg3MSwzOSArODc3LDQxIEBAIGNsYXNzIEpTR2xvYmFs
T2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIHN0YXRpYyBK
U09iamVjdCogY3VycmVudFNjcmlwdEV4ZWN1dGlvbk93bmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWwpIHsgcmV0dXJuIGdsb2JhbDsgfQogICAgIHN0YXRpYyBTY3JpcHRFeGVjdXRpb25TdGF0dXMg
c2NyaXB0RXhlY3V0aW9uU3RhdHVzKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqKSB7IHJldHVy
biBTY3JpcHRFeGVjdXRpb25TdGF0dXM6OlJ1bm5pbmc7IH0KIAotICAgIEpTT2JqZWN0KiBhcnJh
eUJ1ZmZlckNvbnN0cnVjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9hcnJheUJ1ZmZlclN0cnVjdHVy
ZS5jb25zdHJ1Y3Rvcih0aGlzKTsgfQotCiAgICAgSlNPYmplY3QqIGFycmF5QnVmZmVyUHJvdG90
eXBlKEFycmF5QnVmZmVyU2hhcmluZ01vZGUgc2hhcmluZ01vZGUpIGNvbnN0CiAgICAgewogICAg
ICAgICBzd2l0Y2ggKHNoYXJpbmdNb2RlKSB7CiAgICAgICAgIGNhc2UgQXJyYXlCdWZmZXJTaGFy
aW5nTW9kZTo6RGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBtX2FycmF5QnVmZmVyU3RydWN0
dXJlLnByb3RvdHlwZSh0aGlzKTsKLSNpZiBFTkFCTEUoU0hBUkVEX0FSUkFZX0JVRkZFUikKICAg
ICAgICAgY2FzZSBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlOjpTaGFyZWQ6Ci0gICAgICAgICAgICBy
ZXR1cm4gbV9zaGFyZWRBcnJheUJ1ZmZlclByb3RvdHlwZS5nZXQoKTsKLSNlbHNlCi0gICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gbV9hcnJheUJ1ZmZlclN0cnVjdHVyZS5wcm90
b3R5cGUodGhpcyk7Ci0jZW5kaWYKKyAgICAgICAgICAgIHJldHVybiBtX3NoYXJlZEFycmF5QnVm
ZmVyU3RydWN0dXJlLnByb3RvdHlwZSh0aGlzKTsKICAgICAgICAgfQorICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAg
ICAgU3RydWN0dXJlKiBhcnJheUJ1ZmZlclN0cnVjdHVyZShBcnJheUJ1ZmZlclNoYXJpbmdNb2Rl
IHNoYXJpbmdNb2RlKSBjb25zdAogICAgIHsKICAgICAgICAgc3dpdGNoIChzaGFyaW5nTW9kZSkg
ewogICAgICAgICBjYXNlIEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OkRlZmF1bHQ6CiAgICAgICAg
ICAgICByZXR1cm4gbV9hcnJheUJ1ZmZlclN0cnVjdHVyZS5nZXQodGhpcyk7Ci0jaWYgRU5BQkxF
KFNIQVJFRF9BUlJBWV9CVUZGRVIpCiAgICAgICAgIGNhc2UgQXJyYXlCdWZmZXJTaGFyaW5nTW9k
ZTo6U2hhcmVkOgotICAgICAgICAgICAgcmV0dXJuIG1fc2hhcmVkQXJyYXlCdWZmZXJTdHJ1Y3R1
cmUuZ2V0KCk7Ci0jZWxzZQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIG1f
YXJyYXlCdWZmZXJTdHJ1Y3R1cmUuZ2V0KHRoaXMpOwotI2VuZGlmCisgICAgICAgICAgICByZXR1
cm4gbV9zaGFyZWRBcnJheUJ1ZmZlclN0cnVjdHVyZS5nZXQodGhpcyk7CisgICAgICAgIH0KKyAg
ICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgfQorICAgIEpTT2JqZWN0KiBhcnJheUJ1ZmZlckNvbnN0cnVjdG9yKEFycmF5QnVm
ZmVyU2hhcmluZ01vZGUgc2hhcmluZ01vZGUpIGNvbnN0CisgICAgeworICAgICAgICBzd2l0Y2gg
KHNoYXJpbmdNb2RlKSB7CisgICAgICAgIGNhc2UgQXJyYXlCdWZmZXJTaGFyaW5nTW9kZTo6RGVm
YXVsdDoKKyAgICAgICAgICAgIHJldHVybiBtX2FycmF5QnVmZmVyU3RydWN0dXJlLmNvbnN0cnVj
dG9yKHRoaXMpOworICAgICAgICBjYXNlIEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OlNoYXJlZDoK
KyAgICAgICAgICAgIHJldHVybiBtX3NoYXJlZEFycmF5QnVmZmVyU3RydWN0dXJlLmNvbnN0cnVj
dG9yKHRoaXMpOwogICAgICAgICB9CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAorCiAjZGVmaW5lIERFRklORV9B
Q0NFU1NPUlNfRk9SX1NJTVBMRV9UWVBFKGNhcGl0YWxOYW1lLCBsb3dlck5hbWUsIHByb3Blck5h
bWUsIGluc3RhbmNlVHlwZSwganNOYW1lLCBwcm90b3R5cGVCYXNlLCBmZWF0dXJlRmxhZykgXAog
ICAgIFN0cnVjdHVyZSogcHJvcGVyTmFtZSAjIyBTdHJ1Y3R1cmUoKSB7IHJldHVybiBtXyAjIyBw
cm9wZXJOYW1lICMjIFN0cnVjdHVyZS5nZXQoKTsgfQogCkBAIC0xMDc4LDggKzEwODYsMTEgQEAg
Y2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7
CiAgICAgdm9pZCBpbnN0YWxsTnVtYmVyUHJvdG90eXBlV2F0Y2hwb2ludChOdW1iZXJQcm90b3R5
cGUqKTsKICAgICB2b2lkIGluc3RhbGxNYXBQcm90b3R5cGVXYXRjaHBvaW50KE1hcFByb3RvdHlw
ZSopOwogICAgIHZvaWQgaW5zdGFsbFNldFByb3RvdHlwZVdhdGNocG9pbnQoU2V0UHJvdG90eXBl
Kik7CisgICAgdm9pZCB0cnlJbnN0YWxsQXJyYXlCdWZmZXJTcGVjaWVzV2F0Y2hwb2ludChBcnJh
eUJ1ZmZlclNoYXJpbmdNb2RlKTsKIAogcHJvdGVjdGVkOgorICAgIHZvaWQgdHJ5SW5zdGFsbFNw
ZWNpZXNXYXRjaHBvaW50KEpTT2JqZWN0KiBwcm90b3R5cGUsIEpTT2JqZWN0KiBjb25zdHJ1Y3Rv
ciwgc3RkOjp1bmlxdWVfcHRyPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50
PElubGluZVdhdGNocG9pbnRTZXQ+PiYgY29uc3RydWN0b3JXYXRjaHBvaW50LCBzdGQ6OnVuaXF1
ZV9wdHI8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hw
b2ludFNldD4+JiBzcGVjaWVzV2F0Y2hwb2ludCwgSW5saW5lV2F0Y2hwb2ludFNldCYgc3BlY2ll
c1dhdGNocG9pbnRTZXQpOworCiAgICAgc3RydWN0IEdsb2JhbFByb3BlcnR5SW5mbyB7CiAgICAg
ICAgIEdsb2JhbFByb3BlcnR5SW5mbyhjb25zdCBJZGVudGlmaWVyJiBpLCBKU1ZhbHVlIHYsIHVu
c2lnbmVkIGEpCiAgICAgICAgICAgICA6IGlkZW50aWZpZXIoaSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJs
ZS5oCmluZGV4IDA1YmQ2ODBjYWU2NzUyNGFmNDlkZTU5NzZkOTg2OTQwODUxYjA5YTkuLjRjMzBk
MmMzYWIxZTA2Nzg1M2ZjNzEwYmY3NDYxYjljODgxZWI0MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFi
bGUuaApAQCAtODI5LDEwICs4MjksNiBAQAogI2RlZmluZSBFTkFCTEVfSU5MSU5FX1BBVEhfREFU
QSAxCiAjZW5kaWYKIAotLyogRGlzYWJsZSBTaGFyZWRBcnJheUJ1ZmZlcnMgdW50aWwgU3BlY3Ry
ZSBzZWN1cml0eSBjb25jZXJucyBhcmUgbWl0aWdhdGVkLiAqLwotI2RlZmluZSBFTkFCTEVfU0hB
UkVEX0FSUkFZX0JVRkZFUiAxCi0KLQogI2lmICgoUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JN
KFBMQVlTVEFUSU9OKSB8fCBQTEFURk9STShXUEUpKSAmJiBFTkFCTEUoQVNZTkNfU0NST0xMSU5H
KSkgfHwgUExBVEZPUk0oR1RLKQogI2RlZmluZSBFTkFCTEVfS0lORVRJQ19TQ1JPTExJTkcgMQog
I2VuZGlmCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9n
CmluZGV4IGI2NjlhNGU2NWU0NGFmOWZmM2M5M2JjNWJhZTE0ODA4Y2M3ZjdhYTYuLjBmNTZhNGQy
Y2MyYTQ3NzM3NTUwMTUwM2NlNWVjYTM2MjdlMTFiNDUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMTEt
MDggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBT
dXBwb3J0IEBAc3BlY2llcyBpbiBBcnJheUJ1ZmZlciAvIFNoYXJlZEFycmF5QnVmZmVyIHNsaWNl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg2OTcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRlc3Qy
NjIvZXhwZWN0YXRpb25zLnlhbWw6CisKIDIwMjAtMTEtMDYgIERtaXRyeSBCZXpoZXRza292ICA8
ZGJlemhldHNrb3ZAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV0FTTS1SZWZlcmVuY2VzXSBSZW5h
bWUgYW55cmVmIHRvIGV4dGVybnJlZgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2V4cGVj
dGF0aW9ucy55YW1sIGIvSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCmluZGV4IDk1
NDQzMTRiYjBlYTRlZjYxZGNjY2FjYmVmM2EzZmJmZDY3OTc4YzguLmY1OTVkMmVhZGFhNDAxOGU0
NmMzNjY4ZmM1ZDQ1MDFhOTM4NzQ0OGEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi9leHBl
Y3RhdGlvbnMueWFtbAorKysgYi9KU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwKQEAg
LTYwMywzMCArNjAzLDYgQEAgdGVzdC9hbm5leEIvbGFuZ3VhZ2UvZ2xvYmFsLWNvZGUvc3dpdGNo
LWRmbHQtZ2xvYmFsLXNraXAtZWFybHktZXJyLXRyeS5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJF
cnJvcjogQW4gaW5pdGlhbGl6ZWQgYmluZGluZyBpcyBub3QgY3JlYXRlZCBwcmlvciB0byBldmFs
dWF0aW9uIEV4cGVjdGVkIGEgUmVmZXJlbmNlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNl
cHRpb24gd2FzIHRocm93biBhdCBhbGwnCiB0ZXN0L2FubmV4Qi9sYW5ndWFnZS9nbG9iYWwtY29k
ZS9zd2l0Y2gtZGZsdC1nbG9iYWwtc2tpcC1lYXJseS1lcnIuanM6CiAgIGRlZmF1bHQ6ICJTeW50
YXhFcnJvcjogQ2Fubm90IGRlY2xhcmUgYSBmdW5jdGlvbiB0aGF0IHNoYWRvd3MgYSBsZXQvY29u
c3QvY2xhc3MvZnVuY3Rpb24gdmFyaWFibGUgJ2YnIGluIHN0cmljdCBtb2RlLiIKLXRlc3QvYnVp
bHQtaW5zL0FycmF5QnVmZmVyL3Byb3RvdHlwZS9zbGljZS9zcGVjaWVzLWNvbnN0cnVjdG9yLWlz
LW5vdC1vYmplY3QuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IGBjb25zdHJ1Y3RvcmAg
dmFsdWUgaXMgbnVsbCBFeHBlY3RlZCBhIFR5cGVFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4
Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6
IGBjb25zdHJ1Y3RvcmAgdmFsdWUgaXMgbnVsbCBFeHBlY3RlZCBhIFR5cGVFcnJvciB0byBiZSB0
aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKLXRlc3QvYnVpbHQtaW5z
L0FycmF5QnVmZmVyL3Byb3RvdHlwZS9zbGljZS9zcGVjaWVzLWlzLW5vdC1jb25zdHJ1Y3Rvci5q
czoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogYGNvbnN0cnVjdG9yW1N5bWJvbC5zcGVjaWVz
XWAgdmFsdWUgaXMgT2JqZWN0IEV4cGVjdGVkIGEgVHlwZUVycm9yIHRvIGJlIHRocm93biBidXQg
bm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJwotICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJF
cnJvcjogYGNvbnN0cnVjdG9yW1N5bWJvbC5zcGVjaWVzXWAgdmFsdWUgaXMgT2JqZWN0IEV4cGVj
dGVkIGEgVHlwZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24g
YXQgYWxsJwotdGVzdC9idWlsdC1pbnMvQXJyYXlCdWZmZXIvcHJvdG90eXBlL3NsaWNlL3NwZWNp
ZXMtaXMtbm90LW9iamVjdC5qczoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogYGNvbnN0cnVj
dG9yW1N5bWJvbC5zcGVjaWVzXWAgdmFsdWUgaXMgQm9vbGVhbiBFeHBlY3RlZCBhIFR5cGVFcnJv
ciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKLSAgc3Ry
aWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IGBjb25zdHJ1Y3RvcltTeW1ib2wuc3BlY2llc11gIHZh
bHVlIGlzIEJvb2xlYW4gRXhwZWN0ZWQgYSBUeXBlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBl
eGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCi10ZXN0L2J1aWx0LWlucy9BcnJheUJ1ZmZlci9w
cm90b3R5cGUvc2xpY2Uvc3BlY2llcy1yZXR1cm5zLWxhcmdlci1hcnJheWJ1ZmZlci5qczoKLSAg
ZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrOMK7LCDCqzEwwrsp
IHRvIGJlIHRydWUnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1l
VmFsdWUowqs4wrssIMKrMTDCuykgdG8gYmUgdHJ1ZScKLXRlc3QvYnVpbHQtaW5zL0FycmF5QnVm
ZmVyL3Byb3RvdHlwZS9zbGljZS9zcGVjaWVzLXJldHVybnMtbm90LWFycmF5YnVmZmVyLmpzOgot
ICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBhIFR5cGVFcnJvciB0byBiZSB0aHJv
d24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKLSAgc3RyaWN0IG1vZGU6ICdU
ZXN0MjYyRXJyb3I6IEV4cGVjdGVkIGEgVHlwZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhj
ZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJwotdGVzdC9idWlsdC1pbnMvQXJyYXlCdWZmZXIvcHJv
dG90eXBlL3NsaWNlL3NwZWNpZXMtcmV0dXJucy1zYW1lLWFycmF5YnVmZmVyLmpzOgotICBkZWZh
dWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBhIFR5cGVFcnJvciB0byBiZSB0aHJvd24gYnV0
IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYy
RXJyb3I6IEV4cGVjdGVkIGEgVHlwZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9u
IHdhcyB0aHJvd24gYXQgYWxsJwotdGVzdC9idWlsdC1pbnMvQXJyYXlCdWZmZXIvcHJvdG90eXBl
L3NsaWNlL3NwZWNpZXMtcmV0dXJucy1zbWFsbGVyLWFycmF5YnVmZmVyLmpzOgotICBkZWZhdWx0
OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBhIFR5cGVFcnJvciB0byBiZSB0aHJvd24gYnV0IG5v
IGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJy
b3I6IEV4cGVjdGVkIGEgVHlwZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdh
cyB0aHJvd24gYXQgYWxsJwotdGVzdC9idWlsdC1pbnMvQXJyYXlCdWZmZXIvcHJvdG90eXBlL3Ns
aWNlL3NwZWNpZXMuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVW
YWx1ZSjCq1tvYmplY3QgQXJyYXlCdWZmZXJdwrssIMKrdW5kZWZpbmVkwrspIHRvIGJlIHRydWUn
Ci0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqtbb2Jq
ZWN0IEFycmF5QnVmZmVyXcK7LCDCq3VuZGVmaW5lZMK7KSB0byBiZSB0cnVlJwogdGVzdC9idWls
dC1pbnMvRGF0ZS9VVEMvZnAtZXZhbHVhdGlvbi1vcmRlci5qczoKICAgZGVmYXVsdDogJ1Rlc3Qy
NjJFcnJvcjogb3JkZXIgb2Ygb3BlcmF0aW9ucyAvIHByZWNpc2lvbiBpbiBNYWtlVGltZSBFeHBl
Y3RlZCBTYW1lVmFsdWUowqtOYU7CuywgwqsyOTMxMsK7KSB0byBiZSB0cnVlJwogICBzdHJpY3Qg
bW9kZTogJ1Rlc3QyNjJFcnJvcjogb3JkZXIgb2Ygb3BlcmF0aW9ucyAvIHByZWNpc2lvbiBpbiBN
YWtlVGltZSBFeHBlY3RlZCBTYW1lVmFsdWUowqtOYU7CuywgwqsyOTMxMsK7KSB0byBiZSB0cnVl
JwpAQCAtODQ3LDMwICs4MjMsNiBAQCB0ZXN0L2J1aWx0LWlucy9SZWdFeHAvcHJvdG90eXBlL2V4
ZWMvdS1sYXN0aW5kZXgtYWR2LmpzOgogdGVzdC9idWlsdC1pbnMvUmVnRXhwL3F1YW50aWZpZXIt
aW50ZWdlci1saW1pdC5qczoKICAgZGVmYXVsdDogJ1N5bnRheEVycm9yOiBJbnZhbGlkIHJlZ3Vs
YXIgZXhwcmVzc2lvbjogbnVtYmVyIHRvbyBsYXJnZSBpbiB7fSBxdWFudGlmaWVyJwogICBzdHJp
Y3QgbW9kZTogJ1N5bnRheEVycm9yOiBJbnZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbjogbnVtYmVy
IHRvbyBsYXJnZSBpbiB7fSBxdWFudGlmaWVyJwotdGVzdC9idWlsdC1pbnMvU2hhcmVkQXJyYXlC
dWZmZXIvcHJvdG90eXBlL3NsaWNlL3NwZWNpZXMtY29uc3RydWN0b3ItaXMtbm90LW9iamVjdC5q
czoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogYGNvbnN0cnVjdG9yYCB2YWx1ZSBpcyBudWxs
IEV4cGVjdGVkIGEgVHlwZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0
aHJvd24gYXQgYWxsJwotICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogYGNvbnN0cnVjdG9y
YCB2YWx1ZSBpcyBudWxsIEV4cGVjdGVkIGEgVHlwZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8g
ZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJwotdGVzdC9idWlsdC1pbnMvU2hhcmVkQXJyYXlC
dWZmZXIvcHJvdG90eXBlL3NsaWNlL3NwZWNpZXMtaXMtbm90LWNvbnN0cnVjdG9yLmpzOgotICBk
ZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBgY29uc3RydWN0b3JbU3ltYm9sLnNwZWNpZXNdYCB2YWx1
ZSBpcyBPYmplY3QgRXhwZWN0ZWQgYSBUeXBlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNl
cHRpb24gd2FzIHRocm93biBhdCBhbGwnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBg
Y29uc3RydWN0b3JbU3ltYm9sLnNwZWNpZXNdYCB2YWx1ZSBpcyBPYmplY3QgRXhwZWN0ZWQgYSBU
eXBlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwn
Ci10ZXN0L2J1aWx0LWlucy9TaGFyZWRBcnJheUJ1ZmZlci9wcm90b3R5cGUvc2xpY2Uvc3BlY2ll
cy1pcy1ub3Qtb2JqZWN0LmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBgY29uc3RydWN0
b3JbU3ltYm9sLnNwZWNpZXNdYCB2YWx1ZSBpcyBCb29sZWFuIEV4cGVjdGVkIGEgVHlwZUVycm9y
IHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJwotICBzdHJp
Y3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogYGNvbnN0cnVjdG9yW1N5bWJvbC5zcGVjaWVzXWAgdmFs
dWUgaXMgQm9vbGVhbiBFeHBlY3RlZCBhIFR5cGVFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4
Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKLXRlc3QvYnVpbHQtaW5zL1NoYXJlZEFycmF5QnVm
ZmVyL3Byb3RvdHlwZS9zbGljZS9zcGVjaWVzLXJldHVybnMtbGFyZ2VyLWFycmF5YnVmZmVyLmpz
OgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqs4wrssIMKr
MTDCuykgdG8gYmUgdHJ1ZScKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVk
IFNhbWVWYWx1ZSjCqzjCuywgwqsxMMK7KSB0byBiZSB0cnVlJwotdGVzdC9idWlsdC1pbnMvU2hh
cmVkQXJyYXlCdWZmZXIvcHJvdG90eXBlL3NsaWNlL3NwZWNpZXMtcmV0dXJucy1ub3QtYXJyYXli
dWZmZXIuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIGEgVHlwZUVycm9y
IHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJwotICBzdHJp
Y3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgYSBUeXBlRXJyb3IgdG8gYmUgdGhyb3du
IGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCi10ZXN0L2J1aWx0LWlucy9TaGFy
ZWRBcnJheUJ1ZmZlci9wcm90b3R5cGUvc2xpY2Uvc3BlY2llcy1yZXR1cm5zLXNhbWUtYXJyYXli
dWZmZXIuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIGEgVHlwZUVycm9y
IHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJwotICBzdHJp
Y3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgYSBUeXBlRXJyb3IgdG8gYmUgdGhyb3du
IGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCi10ZXN0L2J1aWx0LWlucy9TaGFy
ZWRBcnJheUJ1ZmZlci9wcm90b3R5cGUvc2xpY2Uvc3BlY2llcy1yZXR1cm5zLXNtYWxsZXItYXJy
YXlidWZmZXIuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIGEgVHlwZUVy
cm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJwotICBz
dHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgYSBUeXBlRXJyb3IgdG8gYmUgdGhy
b3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCi10ZXN0L2J1aWx0LWlucy9T
aGFyZWRBcnJheUJ1ZmZlci9wcm90b3R5cGUvc2xpY2Uvc3BlY2llcy5qczoKLSAgZGVmYXVsdDog
J1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrW29iamVjdCBTaGFyZWRBcnJheUJ1
ZmZlcl3Cuywgwqt1bmRlZmluZWTCuykgdG8gYmUgdHJ1ZScKLSAgc3RyaWN0IG1vZGU6ICdUZXN0
MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq1tvYmplY3QgU2hhcmVkQXJyYXlCdWZmZXJd
wrssIMKrdW5kZWZpbmVkwrspIHRvIGJlIHRydWUnCiB0ZXN0L2J1aWx0LWlucy9UeXBlZEFycmF5
L3Byb3RvdHlwZS9ldmVyeS9jYWxsYmFja2ZuLWRldGFjaGJ1ZmZlci5qczoKICAgZGVmYXVsdDog
J1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgYSBUeXBlRXJyb3IgYnV0IGdvdCBhIFRlc3QyNjJFcnJv
ciAoVGVzdGluZyB3aXRoIEZsb2F0NjRBcnJheS4pJwogICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJF
cnJvcjogRXhwZWN0ZWQgYSBUeXBlRXJyb3IgYnV0IGdvdCBhIFRlc3QyNjJFcnJvciAoVGVzdGlu
ZyB3aXRoIEZsb2F0NjRBcnJheS4pJwpAQCAtMjc0NSw5ICsyNjk3LDYgQEAgdGVzdC9sYW5ndWFn
ZS9zdGF0ZW1lbnRzL2NsYXNzL21ldGhvZC9mb3JiaWRkZW4tZXh0L2IyL2Nscy1kZWNsLW1ldGgt
Zm9yYmlkZGVuLWUKICAgZGVmYXVsdDogJ1R5cGVFcnJvcjogRnVuY3Rpb24uY2FsbGVyIHVzZWQg
dG8gcmV0cmlldmUgc3RyaWN0IGNhbGxlcicKIHRlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9jbGFz
cy9tZXRob2QvZm9yYmlkZGVuLWV4dC9iMi9jbHMtZGVjbC1tZXRoLWZvcmJpZGRlbi1leHQtaW5k
aXJlY3QtYWNjZXNzLXByb3AtY2FsbGVyLmpzOgogICBkZWZhdWx0OiAnVHlwZUVycm9yOiBGdW5j
dGlvbi5jYWxsZXIgdXNlZCB0byByZXRyaWV2ZSBzdHJpY3QgY2FsbGVyJwotdGVzdC9sYW5ndWFn
ZS9zdGF0ZW1lbnRzL2NsYXNzL3N1YmNsYXNzL2J1aWx0aW4tb2JqZWN0cy9BcnJheUJ1ZmZlci9y
ZWd1bGFyLXN1YmNsYXNzaW5nLmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3Rl
ZCB0cnVlIGJ1dCBnb3QgZmFsc2UnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBl
Y3RlZCB0cnVlIGJ1dCBnb3QgZmFsc2UnCiB0ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvY29uc3Qv
ZHN0ci9hcnktaW5pdC1pdGVyLWdldC1lcnItYXJyYXktcHJvdG90eXBlLmpzOgogICBkZWZhdWx0
OiAnVHlwZUVycm9yOiBTcHJlYWQgc3ludGF4IHJlcXVpcmVzIC4uLml0ZXJhYmxlW1N5bWJvbC5p
dGVyYXRvcl0gdG8gYmUgYSBmdW5jdGlvbicKICAgc3RyaWN0IG1vZGU6ICdUeXBlRXJyb3I6IFNw
cmVhZCBzeW50YXggcmVxdWlyZXMgLi4uaXRlcmFibGVbU3ltYm9sLml0ZXJhdG9yXSB0byBiZSBh
IGZ1bmN0aW9uJwo=
</data>
<flag name="commit-queue"
          id="430187"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413553</attachid>
            <date>2020-11-08 19:01:20 -0800</date>
            <delta_ts>2020-11-08 19:53:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218697-20201108190119.patch</filename>
            <type>text/plain</type>
            <size>45873</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5NTcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
OTg4ZjgyOWQzYzRkODU0N2YyZWYzM2EyNDEyZWQ4YWY5MTk4NzY4Li42NzVmNjlkZDVjMTFjMDVk
YWIzZWY5YWVmNzY5OTQ3NTZkNzI3MzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MCBAQAorMjAyMC0xMS0wOCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFN1cHBvcnQgQEBzcGVjaWVzIGluIEFycmF5QnVmZmVyIC8gU2hh
cmVkQXJyYXlCdWZmZXIgc2xpY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxODY5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBAQHNwZWNpZXMgaW4gQXJy
YXlCdWZmZXIvU2hhcmVkQXJyYXlCdWZmZXIucHJvdG90eXBlLnNsaWNlLgorICAgICAgICBXZSBs
ZXZlcmFnZSB0aGUgbWVjaGFuaXNtIHNpbWlsYXIgdG8gQXJyYXkncyBAQHNwZWNpZXMgaGFuZGxp
bmc6IGFkZGluZyBmYXN0IHBhdGggd2l0aCB3YXRjaHBvaW50LgorICAgICAgICBXaGVuIHdlIGZv
dW5kIHRoYXQgc29tZSBvZiBjcml0aWNhbCBwcm9wZXJ0aWVzIChlLmcuICVQcm90b3R5cGUlLmNv
bnN0cnVjdG9yLCAlQ29uc3RydWN0b3IlW0BAc3BlY2llc10pCisgICAgICAgIGFyZSBtb2RpZmll
ZCwgd2F0Y2hwb2ludCBpcyBmaXJlZCBhbmQgd2UgZ28gdG8gdGhlIHNsb3cgcGF0aC4gVW50aWwg
dGhhdCwgd2UgdXNlIGZhc3QgcGF0aCB0aGF0IGlzCisgICAgICAgIGJhc2ljYWxseSB0aGUgc2Ft
ZSB0byB0aGUgY29kZSBiZWZvcmUgdGhpcyBwYXRjaC4KKworICAgICAgICAqIHJ1bnRpbWUvQXJy
YXlCdWZmZXIuY3BwOgorICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6c2xpY2UgY29uc3QpOgor
ICAgICAgICAoSlNDOjpBcnJheUJ1ZmZlcjo6c2xpY2VXaXRoQ2xhbXBlZEluZGV4IGNvbnN0KToK
KyAgICAgICAgKEpTQzo6QXJyYXlCdWZmZXI6OnNsaWNlSW1wbCBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgICogcnVudGltZS9BcnJheUJ1ZmZlci5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlC
dWZmZXJTaGFyaW5nTW9kZS5oOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjpzcGVjaWVzV2F0Y2hwb2ludElzVmFsaWQpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnNwZWNpZXNX
YXRjaHBvaW50SXNWYWxpZCk6CisgICAgICAgIChKU0M6OmFycmF5QnVmZmVyU2xpY2UpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6SlNHbG9iYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnRyeUluc3RhbGxTcGVjaWVzV2F0Y2hwb2ludCk6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJyYXlTcGVjaWVzV2F0
Y2hwb2ludCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJyYXlC
dWZmZXJTcGVjaWVzV2F0Y2hwb2ludCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6YXJyYXlCdWZmZXJTcGVjaWVzV2F0
Y2hwb2ludFNldCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphcnJheUJ1ZmZlclBy
b3RvdHlwZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphcnJheUJ1ZmZl
clN0cnVjdHVyZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjphcnJheUJ1
ZmZlckNvbnN0cnVjdG9yIGNvbnN0KToKKwogMjAyMC0xMS0wNiAgRG1pdHJ5IEJlemhldHNrb3Yg
IDxkYmV6aGV0c2tvdkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXQVNNLVJlZmVyZW5jZXNdIFJl
bmFtZSBhbnlyZWYgdG8gZXh0ZXJucmVmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDcwYzdkNjAxNDAyNjQxYTA4MTkwZTczN2Fi
MWEwZWRlNTA4NzZmNTIuLjk1ZWIxZTU0MmNjMjFhOTUwMTg3YTZjYjIyZDU2YzdhYTlhNWQwOTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMTEtMDggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtp
QGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBTdXBwb3J0IEBAc3BlY2llcyBpbiBBcnJheUJ1
ZmZlciAvIFNoYXJlZEFycmF5QnVmZmVyIHNsaWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTg2OTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgRU5BQkxFKFNIQVJFRF9BUlJBWV9CVUZGRVIp
IGZsYWcuIFdlIHVzZSBPcHRpb25zOjp1c2VTaGFyZWRBcnJheUJ1ZmZlcigpIHJ1bnRpbWUgZmxh
ZyBpbnN0ZWFkLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxlLmg6CisKIDIwMjAtMTEt
MDYgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIEZ1cnRoZXIgcHJv
Z3Jlc3MgdG93YXJkcyBtZXJnaW5nIFNldHRpbmdzLnlhbWwgaW50byBXZWJQcmVmZXJlbmNlcy55
YW1sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKaW5k
ZXggMGExODZjMmVkNTA3MDE1NTIzMjExZTI5YWMyMGM1MzYwM2M1ZTAxZC4uYzliOGYyYTcxOTFl
M2FjNzIwZDg5ZGZlMDQ2YTYxNTg5ZjNmNDBjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcApAQCAtMzExLDE1ICszMTEsMTUgQEAgdW5zaWduZWQg
QXJyYXlCdWZmZXI6OmNsYW1wSW5kZXgoZG91YmxlIGluZGV4KSBjb25zdAogCiBSZWZQdHI8QXJy
YXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZShkb3VibGUgYmVnaW4sIGRvdWJsZSBlbmQpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIHNsaWNlSW1wbChjbGFtcEluZGV4KGJlZ2luKSwgY2xhbXBJbmRl
eChlbmQpKTsKKyAgICByZXR1cm4gc2xpY2VXaXRoQ2xhbXBlZEluZGV4KGNsYW1wSW5kZXgoYmVn
aW4pLCBjbGFtcEluZGV4KGVuZCkpOwogfQogCiBSZWZQdHI8QXJyYXlCdWZmZXI+IEFycmF5QnVm
ZmVyOjpzbGljZShkb3VibGUgYmVnaW4pIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHNsaWNlSW1wbChj
bGFtcEluZGV4KGJlZ2luKSwgYnl0ZUxlbmd0aCgpKTsKKyAgICByZXR1cm4gc2xpY2VXaXRoQ2xh
bXBlZEluZGV4KGNsYW1wSW5kZXgoYmVnaW4pLCBieXRlTGVuZ3RoKCkpOwogfQogCi1SZWZQdHI8
QXJyYXlCdWZmZXI+IEFycmF5QnVmZmVyOjpzbGljZUltcGwodW5zaWduZWQgYmVnaW4sIHVuc2ln
bmVkIGVuZCkgY29uc3QKK1JlZlB0cjxBcnJheUJ1ZmZlcj4gQXJyYXlCdWZmZXI6OnNsaWNlV2l0
aENsYW1wZWRJbmRleCh1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kKSBjb25zdAogewogICAg
IHVuc2lnbmVkIHNpemUgPSBiZWdpbiA8PSBlbmQgPyBlbmQgLSBiZWdpbiA6IDA7CiAgICAgYXV0
byByZXN1bHQgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIq
PihkYXRhKCkpICsgYmVnaW4sIHNpemUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5QnVmZmVyLmgKaW5kZXggOTZhNGE0Yzc3MTBiNmUyMzdmY2QxN2U4MmQ1ZmY4NjIzNzM2
NDc1Mi4uNjhmZjkwZTEzZWJhM2MyZjdiY2ZhNjkyNzA1ZmQ3Zjc1N2RkNTI2YSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5oCkBAIC0xMzcsNiArMTM3LDcg
QEAgY2xhc3MgQXJyYXlCdWZmZXIgOiBwdWJsaWMgR0NJbmNvbWluZ1JlZkNvdW50ZWQ8QXJyYXlC
dWZmZXI+IHsKIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIFJlZlB0cjxBcnJheUJ1ZmZlcj4gc2xp
Y2UoZG91YmxlIGJlZ2luLCBkb3VibGUgZW5kKSBjb25zdDsKICAgICBKU19FWFBPUlRfUFJJVkFU
RSBSZWZQdHI8QXJyYXlCdWZmZXI+IHNsaWNlKGRvdWJsZSBiZWdpbikgY29uc3Q7CisgICAgSlNf
RVhQT1JUX1BSSVZBVEUgUmVmUHRyPEFycmF5QnVmZmVyPiBzbGljZVdpdGhDbGFtcGVkSW5kZXgo
dW5zaWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3Q7CiAgICAgCiAgICAgaW5saW5lIHZv
aWQgcGluKCk7CiAgICAgaW5saW5lIHZvaWQgdW5waW4oKTsKQEAgLTE2NCw3ICsxNjUsNiBAQCBj
bGFzcyBBcnJheUJ1ZmZlciA6IHB1YmxpYyBHQ0luY29taW5nUmVmQ291bnRlZDxBcnJheUJ1ZmZl
cj4gewogICAgIHN0YXRpYyBSZWY8QXJyYXlCdWZmZXI+IGNyZWF0ZUludGVybmFsKEFycmF5QnVm
ZmVyQ29udGVudHMmJiwgY29uc3Qgdm9pZCosIHVuc2lnbmVkKTsKICAgICBzdGF0aWMgUmVmUHRy
PEFycmF5QnVmZmVyPiB0cnlDcmVhdGUodW5zaWduZWQgbnVtRWxlbWVudHMsIHVuc2lnbmVkIGVs
ZW1lbnRCeXRlU2l6ZSwgQXJyYXlCdWZmZXJDb250ZW50czo6SW5pdGlhbGl6YXRpb25Qb2xpY3kp
OwogICAgIEFycmF5QnVmZmVyKEFycmF5QnVmZmVyQ29udGVudHMmJik7Ci0gICAgUmVmUHRyPEFy
cmF5QnVmZmVyPiBzbGljZUltcGwodW5zaWduZWQgYmVnaW4sIHVuc2lnbmVkIGVuZCkgY29uc3Q7
CiAgICAgaW5saW5lIHVuc2lnbmVkIGNsYW1wSW5kZXgoZG91YmxlIGluZGV4KSBjb25zdDsKICAg
ICBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNsYW1wVmFsdWUoZG91YmxlIHgsIHVuc2lnbmVkIGxl
ZnQsIHVuc2lnbmVkIHJpZ2h0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlCdWZmZXJTaGFyaW5nTW9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlCdWZmZXJTaGFyaW5nTW9kZS5oCmluZGV4IDYzMGVkM2RkNDJmYzhlOWMw
OGY2NjI4Zjg5NmRkODQyNmI3NTFjYjEuLmUzMGQzZDNjNmYzYjAwMjE4ZjA1MWQzNWRhYjBmOGU0
Njk0MmU0NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5
QnVmZmVyU2hhcmluZ01vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9B
cnJheUJ1ZmZlclNoYXJpbmdNb2RlLmgKQEAgLTMxLDcgKzMxLDcgQEAKIG5hbWVzcGFjZSBKU0Mg
ewogCiBlbnVtIGNsYXNzIEFycmF5QnVmZmVyU2hhcmluZ01vZGUgewotICAgIERlZmF1bHQsCisg
ICAgRGVmYXVsdCA9IDAsCiAgICAgU2hhcmVkCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKaW5kZXggZGJlZWViOGE3Mzc4NmYzNjNi
NDFlZThhMGRjZWE4NzIyYmY4NWYzNi4uYmZmZmM4N2JmNGFjODhjYjQ0YTQwOTJjZTc0YTkzODNh
Nzc5Mjk5YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQ
cm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJv
dG90eXBlLmNwcApAQCAtMTg2LDcgKzE4Niw3IEBAIG5hbWVzcGFjZSBBcnJheVByb3RvdHlwZUlu
dGVybmFsIHsKIHN0YXRpYyBib29sIHZlcmJvc2UgPSBmYWxzZTsKIH0KIAotQUxXQVlTX0lOTElO
RSBib29sIHNwZWNpZXNXYXRjaHBvaW50SXNWYWxpZChWTSYgdm0sIEpTT2JqZWN0KiB0aGlzT2Jq
ZWN0KQorc3RhdGljIEFMV0FZU19JTkxJTkUgYm9vbCBzcGVjaWVzV2F0Y2hwb2ludElzVmFsaWQo
Vk0mIHZtLCBKU09iamVjdCogdGhpc09iamVjdCkKIHsKICAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gdGhpc09iamVjdC0+Z2xvYmFsT2JqZWN0KHZtKTsKICAgICBBcnJheVByb3Rv
dHlwZSogYXJyYXlQcm90b3R5cGUgPSBnbG9iYWxPYmplY3QtPmFycmF5UHJvdG90eXBlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJv
dG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQ
cm90b3R5cGUuY3BwCmluZGV4IDcwZjMxN2Y4ZTY1OWQxZDE1YjRiYjdhNzQ4NmZmZjNmODk3NTUz
NTYuLjQwODUwYzgwMjVhNTU3ODQ4NDM2MGEyY2RjY2QzYjY4MmFiZDBmYWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5
cGUuY3BwCkBAIC0zMCw0OCArMzAsMTk2IEBACiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogCiBu
YW1lc3BhY2UgSlNDIHsKK25hbWVzcGFjZSBKU0FycmF5QnVmZmVyUHJvdG90eXBlSW50ZXJuYWwg
eworc3RhdGljIGNvbnN0ZXhwciBib29sIHZlcmJvc2UgPSBmYWxzZTsKK307CiAKIHN0YXRpYyBK
U0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGFycmF5QnVmZmVyUHJvdG9GdW5jU2xpY2UpOwogc3Rh
dGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oYXJyYXlCdWZmZXJQcm90b0dldHRlckZ1bmNC
eXRlTGVuZ3RoKTsKIHN0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHNoYXJlZEFycmF5
QnVmZmVyUHJvdG9GdW5jU2xpY2UpOwogc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04o
c2hhcmVkQXJyYXlCdWZmZXJQcm90b0dldHRlckZ1bmNCeXRlTGVuZ3RoKTsKIAorCitzdGF0aWMg
QUxXQVlTX0lOTElORSBib29sIHNwZWNpZXNXYXRjaHBvaW50SXNWYWxpZChWTSYgdm0sIEpTT2Jq
ZWN0KiB0aGlzT2JqZWN0LCBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlIG1vZGUpCit7CisgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCh2bSk7
CisgICAgYXV0byogcHJvdG90eXBlID0gZ2xvYmFsT2JqZWN0LT5hcnJheUJ1ZmZlclByb3RvdHlw
ZShtb2RlKTsKKworICAgIGlmIChnbG9iYWxPYmplY3QtPmFycmF5QnVmZmVyU3BlY2llc1dhdGNo
cG9pbnRTZXQobW9kZSkuc3RhdGVPbkpTVGhyZWFkKCkgPT0gQ2xlYXJXYXRjaHBvaW50KSB7Cisg
ICAgICAgIGRhdGFMb2dMbklmKEpTQXJyYXlCdWZmZXJQcm90b3R5cGVJbnRlcm5hbDo6dmVyYm9z
ZSwgIkluaXRpYWxpemluZyBBcnJheUJ1ZmZlciBzcGVjaWVzIHdhdGNocG9pbnRzIGZvciBBcnJh
eUJ1ZmZlci5wcm90b3R5cGU6ICIsIHBvaW50ZXJEdW1wKHByb3RvdHlwZSksICIgd2l0aCBzdHJ1
Y3R1cmU6ICIsIHBvaW50ZXJEdW1wKHByb3RvdHlwZS0+c3RydWN0dXJlKHZtKSksICJcbmFuZCBB
cnJheUJ1ZmZlcjogIiwgcG9pbnRlckR1bXAoZ2xvYmFsT2JqZWN0LT5hcnJheUJ1ZmZlckNvbnN0
cnVjdG9yKG1vZGUpKSwgIiB3aXRoIHN0cnVjdHVyZTogIiwgcG9pbnRlckR1bXAoZ2xvYmFsT2Jq
ZWN0LT5hcnJheUJ1ZmZlckNvbnN0cnVjdG9yKG1vZGUpLT5zdHJ1Y3R1cmUodm0pKSk7CisgICAg
ICAgIGdsb2JhbE9iamVjdC0+dHJ5SW5zdGFsbEFycmF5QnVmZmVyU3BlY2llc1dhdGNocG9pbnQo
bW9kZSk7CisgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3QtPmFycmF5QnVmZmVyU3BlY2llc1dh
dGNocG9pbnRTZXQobW9kZSkuc3RhdGVPbkpTVGhyZWFkKCkgIT0gQ2xlYXJXYXRjaHBvaW50KTsK
KyAgICB9CisKKyAgICByZXR1cm4gIXRoaXNPYmplY3QtPmhhc0N1c3RvbVByb3BlcnRpZXModm0p
CisgICAgICAgICYmIHByb3RvdHlwZSA9PSB0aGlzT2JqZWN0LT5nZXRQcm90b3R5cGVEaXJlY3Qo
dm0pCisgICAgICAgICYmIGdsb2JhbE9iamVjdC0+YXJyYXlCdWZmZXJTcGVjaWVzV2F0Y2hwb2lu
dFNldChtb2RlKS5zdGF0ZU9uSlNUaHJlYWQoKSA9PSBJc1dhdGNoZWQ7Cit9CisKK2VudW0gY2xh
c3MgU3BlY2llc0NvbnN0cnVjdFJlc3VsdCB7CisgICAgRmFzdFBhdGgsCisgICAgRXhjZXB0aW9u
LAorICAgIENyZWF0ZWRPYmplY3QKK307CisKK3N0YXRpYyBBTFdBWVNfSU5MSU5FIHN0ZDo6cGFp
cjxTcGVjaWVzQ29uc3RydWN0UmVzdWx0LCBKU0FycmF5QnVmZmVyKj4gc3BlY2llc0NvbnN0cnVj
dEFycmF5QnVmZmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQXJyYXlCdWZmZXIq
IHRoaXNPYmplY3QsIHVuc2lnbmVkIGxlbmd0aCwgQXJyYXlCdWZmZXJTaGFyaW5nTW9kZSBtb2Rl
KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvIGV4Y2VwdGlvblJlc3VsdCA9IFtd
ICgpIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKFNwZWNpZXNDb25zdHJ1Y3RSZXN1
bHQ6OkV4Y2VwdGlvbiwgbnVsbHB0cik7CisgICAgfTsKKworICAgIC8vIEZhc3QgcGF0aCBpbiB0
aGUgbm9ybWFsIGNhc2Ugd2hlcmUgdGhlIHVzZXIgaGFzIG5vdCBzZXQgYW4gb3duIGNvbnN0cnVj
dG9yIGFuZCB0aGUgQXJyYXlCdWZmZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yIGlzIG5vcm1hbC4K
KyAgICAvLyBXZSBuZWVkIHByb3RvdHlwZSBjaGVjayBmb3Igc3ViY2xhc3NlcyBvZiBBcnJheUJ1
ZmZlciwgd2hpY2ggYXJlIEFycmF5QnVmZmVyIG9iamVjdHMgYnV0IGhhdmUgYSBkaWZmZXJlbnQg
cHJvdG90eXBlIGJ5IGRlZmF1bHQuCisgICAgYm9vbCBpc1ZhbGlkID0gc3BlY2llc1dhdGNocG9p
bnRJc1ZhbGlkKHZtLCB0aGlzT2JqZWN0LCBtb2RlKTsKKyAgICBzY29wZS5hc3NlcnROb0V4Y2Vw
dGlvbigpOworICAgIGlmIChMSUtFTFkoaXNWYWxpZCkpCisgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfcGFpcihTcGVjaWVzQ29uc3RydWN0UmVzdWx0OjpGYXN0UGF0aCwgbnVsbHB0cik7CisKKyAg
ICBKU1ZhbHVlIGNvbnN0cnVjdG9yID0gdGhpc09iamVjdC0+Z2V0KGdsb2JhbE9iamVjdCwgdm0u
cHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGV4Y2VwdGlvblJlc3VsdCgpKTsKKyAgICBpZiAoY29uc3RydWN0b3IuaXNDb25zdHJ1Y3Rv
cih2bSkpIHsKKyAgICAgICAgSlNPYmplY3QqIGNvbnN0cnVjdG9yT2JqZWN0ID0ganNDYXN0PEpT
T2JqZWN0Kj4oY29uc3RydWN0b3IpOworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0RnJvbUNvbnN0cnVjdG9yID0gY29uc3RydWN0b3JPYmplY3QtPmdsb2JhbE9iamVjdCh2bSk7
CisgICAgICAgIGJvb2wgaXNBcnJheUJ1ZmZlckNvbnN0cnVjdG9yRnJvbUFub3RoZXJSZWFsbSA9
IGdsb2JhbE9iamVjdCAhPSBnbG9iYWxPYmplY3RGcm9tQ29uc3RydWN0b3IKKyAgICAgICAgICAg
ICYmIGNvbnN0cnVjdG9yT2JqZWN0ID09IGdsb2JhbE9iamVjdEZyb21Db25zdHJ1Y3Rvci0+YXJy
YXlCdWZmZXJDb25zdHJ1Y3Rvcihtb2RlKTsKKyAgICAgICAgaWYgKGlzQXJyYXlCdWZmZXJDb25z
dHJ1Y3RvckZyb21Bbm90aGVyUmVhbG0pCisgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3Bh
aXIoU3BlY2llc0NvbnN0cnVjdFJlc3VsdDo6RmFzdFBhdGgsIG51bGxwdHIpOworICAgIH0KKyAg
ICBpZiAoY29uc3RydWN0b3IuaXNPYmplY3QoKSkgeworICAgICAgICBjb25zdHJ1Y3RvciA9IGNv
bnN0cnVjdG9yLmdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnNwZWNpZXNTeW1i
b2wpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBleGNlcHRpb25SZXN1bHQo
KSk7CisgICAgICAgIGlmIChjb25zdHJ1Y3Rvci5pc051bGwoKSkKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om1ha2VfcGFpcihTcGVjaWVzQ29uc3RydWN0UmVzdWx0OjpGYXN0UGF0aCwgbnVsbHB0
cik7CisgICAgfQorCisgICAgaWYgKGNvbnN0cnVjdG9yLmlzVW5kZWZpbmVkKCkpCisgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfcGFpcihTcGVjaWVzQ29uc3RydWN0UmVzdWx0OjpGYXN0UGF0aCwg
bnVsbHB0cik7CisKKyAgICAvLyAxNi4gTGV0IG5ldyBiZSA/IENvbnN0cnVjdChjdG9yLCDCqyDw
nZS9KG5ld0xlbikgwrspLgorICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CisgICAgYXJn
cy5hcHBlbmQoanNOdW1iZXIobGVuZ3RoKSk7CisgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93
ZWQoKSk7CisgICAgSlNPYmplY3QqIG5ld09iamVjdCA9IGNvbnN0cnVjdChnbG9iYWxPYmplY3Qs
IGNvbnN0cnVjdG9yLCBhcmdzLCAiU3BlY2llcyBjb25zdHJ1Y3Rpb24gZGlkIG5vdCBnZXQgYSB2
YWxpZCBjb25zdHJ1Y3RvciIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGV4Y2Vw
dGlvblJlc3VsdCgpKTsKKworICAgIC8vIDE3LiBQZXJmb3JtID8gUmVxdWlyZUludGVybmFsU2xv
dChuZXcsIFtbQXJyYXlCdWZmZXJEYXRhXV0pLgorICAgIEpTQXJyYXlCdWZmZXIqIHJlc3VsdCA9
IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KHZtLCBuZXdPYmplY3QpOworICAgIGlmIChV
TkxJS0VMWSghcmVzdWx0KSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiU3BlY2llcyBjb25zdHJ1Y3Rpb24gZG9lcyBub3QgY3JlYXRlIEFycmF5QnVmZmVy
Il9zKTsKKyAgICAgICAgcmV0dXJuIGV4Y2VwdGlvblJlc3VsdCgpOworICAgIH0KKworICAgIGlm
IChtb2RlID09IEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OkRlZmF1bHQpIHsKKyAgICAgICAgLy8g
MTguIElmIElzU2hhcmVkQXJyYXlCdWZmZXIobmV3KSBpcyB0cnVlLCB0aHJvdyBhIFR5cGVFcnJv
ciBleGNlcHRpb24uCisgICAgICAgIGlmIChyZXN1bHQtPmlzU2hhcmVkKCkpIHsKKyAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJBcnJheUJ1ZmZlci5wcm90
b3R5cGUuc2xpY2UgY3JlYXRlcyBTaGFyZWRBcnJheUJ1ZmZlciJfcyk7CisgICAgICAgICAgICBy
ZXR1cm4gZXhjZXB0aW9uUmVzdWx0KCk7CisgICAgICAgIH0KKyAgICAgICAgLy8gMTkuIElmIElz
RGV0YWNoZWRCdWZmZXIobmV3KSBpcyB0cnVlLCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24u
CisgICAgICAgIGlmIChyZXN1bHQtPmltcGwoKS0+aXNEZXRhY2hlZCgpKSB7CisgICAgICAgICAg
ICB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDcmVhdGVkIEFycmF5QnVm
ZmVyIGlzIGRldGFjaGVkIl9zKTsKKyAgICAgICAgICAgIHJldHVybiBleGNlcHRpb25SZXN1bHQo
KTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIC8vIDE3LiBJZiBJc1NoYXJlZEFy
cmF5QnVmZmVyKG5ldykgaXMgZmFsc2UsIHRocm93IGEgVHlwZUVycm9yIGV4Y2VwdGlvbi4KKyAg
ICAgICAgaWYgKCFyZXN1bHQtPmlzU2hhcmVkKCkpIHsKKyAgICAgICAgICAgIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJTaGFyZWRBcnJheUJ1ZmZlci5wcm90b3R5cGUuc2xp
Y2UgY3JlYXRlcyBub24tc2hhcmVkIEFycmF5QnVmZmVyIl9zKTsKKyAgICAgICAgICAgIHJldHVy
biBleGNlcHRpb25SZXN1bHQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIDIwLiBJZiBT
YW1lVmFsdWUobmV3LCBPKSBpcyB0cnVlLCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCisg
ICAgaWYgKHJlc3VsdCA9PSB0aGlzT2JqZWN0KSB7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlNwZWNpZXMgY29uc3RydWN0aW9uIHJldHVybnMgc2FtZSBB
cnJheUJ1ZmZlciB0byBhIHJlY2VpdmVyIl9zKTsKKyAgICAgICAgcmV0dXJuIGV4Y2VwdGlvblJl
c3VsdCgpOworICAgIH0KKworICAgIC8vIDIxLiBJZiBuZXcuW1tBcnJheUJ1ZmZlckJ5dGVMZW5n
dGhdXSA8IG5ld0xlbiwgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uLgorICAgIGlmIChyZXN1
bHQtPmltcGwoKS0+Ynl0ZUxlbmd0aCgpIDwgbGVuZ3RoKSB7CisgICAgICAgIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlNwZWNpZXMgY29uc3RydWN0aW9uIHJldHVybnMg
QXJyYXlCdWZmZXIgd2hpY2ggYnl0ZUxlbmd0aCBpcyBsZXNzIHRoYW4gcmVxdWVzdGVkIl9zKTsK
KyAgICAgICAgcmV0dXJuIGV4Y2VwdGlvblJlc3VsdCgpOworICAgIH0KKworICAgIHJldHVybiBz
dGQ6Om1ha2VfcGFpcihTcGVjaWVzQ29uc3RydWN0UmVzdWx0OjpDcmVhdGVkT2JqZWN0LCByZXN1
bHQpOworfQorCisKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBhcnJheUJ1ZmZlclNsaWNlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgYXJyYXlCdWZmZXJWYWx1ZSwgSlNWYWx1
ZSBzdGFydFZhbHVlLCBKU1ZhbHVlIGVuZFZhbHVlLCBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlIG1v
ZGUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAorICAgIC8vIDIuIFBlcmZvcm0gPyBSZXF1aXJl
SW50ZXJuYWxTbG90KE8sIFtbQXJyYXlCdWZmZXJEYXRhXV0pLgorICAgIC8vIDMuIElmIElzU2hh
cmVkQXJyYXlCdWZmZXIoTykgaXMgdHJ1ZSwgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uLgog
ICAgIEpTQXJyYXlCdWZmZXIqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZm
ZXIqPih2bSwgYXJyYXlCdWZmZXJWYWx1ZSk7CiAgICAgaWYgKCF0aGlzT2JqZWN0IHx8IChtb2Rl
ICE9IHRoaXNPYmplY3QtPmltcGwoKS0+c2hhcmluZ01vZGUoKSkpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIG1ha2VTdHJpbmcoIlJlY2VpdmVy
IG11c3QgYmUgIl9zLCBtb2RlID09IEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OkRlZmF1bHQgPyAi
QXJyYXlCdWZmZXIiX3MgOiAiU2hhcmVkQXJyYXlCdWZmZXIiX3MpKTsKIAorICAgIC8vIDQuIElm
IElzRGV0YWNoZWRCdWZmZXIoTykgaXMgdHJ1ZSwgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9u
LgogICAgIGlmIChtb2RlID09IEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OkRlZmF1bHQgJiYgdGhp
c09iamVjdC0+aW1wbCgpLT5pc0RldGFjaGVkKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZlciBpcyBkZXRhY2hlZCJfcyk7CiAK
LSAgICBkb3VibGUgYmVnaW4gPSBzdGFydFZhbHVlLnRvSW50ZWdlck9ySW5maW5pdHkoZ2xvYmFs
T2JqZWN0KTsKKyAgICAvLyA1LiBMZXQgbGVuIGJlIE8uW1tBcnJheUJ1ZmZlckJ5dGVMZW5ndGhd
XS4KKyAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gdGhpc09iamVjdC0+aW1wbCgpLT5ieXRlTGVu
Z3RoKCk7CisgICAgdW5zaWduZWQgZmlyc3RJbmRleCA9IDA7CisgICAgZG91YmxlIHJlbGF0aXZl
U3RhcnQgPSBzdGFydFZhbHVlLnRvSW50ZWdlck9ySW5maW5pdHkoZ2xvYmFsT2JqZWN0KTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBpZiAo
cmVsYXRpdmVTdGFydCA8IDApCisgICAgICAgIGZpcnN0SW5kZXggPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oc3RkOjptYXg8ZG91YmxlPihieXRlTGVuZ3RoICsgcmVsYXRpdmVTdGFydCwgMCkpOwor
ICAgIGVsc2UKKyAgICAgICAgZmlyc3RJbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGQ6
Om1pbjxkb3VibGU+KHJlbGF0aXZlU3RhcnQsIGJ5dGVMZW5ndGgpKTsKKyAgICBBU1NFUlQoZmly
c3RJbmRleCA+PSAwKTsKKyAgICBBU1NFUlQoZmlyc3RJbmRleCA8PSBieXRlTGVuZ3RoKTsKIAot
ICAgIGRvdWJsZSBlbmQ7CisgICAgdW5zaWduZWQgZmluYWxJbmRleCA9IDA7CiAgICAgaWYgKCFl
bmRWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgIGVuZCA9IGVuZFZhbHVlLnRvSW50ZWdl
ck9ySW5maW5pdHkoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgZG91YmxlIHJlbGF0aXZlRW5kID0g
ZW5kVmFsdWUudG9JbnRlZ2VyT3JJbmZpbml0eShnbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICAgICAgaWYgKHJl
bGF0aXZlRW5kIDwgMCkKKyAgICAgICAgICAgIGZpbmFsSW5kZXggPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oc3RkOjptYXg8ZG91YmxlPihieXRlTGVuZ3RoICsgcmVsYXRpdmVFbmQsIDApKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgZmluYWxJbmRleCA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihzdGQ6Om1pbjxkb3VibGU+KHJlbGF0aXZlRW5kLCBieXRlTGVuZ3RoKSk7CiAgICAgfSBlbHNl
Ci0gICAgICAgIGVuZCA9IHRoaXNPYmplY3QtPmltcGwoKS0+Ynl0ZUxlbmd0aCgpOworICAgICAg
ICBmaW5hbEluZGV4ID0gdGhpc09iamVjdC0+aW1wbCgpLT5ieXRlTGVuZ3RoKCk7CisgICAgQVNT
RVJUKGZpbmFsSW5kZXggPj0gMCk7CisgICAgQVNTRVJUKGZpbmFsSW5kZXggPD0gYnl0ZUxlbmd0
aCk7CisKKyAgICAvLyAxNC4gTGV0IG5ld0xlbiBiZSBtYXgoZmluYWwgLSBmaXJzdCwgMCkuCisg
ICAgdW5zaWduZWQgbmV3TGVuZ3RoID0gKGZpbmFsSW5kZXggPj0gZmlyc3RJbmRleCkgPyBmaW5h
bEluZGV4IC0gZmlyc3RJbmRleCA6IDA7CisKKyAgICAvLyAxNS4gTGV0IGN0b3IgYmUgPyBTcGVj
aWVzQ29uc3RydWN0b3IoTywgJUFycmF5QnVmZmVyJSkuCisgICAgYXV0byBzcGVjaWVzUmVzdWx0
ID0gc3BlY2llc0NvbnN0cnVjdEFycmF5QnVmZmVyKGdsb2JhbE9iamVjdCwgdGhpc09iamVjdCwg
bmV3TGVuZ3RoLCBtb2RlKTsKKyAgICAvLyBXZSBjYW4gb25seSBnZXQgYW4gZXhjZXB0aW9uIGlm
IHdlIGNhbGwgc29tZSB1c2VyIGZ1bmN0aW9uLgorICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29w
ZS5leGNlcHRpb24oKSA9PSAoc3BlY2llc1Jlc3VsdC5maXJzdCA9PSBTcGVjaWVzQ29uc3RydWN0
UmVzdWx0OjpFeGNlcHRpb24pKTsKKyAgICBpZiAoVU5MSUtFTFkoc3BlY2llc1Jlc3VsdC5maXJz
dCA9PSBTcGVjaWVzQ29uc3RydWN0UmVzdWx0OjpFeGNlcHRpb24pKQorICAgICAgICByZXR1cm4g
eyB9OwogCiAgICAgLy8gMjMuIElmIElzRGV0YWNoZWRCdWZmZXIoTykgaXMgdHJ1ZSwgdGhyb3cg
YSBUeXBlRXJyb3IgZXhjZXB0aW9uLgotICAgIC8vIENoZWNrIGRldGFjaCBzdGF0dXMgYWdhaW4g
c2luY2UgdG9JbnRlZ2VyT3JJbmZpbml0eSBjYW4gaGF2ZSBzaWRlIGVmZmVjdC4KICAgICBpZiAo
bW9kZSA9PSBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlOjpEZWZhdWx0ICYmIHRoaXNPYmplY3QtPmlt
cGwoKS0+aXNEZXRhY2hlZCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIgaXMgZGV0YWNoZWQiX3MpOwogCi0gICAgYXV0byBu
ZXdCdWZmZXIgPSB0aGlzT2JqZWN0LT5pbXBsKCktPnNsaWNlKGJlZ2luLCBlbmQpOwotICAgIGlm
ICghbmV3QnVmZmVyKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZN
ZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKSk7Ci0KLSAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IGdsb2JhbE9iamVjdC0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUobmV3QnVmZmVyLT5zaGFy
aW5nTW9kZSgpKTsKLQotICAgIEpTQXJyYXlCdWZmZXIqIHJlc3VsdCA9IEpTQXJyYXlCdWZmZXI6
OmNyZWF0ZSh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKG5ld0J1ZmZlcikpOworICAgIGlmIChMSUtF
TFkoc3BlY2llc1Jlc3VsdC5maXJzdCA9PSBTcGVjaWVzQ29uc3RydWN0UmVzdWx0OjpGYXN0UGF0
aCkpIHsKKyAgICAgICAgQVNTRVJUKCF0aGlzT2JqZWN0LT5pbXBsKCktPmlzRGV0YWNoZWQoKSk7
CisgICAgICAgIGF1dG8gbmV3QnVmZmVyID0gdGhpc09iamVjdC0+aW1wbCgpLT5zbGljZVdpdGhD
bGFtcGVkSW5kZXgoZmlyc3RJbmRleCwgZmluYWxJbmRleCk7CisgICAgICAgIGlmICghbmV3QnVm
ZmVyKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd091dE9mTWVtb3J5
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSkpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IGdsb2JhbE9iamVjdC0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUobmV3QnVmZmVyLT5zaGFyaW5n
TW9kZSgpKTsKKyAgICAgICAgSlNBcnJheUJ1ZmZlciogcmVzdWx0ID0gSlNBcnJheUJ1ZmZlcjo6
Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUobmV3QnVmZmVyKSk7CisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAgICB9CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7CisgICAgLy8gMjQuIExldCBmcm9tQnVmIGJlIE8uW1tBcnJheUJ1ZmZl
ckRhdGFdXS4KKyAgICAvLyAyNS4gTGV0IHRvQnVmIGJlIG5ldy5bW0FycmF5QnVmZmVyRGF0YV1d
LgorICAgIC8vIDI2LiBQZXJmb3JtIENvcHlEYXRhQmxvY2tCeXRlcyh0b0J1ZiwgMCwgZnJvbUJ1
ZiwgZmlyc3QsIG5ld0xlbikuCisgICAgSlNBcnJheUJ1ZmZlciogbmV3T2JqZWN0ID0gc3BlY2ll
c1Jlc3VsdC5zZWNvbmQ7CisgICAgQVNTRVJUKCF0aGlzT2JqZWN0LT5pbXBsKCktPmlzRGV0YWNo
ZWQoKSk7CisgICAgQVNTRVJUKCFuZXdPYmplY3QtPmltcGwoKS0+aXNEZXRhY2hlZCgpKTsKKyAg
ICBBU1NFUlQobmV3T2JqZWN0LT5pbXBsKCktPmJ5dGVMZW5ndGgoKSA+PSBuZXdMZW5ndGgpOwor
ICAgIG1lbWNweShuZXdPYmplY3QtPmltcGwoKS0+ZGF0YSgpLCBzdGF0aWNfY2FzdDxjb25zdCBj
aGFyKj4odGhpc09iamVjdC0+aW1wbCgpLT5kYXRhKCkpICsgZmlyc3RJbmRleCwgbmV3TGVuZ3Ro
KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG5ld09iamVjdCk7CiB9CiAKIHN0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBhcnJheUJ1ZmZlckJ5dGVMZW5ndGgoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBhcnJheUJ1ZmZlclZhbHVlLCBBcnJheUJ1ZmZlclNoYXJpbmdNb2Rl
IG1vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKaW5kZXggYjVjNWYxNDcwODg2MTI2OGYwOTQxOWViNTJkY2Y1OTc5NDY3ZjRiOS4uYWQ3
NGNkNjJlMzAwNDZkMTY3YWUzNzZiNjg1YzMyODQzYjdiZTMwMCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNDk5LDcgKzQ5OSw2
IEBAIEpTR2xvYmFsT2JqZWN0OjpKU0dsb2JhbE9iamVjdChWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBjb25zdCBHbG9iYWxPYmplY3RNCiAgICAgLCBtX3N0cmluZ0l0ZXJhdG9yUHJvdG9j
b2xXYXRjaHBvaW50U2V0KElzV2F0Y2hlZCkKICAgICAsIG1fbWFwU2V0V2F0Y2hwb2ludFNldChJ
c1dhdGNoZWQpCiAgICAgLCBtX3NldEFkZFdhdGNocG9pbnRTZXQoSXNXYXRjaGVkKQotICAgICwg
bV9hcnJheVNwZWNpZXNXYXRjaHBvaW50U2V0KENsZWFyV2F0Y2hwb2ludCkKICAgICAsIG1fYXJy
YXlKb2luV2F0Y2hwb2ludFNldChJc1dhdGNoZWQpCiAgICAgLCBtX251bWJlclRvU3RyaW5nV2F0
Y2hwb2ludFNldChJc1dhdGNoZWQpCiAgICAgLCBtX3J1bnRpbWVGbGFncygpCkBAIC04MzAsMTIg
KzgyOSwxNCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZNJiB2bSkKICAgICAgICAgICAg
IGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBpbml0Lm93bmVyLCAxLCBpbml0
LnZtLnByb3BlcnR5TmFtZXMtPnBhcnNlRmxvYXQuc3RyaW5nKCksIGdsb2JhbEZ1bmNQYXJzZUZs
b2F0LCBOb0ludHJpbnNpYykpOwogICAgICAgICB9KTsKIAotI2lmIEVOQUJMRShTSEFSRURfQVJS
QVlfQlVGRkVSKQogICAgIGlmIChPcHRpb25zOjp1c2VTaGFyZWRBcnJheUJ1ZmZlcigpKSB7Ci0g
ICAgICAgIG1fc2hhcmVkQXJyYXlCdWZmZXJQcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBKU0FycmF5
QnVmZmVyUHJvdG90eXBlOjpjcmVhdGUodm0sIHRoaXMsIEpTQXJyYXlCdWZmZXJQcm90b3R5cGU6
OmNyZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpLCBBcnJh
eUJ1ZmZlclNoYXJpbmdNb2RlOjpTaGFyZWQpKTsKLSAgICAgICAgbV9zaGFyZWRBcnJheUJ1ZmZl
clN0cnVjdHVyZS5zZXQodm0sIHRoaXMsIEpTQXJyYXlCdWZmZXI6OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgdGhpcywgbV9zaGFyZWRBcnJheUJ1ZmZlclByb3RvdHlwZS5nZXQoKSkpOworICAgICAgICBt
X3NoYXJlZEFycmF5QnVmZmVyU3RydWN0dXJlLmluaXRMYXRlcigKKyAgICAgICAgICAgIFtdIChM
YXp5Q2xhc3NTdHJ1Y3R1cmU6OkluaXRpYWxpemVyJiBpbml0KSB7CisgICAgICAgICAgICAgICAg
aW5pdC5zZXRQcm90b3R5cGUoSlNBcnJheUJ1ZmZlclByb3RvdHlwZTo6Y3JlYXRlKGluaXQudm0s
IGluaXQuZ2xvYmFsLCBKU0FycmF5QnVmZmVyUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5p
dC52bSwgaW5pdC5nbG9iYWwsIGluaXQuZ2xvYmFsLT5tX29iamVjdFByb3RvdHlwZS5nZXQoKSks
IEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OlNoYXJlZCkpOworICAgICAgICAgICAgICAgIGluaXQu
c2V0U3RydWN0dXJlKEpTQXJyYXlCdWZmZXI6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBpbml0
Lmdsb2JhbCwgaW5pdC5wcm90b3R5cGUpKTsKKyAgICAgICAgICAgICAgICBpbml0LnNldENvbnN0
cnVjdG9yKEpTU2hhcmVkQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGluaXQudm0sIEpT
U2hhcmVkQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGlu
aXQuZ2xvYmFsLCBpbml0Lmdsb2JhbC0+bV9mdW5jdGlvblByb3RvdHlwZS5nZXQoKSksIGpzQ2Fz
dDxKU0FycmF5QnVmZmVyUHJvdG90eXBlKj4oaW5pdC5wcm90b3R5cGUpLCBpbml0Lmdsb2JhbC0+
bV9zcGVjaWVzR2V0dGVyU2V0dGVyLmdldCgpKSk7CisgICAgICAgICAgICB9KTsKICAgICB9Ci0j
ZW5kaWYKIAogICAgIG1faXRlcmF0b3JQcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBJdGVyYXRvclBy
b3RvdHlwZTo6Y3JlYXRlKHZtLCB0aGlzLCBJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0
dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSkpKTsKICAgICBtX2FzeW5jSXRl
cmF0b3JQcm90b3R5cGUuc2V0KHZtLCB0aGlzLCBBc3luY0l0ZXJhdG9yUHJvdG90eXBlOjpjcmVh
dGUodm0sIHRoaXMsIEFzeW5jSXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSh2bSwg
dGhpcywgbV9vYmplY3RQcm90b3R5cGUuZ2V0KCkpKSk7CkBAIC05MDAsMTYgKzkwMSw5IEBAIHZv
aWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgIG1fbGlua1RpbWVDb25zdGFudHNb
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6OlJlZ0V4cCldLnNldCh2bSwg
dGhpcywgcmVnRXhwQ29uc3RydWN0b3IpOwogICAgIG1fcmVnRXhwR2xvYmFsRGF0YS5jYWNoZWRS
ZXN1bHQoKS5yZWNvcmQodm0sIHRoaXMsIG51bGxwdHIsIGpzRW1wdHlTdHJpbmcodm0pLCBNYXRj
aFJlc3VsdCgwLCAwKSk7CiAgICAgCi0jaWYgRU5BQkxFKFNIQVJFRF9BUlJBWV9CVUZGRVIpCi0g
ICAgSlNTaGFyZWRBcnJheUJ1ZmZlckNvbnN0cnVjdG9yKiBzaGFyZWRBcnJheUJ1ZmZlckNvbnN0
cnVjdG9yID0gbnVsbHB0cjsKICAgICBBdG9taWNzT2JqZWN0KiBhdG9taWNzT2JqZWN0ID0gbnVs
bHB0cjsKLSAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkQXJyYXlCdWZmZXIoKSkgewotICAgICAg
ICBzaGFyZWRBcnJheUJ1ZmZlckNvbnN0cnVjdG9yID0gSlNTaGFyZWRBcnJheUJ1ZmZlckNvbnN0
cnVjdG9yOjpjcmVhdGUodm0sIEpTU2hhcmVkQXJyYXlCdWZmZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRl
U3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgbV9zaGFyZWRB
cnJheUJ1ZmZlclByb3RvdHlwZS5nZXQoKSwgbV9zcGVjaWVzR2V0dGVyU2V0dGVyLmdldCgpKTsK
LSAgICAgICAgbV9zaGFyZWRBcnJheUJ1ZmZlclByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBzaGFyZWRBcnJheUJ1
ZmZlckNvbnN0cnVjdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSk7Ci0KKyAgICBpZiAoT3B0aW9uczo6dXNlU2hhcmVkQXJyYXlCdWZmZXIoKSkK
ICAgICAgICAgYXRvbWljc09iamVjdCA9IEF0b21pY3NPYmplY3Q6OmNyZWF0ZSh2bSwgdGhpcywg
QXRvbWljc09iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX29iamVjdFByb3RvdHlw
ZS5nZXQoKSkpOwotICAgIH0KLSNlbmRpZgogCiAjZGVmaW5lIENSRUFURV9DT05TVFJVQ1RPUl9G
T1JfU0lNUExFX1RZUEUoY2FwaXRhbE5hbWUsIGxvd2VyTmFtZSwgcHJvcGVyTmFtZSwgaW5zdGFu
Y2VUeXBlLCBqc05hbWUsIHByb3RvdHlwZUJhc2UsIGZlYXR1cmVGbGFnKSBcCiBjYXBpdGFsTmFt
ZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcg
PyBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBjYXBpdGFsTmFtZSAjIyBD
b25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzLCBtX2Z1bmN0aW9uUHJvdG90eXBl
LmdldCgpKSwgbV8gIyMgbG93ZXJOYW1lICMjIFByb3RvdHlwZS5nZXQoKSwgbV9zcGVjaWVzR2V0
dGVyU2V0dGVyLmdldCgpKSA6IG51bGxwdHI7IFwKQEAgLTk4NywxMiArOTgxLDEwIEBAIGNhcGl0
YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJl
RmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZt
LnByb3BlcnR5TmFtZXMtPkFycmF5LCBhcnJheUNvbnN0cnVjdG9yLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPlJlZ0V4cCwgcmVnRXhwQ29uc3RydWN0
b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsK
IAotI2lmIEVOQUJMRShTSEFSRURfQVJSQVlfQlVGRkVSKQogICAgIGlmIChPcHRpb25zOjp1c2VT
aGFyZWRBcnJheUJ1ZmZlcigpKSB7Ci0gICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5TaGFyZWRBcnJheUJ1ZmZlciwgc2hhcmVkQXJyYXlCdWZm
ZXJDb25zdHJ1Y3Rvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSkpOworICAgICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+U2hhcmVkQXJyYXlCdWZmZXIsIG1fc2hhcmVkQXJyYXlCdWZmZXJTdHJ1Y3R1
cmUuY29uc3RydWN0b3IodGhpcyksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pKTsKICAgICAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPkF0b21pY3MsIGF0b21pY3NPYmplY3QsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICB9Ci0jZW5kaWYKIAog
I2RlZmluZSBQVVRfQ09OU1RSVUNUT1JfRk9SX1NJTVBMRV9UWVBFKGNhcGl0YWxOYW1lLCBsb3dl
ck5hbWUsIHByb3Blck5hbWUsIGluc3RhbmNlVHlwZSwganNOYW1lLCBwcm90b3R5cGVCYXNlLCBm
ZWF0dXJlRmxhZykgXAogICAgIGlmIChmZWF0dXJlRmxhZykgXApAQCAtMjAzMywxNCArMjAyNSwx
MCBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xv
dFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdGhpc09iamVjdC0+bV9wcm94eU9iamVjdFN0cnVjdHVy
ZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2NhbGxhYmxlUHJveHlPYmplY3RT
dHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9wcm94eVJldm9rZVN0
cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKKyAgICB0aGlzT2JqZWN0LT5tX3NoYXJlZEFycmF5QnVm
ZmVyU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogCiAgICAgZm9yIChhdXRvJiBwcm9wZXJ0eSA6
IHRoaXNPYmplY3QtPm1fbGlua1RpbWVDb25zdGFudHMpCiAgICAgICAgIHByb3BlcnR5LnZpc2l0
KHZpc2l0b3IpOwotICAgIAotI2lmIEVOQUJMRShTSEFSRURfQVJSQVlfQlVGRkVSKQotICAgIHZp
c2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fc2hhcmVkQXJyYXlCdWZmZXJQcm90b3R5cGUpOwot
ICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fc2hhcmVkQXJyYXlCdWZmZXJTdHJ1Y3R1
cmUpOwotI2VuZGlmCiAKICNkZWZpbmUgVklTSVRfU0lNUExFX1RZUEUoQ2FwaXRhbE5hbWUsIGxv
d2VyTmFtZSwgcHJvcGVyTmFtZSwgaW5zdGFuY2VUeXBlLCBqc05hbWUsIHByb3RvdHlwZUJhc2Us
IGZlYXR1cmVGbGFnKSBpZiAoZmVhdHVyZUZsYWcpIHsgXAogICAgICAgICB2aXNpdG9yLmFwcGVu
ZCh0aGlzT2JqZWN0LT5tXyAjIyBsb3dlck5hbWUgIyMgUHJvdG90eXBlKTsgXApAQCAtMjEzNiw0
OCArMjEyNCw0NSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpjbGVhclJhcmVEYXRhKEpTQ2VsbCog
Y2VsbCkKICAgICBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihjZWxsKS0+bV9yYXJlRGF0YSA9IG51
bGxwdHI7CiB9CiAKLXZvaWQgSlNHbG9iYWxPYmplY3Q6OnRyeUluc3RhbGxBcnJheVNwZWNpZXNX
YXRjaHBvaW50KCkKK3ZvaWQgSlNHbG9iYWxPYmplY3Q6OnRyeUluc3RhbGxTcGVjaWVzV2F0Y2hw
b2ludChKU09iamVjdCogcHJvdG90eXBlLCBKU09iamVjdCogY29uc3RydWN0b3IsIHN0ZDo6dW5p
cXVlX3B0cjxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRj
aHBvaW50U2V0Pj4mIGNvbnN0cnVjdG9yV2F0Y2hwb2ludCwgc3RkOjp1bmlxdWVfcHRyPE9iamVj
dFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+PiYg
c3BlY2llc1dhdGNocG9pbnQsIElubGluZVdhdGNocG9pbnRTZXQmIHNwZWNpZXNXYXRjaHBvaW50
U2V0KQogewotICAgIFJFTEVBU0VfQVNTRVJUKCFtX2FycmF5UHJvdG90eXBlQ29uc3RydWN0b3JX
YXRjaHBvaW50KTsKLSAgICBSRUxFQVNFX0FTU0VSVCghbV9hcnJheUNvbnN0cnVjdG9yU3BlY2ll
c1dhdGNocG9pbnQpOworICAgIFJFTEVBU0VfQVNTRVJUKCFjb25zdHJ1Y3RvcldhdGNocG9pbnQp
OworICAgIFJFTEVBU0VfQVNTRVJUKCFzcGVjaWVzV2F0Y2hwb2ludCk7CiAKICAgICBWTSYgdm0g
PSB0aGlzLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IAotICAgIC8vIEZpcnN0IHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIEFycmF5LnByb3Rv
dHlwZS5jb25zdHJ1Y3RvciBwcm9wZXJ0eSBwb2ludHMgdG8gQXJyYXkKLSAgICAvLyBhbmQgdGhh
dCBBcnJheVtTeW1ib2wuc3BlY2llc10gaXMgdGhlIHByaW1vcmRpYWwgR2V0dGVyU2V0dGVyLgot
ICAgIEFycmF5UHJvdG90eXBlKiBhcnJheVByb3RvdHlwZSA9IHRoaXMtPmFycmF5UHJvdG90eXBl
KCk7CisgICAgLy8gRmlyc3Qgd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgJXByb3RvdHlw
ZSUuY29uc3RydWN0b3IgcHJvcGVydHkgcG9pbnRzIHRvIGEgJWNvbnN0cnVjdG9yJQorICAgIC8v
IGFuZCB0aGF0ICVjb25zdHJ1Y3RvciVbU3ltYm9sLnNwZWNpZXNdIGlzIHRoZSBwcmltb3JkaWFs
IEdldHRlclNldHRlci4KIAogICAgIC8vIFdlIG9ubHkgaW5pdGlhbGl6ZSBvbmNlIHNvIGZsYXR0
ZW5pbmcgdGhlIHN0cnVjdHVyZXMgZG9lcyBub3QgaGF2ZSBhbnkgcmVhbCBjb3N0LgotICAgIFN0
cnVjdHVyZSogcHJvdG90eXBlU3RydWN0dXJlID0gYXJyYXlQcm90b3R5cGUtPnN0cnVjdHVyZSh2
bSk7CisgICAgU3RydWN0dXJlKiBwcm90b3R5cGVTdHJ1Y3R1cmUgPSBwcm90b3R5cGUtPnN0cnVj
dHVyZSh2bSk7CiAgICAgaWYgKHByb3RvdHlwZVN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpCi0g
ICAgICAgIHByb3RvdHlwZVN0cnVjdHVyZSA9IHByb3RvdHlwZVN0cnVjdHVyZS0+ZmxhdHRlbkRp
Y3Rpb25hcnlTdHJ1Y3R1cmUodm0sIGFycmF5UHJvdG90eXBlKTsKKyAgICAgICAgcHJvdG90eXBl
U3RydWN0dXJlID0gcHJvdG90eXBlU3RydWN0dXJlLT5mbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVy
ZSh2bSwgcHJvdG90eXBlKTsKICAgICBSRUxFQVNFX0FTU0VSVCghcHJvdG90eXBlU3RydWN0dXJl
LT5pc0RpY3Rpb25hcnkoKSk7CiAKLSAgICBBcnJheUNvbnN0cnVjdG9yKiBhcnJheUNvbnN0cnVj
dG9yID0gdGhpcy0+YXJyYXlDb25zdHJ1Y3RvcigpOwotCiAgICAgYXV0byBpbnZhbGlkYXRlV2F0
Y2hwb2ludCA9IFsmXSB7Ci0gICAgICAgIG1fYXJyYXlTcGVjaWVzV2F0Y2hwb2ludFNldC5pbnZh
bGlkYXRlKHZtLCBTdHJpbmdGaXJlRGV0YWlsKCJXYXMgbm90IGFibGUgdG8gc2V0IHVwIGFycmF5
IHNwZWNpZXMgd2F0Y2hwb2ludC4iKSk7CisgICAgICAgIHNwZWNpZXNXYXRjaHBvaW50U2V0Lmlu
dmFsaWRhdGUodm0sIFN0cmluZ0ZpcmVEZXRhaWwoIldhcyBub3QgYWJsZSB0byBzZXQgdXAgc3Bl
Y2llcyB3YXRjaHBvaW50LiIpKTsKICAgICB9OwogCi0gICAgUHJvcGVydHlTbG90IGNvbnN0cnVj
dG9yU2xvdChhcnJheVByb3RvdHlwZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6
OlZNSW5xdWlyeSwgJnZtKTsKLSAgICBhcnJheVByb3RvdHlwZS0+Z2V0T3duUHJvcGVydHlTbG90
KGFycmF5UHJvdG90eXBlLCB0aGlzLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgY29u
c3RydWN0b3JTbG90KTsKKyAgICBQcm9wZXJ0eVNsb3QgY29uc3RydWN0b3JTbG90KHByb3RvdHlw
ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSwgJnZtKTsKKyAg
ICBwcm90b3R5cGUtPmdldE93blByb3BlcnR5U2xvdChwcm90b3R5cGUsIHRoaXMsIHZtLnByb3Bl
cnR5TmFtZXMtPmNvbnN0cnVjdG9yLCBjb25zdHJ1Y3RvclNsb3QpOwogICAgIHNjb3BlLmFzc2Vy
dE5vRXhjZXB0aW9uKCk7Ci0gICAgaWYgKGNvbnN0cnVjdG9yU2xvdC5zbG90QmFzZSgpICE9IGFy
cmF5UHJvdG90eXBlCisgICAgaWYgKGNvbnN0cnVjdG9yU2xvdC5zbG90QmFzZSgpICE9IHByb3Rv
dHlwZQogICAgICAgICB8fCAhY29uc3RydWN0b3JTbG90LmlzQ2FjaGVhYmxlVmFsdWUoKQotICAg
ICAgICB8fCBjb25zdHJ1Y3RvclNsb3QuZ2V0VmFsdWUodGhpcywgdm0ucHJvcGVydHlOYW1lcy0+
Y29uc3RydWN0b3IpICE9IGFycmF5Q29uc3RydWN0b3IpIHsKKyAgICAgICAgfHwgY29uc3RydWN0
b3JTbG90LmdldFZhbHVlKHRoaXMsIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yKSAhPSBj
b25zdHJ1Y3RvcikgewogICAgICAgICBpbnZhbGlkYXRlV2F0Y2hwb2ludCgpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgU3RydWN0dXJlKiBjb25zdHJ1Y3RvclN0cnVjdHVyZSA9IGFy
cmF5Q29uc3RydWN0b3ItPnN0cnVjdHVyZSh2bSk7CisgICAgU3RydWN0dXJlKiBjb25zdHJ1Y3Rv
clN0cnVjdHVyZSA9IGNvbnN0cnVjdG9yLT5zdHJ1Y3R1cmUodm0pOwogICAgIGlmIChjb25zdHJ1
Y3RvclN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpCi0gICAgICAgIGNvbnN0cnVjdG9yU3RydWN0
dXJlID0gY29uc3RydWN0b3JTdHJ1Y3R1cmUtPmZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKHZt
LCBhcnJheUNvbnN0cnVjdG9yKTsKKyAgICAgICAgY29uc3RydWN0b3JTdHJ1Y3R1cmUgPSBjb25z
dHJ1Y3RvclN0cnVjdHVyZS0+ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUodm0sIGNvbnN0cnVj
dG9yKTsKIAotICAgIFByb3BlcnR5U2xvdCBzcGVjaWVzU2xvdChhcnJheUNvbnN0cnVjdG9yLCBQ
cm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmdm0pOwotICAgIGFy
cmF5Q29uc3RydWN0b3ItPmdldE93blByb3BlcnR5U2xvdChhcnJheUNvbnN0cnVjdG9yLCB0aGlz
LCB2bS5wcm9wZXJ0eU5hbWVzLT5zcGVjaWVzU3ltYm9sLCBzcGVjaWVzU2xvdCk7CisgICAgUHJv
cGVydHlTbG90IHNwZWNpZXNTbG90KGNvbnN0cnVjdG9yLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFs
TWV0aG9kVHlwZTo6Vk1JbnF1aXJ5LCAmdm0pOworICAgIGNvbnN0cnVjdG9yLT5nZXRPd25Qcm9w
ZXJ0eVNsb3QoY29uc3RydWN0b3IsIHRoaXMsIHZtLnByb3BlcnR5TmFtZXMtPnNwZWNpZXNTeW1i
b2wsIHNwZWNpZXNTbG90KTsKICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwotICAgIGlm
IChzcGVjaWVzU2xvdC5zbG90QmFzZSgpICE9IGFycmF5Q29uc3RydWN0b3IKKyAgICBpZiAoc3Bl
Y2llc1Nsb3Quc2xvdEJhc2UoKSAhPSBjb25zdHJ1Y3RvcgogICAgICAgICB8fCAhc3BlY2llc1Ns
b3QuaXNDYWNoZWFibGVHZXR0ZXIoKQogICAgICAgICB8fCBzcGVjaWVzU2xvdC5nZXR0ZXJTZXR0
ZXIoKSAhPSBzcGVjaWVzR2V0dGVyU2V0dGVyKCkpIHsKICAgICAgICAgaW52YWxpZGF0ZVdhdGNo
cG9pbnQoKTsKQEAgLTIxODgsOCArMjE3Myw4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnRyeUlu
c3RhbGxBcnJheVNwZWNpZXNXYXRjaHBvaW50KCkKICAgICBwcm90b3R5cGVTdHJ1Y3R1cmUtPnN0
YXJ0V2F0Y2hpbmdQcm9wZXJ0eUZvclJlcGxhY2VtZW50cyh2bSwgY29uc3RydWN0b3JTbG90LmNh
Y2hlZE9mZnNldCgpKTsKICAgICBjb25zdHJ1Y3RvclN0cnVjdHVyZS0+c3RhcnRXYXRjaGluZ1By
b3BlcnR5Rm9yUmVwbGFjZW1lbnRzKHZtLCBzcGVjaWVzU2xvdC5jYWNoZWRPZmZzZXQoKSk7CiAK
LSAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBjb25zdHJ1Y3RvckNvbmRpdGlvbiA9IE9iamVj
dFByb3BlcnR5Q29uZGl0aW9uOjplcXVpdmFsZW5jZSh2bSwgYXJyYXlQcm90b3R5cGUsIGFycmF5
UHJvdG90eXBlLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rvci5pbXBsKCksIGFycmF5Q29u
c3RydWN0b3IpOwotICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIHNwZWNpZXNDb25kaXRpb24g
PSBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbjo6ZXF1aXZhbGVuY2Uodm0sIGFycmF5UHJvdG90eXBl
LCBhcnJheUNvbnN0cnVjdG9yLCB2bS5wcm9wZXJ0eU5hbWVzLT5zcGVjaWVzU3ltYm9sLmltcGwo
KSwgc3BlY2llc0dldHRlclNldHRlcigpKTsKKyAgICBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBj
b25zdHJ1Y3RvckNvbmRpdGlvbiA9IE9iamVjdFByb3BlcnR5Q29uZGl0aW9uOjplcXVpdmFsZW5j
ZSh2bSwgcHJvdG90eXBlLCBwcm90b3R5cGUsIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9y
LmltcGwoKSwgY29uc3RydWN0b3IpOworICAgIE9iamVjdFByb3BlcnR5Q29uZGl0aW9uIHNwZWNp
ZXNDb25kaXRpb24gPSBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbjo6ZXF1aXZhbGVuY2Uodm0sIHBy
b3RvdHlwZSwgY29uc3RydWN0b3IsIHZtLnByb3BlcnR5TmFtZXMtPnNwZWNpZXNTeW1ib2wuaW1w
bCgpLCBzcGVjaWVzR2V0dGVyU2V0dGVyKCkpOwogCiAgICAgaWYgKCFjb25zdHJ1Y3RvckNvbmRp
dGlvbi5pc1dhdGNoYWJsZSgpIHx8ICFzcGVjaWVzQ29uZGl0aW9uLmlzV2F0Y2hhYmxlKCkpIHsK
ICAgICAgICAgaW52YWxpZGF0ZVdhdGNocG9pbnQoKTsKQEAgLTIxOTcsMTQgKzIxODIsMzAgQEAg
dm9pZCBKU0dsb2JhbE9iamVjdDo6dHJ5SW5zdGFsbEFycmF5U3BlY2llc1dhdGNocG9pbnQoKQog
ICAgIH0KIAogICAgIC8vIFdlIG9ubHkgd2F0Y2ggdGhpcyBmcm9tIHRoZSBERkcsIGFuZCB0aGUg
REZHIG1ha2VzIHN1cmUgdG8gb25seSBzdGFydCB3YXRjaGluZyBpZiB0aGUgd2F0Y2hwb2ludCBp
cyBpbiB0aGUgSXNXYXRjaGVkIHN0YXRlLgotICAgIFJFTEVBU0VfQVNTRVJUKCFtX2FycmF5U3Bl
Y2llc1dhdGNocG9pbnRTZXQuaXNCZWluZ1dhdGNoZWQoKSk7Ci0gICAgbV9hcnJheVNwZWNpZXNX
YXRjaHBvaW50U2V0LnRvdWNoKHZtLCAiU2V0IHVwIGFycmF5IHNwZWNpZXMgd2F0Y2hwb2ludC4i
KTsKKyAgICBSRUxFQVNFX0FTU0VSVCghc3BlY2llc1dhdGNocG9pbnRTZXQuaXNCZWluZ1dhdGNo
ZWQoKSk7CisgICAgc3BlY2llc1dhdGNocG9pbnRTZXQudG91Y2godm0sICJTZXQgdXAgc3BlY2ll
cyB3YXRjaHBvaW50LiIpOworCisgICAgY29uc3RydWN0b3JXYXRjaHBvaW50ID0gbWFrZVVuaXF1
ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50
U2V0Pj4odGhpcywgY29uc3RydWN0b3JDb25kaXRpb24sIHNwZWNpZXNXYXRjaHBvaW50U2V0KTsK
KyAgICBjb25zdHJ1Y3RvcldhdGNocG9pbnQtPmluc3RhbGwodm0pOwogCi0gICAgbV9hcnJheVBy
b3RvdHlwZUNvbnN0cnVjdG9yV2F0Y2hwb2ludCA9IG1ha2VVbmlxdWU8T2JqZWN0UHJvcGVydHlD
aGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHRoaXMsIGNvbnN0
cnVjdG9yQ29uZGl0aW9uLCBtX2FycmF5U3BlY2llc1dhdGNocG9pbnRTZXQpOwotICAgIG1fYXJy
YXlQcm90b3R5cGVDb25zdHJ1Y3RvcldhdGNocG9pbnQtPmluc3RhbGwodm0pOworICAgIHNwZWNp
ZXNXYXRjaHBvaW50ID0gbWFrZVVuaXF1ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0
Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odGhpcywgc3BlY2llc0NvbmRpdGlvbiwgc3Bl
Y2llc1dhdGNocG9pbnRTZXQpOworICAgIHNwZWNpZXNXYXRjaHBvaW50LT5pbnN0YWxsKHZtKTsK
K30KIAotICAgIG1fYXJyYXlDb25zdHJ1Y3RvclNwZWNpZXNXYXRjaHBvaW50ID0gbWFrZVVuaXF1
ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50
U2V0Pj4odGhpcywgc3BlY2llc0NvbmRpdGlvbiwgbV9hcnJheVNwZWNpZXNXYXRjaHBvaW50U2V0
KTsKLSAgICBtX2FycmF5Q29uc3RydWN0b3JTcGVjaWVzV2F0Y2hwb2ludC0+aW5zdGFsbCh2bSk7
Cit2b2lkIEpTR2xvYmFsT2JqZWN0Ojp0cnlJbnN0YWxsQXJyYXlTcGVjaWVzV2F0Y2hwb2ludCgp
Cit7CisgICAgUkVMRUFTRV9BU1NFUlQoIW1fYXJyYXlQcm90b3R5cGVDb25zdHJ1Y3RvcldhdGNo
cG9pbnQpOworICAgIFJFTEVBU0VfQVNTRVJUKCFtX2FycmF5Q29uc3RydWN0b3JTcGVjaWVzV2F0
Y2hwb2ludCk7CisKKyAgICB0cnlJbnN0YWxsU3BlY2llc1dhdGNocG9pbnQoYXJyYXlQcm90b3R5
cGUoKSwgYXJyYXlDb25zdHJ1Y3RvcigpLCBtX2FycmF5UHJvdG90eXBlQ29uc3RydWN0b3JXYXRj
aHBvaW50LCBtX2FycmF5Q29uc3RydWN0b3JTcGVjaWVzV2F0Y2hwb2ludCwgbV9hcnJheVNwZWNp
ZXNXYXRjaHBvaW50U2V0KTsKK30KKwordm9pZCBKU0dsb2JhbE9iamVjdDo6dHJ5SW5zdGFsbEFy
cmF5QnVmZmVyU3BlY2llc1dhdGNocG9pbnQoQXJyYXlCdWZmZXJTaGFyaW5nTW9kZSBzaGFyaW5n
TW9kZSkKK3sKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRpY19jYXN0PHVuc2lnbmVkPihBcnJheUJ1
ZmZlclNoYXJpbmdNb2RlOjpEZWZhdWx0KSA9PSAwKTsKKyAgICBzdGF0aWNfYXNzZXJ0KHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihBcnJheUJ1ZmZlclNoYXJpbmdNb2RlOjpTaGFyZWQpID09IDEpOwor
ICAgIHVuc2lnbmVkIGluZGV4ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNoYXJpbmdNb2RlKTsK
KyAgICB0cnlJbnN0YWxsU3BlY2llc1dhdGNocG9pbnQoYXJyYXlCdWZmZXJQcm90b3R5cGUoc2hh
cmluZ01vZGUpLCBhcnJheUJ1ZmZlckNvbnN0cnVjdG9yKHNoYXJpbmdNb2RlKSwgbV9hcnJheUJ1
ZmZlclByb3RvdHlwZUNvbnN0cnVjdG9yV2F0Y2hwb2ludHNbaW5kZXhdLCBtX2FycmF5QnVmZmVy
Q29uc3RydWN0b3JTcGVjaWVzV2F0Y2hwb2ludHNbaW5kZXhdLCBhcnJheUJ1ZmZlclNwZWNpZXNX
YXRjaHBvaW50U2V0KHNoYXJpbmdNb2RlKSk7CiB9CiAKIHZvaWQgSlNHbG9iYWxPYmplY3Q6Omlu
c3RhbGxOdW1iZXJQcm90b3R5cGVXYXRjaHBvaW50KE51bWJlclByb3RvdHlwZSogbnVtYmVyUHJv
dG90eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKaW5kZXggMjNjNjYzNzQzZmNjNGRhODJjNmI4MzY1NjdiY2QwNmY0OTE5NzMyZi4uNDljZTA3
MjQ0ZGJjZDMyODI3ZDQ1ZWNjODc2N2Q2YmZkMmM5ZTYwZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC00MjAsMTAgKzQyMCw3IEBAIGNs
YXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3Qgewog
ICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX3Byb3h5T2JqZWN0
U3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBt
X2NhbGxhYmxlUHJveHlPYmplY3RTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmU+IG1fcHJveHlSZXZva2VTdHJ1Y3R1cmU7Ci0jaWYgRU5BQkxFKFNI
QVJFRF9BUlJBWV9CVUZGRVIpCi0gICAgV3JpdGVCYXJyaWVyPEpTQXJyYXlCdWZmZXJQcm90b3R5
cGU+IG1fc2hhcmVkQXJyYXlCdWZmZXJQcm90b3R5cGU7Ci0gICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9zaGFyZWRBcnJheUJ1ZmZlclN0cnVjdHVyZTsKLSNlbmRpZgorICAgIExhenlDbGFz
c1N0cnVjdHVyZSBtX3NoYXJlZEFycmF5QnVmZmVyU3RydWN0dXJlOwogCiAjZGVmaW5lIERFRklO
RV9TVE9SQUdFX0ZPUl9TSU1QTEVfVFlQRShjYXBpdGFsTmFtZSwgbG93ZXJOYW1lLCBwcm9wZXJO
YW1lLCBpbnN0YW5jZVR5cGUsIGpzTmFtZSwgcHJvdG90eXBlQmFzZSwgZmVhdHVyZUZsYWcpIFwK
ICAgICBXcml0ZUJhcnJpZXI8Y2FwaXRhbE5hbWUgIyMgUHJvdG90eXBlPiBtXyAjIyBsb3dlck5h
bWUgIyMgUHJvdG90eXBlOyBcCkBAIC00ODcsOSArNDg0LDExIEBAIGNsYXNzIEpTR2xvYmFsT2Jq
ZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIElubGluZVdhdGNo
cG9pbnRTZXQgbV9zdHJpbmdJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludFNldDsKICAgICBJbmxp
bmVXYXRjaHBvaW50U2V0IG1fbWFwU2V0V2F0Y2hwb2ludFNldDsKICAgICBJbmxpbmVXYXRjaHBv
aW50U2V0IG1fc2V0QWRkV2F0Y2hwb2ludFNldDsKLSAgICBJbmxpbmVXYXRjaHBvaW50U2V0IG1f
YXJyYXlTcGVjaWVzV2F0Y2hwb2ludFNldDsKKyAgICBJbmxpbmVXYXRjaHBvaW50U2V0IG1fYXJy
YXlTcGVjaWVzV2F0Y2hwb2ludFNldCB7IENsZWFyV2F0Y2hwb2ludCB9OwogICAgIElubGluZVdh
dGNocG9pbnRTZXQgbV9hcnJheUpvaW5XYXRjaHBvaW50U2V0OwogICAgIElubGluZVdhdGNocG9p
bnRTZXQgbV9udW1iZXJUb1N0cmluZ1dhdGNocG9pbnRTZXQ7CisgICAgSW5saW5lV2F0Y2hwb2lu
dFNldCBtX2FycmF5QnVmZmVyU3BlY2llc1dhdGNocG9pbnRTZXQgeyBDbGVhcldhdGNocG9pbnQg
fTsKKyAgICBJbmxpbmVXYXRjaHBvaW50U2V0IG1fc2hhcmVkQXJyYXlCdWZmZXJTcGVjaWVzV2F0
Y2hwb2ludFNldCB7IENsZWFyV2F0Y2hwb2ludCB9OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxPYmpl
Y3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4g
bV9hcnJheUNvbnN0cnVjdG9yU3BlY2llc1dhdGNocG9pbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRy
PE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRT
ZXQ+PiBtX2FycmF5UHJvdG90eXBlQ29uc3RydWN0b3JXYXRjaHBvaW50OwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRj
aHBvaW50U2V0Pj4gbV9hcnJheVByb3RvdHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludDsKQEAg
LTUwNCw2ICs1MDMsOCBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRl
ZFZhcmlhYmxlT2JqZWN0IHsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8T2JqZWN0UHJvcGVydHlDaGFu
Z2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+IG1fbWFwUHJvdG90eXBl
U2V0V2F0Y2hwb2ludDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8T2JqZWN0UHJvcGVydHlDaGFuZ2VB
ZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+IG1fc2V0UHJvdG90eXBlQWRk
V2F0Y2hwb2ludDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFw
dGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+IG1fbnVtYmVyUHJvdG90eXBlVG9T
dHJpbmdXYXRjaHBvaW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxPYmplY3RQcm9wZXJ0eUNoYW5n
ZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4gbV9hcnJheUJ1ZmZlckNv
bnN0cnVjdG9yU3BlY2llc1dhdGNocG9pbnRzWzJdOworICAgIHN0ZDo6dW5pcXVlX3B0cjxPYmpl
Y3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4g
bV9hcnJheUJ1ZmZlclByb3RvdHlwZUNvbnN0cnVjdG9yV2F0Y2hwb2ludHNbMl07CiAKIHB1Ymxp
YzoKICAgICBKU0NhbGxlZSogc3RhY2tPdmVyZmxvd0ZyYW1lQ2FsbGVlKCkgY29uc3QgeyByZXR1
cm4gbV9zdGFja092ZXJmbG93RnJhbWVDYWxsZWUuZ2V0KCk7IH0KQEAgLTUyMSw2ICs1MjIsMTcg
QEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVj
dCB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKE9wdGlvbnM6OnVzZUpJVCgpKTsKICAgICAgICAg
cmV0dXJuIG1fbnVtYmVyVG9TdHJpbmdXYXRjaHBvaW50U2V0OwogICAgIH0KKyAgICBJbmxpbmVX
YXRjaHBvaW50U2V0JiBhcnJheUJ1ZmZlclNwZWNpZXNXYXRjaHBvaW50U2V0KEFycmF5QnVmZmVy
U2hhcmluZ01vZGUgc2hhcmluZ01vZGUpCisgICAgeworICAgICAgICBzd2l0Y2ggKHNoYXJpbmdN
b2RlKSB7CisgICAgICAgIGNhc2UgQXJyYXlCdWZmZXJTaGFyaW5nTW9kZTo6RGVmYXVsdDoKKyAg
ICAgICAgICAgIHJldHVybiBtX2FycmF5QnVmZmVyU3BlY2llc1dhdGNocG9pbnRTZXQ7CisgICAg
ICAgIGNhc2UgQXJyYXlCdWZmZXJTaGFyaW5nTW9kZTo6U2hhcmVkOgorICAgICAgICAgICAgcmV0
dXJuIG1fc2hhcmVkQXJyYXlCdWZmZXJTcGVjaWVzV2F0Y2hwb2ludFNldDsKKyAgICAgICAgfQor
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbV9h
cnJheUJ1ZmZlclNwZWNpZXNXYXRjaHBvaW50U2V0OworICAgIH0KIAogICAgIGJvb2wgaXNBcnJh
eVByb3RvdHlwZUl0ZXJhdG9yUHJvdG9jb2xGYXN0QW5kTm9uT2JzZXJ2YWJsZSgpOwogICAgIGJv
b2wgaXNNYXBQcm90b3R5cGVJdGVyYXRvclByb3RvY29sRmFzdEFuZE5vbk9ic2VydmFibGUoKTsK
QEAgLTg3MSwzOCArODgzLDQwIEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2Vn
bWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIHN0YXRpYyBKU09iamVjdCogY3VycmVudFNjcmlw
dEV4ZWN1dGlvbk93bmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwpIHsgcmV0dXJuIGdsb2JhbDsg
fQogICAgIHN0YXRpYyBTY3JpcHRFeGVjdXRpb25TdGF0dXMgc2NyaXB0RXhlY3V0aW9uU3RhdHVz
KEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqKSB7IHJldHVybiBTY3JpcHRFeGVjdXRpb25TdGF0
dXM6OlJ1bm5pbmc7IH0KIAotICAgIEpTT2JqZWN0KiBhcnJheUJ1ZmZlckNvbnN0cnVjdG9yKCkg
Y29uc3QgeyByZXR1cm4gbV9hcnJheUJ1ZmZlclN0cnVjdHVyZS5jb25zdHJ1Y3Rvcih0aGlzKTsg
fQotCiAgICAgSlNPYmplY3QqIGFycmF5QnVmZmVyUHJvdG90eXBlKEFycmF5QnVmZmVyU2hhcmlu
Z01vZGUgc2hhcmluZ01vZGUpIGNvbnN0CiAgICAgewogICAgICAgICBzd2l0Y2ggKHNoYXJpbmdN
b2RlKSB7CiAgICAgICAgIGNhc2UgQXJyYXlCdWZmZXJTaGFyaW5nTW9kZTo6RGVmYXVsdDoKICAg
ICAgICAgICAgIHJldHVybiBtX2FycmF5QnVmZmVyU3RydWN0dXJlLnByb3RvdHlwZSh0aGlzKTsK
LSNpZiBFTkFCTEUoU0hBUkVEX0FSUkFZX0JVRkZFUikKICAgICAgICAgY2FzZSBBcnJheUJ1ZmZl
clNoYXJpbmdNb2RlOjpTaGFyZWQ6Ci0gICAgICAgICAgICByZXR1cm4gbV9zaGFyZWRBcnJheUJ1
ZmZlclByb3RvdHlwZS5nZXQoKTsKLSNlbHNlCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICByZXR1cm4gbV9hcnJheUJ1ZmZlclN0cnVjdHVyZS5wcm90b3R5cGUodGhpcyk7Ci0jZW5kaWYK
KyAgICAgICAgICAgIHJldHVybiBtX3NoYXJlZEFycmF5QnVmZmVyU3RydWN0dXJlLnByb3RvdHlw
ZSh0aGlzKTsKICAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgU3RydWN0dXJlKiBhcnJheUJ1
ZmZlclN0cnVjdHVyZShBcnJheUJ1ZmZlclNoYXJpbmdNb2RlIHNoYXJpbmdNb2RlKSBjb25zdAog
ICAgIHsKICAgICAgICAgc3dpdGNoIChzaGFyaW5nTW9kZSkgewogICAgICAgICBjYXNlIEFycmF5
QnVmZmVyU2hhcmluZ01vZGU6OkRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gbV9hcnJheUJ1
ZmZlclN0cnVjdHVyZS5nZXQodGhpcyk7Ci0jaWYgRU5BQkxFKFNIQVJFRF9BUlJBWV9CVUZGRVIp
CiAgICAgICAgIGNhc2UgQXJyYXlCdWZmZXJTaGFyaW5nTW9kZTo6U2hhcmVkOgotICAgICAgICAg
ICAgcmV0dXJuIG1fc2hhcmVkQXJyYXlCdWZmZXJTdHJ1Y3R1cmUuZ2V0KCk7Ci0jZWxzZQotICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIG1fYXJyYXlCdWZmZXJTdHJ1Y3R1cmUu
Z2V0KHRoaXMpOwotI2VuZGlmCisgICAgICAgICAgICByZXR1cm4gbV9zaGFyZWRBcnJheUJ1ZmZl
clN0cnVjdHVyZS5nZXQodGhpcyk7CiAgICAgICAgIH0KICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQorICAgIEpTT2Jq
ZWN0KiBhcnJheUJ1ZmZlckNvbnN0cnVjdG9yKEFycmF5QnVmZmVyU2hhcmluZ01vZGUgc2hhcmlu
Z01vZGUpIGNvbnN0CisgICAgeworICAgICAgICBzd2l0Y2ggKHNoYXJpbmdNb2RlKSB7CisgICAg
ICAgIGNhc2UgQXJyYXlCdWZmZXJTaGFyaW5nTW9kZTo6RGVmYXVsdDoKKyAgICAgICAgICAgIHJl
dHVybiBtX2FycmF5QnVmZmVyU3RydWN0dXJlLmNvbnN0cnVjdG9yKHRoaXMpOworICAgICAgICBj
YXNlIEFycmF5QnVmZmVyU2hhcmluZ01vZGU6OlNoYXJlZDoKKyAgICAgICAgICAgIHJldHVybiBt
X3NoYXJlZEFycmF5QnVmZmVyU3RydWN0dXJlLmNvbnN0cnVjdG9yKHRoaXMpOworICAgICAgICB9
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBu
dWxscHRyOworICAgIH0KKwogCiAjZGVmaW5lIERFRklORV9BQ0NFU1NPUlNfRk9SX1NJTVBMRV9U
WVBFKGNhcGl0YWxOYW1lLCBsb3dlck5hbWUsIHByb3Blck5hbWUsIGluc3RhbmNlVHlwZSwganNO
YW1lLCBwcm90b3R5cGVCYXNlLCBmZWF0dXJlRmxhZykgXAogICAgIFN0cnVjdHVyZSogcHJvcGVy
TmFtZSAjIyBTdHJ1Y3R1cmUoKSB7IHJldHVybiBtXyAjIyBwcm9wZXJOYW1lICMjIFN0cnVjdHVy
ZS5nZXQoKTsgfQpAQCAtMTA3OCw4ICsxMDkyLDExIEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDog
cHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIHZvaWQgaW5zdGFsbE51bWJl
clByb3RvdHlwZVdhdGNocG9pbnQoTnVtYmVyUHJvdG90eXBlKik7CiAgICAgdm9pZCBpbnN0YWxs
TWFwUHJvdG90eXBlV2F0Y2hwb2ludChNYXBQcm90b3R5cGUqKTsKICAgICB2b2lkIGluc3RhbGxT
ZXRQcm90b3R5cGVXYXRjaHBvaW50KFNldFByb3RvdHlwZSopOworICAgIHZvaWQgdHJ5SW5zdGFs
bEFycmF5QnVmZmVyU3BlY2llc1dhdGNocG9pbnQoQXJyYXlCdWZmZXJTaGFyaW5nTW9kZSk7CiAK
IHByb3RlY3RlZDoKKyAgICB2b2lkIHRyeUluc3RhbGxTcGVjaWVzV2F0Y2hwb2ludChKU09iamVj
dCogcHJvdG90eXBlLCBKU09iamVjdCogY29uc3RydWN0b3IsIHN0ZDo6dW5pcXVlX3B0cjxPYmpl
Y3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4m
IGNvbnN0cnVjdG9yV2F0Y2hwb2ludCwgc3RkOjp1bmlxdWVfcHRyPE9iamVjdFByb3BlcnR5Q2hh
bmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+PiYgc3BlY2llc1dhdGNo
cG9pbnQsIElubGluZVdhdGNocG9pbnRTZXQmIHNwZWNpZXNXYXRjaHBvaW50U2V0KTsKKwogICAg
IHN0cnVjdCBHbG9iYWxQcm9wZXJ0eUluZm8gewogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8o
Y29uc3QgSWRlbnRpZmllciYgaSwgSlNWYWx1ZSB2LCB1bnNpZ25lZCBhKQogICAgICAgICAgICAg
OiBpZGVudGlmaWVyKGkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJs
ZS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAppbmRleCAwNWJkNjgwY2FlNjc1
MjRhZjQ5ZGU1OTc2ZDk4Njk0MDg1MWIwOWE5Li40YzMwZDJjM2FiMWUwNjc4NTNmYzcxMGJmNzQ2
MWI5Yzg4MWViNDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJsZS5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKQEAgLTgyOSwxMCArODI5LDYg
QEAKICNkZWZpbmUgRU5BQkxFX0lOTElORV9QQVRIX0RBVEEgMQogI2VuZGlmCiAKLS8qIERpc2Fi
bGUgU2hhcmVkQXJyYXlCdWZmZXJzIHVudGlsIFNwZWN0cmUgc2VjdXJpdHkgY29uY2VybnMgYXJl
IG1pdGlnYXRlZC4gKi8KLSNkZWZpbmUgRU5BQkxFX1NIQVJFRF9BUlJBWV9CVUZGRVIgMQotCi0K
ICNpZiAoKFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShQTEFZU1RBVElPTikgfHwgUExBVEZP
Uk0oV1BFKSkgJiYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykpIHx8IFBMQVRGT1JNKEdUSykKICNk
ZWZpbmUgRU5BQkxFX0tJTkVUSUNfU0NST0xMSU5HIDEKICNlbmRpZgpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBiNjY5YTRlNjVlNDRhZjlm
ZjNjOTNiYzViYWUxNDgwOGNjN2Y3YWE2Li4wZjU2YTRkMmNjMmE0NzczNzU1MDE1MDNjZTVlY2Ez
NjI3ZTExYjQ1IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIwLTExLTA4ICBZdXN1a2UgU3V6dWtpICA8eXN1
enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gU3VwcG9ydCBAQHNwZWNpZXMgaW4gQXJy
YXlCdWZmZXIgLyBTaGFyZWRBcnJheUJ1ZmZlciBzbGljZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4Njk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sOgor
CiAyMDIwLTExLTA2ICBEbWl0cnkgQmV6aGV0c2tvdiAgPGRiZXpoZXRza292QGlnYWxpYS5jb20+
CiAKICAgICAgICAgW1dBU00tUmVmZXJlbmNlc10gUmVuYW1lIGFueXJlZiB0byBleHRlcm5yZWYK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbCBiL0pTVGVzdHMv
dGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbAppbmRleCA5NTQ0MzE0YmIwZWE0ZWY2MWRjY2NhY2Jl
ZjNhM2ZiZmQ2Nzk3OGM4Li5mNTk1ZDJlYWRhYTQwMThlNDZjMzY2OGZjNWQ0NTAxYTkzODc0NDhh
IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwKKysrIGIvSlNU
ZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCkBAIC02MDMsMzAgKzYwMyw2IEBAIHRlc3Qv
YW5uZXhCL2xhbmd1YWdlL2dsb2JhbC1jb2RlL3N3aXRjaC1kZmx0LWdsb2JhbC1za2lwLWVhcmx5
LWVyci10cnkuanM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEFuIGluaXRpYWxpemVkIGJp
bmRpbmcgaXMgbm90IGNyZWF0ZWQgcHJpb3IgdG8gZXZhbHVhdGlvbiBFeHBlY3RlZCBhIFJlZmVy
ZW5jZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxs
JwogdGVzdC9hbm5leEIvbGFuZ3VhZ2UvZ2xvYmFsLWNvZGUvc3dpdGNoLWRmbHQtZ2xvYmFsLXNr
aXAtZWFybHktZXJyLmpzOgogICBkZWZhdWx0OiAiU3ludGF4RXJyb3I6IENhbm5vdCBkZWNsYXJl
IGEgZnVuY3Rpb24gdGhhdCBzaGFkb3dzIGEgbGV0L2NvbnN0L2NsYXNzL2Z1bmN0aW9uIHZhcmlh
YmxlICdmJyBpbiBzdHJpY3QgbW9kZS4iCi10ZXN0L2J1aWx0LWlucy9BcnJheUJ1ZmZlci9wcm90
b3R5cGUvc2xpY2Uvc3BlY2llcy1jb25zdHJ1Y3Rvci1pcy1ub3Qtb2JqZWN0LmpzOgotICBkZWZh
dWx0OiAnVGVzdDI2MkVycm9yOiBgY29uc3RydWN0b3JgIHZhbHVlIGlzIG51bGwgRXhwZWN0ZWQg
YSBUeXBlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBh
bGwnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBgY29uc3RydWN0b3JgIHZhbHVlIGlz
IG51bGwgRXhwZWN0ZWQgYSBUeXBlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24g
d2FzIHRocm93biBhdCBhbGwnCi10ZXN0L2J1aWx0LWlucy9BcnJheUJ1ZmZlci9wcm90b3R5cGUv
c2xpY2Uvc3BlY2llcy1pcy1ub3QtY29uc3RydWN0b3IuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYy
RXJyb3I6IGBjb25zdHJ1Y3RvcltTeW1ib2wuc3BlY2llc11gIHZhbHVlIGlzIE9iamVjdCBFeHBl
Y3RlZCBhIFR5cGVFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3du
IGF0IGFsbCcKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IGBjb25zdHJ1Y3RvcltTeW1i
b2wuc3BlY2llc11gIHZhbHVlIGlzIE9iamVjdCBFeHBlY3RlZCBhIFR5cGVFcnJvciB0byBiZSB0
aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKLXRlc3QvYnVpbHQtaW5z
L0FycmF5QnVmZmVyL3Byb3RvdHlwZS9zbGljZS9zcGVjaWVzLWlzLW5vdC1vYmplY3QuanM6Ci0g
IGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IGBjb25zdHJ1Y3RvcltTeW1ib2wuc3BlY2llc11gIHZh
bHVlIGlzIEJvb2xlYW4gRXhwZWN0ZWQgYSBUeXBlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBl
eGNlcHRpb24gd2FzIHRocm93biBhdCBhbGwnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9y
OiBgY29uc3RydWN0b3JbU3ltYm9sLnNwZWNpZXNdYCB2YWx1ZSBpcyBCb29sZWFuIEV4cGVjdGVk
IGEgVHlwZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQg
YWxsJwotdGVzdC9idWlsdC1pbnMvQXJyYXlCdWZmZXIvcHJvdG90eXBlL3NsaWNlL3NwZWNpZXMt
cmV0dXJucy1sYXJnZXItYXJyYXlidWZmZXIuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6
IEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzjCuywgwqsxMMK7KSB0byBiZSB0cnVlJwotICBzdHJpY3Qg
bW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrOMK7LCDCqzEwwrspIHRv
IGJlIHRydWUnCi10ZXN0L2J1aWx0LWlucy9BcnJheUJ1ZmZlci9wcm90b3R5cGUvc2xpY2Uvc3Bl
Y2llcy1yZXR1cm5zLW5vdC1hcnJheWJ1ZmZlci5qczoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJv
cjogRXhwZWN0ZWQgYSBUeXBlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2Fz
IHRocm93biBhdCBhbGwnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBh
IFR5cGVFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFs
bCcKLXRlc3QvYnVpbHQtaW5zL0FycmF5QnVmZmVyL3Byb3RvdHlwZS9zbGljZS9zcGVjaWVzLXJl
dHVybnMtc2FtZS1hcnJheWJ1ZmZlci5qczoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhw
ZWN0ZWQgYSBUeXBlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93
biBhdCBhbGwnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBhIFR5cGVF
cnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKLXRl
c3QvYnVpbHQtaW5zL0FycmF5QnVmZmVyL3Byb3RvdHlwZS9zbGljZS9zcGVjaWVzLXJldHVybnMt
c21hbGxlci1hcnJheWJ1ZmZlci5qczoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0
ZWQgYSBUeXBlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biBh
dCBhbGwnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBhIFR5cGVFcnJv
ciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKLXRlc3Qv
YnVpbHQtaW5zL0FycmF5QnVmZmVyL3Byb3RvdHlwZS9zbGljZS9zcGVjaWVzLmpzOgotICBkZWZh
dWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqtbb2JqZWN0IEFycmF5QnVm
ZmVyXcK7LCDCq3VuZGVmaW5lZMK7KSB0byBiZSB0cnVlJwotICBzdHJpY3QgbW9kZTogJ1Rlc3Qy
NjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrW29iamVjdCBBcnJheUJ1ZmZlcl3Cuywgwqt1
bmRlZmluZWTCuykgdG8gYmUgdHJ1ZScKIHRlc3QvYnVpbHQtaW5zL0RhdGUvVVRDL2ZwLWV2YWx1
YXRpb24tb3JkZXIuanM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IG9yZGVyIG9mIG9wZXJh
dGlvbnMgLyBwcmVjaXNpb24gaW4gTWFrZVRpbWUgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrTmFOwrss
IMKrMjkzMTLCuykgdG8gYmUgdHJ1ZScKICAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IG9y
ZGVyIG9mIG9wZXJhdGlvbnMgLyBwcmVjaXNpb24gaW4gTWFrZVRpbWUgRXhwZWN0ZWQgU2FtZVZh
bHVlKMKrTmFOwrssIMKrMjkzMTLCuykgdG8gYmUgdHJ1ZScKQEAgLTg0NywzMCArODIzLDYgQEAg
dGVzdC9idWlsdC1pbnMvUmVnRXhwL3Byb3RvdHlwZS9leGVjL3UtbGFzdGluZGV4LWFkdi5qczoK
IHRlc3QvYnVpbHQtaW5zL1JlZ0V4cC9xdWFudGlmaWVyLWludGVnZXItbGltaXQuanM6CiAgIGRl
ZmF1bHQ6ICdTeW50YXhFcnJvcjogSW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb246IG51bWJlciB0
b28gbGFyZ2UgaW4ge30gcXVhbnRpZmllcicKICAgc3RyaWN0IG1vZGU6ICdTeW50YXhFcnJvcjog
SW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb246IG51bWJlciB0b28gbGFyZ2UgaW4ge30gcXVhbnRp
ZmllcicKLXRlc3QvYnVpbHQtaW5zL1NoYXJlZEFycmF5QnVmZmVyL3Byb3RvdHlwZS9zbGljZS9z
cGVjaWVzLWNvbnN0cnVjdG9yLWlzLW5vdC1vYmplY3QuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYy
RXJyb3I6IGBjb25zdHJ1Y3RvcmAgdmFsdWUgaXMgbnVsbCBFeHBlY3RlZCBhIFR5cGVFcnJvciB0
byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKLSAgc3RyaWN0
IG1vZGU6ICdUZXN0MjYyRXJyb3I6IGBjb25zdHJ1Y3RvcmAgdmFsdWUgaXMgbnVsbCBFeHBlY3Rl
ZCBhIFR5cGVFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0
IGFsbCcKLXRlc3QvYnVpbHQtaW5zL1NoYXJlZEFycmF5QnVmZmVyL3Byb3RvdHlwZS9zbGljZS9z
cGVjaWVzLWlzLW5vdC1jb25zdHJ1Y3Rvci5qczoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjog
YGNvbnN0cnVjdG9yW1N5bWJvbC5zcGVjaWVzXWAgdmFsdWUgaXMgT2JqZWN0IEV4cGVjdGVkIGEg
VHlwZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxs
JwotICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogYGNvbnN0cnVjdG9yW1N5bWJvbC5zcGVj
aWVzXWAgdmFsdWUgaXMgT2JqZWN0IEV4cGVjdGVkIGEgVHlwZUVycm9yIHRvIGJlIHRocm93biBi
dXQgbm8gZXhjZXB0aW9uIHdhcyB0aHJvd24gYXQgYWxsJwotdGVzdC9idWlsdC1pbnMvU2hhcmVk
QXJyYXlCdWZmZXIvcHJvdG90eXBlL3NsaWNlL3NwZWNpZXMtaXMtbm90LW9iamVjdC5qczoKLSAg
ZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogYGNvbnN0cnVjdG9yW1N5bWJvbC5zcGVjaWVzXWAgdmFs
dWUgaXMgQm9vbGVhbiBFeHBlY3RlZCBhIFR5cGVFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4
Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6
IGBjb25zdHJ1Y3RvcltTeW1ib2wuc3BlY2llc11gIHZhbHVlIGlzIEJvb2xlYW4gRXhwZWN0ZWQg
YSBUeXBlRXJyb3IgdG8gYmUgdGhyb3duIGJ1dCBubyBleGNlcHRpb24gd2FzIHRocm93biBhdCBh
bGwnCi10ZXN0L2J1aWx0LWlucy9TaGFyZWRBcnJheUJ1ZmZlci9wcm90b3R5cGUvc2xpY2Uvc3Bl
Y2llcy1yZXR1cm5zLWxhcmdlci1hcnJheWJ1ZmZlci5qczoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJF
cnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrOMK7LCDCqzEwwrspIHRvIGJlIHRydWUnCi0gIHN0
cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqs4wrssIMKrMTDC
uykgdG8gYmUgdHJ1ZScKLXRlc3QvYnVpbHQtaW5zL1NoYXJlZEFycmF5QnVmZmVyL3Byb3RvdHlw
ZS9zbGljZS9zcGVjaWVzLXJldHVybnMtbm90LWFycmF5YnVmZmVyLmpzOgotICBkZWZhdWx0OiAn
VGVzdDI2MkVycm9yOiBFeHBlY3RlZCBhIFR5cGVFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4
Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6
IEV4cGVjdGVkIGEgVHlwZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0
aHJvd24gYXQgYWxsJwotdGVzdC9idWlsdC1pbnMvU2hhcmVkQXJyYXlCdWZmZXIvcHJvdG90eXBl
L3NsaWNlL3NwZWNpZXMtcmV0dXJucy1zYW1lLWFycmF5YnVmZmVyLmpzOgotICBkZWZhdWx0OiAn
VGVzdDI2MkVycm9yOiBFeHBlY3RlZCBhIFR5cGVFcnJvciB0byBiZSB0aHJvd24gYnV0IG5vIGV4
Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6
IEV4cGVjdGVkIGEgVHlwZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdhcyB0
aHJvd24gYXQgYWxsJwotdGVzdC9idWlsdC1pbnMvU2hhcmVkQXJyYXlCdWZmZXIvcHJvdG90eXBl
L3NsaWNlL3NwZWNpZXMtcmV0dXJucy1zbWFsbGVyLWFycmF5YnVmZmVyLmpzOgotICBkZWZhdWx0
OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBhIFR5cGVFcnJvciB0byBiZSB0aHJvd24gYnV0IG5v
IGV4Y2VwdGlvbiB3YXMgdGhyb3duIGF0IGFsbCcKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJy
b3I6IEV4cGVjdGVkIGEgVHlwZUVycm9yIHRvIGJlIHRocm93biBidXQgbm8gZXhjZXB0aW9uIHdh
cyB0aHJvd24gYXQgYWxsJwotdGVzdC9idWlsdC1pbnMvU2hhcmVkQXJyYXlCdWZmZXIvcHJvdG90
eXBlL3NsaWNlL3NwZWNpZXMuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVk
IFNhbWVWYWx1ZSjCq1tvYmplY3QgU2hhcmVkQXJyYXlCdWZmZXJdwrssIMKrdW5kZWZpbmVkwrsp
IHRvIGJlIHRydWUnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1l
VmFsdWUowqtbb2JqZWN0IFNoYXJlZEFycmF5QnVmZmVyXcK7LCDCq3VuZGVmaW5lZMK7KSB0byBi
ZSB0cnVlJwogdGVzdC9idWlsdC1pbnMvVHlwZWRBcnJheS9wcm90b3R5cGUvZXZlcnkvY2FsbGJh
Y2tmbi1kZXRhY2hidWZmZXIuanM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVk
IGEgVHlwZUVycm9yIGJ1dCBnb3QgYSBUZXN0MjYyRXJyb3IgKFRlc3Rpbmcgd2l0aCBGbG9hdDY0
QXJyYXkuKScKICAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIGEgVHlwZUVy
cm9yIGJ1dCBnb3QgYSBUZXN0MjYyRXJyb3IgKFRlc3Rpbmcgd2l0aCBGbG9hdDY0QXJyYXkuKScK
QEAgLTI3NDUsOSArMjY5Nyw2IEBAIHRlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9jbGFzcy9tZXRo
b2QvZm9yYmlkZGVuLWV4dC9iMi9jbHMtZGVjbC1tZXRoLWZvcmJpZGRlbi1lCiAgIGRlZmF1bHQ6
ICdUeXBlRXJyb3I6IEZ1bmN0aW9uLmNhbGxlciB1c2VkIHRvIHJldHJpZXZlIHN0cmljdCBjYWxs
ZXInCiB0ZXN0L2xhbmd1YWdlL3N0YXRlbWVudHMvY2xhc3MvbWV0aG9kL2ZvcmJpZGRlbi1leHQv
YjIvY2xzLWRlY2wtbWV0aC1mb3JiaWRkZW4tZXh0LWluZGlyZWN0LWFjY2Vzcy1wcm9wLWNhbGxl
ci5qczoKICAgZGVmYXVsdDogJ1R5cGVFcnJvcjogRnVuY3Rpb24uY2FsbGVyIHVzZWQgdG8gcmV0
cmlldmUgc3RyaWN0IGNhbGxlcicKLXRlc3QvbGFuZ3VhZ2Uvc3RhdGVtZW50cy9jbGFzcy9zdWJj
bGFzcy9idWlsdGluLW9iamVjdHMvQXJyYXlCdWZmZXIvcmVndWxhci1zdWJjbGFzc2luZy5qczoK
LSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgdHJ1ZSBidXQgZ290IGZhbHNlJwot
ICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgdHJ1ZSBidXQgZ290IGZhbHNl
JwogdGVzdC9sYW5ndWFnZS9zdGF0ZW1lbnRzL2NvbnN0L2RzdHIvYXJ5LWluaXQtaXRlci1nZXQt
ZXJyLWFycmF5LXByb3RvdHlwZS5qczoKICAgZGVmYXVsdDogJ1R5cGVFcnJvcjogU3ByZWFkIHN5
bnRheCByZXF1aXJlcyAuLi5pdGVyYWJsZVtTeW1ib2wuaXRlcmF0b3JdIHRvIGJlIGEgZnVuY3Rp
b24nCiAgIHN0cmljdCBtb2RlOiAnVHlwZUVycm9yOiBTcHJlYWQgc3ludGF4IHJlcXVpcmVzIC4u
Lml0ZXJhYmxlW1N5bWJvbC5pdGVyYXRvcl0gdG8gYmUgYSBmdW5jdGlvbicK
</data>
<flag name="review"
          id="430186"
          type_id="1"
          status="+"
          setter="ross.kirsling"
    />
          </attachment>
      

    </bug>

</bugzilla>