<?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>211360</bug_id>
          
          <creation_ts>2020-05-03 14:14:30 -0700</creation_ts>
          <short_desc>Improve accuracy of IndexedDB estimated write size computation</short_desc>
          <delta_ts>2020-05-15 01:46:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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="Ben Nham">nham</reporter>
          <assigned_to name="Ben Nham">nham</assigned_to>
          <cc>alecflett</cc>
    
    <cc>annulen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jmason</cc>
    
    <cc>jsbell</cc>
    
    <cc>nham</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>sihui_liu</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1648382</commentid>
    <comment_count>0</comment_count>
    <who name="Ben Nham">nham</who>
    <bug_when>2020-05-03 14:14:30 -0700</bug_when>
    <thetext>Improve accuracy of IndexedDB estimated write size computation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648384</commentid>
    <comment_count>1</comment_count>
      <attachid>398332</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2020-05-03 14:27:24 -0700</bug_when>
    <thetext>Created attachment 398332
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648386</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-03 14:29:06 -0700</bug_when>
    <thetext>&lt;rdar://problem/62816407&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648391</commentid>
    <comment_count>3</comment_count>
      <attachid>398334</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2020-05-03 14:56:54 -0700</bug_when>
    <thetext>Created attachment 398334
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648425</commentid>
    <comment_count>4</comment_count>
      <attachid>398334</attachid>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-05-03 19:18:47 -0700</bug_when>
    <thetext>Comment on attachment 398334
Patch

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

The patch looks sane to me.

&gt; Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp:82
&gt; +        size += (12 + primaryKeySize + estimateSize(indexKey.asOneKey()));

If index is multientry, we can have multiple indexrecords for one record. (https://www.w3.org/TR/IndexedDB-2/#index-construct). We can use that for more accurate estimate.

&gt; Tools/ChangeLog:25
&gt; +        I added a test to make sure the quota check produces a sane size when using a large number
&gt; +        of indices.

This changelog is for the test, so propbably these two lines are enough.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/IDBQuotaCheck.mm:127
&gt; +#if PLATFORM(MAC)
&gt; +        [webView.get().window setIsVisible:YES];
&gt; +#else
&gt; +        webView.get().window.hidden = NO;
&gt; +#endif

Layout test seems enough for this patch, like LayoutTests/storage/indexeddb/storage-limit.html. 
Layout test storage limit is low by default, you can create objectstore with multiple indexes and verify that add operation would fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648466</commentid>
    <comment_count>5</comment_count>
      <attachid>398334</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-05-04 00:48:16 -0700</bug_when>
    <thetext>Comment on attachment 398334
Patch

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

&gt; Source/WebCore/Modules/indexeddb/server/MemoryIDBBackingStore.cpp:618
&gt; +    return m_serializationContext.get();

This seems somehow redundant with MemoryObjectStore::m_serializationContext, not sure if there is a better way though.

&gt; Source/WebCore/Modules/indexeddb/server/MemoryObjectStore.cpp:255
&gt; +    IndexIDToIndexKeyMap indexKeys = generateIndexKeyMapForValue(m_serializationContext-&gt;execState(), m_info, keyData, value);

auto

&gt; Source/WebCore/Modules/indexeddb/server/MemoryObjectStore.cpp:316
&gt; +            error = IDBError { };

This assignment probably does nothing.
Do we want to return early or enter the error path below?
Should we add ASSERT(index)?

&gt; Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:1858
&gt; +        auto indexIt = indexMap.find(indexID);

s/indexIt/indexIterator

&gt; Source/WebCore/Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:1860
&gt; +            error = IDBError { };

Ditto here, I think error is still null so we could just change it to return { }.
Do we want to make it as if the index record failed and do the clean-up step below?
Ditto for ASSERT?

&gt; Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp:764
&gt;      if (overwriteMode == IndexedDB::ObjectStoreOverwriteMode::NoOverwrite) {

Can we move the quota check after this if &apos;check&apos;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648820</commentid>
    <comment_count>6</comment_count>
      <attachid>398434</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2020-05-04 16:33:30 -0700</bug_when>
    <thetext>Created attachment 398434
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648896</commentid>
    <comment_count>7</comment_count>
      <attachid>398454</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2020-05-04 19:23:19 -0700</bug_when>
    <thetext>Created attachment 398454
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1648947</commentid>
    <comment_count>8</comment_count>
      <attachid>398454</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2020-05-04 22:03:26 -0700</bug_when>
    <thetext>Comment on attachment 398454
Patch

Addressed patch feedback:
 - Fixed estimates for multi-entry indices
 - Added layout test (should I delete the API test?)
 - Added bailout if indices can&apos;t be found (this shouldn&apos;t happen so it is also protected by an assert)
 - Moved check farther down</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649417</commentid>
    <comment_count>9</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2020-05-05 16:00:02 -0700</bug_when>
    <thetext>(In reply to Ben Nham from comment #8)
&gt; Comment on attachment 398454 [details]
&gt; Patch
&gt; 
&gt; Addressed patch feedback:
&gt;  - Fixed estimates for multi-entry indices
&gt;  - Added layout test (should I delete the API test?)
Yeah, I think layout test is enough.

&gt;  - Added bailout if indices can&apos;t be found (this shouldn&apos;t happen so it is
&gt; also protected by an assert)
&gt;  - Moved check farther down</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650234</commentid>
    <comment_count>10</comment_count>
      <attachid>398766</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2020-05-07 11:18:02 -0700</bug_when>
    <thetext>Created attachment 398766
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650308</commentid>
    <comment_count>11</comment_count>
      <attachid>398766</attachid>
    <who name="Ben Nham">nham</who>
    <bug_when>2020-05-07 12:52:27 -0700</bug_when>
    <thetext>Comment on attachment 398766
Patch

- Rebase
 - Remove API test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651544</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-11 17:38:22 -0700</bug_when>
    <thetext>Committed r261533: &lt;https://trac.webkit.org/changeset/261533&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 398766.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652985</commentid>
    <comment_count>13</comment_count>
    <who name="Jim Mason">jmason</who>
    <bug_when>2020-05-15 01:46:46 -0700</bug_when>
    <thetext>For me, r261533 is breaking parallel builds with -j4.  I have opened bug 211943 to track.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398332</attachid>
            <date>2020-05-03 14:27:24 -0700</date>
            <delta_ts>2020-05-03 14:56:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211360-20200503142723.patch</filename>
            <type>text/plain</type>
            <size>48368</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwODQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmY3NGIzNjE3OWVmN2Fk
NWJiMjQ0NjA5NzBlOGYzZGJmODgxZTU1ZC4uMTk0MjQxMzViNTVhOTQ5MjRmMGIzYmU3OWQzYTRi
Y2UwZWM4YzFmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDIwLTA1LTAzICBCZW4g
TmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIEltcHJvdmUgYWNjdXJhY3kgb2YgSW5k
ZXhlZERCIGVzdGltYXRlZCB3cml0ZSBzaXplIGNvbXB1dGF0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTEzNjAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBjdXJyZW50bHkgZXN0aW1hdGUgdGhl
IHNpemUgb2YgYSBwdXQgaW4gSW5kZXhlZERCIGZvciBxdW90YSBjaGVjayBwdXJwb3NlcyB3aXRo
IHNvbWV0aGluZworICAgICAgICBsaWtlOgorCisgICAgICAgICAgZXN0aW1hdGVkV3JpdGVTaXpl
ID0gKDEgKyBudW1JbmRpY2VzKSAqIChrZXlTaXplICsgdmFsdWVTaXplKQorCisgICAgICAgIEhv
d2V2ZXIsIHRoaXMgY2FuIGxlYWQgdG8gbGFyZ2Ugb3ZlcmVzdGltYXRlcyBvZiB3cml0ZSBzaXpl
cy4gVGhpcyBpcyBiZWNhdXNlIHNlY29uZGFyeQorICAgICAgICBpbmRpY2VzIG9ubHkgc3RvcmUg
YSBtYXBwaW5nIG9mIHNlY29uZGFyeSBpbmRleCBrZXkgPT4gcHJpbWFyeSBrZXk7IHRoZXkgZG8g
bm90IHN0b3JlIHRoZQorICAgICAgICBlbnRpcmUgdmFsdWUuIEluIHRoZSBleGFtcGxlIHNpdGUg
YXR0YWNoZWQgdG8gMjAyMTM3IChhbm90aGVyIERCIHF1b3RhLXJlbGF0ZWQgYnVnKSwgdGhlCisg
ICAgICAgIHRoZSBoZXVyaXN0aWMgZXN0aW1hdGVzIHRoYXQgb25lIG9mIHRoZSBwdXQgb3BlcmF0
aW9ucyB3b3VsZCB1c2UgbW9yZSB0aGFuIDgwMCBNQiB3aGVuIGl0CisgICAgICAgIGFjdHVhbGx5
IHVzZXMgMjIwIE1CLiBUaGlzIGluYWNjdXJhY3kgbGVhZHMgdG8gc3B1cmlvdXMgZGlzayBxdW90
YSBwZXJtaXNzaW9uIG1vZGFscyBiZWluZworICAgICAgICBwcmVzZW50ZWQgaW4gU2FmYXJpLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggaW1wcm92ZXMgdGhlIHdyaXRlIHNpemUgY29tcHV0YXRpb24g
YnkgZ2VuZXJhdGluZyB0aGUgc2Vjb25kYXJ5IGluZGV4IGtleXMgYmVmb3JlCisgICAgICAgIGVz
dGltYXRpbmcgdGhlIHdyaXRlIHNpemUuIFRoZSBwZXJmb3JtYW5jZSBzaG91bGQgYmUgYWJvdXQg
dGhlIHNhbWUgc2luY2Ugd2Ugc2F2ZSB0aGUKKyAgICAgICAgZ2VuZXJhdGVkIGluZGV4IGtleXMg
Zm9yIGxhdGVyIHVzYWdlIHdoZW4gd2UgYWN0dWFsbHkgYWRkIHRoZSByZWNvcmQgdG8gdGhlIERC
LgorCisgICAgICAgIEkgYWRkZWQgYSB0ZXN0IHRvIG1ha2Ugc3VyZSB0aGUgcXVvdGEgY2hlY2sg
cHJvZHVjZXMgYSBzYW5lIHNpemUgd2hlbiB1c2luZyBhIGxhcmdlIG51bWJlcgorICAgICAgICBv
ZiBpbmRpY2VzLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmg6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6TWVtb3J5SURCQmFja2luZ1N0
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5SURCQmFja2luZ1N0b3Jl
OjphZGRSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJREJCYWNr
aW5nU3RvcmU6OnNlcmlhbGl6YXRpb25Db250ZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmg6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6TWVtb3J5T2JqZWN0U3RvcmU6OmFkZFJlY29yZCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeU9iamVjdFN0b3JlOjp1cGRhdGVJbmRleGVzRm9yUHV0UmVj
b3JkKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3Rv
cmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2lu
Z1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2lu
Z1N0b3JlOjp1cGRhdGVBbGxJbmRleGVzRm9yQWRkUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnNlcmlhbGl6YXRpb25D
b250ZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFj
a2luZ1N0b3JlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlE
QkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6ZXN0aW1hdGVTaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OnB1dE9y
QWRkKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5kZXhLZXkuaDoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZW5l
cmF0ZUluZGV4S2V5TWFwRm9yVmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0lEQkJpbmRp
bmdVdGlsaXRpZXMuaDoKKwogMjAyMC0wNC0yOCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2Vy
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXdyaXRlIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlU3Vi
bGF5ZXJMaXN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDY1YzdjYWY3ZmYxYTIzZjZiZDkyZjE1
MTIxYzMwOTA5NWZlYmMzZDYuLjg2MDg0OTM1MDEwMjNhOGYyZjA3NzQzY2Q3MzUzOGY5OWI3NzVj
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtNjgsNiArNjgsNyBAQCBzZXQoV2ViQ29yZV9QUklW
QVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1
ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1Vu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaAogCisgICAgTW9kdWxlcy9pbmRleGVkZGIvc2hh
cmVkL0luZGV4S2V5LmgKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCQ3Vyc29ySW5m
by5oCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkN1cnNvclJlY29yZC5oCiAgICAg
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkRhdGFiYXNlSW5mby5oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3Jl
LmgKaW5kZXggYTdkZjdhMWRjZDYwNzVkZGE0NTEwOTBhYTkzMDM3YWU4MjFjZGJmNC4uODg4OWFi
MGI0NDIyZWYzN2Y5ZjY2NWNmYjdkZmIzMWI3ZjY2ZWY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJCYWNraW5nU3RvcmUuaApA
QCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VJbmZvLmgiCiAjaW5jbHVk
ZSAiSURCRXJyb3IuaCIKKyNpbmNsdWRlICJJbmRleEtleS5oIgogI2luY2x1ZGUgPHd0Zi9NYWlu
VGhyZWFkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU2LDYgKzU3LDggQEAgZW51bSBj
bGFzcyBJbmRleFJlY29yZFR5cGU7CiAKIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewogCitjbGFzcyBJ
REJTZXJpYWxpemF0aW9uQ29udGV4dDsKKwogY2xhc3MgSURCQmFja2luZ1N0b3JlIHsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5JREJCYWNraW5nU3RvcmUoKSB7IFJFTEVBU0VfQVNTRVJUKCFpc01h
aW5UaHJlYWQoKSk7IH0KQEAgLTc1LDcgKzc4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSURC
RXJyb3IgcmVuYW1lSW5kZXgoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlv
bklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5k
ZXhJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpID0gMDsKICAgICB2aXJ0dWFsIElE
QkVycm9yIGtleUV4aXN0c0luT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwg
Y29uc3QgSURCS2V5RGF0YSYsIGJvb2wmIGtleUV4aXN0cykgPSAwOwogICAgIHZpcnR1YWwgSURC
RXJyb3IgZGVsZXRlUmFuZ2UoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlv
bklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgSURCS2V5
UmFuZ2VEYXRhJikgPSAwOwotICAgIHZpcnR1YWwgSURCRXJyb3IgYWRkUmVjb3JkKGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJPYmpl
Y3RTdG9yZUluZm8mLCBjb25zdCBJREJLZXlEYXRhJiwgY29uc3QgSURCVmFsdWUmKSA9IDA7Cisg
ICAgdmlydHVhbCBJREJFcnJvciBhZGRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYsIGNvbnN0
IElEQktleURhdGEmLCBjb25zdCBJbmRleElEVG9JbmRleEtleU1hcCYsIGNvbnN0IElEQlZhbHVl
JikgPSAwOwogICAgIHZpcnR1YWwgSURCRXJyb3IgZ2V0UmVjb3JkKGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlk
ZW50aWZpZXIsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIElEQkdldFJlY29yZERhdGFUeXBlLCBJ
REJHZXRSZXN1bHQmIG91dFZhbHVlKSA9IDA7CiAgICAgdmlydHVhbCBJREJFcnJvciBnZXRBbGxS
ZWNvcmRzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVy
LCBjb25zdCBJREJHZXRBbGxSZWNvcmRzRGF0YSYsIElEQkdldEFsbFJlc3VsdCYgb3V0VmFsdWUp
ID0gMDsKICAgICB2aXJ0dWFsIElEQkVycm9yIGdldEluZGV4UmVjb3JkKGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9y
ZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgSW5kZXhlZERCOjpJbmRleFJl
Y29yZFR5cGUsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIElEQkdldFJlc3VsdCYgb3V0VmFsdWUp
ID0gMDsKQEAgLTg2LDYgKzg5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgSURCRXJyb3Igb3Bl
bkN1cnNvcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmll
ciwgY29uc3QgSURCQ3Vyc29ySW5mbyYsIElEQkdldFJlc3VsdCYgb3V0UmVzdWx0KSA9IDA7CiAg
ICAgdmlydHVhbCBJREJFcnJvciBpdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IGN1cnNvcklkZW50aWZpZXIsIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJiwgSURCR2V0UmVz
dWx0JiBvdXRSZXN1bHQpID0gMDsKIAorICAgIHZpcnR1YWwgSURCU2VyaWFsaXphdGlvbkNvbnRl
eHQmIHNlcmlhbGl6YXRpb25Db250ZXh0KCkgPSAwOworCiAgICAgdmlydHVhbCBJREJPYmplY3RT
dG9yZUluZm8qIGluZm9Gb3JPYmplY3RTdG9yZSh1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZp
ZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQmFja2luZ1N0b3JlKCkgPSAwOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5
SURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDQwMWNlM2QyYjE2MWJhZDNlNzkz
OTc3MTdlZDVlMjg4NzcwNDI2MmUuLjBmNGIzNWM5NGExOWU2ODVkYzVkYjJjNWI1NDdiMzJlZTE4
ZmEyN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0zNSw2ICszNSw3
IEBACiAjaW5jbHVkZSAiSURCSW5kZXhJbmZvLmgiCiAjaW5jbHVkZSAiSURCSXRlcmF0ZUN1cnNv
ckRhdGEuaCIKICNpbmNsdWRlICJJREJLZXlSYW5nZURhdGEuaCIKKyNpbmNsdWRlICJJREJTZXJp
YWxpemF0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZW1v
cnlJbmRleEN1cnNvci5oIgogI2luY2x1ZGUgIk1lbW9yeU9iamVjdFN0b3JlLmgiCkBAIC00OSw2
ICs1MCw3IEBAIGNvbnN0ZXhwciB1aW50NjRfdCBtYXhHZW5lcmF0ZWRLZXlWYWx1ZSA9IDB4MjAw
MDAwMDAwMDAwMDA7CiBNZW1vcnlJREJCYWNraW5nU3RvcmU6Ok1lbW9yeUlEQkJhY2tpbmdTdG9y
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYg
aWRlbnRpZmllcikKICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgICwgbV9zZXNz
aW9uSUQoc2Vzc2lvbklEKQorICAgICwgbV9zZXJpYWxpemF0aW9uQ29udGV4dChJREJTZXJpYWxp
emF0aW9uQ29udGV4dDo6Z2V0T3JDcmVhdGVJREJTZXJpYWxpemF0aW9uQ29udGV4dChzZXNzaW9u
SUQpKQogewogfQogCkBAIC0zNTUsNyArMzU3LDcgQEAgSURCRXJyb3IgTWVtb3J5SURCQmFja2lu
Z1N0b3JlOjpkZWxldGVSYW5nZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWMK
ICAgICByZXR1cm4gSURCRXJyb3IgeyB9OwogfQogCi1JREJFcnJvciBNZW1vcnlJREJCYWNraW5n
U3RvcmU6OmFkZFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9u
SWRlbnRpZmllciwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBvYmplY3RTdG9yZUluZm8sIGNv
bnN0IElEQktleURhdGEmIGtleURhdGEsIGNvbnN0IElEQlZhbHVlJiB2YWx1ZSkKK0lEQkVycm9y
IE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6YWRkUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIG9i
amVjdFN0b3JlSW5mbywgY29uc3QgSURCS2V5RGF0YSYga2V5RGF0YSwgY29uc3QgSW5kZXhJRFRv
SW5kZXhLZXlNYXAmIGluZGV4S2V5cywgY29uc3QgSURCVmFsdWUmIHZhbHVlKQogewogICAgIExP
RyhJbmRleGVkREIsICJNZW1vcnlJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZCIpOwogCkBAIC0z
NjksNyArMzcxLDcgQEAgSURCRXJyb3IgTWVtb3J5SURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQo
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICBpZiAoIW9iamVjdFN0
b3JlKQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJObyBiYWNraW5n
IHN0b3JlIG9iamVjdCBzdG9yZSBmb3VuZCB0byBwdXQgcmVjb3JkIl9zIH07CiAKLSAgICByZXR1
cm4gb2JqZWN0U3RvcmUtPmFkZFJlY29yZCgqdHJhbnNhY3Rpb24sIGtleURhdGEsIHZhbHVlKTsK
KyAgICByZXR1cm4gb2JqZWN0U3RvcmUtPmFkZFJlY29yZCgqdHJhbnNhY3Rpb24sIGtleURhdGEs
IGluZGV4S2V5cywgdmFsdWUpOwogfQogCiBJREJFcnJvciBNZW1vcnlJREJCYWNraW5nU3RvcmU6
OmdldFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRp
ZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBJREJLZXlSYW5nZURh
dGEmIHJhbmdlLCBJREJHZXRSZWNvcmREYXRhVHlwZSB0eXBlLCBJREJHZXRSZXN1bHQmIG91dFZh
bHVlKQpAQCAtNjExLDYgKzYxMywxMSBAQCBSZWZQdHI8TWVtb3J5T2JqZWN0U3RvcmU+IE1lbW9y
eUlEQkJhY2tpbmdTdG9yZTo6dGFrZU9iamVjdFN0b3JlQnlJZGVudGlmaWVyKHVpbgogICAgIHJl
dHVybiBvYmplY3RTdG9yZUJ5SWRlbnRpZmllcjsKIH0KIAorSURCU2VyaWFsaXphdGlvbkNvbnRl
eHQmIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6c2VyaWFsaXphdGlvbkNvbnRleHQoKQoreworICAg
IHJldHVybiBtX3NlcmlhbGl6YXRpb25Db250ZXh0LmdldCgpOworfQorCiBJREJPYmplY3RTdG9y
ZUluZm8qIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6aW5mb0Zvck9iamVjdFN0b3JlKHVpbnQ2NF90
IG9iamVjdFN0b3JlSWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQobV9kYXRhYmFzZUluZm8pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9y
eUlEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oCmluZGV4IDc0ZGM5NTA5NDVhNmVmNGI4ZWI1NzJh
OGJkNGQxNWRkYTUyYjhmYjUuLmI5NjkyMjY1M2I1MWNhODU5MWE0M2M4YTY4YmYxOWVjMjdmYTcz
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9N
ZW1vcnlJREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNp
bmNsdWRlICJJREJCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUlkZW50aWZp
ZXIuaCIKICNpbmNsdWRlICJJREJSZXNvdXJjZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJJbmRl
eEtleS5oIgogI2luY2x1ZGUgIk1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmgiCiAjaW5j
bHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC0zNyw2
ICszOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgSURCU2VydmVyIHsKIAor
Y2xhc3MgSURCU2VyaWFsaXphdGlvbkNvbnRleHQ7CiBjbGFzcyBNZW1vcnlPYmplY3RTdG9yZTsK
IAogY2xhc3MgTWVtb3J5SURCQmFja2luZ1N0b3JlIGZpbmFsIDogcHVibGljIElEQkJhY2tpbmdT
dG9yZSB7CkBAIC01MSw2ICs1Myw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZU9iamVjdFN0
b3JlRm9yVmVyc2lvbkNoYW5nZUFib3J0KE1lbW9yeU9iamVjdFN0b3JlJik7CiAgICAgdm9pZCBy
ZXN0b3JlT2JqZWN0U3RvcmVGb3JWZXJzaW9uQ2hhbmdlQWJvcnQoUmVmPE1lbW9yeU9iamVjdFN0
b3JlPiYmKTsKIAorICAgIElEQlNlcmlhbGl6YXRpb25Db250ZXh0JiBzZXJpYWxpemF0aW9uQ29u
dGV4dCgpIGZpbmFsOworCiBwcml2YXRlOgogICAgIElEQkVycm9yIGJlZ2luVHJhbnNhY3Rpb24o
Y29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJikgZmluYWw7CiAgICAgSURCRXJyb3IgYWJvcnRUcmFu
c2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmll
cikgZmluYWw7CkBAIC02NCw3ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgSURCRXJyb3IgcmVuYW1l
SW5kZXgoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIs
IHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIG5ld05hbWUpIGZpbmFsOwogICAgIElEQkVycm9yIGtleUV4aXN0c0lu
T2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50
aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgSURCS2V5RGF0YSYs
IGJvb2wmIGtleUV4aXN0cykgZmluYWw7CiAgICAgSURCRXJyb3IgZGVsZXRlUmFuZ2UoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9i
amVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJikgZmluYWw7Ci0gICAg
SURCRXJyb3IgYWRkUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rp
b25JZGVudGlmaWVyLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mLCBjb25zdCBJREJLZXlEYXRh
JiwgY29uc3QgSURCVmFsdWUmKSBmaW5hbDsKKyAgICBJREJFcnJvciBhZGRSZWNvcmQoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQk9i
amVjdFN0b3JlSW5mbyYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJbmRleElEVG9JbmRleEtl
eU1hcCYsIGNvbnN0IElEQlZhbHVlJikgZmluYWw7CiAgICAgSURCRXJyb3IgZ2V0UmVjb3JkKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRf
dCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIElEQkdldFJl
Y29yZERhdGFUeXBlLCBJREJHZXRSZXN1bHQmIG91dFZhbHVlKSBmaW5hbDsKICAgICBJREJFcnJv
ciBnZXRBbGxSZWNvcmRzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25J
ZGVudGlmaWVyLCBjb25zdCBJREJHZXRBbGxSZWNvcmRzRGF0YSYsIElEQkdldEFsbFJlc3VsdCYg
b3V0VmFsdWUpIGZpbmFsOwogICAgIElEQkVycm9yIGdldEluZGV4UmVjb3JkKGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RT
dG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgSW5kZXhlZERCOjpJbmRl
eFJlY29yZFR5cGUsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIElEQkdldFJlc3VsdCYgb3V0VmFs
dWUpIGZpbmFsOwpAQCAtOTIsNiArOTYsNyBAQCBwcml2YXRlOgogCiAgICAgSURCRGF0YWJhc2VJ
ZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsK
KyAgICBSZWY8SURCU2VyaWFsaXphdGlvbkNvbnRleHQ+IG1fc2VyaWFsaXphdGlvbkNvbnRleHQ7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gbV9kYXRhYmFzZUluZm87CiAK
ICAgICBIYXNoTWFwPElEQlJlc291cmNlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPE1lbW9y
eUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uPj4gbV90cmFuc2FjdGlvbnM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVj
dFN0b3JlLmNwcAppbmRleCA3MTU1YjU5N2E0MjBmNTllMTM5NWI5MjgxZGU4YzJkNjRkYWE4NzEx
Li4wOWRjNDJjYmU0NTgzNDE1ZThjNGI5NDQwZGY2NzAwMDM4ZjY0NDk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlP
YmplY3RTdG9yZS5jcHAKQEAgLTI1MSw2ICsyNTEsMTIgQEAgdm9pZCBNZW1vcnlPYmplY3RTdG9y
ZTo6ZGVsZXRlUmFuZ2UoY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBpbnB1dFJhbmdlKQogfQogCiBJ
REJFcnJvciBNZW1vcnlPYmplY3RTdG9yZTo6YWRkUmVjb3JkKE1lbW9yeUJhY2tpbmdTdG9yZVRy
YW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgY29uc3QgSURCS2V5RGF0YSYga2V5RGF0YSwgY29uc3Qg
SURCVmFsdWUmIHZhbHVlKQoreworICAgIEluZGV4SURUb0luZGV4S2V5TWFwIGluZGV4S2V5cyA9
IGdlbmVyYXRlSW5kZXhLZXlNYXBGb3JWYWx1ZShtX3NlcmlhbGl6YXRpb25Db250ZXh0LT5leGVj
U3RhdGUoKSwgbV9pbmZvLCBrZXlEYXRhLCB2YWx1ZSk7CisgICAgcmV0dXJuIGFkZFJlY29yZCh0
cmFuc2FjdGlvbiwga2V5RGF0YSwgaW5kZXhLZXlzLCB2YWx1ZSk7Cit9CisKK0lEQkVycm9yIE1l
bW9yeU9iamVjdFN0b3JlOjphZGRSZWNvcmQoTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24m
IHRyYW5zYWN0aW9uLCBjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBJbmRleElEVG9J
bmRleEtleU1hcCYgaW5kZXhLZXlzLCBjb25zdCBJREJWYWx1ZSYgdmFsdWUpCiB7CiAgICAgTE9H
KEluZGV4ZWREQiwgIk1lbW9yeU9iamVjdFN0b3JlOjphZGRSZWNvcmQiKTsKIApAQCAtMjcxLDcg
KzI3Nyw3IEBAIElEQkVycm9yIE1lbW9yeU9iamVjdFN0b3JlOjphZGRSZWNvcmQoTWVtb3J5QmFj
a2luZ1N0b3JlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uCiAgICAgQVNTRVJUKGxpc3RSZXN1bHQu
c2Vjb25kKTsKIAogICAgIC8vIElmIHRoZXJlIHdhcyBhbiBlcnJvciBpbmRleGluZyB0aGlzIGFk
ZGl0aW9uLCB0aGVuIHJldmVydCBpdC4KLSAgICBhdXRvIGVycm9yID0gdXBkYXRlSW5kZXhlc0Zv
clB1dFJlY29yZChrZXlEYXRhLCB2YWx1ZS5kYXRhKCkpOworICAgIGF1dG8gZXJyb3IgPSB1cGRh
dGVJbmRleGVzRm9yUHV0UmVjb3JkKGtleURhdGEsIGluZGV4S2V5cyk7CiAgICAgaWYgKCFlcnJv
ci5pc051bGwoKSkgewogICAgICAgICBtX2tleVZhbHVlU3RvcmUtPnJlbW92ZShtYXBSZXN1bHQu
aXRlcmF0b3IpOwogICAgICAgICBtX29yZGVyZWRLZXlzLT5lcmFzZShsaXN0UmVzdWx0LmZpcnN0
KTsKQEAgLTI5OSwyOSArMzA1LDIzIEBAIHZvaWQgTWVtb3J5T2JqZWN0U3RvcmU6OnVwZGF0ZUlu
ZGV4ZXNGb3JEZWxldGVSZWNvcmQoY29uc3QgSURCS2V5RGF0YSYgdmFsdWUpCiAgICAgICAgIGlu
ZGV4LT5yZW1vdmVFbnRyaWVzV2l0aFZhbHVlS2V5KHZhbHVlKTsKIH0KIAotSURCRXJyb3IgTWVt
b3J5T2JqZWN0U3RvcmU6OnVwZGF0ZUluZGV4ZXNGb3JQdXRSZWNvcmQoY29uc3QgSURCS2V5RGF0
YSYga2V5LCBjb25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYgdmFsdWUpCitJREJFcnJvciBNZW1v
cnlPYmplY3RTdG9yZTo6dXBkYXRlSW5kZXhlc0ZvclB1dFJlY29yZChjb25zdCBJREJLZXlEYXRh
JiBrZXksIGNvbnN0IEluZGV4SURUb0luZGV4S2V5TWFwJiBpbmRleEtleXMpCiB7Ci0gICAgSlNM
b2NrSG9sZGVyIGxvY2tlcihtX3NlcmlhbGl6YXRpb25Db250ZXh0LT52bSgpKTsKLQotICAgIGF1
dG8ganNWYWx1ZSA9IGRlc2VyaWFsaXplSURCVmFsdWVUb0pTVmFsdWUobV9zZXJpYWxpemF0aW9u
Q29udGV4dC0+ZXhlY1N0YXRlKCksIHZhbHVlKTsKLSAgICBpZiAoanNWYWx1ZS5pc1VuZGVmaW5l
ZE9yTnVsbCgpKQotICAgICAgICByZXR1cm4gSURCRXJyb3IgeyB9OwotCiAgICAgSURCRXJyb3Ig
ZXJyb3I7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxNZW1vcnlJbmRleCosIEluZGV4S2V5Pj4gY2hh
bmdlZEluZGV4UmVjb3JkczsKIAotICAgIGZvciAoYXV0byYgaW5kZXggOiBtX2luZGV4ZXNCeU5h
bWUudmFsdWVzKCkpIHsKLSAgICAgICAgSW5kZXhLZXkgaW5kZXhLZXk7Ci0gICAgICAgIGdlbmVy
YXRlSW5kZXhLZXlGb3JWYWx1ZShtX3NlcmlhbGl6YXRpb25Db250ZXh0LT5leGVjU3RhdGUoKSwg
aW5kZXgtPmluZm8oKSwganNWYWx1ZSwgaW5kZXhLZXksIG1faW5mby5rZXlQYXRoKCksIGtleSk7
Ci0KLSAgICAgICAgaWYgKGluZGV4S2V5LmlzTnVsbCgpKQotICAgICAgICAgICAgY29udGludWU7
CisgICAgZm9yIChjb25zdCBhdXRvJiBbaW5kZXhJRCwgaW5kZXhLZXldIDogaW5kZXhLZXlzKSB7
CisgICAgICAgIGF1dG8qIGluZGV4ID0gbV9pbmRleGVzQnlJZGVudGlmaWVyLmdldChpbmRleElE
KTsKKyAgICAgICAgaWYgKCFpbmRleCkgeworICAgICAgICAgICAgZXJyb3IgPSBJREJFcnJvciB7
IH07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogCiAgICAgICAgIGVycm9yID0gaW5k
ZXgtPnB1dEluZGV4S2V5KGtleSwgaW5kZXhLZXkpOwogICAgICAgICBpZiAoIWVycm9yLmlzTnVs
bCgpKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgY2hhbmdlZEluZGV4UmVjb3Jkcy5h
cHBlbmQoc3RkOjptYWtlX3BhaXIoaW5kZXguZ2V0KCksIGluZGV4S2V5KSk7CisgICAgICAgIGNo
YW5nZWRJbmRleFJlY29yZHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGluZGV4LCBpbmRleEtleSkp
OwogICAgIH0KIAogICAgIC8vIElmIGFueSBvZiB0aGUgaW5kZXggcHV0cyBmYWlsZWQsIHJldmVy
dCBhbGwgb2YgdGhlIG9uZXMgdGhhdCB3ZW50IHRocm91Z2guCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5o
CmluZGV4IGFjNzAxMDg5YmM0YjE1Zjc3NjUxMWUxMzg4YjZkZmIwN2MyZGZiMDYuLmIxNTAyOTkz
OTVjMWFlYjVmMWM0MDU5Mjg3OThjNDcwMzcwMDExM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5o
CkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJJREJLZXlEYXRhLmgiCiAjaW5jbHVkZSAi
SURCT2JqZWN0U3RvcmVJbmZvLmgiCisjaW5jbHVkZSAiSW5kZXhLZXkuaCIKICNpbmNsdWRlICJN
ZW1vcnlJbmRleC5oIgogI2luY2x1ZGUgIk1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yLmgiCiAjaW5j
bHVkZSAiVGhyZWFkU2FmZURhdGFCdWZmZXIuaCIKQEAgLTgwLDYgKzgxLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgZGVsZXRlUmVjb3JkKGNvbnN0IElEQktleURhdGEmKTsKICAgICB2b2lkIGRlbGV0
ZVJhbmdlKGNvbnN0IElEQktleVJhbmdlRGF0YSYpOwogICAgIElEQkVycm9yIGFkZFJlY29yZChN
ZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbiYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJ
REJWYWx1ZSYpOworICAgIElEQkVycm9yIGFkZFJlY29yZChNZW1vcnlCYWNraW5nU3RvcmVUcmFu
c2FjdGlvbiYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJbmRleElEVG9JbmRleEtleU1hcCYs
IGNvbnN0IElEQlZhbHVlJik7CiAKICAgICB1aW50NjRfdCBjdXJyZW50S2V5R2VuZXJhdG9yVmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX2tleUdlbmVyYXRvclZhbHVlOyB9CiAgICAgdm9pZCBzZXRL
ZXlHZW5lcmF0b3JWYWx1ZSh1aW50NjRfdCB2YWx1ZSkgeyBtX2tleUdlbmVyYXRvclZhbHVlID0g
dmFsdWU7IH0KQEAgLTExNCw3ICsxMTYsNyBAQCBwcml2YXRlOgogICAgIElEQktleURhdGFTZXQ6
Oml0ZXJhdG9yIGxvd2VzdEl0ZXJhdG9ySW5SYW5nZShjb25zdCBJREJLZXlSYW5nZURhdGEmLCBi
b29sIHJldmVyc2UpIGNvbnN0OwogCiAgICAgSURCRXJyb3IgcG9wdWxhdGVJbmRleFdpdGhFeGlz
dGluZ1JlY29yZHMoTWVtb3J5SW5kZXgmKTsKLSAgICBJREJFcnJvciB1cGRhdGVJbmRleGVzRm9y
UHV0UmVjb3JkKGNvbnN0IElEQktleURhdGEmLCBjb25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYg
dmFsdWUpOworICAgIElEQkVycm9yIHVwZGF0ZUluZGV4ZXNGb3JQdXRSZWNvcmQoY29uc3QgSURC
S2V5RGF0YSYsIGNvbnN0IEluZGV4SURUb0luZGV4S2V5TWFwJik7CiAgICAgdm9pZCB1cGRhdGVJ
bmRleGVzRm9yRGVsZXRlUmVjb3JkKGNvbnN0IElEQktleURhdGEmIHZhbHVlKTsKICAgICB2b2lk
IHVwZGF0ZUN1cnNvcnNGb3JQdXRSZWNvcmQoSURCS2V5RGF0YVNldDo6aXRlcmF0b3IpOwogICAg
IHZvaWQgdXBkYXRlQ3Vyc29yc0ZvckRlbGV0ZVJlY29yZChjb25zdCBJREJLZXlEYXRhJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDU2M2RlYTg4MGZhODc4ZjU0MjI5
ODBkYzdhZmIzZWE0ODk5ODUyMjcuLjczZGJlNDkwNDllYjk4MDRiYjc0ZTgzOWM3MGE1ZmUzZDU0
YzkxNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0xODQ4LDI0ICsx
ODQ4LDIwIEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dXBkYXRlT25lSW5kZXhG
b3JBZGRSZWNvcmQoY29uc3QgSURCSW5kZXhJbmZvJiBpCiAgICAgcmV0dXJuIHVuY2hlY2tlZFB1
dEluZGV4S2V5KGluZm8sIGtleSwgaW5kZXhLZXksIHJlY29yZElEKTsKIH0KIAotSURCRXJyb3Ig
U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1cGRhdGVBbGxJbmRleGVzRm9yQWRkUmVjb3JkKGNvbnN0
IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbywgY29uc3QgSURCS2V5RGF0YSYga2V5LCBjb25zdCBU
aHJlYWRTYWZlRGF0YUJ1ZmZlciYgdmFsdWUsIGludDY0X3QgcmVjb3JkSUQpCitJREJFcnJvciBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OnVwZGF0ZUFsbEluZGV4ZXNGb3JBZGRSZWNvcmQoY29uc3Qg
SURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvLCBjb25zdCBJREJLZXlEYXRhJiBrZXksIGNvbnN0IElu
ZGV4SURUb0luZGV4S2V5TWFwJiBpbmRleEtleXMsIGludDY0X3QgcmVjb3JkSUQpCiB7Ci0gICAg
SlNMb2NrSG9sZGVyIGxvY2tlcihtX3NlcmlhbGl6YXRpb25Db250ZXh0LT52bSgpKTsKLQotICAg
IGF1dG8ganNWYWx1ZSA9IGRlc2VyaWFsaXplSURCVmFsdWVUb0pTVmFsdWUobV9zZXJpYWxpemF0
aW9uQ29udGV4dC0+ZXhlY1N0YXRlKCksIHZhbHVlKTsKLSAgICBpZiAoanNWYWx1ZS5pc1VuZGVm
aW5lZE9yTnVsbCgpKQotICAgICAgICByZXR1cm4gSURCRXJyb3IgeyB9OwotCiAgICAgSURCRXJy
b3IgZXJyb3I7CisgICAgY29uc3QgYXV0byYgaW5kZXhNYXAgPSBpbmZvLmluZGV4TWFwKCk7CiAg
ICAgYm9vbCBhbnlSZWNvcmRzU3VjY2VlZGVkID0gZmFsc2U7Ci0gICAgZm9yIChhdXRvJiBpbmRl
eCA6IGluZm8uaW5kZXhNYXAoKS52YWx1ZXMoKSkgewotICAgICAgICBJbmRleEtleSBpbmRleEtl
eTsKLSAgICAgICAgZ2VuZXJhdGVJbmRleEtleUZvclZhbHVlKG1fc2VyaWFsaXphdGlvbkNvbnRl
eHQtPmV4ZWNTdGF0ZSgpLCBpbmRleCwganNWYWx1ZSwgaW5kZXhLZXksIGluZm8ua2V5UGF0aCgp
LCBrZXkpOwogCi0gICAgICAgIGlmIChpbmRleEtleS5pc051bGwoKSkKLSAgICAgICAgICAgIGNv
bnRpbnVlOworICAgIGZvciAoY29uc3QgYXV0byYgW2luZGV4SUQsIGluZGV4S2V5XSA6IGluZGV4
S2V5cykgeworICAgICAgICBhdXRvIGluZGV4SXQgPSBpbmRleE1hcC5maW5kKGluZGV4SUQpOwor
ICAgICAgICBpZiAoaW5kZXhJdCA9PSBpbmRleE1hcC5lbmQoKSkgeworICAgICAgICAgICAgZXJy
b3IgPSBJREJFcnJvciB7IH07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogCi0gICAg
ICAgIGVycm9yID0gdW5jaGVja2VkUHV0SW5kZXhLZXkoaW5kZXgsIGtleSwgaW5kZXhLZXksIHJl
Y29yZElEKTsKKyAgICAgICAgZXJyb3IgPSB1bmNoZWNrZWRQdXRJbmRleEtleShpbmRleEl0LT52
YWx1ZSwga2V5LCBpbmRleEtleSwgcmVjb3JkSUQpOwogICAgICAgICBpZiAoIWVycm9yLmlzTnVs
bCgpKQogICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTE4ODcsNyArMTg4Myw3IEBAIElEQkVycm9y
IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dXBkYXRlQWxsSW5kZXhlc0ZvckFkZFJlY29yZChjb25z
dCBJREJPYmplY3RTdG9yCiAgICAgcmV0dXJuIGVycm9yOwogfQogCi1JREJFcnJvciBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmFkZFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRy
YW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBvYmplY3RTdG9y
ZUluZm8sIGNvbnN0IElEQktleURhdGEmIGtleURhdGEsIGNvbnN0IElEQlZhbHVlJiB2YWx1ZSkK
K0lEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkUmVjb3JkKGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJPYmplY3RTdG9y
ZUluZm8mIG9iamVjdFN0b3JlSW5mbywgY29uc3QgSURCS2V5RGF0YSYga2V5RGF0YSwgY29uc3Qg
SW5kZXhJRFRvSW5kZXhLZXlNYXAmIGluZGV4S2V5cywgY29uc3QgSURCVmFsdWUmIHZhbHVlKQog
ewogICAgIExPRyhJbmRleGVkREIsICJTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZCAt
IGtleSAlcywgb2JqZWN0IHN0b3JlICUiIFBSSXU2NCwga2V5RGF0YS5sb2dnaW5nU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSwgb2JqZWN0U3RvcmVJbmZvLmlkZW50aWZpZXIoKSk7CiAKQEAgLTE5MjYs
NyArMTkyMiw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkUmVjb3JkKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgICAgIHJlY29yZElEID0g
bV9zcWxpdGVEQi0+bGFzdEluc2VydFJvd0lEKCk7CiAgICAgfQogCi0gICAgYXV0byBlcnJvciA9
IHVwZGF0ZUFsbEluZGV4ZXNGb3JBZGRSZWNvcmQob2JqZWN0U3RvcmVJbmZvLCBrZXlEYXRhLCB2
YWx1ZS5kYXRhKCksIHJlY29yZElEKTsKKyAgICBhdXRvIGVycm9yID0gdXBkYXRlQWxsSW5kZXhl
c0ZvckFkZFJlY29yZChvYmplY3RTdG9yZUluZm8sIGtleURhdGEsIGluZGV4S2V5cywgcmVjb3Jk
SUQpOwogCiAgICAgaWYgKCFlcnJvci5pc051bGwoKSkgewogICAgICAgICBhdXRvKiBzcWwgPSBj
YWNoZWRTdGF0ZW1lbnQoU1FMOjpEZWxldGVPYmplY3RTdG9yZVJlY29yZCwgIkRFTEVURSBGUk9N
IFJlY29yZHMgV0hFUkUgb2JqZWN0U3RvcmVJRCA9ID8gQU5EIGtleSA9IENBU1QoPyBBUyBURVhU
KTsiX3MpOwpAQCAtMjczMyw2ICsyNzI5LDExIEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6aXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zCiAg
ICAgcmV0dXJuIElEQkVycm9yIHsgfTsKIH0KIAorSURCU2VyaWFsaXphdGlvbkNvbnRleHQmIFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6c2VyaWFsaXphdGlvbkNvbnRleHQoKQoreworICAgIHJldHVy
biBtX3NlcmlhbGl6YXRpb25Db250ZXh0LmdldCgpOworfQorCiBJREJPYmplY3RTdG9yZUluZm8q
IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6aW5mb0Zvck9iamVjdFN0b3JlKHVpbnQ2NF90IG9iamVj
dFN0b3JlSWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQobV9kYXRhYmFzZUluZm8pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJh
Y2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQkJhY2tpbmdTdG9yZS5oCmluZGV4IDQ5NDBjMTUxNjExMDRhZDk2OTU4ZmQyMzQzN2Rh
YzY5OTQwY2M3MTguLmJiMDU3ZDk1MThjZjBmN2JlNzkwNmM3M2YzZWJmZWI4YjhjMmExNDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgog
ICAgIElEQkVycm9yIHJlbmFtZUluZGV4KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJh
bnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2
NF90IGluZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKSBmaW5hbDsKICAgICBJ
REJFcnJvciBrZXlFeGlzdHNJbk9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIs
IGNvbnN0IElEQktleURhdGEmLCBib29sJiBrZXlFeGlzdHMpIGZpbmFsOwogICAgIElEQkVycm9y
IGRlbGV0ZVJhbmdlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVu
dGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IElEQktleVJhbmdl
RGF0YSYpIGZpbmFsOwotICAgIElEQkVycm9yIGFkZFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlk
ZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZv
JiwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IElEQlZhbHVlJikgZmluYWw7CisgICAgSURCRXJy
b3IgYWRkUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVu
dGlmaWVyLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mLCBjb25zdCBJREJLZXlEYXRhJiwgY29u
c3QgSW5kZXhJRFRvSW5kZXhLZXlNYXAmLCBjb25zdCBJREJWYWx1ZSYpIGZpbmFsOwogICAgIElE
QkVycm9yIGdldFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9u
SWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBJREJLZXlS
YW5nZURhdGEmLCBJREJHZXRSZWNvcmREYXRhVHlwZSwgSURCR2V0UmVzdWx0JiBvdXRWYWx1ZSkg
ZmluYWw7CiAgICAgSURCRXJyb3IgZ2V0QWxsUmVjb3Jkcyhjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCR2V0QWxsUmVjb3Jkc0RhdGEm
LCBJREJHZXRBbGxSZXN1bHQmIG91dFZhbHVlKSBmaW5hbDsKICAgICBJREJFcnJvciBnZXRJbmRl
eFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmll
ciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZp
ZXIsIEluZGV4ZWREQjo6SW5kZXhSZWNvcmRUeXBlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCBJ
REJHZXRSZXN1bHQmIG91dFZhbHVlKSBmaW5hbDsKQEAgLTgxLDYgKzgxLDggQEAgcHVibGljOgog
ICAgIElEQkVycm9yIG9wZW5DdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFu
c2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkN1cnNvckluZm8mLCBJREJHZXRSZXN1bHQmIG91
dFJlc3VsdCkgZmluYWw7CiAgICAgSURCRXJyb3IgaXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXNv
dXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiBjdXJzb3JJZGVudGlmaWVyLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYs
IElEQkdldFJlc3VsdCYgb3V0UmVzdWx0KSBmaW5hbDsKIAorICAgIElEQlNlcmlhbGl6YXRpb25D
b250ZXh0JiBzZXJpYWxpemF0aW9uQ29udGV4dCgpIGZpbmFsOworCiAgICAgSURCT2JqZWN0U3Rv
cmVJbmZvKiBpbmZvRm9yT2JqZWN0U3RvcmUodWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVy
KSBmaW5hbDsKICAgICB2b2lkIGRlbGV0ZUJhY2tpbmdTdG9yZSgpIGZpbmFsOwogCkBAIC0xMjIs
NyArMTI0LDcgQEAgcHJpdmF0ZToKICAgICBJREJFcnJvciB1bmNoZWNrZWRHZXRLZXlHZW5lcmF0
b3JWYWx1ZShpbnQ2NF90IG9iamVjdFN0b3JlSUQsIHVpbnQ2NF90JiBvdXRWYWx1ZSk7CiAgICAg
SURCRXJyb3IgdW5jaGVja2VkU2V0S2V5R2VuZXJhdG9yVmFsdWUoaW50NjRfdCBvYmplY3RTdG9y
ZUlELCB1aW50NjRfdCB2YWx1ZSk7CiAKLSAgICBJREJFcnJvciB1cGRhdGVBbGxJbmRleGVzRm9y
QWRkUmVjb3JkKGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYsIGNvbnN0IElEQktleURhdGEmLCBj
b25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYgdmFsdWUsIGludDY0X3QgcmVjb3JkSUQpOworICAg
IElEQkVycm9yIHVwZGF0ZUFsbEluZGV4ZXNGb3JBZGRSZWNvcmQoY29uc3QgSURCT2JqZWN0U3Rv
cmVJbmZvJiwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IEluZGV4SURUb0luZGV4S2V5TWFwJiwg
aW50NjRfdCByZWNvcmRJRCk7CiAgICAgSURCRXJyb3IgdXBkYXRlT25lSW5kZXhGb3JBZGRSZWNv
cmQoY29uc3QgSURCSW5kZXhJbmZvJiwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IFRocmVhZFNh
ZmVEYXRhQnVmZmVyJiB2YWx1ZSwgaW50NjRfdCByZWNvcmRJRCk7CiAgICAgSURCRXJyb3IgdW5j
aGVja2VkUHV0SW5kZXhLZXkoY29uc3QgSURCSW5kZXhJbmZvJiwgY29uc3QgSURCS2V5RGF0YSYg
a2V5VmFsdWUsIGNvbnN0IEluZGV4S2V5JiwgaW50NjRfdCByZWNvcmRJRCk7CiAgICAgSURCRXJy
b3IgdW5jaGVja2VkUHV0SW5kZXhSZWNvcmQoaW50NjRfdCBvYmplY3RTdG9yZUlELCBpbnQ2NF90
IGluZGV4SUQsIGNvbnN0IElEQktleURhdGEmIGtleVZhbHVlLCBjb25zdCBJREJLZXlEYXRhJiBp
bmRleEtleSwgaW50NjRfdCByZWNvcmRJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAppbmRl
eCA0MjllNDQyYWU5MjY4ZWE0MWYzMDc3NGFlZWM3YmUwMGUyODcxN2Q2Li5jZTI2OTZmNDQ3MWZi
NDM1ZDViMDJkZDE5MmU3MmE1NzhlNGRmODgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAK
QEAgLTcwLDYgKzcwLDE5IEBAIHN0YXRpYyBpbmxpbmUgdWludDY0X3QgZXN0aW1hdGVTaXplKGNv
bnN0IElEQktleURhdGEmIGtleURhdGEpCiAgICAgcmV0dXJuIHNpemU7CiB9CiAKK3N0YXRpYyBp
bmxpbmUgdWludDY0X3QgZXN0aW1hdGVTaXplKGNvbnN0IEhhc2hNYXA8dWludDY0X3QsIEluZGV4
S2V5PiYgaW5kZXhLZXlzLCB1aW50NjRfdCBwcmltYXJ5S2V5U2l6ZSkKK3sKKyAgICB1aW50NjRf
dCBzaXplID0gMDsKKyAgICBmb3IgKGF1dG8mIGluZGV4S2V5IDogaW5kZXhLZXlzLnZhbHVlcygp
KSB7CisgICAgICAgIC8vIEVhY2ggSW5kZXhSZWNvcmQgaGFzIDUgY29sdW1uczoKKyAgICAgICAg
Ly8gIC0gaW5kZXhJRCwgb2JqZWN0U3RvcmVJRCwgcmVjb3JkSUQ6IHRoZXNlIGFyZSB2YXJpbnRz
LCBlc3RpbWF0ZSA0QiBlYWNoID0gMTJCCisgICAgICAgIC8vICAtIHByaW1hcnkga2V5OiB1c2Ug
cHJpbWFyeUtleVNpemUKKyAgICAgICAgLy8gIC0gc2Vjb25kYXJ5IGluZGV4IGtleTogdXNlIGVz
dGltYXRlU2l6ZQorICAgICAgICBzaXplICs9ICgxMiArIHByaW1hcnlLZXlTaXplICsgZXN0aW1h
dGVTaXplKGluZGV4S2V5LmFzT25lS2V5KCkpKTsKKyAgICB9CisgICAgcmV0dXJuIHNpemU7Cit9
CisKIHN0YXRpYyBpbmxpbmUgdWludDY0X3QgZXN0aW1hdGVTaXplKGNvbnN0IElEQlZhbHVlJiB2
YWx1ZSkKIHsKICAgICB1aW50NjRfdCBzaXplID0gNDsKQEAgLTcxMiwxNiArNzI1LDYgQEAgdm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6cHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhLCBjb25zdCBJREJLZXkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIFF1
b3RhIGNoZWNrLgotICAgIGF1dG8gdGFza1NpemUgPSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0
ICsgZXN0aW1hdGVTaXplKGtleURhdGEpICsgZXN0aW1hdGVTaXplKHZhbHVlKTsKLSAgICBhdXRv
KiBvYmplY3RTdG9yZSA9IG1fZGF0YWJhc2VJbmZvLT5pbmZvRm9yRXhpc3RpbmdPYmplY3RTdG9y
ZShvYmplY3RTdG9yZUlkZW50aWZpZXIpOwotICAgIGlmIChvYmplY3RTdG9yZSkKLSAgICAgICAg
dGFza1NpemUgKz0gb2JqZWN0U3RvcmUtPmluZGV4TmFtZXMoKS5zaXplKCkgKiB0YXNrU2l6ZTsK
LSAgICBpZiAobV9zZXJ2ZXIucmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgdGFz
a1NpemUpID09IFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpEZW55KSB7Ci0gICAgICAg
IGNhbGxiYWNrKElEQkVycm9yIHsgUXVvdGFFeGNlZWRlZEVycm9yLCBxdW90YUVycm9yTWVzc2Fn
ZU5hbWUoIlB1dE9yQWRkIikgfSwgdXNlZEtleSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
ICAgICBib29sIHVzZWRLZXlJc0dlbmVyYXRlZCA9IGZhbHNlOwogICAgIHVpbnQ2NF90IGtleU51
bWJlcjsKICAgICBhdXRvIHRyYW5zYWN0aW9uSWRlbnRpZmllciA9IHJlcXVlc3REYXRhLnRyYW5z
YWN0aW9uSWRlbnRpZmllcigpOwpAQCAtNzQxLDYgKzc0NCwyMiBAQCB2b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlOjpwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0
IElEQktleQogICAgIH0gZWxzZQogICAgICAgICB1c2VkS2V5ID0ga2V5RGF0YTsKIAorICAgIC8v
IEdlbmVyYXRlIGluZGV4IGtleXMgdXAgZnJvbnQgZm9yIG1vcmUgYWNjdXJhdGUgcXVvdGEgY2hl
Y2suCisgICAgYXV0byBpbmRleEtleXMgPSBnZW5lcmF0ZUluZGV4S2V5TWFwRm9yVmFsdWUobV9i
YWNraW5nU3RvcmUtPnNlcmlhbGl6YXRpb25Db250ZXh0KCkuZXhlY1N0YXRlKCksICpvYmplY3RT
dG9yZUluZm8sIHVzZWRLZXksIHZhbHVlKTsKKworICAgIC8vIFF1b3RhIGNoZWNrLgorICAgIGF1
dG8ga2V5U2l6ZSA9IGVzdGltYXRlU2l6ZSh1c2VkS2V5KTsKKyAgICBhdXRvIHZhbHVlU2l6ZSA9
IGVzdGltYXRlU2l6ZSh2YWx1ZSk7CisgICAgYXV0byBpbmRleFNpemUgPSBlc3RpbWF0ZVNpemUo
aW5kZXhLZXlzLCBrZXlTaXplKTsKKyAgICBhdXRvIHRhc2tTaXplID0gZGVmYXVsdFdyaXRlT3Bl
cmF0aW9uQ29zdCArIGtleVNpemUgKyB2YWx1ZVNpemUgKyBpbmRleFNpemU7CisKKyAgICBMT0co
SW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2U6OnB1dE9yQWRkIHF1b3RhIGNoZWNrIHdpdGgg
dGFzayBzaXplOiAlbGx1IGtleSBzaXplOiAlbGx1IHZhbHVlIHNpemU6ICVsbHUgaW5kZXggc2l6
ZTogJWxsdSIsIHRhc2tTaXplLCBrZXlTaXplLCB2YWx1ZVNpemUsIGluZGV4U2l6ZSk7CisKKyAg
ICBpZiAobV9zZXJ2ZXIucmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgdGFza1Np
emUpID09IFN0b3JhZ2VRdW90YU1hbmFnZXI6OkRlY2lzaW9uOjpEZW55KSB7CisgICAgICAgIGNh
bGxiYWNrKElEQkVycm9yIHsgUXVvdGFFeGNlZWRlZEVycm9yLCBxdW90YUVycm9yTWVzc2FnZU5h
bWUoIlB1dE9yQWRkIikgfSwgdXNlZEtleSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAg
ICBpZiAob3ZlcndyaXRlTW9kZSA9PSBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9k
ZTo6Tm9PdmVyd3JpdGUpIHsKICAgICAgICAgYm9vbCBrZXlFeGlzdHM7CiAgICAgICAgIGVycm9y
ID0gbV9iYWNraW5nU3RvcmUtPmtleUV4aXN0c0luT2JqZWN0U3RvcmUodHJhbnNhY3Rpb25JZGVu
dGlmaWVyLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVzZWRLZXksIGtleUV4aXN0cyk7CkBAIC03
NjAsNyArNzc5LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cHV0T3JBZGQoY29uc3QgSURC
UmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXkKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotICAgIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmFkZFJlY29yZCh0cmFuc2FjdGlv
bklkZW50aWZpZXIsICpvYmplY3RTdG9yZUluZm8sIHVzZWRLZXksIHZhbHVlKTsKKyAgICBlcnJv
ciA9IG1fYmFja2luZ1N0b3JlLT5hZGRSZWNvcmQodHJhbnNhY3Rpb25JZGVudGlmaWVyLCAqb2Jq
ZWN0U3RvcmVJbmZvLCB1c2VkS2V5LCBpbmRleEtleXMsIHZhbHVlKTsKICAgICBpZiAoIWVycm9y
LmlzTnVsbCgpKSB7CiAgICAgICAgIGNhbGxiYWNrKGVycm9yLCB1c2VkS2V5KTsKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hh
cmVkL0luZGV4S2V5LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SW5kZXhLZXkuaAppbmRleCBjMzgwYzQ5NmMyMzM0NWY0MzRiNjdmOGZkMDYyODA1MDliN2Q3NGZm
Li44NzUxY2ExODQ0NGU1OTE2MTVhNWE0ZDUyMTY1MGJjM2QwMzUxNzI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5kZXhLZXkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5kZXhLZXkuaApAQCAtMjgs
NiArMjgsNyBAQAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiSURC
S2V5RGF0YS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00OCw2ICs0OSw4IEBAIHByaXZhdGU6CiAg
ICAgVmVjdG9yPElEQktleURhdGE+IG1fa2V5czsKIH07CiAKK3R5cGVkZWYgSGFzaE1hcDx1aW50
NjRfdCwgSW5kZXhLZXk+IEluZGV4SURUb0luZGV4S2V5TWFwOworCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5N2Y2MzAx
ODFkZWY0YzgzZGEzYjJkNzc2NzYyOWM2YjM2ZmMxOTMwLi5kZTY2ZTJiMTUwOTU2YzRkNDFkOWMy
YmEzOTcyZjA4NTJhYTQxOGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDUzLDcgKzE0NTMsNyBAQAogCQk1MTZEN0Q3MDFC
QjVGMEJEMDBBRjdDNzcgLyogSURCQ29ubmVjdGlvblRvU2VydmVyRGVsZWdhdGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODVGQ0JEMUJCNUNCNzcw
MDEyODk4RiAvKiBJREJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxNkQ3RDcyMUJCNUYwQkQwMEFG
N0M3NyAvKiBJREJDb25uZWN0aW9uVG9DbGllbnREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2RDdENkUxQkI1RjA2NTAwQUY3Qzc3IC8q
IElEQkNvbm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE2RjdGNkQxQzMxRTM5QTAwRjExMURDIC8qIFNl
cnZlck9wZW5EQlJlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxNkY3RjZDMUMzMUM3OUQwMEYxMTFEQyAvKiBTZXJ2ZXJPcGVuREJSZXF1ZXN0
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTE3
MTM4RjAxQkVEMUQxQTAwMEQ1RjAxIC8qIEluZGV4S2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTcxMzhFRTFCRUQxRDE3MDAwRDVGMDEgLyogSW5k
ZXhLZXkuaCAqLzsgfTsKKwkJNTE3MTM4RjAxQkVEMUQxQTAwMEQ1RjAxIC8qIEluZGV4S2V5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTcxMzhFRTFC
RUQxRDE3MDAwRDVGMDEgLyogSW5kZXhLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTcxMzhGODFCRjEyOEJCMDAwRDVGMDEgLyogSW5kZXhW
YWx1ZVN0b3JlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTcxMzhGNjFCRjEyMjYyMDAwRDVGMDEgLyogSW5kZXhWYWx1ZVN0b3JlLmggKi87IH07CiAJ
CTUxNzEzOEZDMUJGM0FERjQwMDBENUYwMSAvKiBJREJDdXJzb3JJbmZvLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTcxMzhGQTFCRjNBREFDMDAwRDVG
MDEgLyogSURCQ3Vyc29ySW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTUxNzEzOTA2MUJGNjRERUMwMDBENUYwMSAvKiBNZW1vcnlPYmplY3RT
dG9yZUN1cnNvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTE3MTM5MDQxQkY2NERFMzAwMEQ1RjAxIC8qIE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yLmgg
Ki87IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5n
VXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGls
aXRpZXMuY3BwCmluZGV4IDU3OGMxMzY3OWVkNzg5YTk4NjkzMTA1MmJjMDZhYTA0MDA1YzcyM2Iu
LjJmNWFmNmM3ZWRiZTdhNzljZTcxMWEwZDhhNmU2YjRlODc1OWU1OTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCkBAIC0zNiw2
ICszNiw3IEBACiAjaW5jbHVkZSAiSURCS2V5LmgiCiAjaW5jbHVkZSAiSURCS2V5RGF0YS5oIgog
I2luY2x1ZGUgIklEQktleVBhdGguaCIKKyNpbmNsdWRlICJJREJPYmplY3RTdG9yZUluZm8uaCIK
ICNpbmNsdWRlICJJREJWYWx1ZS5oIgogI2luY2x1ZGUgIkluZGV4S2V5LmgiCiAjaW5jbHVkZSAi
SlNCbG9iLmgiCkBAIC00NjMsNiArNDY0LDM0IEBAIHZvaWQgZ2VuZXJhdGVJbmRleEtleUZvclZh
bHVlKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdCBJREJJbmRlCiAg
ICAgb3V0S2V5ID0gSW5kZXhLZXkoV1RGTW92ZShrZXlEYXRhcykpOwogfQogCitJbmRleElEVG9J
bmRleEtleU1hcCBnZW5lcmF0ZUluZGV4S2V5TWFwRm9yVmFsdWUoSlNDOjpKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBzdG9yZUlu
Zm8sIGNvbnN0IElEQktleURhdGEmIGtleSwgY29uc3QgSURCVmFsdWUmIHZhbHVlKQoreworICAg
IGF1dG8mIGluZGV4TWFwID0gc3RvcmVJbmZvLmluZGV4TWFwKCk7CisgICAgYXV0byBpbmRleENv
dW50ID0gaW5kZXhNYXAuc2l6ZSgpOworICAgIGlmICghaW5kZXhDb3VudCkKKyAgICAgICAgcmV0
dXJuIEluZGV4SURUb0luZGV4S2V5TWFwIHsgfTsKKworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIo
bGV4aWNhbEdsb2JhbE9iamVjdC52bSgpKTsKKyAgICBhdXRvIGpzVmFsdWUgPSBkZXNlcmlhbGl6
ZUlEQlZhbHVlVG9KU1ZhbHVlKGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKKyAgICBpZiAo
anNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICByZXR1cm4gSW5kZXhJRFRvSW5k
ZXhLZXlNYXAgeyB9OworCisgICAgSW5kZXhJRFRvSW5kZXhLZXlNYXAgaW5kZXhLZXlzOworICAg
IGluZGV4S2V5cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGluZGV4Q291bnQpOworCisgICAgZm9y
IChjb25zdCBhdXRvJiBbaW5kZXhJRCwgaW5kZXhJbmZvXSA6IGluZGV4TWFwKSB7CisgICAgICAg
IEluZGV4S2V5IGluZGV4S2V5OworICAgICAgICBnZW5lcmF0ZUluZGV4S2V5Rm9yVmFsdWUobGV4
aWNhbEdsb2JhbE9iamVjdCwgaW5kZXhJbmZvLCBqc1ZhbHVlLCBpbmRleEtleSwgc3RvcmVJbmZv
LmtleVBhdGgoKSwga2V5KTsKKworICAgICAgICBpZiAoaW5kZXhLZXkuaXNOdWxsKCkpCisgICAg
ICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpbmRleEtleXMuYWRkKGluZGV4SUQsIFdURk1v
dmUoaW5kZXhLZXkpKTsKKyAgICB9CisKKyAgICByZXR1cm4gaW5kZXhLZXlzOworfQorCiBPcHRp
b25hbDxKU0M6OkpTVmFsdWU+IGRlc2VyaWFsaXplSURCVmFsdWVXaXRoS2V5SW5qZWN0aW9uKEpT
R2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdCBJREJWYWx1ZSYgdmFsdWUs
IGNvbnN0IElEQktleURhdGEmIGtleSwgY29uc3QgT3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBh
dGgpCiB7CiAgICAgYXV0byBqc1ZhbHVlID0gZGVzZXJpYWxpemVJREJWYWx1ZVRvSlNWYWx1ZShs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmgKaW5kZXggNDZkYTVhZWVkZDZhM2I1OTRiYTg5NjBm
ODUyYWE3MmRlMzIxYjdiMS4uOGFiNzRmODg3OTBmNmRkZDIxNmYwNWE1ODBjM2IxZjQyM2Y4YzE2
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxp
dGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRp
ZXMuaApAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiAj
aW5jbHVkZSAiSURCS2V5UGF0aC5oIgorI2luY2x1ZGUgIkluZGV4S2V5LmgiCiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00Miw2ICs0Myw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIElEQkluZGV4SW5mbzsKIGNsYXNzIElEQktleTsKIGNsYXNz
IElEQktleURhdGE7CitjbGFzcyBJREJPYmplY3RTdG9yZUluZm87CiBjbGFzcyBJREJWYWx1ZTsK
IGNsYXNzIEluZGV4S2V5OwogY2xhc3MgSlNET01HbG9iYWxPYmplY3Q7CkBAIC01Miw2ICs1NCw4
IEBAIGJvb2wgaW5qZWN0SURCS2V5SW50b1NjcmlwdFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3Qm
LCBjb25zdCBJREJLZXlEYXRhJiwgSlNDOjpKCiAKIHZvaWQgZ2VuZXJhdGVJbmRleEtleUZvclZh
bHVlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBjb25zdCBJREJJbmRleEluZm8mLCBKU0M6OkpTVmFs
dWUsIEluZGV4S2V5JiBvdXRLZXksIGNvbnN0IE9wdGlvbmFsPElEQktleVBhdGg+JiwgY29uc3Qg
SURCS2V5RGF0YSYpOwogCitJbmRleElEVG9JbmRleEtleU1hcCBnZW5lcmF0ZUluZGV4S2V5TWFw
Rm9yVmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYs
IGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJREJWYWx1ZSYpOworCiBSZWY8SURCS2V5PiBzY3Jp
cHRWYWx1ZVRvSURCS2V5KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBjb25zdCBKU0M6OkpTVmFsdWUm
KTsKIAogSlNDOjpKU1ZhbHVlIGRlc2VyaWFsaXplSURCVmFsdWVUb0pTVmFsdWUoSlNDOjpKU0ds
b2JhbE9iamVjdCYsIGNvbnN0IElEQlZhbHVlJiwgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0
cmluZz4+Jik7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggZDYxNWIyYWY1YjcyMWEzYTNiYjg3MGNiNjUwZjBiYjdjMTQ3ZTNkZC4uODExMjQ0ZGJm
MzlkZGZmMzc2NmJiNDJmZTY0YThhMjc0ZTYwYTc0NyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIwLTA1LTAzICBC
ZW4gTmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIEltcHJvdmUgYWNjdXJhY3kgb2Yg
SW5kZXhlZERCIGVzdGltYXRlZCB3cml0ZSBzaXplIGNvbXB1dGF0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTEzNjAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBjdXJyZW50bHkgZXN0aW1hdGUg
dGhlIHNpemUgb2YgYSBwdXQgaW4gSW5kZXhlZERCIGZvciBxdW90YSBjaGVjayBwdXJwb3NlcyB3
aXRoIHNvbWV0aGluZworICAgICAgICBsaWtlOgorCisgICAgICAgICAgZXN0aW1hdGVkV3JpdGVT
aXplID0gKDEgKyBudW1JbmRpY2VzKSAqIChrZXlTaXplICsgdmFsdWVTaXplKQorCisgICAgICAg
IEhvd2V2ZXIsIHRoaXMgY2FuIGxlYWQgdG8gbGFyZ2Ugb3ZlcmVzdGltYXRlcyBvZiB3cml0ZSBz
aXplcy4gVGhpcyBpcyBiZWNhdXNlIHNlY29uZGFyeQorICAgICAgICBpbmRpY2VzIG9ubHkgc3Rv
cmUgYSBtYXBwaW5nIG9mIHNlY29uZGFyeSBpbmRleCBrZXkgPT4gcHJpbWFyeSBrZXk7IHRoZXkg
ZG8gbm90IHN0b3JlIHRoZQorICAgICAgICBlbnRpcmUgdmFsdWUuIEluIHRoZSBleGFtcGxlIHNp
dGUgYXR0YWNoZWQgdG8gMjAyMTM3IChhbm90aGVyIERCIHF1b3RhLXJlbGF0ZWQgYnVnKSwgdGhl
CisgICAgICAgIHRoZSBoZXVyaXN0aWMgZXN0aW1hdGVzIHRoYXQgb25lIG9mIHRoZSBwdXQgb3Bl
cmF0aW9ucyB3b3VsZCB1c2UgbW9yZSB0aGFuIDgwMCBNQiB3aGVuIGl0CisgICAgICAgIGFjdHVh
bGx5IHVzZXMgMjIwIE1CLiBUaGlzIGluYWNjdXJhY3kgbGVhZHMgdG8gc3B1cmlvdXMgZGlzayBx
dW90YSBwZXJtaXNzaW9uIG1vZGFscyBiZWluZworICAgICAgICBwcmVzZW50ZWQgaW4gU2FmYXJp
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wcm92ZXMgdGhlIHdyaXRlIHNpemUgY29tcHV0YXRp
b24gYnkgZ2VuZXJhdGluZyB0aGUgc2Vjb25kYXJ5IGluZGV4IGtleXMgYmVmb3JlCisgICAgICAg
IGVzdGltYXRpbmcgdGhlIHdyaXRlIHNpemUuIFRoZSBwZXJmb3JtYW5jZSBzaG91bGQgYmUgYWJv
dXQgdGhlIHNhbWUgc2luY2Ugd2Ugc2F2ZSB0aGUKKyAgICAgICAgZ2VuZXJhdGVkIGluZGV4IGtl
eXMgZm9yIGxhdGVyIHVzYWdlIHdoZW4gd2UgYWN0dWFsbHkgYWRkIHRoZSByZWNvcmQgdG8gdGhl
IERCLgorCisgICAgICAgIEkgYWRkZWQgYSB0ZXN0IHRvIG1ha2Ugc3VyZSB0aGUgcXVvdGEgY2hl
Y2sgcHJvZHVjZXMgYSBzYW5lIHNpemUgd2hlbiB1c2luZyBhIGxhcmdlIG51bWJlcgorICAgICAg
ICBvZiBpbmRpY2VzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9JREJRdW90YUNoZWNrLmh0bWw6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSURCUXVvdGFDaGVjay5tbTogQWRkZWQuCisgICAgICAg
ICgtW0lEQlF1b3RhQ2hlY2tNZXNzYWdlSGFuZGxlciBkZWFsbG9jXSk6CisgICAgICAgICgtW0lE
QlF1b3RhQ2hlY2tNZXNzYWdlSGFuZGxlciB1c2VyQ29udGVudENvbnRyb2xsZXI6ZGlkUmVjZWl2
ZVNjcmlwdE1lc3NhZ2U6XSk6CisgICAgICAgICgtW0lEQlF1b3RhQ2hlY2tNZXNzYWdlSGFuZGxl
ciByZWNlaXZlZFNjcmlwdE1lc3NhZ2VQb2ludGVyXSk6CisgICAgICAgICgtW0lEQlF1b3RhQ2hl
Y2tXZWJWaWV3RGVsZWdhdGUgX3dlYlZpZXc6ZGVjaWRlRGF0YWJhc2VRdW90YUZvclNlY3VyaXR5
T3JpZ2luOmN1cnJlbnRRdW90YTpjdXJyZW50T3JpZ2luVXNhZ2U6Y3VycmVudERhdGFiYXNlVXNh
Z2U6ZXhwZWN0ZWRVc2FnZTpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgIChURVNUKToKKwog
MjAyMC0wNC0yOCAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KIAog
ICAgICAgICBDcmVhdGUgYSBtZWNoYW5pc20gdG8gYWRkIG1pc3NpbmcgSVRQIERhdGFiYXNlIHRh
YmxlcyB3aGVuIHRoZSBzY2hlbWEgaXMgdXBkYXRlZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCA3MzEyOTU0ODBjN2E3NWM5YjlmNmYxOGNlNGVmNmE2ZmU4MDZmYmY5Li5jZTQ4YWU1OWZjMDI0
NDIzMDg3MTIzZjMyYmZhMDA3MGJlY2ViYWE3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MTAzMCw2ICsxMDMwLDggQEAKIAkJRTNERUE4MTExRjBBNTg5MDAwQ0JDMkU4IC8qIFRocmVhZEdy
b3VwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUz
REVBODEwMUYwQTU4ODAwMENCQzJFOCAvKiBUaHJlYWRHcm91cC5jcHAgKi87IH07CiAJCUUzRjhB
QjkyMjQxQUI5Q0UwMDNFMkE3RSAvKiBBY2Nlc3NpYmlsaXR5UmVtb3RlVUlBcHAubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0Y4QUI5MTI0MUFCOUNF
MDAzRTJBN0UgLyogQWNjZXNzaWJpbGl0eVJlbW90ZVVJQXBwLm1tICovOyB9OwogCQlFNTAzNkY3
ODIxMUJDMjU0MDBCRkRCRTIgLyogY29sb3ItZHJvcC5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU1MDM2Rjc3MjExQkMyMjgwMEJGREJF
MiAvKiBjb2xvci1kcm9wLmh0bWwgKi87IH07CisJCUVCODdGNkQ1MjQ1RjRFNjgwMEUzRTQ5QyAv
KiBJREJRdW90YUNoZWNrLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRUI4N0Y2RDMyNDVGNEU0RjAwRTNFNDlDIC8qIElEQlF1b3RhQ2hlY2subW0gKi87
IH07CisJCUVCODdGNkQ2MjQ1RjRFN0EwMEUzRTQ5QyAvKiBJREJRdW90YUNoZWNrLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUI4N0Y2
RDIyNDVGNEUyQjAwRTNFNDlDIC8qIElEQlF1b3RhQ2hlY2suaHRtbCAqLzsgfTsKIAkJRUNBNjgw
Q0UxRTY4Q0MwOTAwNzMxRDIwIC8qIFN0cmluZ1V0aWxpdGllcy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVDQTY4MENEMUU2OENDMDkwMDczMUQyMCAv
KiBTdHJpbmdVdGlsaXRpZXMubW0gKi87IH07CiAJCUY0MDJGNTZDMjNFQ0MyRkIwMDg2NTU0OSAv
KiBVSVdLSW50ZXJhY3Rpb25WaWV3UHJvdG9jb2wubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDAyRjU2QjIzRUNDMkZCMDA4NjU1NDkgLyogVUlXS0lu
dGVyYWN0aW9uVmlld1Byb3RvY29sLm1tICovOyB9OwogCQlGNDA3RkUzOTFGMUQwREZDMDAxN0NG
MjUgLyogZW5vcm1vdXMuc3ZnIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY0MDdGRTM4MUYxRDBERTYwMDE3Q0YyNSAvKiBlbm9ybW91cy5zdmcg
Ki87IH07CkBAIC0xMzUyLDYgKzEzNTQsNyBAQAogCQkJCTUxMTBGQ0YxMUUwMUNENjQwMDZGOEQw
QiAvKiBJREJJbmRleFVwZ3JhZGVUb1YyLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJ
OTM3QjU2OUUyM0NEMjNEQjAwMkFFNjQwIC8qIElEQk9iamVjdFN0b3JlSW5mb1VwZ3JhZGUuc3Fs
aXRlMyBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk5M0JDQkM4NDIzQ0M2RjQ0MDBDQTIyMjEg
LyogSURCT2JqZWN0U3RvcmVJbmZvVXBncmFkZVRvVjIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LywKKwkJCQlFQjg3RjZENjI0NUY0RTdBMDBFM0U0OUMgLyogSURCUXVvdGFDaGVjay5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0MUFCOUE0MUVGNDY5NkIwMDgzRkEwOCAvKiBpbWFn
ZS1hbmQtY29udGVudGVkaXRhYmxlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJRjRF
MEEyQjQyMTIyNDAyQjAwQUY3QzdGIC8qIGltYWdlLWFuZC1maWxlLXVwbG9hZC5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovLAogCQkJCUY0MUFCOUE1MUVGNDY5NkIwMDgzRkEwOCAvKiBpbWFnZS1h
bmQtdGV4dGFyZWEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAgLTI2NTcsNiArMjY2MCw4
IEBACiAJCUU0QTc1N0QzMTc4QUVBNUIwMEI1RDdBNCAvKiBEZXF1ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBEZXF1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0QzlBQkM3
MUIzREIxNzEwMDQwQTk4NyAvKiBSdW5Mb29wLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFJ1bkxvb3AuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
NTAzNkY3NzIxMUJDMjI4MDBCRkRCRTIgLyogY29sb3ItZHJvcC5odG1sICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5odG1sOyBwYXRoID0gImNvbG9yLWRyb3AuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUVCODdGNkQyMjQ1RjRFMkIwMEUzRTQ5QyAvKiBJREJRdW90YUNoZWNrLmh0bWwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBJREJRdW90YUNoZWNrLmh0bWw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUVCODdGNkQzMjQ1RjRFNEYwMEUzRTQ5QyAvKiBJREJRdW90YUNo
ZWNrLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSURCUXVvdGFD
aGVjay5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUM3OUYxNjhCRTQ1NEU1NzlF
NDE3QjA1IC8qIE1hcmthYmxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IE1hcmthYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUNBNjgwQ0Qx
RTY4Q0MwOTAwNzMxRDIwIC8qIFN0cmluZ1V0aWxpdGllcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFN0cmluZ1V0aWxpdGllcy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJRjNGQzNFRTIxMzY3OEI3MzAwMTI2QTY1IC8qIGxpYmd0ZXN0LmEgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBhcmNoaXZlLmFy
OyBwYXRoID0gbGliZ3Rlc3QuYTsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsK
QEAgLTMwNjksNiArMzA3NCw3IEBACiAJCQkJNTEwNDc3NzUxRDI5OEUwMzAwOTc0N0VCIC8qIElE
QkRlbGV0ZVJlY292ZXJ5Lm1tICovLAogCQkJCTUxMTBGQ0VGMUUwMUNCQUEwMDZGOEQwQiAvKiBJ
REJJbmRleFVwZ3JhZGVUb1YyLm1tICovLAogCQkJCTkzQkNCQzgwMjNDQzZFRTgwMENBMjIyMSAv
KiBJREJPYmplY3RTdG9yZUluZm9VcGdyYWRlVG9WMi5tbSAqLywKKwkJCQlFQjg3RjZEMzI0NUY0
RTRGMDBFM0U0OUMgLyogSURCUXVvdGFDaGVjay5tbSAqLywKIAkJCQk0OUFFRUY2QjI0MDczNTg2
MDBDODdFNEMgLyogSW5BcHBCcm93c2VyUHJpdmFjeS5tbSAqLywKIAkJCQk1MUE1ODc4NDFEMjcy
RUYzMDA0QkE5QUYgLyogSW5kZXhlZERCRGF0YWJhc2VQcm9jZXNzS2lsbC5tbSAqLywKIAkJCQlD
QUIwRkY1NDIyMzMyQzNBMDA2Q0E1QjAgLyogSW5kZXhlZERCRmlsZU5hbWUubW0gKi8sCkBAIC0z
NTQzLDYgKzM1NDksNyBAQAogCQkJCTUxMTBGQ0YwMUUwMUNENTMwMDZGOEQwQiAvKiBJREJJbmRl
eFVwZ3JhZGVUb1YyLmh0bWwgKi8sCiAJCQkJOTNCQ0JDODEyM0NDNkVGNTAwQ0EyMjIxIC8qIElE
Qk9iamVjdFN0b3JlSW5mb1VwZ3JhZGUuc3FsaXRlMyAqLywKIAkJCQk5M0JDQkM4MjIzQ0M2RUY1
MDBDQTIyMjEgLyogSURCT2JqZWN0U3RvcmVJbmZvVXBncmFkZVRvVjIuaHRtbCAqLywKKwkJCQlF
Qjg3RjZEMjI0NUY0RTJCMDBFM0U0OUMgLyogSURCUXVvdGFDaGVjay5odG1sICovLAogCQkJCUY0
MUFCOTk5MUVGNDY5MkMwMDgzRkEwOCAvKiBpbWFnZS1hbmQtY29udGVudGVkaXRhYmxlLmh0bWwg
Ki8sCiAJCQkJRjRFMEEyQjMyMTIyM0YyRDAwQUY3QzdGIC8qIGltYWdlLWFuZC1maWxlLXVwbG9h
ZC5odG1sICovLAogCQkJCUY0MUFCOTkzMUVGNDY5MkMwMDgzRkEwOCAvKiBpbWFnZS1hbmQtdGV4
dGFyZWEuaHRtbCAqLywKQEAgLTQ5MjAsNiArNDkyNyw3IEBACiAJCQkJNTEwNDc3NzgxRDI5OTIz
QjAwOTc0N0VCIC8qIElEQkRlbGV0ZVJlY292ZXJ5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEx
MEZDRkExRTAxQ0RCODAwNkY4RDBCIC8qIElEQkluZGV4VXBncmFkZVRvVjIubW0gaW4gU291cmNl
cyAqLywKIAkJCQk5M0JDQkM4MzIzQ0M2RjJBMDBDQTIyMjEgLyogSURCT2JqZWN0U3RvcmVJbmZv
VXBncmFkZVRvVjIubW0gaW4gU291cmNlcyAqLywKKwkJCQlFQjg3RjZENTI0NUY0RTY4MDBFM0U0
OUMgLyogSURCUXVvdGFDaGVjay5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQ5QUVFRjZEMjQwNzM1
OUQwMEM4N0U0QyAvKiBJbkFwcEJyb3dzZXJQcml2YWN5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTFBNTg3ODYxRDI3M0FBOTAwNEJBOUFGIC8qIEluZGV4ZWREQkRhdGFiYXNlUHJvY2Vzc0tpbGwu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlDQUIwRkY1NTIyMzMyQzU3MDA2Q0E1QjAgLyogSW5kZXhl
ZERCRmlsZU5hbWUubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSURCUXVvdGFDaGVjay5odG1sIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JREJRdW90YUNoZWNrLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZGJiZTVjMjQ0NGI1NTcxZWRhNDZmNDcyNzEyMjYyYjI0MWZiNzQ0NwotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSURCUXVvdGFDaGVjay5o
dG1sCkBAIC0wLDAgKzEsNTEgQEAKKzxzY3JpcHQ+CisKK2xldCBrZXkgPSBuZXcgSW50OEFycmF5
KDFfMDAwKTsKK2xldCBvYmogPSB7CisgICAgYTogbmV3IEludDhBcnJheSg1XzAwMCksCisgICAg
YjogbmV3IEludDhBcnJheSgyNV8wMDApLAorICAgIGRhdGE6IG5ldyBJbnQ4QXJyYXkoMTI1XzAw
MCksCit9OworCitmdW5jdGlvbiBvcGVuSURCQXN5bmMoKSB7CisgICAgcmV0dXJuIG5ldyBQcm9t
aXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgbGV0IHJlcSA9IGluZGV4ZWREQi5v
cGVuKCd0ZXN0LXF1b3RhLWNoZWNrJyk7CisgICAgICAgIHJlcS5vbnVwZ3JhZGVuZWVkZWQgPSBl
ID0+IHsKKyAgICAgICAgICAgIGxldCBkYiA9IGUudGFyZ2V0LnJlc3VsdDsKKyAgICAgICAgICAg
IGxldCBzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdvYmplY3RzJyk7CisKKyAgICAgICAg
ICAgIC8vIEluIG9sZGVyIFdlYktpdHMsIHRoZSBlc3RpbWF0ZWQgcHV0IHNpemUgc2NhbGVkIHdp
dGggdGhlIG51bWJlciBvZiBpbmRpY2VzIChYWFgpLgorICAgICAgICAgICAgc3RvcmUuY3JlYXRl
SW5kZXgoJ2EnLCAnYScpOworICAgICAgICAgICAgc3RvcmUuY3JlYXRlSW5kZXgoJ2InLCAnYicp
OworICAgICAgICAgICAgc3RvcmUuY3JlYXRlSW5kZXgoJ2MnLCAnYycpOworICAgICAgICAgICAg
c3RvcmUuY3JlYXRlSW5kZXgoJ2QnLCAnZCcpOworICAgICAgICAgICAgc3RvcmUuY3JlYXRlSW5k
ZXgoJ2UnLCAnZScpOworCisgICAgICAgICAgICByZXR1cm4gZGI7CisgICAgICAgIH0KKyAgICAg
ICAgcmVxLm9uc3VjY2VzcyA9IGUgPT4gcmVzb2x2ZShlLnRhcmdldC5yZXN1bHQpOworICAgICAg
ICByZXEub25lcnJvciA9IHJlamVjdDsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gaW5zZXJ0Um93
QXN5bmMoZGIpIHsKKyAgICBsZXQgdHhuOworICAgIGxldCB0eG5Qcm9taXNlID0gbmV3IFByb21p
c2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICB0eG4gPSBkYi50cmFuc2FjdGlvbign
b2JqZWN0cycsICdyZWFkd3JpdGUnKTsKKyAgICAgICAgW3R4bi5vbmNvbXBsZXRlLCB0eG4ub25l
cnJvcl0gPSBbcmVzb2x2ZSwgcmVqZWN0XTsKKyAgICB9KTsKKworICAgIGxldCByZXFQcm9taXNl
ID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICBsZXQgcmVxID0g
dHhuLm9iamVjdFN0b3JlKCdvYmplY3RzJykucHV0KG9iaiwga2V5KTsKKyAgICAgICAgW3JlcS5v
bnN1Y2Nlc3MsIHJlcS5vbmVycm9yXSA9IFtyZXNvbHZlLCByZWplY3RdOworICAgIH0pOworCisg
ICAgcmV0dXJuIFByb21pc2UuYWxsKFt0eG5Qcm9taXNlLCByZXFQcm9taXNlXSkudGhlbihfID0+
IGRiKTsKK30KKworb3BlbklEQkFzeW5jKCkKKyAgICAudGhlbihpbnNlcnRSb3dBc3luYykKKyAg
ICAudGhlbihfID0+IHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBv
c3RNZXNzYWdlKCdTdWNjZXNzJykpCisgICAgLmNhdGNoKGUgPT4gd2luZG93LndlYmtpdC5tZXNz
YWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoJ0ZhaWxlZCBpbnNlcnRpbmcgcm93
OiAnICsgZS50YXJnZXQuZXJyb3IpKQorCis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSURCUXVvdGFDaGVjay5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSURCUXVvdGFDaGVjay5tbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zZTExNGExNDZhODdiM2FhMzNmOWM1ZjkwYWExODFiOWQyZDc5ZDYxCi0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JREJRdW90YUNoZWNr
Lm1tCkBAIC0wLDAgKzEsMTQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisK
KyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0LmgiCisjaW1wb3J0
ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZhdGUu
aD4KKyNpbXBvcnQgPFdlYktpdC9XS1VzZXJDb250ZW50Q29udHJvbGxlclByaXZhdGUuaD4KKyNp
bXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oPgorI2ltcG9ydCA8
V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dl
YnNpdGVEYXRhU3RvcmVSZWYuaD4KKyNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KKyNpbXBvcnQg
PFdlYktpdC9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaD4KKyNpbXBvcnQgPFdlYktpdC9f
V0tVc2VyU3R5bGVTaGVldC5oPgorI2ltcG9ydCA8V2ViS2l0L19XS1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK0BpbnRlcmZhY2Ug
SURCUXVvdGFDaGVja01lc3NhZ2VIYW5kbGVyIDogTlNPYmplY3QgPFdLU2NyaXB0TWVzc2FnZUhh
bmRsZXI+CitAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBib29sIHJlY2VpdmVkU2NyaXB0
TWVzc2FnZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4pIFdLU2NyaXB0TWVzc2FnZSAq
bGFzdFNjcmlwdE1lc3NhZ2U7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBJREJRdW90YUNoZWNr
TWVzc2FnZUhhbmRsZXIKKworQHN5bnRoZXNpemUgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlPV9yZWNl
aXZlZFNjcmlwdE1lc3NhZ2U7CitAc3ludGhlc2l6ZSBsYXN0U2NyaXB0TWVzc2FnZT1fbGFzdFNj
cmlwdE1lc3NhZ2U7CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIFtfbGFzdFNjcmlwdE1lc3Nh
Z2UgcmVsZWFzZV07CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistICh2b2lkKXVzZXJDb250
ZW50Q29udHJvbGxlcjooV0tVc2VyQ29udGVudENvbnRyb2xsZXIgKil1c2VyQ29udGVudENvbnRy
b2xsZXIgZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6KFdLU2NyaXB0TWVzc2FnZSAqKW1lc3NhZ2UK
K3sKKyAgICBfcmVjZWl2ZWRTY3JpcHRNZXNzYWdlID0gWUVTOworICAgIHNlbGYubGFzdFNjcmlw
dE1lc3NhZ2UgPSBtZXNzYWdlOworfQorCistIChib29sICopcmVjZWl2ZWRTY3JpcHRNZXNzYWdl
UG9pbnRlcgoreworICAgIHJldHVybiAmX3JlY2VpdmVkU2NyaXB0TWVzc2FnZTsKK30KKworQGVu
ZAorCitAaW50ZXJmYWNlIElEQlF1b3RhQ2hlY2tXZWJWaWV3RGVsZWdhdGUgOiBOU09iamVjdCA8
V0tVSURlbGVnYXRlPgorQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgdWludDY0X3QgY3Vy
cmVudFF1b3RhOworQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgdWludDY0X3QgY3VycmVu
dE9yaWdpblVzYWdlOworQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgdWludDY0X3QgY3Vy
cmVudERhdGFiYXNlVXNhZ2U7CitAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSB1aW50NjRf
dCBleHBlY3RlZFVzYWdlOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gSURCUXVvdGFDaGVja1dl
YlZpZXdEZWxlZ2F0ZQorCitAc3ludGhlc2l6ZSBjdXJyZW50UXVvdGE9X2N1cnJlbnRRdW90YTsK
K0BzeW50aGVzaXplIGN1cnJlbnRPcmlnaW5Vc2FnZT1fY3VycmVudE9yaWdpblVzYWdlOworQHN5
bnRoZXNpemUgY3VycmVudERhdGFiYXNlVXNhZ2U9X2N1cnJlbnREYXRhYmFzZVVzYWdlOworQHN5
bnRoZXNpemUgZXhwZWN0ZWRVc2FnZT1fZXhwZWN0ZWRVc2FnZTsKKworLSAodm9pZClfd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVEYXRhYmFzZVF1b3RhRm9yU2VjdXJpdHlPcmln
aW46KFdLU2VjdXJpdHlPcmlnaW4gKilzZWN1cml0eU9yaWdpbiBjdXJyZW50UXVvdGE6KHVuc2ln
bmVkIGxvbmcgbG9uZyljdXJyZW50UXVvdGEgY3VycmVudE9yaWdpblVzYWdlOih1bnNpZ25lZCBs
b25nIGxvbmcpY3VycmVudE9yaWdpblVzYWdlIGN1cnJlbnREYXRhYmFzZVVzYWdlOih1bnNpZ25l
ZCBsb25nIGxvbmcpY3VycmVudERhdGFiYXNlVXNhZ2UgZXhwZWN0ZWRVc2FnZToodW5zaWduZWQg
bG9uZyBsb25nKWV4cGVjdGVkVXNhZ2UgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKSh1bnNpZ25l
ZCBsb25nIGxvbmcgbmV3UXVvdGEpKWRlY2lzaW9uSGFuZGxlcgoreworICAgIF9jdXJyZW50UXVv
dGEgPSBjdXJyZW50UXVvdGE7CisgICAgX2N1cnJlbnRPcmlnaW5Vc2FnZSA9IGN1cnJlbnRPcmln
aW5Vc2FnZTsKKyAgICBfY3VycmVudERhdGFiYXNlVXNhZ2UgPSBjdXJyZW50RGF0YWJhc2VVc2Fn
ZTsKKyAgICBfZXhwZWN0ZWRVc2FnZSA9IGV4cGVjdGVkVXNhZ2U7CisKKyAgICBkZWNpc2lvbkhh
bmRsZXIoMS4xICogKF9jdXJyZW50T3JpZ2luVXNhZ2UgKyBfZXhwZWN0ZWRVc2FnZSkpOworfQor
CitAZW5kCisKK1RFU1QoSW5kZXhlZERCLCBDb21wdXRlc0FjY3VyYXRlUHV0T3BlcmF0aW9uRGlz
a1VzYWdlRXN0aW1hdGUpCit7CisgICAgX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24g
KnN0b3JlQ29uZmlndXJhdGlvbiA9IFtbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgc3RvcmVDb25maWd1cmF0aW9uLnBlck9y
aWdpblN0b3JhZ2VRdW90YSA9IDEwMCAqIDEwMDA7IC8vIGVub3VnaCB0byBjcmVhdGUgdGhlIERC
IGJ1dCBub3QgZW5vdWdoIHRvIHBlcmZvcm0gdGhlIHB1dCBvcGVyYXRpb24KKworICAgIFdLV2Vi
c2l0ZURhdGFTdG9yZSAqZGF0YVN0b3JlID0gW1tbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBf
aW5pdFdpdGhDb25maWd1cmF0aW9uOnN0b3JlQ29uZmlndXJhdGlvbl0gYXV0b3JlbGVhc2VdOwor
CisgICAgX19ibG9jayBib29sIHJlbW92ZWREYXRhID0gZmFsc2U7CisgICAgW2RhdGFTdG9yZSBy
ZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNd
IG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6Xigp
IHsKKyAgICAgICAgcmVtb3ZlZERhdGEgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmcmVtb3ZlZERhdGEpOworCisgICAgUmV0YWluUHRyPElEQlF1b3RhQ2hl
Y2tNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMoW1tJREJRdW90YUNoZWNrTWVzc2Fn
ZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmlndXJh
dGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFs
bG9jXSBpbml0XSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0V2Vic2l0ZURhdGFTdG9yZTpkYXRh
U3RvcmVdOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNj
cmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RIYW5kbGVyIl07CisK
KyAgICBbW2NvbmZpZ3VyYXRpb24gcHJvY2Vzc1Bvb2xdIF90ZXJtaW5hdGVOZXR3b3JrUHJvY2Vz
c107CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICAKKyAgICBhdXRvIHVpRGVsZWdhdGUgPSBhZG9wdE5T
KFtbSURCUXVvdGFDaGVja1dlYlZpZXdEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJW
aWV3IHNldFVJRGVsZWdhdGU6dWlEZWxlZ2F0ZS5nZXQoKV07CisKKyAgICAvLyBNdXN0IGJlIHZp
c2libGUgZm9yIHRoZSBxdW90YSBjYWxsYmFjayB0byBvY2N1ci4KKyNpZiBQTEFURk9STShNQUMp
CisgICAgICAgIFt3ZWJWaWV3LmdldCgpLndpbmRvdyBzZXRJc1Zpc2libGU6WUVTXTsKKyNlbHNl
CisgICAgICAgIHdlYlZpZXcuZ2V0KCkud2luZG93LmhpZGRlbiA9IE5POworI2VuZGlmCisKKyAg
ICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltb
TlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJJREJRdW90YUNoZWNrIiB3aXRo
RXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMi
XV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oW2hhbmRsZXIgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlUG9pbnRlcl0pOwor
ICAgIEVYUEVDVF9TVFJFUSgiU3VjY2VzcyIsIFtbW2hhbmRsZXIgbGFzdFNjcmlwdE1lc3NhZ2Vd
IGJvZHldIFVURjhTdHJpbmddKTsKKworICAgIC8vIFNlZSBrZXkgYW5kIG9iaiBpbiBJREJRdW90
YUNoZWNrLmh0bWwuCisgICAgdWludDY0X3Qga2V5U2l6ZSA9IDEwMDA7CisgICAgdWludDY0X3Qg
YVNpemUgPSA1MDAwOworICAgIHVpbnQ2NF90IGJTaXplID0gMjUwMDA7CisgICAgdWludDY0X3Qg
ZGF0YVNpemUgPSAxMjUwMDA7CisKKyAgICB1aW50NjRfdCBleHBlY3RlZFJvd1NpemUgPSBrZXlT
aXplICsgYVNpemUgKyBiU2l6ZSArIGRhdGFTaXplOworICAgIHVpbnQ2NF90IGV4cGVjdGVkSW5k
ZXhBU2l6ZSA9IGFTaXplICsga2V5U2l6ZTsKKyAgICB1aW50NjRfdCBleHBlY3RlZEluZGV4QlNp
emUgPSBiU2l6ZSArIGtleVNpemU7CisgICAgdWludDY0X3QgZXhwZWN0ZWRQdXRTaXplID0gZXhw
ZWN0ZWRSb3dTaXplICsgZXhwZWN0ZWRJbmRleEFTaXplICsgZXhwZWN0ZWRJbmRleEJTaXplOwor
CisgICAgRVhQRUNUX05FQVIoZXhwZWN0ZWRQdXRTaXplLCBbdWlEZWxlZ2F0ZSBleHBlY3RlZFVz
YWdlXSwgZXhwZWN0ZWRQdXRTaXplIC8gMTApOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398334</attachid>
            <date>2020-05-03 14:56:54 -0700</date>
            <delta_ts>2020-05-04 16:33:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211360-20200503145653.patch</filename>
            <type>text/plain</type>
            <size>48583</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwODQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmY3NGIzNjE3OWVmN2Fk
NWJiMjQ0NjA5NzBlOGYzZGJmODgxZTU1ZC4uMTk0MjQxMzViNTVhOTQ5MjRmMGIzYmU3OWQzYTRi
Y2UwZWM4YzFmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDIwLTA1LTAzICBCZW4g
TmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIEltcHJvdmUgYWNjdXJhY3kgb2YgSW5k
ZXhlZERCIGVzdGltYXRlZCB3cml0ZSBzaXplIGNvbXB1dGF0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTEzNjAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBjdXJyZW50bHkgZXN0aW1hdGUgdGhl
IHNpemUgb2YgYSBwdXQgaW4gSW5kZXhlZERCIGZvciBxdW90YSBjaGVjayBwdXJwb3NlcyB3aXRo
IHNvbWV0aGluZworICAgICAgICBsaWtlOgorCisgICAgICAgICAgZXN0aW1hdGVkV3JpdGVTaXpl
ID0gKDEgKyBudW1JbmRpY2VzKSAqIChrZXlTaXplICsgdmFsdWVTaXplKQorCisgICAgICAgIEhv
d2V2ZXIsIHRoaXMgY2FuIGxlYWQgdG8gbGFyZ2Ugb3ZlcmVzdGltYXRlcyBvZiB3cml0ZSBzaXpl
cy4gVGhpcyBpcyBiZWNhdXNlIHNlY29uZGFyeQorICAgICAgICBpbmRpY2VzIG9ubHkgc3RvcmUg
YSBtYXBwaW5nIG9mIHNlY29uZGFyeSBpbmRleCBrZXkgPT4gcHJpbWFyeSBrZXk7IHRoZXkgZG8g
bm90IHN0b3JlIHRoZQorICAgICAgICBlbnRpcmUgdmFsdWUuIEluIHRoZSBleGFtcGxlIHNpdGUg
YXR0YWNoZWQgdG8gMjAyMTM3IChhbm90aGVyIERCIHF1b3RhLXJlbGF0ZWQgYnVnKSwgdGhlCisg
ICAgICAgIHRoZSBoZXVyaXN0aWMgZXN0aW1hdGVzIHRoYXQgb25lIG9mIHRoZSBwdXQgb3BlcmF0
aW9ucyB3b3VsZCB1c2UgbW9yZSB0aGFuIDgwMCBNQiB3aGVuIGl0CisgICAgICAgIGFjdHVhbGx5
IHVzZXMgMjIwIE1CLiBUaGlzIGluYWNjdXJhY3kgbGVhZHMgdG8gc3B1cmlvdXMgZGlzayBxdW90
YSBwZXJtaXNzaW9uIG1vZGFscyBiZWluZworICAgICAgICBwcmVzZW50ZWQgaW4gU2FmYXJpLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggaW1wcm92ZXMgdGhlIHdyaXRlIHNpemUgY29tcHV0YXRpb24g
YnkgZ2VuZXJhdGluZyB0aGUgc2Vjb25kYXJ5IGluZGV4IGtleXMgYmVmb3JlCisgICAgICAgIGVz
dGltYXRpbmcgdGhlIHdyaXRlIHNpemUuIFRoZSBwZXJmb3JtYW5jZSBzaG91bGQgYmUgYWJvdXQg
dGhlIHNhbWUgc2luY2Ugd2Ugc2F2ZSB0aGUKKyAgICAgICAgZ2VuZXJhdGVkIGluZGV4IGtleXMg
Zm9yIGxhdGVyIHVzYWdlIHdoZW4gd2UgYWN0dWFsbHkgYWRkIHRoZSByZWNvcmQgdG8gdGhlIERC
LgorCisgICAgICAgIEkgYWRkZWQgYSB0ZXN0IHRvIG1ha2Ugc3VyZSB0aGUgcXVvdGEgY2hlY2sg
cHJvZHVjZXMgYSBzYW5lIHNpemUgd2hlbiB1c2luZyBhIGxhcmdlIG51bWJlcgorICAgICAgICBv
ZiBpbmRpY2VzLgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmg6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6TWVtb3J5SURCQmFja2luZ1N0
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5SURCQmFja2luZ1N0b3Jl
OjphZGRSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJREJCYWNr
aW5nU3RvcmU6OnNlcmlhbGl6YXRpb25Db250ZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmg6CisgICAgICAgICogTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6TWVtb3J5T2JqZWN0U3RvcmU6OmFkZFJlY29yZCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJTZXJ2ZXI6Ok1lbW9yeU9iamVjdFN0b3JlOjp1cGRhdGVJbmRleGVzRm9yUHV0UmVj
b3JkKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3Rv
cmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2lu
Z1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2lu
Z1N0b3JlOjp1cGRhdGVBbGxJbmRleGVzRm9yQWRkUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQpOgorICAgICAgICAo
V2ViQ29yZTo6SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnNlcmlhbGl6YXRpb25D
b250ZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFj
a2luZ1N0b3JlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlE
QkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6ZXN0aW1hdGVTaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OnB1dE9y
QWRkKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5kZXhLZXkuaDoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZW5l
cmF0ZUluZGV4S2V5TWFwRm9yVmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0lEQkJpbmRp
bmdVdGlsaXRpZXMuaDoKKwogMjAyMC0wNC0yOCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2Vy
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXdyaXRlIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlU3Vi
bGF5ZXJMaXN0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9T
b3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDY1YzdjYWY3ZmYxYTIzZjZiZDkyZjE1
MTIxYzMwOTA5NWZlYmMzZDYuLjg2MDg0OTM1MDEwMjNhOGYyZjA3NzQzY2Q3MzUzOGY5OWI3NzVj
ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtNjgsNiArNjgsNyBAQCBzZXQoV2ViQ29yZV9QUklW
QVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1
ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1Vu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaAogCisgICAgTW9kdWxlcy9pbmRleGVkZGIvc2hh
cmVkL0luZGV4S2V5LmgKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCQ3Vyc29ySW5m
by5oCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkN1cnNvclJlY29yZC5oCiAgICAg
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkRhdGFiYXNlSW5mby5oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3Jl
LmgKaW5kZXggYTdkZjdhMWRjZDYwNzVkZGE0NTEwOTBhYTkzMDM3YWU4MjFjZGJmNC4uODg4OWFi
MGI0NDIyZWYzN2Y5ZjY2NWNmYjdkZmIzMWI3ZjY2ZWY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJCYWNraW5nU3RvcmUuaApA
QCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VJbmZvLmgiCiAjaW5jbHVk
ZSAiSURCRXJyb3IuaCIKKyNpbmNsdWRlICJJbmRleEtleS5oIgogI2luY2x1ZGUgPHd0Zi9NYWlu
VGhyZWFkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU2LDYgKzU3LDggQEAgZW51bSBj
bGFzcyBJbmRleFJlY29yZFR5cGU7CiAKIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewogCitjbGFzcyBJ
REJTZXJpYWxpemF0aW9uQ29udGV4dDsKKwogY2xhc3MgSURCQmFja2luZ1N0b3JlIHsKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5JREJCYWNraW5nU3RvcmUoKSB7IFJFTEVBU0VfQVNTRVJUKCFpc01h
aW5UaHJlYWQoKSk7IH0KQEAgLTc1LDcgKzc4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSURC
RXJyb3IgcmVuYW1lSW5kZXgoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlv
bklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5k
ZXhJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpID0gMDsKICAgICB2aXJ0dWFsIElE
QkVycm9yIGtleUV4aXN0c0luT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwg
Y29uc3QgSURCS2V5RGF0YSYsIGJvb2wmIGtleUV4aXN0cykgPSAwOwogICAgIHZpcnR1YWwgSURC
RXJyb3IgZGVsZXRlUmFuZ2UoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlv
bklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgSURCS2V5
UmFuZ2VEYXRhJikgPSAwOwotICAgIHZpcnR1YWwgSURCRXJyb3IgYWRkUmVjb3JkKGNvbnN0IElE
QlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJPYmpl
Y3RTdG9yZUluZm8mLCBjb25zdCBJREJLZXlEYXRhJiwgY29uc3QgSURCVmFsdWUmKSA9IDA7Cisg
ICAgdmlydHVhbCBJREJFcnJvciBhZGRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYsIGNvbnN0
IElEQktleURhdGEmLCBjb25zdCBJbmRleElEVG9JbmRleEtleU1hcCYsIGNvbnN0IElEQlZhbHVl
JikgPSAwOwogICAgIHZpcnR1YWwgSURCRXJyb3IgZ2V0UmVjb3JkKGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlk
ZW50aWZpZXIsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIElEQkdldFJlY29yZERhdGFUeXBlLCBJ
REJHZXRSZXN1bHQmIG91dFZhbHVlKSA9IDA7CiAgICAgdmlydHVhbCBJREJFcnJvciBnZXRBbGxS
ZWNvcmRzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVy
LCBjb25zdCBJREJHZXRBbGxSZWNvcmRzRGF0YSYsIElEQkdldEFsbFJlc3VsdCYgb3V0VmFsdWUp
ID0gMDsKICAgICB2aXJ0dWFsIElEQkVycm9yIGdldEluZGV4UmVjb3JkKGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9y
ZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgSW5kZXhlZERCOjpJbmRleFJl
Y29yZFR5cGUsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIElEQkdldFJlc3VsdCYgb3V0VmFsdWUp
ID0gMDsKQEAgLTg2LDYgKzg5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgSURCRXJyb3Igb3Bl
bkN1cnNvcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmll
ciwgY29uc3QgSURCQ3Vyc29ySW5mbyYsIElEQkdldFJlc3VsdCYgb3V0UmVzdWx0KSA9IDA7CiAg
ICAgdmlydHVhbCBJREJFcnJvciBpdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IGN1cnNvcklkZW50aWZpZXIsIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJiwgSURCR2V0UmVz
dWx0JiBvdXRSZXN1bHQpID0gMDsKIAorICAgIHZpcnR1YWwgSURCU2VyaWFsaXphdGlvbkNvbnRl
eHQmIHNlcmlhbGl6YXRpb25Db250ZXh0KCkgPSAwOworCiAgICAgdmlydHVhbCBJREJPYmplY3RT
dG9yZUluZm8qIGluZm9Gb3JPYmplY3RTdG9yZSh1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZp
ZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQmFja2luZ1N0b3JlKCkgPSAwOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5
SURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDQwMWNlM2QyYjE2MWJhZDNlNzkz
OTc3MTdlZDVlMjg4NzcwNDI2MmUuLjBmNGIzNWM5NGExOWU2ODVkYzVkYjJjNWI1NDdiMzJlZTE4
ZmEyN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0zNSw2ICszNSw3
IEBACiAjaW5jbHVkZSAiSURCSW5kZXhJbmZvLmgiCiAjaW5jbHVkZSAiSURCSXRlcmF0ZUN1cnNv
ckRhdGEuaCIKICNpbmNsdWRlICJJREJLZXlSYW5nZURhdGEuaCIKKyNpbmNsdWRlICJJREJTZXJp
YWxpemF0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZW1v
cnlJbmRleEN1cnNvci5oIgogI2luY2x1ZGUgIk1lbW9yeU9iamVjdFN0b3JlLmgiCkBAIC00OSw2
ICs1MCw3IEBAIGNvbnN0ZXhwciB1aW50NjRfdCBtYXhHZW5lcmF0ZWRLZXlWYWx1ZSA9IDB4MjAw
MDAwMDAwMDAwMDA7CiBNZW1vcnlJREJCYWNraW5nU3RvcmU6Ok1lbW9yeUlEQkJhY2tpbmdTdG9y
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYg
aWRlbnRpZmllcikKICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgICwgbV9zZXNz
aW9uSUQoc2Vzc2lvbklEKQorICAgICwgbV9zZXJpYWxpemF0aW9uQ29udGV4dChJREJTZXJpYWxp
emF0aW9uQ29udGV4dDo6Z2V0T3JDcmVhdGVJREJTZXJpYWxpemF0aW9uQ29udGV4dChzZXNzaW9u
SUQpKQogewogfQogCkBAIC0zNTUsNyArMzU3LDcgQEAgSURCRXJyb3IgTWVtb3J5SURCQmFja2lu
Z1N0b3JlOjpkZWxldGVSYW5nZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWMK
ICAgICByZXR1cm4gSURCRXJyb3IgeyB9OwogfQogCi1JREJFcnJvciBNZW1vcnlJREJCYWNraW5n
U3RvcmU6OmFkZFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9u
SWRlbnRpZmllciwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBvYmplY3RTdG9yZUluZm8sIGNv
bnN0IElEQktleURhdGEmIGtleURhdGEsIGNvbnN0IElEQlZhbHVlJiB2YWx1ZSkKK0lEQkVycm9y
IE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6YWRkUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIG9i
amVjdFN0b3JlSW5mbywgY29uc3QgSURCS2V5RGF0YSYga2V5RGF0YSwgY29uc3QgSW5kZXhJRFRv
SW5kZXhLZXlNYXAmIGluZGV4S2V5cywgY29uc3QgSURCVmFsdWUmIHZhbHVlKQogewogICAgIExP
RyhJbmRleGVkREIsICJNZW1vcnlJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZCIpOwogCkBAIC0z
NjksNyArMzcxLDcgQEAgSURCRXJyb3IgTWVtb3J5SURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQo
Y29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICBpZiAoIW9iamVjdFN0
b3JlKQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJObyBiYWNraW5n
IHN0b3JlIG9iamVjdCBzdG9yZSBmb3VuZCB0byBwdXQgcmVjb3JkIl9zIH07CiAKLSAgICByZXR1
cm4gb2JqZWN0U3RvcmUtPmFkZFJlY29yZCgqdHJhbnNhY3Rpb24sIGtleURhdGEsIHZhbHVlKTsK
KyAgICByZXR1cm4gb2JqZWN0U3RvcmUtPmFkZFJlY29yZCgqdHJhbnNhY3Rpb24sIGtleURhdGEs
IGluZGV4S2V5cywgdmFsdWUpOwogfQogCiBJREJFcnJvciBNZW1vcnlJREJCYWNraW5nU3RvcmU6
OmdldFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRp
ZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBJREJLZXlSYW5nZURh
dGEmIHJhbmdlLCBJREJHZXRSZWNvcmREYXRhVHlwZSB0eXBlLCBJREJHZXRSZXN1bHQmIG91dFZh
bHVlKQpAQCAtNjExLDYgKzYxMywxMSBAQCBSZWZQdHI8TWVtb3J5T2JqZWN0U3RvcmU+IE1lbW9y
eUlEQkJhY2tpbmdTdG9yZTo6dGFrZU9iamVjdFN0b3JlQnlJZGVudGlmaWVyKHVpbgogICAgIHJl
dHVybiBvYmplY3RTdG9yZUJ5SWRlbnRpZmllcjsKIH0KIAorSURCU2VyaWFsaXphdGlvbkNvbnRl
eHQmIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6c2VyaWFsaXphdGlvbkNvbnRleHQoKQoreworICAg
IHJldHVybiBtX3NlcmlhbGl6YXRpb25Db250ZXh0LmdldCgpOworfQorCiBJREJPYmplY3RTdG9y
ZUluZm8qIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6aW5mb0Zvck9iamVjdFN0b3JlKHVpbnQ2NF90
IG9iamVjdFN0b3JlSWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQobV9kYXRhYmFzZUluZm8pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9y
eUlEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oCmluZGV4IDc0ZGM5NTA5NDVhNmVmNGI4ZWI1NzJh
OGJkNGQxNWRkYTUyYjhmYjUuLmI5NjkyMjY1M2I1MWNhODU5MWE0M2M4YTY4YmYxOWVjMjdmYTcz
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9N
ZW1vcnlJREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNp
bmNsdWRlICJJREJCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUlkZW50aWZp
ZXIuaCIKICNpbmNsdWRlICJJREJSZXNvdXJjZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJJbmRl
eEtleS5oIgogI2luY2x1ZGUgIk1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmgiCiAjaW5j
bHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC0zNyw2
ICszOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgSURCU2VydmVyIHsKIAor
Y2xhc3MgSURCU2VyaWFsaXphdGlvbkNvbnRleHQ7CiBjbGFzcyBNZW1vcnlPYmplY3RTdG9yZTsK
IAogY2xhc3MgTWVtb3J5SURCQmFja2luZ1N0b3JlIGZpbmFsIDogcHVibGljIElEQkJhY2tpbmdT
dG9yZSB7CkBAIC01MSw2ICs1Myw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZU9iamVjdFN0
b3JlRm9yVmVyc2lvbkNoYW5nZUFib3J0KE1lbW9yeU9iamVjdFN0b3JlJik7CiAgICAgdm9pZCBy
ZXN0b3JlT2JqZWN0U3RvcmVGb3JWZXJzaW9uQ2hhbmdlQWJvcnQoUmVmPE1lbW9yeU9iamVjdFN0
b3JlPiYmKTsKIAorICAgIElEQlNlcmlhbGl6YXRpb25Db250ZXh0JiBzZXJpYWxpemF0aW9uQ29u
dGV4dCgpIGZpbmFsOworCiBwcml2YXRlOgogICAgIElEQkVycm9yIGJlZ2luVHJhbnNhY3Rpb24o
Y29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJikgZmluYWw7CiAgICAgSURCRXJyb3IgYWJvcnRUcmFu
c2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmll
cikgZmluYWw7CkBAIC02NCw3ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgSURCRXJyb3IgcmVuYW1l
SW5kZXgoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIs
IHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVy
LCBjb25zdCBTdHJpbmcmIG5ld05hbWUpIGZpbmFsOwogICAgIElEQkVycm9yIGtleUV4aXN0c0lu
T2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50
aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgSURCS2V5RGF0YSYs
IGJvb2wmIGtleUV4aXN0cykgZmluYWw7CiAgICAgSURCRXJyb3IgZGVsZXRlUmFuZ2UoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9i
amVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJikgZmluYWw7Ci0gICAg
SURCRXJyb3IgYWRkUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rp
b25JZGVudGlmaWVyLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mLCBjb25zdCBJREJLZXlEYXRh
JiwgY29uc3QgSURCVmFsdWUmKSBmaW5hbDsKKyAgICBJREJFcnJvciBhZGRSZWNvcmQoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQk9i
amVjdFN0b3JlSW5mbyYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJbmRleElEVG9JbmRleEtl
eU1hcCYsIGNvbnN0IElEQlZhbHVlJikgZmluYWw7CiAgICAgSURCRXJyb3IgZ2V0UmVjb3JkKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRf
dCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIElEQkdldFJl
Y29yZERhdGFUeXBlLCBJREJHZXRSZXN1bHQmIG91dFZhbHVlKSBmaW5hbDsKICAgICBJREJFcnJv
ciBnZXRBbGxSZWNvcmRzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25J
ZGVudGlmaWVyLCBjb25zdCBJREJHZXRBbGxSZWNvcmRzRGF0YSYsIElEQkdldEFsbFJlc3VsdCYg
b3V0VmFsdWUpIGZpbmFsOwogICAgIElEQkVycm9yIGdldEluZGV4UmVjb3JkKGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RT
dG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgSW5kZXhlZERCOjpJbmRl
eFJlY29yZFR5cGUsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIElEQkdldFJlc3VsdCYgb3V0VmFs
dWUpIGZpbmFsOwpAQCAtOTIsNiArOTYsNyBAQCBwcml2YXRlOgogCiAgICAgSURCRGF0YWJhc2VJ
ZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsK
KyAgICBSZWY8SURCU2VyaWFsaXphdGlvbkNvbnRleHQ+IG1fc2VyaWFsaXphdGlvbkNvbnRleHQ7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gbV9kYXRhYmFzZUluZm87CiAK
ICAgICBIYXNoTWFwPElEQlJlc291cmNlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPE1lbW9y
eUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uPj4gbV90cmFuc2FjdGlvbnM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVj
dFN0b3JlLmNwcAppbmRleCA3MTU1YjU5N2E0MjBmNTllMTM5NWI5MjgxZGU4YzJkNjRkYWE4NzEx
Li4wOWRjNDJjYmU0NTgzNDE1ZThjNGI5NDQwZGY2NzAwMDM4ZjY0NDk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlP
YmplY3RTdG9yZS5jcHAKQEAgLTI1MSw2ICsyNTEsMTIgQEAgdm9pZCBNZW1vcnlPYmplY3RTdG9y
ZTo6ZGVsZXRlUmFuZ2UoY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBpbnB1dFJhbmdlKQogfQogCiBJ
REJFcnJvciBNZW1vcnlPYmplY3RTdG9yZTo6YWRkUmVjb3JkKE1lbW9yeUJhY2tpbmdTdG9yZVRy
YW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgY29uc3QgSURCS2V5RGF0YSYga2V5RGF0YSwgY29uc3Qg
SURCVmFsdWUmIHZhbHVlKQoreworICAgIEluZGV4SURUb0luZGV4S2V5TWFwIGluZGV4S2V5cyA9
IGdlbmVyYXRlSW5kZXhLZXlNYXBGb3JWYWx1ZShtX3NlcmlhbGl6YXRpb25Db250ZXh0LT5leGVj
U3RhdGUoKSwgbV9pbmZvLCBrZXlEYXRhLCB2YWx1ZSk7CisgICAgcmV0dXJuIGFkZFJlY29yZCh0
cmFuc2FjdGlvbiwga2V5RGF0YSwgaW5kZXhLZXlzLCB2YWx1ZSk7Cit9CisKK0lEQkVycm9yIE1l
bW9yeU9iamVjdFN0b3JlOjphZGRSZWNvcmQoTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24m
IHRyYW5zYWN0aW9uLCBjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBJbmRleElEVG9J
bmRleEtleU1hcCYgaW5kZXhLZXlzLCBjb25zdCBJREJWYWx1ZSYgdmFsdWUpCiB7CiAgICAgTE9H
KEluZGV4ZWREQiwgIk1lbW9yeU9iamVjdFN0b3JlOjphZGRSZWNvcmQiKTsKIApAQCAtMjcxLDcg
KzI3Nyw3IEBAIElEQkVycm9yIE1lbW9yeU9iamVjdFN0b3JlOjphZGRSZWNvcmQoTWVtb3J5QmFj
a2luZ1N0b3JlVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uCiAgICAgQVNTRVJUKGxpc3RSZXN1bHQu
c2Vjb25kKTsKIAogICAgIC8vIElmIHRoZXJlIHdhcyBhbiBlcnJvciBpbmRleGluZyB0aGlzIGFk
ZGl0aW9uLCB0aGVuIHJldmVydCBpdC4KLSAgICBhdXRvIGVycm9yID0gdXBkYXRlSW5kZXhlc0Zv
clB1dFJlY29yZChrZXlEYXRhLCB2YWx1ZS5kYXRhKCkpOworICAgIGF1dG8gZXJyb3IgPSB1cGRh
dGVJbmRleGVzRm9yUHV0UmVjb3JkKGtleURhdGEsIGluZGV4S2V5cyk7CiAgICAgaWYgKCFlcnJv
ci5pc051bGwoKSkgewogICAgICAgICBtX2tleVZhbHVlU3RvcmUtPnJlbW92ZShtYXBSZXN1bHQu
aXRlcmF0b3IpOwogICAgICAgICBtX29yZGVyZWRLZXlzLT5lcmFzZShsaXN0UmVzdWx0LmZpcnN0
KTsKQEAgLTI5OSwyOSArMzA1LDIzIEBAIHZvaWQgTWVtb3J5T2JqZWN0U3RvcmU6OnVwZGF0ZUlu
ZGV4ZXNGb3JEZWxldGVSZWNvcmQoY29uc3QgSURCS2V5RGF0YSYgdmFsdWUpCiAgICAgICAgIGlu
ZGV4LT5yZW1vdmVFbnRyaWVzV2l0aFZhbHVlS2V5KHZhbHVlKTsKIH0KIAotSURCRXJyb3IgTWVt
b3J5T2JqZWN0U3RvcmU6OnVwZGF0ZUluZGV4ZXNGb3JQdXRSZWNvcmQoY29uc3QgSURCS2V5RGF0
YSYga2V5LCBjb25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYgdmFsdWUpCitJREJFcnJvciBNZW1v
cnlPYmplY3RTdG9yZTo6dXBkYXRlSW5kZXhlc0ZvclB1dFJlY29yZChjb25zdCBJREJLZXlEYXRh
JiBrZXksIGNvbnN0IEluZGV4SURUb0luZGV4S2V5TWFwJiBpbmRleEtleXMpCiB7Ci0gICAgSlNM
b2NrSG9sZGVyIGxvY2tlcihtX3NlcmlhbGl6YXRpb25Db250ZXh0LT52bSgpKTsKLQotICAgIGF1
dG8ganNWYWx1ZSA9IGRlc2VyaWFsaXplSURCVmFsdWVUb0pTVmFsdWUobV9zZXJpYWxpemF0aW9u
Q29udGV4dC0+ZXhlY1N0YXRlKCksIHZhbHVlKTsKLSAgICBpZiAoanNWYWx1ZS5pc1VuZGVmaW5l
ZE9yTnVsbCgpKQotICAgICAgICByZXR1cm4gSURCRXJyb3IgeyB9OwotCiAgICAgSURCRXJyb3Ig
ZXJyb3I7CiAgICAgVmVjdG9yPHN0ZDo6cGFpcjxNZW1vcnlJbmRleCosIEluZGV4S2V5Pj4gY2hh
bmdlZEluZGV4UmVjb3JkczsKIAotICAgIGZvciAoYXV0byYgaW5kZXggOiBtX2luZGV4ZXNCeU5h
bWUudmFsdWVzKCkpIHsKLSAgICAgICAgSW5kZXhLZXkgaW5kZXhLZXk7Ci0gICAgICAgIGdlbmVy
YXRlSW5kZXhLZXlGb3JWYWx1ZShtX3NlcmlhbGl6YXRpb25Db250ZXh0LT5leGVjU3RhdGUoKSwg
aW5kZXgtPmluZm8oKSwganNWYWx1ZSwgaW5kZXhLZXksIG1faW5mby5rZXlQYXRoKCksIGtleSk7
Ci0KLSAgICAgICAgaWYgKGluZGV4S2V5LmlzTnVsbCgpKQotICAgICAgICAgICAgY29udGludWU7
CisgICAgZm9yIChjb25zdCBhdXRvJiBbaW5kZXhJRCwgaW5kZXhLZXldIDogaW5kZXhLZXlzKSB7
CisgICAgICAgIGF1dG8qIGluZGV4ID0gbV9pbmRleGVzQnlJZGVudGlmaWVyLmdldChpbmRleElE
KTsKKyAgICAgICAgaWYgKCFpbmRleCkgeworICAgICAgICAgICAgZXJyb3IgPSBJREJFcnJvciB7
IH07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogCiAgICAgICAgIGVycm9yID0gaW5k
ZXgtPnB1dEluZGV4S2V5KGtleSwgaW5kZXhLZXkpOwogICAgICAgICBpZiAoIWVycm9yLmlzTnVs
bCgpKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgY2hhbmdlZEluZGV4UmVjb3Jkcy5h
cHBlbmQoc3RkOjptYWtlX3BhaXIoaW5kZXguZ2V0KCksIGluZGV4S2V5KSk7CisgICAgICAgIGNo
YW5nZWRJbmRleFJlY29yZHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGluZGV4LCBpbmRleEtleSkp
OwogICAgIH0KIAogICAgIC8vIElmIGFueSBvZiB0aGUgaW5kZXggcHV0cyBmYWlsZWQsIHJldmVy
dCBhbGwgb2YgdGhlIG9uZXMgdGhhdCB3ZW50IHRocm91Z2guCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5o
CmluZGV4IGFjNzAxMDg5YmM0YjE1Zjc3NjUxMWUxMzg4YjZkZmIwN2MyZGZiMDYuLmIxNTAyOTkz
OTVjMWFlYjVmMWM0MDU5Mjg3OThjNDcwMzcwMDExM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5o
CkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJJREJLZXlEYXRhLmgiCiAjaW5jbHVkZSAi
SURCT2JqZWN0U3RvcmVJbmZvLmgiCisjaW5jbHVkZSAiSW5kZXhLZXkuaCIKICNpbmNsdWRlICJN
ZW1vcnlJbmRleC5oIgogI2luY2x1ZGUgIk1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yLmgiCiAjaW5j
bHVkZSAiVGhyZWFkU2FmZURhdGFCdWZmZXIuaCIKQEAgLTgwLDYgKzgxLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgZGVsZXRlUmVjb3JkKGNvbnN0IElEQktleURhdGEmKTsKICAgICB2b2lkIGRlbGV0
ZVJhbmdlKGNvbnN0IElEQktleVJhbmdlRGF0YSYpOwogICAgIElEQkVycm9yIGFkZFJlY29yZChN
ZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbiYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJ
REJWYWx1ZSYpOworICAgIElEQkVycm9yIGFkZFJlY29yZChNZW1vcnlCYWNraW5nU3RvcmVUcmFu
c2FjdGlvbiYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJbmRleElEVG9JbmRleEtleU1hcCYs
IGNvbnN0IElEQlZhbHVlJik7CiAKICAgICB1aW50NjRfdCBjdXJyZW50S2V5R2VuZXJhdG9yVmFs
dWUoKSBjb25zdCB7IHJldHVybiBtX2tleUdlbmVyYXRvclZhbHVlOyB9CiAgICAgdm9pZCBzZXRL
ZXlHZW5lcmF0b3JWYWx1ZSh1aW50NjRfdCB2YWx1ZSkgeyBtX2tleUdlbmVyYXRvclZhbHVlID0g
dmFsdWU7IH0KQEAgLTExNCw3ICsxMTYsNyBAQCBwcml2YXRlOgogICAgIElEQktleURhdGFTZXQ6
Oml0ZXJhdG9yIGxvd2VzdEl0ZXJhdG9ySW5SYW5nZShjb25zdCBJREJLZXlSYW5nZURhdGEmLCBi
b29sIHJldmVyc2UpIGNvbnN0OwogCiAgICAgSURCRXJyb3IgcG9wdWxhdGVJbmRleFdpdGhFeGlz
dGluZ1JlY29yZHMoTWVtb3J5SW5kZXgmKTsKLSAgICBJREJFcnJvciB1cGRhdGVJbmRleGVzRm9y
UHV0UmVjb3JkKGNvbnN0IElEQktleURhdGEmLCBjb25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYg
dmFsdWUpOworICAgIElEQkVycm9yIHVwZGF0ZUluZGV4ZXNGb3JQdXRSZWNvcmQoY29uc3QgSURC
S2V5RGF0YSYsIGNvbnN0IEluZGV4SURUb0luZGV4S2V5TWFwJik7CiAgICAgdm9pZCB1cGRhdGVJ
bmRleGVzRm9yRGVsZXRlUmVjb3JkKGNvbnN0IElEQktleURhdGEmIHZhbHVlKTsKICAgICB2b2lk
IHVwZGF0ZUN1cnNvcnNGb3JQdXRSZWNvcmQoSURCS2V5RGF0YVNldDo6aXRlcmF0b3IpOwogICAg
IHZvaWQgdXBkYXRlQ3Vyc29yc0ZvckRlbGV0ZVJlY29yZChjb25zdCBJREJLZXlEYXRhJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRl
SURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDU2M2RlYTg4MGZhODc4ZjU0MjI5
ODBkYzdhZmIzZWE0ODk5ODUyMjcuLjczZGJlNDkwNDllYjk4MDRiYjc0ZTgzOWM3MGE1ZmUzZDU0
YzkxNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0xODQ4LDI0ICsx
ODQ4LDIwIEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dXBkYXRlT25lSW5kZXhG
b3JBZGRSZWNvcmQoY29uc3QgSURCSW5kZXhJbmZvJiBpCiAgICAgcmV0dXJuIHVuY2hlY2tlZFB1
dEluZGV4S2V5KGluZm8sIGtleSwgaW5kZXhLZXksIHJlY29yZElEKTsKIH0KIAotSURCRXJyb3Ig
U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1cGRhdGVBbGxJbmRleGVzRm9yQWRkUmVjb3JkKGNvbnN0
IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbywgY29uc3QgSURCS2V5RGF0YSYga2V5LCBjb25zdCBU
aHJlYWRTYWZlRGF0YUJ1ZmZlciYgdmFsdWUsIGludDY0X3QgcmVjb3JkSUQpCitJREJFcnJvciBT
UUxpdGVJREJCYWNraW5nU3RvcmU6OnVwZGF0ZUFsbEluZGV4ZXNGb3JBZGRSZWNvcmQoY29uc3Qg
SURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvLCBjb25zdCBJREJLZXlEYXRhJiBrZXksIGNvbnN0IElu
ZGV4SURUb0luZGV4S2V5TWFwJiBpbmRleEtleXMsIGludDY0X3QgcmVjb3JkSUQpCiB7Ci0gICAg
SlNMb2NrSG9sZGVyIGxvY2tlcihtX3NlcmlhbGl6YXRpb25Db250ZXh0LT52bSgpKTsKLQotICAg
IGF1dG8ganNWYWx1ZSA9IGRlc2VyaWFsaXplSURCVmFsdWVUb0pTVmFsdWUobV9zZXJpYWxpemF0
aW9uQ29udGV4dC0+ZXhlY1N0YXRlKCksIHZhbHVlKTsKLSAgICBpZiAoanNWYWx1ZS5pc1VuZGVm
aW5lZE9yTnVsbCgpKQotICAgICAgICByZXR1cm4gSURCRXJyb3IgeyB9OwotCiAgICAgSURCRXJy
b3IgZXJyb3I7CisgICAgY29uc3QgYXV0byYgaW5kZXhNYXAgPSBpbmZvLmluZGV4TWFwKCk7CiAg
ICAgYm9vbCBhbnlSZWNvcmRzU3VjY2VlZGVkID0gZmFsc2U7Ci0gICAgZm9yIChhdXRvJiBpbmRl
eCA6IGluZm8uaW5kZXhNYXAoKS52YWx1ZXMoKSkgewotICAgICAgICBJbmRleEtleSBpbmRleEtl
eTsKLSAgICAgICAgZ2VuZXJhdGVJbmRleEtleUZvclZhbHVlKG1fc2VyaWFsaXphdGlvbkNvbnRl
eHQtPmV4ZWNTdGF0ZSgpLCBpbmRleCwganNWYWx1ZSwgaW5kZXhLZXksIGluZm8ua2V5UGF0aCgp
LCBrZXkpOwogCi0gICAgICAgIGlmIChpbmRleEtleS5pc051bGwoKSkKLSAgICAgICAgICAgIGNv
bnRpbnVlOworICAgIGZvciAoY29uc3QgYXV0byYgW2luZGV4SUQsIGluZGV4S2V5XSA6IGluZGV4
S2V5cykgeworICAgICAgICBhdXRvIGluZGV4SXQgPSBpbmRleE1hcC5maW5kKGluZGV4SUQpOwor
ICAgICAgICBpZiAoaW5kZXhJdCA9PSBpbmRleE1hcC5lbmQoKSkgeworICAgICAgICAgICAgZXJy
b3IgPSBJREJFcnJvciB7IH07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogCi0gICAg
ICAgIGVycm9yID0gdW5jaGVja2VkUHV0SW5kZXhLZXkoaW5kZXgsIGtleSwgaW5kZXhLZXksIHJl
Y29yZElEKTsKKyAgICAgICAgZXJyb3IgPSB1bmNoZWNrZWRQdXRJbmRleEtleShpbmRleEl0LT52
YWx1ZSwga2V5LCBpbmRleEtleSwgcmVjb3JkSUQpOwogICAgICAgICBpZiAoIWVycm9yLmlzTnVs
bCgpKQogICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTE4ODcsNyArMTg4Myw3IEBAIElEQkVycm9y
IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dXBkYXRlQWxsSW5kZXhlc0ZvckFkZFJlY29yZChjb25z
dCBJREJPYmplY3RTdG9yCiAgICAgcmV0dXJuIGVycm9yOwogfQogCi1JREJFcnJvciBTUUxpdGVJ
REJCYWNraW5nU3RvcmU6OmFkZFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRy
YW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBvYmplY3RTdG9y
ZUluZm8sIGNvbnN0IElEQktleURhdGEmIGtleURhdGEsIGNvbnN0IElEQlZhbHVlJiB2YWx1ZSkK
K0lEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkUmVjb3JkKGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJPYmplY3RTdG9y
ZUluZm8mIG9iamVjdFN0b3JlSW5mbywgY29uc3QgSURCS2V5RGF0YSYga2V5RGF0YSwgY29uc3Qg
SW5kZXhJRFRvSW5kZXhLZXlNYXAmIGluZGV4S2V5cywgY29uc3QgSURCVmFsdWUmIHZhbHVlKQog
ewogICAgIExPRyhJbmRleGVkREIsICJTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZCAt
IGtleSAlcywgb2JqZWN0IHN0b3JlICUiIFBSSXU2NCwga2V5RGF0YS5sb2dnaW5nU3RyaW5nKCku
dXRmOCgpLmRhdGEoKSwgb2JqZWN0U3RvcmVJbmZvLmlkZW50aWZpZXIoKSk7CiAKQEAgLTE5MjYs
NyArMTkyMiw3IEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6YWRkUmVjb3JkKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3RpCiAgICAgICAgIHJlY29yZElEID0g
bV9zcWxpdGVEQi0+bGFzdEluc2VydFJvd0lEKCk7CiAgICAgfQogCi0gICAgYXV0byBlcnJvciA9
IHVwZGF0ZUFsbEluZGV4ZXNGb3JBZGRSZWNvcmQob2JqZWN0U3RvcmVJbmZvLCBrZXlEYXRhLCB2
YWx1ZS5kYXRhKCksIHJlY29yZElEKTsKKyAgICBhdXRvIGVycm9yID0gdXBkYXRlQWxsSW5kZXhl
c0ZvckFkZFJlY29yZChvYmplY3RTdG9yZUluZm8sIGtleURhdGEsIGluZGV4S2V5cywgcmVjb3Jk
SUQpOwogCiAgICAgaWYgKCFlcnJvci5pc051bGwoKSkgewogICAgICAgICBhdXRvKiBzcWwgPSBj
YWNoZWRTdGF0ZW1lbnQoU1FMOjpEZWxldGVPYmplY3RTdG9yZVJlY29yZCwgIkRFTEVURSBGUk9N
IFJlY29yZHMgV0hFUkUgb2JqZWN0U3RvcmVJRCA9ID8gQU5EIGtleSA9IENBU1QoPyBBUyBURVhU
KTsiX3MpOwpAQCAtMjczMyw2ICsyNzI5LDExIEBAIElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdT
dG9yZTo6aXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zCiAg
ICAgcmV0dXJuIElEQkVycm9yIHsgfTsKIH0KIAorSURCU2VyaWFsaXphdGlvbkNvbnRleHQmIFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6c2VyaWFsaXphdGlvbkNvbnRleHQoKQoreworICAgIHJldHVy
biBtX3NlcmlhbGl6YXRpb25Db250ZXh0LmdldCgpOworfQorCiBJREJPYmplY3RTdG9yZUluZm8q
IFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6aW5mb0Zvck9iamVjdFN0b3JlKHVpbnQ2NF90IG9iamVj
dFN0b3JlSWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQobV9kYXRhYmFzZUluZm8pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJh
Y2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NR
TGl0ZUlEQkJhY2tpbmdTdG9yZS5oCmluZGV4IDQ5NDBjMTUxNjExMDRhZDk2OTU4ZmQyMzQzN2Rh
YzY5OTQwY2M3MTguLmJiMDU3ZDk1MThjZjBmN2JlNzkwNmM3M2YzZWJmZWI4YjhjMmExNDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgog
ICAgIElEQkVycm9yIHJlbmFtZUluZGV4KGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJh
bnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2
NF90IGluZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1lKSBmaW5hbDsKICAgICBJ
REJFcnJvciBrZXlFeGlzdHNJbk9iamVjdFN0b3JlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIs
IGNvbnN0IElEQktleURhdGEmLCBib29sJiBrZXlFeGlzdHMpIGZpbmFsOwogICAgIElEQkVycm9y
IGRlbGV0ZVJhbmdlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVu
dGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IElEQktleVJhbmdl
RGF0YSYpIGZpbmFsOwotICAgIElEQkVycm9yIGFkZFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlk
ZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZv
JiwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IElEQlZhbHVlJikgZmluYWw7CisgICAgSURCRXJy
b3IgYWRkUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVu
dGlmaWVyLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mLCBjb25zdCBJREJLZXlEYXRhJiwgY29u
c3QgSW5kZXhJRFRvSW5kZXhLZXlNYXAmLCBjb25zdCBJREJWYWx1ZSYpIGZpbmFsOwogICAgIElE
QkVycm9yIGdldFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9u
SWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBJREJLZXlS
YW5nZURhdGEmLCBJREJHZXRSZWNvcmREYXRhVHlwZSwgSURCR2V0UmVzdWx0JiBvdXRWYWx1ZSkg
ZmluYWw7CiAgICAgSURCRXJyb3IgZ2V0QWxsUmVjb3Jkcyhjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCR2V0QWxsUmVjb3Jkc0RhdGEm
LCBJREJHZXRBbGxSZXN1bHQmIG91dFZhbHVlKSBmaW5hbDsKICAgICBJREJFcnJvciBnZXRJbmRl
eFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmll
ciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50aWZp
ZXIsIEluZGV4ZWREQjo6SW5kZXhSZWNvcmRUeXBlLCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCBJ
REJHZXRSZXN1bHQmIG91dFZhbHVlKSBmaW5hbDsKQEAgLTgxLDYgKzgxLDggQEAgcHVibGljOgog
ICAgIElEQkVycm9yIG9wZW5DdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFu
c2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkN1cnNvckluZm8mLCBJREJHZXRSZXN1bHQmIG91
dFJlc3VsdCkgZmluYWw7CiAgICAgSURCRXJyb3IgaXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXNv
dXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiBjdXJzb3JJZGVudGlmaWVyLCBjb25zdCBJREJJdGVyYXRlQ3Vyc29yRGF0YSYs
IElEQkdldFJlc3VsdCYgb3V0UmVzdWx0KSBmaW5hbDsKIAorICAgIElEQlNlcmlhbGl6YXRpb25D
b250ZXh0JiBzZXJpYWxpemF0aW9uQ29udGV4dCgpIGZpbmFsOworCiAgICAgSURCT2JqZWN0U3Rv
cmVJbmZvKiBpbmZvRm9yT2JqZWN0U3RvcmUodWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVy
KSBmaW5hbDsKICAgICB2b2lkIGRlbGV0ZUJhY2tpbmdTdG9yZSgpIGZpbmFsOwogCkBAIC0xMjIs
NyArMTI0LDcgQEAgcHJpdmF0ZToKICAgICBJREJFcnJvciB1bmNoZWNrZWRHZXRLZXlHZW5lcmF0
b3JWYWx1ZShpbnQ2NF90IG9iamVjdFN0b3JlSUQsIHVpbnQ2NF90JiBvdXRWYWx1ZSk7CiAgICAg
SURCRXJyb3IgdW5jaGVja2VkU2V0S2V5R2VuZXJhdG9yVmFsdWUoaW50NjRfdCBvYmplY3RTdG9y
ZUlELCB1aW50NjRfdCB2YWx1ZSk7CiAKLSAgICBJREJFcnJvciB1cGRhdGVBbGxJbmRleGVzRm9y
QWRkUmVjb3JkKGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYsIGNvbnN0IElEQktleURhdGEmLCBj
b25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYgdmFsdWUsIGludDY0X3QgcmVjb3JkSUQpOworICAg
IElEQkVycm9yIHVwZGF0ZUFsbEluZGV4ZXNGb3JBZGRSZWNvcmQoY29uc3QgSURCT2JqZWN0U3Rv
cmVJbmZvJiwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IEluZGV4SURUb0luZGV4S2V5TWFwJiwg
aW50NjRfdCByZWNvcmRJRCk7CiAgICAgSURCRXJyb3IgdXBkYXRlT25lSW5kZXhGb3JBZGRSZWNv
cmQoY29uc3QgSURCSW5kZXhJbmZvJiwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IFRocmVhZFNh
ZmVEYXRhQnVmZmVyJiB2YWx1ZSwgaW50NjRfdCByZWNvcmRJRCk7CiAgICAgSURCRXJyb3IgdW5j
aGVja2VkUHV0SW5kZXhLZXkoY29uc3QgSURCSW5kZXhJbmZvJiwgY29uc3QgSURCS2V5RGF0YSYg
a2V5VmFsdWUsIGNvbnN0IEluZGV4S2V5JiwgaW50NjRfdCByZWNvcmRJRCk7CiAgICAgSURCRXJy
b3IgdW5jaGVja2VkUHV0SW5kZXhSZWNvcmQoaW50NjRfdCBvYmplY3RTdG9yZUlELCBpbnQ2NF90
IGluZGV4SUQsIGNvbnN0IElEQktleURhdGEmIGtleVZhbHVlLCBjb25zdCBJREJLZXlEYXRhJiBp
bmRleEtleSwgaW50NjRfdCByZWNvcmRJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAppbmRl
eCA0MjllNDQyYWU5MjY4ZWE0MWYzMDc3NGFlZWM3YmUwMGUyODcxN2Q2Li4wOGEyZWUyNjRkNGE2
NWYwMDkxMDUzZWJkMmVjOTkzZDkzZDE3ZWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAK
QEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJJREJTZXJ2ZXIuaCIKICNpbmNsdWRlICJJREJU
cmFuc2FjdGlvbkluZm8uaCIKICNpbmNsdWRlICJJREJWYWx1ZS5oIgorI2luY2x1ZGUgIkluZGV4
S2V5LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VRdW90YU1hbmFn
ZXIuaCIKICNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uaCIKQEAgLTcwLDYg
KzcxLDE5IEBAIHN0YXRpYyBpbmxpbmUgdWludDY0X3QgZXN0aW1hdGVTaXplKGNvbnN0IElEQktl
eURhdGEmIGtleURhdGEpCiAgICAgcmV0dXJuIHNpemU7CiB9CiAKK3N0YXRpYyBpbmxpbmUgdWlu
dDY0X3QgZXN0aW1hdGVTaXplKGNvbnN0IEluZGV4SURUb0luZGV4S2V5TWFwJiBpbmRleEtleXMs
IHVpbnQ2NF90IHByaW1hcnlLZXlTaXplKQoreworICAgIHVpbnQ2NF90IHNpemUgPSAwOworICAg
IGZvciAoYXV0byYgaW5kZXhLZXkgOiBpbmRleEtleXMudmFsdWVzKCkpIHsKKyAgICAgICAgLy8g
RWFjaCBJbmRleFJlY29yZCBoYXMgNSBjb2x1bW5zOgorICAgICAgICAvLyAgLSBpbmRleElELCBv
YmplY3RTdG9yZUlELCByZWNvcmRJRDogdGhlc2UgYXJlIHZhcmludHMsIGVzdGltYXRlIDRCIGVh
Y2ggPSAxMkIKKyAgICAgICAgLy8gIC0gcHJpbWFyeSBrZXk6IHVzZSBwcmltYXJ5S2V5U2l6ZQor
ICAgICAgICAvLyAgLSBzZWNvbmRhcnkgaW5kZXgga2V5OiB1c2UgZXN0aW1hdGVTaXplCisgICAg
ICAgIHNpemUgKz0gKDEyICsgcHJpbWFyeUtleVNpemUgKyBlc3RpbWF0ZVNpemUoaW5kZXhLZXku
YXNPbmVLZXkoKSkpOworICAgIH0KKyAgICByZXR1cm4gc2l6ZTsKK30KKwogc3RhdGljIGlubGlu
ZSB1aW50NjRfdCBlc3RpbWF0ZVNpemUoY29uc3QgSURCVmFsdWUmIHZhbHVlKQogewogICAgIHVp
bnQ2NF90IHNpemUgPSA0OwpAQCAtNzEyLDE2ICs3MjYsNiBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjpwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElE
QktleQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gUXVvdGEgY2hlY2suCi0gICAg
YXV0byB0YXNrU2l6ZSA9IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBlc3RpbWF0ZVNpemUo
a2V5RGF0YSkgKyBlc3RpbWF0ZVNpemUodmFsdWUpOwotICAgIGF1dG8qIG9iamVjdFN0b3JlID0g
bV9kYXRhYmFzZUluZm8tPmluZm9Gb3JFeGlzdGluZ09iamVjdFN0b3JlKG9iamVjdFN0b3JlSWRl
bnRpZmllcik7Ci0gICAgaWYgKG9iamVjdFN0b3JlKQotICAgICAgICB0YXNrU2l6ZSArPSBvYmpl
Y3RTdG9yZS0+aW5kZXhOYW1lcygpLnNpemUoKSAqIHRhc2tTaXplOwotICAgIGlmIChtX3NlcnZl
ci5yZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6ZSkgPT0gU3RvcmFn
ZVF1b3RhTWFuYWdlcjo6RGVjaXNpb246OkRlbnkpIHsKLSAgICAgICAgY2FsbGJhY2soSURCRXJy
b3IgeyBRdW90YUV4Y2VlZGVkRXJyb3IsIHF1b3RhRXJyb3JNZXNzYWdlTmFtZSgiUHV0T3JBZGQi
KSB9LCB1c2VkS2V5KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIGJvb2wgdXNlZEtl
eUlzR2VuZXJhdGVkID0gZmFsc2U7CiAgICAgdWludDY0X3Qga2V5TnVtYmVyOwogICAgIGF1dG8g
dHJhbnNhY3Rpb25JZGVudGlmaWVyID0gcmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVy
KCk7CkBAIC03NDEsNiArNzQ1LDIyIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnB1dE9yQWRk
KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5CiAgICAgfSBl
bHNlCiAgICAgICAgIHVzZWRLZXkgPSBrZXlEYXRhOwogCisgICAgLy8gR2VuZXJhdGUgaW5kZXgg
a2V5cyB1cCBmcm9udCBmb3IgbW9yZSBhY2N1cmF0ZSBxdW90YSBjaGVjay4KKyAgICBhdXRvIGlu
ZGV4S2V5cyA9IGdlbmVyYXRlSW5kZXhLZXlNYXBGb3JWYWx1ZShtX2JhY2tpbmdTdG9yZS0+c2Vy
aWFsaXphdGlvbkNvbnRleHQoKS5leGVjU3RhdGUoKSwgKm9iamVjdFN0b3JlSW5mbywgdXNlZEtl
eSwgdmFsdWUpOworCisgICAgLy8gUXVvdGEgY2hlY2suCisgICAgYXV0byBrZXlTaXplID0gZXN0
aW1hdGVTaXplKHVzZWRLZXkpOworICAgIGF1dG8gdmFsdWVTaXplID0gZXN0aW1hdGVTaXplKHZh
bHVlKTsKKyAgICBhdXRvIGluZGV4U2l6ZSA9IGVzdGltYXRlU2l6ZShpbmRleEtleXMsIGtleVNp
emUpOworICAgIGF1dG8gdGFza1NpemUgPSBkZWZhdWx0V3JpdGVPcGVyYXRpb25Db3N0ICsga2V5
U2l6ZSArIHZhbHVlU2l6ZSArIGluZGV4U2l6ZTsKKworICAgIExPRyhJbmRleGVkREIsICJVbmlx
dWVJREJEYXRhYmFzZTo6cHV0T3JBZGQgcXVvdGEgY2hlY2sgd2l0aCB0YXNrIHNpemU6ICVsbHUg
a2V5IHNpemU6ICVsbHUgdmFsdWUgc2l6ZTogJWxsdSBpbmRleCBzaXplOiAlbGx1IiwgdGFza1Np
emUsIGtleVNpemUsIHZhbHVlU2l6ZSwgaW5kZXhTaXplKTsKKworICAgIGlmIChtX3NlcnZlci5y
ZXF1ZXN0U3BhY2UobV9pZGVudGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6ZSkgPT0gU3RvcmFnZVF1
b3RhTWFuYWdlcjo6RGVjaXNpb246OkRlbnkpIHsKKyAgICAgICAgY2FsbGJhY2soSURCRXJyb3Ig
eyBRdW90YUV4Y2VlZGVkRXJyb3IsIHF1b3RhRXJyb3JNZXNzYWdlTmFtZSgiUHV0T3JBZGQiKSB9
LCB1c2VkS2V5KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmIChvdmVyd3JpdGVN
b2RlID09IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlOjpOb092ZXJ3cml0ZSkg
ewogICAgICAgICBib29sIGtleUV4aXN0czsKICAgICAgICAgZXJyb3IgPSBtX2JhY2tpbmdTdG9y
ZS0+a2V5RXhpc3RzSW5PYmplY3RTdG9yZSh0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0
b3JlSWRlbnRpZmllciwgdXNlZEtleSwga2V5RXhpc3RzKTsKQEAgLTc2MCw3ICs3ODAsNyBAQCB2
b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVx
dWVzdERhdGEsIGNvbnN0IElEQktleQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZXJy
b3IgPSBtX2JhY2tpbmdTdG9yZS0+YWRkUmVjb3JkKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgKm9i
amVjdFN0b3JlSW5mbywgdXNlZEtleSwgdmFsdWUpOworICAgIGVycm9yID0gbV9iYWNraW5nU3Rv
cmUtPmFkZFJlY29yZCh0cmFuc2FjdGlvbklkZW50aWZpZXIsICpvYmplY3RTdG9yZUluZm8sIHVz
ZWRLZXksIGluZGV4S2V5cywgdmFsdWUpOwogICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsKICAg
ICAgICAgY2FsbGJhY2soZXJyb3IsIHVzZWRLZXkpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5kZXhLZXkuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JbmRleEtleS5oCmluZGV4
IGMzODBjNDk2YzIzMzQ1ZjQzNGI2N2Y4ZmQwNjI4MDUwOWI3ZDc0ZmYuLjg3NTFjYTE4NDQ0ZTU5
MTYxNWE1YTRkNTIxNjUwYmMzZDAzNTE3MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JbmRleEtleS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JbmRleEtleS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYg
RU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKICNpbmNsdWRlICJJREJLZXlEYXRhLmgiCisjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKQEAgLTQ4LDYgKzQ5LDggQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8SURCS2V5
RGF0YT4gbV9rZXlzOwogfTsKIAordHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBJbmRleEtleT4g
SW5kZXhJRFRvSW5kZXhLZXlNYXA7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDk3ZjYzMDE4MWRlZjRjODNkYTNiMmQ3
NzY3NjI5YzZiMzZmYzE5MzAuLmRlNjZlMmIxNTA5NTZjNGQ0MWQ5YzJiYTM5NzJmMDg1MmFhNDE4
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTE0NTMsNyArMTQ1Myw3IEBACiAJCTUxNkQ3RDcwMUJCNUYwQkQwMEFGN0M3NyAv
KiBJREJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4NUZDQkQxQkI1Q0I3NzAwMTI4OThGIC8qIElEQkNv
bm5lY3Rpb25Ub1NlcnZlckRlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE2RDdENzIxQkI1RjBCRDAwQUY3Qzc3IC8qIElEQkNvbm5l
Y3Rpb25Ub0NsaWVudERlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTZEN0Q2RTFCQjVGMDY1MDBBRjdDNzcgLyogSURCQ29ubmVjdGlvblRv
Q2xpZW50RGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk1MTZGN0Y2RDFDMzFFMzlBMDBGMTExREMgLyogU2VydmVyT3BlbkRCUmVxdWVz
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2RjdG
NkMxQzMxQzc5RDAwRjExMURDIC8qIFNlcnZlck9wZW5EQlJlcXVlc3QuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk1MTcxMzhGMDFCRUQxRDFBMDAw
RDVGMDEgLyogSW5kZXhLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxNzEzOEVFMUJFRDFEMTcwMDBENUYwMSAvKiBJbmRleEtleS5oICovOyB9Owor
CQk1MTcxMzhGMDFCRUQxRDFBMDAwRDVGMDEgLyogSW5kZXhLZXkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzEzOEVFMUJFRDFEMTcwMDBENUYwMSAv
KiBJbmRleEtleS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTUxNzEzOEY4MUJGMTI4QkIwMDBENUYwMSAvKiBJbmRleFZhbHVlU3RvcmUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzEzOEY2MUJGMTIy
NjIwMDBENUYwMSAvKiBJbmRleFZhbHVlU3RvcmUuaCAqLzsgfTsKIAkJNTE3MTM4RkMxQkYzQURG
NDAwMEQ1RjAxIC8qIElEQkN1cnNvckluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzEzOEZBMUJGM0FEQUMwMDBENUYwMSAvKiBJREJDdXJzb3JJ
bmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
NTE3MTM5MDYxQkY2NERFQzAwMEQ1RjAxIC8qIE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTcxMzkwNDFCRjY0
REUzMDAwRDVGMDEgLyogTWVtb3J5T2JqZWN0U3RvcmVDdXJzb3IuaCAqLzsgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKaW5kZXgg
NTc4YzEzNjc5ZWQ3ODlhOTg2OTMxMDUyYmMwNmFhMDQwMDVjNzIzYi4uMmY1YWY2YzdlZGJlN2E3
OWNlNzExYTBkOGE2ZTZiNGU4NzU5ZTU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNs
dWRlICJJREJLZXkuaCIKICNpbmNsdWRlICJJREJLZXlEYXRhLmgiCiAjaW5jbHVkZSAiSURCS2V5
UGF0aC5oIgorI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlSW5mby5oIgogI2luY2x1ZGUgIklEQlZh
bHVlLmgiCiAjaW5jbHVkZSAiSW5kZXhLZXkuaCIKICNpbmNsdWRlICJKU0Jsb2IuaCIKQEAgLTQ2
Myw2ICs0NjQsMzQgQEAgdm9pZCBnZW5lcmF0ZUluZGV4S2V5Rm9yVmFsdWUoSlNHbG9iYWxPYmpl
Y3QmIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IElEQkluZGUKICAgICBvdXRLZXkgPSBJbmRl
eEtleShXVEZNb3ZlKGtleURhdGFzKSk7CiB9CiAKK0luZGV4SURUb0luZGV4S2V5TWFwIGdlbmVy
YXRlSW5kZXhLZXlNYXBGb3JWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIHN0b3JlSW5mbywgY29uc3QgSURCS2V5
RGF0YSYga2V5LCBjb25zdCBJREJWYWx1ZSYgdmFsdWUpCit7CisgICAgYXV0byYgaW5kZXhNYXAg
PSBzdG9yZUluZm8uaW5kZXhNYXAoKTsKKyAgICBhdXRvIGluZGV4Q291bnQgPSBpbmRleE1hcC5z
aXplKCk7CisgICAgaWYgKCFpbmRleENvdW50KQorICAgICAgICByZXR1cm4gSW5kZXhJRFRvSW5k
ZXhLZXlNYXAgeyB9OworCisgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LnZtKCkpOworICAgIGF1dG8ganNWYWx1ZSA9IGRlc2VyaWFsaXplSURCVmFsdWVUb0pTVmFs
dWUobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOworICAgIGlmIChqc1ZhbHVlLmlzVW5kZWZp
bmVkT3JOdWxsKCkpCisgICAgICAgIHJldHVybiBJbmRleElEVG9JbmRleEtleU1hcCB7IH07CisK
KyAgICBJbmRleElEVG9JbmRleEtleU1hcCBpbmRleEtleXM7CisgICAgaW5kZXhLZXlzLnJlc2Vy
dmVJbml0aWFsQ2FwYWNpdHkoaW5kZXhDb3VudCk7CisKKyAgICBmb3IgKGNvbnN0IGF1dG8mIFtp
bmRleElELCBpbmRleEluZm9dIDogaW5kZXhNYXApIHsKKyAgICAgICAgSW5kZXhLZXkgaW5kZXhL
ZXk7CisgICAgICAgIGdlbmVyYXRlSW5kZXhLZXlGb3JWYWx1ZShsZXhpY2FsR2xvYmFsT2JqZWN0
LCBpbmRleEluZm8sIGpzVmFsdWUsIGluZGV4S2V5LCBzdG9yZUluZm8ua2V5UGF0aCgpLCBrZXkp
OworCisgICAgICAgIGlmIChpbmRleEtleS5pc051bGwoKSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgIGluZGV4S2V5cy5hZGQoaW5kZXhJRCwgV1RGTW92ZShpbmRleEtleSkpOwor
ICAgIH0KKworICAgIHJldHVybiBpbmRleEtleXM7Cit9CisKIE9wdGlvbmFsPEpTQzo6SlNWYWx1
ZT4gZGVzZXJpYWxpemVJREJWYWx1ZVdpdGhLZXlJbmplY3Rpb24oSlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IElEQlZhbHVlJiB2YWx1ZSwgY29uc3QgSURCS2V5RGF0
YSYga2V5LCBjb25zdCBPcHRpb25hbDxJREJLZXlQYXRoPiYga2V5UGF0aCkKIHsKICAgICBhdXRv
IGpzVmFsdWUgPSBkZXNlcmlhbGl6ZUlEQlZhbHVlVG9KU1ZhbHVlKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJp
bmRpbmdVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdV
dGlsaXRpZXMuaAppbmRleCA0NmRhNWFlZWRkNmEzYjU5NGJhODk2MGY4NTJhYTcyZGUzMjFiN2Ix
Li44YWI3NGY4ODc5MGY2ZGRkMjE2ZjA1YTU4MGMzYjFmNDIzZjhjMTYyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oCkBAIC0yOSw2ICsy
OSw3IEBACiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKICNpbmNsdWRlICJJREJLZXlQ
YXRoLmgiCisjaW5jbHVkZSAiSW5kZXhLZXkuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgog
CiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQyLDYgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgSURCSW5kZXhJbmZvOwogY2xhc3MgSURCS2V5OwogY2xhc3MgSURCS2V5RGF0YTsKK2Ns
YXNzIElEQk9iamVjdFN0b3JlSW5mbzsKIGNsYXNzIElEQlZhbHVlOwogY2xhc3MgSW5kZXhLZXk7
CiBjbGFzcyBKU0RPTUdsb2JhbE9iamVjdDsKQEAgLTUyLDYgKzU0LDggQEAgYm9vbCBpbmplY3RJ
REJLZXlJbnRvU2NyaXB0VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIGNvbnN0IElEQktleURh
dGEmLCBKU0M6OkoKIAogdm9pZCBnZW5lcmF0ZUluZGV4S2V5Rm9yVmFsdWUoSlNDOjpKU0dsb2Jh
bE9iamVjdCYsIGNvbnN0IElEQkluZGV4SW5mbyYsIEpTQzo6SlNWYWx1ZSwgSW5kZXhLZXkmIG91
dEtleSwgY29uc3QgT3B0aW9uYWw8SURCS2V5UGF0aD4mLCBjb25zdCBJREJLZXlEYXRhJik7CiAK
K0luZGV4SURUb0luZGV4S2V5TWFwIGdlbmVyYXRlSW5kZXhLZXlNYXBGb3JWYWx1ZShKU0M6OkpT
R2xvYmFsT2JqZWN0JiwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiwgY29uc3QgSURCS2V5RGF0
YSYsIGNvbnN0IElEQlZhbHVlJik7CisKIFJlZjxJREJLZXk+IHNjcmlwdFZhbHVlVG9JREJLZXko
SlNDOjpKU0dsb2JhbE9iamVjdCYsIGNvbnN0IEpTQzo6SlNWYWx1ZSYpOwogCiBKU0M6OkpTVmFs
dWUgZGVzZXJpYWxpemVJREJWYWx1ZVRvSlNWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgY29u
c3QgSURCVmFsdWUmLCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBkNjE1YjJhZjVi
NzIxYTNhM2JiODcwY2I2NTBmMGJiN2MxNDdlM2RkLi44MTEyNDRkYmYzOWRkZmYzNzY2YmI0MmZl
NjRhOGEyNzRlNjBhNzQ3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMjAtMDUtMDMgIEJlbiBOaGFtICA8bmhhbUBh
cHBsZS5jb20+CisKKyAgICAgICAgSW1wcm92ZSBhY2N1cmFjeSBvZiBJbmRleGVkREIgZXN0aW1h
dGVkIHdyaXRlIHNpemUgY29tcHV0YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMTM2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFdlIGN1cnJlbnRseSBlc3RpbWF0ZSB0aGUgc2l6ZSBvZiBhIHB1
dCBpbiBJbmRleGVkREIgZm9yIHF1b3RhIGNoZWNrIHB1cnBvc2VzIHdpdGggc29tZXRoaW5nCisg
ICAgICAgIGxpa2U6CisKKyAgICAgICAgICBlc3RpbWF0ZWRXcml0ZVNpemUgPSAoMSArIG51bUlu
ZGljZXMpICogKGtleVNpemUgKyB2YWx1ZVNpemUpCisKKyAgICAgICAgSG93ZXZlciwgdGhpcyBj
YW4gbGVhZCB0byBsYXJnZSBvdmVyZXN0aW1hdGVzIG9mIHdyaXRlIHNpemVzLiBUaGlzIGlzIGJl
Y2F1c2Ugc2Vjb25kYXJ5CisgICAgICAgIGluZGljZXMgb25seSBzdG9yZSBhIG1hcHBpbmcgb2Yg
c2Vjb25kYXJ5IGluZGV4IGtleSA9PiBwcmltYXJ5IGtleTsgdGhleSBkbyBub3Qgc3RvcmUgdGhl
CisgICAgICAgIGVudGlyZSB2YWx1ZS4gSW4gdGhlIGV4YW1wbGUgc2l0ZSBhdHRhY2hlZCB0byAy
MDIxMzcgKGFub3RoZXIgREIgcXVvdGEtcmVsYXRlZCBidWcpLCB0aGUKKyAgICAgICAgdGhlIGhl
dXJpc3RpYyBlc3RpbWF0ZXMgdGhhdCBvbmUgb2YgdGhlIHB1dCBvcGVyYXRpb25zIHdvdWxkIHVz
ZSBtb3JlIHRoYW4gODAwIE1CIHdoZW4gaXQKKyAgICAgICAgYWN0dWFsbHkgdXNlcyAyMjAgTUIu
IFRoaXMgaW5hY2N1cmFjeSBsZWFkcyB0byBzcHVyaW91cyBkaXNrIHF1b3RhIHBlcm1pc3Npb24g
bW9kYWxzIGJlaW5nCisgICAgICAgIHByZXNlbnRlZCBpbiBTYWZhcmkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBpbXByb3ZlcyB0aGUgd3JpdGUgc2l6ZSBjb21wdXRhdGlvbiBieSBnZW5lcmF0aW5n
IHRoZSBzZWNvbmRhcnkgaW5kZXgga2V5cyBiZWZvcmUKKyAgICAgICAgZXN0aW1hdGluZyB0aGUg
d3JpdGUgc2l6ZS4gVGhlIHBlcmZvcm1hbmNlIHNob3VsZCBiZSBhYm91dCB0aGUgc2FtZSBzaW5j
ZSB3ZSBzYXZlIHRoZQorICAgICAgICBnZW5lcmF0ZWQgaW5kZXgga2V5cyBmb3IgbGF0ZXIgdXNh
Z2Ugd2hlbiB3ZSBhY3R1YWxseSBhZGQgdGhlIHJlY29yZCB0byB0aGUgREIuCisKKyAgICAgICAg
SSBhZGRlZCBhIHRlc3QgdG8gbWFrZSBzdXJlIHRoZSBxdW90YSBjaGVjayBwcm9kdWNlcyBhIHNh
bmUgc2l6ZSB3aGVuIHVzaW5nIGEgbGFyZ2UgbnVtYmVyCisgICAgICAgIG9mIGluZGljZXMuCisK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lEQlF1
b3RhQ2hlY2suaHRtbDogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9JREJRdW90YUNoZWNrLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bSURCUXVvdGFDaGVj
a01lc3NhZ2VIYW5kbGVyIGRlYWxsb2NdKToKKyAgICAgICAgKC1bSURCUXVvdGFDaGVja01lc3Nh
Z2VIYW5kbGVyIHVzZXJDb250ZW50Q29udHJvbGxlcjpkaWRSZWNlaXZlU2NyaXB0TWVzc2FnZTpd
KToKKyAgICAgICAgKC1bSURCUXVvdGFDaGVja01lc3NhZ2VIYW5kbGVyIHJlY2VpdmVkU2NyaXB0
TWVzc2FnZVBvaW50ZXJdKToKKyAgICAgICAgKC1bSURCUXVvdGFDaGVja1dlYlZpZXdEZWxlZ2F0
ZSBfd2ViVmlldzpkZWNpZGVEYXRhYmFzZVF1b3RhRm9yU2VjdXJpdHlPcmlnaW46Y3VycmVudFF1
b3RhOmN1cnJlbnRPcmlnaW5Vc2FnZTpjdXJyZW50RGF0YWJhc2VVc2FnZTpleHBlY3RlZFVzYWdl
OmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKFRFU1QpOgorCiAyMDIwLTA0LTI4ICBLYXRl
IENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIENyZWF0ZSBh
IG1lY2hhbmlzbSB0byBhZGQgbWlzc2luZyBJVFAgRGF0YWJhc2UgdGFibGVzIHdoZW4gdGhlIHNj
aGVtYSBpcyB1cGRhdGVkCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDczMTI5NTQ4MGM3YTc1
YzliOWY2ZjE4Y2U0ZWY2YTZmZTgwNmZiZjkuLmNlNDhhZTU5ZmMwMjQ0MjMwODcxMjNmMzJiZmEw
MDcwYmVjZWJhYTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDMwLDYgKzEwMzAsOCBA
QAogCQlFM0RFQTgxMTFGMEE1ODkwMDBDQkMyRTggLyogVGhyZWFkR3JvdXAuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNERUE4MTAxRjBBNTg4MDAw
Q0JDMkU4IC8qIFRocmVhZEdyb3VwLmNwcCAqLzsgfTsKIAkJRTNGOEFCOTIyNDFBQjlDRTAwM0Uy
QTdFIC8qIEFjY2Vzc2liaWxpdHlSZW1vdGVVSUFwcC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzRjhBQjkxMjQxQUI5Q0UwMDNFMkE3RSAvKiBBY2Nl
c3NpYmlsaXR5UmVtb3RlVUlBcHAubW0gKi87IH07CiAJCUU1MDM2Rjc4MjExQkMyNTQwMEJGREJF
MiAvKiBjb2xvci1kcm9wLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRTUwMzZGNzcyMTFCQzIyODAwQkZEQkUyIC8qIGNvbG9yLWRyb3Au
aHRtbCAqLzsgfTsKKwkJRUI4N0Y2RDUyNDVGNEU2ODAwRTNFNDlDIC8qIElEQlF1b3RhQ2hlY2su
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQjg3RjZE
MzI0NUY0RTRGMDBFM0U0OUMgLyogSURCUXVvdGFDaGVjay5tbSAqLzsgfTsKKwkJRUI4N0Y2RDYy
NDVGNEU3QTAwRTNFNDlDIC8qIElEQlF1b3RhQ2hlY2suaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQjg3RjZEMjI0NUY0RTJCMDBFM0U0
OUMgLyogSURCUXVvdGFDaGVjay5odG1sICovOyB9OwogCQlFQ0E2ODBDRTFFNjhDQzA5MDA3MzFE
MjAgLyogU3RyaW5nVXRpbGl0aWVzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRUNBNjgwQ0QxRTY4Q0MwOTAwNzMxRDIwIC8qIFN0cmluZ1V0aWxpdGll
cy5tbSAqLzsgfTsKIAkJRjQwMkY1NkMyM0VDQzJGQjAwODY1NTQ5IC8qIFVJV0tJbnRlcmFjdGlv
blZpZXdQcm90b2NvbC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY0MDJGNTZCMjNFQ0MyRkIwMDg2NTU0OSAvKiBVSVdLSW50ZXJhY3Rpb25WaWV3UHJv
dG9jb2wubW0gKi87IH07CiAJCUY0MDdGRTM5MUYxRDBERkMwMDE3Q0YyNSAvKiBlbm9ybW91cy5z
dmcgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjQwN0ZFMzgxRjFEMERFNjAwMTdDRjI1IC8qIGVub3Jtb3VzLnN2ZyAqLzsgfTsKQEAgLTEzNTIs
NiArMTM1NCw3IEBACiAJCQkJNTExMEZDRjExRTAxQ0Q2NDAwNkY4RDBCIC8qIElEQkluZGV4VXBn
cmFkZVRvVjIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk5MzdCNTY5RTIzQ0QyM0RC
MDAyQUU2NDAgLyogSURCT2JqZWN0U3RvcmVJbmZvVXBncmFkZS5zcWxpdGUzIGluIENvcHkgUmVz
b3VyY2VzICovLAogCQkJCTkzQkNCQzg0MjNDQzZGNDQwMENBMjIyMSAvKiBJREJPYmplY3RTdG9y
ZUluZm9VcGdyYWRlVG9WMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCUVCODdGNkQ2
MjQ1RjRFN0EwMEUzRTQ5QyAvKiBJREJRdW90YUNoZWNrLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8sCiAJCQkJRjQxQUI5QTQxRUY0Njk2QjAwODNGQTA4IC8qIGltYWdlLWFuZC1jb250ZW50ZWRp
dGFibGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNEUwQTJCNDIxMjI0MDJCMDBB
RjdDN0YgLyogaW1hZ2UtYW5kLWZpbGUtdXBsb2FkLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8s
CiAJCQkJRjQxQUI5QTUxRUY0Njk2QjAwODNGQTA4IC8qIGltYWdlLWFuZC10ZXh0YXJlYS5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMjY1Nyw2ICsyNjYwLDggQEAKIAkJRTRBNzU3RDMx
NzhBRUE1QjAwQjVEN0E0IC8qIERlcXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERlcXVlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTRDOUFCQzcxQjNEQjE3MTAwNDBBOTg3
IC8qIFJ1bkxvb3AuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUnVu
TG9vcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU1MDM2Rjc3MjExQkMyMjgw
MEJGREJFMiAvKiBjb2xvci1kcm9wLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAi
Y29sb3ItZHJvcC5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRUI4N0Y2RDIy
NDVGNEUyQjAwRTNFNDlDIC8qIElEQlF1b3RhQ2hlY2suaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRt
bDsgcGF0aCA9IElEQlF1b3RhQ2hlY2suaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRUI4N0Y2RDMyNDVGNEU0RjAwRTNFNDlDIC8qIElEQlF1b3RhQ2hlY2subW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBJREJRdW90YUNoZWNrLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlFQzc5RjE2OEJFNDU0RTU3OUU0MTdCMDUgLyogTWFya2Fi
bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFya2FibGUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFQ0E2ODBDRDFFNjhDQzA5MDA3MzFEMjAg
LyogU3RyaW5nVXRpbGl0aWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gU3RyaW5nVXRpbGl0aWVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
M0ZDM0VFMjEzNjc4QjczMDAxMjZBNjUgLyogbGliZ3Rlc3QuYSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGFyY2hpdmUuYXI7IHBhdGggPSBsaWJndGVz
dC5hOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpAQCAtMzA2OSw2ICszMDc0
LDcgQEAKIAkJCQk1MTA0Nzc3NTFEMjk4RTAzMDA5NzQ3RUIgLyogSURCRGVsZXRlUmVjb3Zlcnku
bW0gKi8sCiAJCQkJNTExMEZDRUYxRTAxQ0JBQTAwNkY4RDBCIC8qIElEQkluZGV4VXBncmFkZVRv
VjIubW0gKi8sCiAJCQkJOTNCQ0JDODAyM0NDNkVFODAwQ0EyMjIxIC8qIElEQk9iamVjdFN0b3Jl
SW5mb1VwZ3JhZGVUb1YyLm1tICovLAorCQkJCUVCODdGNkQzMjQ1RjRFNEYwMEUzRTQ5QyAvKiBJ
REJRdW90YUNoZWNrLm1tICovLAogCQkJCTQ5QUVFRjZCMjQwNzM1ODYwMEM4N0U0QyAvKiBJbkFw
cEJyb3dzZXJQcml2YWN5Lm1tICovLAogCQkJCTUxQTU4Nzg0MUQyNzJFRjMwMDRCQTlBRiAvKiBJ
bmRleGVkREJEYXRhYmFzZVByb2Nlc3NLaWxsLm1tICovLAogCQkJCUNBQjBGRjU0MjIzMzJDM0Ew
MDZDQTVCMCAvKiBJbmRleGVkREJGaWxlTmFtZS5tbSAqLywKQEAgLTM1NDMsNiArMzU0OSw3IEBA
CiAJCQkJNTExMEZDRjAxRTAxQ0Q1MzAwNkY4RDBCIC8qIElEQkluZGV4VXBncmFkZVRvVjIuaHRt
bCAqLywKIAkJCQk5M0JDQkM4MTIzQ0M2RUY1MDBDQTIyMjEgLyogSURCT2JqZWN0U3RvcmVJbmZv
VXBncmFkZS5zcWxpdGUzICovLAogCQkJCTkzQkNCQzgyMjNDQzZFRjUwMENBMjIyMSAvKiBJREJP
YmplY3RTdG9yZUluZm9VcGdyYWRlVG9WMi5odG1sICovLAorCQkJCUVCODdGNkQyMjQ1RjRFMkIw
MEUzRTQ5QyAvKiBJREJRdW90YUNoZWNrLmh0bWwgKi8sCiAJCQkJRjQxQUI5OTkxRUY0NjkyQzAw
ODNGQTA4IC8qIGltYWdlLWFuZC1jb250ZW50ZWRpdGFibGUuaHRtbCAqLywKIAkJCQlGNEUwQTJC
MzIxMjIzRjJEMDBBRjdDN0YgLyogaW1hZ2UtYW5kLWZpbGUtdXBsb2FkLmh0bWwgKi8sCiAJCQkJ
RjQxQUI5OTMxRUY0NjkyQzAwODNGQTA4IC8qIGltYWdlLWFuZC10ZXh0YXJlYS5odG1sICovLApA
QCAtNDkyMCw2ICs0OTI3LDcgQEAKIAkJCQk1MTA0Nzc3ODFEMjk5MjNCMDA5NzQ3RUIgLyogSURC
RGVsZXRlUmVjb3ZlcnkubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTEwRkNGQTFFMDFDREI4MDA2
RjhEMEIgLyogSURCSW5kZXhVcGdyYWRlVG9WMi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzQkNC
QzgzMjNDQzZGMkEwMENBMjIyMSAvKiBJREJPYmplY3RTdG9yZUluZm9VcGdyYWRlVG9WMi5tbSBp
biBTb3VyY2VzICovLAorCQkJCUVCODdGNkQ1MjQ1RjRFNjgwMEUzRTQ5QyAvKiBJREJRdW90YUNo
ZWNrLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlBRUVGNkQyNDA3MzU5RDAwQzg3RTRDIC8qIElu
QXBwQnJvd3NlclByaXZhY3kubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MUE1ODc4NjFEMjczQUE5
MDA0QkE5QUYgLyogSW5kZXhlZERCRGF0YWJhc2VQcm9jZXNzS2lsbC5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUNBQjBGRjU1MjIzMzJDNTcwMDZDQTVCMCAvKiBJbmRleGVkREJGaWxlTmFtZS5tbSBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9JREJRdW90YUNoZWNrLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0lEQlF1b3RhQ2hlY2suaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OTBkNmRjZWZhYzY5ZTE4
N2M1MGQ3YjhhYjg3MDk4MGY5ZDFjZGExCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JREJRdW90YUNoZWNrLmh0bWwKQEAgLTAsMCArMSw1
MSBAQAorPHNjcmlwdD4KKworbGV0IGtleSA9IG5ldyBJbnQ4QXJyYXkoMV8wMDApOworbGV0IG9i
aiA9IHsKKyAgICBhOiBuZXcgSW50OEFycmF5KDVfMDAwKSwKKyAgICBiOiBuZXcgSW50OEFycmF5
KDI1XzAwMCksCisgICAgZGF0YTogbmV3IEludDhBcnJheSgxMjVfMDAwKSwKK307CisKK2Z1bmN0
aW9uIG9wZW5JREJBc3luYygpIHsKKyAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJl
amVjdCkgPT4geworICAgICAgICBsZXQgcmVxID0gaW5kZXhlZERCLm9wZW4oJ3Rlc3QtcXVvdGEt
Y2hlY2snKTsKKyAgICAgICAgcmVxLm9udXBncmFkZW5lZWRlZCA9IGUgPT4geworICAgICAgICAg
ICAgbGV0IGRiID0gZS50YXJnZXQucmVzdWx0OworICAgICAgICAgICAgbGV0IHN0b3JlID0gZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ29iamVjdHMnKTsKKworICAgICAgICAgICAgLy8gSW4gb2xkZXIg
V2ViS2l0cywgdGhlIGVzdGltYXRlZCBwdXQgc2l6ZSBzY2FsZWQgd2l0aCB0aGUgbnVtYmVyIG9m
IGluZGljZXMgKDIxMTM2MCkuCisgICAgICAgICAgICBzdG9yZS5jcmVhdGVJbmRleCgnYScsICdh
Jyk7CisgICAgICAgICAgICBzdG9yZS5jcmVhdGVJbmRleCgnYicsICdiJyk7CisgICAgICAgICAg
ICBzdG9yZS5jcmVhdGVJbmRleCgnYycsICdjJyk7CisgICAgICAgICAgICBzdG9yZS5jcmVhdGVJ
bmRleCgnZCcsICdkJyk7CisgICAgICAgICAgICBzdG9yZS5jcmVhdGVJbmRleCgnZScsICdlJyk7
CisKKyAgICAgICAgICAgIHJldHVybiBkYjsKKyAgICAgICAgfQorICAgICAgICByZXEub25zdWNj
ZXNzID0gZSA9PiByZXNvbHZlKGUudGFyZ2V0LnJlc3VsdCk7CisgICAgICAgIHJlcS5vbmVycm9y
ID0gcmVqZWN0OworICAgIH0pOworfQorCitmdW5jdGlvbiBpbnNlcnRSb3dBc3luYyhkYikgewor
ICAgIGxldCB0eG47CisgICAgbGV0IHR4blByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwg
cmVqZWN0KSA9PiB7CisgICAgICAgIHR4biA9IGRiLnRyYW5zYWN0aW9uKCdvYmplY3RzJywgJ3Jl
YWR3cml0ZScpOworICAgICAgICBbdHhuLm9uY29tcGxldGUsIHR4bi5vbmVycm9yXSA9IFtyZXNv
bHZlLCByZWplY3RdOworICAgIH0pOworCisgICAgbGV0IHJlcVByb21pc2UgPSBuZXcgUHJvbWlz
ZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgIGxldCByZXEgPSB0eG4ub2JqZWN0U3Rv
cmUoJ29iamVjdHMnKS5wdXQob2JqLCBrZXkpOworICAgICAgICBbcmVxLm9uc3VjY2VzcywgcmVx
Lm9uZXJyb3JdID0gW3Jlc29sdmUsIHJlamVjdF07CisgICAgfSk7CisKKyAgICByZXR1cm4gUHJv
bWlzZS5hbGwoW3R4blByb21pc2UsIHJlcVByb21pc2VdKS50aGVuKF8gPT4gZGIpOworfQorCitv
cGVuSURCQXN5bmMoKQorICAgIC50aGVuKGluc2VydFJvd0FzeW5jKQorICAgIC50aGVuKF8gPT4g
d2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMudGVzdEhhbmRsZXIucG9zdE1lc3NhZ2UoJ1N1
Y2Nlc3MnKSkKKyAgICAuY2F0Y2goZSA9PiB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50
ZXN0SGFuZGxlci5wb3N0TWVzc2FnZSgnRmFpbGVkIGluc2VydGluZyByb3c6ICcgKyBlLnRhcmdl
dC5lcnJvcikpCisKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9JREJRdW90YUNoZWNrLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9JREJRdW90YUNoZWNrLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlMTE0YTE0NmE4
N2IzYWEzM2Y5YzVmOTBhYTE4MWI5ZDJkNzlkNjEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lEQlF1b3RhQ2hlY2subW0KQEAgLTAsMCAr
MSwxNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2ltcG9ydCAiUGxh
dGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3QuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZp
ZXcuaCIKKyNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgorI2ltcG9ydCA8
V2ViS2l0L1dLVXNlckNvbnRlbnRDb250cm9sbGVyUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0
L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJz
aXRlRGF0YVN0b3JlUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9y
ZVJlZi5oPgorI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgorI2ltcG9ydCA8V2ViS2l0L19XS1By
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L19XS1VzZXJTdHlsZVNo
ZWV0Lmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
aD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworQGludGVyZmFjZSBJREJRdW90YUNoZWNr
TWVzc2FnZUhhbmRsZXIgOiBOU09iamVjdCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4KK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIGJvb2wgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlOworQHBy
b3BlcnR5IChub25hdG9taWMsIHJldGFpbikgV0tTY3JpcHRNZXNzYWdlICpsYXN0U2NyaXB0TWVz
c2FnZTsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIElEQlF1b3RhQ2hlY2tNZXNzYWdlSGFuZGxl
cgorCitAc3ludGhlc2l6ZSByZWNlaXZlZFNjcmlwdE1lc3NhZ2U9X3JlY2VpdmVkU2NyaXB0TWVz
c2FnZTsKK0BzeW50aGVzaXplIGxhc3RTY3JpcHRNZXNzYWdlPV9sYXN0U2NyaXB0TWVzc2FnZTsK
KworLSAodm9pZClkZWFsbG9jCit7CisgICAgW19sYXN0U2NyaXB0TWVzc2FnZSByZWxlYXNlXTsK
KyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKHZvaWQpdXNlckNvbnRlbnRDb250cm9sbGVy
OihXS1VzZXJDb250ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50Q29udHJvbGxlciBkaWRSZWNl
aXZlU2NyaXB0TWVzc2FnZTooV0tTY3JpcHRNZXNzYWdlICopbWVzc2FnZQoreworICAgIF9yZWNl
aXZlZFNjcmlwdE1lc3NhZ2UgPSBZRVM7CisgICAgc2VsZi5sYXN0U2NyaXB0TWVzc2FnZSA9IG1l
c3NhZ2U7Cit9CisKKy0gKGJvb2wgKilyZWNlaXZlZFNjcmlwdE1lc3NhZ2VQb2ludGVyCit7Cisg
ICAgcmV0dXJuICZfcmVjZWl2ZWRTY3JpcHRNZXNzYWdlOworfQorCitAZW5kCisKK0BpbnRlcmZh
Y2UgSURCUXVvdGFDaGVja1dlYlZpZXdEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS1VJRGVsZWdhdGU+
CitAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSB1aW50NjRfdCBjdXJyZW50UXVvdGE7CitA
cHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSB1aW50NjRfdCBjdXJyZW50T3JpZ2luVXNhZ2U7
CitAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSB1aW50NjRfdCBjdXJyZW50RGF0YWJhc2VV
c2FnZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIHVpbnQ2NF90IGV4cGVjdGVkVXNh
Z2U7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBJREJRdW90YUNoZWNrV2ViVmlld0RlbGVnYXRl
CisKK0BzeW50aGVzaXplIGN1cnJlbnRRdW90YT1fY3VycmVudFF1b3RhOworQHN5bnRoZXNpemUg
Y3VycmVudE9yaWdpblVzYWdlPV9jdXJyZW50T3JpZ2luVXNhZ2U7CitAc3ludGhlc2l6ZSBjdXJy
ZW50RGF0YWJhc2VVc2FnZT1fY3VycmVudERhdGFiYXNlVXNhZ2U7CitAc3ludGhlc2l6ZSBleHBl
Y3RlZFVzYWdlPV9leHBlY3RlZFVzYWdlOworCistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IGRlY2lkZURhdGFiYXNlUXVvdGFGb3JTZWN1cml0eU9yaWdpbjooV0tTZWN1cml0
eU9yaWdpbiAqKXNlY3VyaXR5T3JpZ2luIGN1cnJlbnRRdW90YToodW5zaWduZWQgbG9uZyBsb25n
KWN1cnJlbnRRdW90YSBjdXJyZW50T3JpZ2luVXNhZ2U6KHVuc2lnbmVkIGxvbmcgbG9uZyljdXJy
ZW50T3JpZ2luVXNhZ2UgY3VycmVudERhdGFiYXNlVXNhZ2U6KHVuc2lnbmVkIGxvbmcgbG9uZylj
dXJyZW50RGF0YWJhc2VVc2FnZSBleHBlY3RlZFVzYWdlOih1bnNpZ25lZCBsb25nIGxvbmcpZXhw
ZWN0ZWRVc2FnZSBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKHVuc2lnbmVkIGxvbmcgbG9uZyBu
ZXdRdW90YSkpZGVjaXNpb25IYW5kbGVyCit7CisgICAgX2N1cnJlbnRRdW90YSA9IGN1cnJlbnRR
dW90YTsKKyAgICBfY3VycmVudE9yaWdpblVzYWdlID0gY3VycmVudE9yaWdpblVzYWdlOworICAg
IF9jdXJyZW50RGF0YWJhc2VVc2FnZSA9IGN1cnJlbnREYXRhYmFzZVVzYWdlOworICAgIF9leHBl
Y3RlZFVzYWdlID0gZXhwZWN0ZWRVc2FnZTsKKworICAgIGRlY2lzaW9uSGFuZGxlcigxLjEgKiAo
X2N1cnJlbnRPcmlnaW5Vc2FnZSArIF9leHBlY3RlZFVzYWdlKSk7Cit9CisKK0BlbmQKKworVEVT
VChJbmRleGVkREIsIENvbXB1dGVzQWNjdXJhdGVQdXRPcGVyYXRpb25EaXNrVXNhZ2VFc3RpbWF0
ZSkKK3sKKyAgICBfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiAqc3RvcmVDb25maWd1
cmF0aW9uID0gW1tbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
IGF1dG9yZWxlYXNlXTsKKyAgICBzdG9yZUNvbmZpZ3VyYXRpb24ucGVyT3JpZ2luU3RvcmFnZVF1
b3RhID0gMTAwICogMTAwMDsgLy8gZW5vdWdoIHRvIGNyZWF0ZSB0aGUgREIgYnV0IG5vdCBlbm91
Z2ggdG8gcGVyZm9ybSB0aGUgcHV0IG9wZXJhdGlvbgorCisgICAgV0tXZWJzaXRlRGF0YVN0b3Jl
ICpkYXRhU3RvcmUgPSBbW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZp
Z3VyYXRpb246c3RvcmVDb25maWd1cmF0aW9uXSBhdXRvcmVsZWFzZV07CisKKyAgICBfX2Jsb2Nr
IGJvb2wgcmVtb3ZlZERhdGEgPSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIHJlbW92ZURhdGFPZlR5
cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5j
ZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgeworICAgICAgICBy
ZW1vdmVkRGF0YSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZyZW1vdmVkRGF0YSk7CisKKyAgICBSZXRhaW5QdHI8SURCUXVvdGFDaGVja01lc3NhZ2VIYW5k
bGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW0lEQlF1b3RhQ2hlY2tNZXNzYWdlSGFuZGxlciBhbGxv
Y10gaW5pdF0pOworICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1
cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
KyAgICBbY29uZmlndXJhdGlvbiBzZXRXZWJzaXRlRGF0YVN0b3JlOmRhdGFTdG9yZV07CisgICAg
W1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhh
bmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAidGVzdEhhbmRsZXIiXTsKKworICAgIFtbY29uZmln
dXJhdGlvbiBwcm9jZXNzUG9vbF0gX3Rlcm1pbmF0ZU5ldHdvcmtQcm9jZXNzXTsKKworICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5n
ZXQoKV0pOworICAgIAorICAgIGF1dG8gdWlEZWxlZ2F0ZSA9IGFkb3B0TlMoW1tJREJRdW90YUNo
ZWNrV2ViVmlld0RlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcgc2V0VUlEZWxl
Z2F0ZTp1aURlbGVnYXRlLmdldCgpXTsKKworICAgIC8vIE11c3QgYmUgdmlzaWJsZSBmb3IgdGhl
IHF1b3RhIGNhbGxiYWNrIHRvIG9jY3VyLgorI2lmIFBMQVRGT1JNKE1BQykKKyAgICAgICAgW3dl
YlZpZXcuZ2V0KCkud2luZG93IHNldElzVmlzaWJsZTpZRVNdOworI2Vsc2UKKyAgICAgICAgd2Vi
Vmlldy5nZXQoKS53aW5kb3cuaGlkZGVuID0gTk87CisjZW5kaWYKKworICAgIE5TVVJMUmVxdWVz
dCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWlu
QnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIklEQlF1b3RhQ2hlY2siIHdpdGhFeHRlbnNpb246QCJo
dG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKKyAgICBbd2Vi
VmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bihbaGFuZGxlciByZWNlaXZlZFNjcmlwdE1lc3NhZ2VQb2ludGVyXSk7CisgICAgRVhQRUNUX1NU
UkVRKCJTdWNjZXNzIiwgW1tbaGFuZGxlciBsYXN0U2NyaXB0TWVzc2FnZV0gYm9keV0gVVRGOFN0
cmluZ10pOworCisgICAgLy8gU2VlIGtleSBhbmQgb2JqIGluIElEQlF1b3RhQ2hlY2suaHRtbC4K
KyAgICB1aW50NjRfdCBrZXlTaXplID0gMTAwMDsKKyAgICB1aW50NjRfdCBhU2l6ZSA9IDUwMDA7
CisgICAgdWludDY0X3QgYlNpemUgPSAyNTAwMDsKKyAgICB1aW50NjRfdCBkYXRhU2l6ZSA9IDEy
NTAwMDsKKworICAgIHVpbnQ2NF90IGV4cGVjdGVkUm93U2l6ZSA9IGtleVNpemUgKyBhU2l6ZSAr
IGJTaXplICsgZGF0YVNpemU7CisgICAgdWludDY0X3QgZXhwZWN0ZWRJbmRleEFTaXplID0gYVNp
emUgKyBrZXlTaXplOworICAgIHVpbnQ2NF90IGV4cGVjdGVkSW5kZXhCU2l6ZSA9IGJTaXplICsg
a2V5U2l6ZTsKKyAgICB1aW50NjRfdCBleHBlY3RlZFB1dFNpemUgPSBleHBlY3RlZFJvd1NpemUg
KyBleHBlY3RlZEluZGV4QVNpemUgKyBleHBlY3RlZEluZGV4QlNpemU7CisKKyAgICBFWFBFQ1Rf
TkVBUihleHBlY3RlZFB1dFNpemUsIFt1aURlbGVnYXRlIGV4cGVjdGVkVXNhZ2VdLCBleHBlY3Rl
ZFB1dFNpemUgLyAxMCk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398434</attachid>
            <date>2020-05-04 16:33:30 -0700</date>
            <delta_ts>2020-05-04 19:23:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211360-20200504163329.patch</filename>
            <type>text/plain</type>
            <size>53350</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwODQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmY3NGIzNjE3OWVmN2Fk
NWJiMjQ0NjA5NzBlOGYzZGJmODgxZTU1ZC4uYTk4YTQ4ZjdjOTljZjYzY2FkNWQ4YzJhYjc0ZDVk
OTVkMTU0NTJjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIwLTA1LTAzICBCZW4g
TmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIEltcHJvdmUgYWNjdXJhY3kgb2YgSW5k
ZXhlZERCIGVzdGltYXRlZCB3cml0ZSBzaXplIGNvbXB1dGF0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTEzNjAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBjdXJyZW50bHkgZXN0aW1hdGUgdGhl
IHNpemUgb2YgYSBwdXQgaW4gSW5kZXhlZERCIGZvciBxdW90YSBjaGVjayBwdXJwb3NlcyB3aXRo
IHNvbWV0aGluZworICAgICAgICBsaWtlOgorCisgICAgICAgICAgZXN0aW1hdGVkV3JpdGVTaXpl
ID0gKDEgKyBudW1JbmRpY2VzKSAqIChrZXlTaXplICsgdmFsdWVTaXplKQorCisgICAgICAgIEhv
d2V2ZXIsIHRoaXMgY2FuIGxlYWQgdG8gbGFyZ2Ugb3ZlcmVzdGltYXRlcyBvZiB3cml0ZSBzaXpl
cy4gVGhpcyBpcyBiZWNhdXNlIHNlY29uZGFyeQorICAgICAgICBpbmRpY2VzIG9ubHkgc3RvcmUg
YSBtYXBwaW5nIG9mIHNlY29uZGFyeSBpbmRleCBrZXkgPT4gcHJpbWFyeSBrZXk7IHRoZXkgZG8g
bm90IHN0b3JlIHRoZQorICAgICAgICBlbnRpcmUgdmFsdWUuIEluIHRoZSBleGFtcGxlIHNpdGUg
YXR0YWNoZWQgdG8gMjAyMTM3IChhbm90aGVyIERCIHF1b3RhLXJlbGF0ZWQgYnVnKSwgdGhlCisg
ICAgICAgIHRoZSBoZXVyaXN0aWMgZXN0aW1hdGVzIHRoYXQgb25lIG9mIHRoZSBwdXQgb3BlcmF0
aW9ucyB3b3VsZCB1c2UgbW9yZSB0aGFuIDgwMCBNQiB3aGVuIGl0CisgICAgICAgIGFjdHVhbGx5
IHVzZXMgMjIwIE1CLiBUaGlzIGluYWNjdXJhY3kgbGVhZHMgdG8gc3B1cmlvdXMgZGlzayBxdW90
YSBwZXJtaXNzaW9uIG1vZGFscyBiZWluZworICAgICAgICBwcmVzZW50ZWQgaW4gU2FmYXJpLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggaW1wcm92ZXMgdGhlIHdyaXRlIHNpemUgY29tcHV0YXRpb24g
YnkgZ2VuZXJhdGluZyB0aGUgc2Vjb25kYXJ5IGluZGV4IGtleXMgYmVmb3JlCisgICAgICAgIGVz
dGltYXRpbmcgdGhlIHdyaXRlIHNpemUuIFRoZSBwZXJmb3JtYW5jZSBzaG91bGQgYmUgYWJvdXQg
dGhlIHNhbWUgc2luY2Ugd2Ugc2F2ZSB0aGUKKyAgICAgICAgZ2VuZXJhdGVkIGluZGV4IGtleXMg
Zm9yIGxhdGVyIHVzYWdlIHdoZW4gd2UgYWN0dWFsbHkgYWRkIHRoZSByZWNvcmQgdG8gdGhlIERC
LgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6TWVtb3J5SURCQmFja2luZ1N0b3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5SURCQmFja2luZ1N0b3JlOjphZGRSZWNv
cmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJREJCYWNraW5nU3RvcmU6
OnNlcmlhbGl6YXRpb25Db250ZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6TWVtb3J5T2JqZWN0U3RvcmU6OmFkZFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6Ok1lbW9yeU9iamVjdFN0b3JlOjp1cGRhdGVJbmRleGVzRm9yUHV0UmVjb3JkKToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1
cGRhdGVBbGxJbmRleGVzRm9yQWRkUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnNlcmlhbGl6YXRpb25Db250ZXh0KToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3Jl
Lmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6ZXN0aW1hdGVTaXplKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OnB1dE9yQWRkKToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5kZXhLZXkuaDoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMv
SURCQmluZGluZ1V0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZW5lcmF0ZUluZGV4
S2V5TWFwRm9yVmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRp
ZXMuaDoKKwogMjAyMC0wNC0yOCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXdyaXRlIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlU3VibGF5ZXJMaXN0
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDY1YzdjYWY3ZmYxYTIzZjZiZDkyZjE1MTIxYzMwOTA5
NWZlYmMzZDYuLjg2MDg0OTM1MDEwMjNhOGYyZjA3NzQzY2Q3MzUzOGY5OWI3NzVjZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQpAQCAtNjgsNiArNjgsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1F
V09SS19IRUFERVJTCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFi
YXNlQ29ubmVjdGlvbi5oCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb24uaAogCisgICAgTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luZGV4
S2V5LmgKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCQ3Vyc29ySW5mby5oCiAgICAg
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkN1cnNvclJlY29yZC5oCiAgICAgTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0lEQkRhdGFiYXNlSW5mby5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmgKaW5kZXgg
YTdkZjdhMWRjZDYwNzVkZGE0NTEwOTBhYTkzMDM3YWU4MjFjZGJmNC4uODg4OWFiMGI0NDIyZWYz
N2Y5ZjY2NWNmYjdkZmIzMWI3ZjY2ZWY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJCYWNraW5nU3RvcmUuaApAQCAtMjksNiAr
MjksNyBAQAogCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VJbmZvLmgiCiAjaW5jbHVkZSAiSURCRXJy
b3IuaCIKKyNpbmNsdWRlICJJbmRleEtleS5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU2LDYgKzU3LDggQEAgZW51bSBjbGFzcyBJbmRl
eFJlY29yZFR5cGU7CiAKIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewogCitjbGFzcyBJREJTZXJpYWxp
emF0aW9uQ29udGV4dDsKKwogY2xhc3MgSURCQmFja2luZ1N0b3JlIHsKIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5JREJCYWNraW5nU3RvcmUoKSB7IFJFTEVBU0VfQVNTRVJUKCFpc01haW5UaHJlYWQo
KSk7IH0KQEAgLTc1LDcgKzc4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSURCRXJyb3IgcmVu
YW1lSW5kZXgoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZp
ZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpID0gMDsKICAgICB2aXJ0dWFsIElEQkVycm9yIGtl
eUV4aXN0c0luT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2Fj
dGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgSURC
S2V5RGF0YSYsIGJvb2wmIGtleUV4aXN0cykgPSAwOwogICAgIHZpcnR1YWwgSURCRXJyb3IgZGVs
ZXRlUmFuZ2UoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZp
ZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgSURCS2V5UmFuZ2VEYXRh
JikgPSAwOwotICAgIHZpcnR1YWwgSURCRXJyb3IgYWRkUmVjb3JkKGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJPYmplY3RTdG9yZUlu
Zm8mLCBjb25zdCBJREJLZXlEYXRhJiwgY29uc3QgSURCVmFsdWUmKSA9IDA7CisgICAgdmlydHVh
bCBJREJFcnJvciBhZGRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2Fj
dGlvbklkZW50aWZpZXIsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYsIGNvbnN0IElEQktleURh
dGEmLCBjb25zdCBJbmRleElEVG9JbmRleEtleU1hcCYsIGNvbnN0IElEQlZhbHVlJikgPSAwOwog
ICAgIHZpcnR1YWwgSURCRXJyb3IgZ2V0UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIs
IGNvbnN0IElEQktleVJhbmdlRGF0YSYsIElEQkdldFJlY29yZERhdGFUeXBlLCBJREJHZXRSZXN1
bHQmIG91dFZhbHVlKSA9IDA7CiAgICAgdmlydHVhbCBJREJFcnJvciBnZXRBbGxSZWNvcmRzKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJ
REJHZXRBbGxSZWNvcmRzRGF0YSYsIElEQkdldEFsbFJlc3VsdCYgb3V0VmFsdWUpID0gMDsKICAg
ICB2aXJ0dWFsIElEQkVycm9yIGdldEluZGV4UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZp
ZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgSW5kZXhlZERCOjpJbmRleFJlY29yZFR5cGUs
IGNvbnN0IElEQktleVJhbmdlRGF0YSYsIElEQkdldFJlc3VsdCYgb3V0VmFsdWUpID0gMDsKQEAg
LTg2LDYgKzg5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgSURCRXJyb3Igb3BlbkN1cnNvcihj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3Qg
SURCQ3Vyc29ySW5mbyYsIElEQkdldFJlc3VsdCYgb3V0UmVzdWx0KSA9IDA7CiAgICAgdmlydHVh
bCBJREJFcnJvciBpdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJh
bnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIGN1cnNvcklk
ZW50aWZpZXIsIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJiwgSURCR2V0UmVzdWx0JiBvdXRS
ZXN1bHQpID0gMDsKIAorICAgIHZpcnR1YWwgSURCU2VyaWFsaXphdGlvbkNvbnRleHQmIHNlcmlh
bGl6YXRpb25Db250ZXh0KCkgPSAwOworCiAgICAgdmlydHVhbCBJREJPYmplY3RTdG9yZUluZm8q
IGluZm9Gb3JPYmplY3RTdG9yZSh1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQmFja2luZ1N0b3JlKCkgPSAwOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2lu
Z1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1v
cnlJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDQwMWNlM2QyYjE2MWJhZDNlNzkzOTc3MTdlZDVl
Mjg4NzcwNDI2MmUuLjBmNGIzNWM5NGExOWU2ODVkYzVkYjJjNWI1NDdiMzJlZTE4ZmEyN2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJ
REJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5j
bHVkZSAiSURCSW5kZXhJbmZvLmgiCiAjaW5jbHVkZSAiSURCSXRlcmF0ZUN1cnNvckRhdGEuaCIK
ICNpbmNsdWRlICJJREJLZXlSYW5nZURhdGEuaCIKKyNpbmNsdWRlICJJREJTZXJpYWxpemF0aW9u
Q29udGV4dC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZW1vcnlJbmRleEN1
cnNvci5oIgogI2luY2x1ZGUgIk1lbW9yeU9iamVjdFN0b3JlLmgiCkBAIC00OSw2ICs1MCw3IEBA
IGNvbnN0ZXhwciB1aW50NjRfdCBtYXhHZW5lcmF0ZWRLZXlWYWx1ZSA9IDB4MjAwMDAwMDAwMDAw
MDA7CiBNZW1vcnlJREJCYWNraW5nU3RvcmU6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmll
cikKICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgICwgbV9zZXNzaW9uSUQoc2Vz
c2lvbklEKQorICAgICwgbV9zZXJpYWxpemF0aW9uQ29udGV4dChJREJTZXJpYWxpemF0aW9uQ29u
dGV4dDo6Z2V0T3JDcmVhdGVJREJTZXJpYWxpemF0aW9uQ29udGV4dChzZXNzaW9uSUQpKQogewog
fQogCkBAIC0zNTUsNyArMzU3LDcgQEAgSURCRXJyb3IgTWVtb3J5SURCQmFja2luZ1N0b3JlOjpk
ZWxldGVSYW5nZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWMKICAgICByZXR1
cm4gSURCRXJyb3IgeyB9OwogfQogCi1JREJFcnJvciBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmFk
ZFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmll
ciwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBvYmplY3RTdG9yZUluZm8sIGNvbnN0IElEQktl
eURhdGEmIGtleURhdGEsIGNvbnN0IElEQlZhbHVlJiB2YWx1ZSkKK0lEQkVycm9yIE1lbW9yeUlE
QkJhY2tpbmdTdG9yZTo6YWRkUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJh
bnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIG9iamVjdFN0b3Jl
SW5mbywgY29uc3QgSURCS2V5RGF0YSYga2V5RGF0YSwgY29uc3QgSW5kZXhJRFRvSW5kZXhLZXlN
YXAmIGluZGV4S2V5cywgY29uc3QgSURCVmFsdWUmIHZhbHVlKQogewogICAgIExPRyhJbmRleGVk
REIsICJNZW1vcnlJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZCIpOwogCkBAIC0zNjksNyArMzcx
LDcgQEAgSURCRXJyb3IgTWVtb3J5SURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQoY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICBpZiAoIW9iamVjdFN0b3JlKQogICAg
ICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJObyBiYWNraW5nIHN0b3JlIG9i
amVjdCBzdG9yZSBmb3VuZCB0byBwdXQgcmVjb3JkIl9zIH07CiAKLSAgICByZXR1cm4gb2JqZWN0
U3RvcmUtPmFkZFJlY29yZCgqdHJhbnNhY3Rpb24sIGtleURhdGEsIHZhbHVlKTsKKyAgICByZXR1
cm4gb2JqZWN0U3RvcmUtPmFkZFJlY29yZCgqdHJhbnNhY3Rpb24sIGtleURhdGEsIGluZGV4S2V5
cywgdmFsdWUpOwogfQogCiBJREJFcnJvciBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmdldFJlY29y
ZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWlu
dDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdl
LCBJREJHZXRSZWNvcmREYXRhVHlwZSB0eXBlLCBJREJHZXRSZXN1bHQmIG91dFZhbHVlKQpAQCAt
NjExLDYgKzYxMywxMSBAQCBSZWZQdHI8TWVtb3J5T2JqZWN0U3RvcmU+IE1lbW9yeUlEQkJhY2tp
bmdTdG9yZTo6dGFrZU9iamVjdFN0b3JlQnlJZGVudGlmaWVyKHVpbgogICAgIHJldHVybiBvYmpl
Y3RTdG9yZUJ5SWRlbnRpZmllcjsKIH0KIAorSURCU2VyaWFsaXphdGlvbkNvbnRleHQmIE1lbW9y
eUlEQkJhY2tpbmdTdG9yZTo6c2VyaWFsaXphdGlvbkNvbnRleHQoKQoreworICAgIHJldHVybiBt
X3NlcmlhbGl6YXRpb25Db250ZXh0LmdldCgpOworfQorCiBJREJPYmplY3RTdG9yZUluZm8qIE1l
bW9yeUlEQkJhY2tpbmdTdG9yZTo6aW5mb0Zvck9iamVjdFN0b3JlKHVpbnQ2NF90IG9iamVjdFN0
b3JlSWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQobV9kYXRhYmFzZUluZm8pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tp
bmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9y
eUlEQkJhY2tpbmdTdG9yZS5oCmluZGV4IDc0ZGM5NTA5NDVhNmVmNGI4ZWI1NzJhOGJkNGQxNWRk
YTUyYjhmYjUuLmI5NjkyMjY1M2I1MWNhODU5MWE0M2M4YTY4YmYxOWVjMjdmYTczZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJC
YWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJJ
REJCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUlkZW50aWZpZXIuaCIKICNp
bmNsdWRlICJJREJSZXNvdXJjZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJJbmRleEtleS5oIgog
I2luY2x1ZGUgIk1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSA8cGFs
L1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC0zNyw2ICszOCw3IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgSURCU2VydmVyIHsKIAorY2xhc3MgSURC
U2VyaWFsaXphdGlvbkNvbnRleHQ7CiBjbGFzcyBNZW1vcnlPYmplY3RTdG9yZTsKIAogY2xhc3Mg
TWVtb3J5SURCQmFja2luZ1N0b3JlIGZpbmFsIDogcHVibGljIElEQkJhY2tpbmdTdG9yZSB7CkBA
IC01MSw2ICs1Myw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZU9iamVjdFN0b3JlRm9yVmVy
c2lvbkNoYW5nZUFib3J0KE1lbW9yeU9iamVjdFN0b3JlJik7CiAgICAgdm9pZCByZXN0b3JlT2Jq
ZWN0U3RvcmVGb3JWZXJzaW9uQ2hhbmdlQWJvcnQoUmVmPE1lbW9yeU9iamVjdFN0b3JlPiYmKTsK
IAorICAgIElEQlNlcmlhbGl6YXRpb25Db250ZXh0JiBzZXJpYWxpemF0aW9uQ29udGV4dCgpIGZp
bmFsOworCiBwcml2YXRlOgogICAgIElEQkVycm9yIGJlZ2luVHJhbnNhY3Rpb24oY29uc3QgSURC
VHJhbnNhY3Rpb25JbmZvJikgZmluYWw7CiAgICAgSURCRXJyb3IgYWJvcnRUcmFuc2FjdGlvbihj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikgZmluYWw7
CkBAIC02NCw3ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgSURCRXJyb3IgcmVuYW1lSW5kZXgoY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90
IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIG5ld05hbWUpIGZpbmFsOwogICAgIElEQkVycm9yIGtleUV4aXN0c0luT2JqZWN0U3Rv
cmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVp
bnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgSURCS2V5RGF0YSYsIGJvb2wmIGtl
eUV4aXN0cykgZmluYWw7CiAgICAgSURCRXJyb3IgZGVsZXRlUmFuZ2UoY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJikgZmluYWw7Ci0gICAgSURCRXJyb3Ig
YWRkUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlm
aWVyLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mLCBjb25zdCBJREJLZXlEYXRhJiwgY29uc3Qg
SURCVmFsdWUmKSBmaW5hbDsKKyAgICBJREJFcnJvciBhZGRSZWNvcmQoY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQk9iamVjdFN0b3Jl
SW5mbyYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJbmRleElEVG9JbmRleEtleU1hcCYsIGNv
bnN0IElEQlZhbHVlJikgZmluYWw7CiAgICAgSURCRXJyb3IgZ2V0UmVjb3JkKGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RT
dG9yZUlkZW50aWZpZXIsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIElEQkdldFJlY29yZERhdGFU
eXBlLCBJREJHZXRSZXN1bHQmIG91dFZhbHVlKSBmaW5hbDsKICAgICBJREJFcnJvciBnZXRBbGxS
ZWNvcmRzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVy
LCBjb25zdCBJREJHZXRBbGxSZWNvcmRzRGF0YSYsIElEQkdldEFsbFJlc3VsdCYgb3V0VmFsdWUp
IGZpbmFsOwogICAgIElEQkVycm9yIGdldEluZGV4UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgSW5kZXhlZERCOjpJbmRleFJlY29yZFR5
cGUsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIElEQkdldFJlc3VsdCYgb3V0VmFsdWUpIGZpbmFs
OwpAQCAtOTIsNiArOTYsNyBAQCBwcml2YXRlOgogCiAgICAgSURCRGF0YWJhc2VJZGVudGlmaWVy
IG1faWRlbnRpZmllcjsKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKKyAgICBSZWY8
SURCU2VyaWFsaXphdGlvbkNvbnRleHQ+IG1fc2VyaWFsaXphdGlvbkNvbnRleHQ7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gbV9kYXRhYmFzZUluZm87CiAKICAgICBIYXNo
TWFwPElEQlJlc291cmNlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPE1lbW9yeUJhY2tpbmdT
dG9yZVRyYW5zYWN0aW9uPj4gbV90cmFuc2FjdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNw
cAppbmRleCA3MTU1YjU5N2E0MjBmNTllMTM5NWI5MjgxZGU4YzJkNjRkYWE4NzExLi40MjNmMDg3
YWRiMjQ2NWJmNGY5NzNjNDFlNWExNTRlNjI2YWYwYzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9y
ZS5jcHAKQEAgLTI1MSw2ICsyNTEsMTIgQEAgdm9pZCBNZW1vcnlPYmplY3RTdG9yZTo6ZGVsZXRl
UmFuZ2UoY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBpbnB1dFJhbmdlKQogfQogCiBJREJFcnJvciBN
ZW1vcnlPYmplY3RTdG9yZTo6YWRkUmVjb3JkKE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
JiB0cmFuc2FjdGlvbiwgY29uc3QgSURCS2V5RGF0YSYga2V5RGF0YSwgY29uc3QgSURCVmFsdWUm
IHZhbHVlKQoreworICAgIGF1dG8gaW5kZXhLZXlzID0gZ2VuZXJhdGVJbmRleEtleU1hcEZvclZh
bHVlKG1fc2VyaWFsaXphdGlvbkNvbnRleHQtPmV4ZWNTdGF0ZSgpLCBtX2luZm8sIGtleURhdGEs
IHZhbHVlKTsKKyAgICByZXR1cm4gYWRkUmVjb3JkKHRyYW5zYWN0aW9uLCBrZXlEYXRhLCBpbmRl
eEtleXMsIHZhbHVlKTsKK30KKworSURCRXJyb3IgTWVtb3J5T2JqZWN0U3RvcmU6OmFkZFJlY29y
ZChNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IElEQktl
eURhdGEmIGtleURhdGEsIGNvbnN0IEluZGV4SURUb0luZGV4S2V5TWFwJiBpbmRleEtleXMsIGNv
bnN0IElEQlZhbHVlJiB2YWx1ZSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiTWVtb3J5T2JqZWN0
U3RvcmU6OmFkZFJlY29yZCIpOwogCkBAIC0yNzEsNyArMjc3LDcgQEAgSURCRXJyb3IgTWVtb3J5
T2JqZWN0U3RvcmU6OmFkZFJlY29yZChNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbiYgdHJh
bnNhY3Rpb24KICAgICBBU1NFUlQobGlzdFJlc3VsdC5zZWNvbmQpOwogCiAgICAgLy8gSWYgdGhl
cmUgd2FzIGFuIGVycm9yIGluZGV4aW5nIHRoaXMgYWRkaXRpb24sIHRoZW4gcmV2ZXJ0IGl0Lgot
ICAgIGF1dG8gZXJyb3IgPSB1cGRhdGVJbmRleGVzRm9yUHV0UmVjb3JkKGtleURhdGEsIHZhbHVl
LmRhdGEoKSk7CisgICAgYXV0byBlcnJvciA9IHVwZGF0ZUluZGV4ZXNGb3JQdXRSZWNvcmQoa2V5
RGF0YSwgaW5kZXhLZXlzKTsKICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7CiAgICAgICAgIG1f
a2V5VmFsdWVTdG9yZS0+cmVtb3ZlKG1hcFJlc3VsdC5pdGVyYXRvcik7CiAgICAgICAgIG1fb3Jk
ZXJlZEtleXMtPmVyYXNlKGxpc3RSZXN1bHQuZmlyc3QpOwpAQCAtMjk5LDI5ICszMDUsMjQgQEAg
dm9pZCBNZW1vcnlPYmplY3RTdG9yZTo6dXBkYXRlSW5kZXhlc0ZvckRlbGV0ZVJlY29yZChjb25z
dCBJREJLZXlEYXRhJiB2YWx1ZSkKICAgICAgICAgaW5kZXgtPnJlbW92ZUVudHJpZXNXaXRoVmFs
dWVLZXkodmFsdWUpOwogfQogCi1JREJFcnJvciBNZW1vcnlPYmplY3RTdG9yZTo6dXBkYXRlSW5k
ZXhlc0ZvclB1dFJlY29yZChjb25zdCBJREJLZXlEYXRhJiBrZXksIGNvbnN0IFRocmVhZFNhZmVE
YXRhQnVmZmVyJiB2YWx1ZSkKK0lEQkVycm9yIE1lbW9yeU9iamVjdFN0b3JlOjp1cGRhdGVJbmRl
eGVzRm9yUHV0UmVjb3JkKGNvbnN0IElEQktleURhdGEmIGtleSwgY29uc3QgSW5kZXhJRFRvSW5k
ZXhLZXlNYXAmIGluZGV4S2V5cykKIHsKLSAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKG1fc2VyaWFs
aXphdGlvbkNvbnRleHQtPnZtKCkpOwotCi0gICAgYXV0byBqc1ZhbHVlID0gZGVzZXJpYWxpemVJ
REJWYWx1ZVRvSlNWYWx1ZShtX3NlcmlhbGl6YXRpb25Db250ZXh0LT5leGVjU3RhdGUoKSwgdmFs
dWUpOwotICAgIGlmIChqc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVy
biBJREJFcnJvciB7IH07Ci0KICAgICBJREJFcnJvciBlcnJvcjsKICAgICBWZWN0b3I8c3RkOjpw
YWlyPE1lbW9yeUluZGV4KiwgSW5kZXhLZXk+PiBjaGFuZ2VkSW5kZXhSZWNvcmRzOwogCi0gICAg
Zm9yIChhdXRvJiBpbmRleCA6IG1faW5kZXhlc0J5TmFtZS52YWx1ZXMoKSkgewotICAgICAgICBJ
bmRleEtleSBpbmRleEtleTsKLSAgICAgICAgZ2VuZXJhdGVJbmRleEtleUZvclZhbHVlKG1fc2Vy
aWFsaXphdGlvbkNvbnRleHQtPmV4ZWNTdGF0ZSgpLCBpbmRleC0+aW5mbygpLCBqc1ZhbHVlLCBp
bmRleEtleSwgbV9pbmZvLmtleVBhdGgoKSwga2V5KTsKLQotICAgICAgICBpZiAoaW5kZXhLZXku
aXNOdWxsKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIFtp
bmRleElELCBpbmRleEtleV0gOiBpbmRleEtleXMpIHsKKyAgICAgICAgYXV0byogaW5kZXggPSBt
X2luZGV4ZXNCeUlkZW50aWZpZXIuZ2V0KGluZGV4SUQpOworICAgICAgICBBU1NFUlQoaW5kZXgp
OworICAgICAgICBpZiAoIWluZGV4KSB7CisgICAgICAgICAgICBlcnJvciA9IElEQkVycm9yIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJNaXNzaW5nIGluZGV4IG1ldGFkYXRhIiB9OworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KIAogICAgICAgICBlcnJvciA9IGluZGV4LT5wdXRJbmRleEtl
eShrZXksIGluZGV4S2V5KTsKICAgICAgICAgaWYgKCFlcnJvci5pc051bGwoKSkKICAgICAgICAg
ICAgIGJyZWFrOwogCi0gICAgICAgIGNoYW5nZWRJbmRleFJlY29yZHMuYXBwZW5kKHN0ZDo6bWFr
ZV9wYWlyKGluZGV4LmdldCgpLCBpbmRleEtleSkpOworICAgICAgICBjaGFuZ2VkSW5kZXhSZWNv
cmRzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihpbmRleCwgaW5kZXhLZXkpKTsKICAgICB9CiAKICAg
ICAvLyBJZiBhbnkgb2YgdGhlIGluZGV4IHB1dHMgZmFpbGVkLCByZXZlcnQgYWxsIG9mIHRoZSBv
bmVzIHRoYXQgd2VudCB0aHJvdWdoLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaAppbmRleCBhYzcwMTA4
OWJjNGIxNWY3NzY1MTFlMTM4OGI2ZGZiMDdjMmRmYjA2Li5iMTUwMjk5Mzk1YzFhZWI1ZjFjNDA1
OTI4Nzk4YzQ3MDM3MDAxMTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaApAQCAtMjksNiArMjks
NyBAQAogCiAjaW5jbHVkZSAiSURCS2V5RGF0YS5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3Jl
SW5mby5oIgorI2luY2x1ZGUgIkluZGV4S2V5LmgiCiAjaW5jbHVkZSAiTWVtb3J5SW5kZXguaCIK
ICNpbmNsdWRlICJNZW1vcnlPYmplY3RTdG9yZUN1cnNvci5oIgogI2luY2x1ZGUgIlRocmVhZFNh
ZmVEYXRhQnVmZmVyLmgiCkBAIC04MCw2ICs4MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0
ZVJlY29yZChjb25zdCBJREJLZXlEYXRhJik7CiAgICAgdm9pZCBkZWxldGVSYW5nZShjb25zdCBJ
REJLZXlSYW5nZURhdGEmKTsKICAgICBJREJFcnJvciBhZGRSZWNvcmQoTWVtb3J5QmFja2luZ1N0
b3JlVHJhbnNhY3Rpb24mLCBjb25zdCBJREJLZXlEYXRhJiwgY29uc3QgSURCVmFsdWUmKTsKKyAg
ICBJREJFcnJvciBhZGRSZWNvcmQoTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24mLCBjb25z
dCBJREJLZXlEYXRhJiwgY29uc3QgSW5kZXhJRFRvSW5kZXhLZXlNYXAmLCBjb25zdCBJREJWYWx1
ZSYpOwogCiAgICAgdWludDY0X3QgY3VycmVudEtleUdlbmVyYXRvclZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV9rZXlHZW5lcmF0b3JWYWx1ZTsgfQogICAgIHZvaWQgc2V0S2V5R2VuZXJhdG9yVmFs
dWUodWludDY0X3QgdmFsdWUpIHsgbV9rZXlHZW5lcmF0b3JWYWx1ZSA9IHZhbHVlOyB9CkBAIC0x
MTQsNyArMTE2LDcgQEAgcHJpdmF0ZToKICAgICBJREJLZXlEYXRhU2V0OjppdGVyYXRvciBsb3dl
c3RJdGVyYXRvckluUmFuZ2UoY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgYm9vbCByZXZlcnNlKSBj
b25zdDsKIAogICAgIElEQkVycm9yIHBvcHVsYXRlSW5kZXhXaXRoRXhpc3RpbmdSZWNvcmRzKE1l
bW9yeUluZGV4Jik7Ci0gICAgSURCRXJyb3IgdXBkYXRlSW5kZXhlc0ZvclB1dFJlY29yZChjb25z
dCBJREJLZXlEYXRhJiwgY29uc3QgVGhyZWFkU2FmZURhdGFCdWZmZXImIHZhbHVlKTsKKyAgICBJ
REJFcnJvciB1cGRhdGVJbmRleGVzRm9yUHV0UmVjb3JkKGNvbnN0IElEQktleURhdGEmLCBjb25z
dCBJbmRleElEVG9JbmRleEtleU1hcCYpOwogICAgIHZvaWQgdXBkYXRlSW5kZXhlc0ZvckRlbGV0
ZVJlY29yZChjb25zdCBJREJLZXlEYXRhJiB2YWx1ZSk7CiAgICAgdm9pZCB1cGRhdGVDdXJzb3Jz
Rm9yUHV0UmVjb3JkKElEQktleURhdGFTZXQ6Oml0ZXJhdG9yKTsKICAgICB2b2lkIHVwZGF0ZUN1
cnNvcnNGb3JEZWxldGVSZWNvcmQoY29uc3QgSURCS2V5RGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURC
QmFja2luZ1N0b3JlLmNwcAppbmRleCA1NjNkZWE4ODBmYTg3OGY1NDIyOTgwZGM3YWZiM2VhNDg5
OTg1MjI3Li42YzVlYWQ0Y2FlNjY1ZWVlNDIxYzljNjVjMjZlYjRkN2UwNTNiYmUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFj
a2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApAQCAtMTg0OCwyNCArMTg0OCwyMiBAQCBJREJF
cnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVwZGF0ZU9uZUluZGV4Rm9yQWRkUmVjb3JkKGNv
bnN0IElEQkluZGV4SW5mbyYgaQogICAgIHJldHVybiB1bmNoZWNrZWRQdXRJbmRleEtleShpbmZv
LCBrZXksIGluZGV4S2V5LCByZWNvcmRJRCk7CiB9CiAKLUlEQkVycm9yIFNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6dXBkYXRlQWxsSW5kZXhlc0ZvckFkZFJlY29yZChjb25zdCBJREJPYmplY3RTdG9y
ZUluZm8mIGluZm8sIGNvbnN0IElEQktleURhdGEmIGtleSwgY29uc3QgVGhyZWFkU2FmZURhdGFC
dWZmZXImIHZhbHVlLCBpbnQ2NF90IHJlY29yZElEKQorSURCRXJyb3IgU1FMaXRlSURCQmFja2lu
Z1N0b3JlOjp1cGRhdGVBbGxJbmRleGVzRm9yQWRkUmVjb3JkKGNvbnN0IElEQk9iamVjdFN0b3Jl
SW5mbyYgaW5mbywgY29uc3QgSURCS2V5RGF0YSYga2V5LCBjb25zdCBJbmRleElEVG9JbmRleEtl
eU1hcCYgaW5kZXhLZXlzLCBpbnQ2NF90IHJlY29yZElEKQogewotICAgIEpTTG9ja0hvbGRlciBs
b2NrZXIobV9zZXJpYWxpemF0aW9uQ29udGV4dC0+dm0oKSk7Ci0KLSAgICBhdXRvIGpzVmFsdWUg
PSBkZXNlcmlhbGl6ZUlEQlZhbHVlVG9KU1ZhbHVlKG1fc2VyaWFsaXphdGlvbkNvbnRleHQtPmV4
ZWNTdGF0ZSgpLCB2YWx1ZSk7Ci0gICAgaWYgKGpzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkK
LSAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgfTsKLQogICAgIElEQkVycm9yIGVycm9yOworICAg
IGNvbnN0IGF1dG8mIGluZGV4TWFwID0gaW5mby5pbmRleE1hcCgpOwogICAgIGJvb2wgYW55UmVj
b3Jkc1N1Y2NlZWRlZCA9IGZhbHNlOwotICAgIGZvciAoYXV0byYgaW5kZXggOiBpbmZvLmluZGV4
TWFwKCkudmFsdWVzKCkpIHsKLSAgICAgICAgSW5kZXhLZXkgaW5kZXhLZXk7Ci0gICAgICAgIGdl
bmVyYXRlSW5kZXhLZXlGb3JWYWx1ZShtX3NlcmlhbGl6YXRpb25Db250ZXh0LT5leGVjU3RhdGUo
KSwgaW5kZXgsIGpzVmFsdWUsIGluZGV4S2V5LCBpbmZvLmtleVBhdGgoKSwga2V5KTsKIAotICAg
ICAgICBpZiAoaW5kZXhLZXkuaXNOdWxsKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKKyAgICBm
b3IgKGNvbnN0IGF1dG8mIFtpbmRleElELCBpbmRleEtleV0gOiBpbmRleEtleXMpIHsKKyAgICAg
ICAgYXV0byBpbmRleEl0ZXJhdG9yID0gaW5kZXhNYXAuZmluZChpbmRleElEKTsKKyAgICAgICAg
QVNTRVJUKGluZGV4SXRlcmF0b3IgIT0gaW5kZXhNYXAuZW5kKCkpOwogCi0gICAgICAgIGVycm9y
ID0gdW5jaGVja2VkUHV0SW5kZXhLZXkoaW5kZXgsIGtleSwgaW5kZXhLZXksIHJlY29yZElEKTsK
KyAgICAgICAgaWYgKGluZGV4SXRlcmF0b3IgPT0gaW5kZXhNYXAuZW5kKCkpIHsKKyAgICAgICAg
ICAgIGVycm9yID0gSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIk1pc3NpbmcgaW5kZXgg
bWV0YWRhdGEiIH07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGVy
cm9yID0gdW5jaGVja2VkUHV0SW5kZXhLZXkoaW5kZXhJdGVyYXRvci0+dmFsdWUsIGtleSwgaW5k
ZXhLZXksIHJlY29yZElEKTsKICAgICAgICAgaWYgKCFlcnJvci5pc051bGwoKSkKICAgICAgICAg
ICAgIGJyZWFrOwogCkBAIC0xODg3LDcgKzE4ODUsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNr
aW5nU3RvcmU6OnVwZGF0ZUFsbEluZGV4ZXNGb3JBZGRSZWNvcmQoY29uc3QgSURCT2JqZWN0U3Rv
cgogICAgIHJldHVybiBlcnJvcjsKIH0KIAotSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3Jl
OjphZGRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50
aWZpZXIsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgb2JqZWN0U3RvcmVJbmZvLCBjb25zdCBJ
REJLZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBJREJWYWx1ZSYgdmFsdWUpCitJREJFcnJvciBTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBvYmplY3RT
dG9yZUluZm8sIGNvbnN0IElEQktleURhdGEmIGtleURhdGEsIGNvbnN0IEluZGV4SURUb0luZGV4
S2V5TWFwJiBpbmRleEtleXMsIGNvbnN0IElEQlZhbHVlJiB2YWx1ZSkKIHsKICAgICBMT0coSW5k
ZXhlZERCLCAiU1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQgLSBrZXkgJXMsIG9iamVj
dCBzdG9yZSAlIiBQUkl1NjQsIGtleURhdGEubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCks
IG9iamVjdFN0b3JlSW5mby5pZGVudGlmaWVyKCkpOwogCkBAIC0xOTI2LDcgKzE5MjQsNyBAQCBJ
REJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZChjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgICAgICByZWNvcmRJRCA9IG1fc3FsaXRlREItPmxh
c3RJbnNlcnRSb3dJRCgpOwogICAgIH0KIAotICAgIGF1dG8gZXJyb3IgPSB1cGRhdGVBbGxJbmRl
eGVzRm9yQWRkUmVjb3JkKG9iamVjdFN0b3JlSW5mbywga2V5RGF0YSwgdmFsdWUuZGF0YSgpLCBy
ZWNvcmRJRCk7CisgICAgYXV0byBlcnJvciA9IHVwZGF0ZUFsbEluZGV4ZXNGb3JBZGRSZWNvcmQo
b2JqZWN0U3RvcmVJbmZvLCBrZXlEYXRhLCBpbmRleEtleXMsIHJlY29yZElEKTsKIAogICAgIGlm
ICghZXJyb3IuaXNOdWxsKCkpIHsKICAgICAgICAgYXV0byogc3FsID0gY2FjaGVkU3RhdGVtZW50
KFNRTDo6RGVsZXRlT2JqZWN0U3RvcmVSZWNvcmQsICJERUxFVEUgRlJPTSBSZWNvcmRzIFdIRVJF
IG9iamVjdFN0b3JlSUQgPSA/IEFORCBrZXkgPSBDQVNUKD8gQVMgVEVYVCk7Il9zKTsKQEAgLTI3
MzMsNiArMjczMSwxMSBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6Oml0ZXJhdGVD
dXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFucwogICAgIHJldHVybiBJREJF
cnJvciB7IH07CiB9CiAKK0lEQlNlcmlhbGl6YXRpb25Db250ZXh0JiBTUUxpdGVJREJCYWNraW5n
U3RvcmU6OnNlcmlhbGl6YXRpb25Db250ZXh0KCkKK3sKKyAgICByZXR1cm4gbV9zZXJpYWxpemF0
aW9uQ29udGV4dC5nZXQoKTsKK30KKwogSURCT2JqZWN0U3RvcmVJbmZvKiBTUUxpdGVJREJCYWNr
aW5nU3RvcmU6OmluZm9Gb3JPYmplY3RTdG9yZSh1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZp
ZXIpCiB7CiAgICAgQVNTRVJUKG1fZGF0YWJhc2VJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5n
U3RvcmUuaAppbmRleCA0OTQwYzE1MTYxMTA0YWQ5Njk1OGZkMjM0MzdkYWM2OTk0MGNjNzE4Li5i
YjA1N2Q5NTE4Y2YwZjdiZTc5MDZjNzNmM2ViZmViOGI4YzJhMTQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3Jl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlE
QkJhY2tpbmdTdG9yZS5oCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICBJREJFcnJvciBy
ZW5hbWVJbmRleChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRp
ZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSkgZmluYWw7CiAgICAgSURCRXJyb3Iga2V5RXhp
c3RzSW5PYmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9u
SWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBJREJLZXlE
YXRhJiwgYm9vbCYga2V5RXhpc3RzKSBmaW5hbDsKICAgICBJREJFcnJvciBkZWxldGVSYW5nZShj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0
X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKSBmaW5hbDsK
LSAgICBJREJFcnJvciBhZGRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFu
c2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYsIGNvbnN0IElEQktl
eURhdGEmLCBjb25zdCBJREJWYWx1ZSYpIGZpbmFsOworICAgIElEQkVycm9yIGFkZFJlY29yZChj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3Qg
SURCT2JqZWN0U3RvcmVJbmZvJiwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IEluZGV4SURUb0lu
ZGV4S2V5TWFwJiwgY29uc3QgSURCVmFsdWUmKSBmaW5hbDsKICAgICBJREJFcnJvciBnZXRSZWNv
cmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVp
bnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgSURC
R2V0UmVjb3JkRGF0YVR5cGUsIElEQkdldFJlc3VsdCYgb3V0VmFsdWUpIGZpbmFsOwogICAgIElE
QkVycm9yIGdldEFsbFJlY29yZHMoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2Fj
dGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkdldEFsbFJlY29yZHNEYXRhJiwgSURCR2V0QWxsUmVz
dWx0JiBvdXRWYWx1ZSkgZmluYWw7CiAgICAgSURCRXJyb3IgZ2V0SW5kZXhSZWNvcmQoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9i
amVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBJbmRleGVkREI6
OkluZGV4UmVjb3JkVHlwZSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgSURCR2V0UmVzdWx0JiBv
dXRWYWx1ZSkgZmluYWw7CkBAIC04MSw2ICs4MSw4IEBAIHB1YmxpYzoKICAgICBJREJFcnJvciBv
cGVuQ3Vyc29yKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlm
aWVyLCBjb25zdCBJREJDdXJzb3JJbmZvJiwgSURCR2V0UmVzdWx0JiBvdXRSZXN1bHQpIGZpbmFs
OwogICAgIElEQkVycm9yIGl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgY3Vy
c29ySWRlbnRpZmllciwgY29uc3QgSURCSXRlcmF0ZUN1cnNvckRhdGEmLCBJREJHZXRSZXN1bHQm
IG91dFJlc3VsdCkgZmluYWw7CiAKKyAgICBJREJTZXJpYWxpemF0aW9uQ29udGV4dCYgc2VyaWFs
aXphdGlvbkNvbnRleHQoKSBmaW5hbDsKKwogICAgIElEQk9iamVjdFN0b3JlSW5mbyogaW5mb0Zv
ck9iamVjdFN0b3JlKHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikgZmluYWw7CiAgICAg
dm9pZCBkZWxldGVCYWNraW5nU3RvcmUoKSBmaW5hbDsKIApAQCAtMTIyLDcgKzEyNCw3IEBAIHBy
aXZhdGU6CiAgICAgSURCRXJyb3IgdW5jaGVja2VkR2V0S2V5R2VuZXJhdG9yVmFsdWUoaW50NjRf
dCBvYmplY3RTdG9yZUlELCB1aW50NjRfdCYgb3V0VmFsdWUpOwogICAgIElEQkVycm9yIHVuY2hl
Y2tlZFNldEtleUdlbmVyYXRvclZhbHVlKGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgdWludDY0X3Qg
dmFsdWUpOwogCi0gICAgSURCRXJyb3IgdXBkYXRlQWxsSW5kZXhlc0ZvckFkZFJlY29yZChjb25z
dCBJREJPYmplY3RTdG9yZUluZm8mLCBjb25zdCBJREJLZXlEYXRhJiwgY29uc3QgVGhyZWFkU2Fm
ZURhdGFCdWZmZXImIHZhbHVlLCBpbnQ2NF90IHJlY29yZElEKTsKKyAgICBJREJFcnJvciB1cGRh
dGVBbGxJbmRleGVzRm9yQWRkUmVjb3JkKGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYsIGNvbnN0
IElEQktleURhdGEmLCBjb25zdCBJbmRleElEVG9JbmRleEtleU1hcCYsIGludDY0X3QgcmVjb3Jk
SUQpOwogICAgIElEQkVycm9yIHVwZGF0ZU9uZUluZGV4Rm9yQWRkUmVjb3JkKGNvbnN0IElEQklu
ZGV4SW5mbyYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYg
dmFsdWUsIGludDY0X3QgcmVjb3JkSUQpOwogICAgIElEQkVycm9yIHVuY2hlY2tlZFB1dEluZGV4
S2V5KGNvbnN0IElEQkluZGV4SW5mbyYsIGNvbnN0IElEQktleURhdGEmIGtleVZhbHVlLCBjb25z
dCBJbmRleEtleSYsIGludDY0X3QgcmVjb3JkSUQpOwogICAgIElEQkVycm9yIHVuY2hlY2tlZFB1
dEluZGV4UmVjb3JkKGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaW50NjRfdCBpbmRleElELCBjb25z
dCBJREJLZXlEYXRhJiBrZXlWYWx1ZSwgY29uc3QgSURCS2V5RGF0YSYgaW5kZXhLZXksIGludDY0
X3QgcmVjb3JkSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKaW5kZXggNDI5ZTQ0MmFlOTI2
OGVhNDFmMzA3NzRhZWVjN2JlMDBlMjg3MTdkNi4uM2M4YjdjY2E0MGIwZGJlN2VhNmU4NDljYzFj
ZWI1OWRmNDI3NGUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCkBAIC0zOCw2ICszOCw3
IEBACiAjaW5jbHVkZSAiSURCU2VydmVyLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25JbmZv
LmgiCiAjaW5jbHVkZSAiSURCVmFsdWUuaCIKKyNpbmNsdWRlICJJbmRleEtleS5oIgogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTdG9yYWdlUXVvdGFNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmgiCkBAIC03MCw2ICs3MSwyOSBAQCBzdGF0
aWMgaW5saW5lIHVpbnQ2NF90IGVzdGltYXRlU2l6ZShjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRh
KQogICAgIHJldHVybiBzaXplOwogfQogCitzdGF0aWMgaW5saW5lIHVpbnQ2NF90IGVzdGltYXRl
U2l6ZShjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIGluZm8sIGNvbnN0IEluZGV4SURUb0luZGV4
S2V5TWFwJiBpbmRleEtleXMsIHVpbnQ2NF90IHByaW1hcnlLZXlTaXplKQoreworICAgIC8vIEVh
Y2ggSW5kZXhSZWNvcmQgaGFzIDUgY29sdW1uczoKKyAgICAvLyAgLSBpbmRleElELCBvYmplY3RT
dG9yZUlELCByZWNvcmRJRDogdGhlc2UgYXJlIHZhcmludHMsIGVzdGltYXRlIDQgYnl0ZXMgZWFj
aCA9IDEyIGJ5dGVzCisgICAgLy8gIC0gcHJpbWFyeSBrZXk6IHVzZSBwcmltYXJ5S2V5U2l6ZQor
ICAgIC8vICAtIHNlY29uZGFyeSBpbmRleCBrZXk6IHVzZSBlc3RpbWF0ZVNpemUoc2Vjb25kYXJ5
IGtleSkKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ2NF90IGJhc2VJbmRleFJvd1NpemUgPSAx
MjsKKyAgICB1aW50NjRfdCBzaXplID0gMDsKKworICAgIGZvciAoY29uc3QgYXV0byYgW2luZGV4
SUQsIGluZGV4S2V5XSA6IGluZGV4S2V5cykgeworICAgICAgICBhdXRvIGluZGV4SXRlcmF0b3Ig
PSBpbmZvLmluZGV4TWFwKCkuZmluZChpbmRleElEKTsKKyAgICAgICAgQVNTRVJUKGluZGV4SXRl
cmF0b3IgIT0gaW5mby5pbmRleE1hcCgpLmVuZCgpKTsKKworICAgICAgICBpZiAoaW5kZXhJdGVy
YXRvciAhPSBpbmZvLmluZGV4TWFwKCkuZW5kKCkgJiYgaW5kZXhJdGVyYXRvci0+dmFsdWUubXVs
dGlFbnRyeSgpKSB7CisgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHNlY29uZGFyeUtleSA6
IGluZGV4S2V5Lm11bHRpRW50cnkoKSkKKyAgICAgICAgICAgICAgICBzaXplICs9IChiYXNlSW5k
ZXhSb3dTaXplICsgcHJpbWFyeUtleVNpemUgKyBlc3RpbWF0ZVNpemUoc2Vjb25kYXJ5S2V5KSk7
CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgc2l6ZSArPSAoYmFzZUluZGV4Um93U2l6ZSAr
IHByaW1hcnlLZXlTaXplICsgZXN0aW1hdGVTaXplKGluZGV4S2V5LmFzT25lS2V5KCkpKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gc2l6ZTsKK30KKwogc3RhdGljIGlubGluZSB1aW50NjRfdCBlc3Rp
bWF0ZVNpemUoY29uc3QgSURCVmFsdWUmIHZhbHVlKQogewogICAgIHVpbnQ2NF90IHNpemUgPSA0
OwpAQCAtNzEyLDE2ICs3MzYsNiBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRPckFkZChj
b25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgLy8gUXVvdGEgY2hlY2suCi0gICAgYXV0byB0YXNrU2l6ZSA9
IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBlc3RpbWF0ZVNpemUoa2V5RGF0YSkgKyBlc3Rp
bWF0ZVNpemUodmFsdWUpOwotICAgIGF1dG8qIG9iamVjdFN0b3JlID0gbV9kYXRhYmFzZUluZm8t
PmluZm9Gb3JFeGlzdGluZ09iamVjdFN0b3JlKG9iamVjdFN0b3JlSWRlbnRpZmllcik7Ci0gICAg
aWYgKG9iamVjdFN0b3JlKQotICAgICAgICB0YXNrU2l6ZSArPSBvYmplY3RTdG9yZS0+aW5kZXhO
YW1lcygpLnNpemUoKSAqIHRhc2tTaXplOwotICAgIGlmIChtX3NlcnZlci5yZXF1ZXN0U3BhY2Uo
bV9pZGVudGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6ZSkgPT0gU3RvcmFnZVF1b3RhTWFuYWdlcjo6
RGVjaXNpb246OkRlbnkpIHsKLSAgICAgICAgY2FsbGJhY2soSURCRXJyb3IgeyBRdW90YUV4Y2Vl
ZGVkRXJyb3IsIHF1b3RhRXJyb3JNZXNzYWdlTmFtZSgiUHV0T3JBZGQiKSB9LCB1c2VkS2V5KTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIGJvb2wgdXNlZEtleUlzR2VuZXJhdGVkID0g
ZmFsc2U7CiAgICAgdWludDY0X3Qga2V5TnVtYmVyOwogICAgIGF1dG8gdHJhbnNhY3Rpb25JZGVu
dGlmaWVyID0gcmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCk7CkBAIC03NDEsNiAr
NzU1LDkgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cHV0T3JBZGQoY29uc3QgSURCUmVxdWVz
dERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXkKICAgICB9IGVsc2UKICAgICAgICAgdXNl
ZEtleSA9IGtleURhdGE7CiAKKyAgICAvLyBHZW5lcmF0ZSBpbmRleCBrZXlzIHVwIGZyb250IGZv
ciBtb3JlIGFjY3VyYXRlIHF1b3RhIGNoZWNrLgorICAgIGF1dG8gaW5kZXhLZXlzID0gZ2VuZXJh
dGVJbmRleEtleU1hcEZvclZhbHVlKG1fYmFja2luZ1N0b3JlLT5zZXJpYWxpemF0aW9uQ29udGV4
dCgpLmV4ZWNTdGF0ZSgpLCAqb2JqZWN0U3RvcmVJbmZvLCB1c2VkS2V5LCB2YWx1ZSk7CisKICAg
ICBpZiAob3ZlcndyaXRlTW9kZSA9PSBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9k
ZTo6Tm9PdmVyd3JpdGUpIHsKICAgICAgICAgYm9vbCBrZXlFeGlzdHM7CiAgICAgICAgIGVycm9y
ID0gbV9iYWNraW5nU3RvcmUtPmtleUV4aXN0c0luT2JqZWN0U3RvcmUodHJhbnNhY3Rpb25JZGVu
dGlmaWVyLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVzZWRLZXksIGtleUV4aXN0cyk7CkBAIC03
NTIsNiArNzY5LDIwIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnB1dE9yQWRkKGNvbnN0IElE
QlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICB9CisKKyAgICAvLyBRdW90YSBjaGVjay4KKyAgICBhdXRvIGtl
eVNpemUgPSBlc3RpbWF0ZVNpemUodXNlZEtleSk7CisgICAgYXV0byB2YWx1ZVNpemUgPSBlc3Rp
bWF0ZVNpemUodmFsdWUpOworICAgIGF1dG8gaW5kZXhTaXplID0gZXN0aW1hdGVTaXplKCpvYmpl
Y3RTdG9yZUluZm8sIGluZGV4S2V5cywga2V5U2l6ZSk7CisgICAgYXV0byB0YXNrU2l6ZSA9IGRl
ZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBrZXlTaXplICsgdmFsdWVTaXplICsgaW5kZXhTaXpl
OworCisgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRPckFkZCBxdW90
YSBjaGVjayB3aXRoIHRhc2sgc2l6ZTogJWxsdSBrZXkgc2l6ZTogJWxsdSB2YWx1ZSBzaXplOiAl
bGx1IGluZGV4IHNpemU6ICVsbHUiLCB0YXNrU2l6ZSwga2V5U2l6ZSwgdmFsdWVTaXplLCBpbmRl
eFNpemUpOworCisgICAgaWYgKG1fc2VydmVyLnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3Jp
Z2luKCksIHRhc2tTaXplKSA9PSBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueSkg
eworICAgICAgICBjYWxsYmFjayhJREJFcnJvciB7IFF1b3RhRXhjZWVkZWRFcnJvciwgcXVvdGFF
cnJvck1lc3NhZ2VOYW1lKCJQdXRPckFkZCIpIH0sIHVzZWRLZXkpOworICAgICAgICByZXR1cm47
CisgICAgfQorCiAgICAgLy8gSWYgYSByZWNvcmQgYWxyZWFkeSBleGlzdHMgaW4gc3RvcmUsIHRo
ZW4gcmVtb3ZlIHRoZSByZWNvcmQgZnJvbSBzdG9yZSB1c2luZyB0aGUgc3RlcHMgZm9yIGRlbGV0
aW5nIHJlY29yZHMgZnJvbSBhbiBvYmplY3Qgc3RvcmUuCiAgICAgLy8gVGhpcyBpcyBpbXBvcnRh
bnQgYmVjYXVzZSBmb3JtYWxseSBkZWxldGluZyBpdCBmcm9tIGZyb20gdGhlIG9iamVjdCBzdG9y
ZSBhbHNvIHJlbW92ZXMgaXQgZnJvbSB0aGUgYXBwcm9wcmlhdGUgaW5kZXhlcy4KICAgICBlcnJv
ciA9IG1fYmFja2luZ1N0b3JlLT5kZWxldGVSYW5nZSh0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9i
amVjdFN0b3JlSWRlbnRpZmllciwgdXNlZEtleSk7CkBAIC03NjAsNyArNzkxLDcgQEAgdm9pZCBV
bmlxdWVJREJEYXRhYmFzZTo6cHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3RE
YXRhLCBjb25zdCBJREJLZXkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGVycm9yID0g
bV9iYWNraW5nU3RvcmUtPmFkZFJlY29yZCh0cmFuc2FjdGlvbklkZW50aWZpZXIsICpvYmplY3RT
dG9yZUluZm8sIHVzZWRLZXksIHZhbHVlKTsKKyAgICBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5h
ZGRSZWNvcmQodHJhbnNhY3Rpb25JZGVudGlmaWVyLCAqb2JqZWN0U3RvcmVJbmZvLCB1c2VkS2V5
LCBpbmRleEtleXMsIHZhbHVlKTsKICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7CiAgICAgICAg
IGNhbGxiYWNrKGVycm9yLCB1c2VkS2V5KTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luZGV4S2V5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5kZXhLZXkuaAppbmRleCBjMzgw
YzQ5NmMyMzM0NWY0MzRiNjdmOGZkMDYyODA1MDliN2Q3NGZmLi44NzUxY2ExODQ0NGU1OTE2MTVh
NWE0ZDUyMTY1MGJjM2QwMzUxNzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSW5kZXhLZXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSW5kZXhLZXkuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiSURCS2V5RGF0YS5oIgorI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC00OCw2ICs0OSw4IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPElEQktleURhdGE+
IG1fa2V5czsKIH07CiAKK3R5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgSW5kZXhLZXk+IEluZGV4
SURUb0luZGV4S2V5TWFwOworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBF
TkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5N2Y2MzAxODFkZWY0YzgzZGEzYjJkNzc2NzYy
OWM2YjM2ZmMxOTMwLi5kZTY2ZTJiMTUwOTU2YzRkNDFkOWMyYmEzOTcyZjA4NTJhYTQxOGY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xNDUzLDcgKzE0NTMsNyBAQAogCQk1MTZEN0Q3MDFCQjVGMEJEMDBBRjdDNzcgLyogSURC
Q29ubmVjdGlvblRvU2VydmVyRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxODVGQ0JEMUJCNUNCNzcwMDEyODk4RiAvKiBJREJDb25uZWN0
aW9uVG9TZXJ2ZXJEZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTUxNkQ3RDcyMUJCNUYwQkQwMEFGN0M3NyAvKiBJREJDb25uZWN0aW9u
VG9DbGllbnREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTE2RDdENkUxQkI1RjA2NTAwQUY3Qzc3IC8qIElEQkNvbm5lY3Rpb25Ub0NsaWVu
dERlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNTE2RjdGNkQxQzMxRTM5QTAwRjExMURDIC8qIFNlcnZlck9wZW5EQlJlcXVlc3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNkY3RjZDMUMz
MUM3OUQwMEYxMTFEQyAvKiBTZXJ2ZXJPcGVuREJSZXF1ZXN0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTE3MTM4RjAxQkVEMUQxQTAwMEQ1RjAx
IC8qIEluZGV4S2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTcxMzhFRTFCRUQxRDE3MDAwRDVGMDEgLyogSW5kZXhLZXkuaCAqLzsgfTsKKwkJNTE3
MTM4RjAxQkVEMUQxQTAwMEQ1RjAxIC8qIEluZGV4S2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTcxMzhFRTFCRUQxRDE3MDAwRDVGMDEgLyogSW5k
ZXhLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk1MTcxMzhGODFCRjEyOEJCMDAwRDVGMDEgLyogSW5kZXhWYWx1ZVN0b3JlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTcxMzhGNjFCRjEyMjYyMDAw
RDVGMDEgLyogSW5kZXhWYWx1ZVN0b3JlLmggKi87IH07CiAJCTUxNzEzOEZDMUJGM0FERjQwMDBE
NUYwMSAvKiBJREJDdXJzb3JJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTcxMzhGQTFCRjNBREFDMDAwRDVGMDEgLyogSURCQ3Vyc29ySW5mby5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxNzEz
OTA2MUJGNjRERUMwMDBENUYwMSAvKiBNZW1vcnlPYmplY3RTdG9yZUN1cnNvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3MTM5MDQxQkY2NERFMzAw
MEQ1RjAxIC8qIE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yLmggKi87IH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCmluZGV4IDU3OGMx
MzY3OWVkNzg5YTk4NjkzMTA1MmJjMDZhYTA0MDA1YzcyM2IuLjJmNWFmNmM3ZWRiZTdhNzljZTcx
MWEwZDhhNmU2YjRlODc1OWU1OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAi
SURCS2V5LmgiCiAjaW5jbHVkZSAiSURCS2V5RGF0YS5oIgogI2luY2x1ZGUgIklEQktleVBhdGgu
aCIKKyNpbmNsdWRlICJJREJPYmplY3RTdG9yZUluZm8uaCIKICNpbmNsdWRlICJJREJWYWx1ZS5o
IgogI2luY2x1ZGUgIkluZGV4S2V5LmgiCiAjaW5jbHVkZSAiSlNCbG9iLmgiCkBAIC00NjMsNiAr
NDY0LDM0IEBAIHZvaWQgZ2VuZXJhdGVJbmRleEtleUZvclZhbHVlKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdCBJREJJbmRlCiAgICAgb3V0S2V5ID0gSW5kZXhLZXko
V1RGTW92ZShrZXlEYXRhcykpOwogfQogCitJbmRleElEVG9JbmRleEtleU1hcCBnZW5lcmF0ZUlu
ZGV4S2V5TWFwRm9yVmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBzdG9yZUluZm8sIGNvbnN0IElEQktleURhdGEm
IGtleSwgY29uc3QgSURCVmFsdWUmIHZhbHVlKQoreworICAgIGF1dG8mIGluZGV4TWFwID0gc3Rv
cmVJbmZvLmluZGV4TWFwKCk7CisgICAgYXV0byBpbmRleENvdW50ID0gaW5kZXhNYXAuc2l6ZSgp
OworICAgIGlmICghaW5kZXhDb3VudCkKKyAgICAgICAgcmV0dXJuIEluZGV4SURUb0luZGV4S2V5
TWFwIHsgfTsKKworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIobGV4aWNhbEdsb2JhbE9iamVjdC52
bSgpKTsKKyAgICBhdXRvIGpzVmFsdWUgPSBkZXNlcmlhbGl6ZUlEQlZhbHVlVG9KU1ZhbHVlKGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKKyAgICBpZiAoanNWYWx1ZS5pc1VuZGVmaW5lZE9y
TnVsbCgpKQorICAgICAgICByZXR1cm4gSW5kZXhJRFRvSW5kZXhLZXlNYXAgeyB9OworCisgICAg
SW5kZXhJRFRvSW5kZXhLZXlNYXAgaW5kZXhLZXlzOworICAgIGluZGV4S2V5cy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KGluZGV4Q291bnQpOworCisgICAgZm9yIChjb25zdCBhdXRvJiBbaW5kZXhJ
RCwgaW5kZXhJbmZvXSA6IGluZGV4TWFwKSB7CisgICAgICAgIEluZGV4S2V5IGluZGV4S2V5Owor
ICAgICAgICBnZW5lcmF0ZUluZGV4S2V5Rm9yVmFsdWUobGV4aWNhbEdsb2JhbE9iamVjdCwgaW5k
ZXhJbmZvLCBqc1ZhbHVlLCBpbmRleEtleSwgc3RvcmVJbmZvLmtleVBhdGgoKSwga2V5KTsKKwor
ICAgICAgICBpZiAoaW5kZXhLZXkuaXNOdWxsKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICBpbmRleEtleXMuYWRkKGluZGV4SUQsIFdURk1vdmUoaW5kZXhLZXkpKTsKKyAgICB9
CisKKyAgICByZXR1cm4gaW5kZXhLZXlzOworfQorCiBPcHRpb25hbDxKU0M6OkpTVmFsdWU+IGRl
c2VyaWFsaXplSURCVmFsdWVXaXRoS2V5SW5qZWN0aW9uKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBjb25zdCBJREJWYWx1ZSYgdmFsdWUsIGNvbnN0IElEQktleURhdGEmIGtl
eSwgY29uc3QgT3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCiB7CiAgICAgYXV0byBqc1Zh
bHVlID0gZGVzZXJpYWxpemVJREJWYWx1ZVRvSlNWYWx1ZShsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5n
VXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0
aWVzLmgKaW5kZXggNDZkYTVhZWVkZDZhM2I1OTRiYTg5NjBmODUyYWE3MmRlMzIxYjdiMS4uOGFi
NzRmODg3OTBmNmRkZDIxNmYwNWE1ODBjM2IxZjQyM2Y4YzE2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaApAQCAtMjksNiArMjksNyBA
QAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiSURCS2V5UGF0aC5o
IgorI2luY2x1ZGUgIkluZGV4S2V5LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CkBAIC00Miw2ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IElEQkluZGV4SW5mbzsKIGNsYXNzIElEQktleTsKIGNsYXNzIElEQktleURhdGE7CitjbGFzcyBJ
REJPYmplY3RTdG9yZUluZm87CiBjbGFzcyBJREJWYWx1ZTsKIGNsYXNzIEluZGV4S2V5OwogY2xh
c3MgSlNET01HbG9iYWxPYmplY3Q7CkBAIC01Miw2ICs1NCw4IEBAIGJvb2wgaW5qZWN0SURCS2V5
SW50b1NjcmlwdFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBjb25zdCBJREJLZXlEYXRhJiwg
SlNDOjpKCiAKIHZvaWQgZ2VuZXJhdGVJbmRleEtleUZvclZhbHVlKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmLCBjb25zdCBJREJJbmRleEluZm8mLCBKU0M6OkpTVmFsdWUsIEluZGV4S2V5JiBvdXRLZXks
IGNvbnN0IE9wdGlvbmFsPElEQktleVBhdGg+JiwgY29uc3QgSURCS2V5RGF0YSYpOwogCitJbmRl
eElEVG9JbmRleEtleU1hcCBnZW5lcmF0ZUluZGV4S2V5TWFwRm9yVmFsdWUoSlNDOjpKU0dsb2Jh
bE9iamVjdCYsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYsIGNvbnN0IElEQktleURhdGEmLCBj
b25zdCBJREJWYWx1ZSYpOworCiBSZWY8SURCS2V5PiBzY3JpcHRWYWx1ZVRvSURCS2V5KEpTQzo6
SlNHbG9iYWxPYmplY3QmLCBjb25zdCBKU0M6OkpTVmFsdWUmKTsKIAogSlNDOjpKU1ZhbHVlIGRl
c2VyaWFsaXplSURCVmFsdWVUb0pTVmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIGNvbnN0IElE
QlZhbHVlJiwgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+Jik7CmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDYxNWIyYWY1YjcyMWEz
YTNiYjg3MGNiNjUwZjBiYjdjMTQ3ZTNkZC4uYzRlNTRlNjFmZmViMTIzZGFiODUxYjk5YjFiZTE5
NWU4NzMwNDdlMSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTA1LTAzICBCZW4gTmhhbSAgPG5oYW1AYXBwbGUu
Y29tPgorCisgICAgICAgIEltcHJvdmUgYWNjdXJhY3kgb2YgSW5kZXhlZERCIGVzdGltYXRlZCB3
cml0ZSBzaXplIGNvbXB1dGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTEzNjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGRlZCBhbiBBUEkgdGVzdCB0byBtYWtlIHN1cmUgdGhlIHF1b3RhIGNo
ZWNrIHByb2R1Y2VzIGEgc2FuZSBzaXplIHdoZW4gdXNpbmcgYSBsYXJnZQorICAgICAgICBudW1i
ZXIgb2YgaW5kaWNlcy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvSURCUXVvdGFDaGVjay5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lEQlF1b3RhQ2hlY2subW06IEFkZGVkLgorICAgICAg
ICAoLVtJREJRdW90YUNoZWNrTWVzc2FnZUhhbmRsZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtJ
REJRdW90YUNoZWNrTWVzc2FnZUhhbmRsZXIgdXNlckNvbnRlbnRDb250cm9sbGVyOmRpZFJlY2Vp
dmVTY3JpcHRNZXNzYWdlOl0pOgorICAgICAgICAoLVtJREJRdW90YUNoZWNrTWVzc2FnZUhhbmRs
ZXIgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlUG9pbnRlcl0pOgorICAgICAgICAoLVtJREJRdW90YUNo
ZWNrV2ViVmlld0RlbGVnYXRlIF93ZWJWaWV3OmRlY2lkZURhdGFiYXNlUXVvdGFGb3JTZWN1cml0
eU9yaWdpbjpjdXJyZW50UXVvdGE6Y3VycmVudE9yaWdpblVzYWdlOmN1cnJlbnREYXRhYmFzZVVz
YWdlOmV4cGVjdGVkVXNhZ2U6ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAgICAoVEVTVCk6CisK
IDIwMjAtMDQtMjggIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAK
ICAgICAgICAgQ3JlYXRlIGEgbWVjaGFuaXNtIHRvIGFkZCBtaXNzaW5nIElUUCBEYXRhYmFzZSB0
YWJsZXMgd2hlbiB0aGUgc2NoZW1hIGlzIHVwZGF0ZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggNzMxMjk1NDgwYzdhNzVjOWI5ZjZmMThjZTRlZjZhNmZlODA2ZmJmOS4uY2U0OGFlNTlmYzAy
NDQyMzA4NzEyM2YzMmJmYTAwNzBiZWNlYmFhNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTEwMzAsNiArMTAzMCw4IEBACiAJCUUzREVBODExMUYwQTU4OTAwMENCQzJFOCAvKiBUaHJlYWRH
cm91cC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
M0RFQTgxMDFGMEE1ODgwMDBDQkMyRTggLyogVGhyZWFkR3JvdXAuY3BwICovOyB9OwogCQlFM0Y4
QUI5MjI0MUFCOUNFMDAzRTJBN0UgLyogQWNjZXNzaWJpbGl0eVJlbW90ZVVJQXBwLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNGOEFCOTEyNDFBQjlD
RTAwM0UyQTdFIC8qIEFjY2Vzc2liaWxpdHlSZW1vdGVVSUFwcC5tbSAqLzsgfTsKIAkJRTUwMzZG
NzgyMTFCQzI1NDAwQkZEQkUyIC8qIGNvbG9yLWRyb3AuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNTAzNkY3NzIxMUJDMjI4MDBCRkRC
RTIgLyogY29sb3ItZHJvcC5odG1sICovOyB9OworCQlFQjg3RjZENTI0NUY0RTY4MDBFM0U0OUMg
LyogSURCUXVvdGFDaGVjay5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEVCODdGNkQzMjQ1RjRFNEYwMEUzRTQ5QyAvKiBJREJRdW90YUNoZWNrLm1tICov
OyB9OworCQlFQjg3RjZENjI0NUY0RTdBMDBFM0U0OUMgLyogSURCUXVvdGFDaGVjay5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVCODdG
NkQyMjQ1RjRFMkIwMEUzRTQ5QyAvKiBJREJRdW90YUNoZWNrLmh0bWwgKi87IH07CiAJCUVDQTY4
MENFMUU2OENDMDkwMDczMUQyMCAvKiBTdHJpbmdVdGlsaXRpZXMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQ0E2ODBDRDFFNjhDQzA5MDA3MzFEMjAg
LyogU3RyaW5nVXRpbGl0aWVzLm1tICovOyB9OwogCQlGNDAyRjU2QzIzRUNDMkZCMDA4NjU1NDkg
LyogVUlXS0ludGVyYWN0aW9uVmlld1Byb3RvY29sLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQwMkY1NkIyM0VDQzJGQjAwODY1NTQ5IC8qIFVJV0tJ
bnRlcmFjdGlvblZpZXdQcm90b2NvbC5tbSAqLzsgfTsKIAkJRjQwN0ZFMzkxRjFEMERGQzAwMTdD
RjI1IC8qIGVub3Jtb3VzLnN2ZyBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNDA3RkUzODFGMUQwREU2MDAxN0NGMjUgLyogZW5vcm1vdXMuc3Zn
ICovOyB9OwpAQCAtMTM1Miw2ICsxMzU0LDcgQEAKIAkJCQk1MTEwRkNGMTFFMDFDRDY0MDA2RjhE
MEIgLyogSURCSW5kZXhVcGdyYWRlVG9WMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJ
CTkzN0I1NjlFMjNDRDIzREIwMDJBRTY0MCAvKiBJREJPYmplY3RTdG9yZUluZm9VcGdyYWRlLnNx
bGl0ZTMgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJOTNCQ0JDODQyM0NDNkY0NDAwQ0EyMjIx
IC8qIElEQk9iamVjdFN0b3JlSW5mb1VwZ3JhZGVUb1YyLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8sCisJCQkJRUI4N0Y2RDYyNDVGNEU3QTAwRTNFNDlDIC8qIElEQlF1b3RhQ2hlY2suaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNDFBQjlBNDFFRjQ2OTZCMDA4M0ZBMDggLyogaW1h
Z2UtYW5kLWNvbnRlbnRlZGl0YWJsZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0
RTBBMkI0MjEyMjQwMkIwMEFGN0M3RiAvKiBpbWFnZS1hbmQtZmlsZS11cGxvYWQuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLywKIAkJCQlGNDFBQjlBNTFFRjQ2OTZCMDA4M0ZBMDggLyogaW1hZ2Ut
YW5kLXRleHRhcmVhLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0yNjU3LDYgKzI2NjAs
OCBAQAogCQlFNEE3NTdEMzE3OEFFQTVCMDBCNUQ3QTQgLyogRGVxdWUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRGVxdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEM5QUJD
NzFCM0RCMTcxMDA0MEE5ODcgLyogUnVuTG9vcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSdW5Mb29wLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTUwMzZGNzcyMTFCQzIyODAwQkZEQkUyIC8qIGNvbG9yLWRyb3AuaHRtbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuaHRtbDsgcGF0aCA9ICJjb2xvci1kcm9wLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFQjg3RjZEMjI0NUY0RTJCMDBFM0U0OUMgLyogSURCUXVvdGFDaGVjay5odG1sICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gSURCUXVvdGFDaGVjay5odG1sOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlFQjg3RjZEMzI0NUY0RTRGMDBFM0U0OUMgLyogSURCUXVvdGFD
aGVjay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IElEQlF1b3Rh
Q2hlY2subW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVDNzlGMTY4QkU0NTRFNTc5
RTQxN0IwNSAvKiBNYXJrYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNYXJrYWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVDQTY4MENE
MUU2OENDMDkwMDczMUQyMCAvKiBTdHJpbmdVdGlsaXRpZXMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTdHJpbmdVdGlsaXRpZXMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUYzRkMzRUUyMTM2NzhCNzMwMDEyNkE2NSAvKiBsaWJndGVzdC5hICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gYXJjaGl2ZS5h
cjsgcGF0aCA9IGxpYmd0ZXN0LmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07
CkBAIC0zMDY5LDYgKzMwNzQsNyBAQAogCQkJCTUxMDQ3Nzc1MUQyOThFMDMwMDk3NDdFQiAvKiBJ
REJEZWxldGVSZWNvdmVyeS5tbSAqLywKIAkJCQk1MTEwRkNFRjFFMDFDQkFBMDA2RjhEMEIgLyog
SURCSW5kZXhVcGdyYWRlVG9WMi5tbSAqLywKIAkJCQk5M0JDQkM4MDIzQ0M2RUU4MDBDQTIyMjEg
LyogSURCT2JqZWN0U3RvcmVJbmZvVXBncmFkZVRvVjIubW0gKi8sCisJCQkJRUI4N0Y2RDMyNDVG
NEU0RjAwRTNFNDlDIC8qIElEQlF1b3RhQ2hlY2subW0gKi8sCiAJCQkJNDlBRUVGNkIyNDA3MzU4
NjAwQzg3RTRDIC8qIEluQXBwQnJvd3NlclByaXZhY3kubW0gKi8sCiAJCQkJNTFBNTg3ODQxRDI3
MkVGMzAwNEJBOUFGIC8qIEluZGV4ZWREQkRhdGFiYXNlUHJvY2Vzc0tpbGwubW0gKi8sCiAJCQkJ
Q0FCMEZGNTQyMjMzMkMzQTAwNkNBNUIwIC8qIEluZGV4ZWREQkZpbGVOYW1lLm1tICovLApAQCAt
MzU0Myw2ICszNTQ5LDcgQEAKIAkJCQk1MTEwRkNGMDFFMDFDRDUzMDA2RjhEMEIgLyogSURCSW5k
ZXhVcGdyYWRlVG9WMi5odG1sICovLAogCQkJCTkzQkNCQzgxMjNDQzZFRjUwMENBMjIyMSAvKiBJ
REJPYmplY3RTdG9yZUluZm9VcGdyYWRlLnNxbGl0ZTMgKi8sCiAJCQkJOTNCQ0JDODIyM0NDNkVG
NTAwQ0EyMjIxIC8qIElEQk9iamVjdFN0b3JlSW5mb1VwZ3JhZGVUb1YyLmh0bWwgKi8sCisJCQkJ
RUI4N0Y2RDIyNDVGNEUyQjAwRTNFNDlDIC8qIElEQlF1b3RhQ2hlY2suaHRtbCAqLywKIAkJCQlG
NDFBQjk5OTFFRjQ2OTJDMDA4M0ZBMDggLyogaW1hZ2UtYW5kLWNvbnRlbnRlZGl0YWJsZS5odG1s
ICovLAogCQkJCUY0RTBBMkIzMjEyMjNGMkQwMEFGN0M3RiAvKiBpbWFnZS1hbmQtZmlsZS11cGxv
YWQuaHRtbCAqLywKIAkJCQlGNDFBQjk5MzFFRjQ2OTJDMDA4M0ZBMDggLyogaW1hZ2UtYW5kLXRl
eHRhcmVhLmh0bWwgKi8sCkBAIC00OTIwLDYgKzQ5MjcsNyBAQAogCQkJCTUxMDQ3Nzc4MUQyOTky
M0IwMDk3NDdFQiAvKiBJREJEZWxldGVSZWNvdmVyeS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUx
MTBGQ0ZBMUUwMUNEQjgwMDZGOEQwQiAvKiBJREJJbmRleFVwZ3JhZGVUb1YyLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTNCQ0JDODMyM0NDNkYyQTAwQ0EyMjIxIC8qIElEQk9iamVjdFN0b3JlSW5m
b1VwZ3JhZGVUb1YyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRUI4N0Y2RDUyNDVGNEU2ODAwRTNF
NDlDIC8qIElEQlF1b3RhQ2hlY2subW0gaW4gU291cmNlcyAqLywKIAkJCQk0OUFFRUY2RDI0MDcz
NTlEMDBDODdFNEMgLyogSW5BcHBCcm93c2VyUHJpdmFjeS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTUxQTU4Nzg2MUQyNzNBQTkwMDRCQTlBRiAvKiBJbmRleGVkREJEYXRhYmFzZVByb2Nlc3NLaWxs
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0FCMEZGNTUyMjMzMkM1NzAwNkNBNUIwIC8qIEluZGV4
ZWREQkZpbGVOYW1lLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lEQlF1b3RhQ2hlY2suaHRtbCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSURCUXVvdGFDaGVjay5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZiZjM2MjhiNTQ4MzZjOTZlM2JmNmQzMzhlY2YxNzU1NjI3OTJiODIKLS0tIC9kZXYvbnVsbAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lEQlF1b3RhQ2hlY2su
aHRtbApAQCAtMCwwICsxLDUxIEBACis8c2NyaXB0PgorCitsZXQga2V5ID0gbmV3IEludDhBcnJh
eSgxXzAwMCk7CitsZXQgb2JqID0geworICAgIGE6IG5ldyBJbnQ4QXJyYXkoNV8wMDApLAorICAg
IGI6IG5ldyBJbnQ4QXJyYXkoMjVfMDAwKSwKKyAgICBkYXRhOiBuZXcgSW50OEFycmF5KDEyNV8w
MDApLAorfTsKKworZnVuY3Rpb24gb3BlbklEQkFzeW5jKCkgeworICAgIHJldHVybiBuZXcgUHJv
bWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgIGxldCByZXEgPSBpbmRleGVkREIu
b3BlbigndGVzdC1xdW90YS1jaGVjaycpOworICAgICAgICByZXEub251cGdyYWRlbmVlZGVkID0g
ZSA9PiB7CisgICAgICAgICAgICBsZXQgZGIgPSBlLnRhcmdldC5yZXN1bHQ7CisgICAgICAgICAg
ICBsZXQgc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnb2JqZWN0cycpOworCisgICAgICAg
ICAgICAvLyBJbiBvbGRlciBXZWJLaXRzLCB0aGUgZXN0aW1hdGVkIHB1dCBzaXplIHNjYWxlZCB3
aXRoIHRoZSBudW1iZXIgb2YgaW5kaWNlcyAoMjExMzYwKS4KKyAgICAgICAgICAgIHN0b3JlLmNy
ZWF0ZUluZGV4KCdhJywgJ2EnKTsKKyAgICAgICAgICAgIHN0b3JlLmNyZWF0ZUluZGV4KCdiJywg
J2InKTsKKyAgICAgICAgICAgIHN0b3JlLmNyZWF0ZUluZGV4KCdjJywgJ2MnKTsKKyAgICAgICAg
ICAgIHN0b3JlLmNyZWF0ZUluZGV4KCdkJywgJ2QnKTsKKyAgICAgICAgICAgIHN0b3JlLmNyZWF0
ZUluZGV4KCdlJywgJ2UnKTsKKworICAgICAgICAgICAgcmV0dXJuIGRiOworICAgICAgICB9Cisg
ICAgICAgIHJlcS5vbnN1Y2Nlc3MgPSBlID0+IHJlc29sdmUoZS50YXJnZXQucmVzdWx0KTsKKyAg
ICAgICAgcmVxLm9uZXJyb3IgPSByZWplY3Q7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIGluc2Vy
dFJvd0FzeW5jKGRiKSB7CisgICAgbGV0IHR4bjsKKyAgICBsZXQgdHhuUHJvbWlzZSA9IG5ldyBQ
cm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgdHhuID0gZGIudHJhbnNhY3Rp
b24oJ29iamVjdHMnLCAncmVhZHdyaXRlJyk7CisgICAgICAgIFt0eG4ub25jb21wbGV0ZSwgdHhu
Lm9uZXJyb3JdID0gW3Jlc29sdmUsIHJlamVjdF07CisgICAgfSk7CisKKyAgICBsZXQgcmVxUHJv
bWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgbGV0IHJl
cSA9IHR4bi5vYmplY3RTdG9yZSgnb2JqZWN0cycpLnB1dChvYmosIGtleSk7CisgICAgICAgIFty
ZXEub25zdWNjZXNzLCByZXEub25lcnJvcl0gPSBbcmVzb2x2ZSwgcmVqZWN0XTsKKyAgICB9KTsK
KworICAgIHJldHVybiBQcm9taXNlLmFsbChbdHhuUHJvbWlzZSwgcmVxUHJvbWlzZV0pLnRoZW4o
XyA9PiBkYik7Cit9CisKK29wZW5JREJBc3luYygpCisgICAgLnRoZW4oaW5zZXJ0Um93QXN5bmMp
CisgICAgLnRoZW4oXyA9PiB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxl
ci5wb3N0TWVzc2FnZSgnU3VjY2VzcycpKQorICAgIC5jYXRjaChlID0+IHdpbmRvdy53ZWJraXQu
bWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdGYWlsZWQgaW5zZXJ0aW5n
IHJvdzogJyArIChlPy50YXJnZXQ/LmVycm9yIHx8IGUpKSkKKworPC9zY3JpcHQ+CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lEQlF1b3RhQ2hlY2su
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lEQlF1b3RhQ2hlY2su
bW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uM2UxMTRhMTQ2YTg3YjNhYTMzZjljNWY5MGFhMTgxYjlkMmQ3OWQ2MQot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
SURCUXVvdGFDaGVjay5tbQpAQCAtMCwwICsxLDE0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
ImNvbmZpZy5oIgorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVz
dC5oIgorI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vz
c1Bvb2xQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQ
cml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUu
aD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg+CisjaW1wb3J0
IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViS2l0
Lmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg+CisjaW1w
b3J0IDxXZWJLaXQvX1dLVXNlclN0eWxlU2hlZXQuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgor
CitAaW50ZXJmYWNlIElEQlF1b3RhQ2hlY2tNZXNzYWdlSGFuZGxlciA6IE5TT2JqZWN0IDxXS1Nj
cmlwdE1lc3NhZ2VIYW5kbGVyPgorQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgYm9vbCBy
ZWNlaXZlZFNjcmlwdE1lc3NhZ2U7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBXS1Nj
cmlwdE1lc3NhZ2UgKmxhc3RTY3JpcHRNZXNzYWdlOworQGVuZAorCitAaW1wbGVtZW50YXRpb24g
SURCUXVvdGFDaGVja01lc3NhZ2VIYW5kbGVyCisKK0BzeW50aGVzaXplIHJlY2VpdmVkU2NyaXB0
TWVzc2FnZT1fcmVjZWl2ZWRTY3JpcHRNZXNzYWdlOworQHN5bnRoZXNpemUgbGFzdFNjcmlwdE1l
c3NhZ2U9X2xhc3RTY3JpcHRNZXNzYWdlOworCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBbX2xh
c3RTY3JpcHRNZXNzYWdlIHJlbGVhc2VdOworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAo
dm9pZCl1c2VyQ29udGVudENvbnRyb2xsZXI6KFdLVXNlckNvbnRlbnRDb250cm9sbGVyICopdXNl
ckNvbnRlbnRDb250cm9sbGVyIGRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOihXS1NjcmlwdE1lc3Nh
Z2UgKiltZXNzYWdlCit7CisgICAgX3JlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IFlFUzsKKyAgICBz
ZWxmLmxhc3RTY3JpcHRNZXNzYWdlID0gbWVzc2FnZTsKK30KKworLSAoYm9vbCAqKXJlY2VpdmVk
U2NyaXB0TWVzc2FnZVBvaW50ZXIKK3sKKyAgICByZXR1cm4gJl9yZWNlaXZlZFNjcmlwdE1lc3Nh
Z2U7Cit9CisKK0BlbmQKKworQGludGVyZmFjZSBJREJRdW90YUNoZWNrV2ViVmlld0RlbGVnYXRl
IDogTlNPYmplY3QgPFdLVUlEZWxlZ2F0ZT4KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24p
IHVpbnQ2NF90IGN1cnJlbnRRdW90YTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIHVp
bnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24p
IHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlOworQHByb3BlcnR5IChub25hdG9taWMsIGFz
c2lnbikgdWludDY0X3QgZXhwZWN0ZWRVc2FnZTsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIElE
QlF1b3RhQ2hlY2tXZWJWaWV3RGVsZWdhdGUKKworQHN5bnRoZXNpemUgY3VycmVudFF1b3RhPV9j
dXJyZW50UXVvdGE7CitAc3ludGhlc2l6ZSBjdXJyZW50T3JpZ2luVXNhZ2U9X2N1cnJlbnRPcmln
aW5Vc2FnZTsKK0BzeW50aGVzaXplIGN1cnJlbnREYXRhYmFzZVVzYWdlPV9jdXJyZW50RGF0YWJh
c2VVc2FnZTsKK0BzeW50aGVzaXplIGV4cGVjdGVkVXNhZ2U9X2V4cGVjdGVkVXNhZ2U7CisKKy0g
KHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlRGF0YWJhc2VRdW90YUZv
clNlY3VyaXR5T3JpZ2luOihXS1NlY3VyaXR5T3JpZ2luICopc2VjdXJpdHlPcmlnaW4gY3VycmVu
dFF1b3RhOih1bnNpZ25lZCBsb25nIGxvbmcpY3VycmVudFF1b3RhIGN1cnJlbnRPcmlnaW5Vc2Fn
ZToodW5zaWduZWQgbG9uZyBsb25nKWN1cnJlbnRPcmlnaW5Vc2FnZSBjdXJyZW50RGF0YWJhc2VV
c2FnZToodW5zaWduZWQgbG9uZyBsb25nKWN1cnJlbnREYXRhYmFzZVVzYWdlIGV4cGVjdGVkVXNh
Z2U6KHVuc2lnbmVkIGxvbmcgbG9uZylleHBlY3RlZFVzYWdlIGRlY2lzaW9uSGFuZGxlcjoodm9p
ZCAoXikodW5zaWduZWQgbG9uZyBsb25nIG5ld1F1b3RhKSlkZWNpc2lvbkhhbmRsZXIKK3sKKyAg
ICBfY3VycmVudFF1b3RhID0gY3VycmVudFF1b3RhOworICAgIF9jdXJyZW50T3JpZ2luVXNhZ2Ug
PSBjdXJyZW50T3JpZ2luVXNhZ2U7CisgICAgX2N1cnJlbnREYXRhYmFzZVVzYWdlID0gY3VycmVu
dERhdGFiYXNlVXNhZ2U7CisgICAgX2V4cGVjdGVkVXNhZ2UgPSBleHBlY3RlZFVzYWdlOworCisg
ICAgZGVjaXNpb25IYW5kbGVyKDEuMSAqIChfY3VycmVudE9yaWdpblVzYWdlICsgX2V4cGVjdGVk
VXNhZ2UpKTsKK30KKworQGVuZAorCitURVNUKEluZGV4ZWREQiwgQ29tcHV0ZXNBY2N1cmF0ZVB1
dE9wZXJhdGlvbkRpc2tVc2FnZUVzdGltYXRlKQoreworICAgIF9XS1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uICpzdG9yZUNvbmZpZ3VyYXRpb24gPSBbW1tfV0tXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIHN0b3JlQ29uZmln
dXJhdGlvbi5wZXJPcmlnaW5TdG9yYWdlUXVvdGEgPSAxMDAgKiAxMDAwOyAvLyBlbm91Z2ggdG8g
Y3JlYXRlIHRoZSBEQiBidXQgbm90IGVub3VnaCB0byBwZXJmb3JtIHRoZSBwdXQgb3BlcmF0aW9u
CisKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmUgKmRhdGFTdG9yZSA9IFtbW1dLV2Vic2l0ZURhdGFT
dG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpzdG9yZUNvbmZpZ3VyYXRpb25dIGF1
dG9yZWxlYXNlXTsKKworICAgIF9fYmxvY2sgYm9vbCByZW1vdmVkRGF0YSA9IGZhbHNlOworICAg
IFtkYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJz
aXRlRGF0YVR5cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRp
b25IYW5kbGVyOl4oKSB7CisgICAgICAgIHJlbW92ZWREYXRhID0gdHJ1ZTsKKyAgICB9XTsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlbW92ZWREYXRhKTsKKworICAgIFJldGFpblB0
cjxJREJRdW90YUNoZWNrTWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbSURCUXVv
dGFDaGVja01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAgUmV0YWluUHRyPFdLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNldFdlYnNpdGVE
YXRhU3RvcmU6ZGF0YVN0b3JlXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250
cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJ0ZXN0
SGFuZGxlciJdOworCisgICAgW1tjb25maWd1cmF0aW9uIHByb2Nlc3NQb29sXSBfdGVybWluYXRl
TmV0d29ya1Byb2Nlc3NdOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgCisgICAgYXV0byB1aURlbGVn
YXRlID0gYWRvcHROUyhbW0lEQlF1b3RhQ2hlY2tXZWJWaWV3RGVsZWdhdGUgYWxsb2NdIGluaXRd
KTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOnVpRGVsZWdhdGUuZ2V0KCldOworCisgICAg
Ly8gTXVzdCBiZSB2aXNpYmxlIGZvciB0aGUgcXVvdGEgY2FsbGJhY2sgdG8gb2NjdXIuCisjaWYg
UExBVEZPUk0oTUFDKQorICAgICAgICBbd2ViVmlldy5nZXQoKS53aW5kb3cgc2V0SXNWaXNpYmxl
OllFU107CisjZWxzZQorICAgICAgICB3ZWJWaWV3LmdldCgpLndpbmRvdy5oaWRkZW4gPSBOTzsK
KyNlbmRpZgorCisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1
ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiSURCUXVv
dGFDaGVjayIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRB
UEkucmVzb3VyY2VzIl1dOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworCisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKFtoYW5kbGVyIHJlY2VpdmVkU2NyaXB0TWVzc2Fn
ZVBvaW50ZXJdKTsKKyAgICBFWFBFQ1RfU1RSRVEoIlN1Y2Nlc3MiLCBbW1toYW5kbGVyIGxhc3RT
Y3JpcHRNZXNzYWdlXSBib2R5XSBVVEY4U3RyaW5nXSk7CisKKyAgICAvLyBTZWUga2V5IGFuZCBv
YmogaW4gSURCUXVvdGFDaGVjay5odG1sLgorICAgIHVpbnQ2NF90IGtleVNpemUgPSAxMDAwOwor
ICAgIHVpbnQ2NF90IGFTaXplID0gNTAwMDsKKyAgICB1aW50NjRfdCBiU2l6ZSA9IDI1MDAwOwor
ICAgIHVpbnQ2NF90IGRhdGFTaXplID0gMTI1MDAwOworCisgICAgdWludDY0X3QgZXhwZWN0ZWRS
b3dTaXplID0ga2V5U2l6ZSArIGFTaXplICsgYlNpemUgKyBkYXRhU2l6ZTsKKyAgICB1aW50NjRf
dCBleHBlY3RlZEluZGV4QVNpemUgPSBhU2l6ZSArIGtleVNpemU7CisgICAgdWludDY0X3QgZXhw
ZWN0ZWRJbmRleEJTaXplID0gYlNpemUgKyBrZXlTaXplOworICAgIHVpbnQ2NF90IGV4cGVjdGVk
UHV0U2l6ZSA9IGV4cGVjdGVkUm93U2l6ZSArIGV4cGVjdGVkSW5kZXhBU2l6ZSArIGV4cGVjdGVk
SW5kZXhCU2l6ZTsKKworICAgIEVYUEVDVF9ORUFSKGV4cGVjdGVkUHV0U2l6ZSwgW3VpRGVsZWdh
dGUgZXhwZWN0ZWRVc2FnZV0sIGV4cGVjdGVkUHV0U2l6ZSAvIDEwKTsKK30KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0Nzhk
MjFkNjIzZTNhNDA1M2VlYmVlYzY4YjA1MDFjZTg1YzY3M2QyLi42YjRiOTA1MzYzNzc3YmFkMmQw
MjlmNTVkYWI1Nzc4M2MzMWE5ZTU1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMDUtMDMg
IEJlbiBOaGFtICA8bmhhbUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wcm92ZSBhY2N1cmFjeSBv
ZiBJbmRleGVkREIgZXN0aW1hdGVkIHdyaXRlIHNpemUgY29tcHV0YXRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTM2MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgbGF5b3V0IHRlc3Qg
dG8gY2hlY2sgdGhhdCB0aGUgc2l6ZSBlc3RpbWF0ZSBhc3NvY2lhdGVkIHdpdGggYWRkaW5nIGFu
IG9iamVjdCB0byBhCisgICAgICAgIHN0b3JlIHdpdGggbWFueSBpbmRpY2VzIGlzIHJlYXNvbmFi
bGUuCisKKyAgICAgICAgKiBMYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
c3RvcmFnZS1saW1pdC13aXRoLWluZGljZXMuanM6IEFkZGVkLgorICAgICAgICAqIExheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3N0b3JhZ2UtbGltaXQtd2l0aC1pbmRpY2VzLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc3Rv
cmFnZS1saW1pdC13aXRoLWluZGljZXMuaHRtbDogQWRkZWQuCisKIDIwMjAtMDQtMjggIFBoaWxp
cHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04o
cjI2MDgyMik6IEJyb2tlIG1lZGlhL3RyYWNrL3RyYWNrLWluLWJhbmQtbWV0YWRhdGEtZGlzcGxh
eS1vcmRlci5odG1sIG9uIE1hYwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvcmVzb3VyY2VzL3N0b3JhZ2UtbGltaXQtd2l0aC1pbmRpY2VzLmpzIGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3N0b3JhZ2UtbGltaXQtd2l0aC1pbmRpY2Vz
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjVmNmY1MzhkNjQzYzUyNTY4YjJiMjk5NGQ4MzEzMDJiZDI2YTQyMTMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJj
ZXMvc3RvcmFnZS1saW1pdC13aXRoLWluZGljZXMuanMKQEAgLTAsMCArMSw1MCBAQAoraWYgKHRo
aXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2lm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLnNldEFsbG93U3RvcmFnZVF1b3Rh
SW5jcmVhc2UoZmFsc2UpOworCit2YXIgcXVvdGEgPSA0MDAgKiAxMDI0OyAvLyBkZWZhdWx0IHF1
b3RhIGZvciB0ZXN0aW5nLgordmFyIG51bUluZGljZXMgPSAxMDsKKworZGVzY3JpcHRpb24oIlRo
aXMgdGVzdCBjaGVja3MgdGhhdCB0aGUgc2l6ZSBlc3RpbWF0ZSBhc3NvY2lhdGVkIHdpdGggYWRk
aW5nIGFuIG9iamVjdCB0byBhIHN0b3JlIHdpdGggbWFueSBpbmRpY2VzIGlzIHJlYXNvbmFibGUu
Iik7CisKK2luZGV4ZWREQlRlc3QocHJlcGFyZURhdGFiYXNlLCBvbk9wZW5TdWNjZXNzKTsKKwor
ZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKGV2ZW50KQoreworICAgIHByZWFtYmxlKGV2ZW50KTsK
KworICAgIGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIGV2YWxB
bmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKworICAgIGxl
dCBkYiA9IGV2ZW50LnRhcmdldDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bUluZGljZXM7
IGkrKykgeworICAgICAgICBsZXQgaW5kZXhOYW1lID0gJ2EnICsgaTsKKyAgICAgICAgc3RvcmUu
Y3JlYXRlSW5kZXgoaW5kZXhOYW1lLCBpbmRleE5hbWUpOworICAgIH0KK30KKworZnVuY3Rpb24g
b25PcGVuU3VjY2VzcyhldmVudCkKK3sKKyAgICBwcmVhbWJsZShldmVudCk7CisgICAgZXZhbEFu
ZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgZXZhbEFuZExvZygic3RvcmUg
PSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCAncmVhZHdyaXRlJykub2JqZWN0U3RvcmUoJ3N0b3Jl
JykiKTsKKwkKKyAgICAvLyBUaGUgc2l6ZSBvZiB0aGUgaW5kZXhlZCBhdHRyaWJ1dGVzIGEwLCBh
MSwgLi4uIGlzIHNtYWxsLCBzbyB0aGV5IHNob3VsZG4ndCBoYXZlIGEgbWF0ZXJpYWwKKyAgICAv
LyBlZmZlY3Qgb24gdGhlIGVzdGltYXRlZCBwdXQgc2l6ZSBmb3IgcXVvdGEgcHVycG9zZXMuCisg
ICAgZXZhbEFuZExvZyhgcmVxdWVzdCA9IHN0b3JlLmFkZCh7YTA6IDAsIGExOiAxLCBwYXlsb2Fk
OiBuZXcgVWludDhBcnJheSgke3F1b3RhIC8gbnVtSW5kaWNlc30pfSwgNDIpYCk7CisKKyAgICBy
ZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIHJlcUV2ZW50ID0g
ZXZlbnQ7CisgICAgICAgIHNob3VsZEJlKCJyZXFFdmVudC50YXJnZXQucmVzdWx0IiwgIjQyIik7
CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0KKworICAgIHJlcXVlc3Qub25lcnJvciA9
IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkFkZCBvcGVyYXRpb24gZmFp
bGVkLCBidXQgaXQgc2hvdWxkIHN1Y2NlZWQgYmVjYXVzZSBpdCB1c2VzIG11Y2ggbGVzcyBzcGFj
ZSB0aGFuIHRoZSBzdG9yYWdlIGxpbWl0LiIpOworICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAg
ICB9Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zdG9yYWdl
LWxpbWl0LXdpdGgtaW5kaWNlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9zdG9yYWdlLWxpbWl0LXdpdGgtaW5kaWNlcy1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTdmOTA5YjNjYjg5NGEzMGVmMDdlM2I5MTI2OWZjMzQzNmRhM2JhOQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3N0b3JhZ2UtbGltaXQtd2l0aC1p
bmRpY2VzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIzIEBACitUaGlzIHRlc3QgY2hlY2tzIHRo
YXQgdGhlIHNpemUgZXN0aW1hdGUgYXNzb2NpYXRlZCB3aXRoIGFkZGluZyBhbiBvYmplY3QgdG8g
YSBzdG9yZSB3aXRoIG1hbnkgaW5kaWNlcyBpcyByZWFzb25hYmxlLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0gc2VsZi5pbmRleGVkREIgfHwgc2VsZi53ZWJr
aXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwgc2VsZi5tc0luZGV4ZWREQiB8fCBz
ZWxmLk9JbmRleGVkREI7CisKK2luZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5hbWUpCitpbmRl
eGVkREIub3BlbihkYm5hbWUpCisKK3ByZXBhcmVEYXRhYmFzZSgpOgorZGIgPSBldmVudC50YXJn
ZXQucmVzdWx0CitzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScpCisKK29uT3Bl
blN1Y2Nlc3MoKToKK2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorc3RvcmUgPSBkYi50cmFuc2Fj
dGlvbignc3RvcmUnLCAncmVhZHdyaXRlJykub2JqZWN0U3RvcmUoJ3N0b3JlJykKK3JlcXVlc3Qg
PSBzdG9yZS5hZGQoe2EwOiAwLCBhMTogMSwgcGF5bG9hZDogbmV3IFVpbnQ4QXJyYXkoNDA5NjAp
fSwgNDIpCitQQVNTIHJlcUV2ZW50LnRhcmdldC5yZXN1bHQgaXMgNDIKK1BBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zdG9yYWdlLWxpbWl0LXdpdGgtaW5kaWNlcy5odG1sIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc3RvcmFnZS1saW1pdC13aXRoLWluZGljZXMu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yZDg4Y2NjY2ZlNzRkM2M4MDExOTU4YTlhNTk5ZGIyMjBkN2NiZDE5
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc3RvcmFn
ZS1saW1pdC13aXRoLWluZGljZXMuaHRtbApAQCAtMCwwICsxLDkgQEAKKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3N0b3JhZ2UtbGltaXQtd2l0aC1pbmRpY2VzLmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398454</attachid>
            <date>2020-05-04 19:23:19 -0700</date>
            <delta_ts>2020-05-07 11:17:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211360-20200504192318.patch</filename>
            <type>text/plain</type>
            <size>54898</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwODQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmY3NGIzNjE3OWVmN2Fk
NWJiMjQ0NjA5NzBlOGYzZGJmODgxZTU1ZC4uYTk4YTQ4ZjdjOTljZjYzY2FkNWQ4YzJhYjc0ZDVk
OTVkMTU0NTJjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIwLTA1LTAzICBCZW4g
TmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIEltcHJvdmUgYWNjdXJhY3kgb2YgSW5k
ZXhlZERCIGVzdGltYXRlZCB3cml0ZSBzaXplIGNvbXB1dGF0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTEzNjAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBjdXJyZW50bHkgZXN0aW1hdGUgdGhl
IHNpemUgb2YgYSBwdXQgaW4gSW5kZXhlZERCIGZvciBxdW90YSBjaGVjayBwdXJwb3NlcyB3aXRo
IHNvbWV0aGluZworICAgICAgICBsaWtlOgorCisgICAgICAgICAgZXN0aW1hdGVkV3JpdGVTaXpl
ID0gKDEgKyBudW1JbmRpY2VzKSAqIChrZXlTaXplICsgdmFsdWVTaXplKQorCisgICAgICAgIEhv
d2V2ZXIsIHRoaXMgY2FuIGxlYWQgdG8gbGFyZ2Ugb3ZlcmVzdGltYXRlcyBvZiB3cml0ZSBzaXpl
cy4gVGhpcyBpcyBiZWNhdXNlIHNlY29uZGFyeQorICAgICAgICBpbmRpY2VzIG9ubHkgc3RvcmUg
YSBtYXBwaW5nIG9mIHNlY29uZGFyeSBpbmRleCBrZXkgPT4gcHJpbWFyeSBrZXk7IHRoZXkgZG8g
bm90IHN0b3JlIHRoZQorICAgICAgICBlbnRpcmUgdmFsdWUuIEluIHRoZSBleGFtcGxlIHNpdGUg
YXR0YWNoZWQgdG8gMjAyMTM3IChhbm90aGVyIERCIHF1b3RhLXJlbGF0ZWQgYnVnKSwgdGhlCisg
ICAgICAgIHRoZSBoZXVyaXN0aWMgZXN0aW1hdGVzIHRoYXQgb25lIG9mIHRoZSBwdXQgb3BlcmF0
aW9ucyB3b3VsZCB1c2UgbW9yZSB0aGFuIDgwMCBNQiB3aGVuIGl0CisgICAgICAgIGFjdHVhbGx5
IHVzZXMgMjIwIE1CLiBUaGlzIGluYWNjdXJhY3kgbGVhZHMgdG8gc3B1cmlvdXMgZGlzayBxdW90
YSBwZXJtaXNzaW9uIG1vZGFscyBiZWluZworICAgICAgICBwcmVzZW50ZWQgaW4gU2FmYXJpLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggaW1wcm92ZXMgdGhlIHdyaXRlIHNpemUgY29tcHV0YXRpb24g
YnkgZ2VuZXJhdGluZyB0aGUgc2Vjb25kYXJ5IGluZGV4IGtleXMgYmVmb3JlCisgICAgICAgIGVz
dGltYXRpbmcgdGhlIHdyaXRlIHNpemUuIFRoZSBwZXJmb3JtYW5jZSBzaG91bGQgYmUgYWJvdXQg
dGhlIHNhbWUgc2luY2Ugd2Ugc2F2ZSB0aGUKKyAgICAgICAgZ2VuZXJhdGVkIGluZGV4IGtleXMg
Zm9yIGxhdGVyIHVzYWdlIHdoZW4gd2UgYWN0dWFsbHkgYWRkIHRoZSByZWNvcmQgdG8gdGhlIERC
LgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6TWVtb3J5SURCQmFja2luZ1N0b3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5SURCQmFja2luZ1N0b3JlOjphZGRSZWNv
cmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJREJCYWNraW5nU3RvcmU6
OnNlcmlhbGl6YXRpb25Db250ZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6TWVtb3J5T2JqZWN0U3RvcmU6OmFkZFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6Ok1lbW9yeU9iamVjdFN0b3JlOjp1cGRhdGVJbmRleGVzRm9yUHV0UmVjb3JkKToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1
cGRhdGVBbGxJbmRleGVzRm9yQWRkUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnNlcmlhbGl6YXRpb25Db250ZXh0KToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3Jl
Lmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6ZXN0aW1hdGVTaXplKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OnB1dE9yQWRkKToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5kZXhLZXkuaDoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMv
SURCQmluZGluZ1V0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZW5lcmF0ZUluZGV4
S2V5TWFwRm9yVmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRp
ZXMuaDoKKwogMjAyMC0wNC0yOCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXdyaXRlIEdyYXBoaWNzTGF5ZXJDQTo6dXBkYXRlU3VibGF5ZXJMaXN0
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDY1YzdjYWY3ZmYxYTIzZjZiZDkyZjE1MTIxYzMwOTA5
NWZlYmMzZDYuLjg2MDg0OTM1MDEwMjNhOGYyZjA3NzQzY2Q3MzUzOGY5OWI3NzVjZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQpAQCAtNjgsNiArNjgsNyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1F
V09SS19IRUFERVJTCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFi
YXNlQ29ubmVjdGlvbi5oCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb24uaAogCisgICAgTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luZGV4
S2V5LmgKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSURCQ3Vyc29ySW5mby5oCiAgICAg
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkN1cnNvclJlY29yZC5oCiAgICAgTW9kdWxlcy9p
bmRleGVkZGIvc2hhcmVkL0lEQkRhdGFiYXNlSW5mby5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmgKaW5kZXgg
YTdkZjdhMWRjZDYwNzVkZGE0NTEwOTBhYTkzMDM3YWU4MjFjZGJmNC4uODg4OWFiMGI0NDIyZWYz
N2Y5ZjY2NWNmYjdkZmIzMWI3ZjY2ZWY4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJCYWNraW5nU3RvcmUuaApAQCAtMjksNiAr
MjksNyBAQAogCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VJbmZvLmgiCiAjaW5jbHVkZSAiSURCRXJy
b3IuaCIKKyNpbmNsdWRlICJJbmRleEtleS5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU2LDYgKzU3LDggQEAgZW51bSBjbGFzcyBJbmRl
eFJlY29yZFR5cGU7CiAKIG5hbWVzcGFjZSBJREJTZXJ2ZXIgewogCitjbGFzcyBJREJTZXJpYWxp
emF0aW9uQ29udGV4dDsKKwogY2xhc3MgSURCQmFja2luZ1N0b3JlIHsKIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5JREJCYWNraW5nU3RvcmUoKSB7IFJFTEVBU0VfQVNTRVJUKCFpc01haW5UaHJlYWQo
KSk7IH0KQEAgLTc1LDcgKzc4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSURCRXJyb3IgcmVu
YW1lSW5kZXgoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZp
ZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpID0gMDsKICAgICB2aXJ0dWFsIElEQkVycm9yIGtl
eUV4aXN0c0luT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2Fj
dGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgSURC
S2V5RGF0YSYsIGJvb2wmIGtleUV4aXN0cykgPSAwOwogICAgIHZpcnR1YWwgSURCRXJyb3IgZGVs
ZXRlUmFuZ2UoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZp
ZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgSURCS2V5UmFuZ2VEYXRh
JikgPSAwOwotICAgIHZpcnR1YWwgSURCRXJyb3IgYWRkUmVjb3JkKGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJPYmplY3RTdG9yZUlu
Zm8mLCBjb25zdCBJREJLZXlEYXRhJiwgY29uc3QgSURCVmFsdWUmKSA9IDA7CisgICAgdmlydHVh
bCBJREJFcnJvciBhZGRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2Fj
dGlvbklkZW50aWZpZXIsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYsIGNvbnN0IElEQktleURh
dGEmLCBjb25zdCBJbmRleElEVG9JbmRleEtleU1hcCYsIGNvbnN0IElEQlZhbHVlJikgPSAwOwog
ICAgIHZpcnR1YWwgSURCRXJyb3IgZ2V0UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmll
ciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIs
IGNvbnN0IElEQktleVJhbmdlRGF0YSYsIElEQkdldFJlY29yZERhdGFUeXBlLCBJREJHZXRSZXN1
bHQmIG91dFZhbHVlKSA9IDA7CiAgICAgdmlydHVhbCBJREJFcnJvciBnZXRBbGxSZWNvcmRzKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJ
REJHZXRBbGxSZWNvcmRzRGF0YSYsIElEQkdldEFsbFJlc3VsdCYgb3V0VmFsdWUpID0gMDsKICAg
ICB2aXJ0dWFsIElEQkVycm9yIGdldEluZGV4UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRp
ZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZp
ZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgSW5kZXhlZERCOjpJbmRleFJlY29yZFR5cGUs
IGNvbnN0IElEQktleVJhbmdlRGF0YSYsIElEQkdldFJlc3VsdCYgb3V0VmFsdWUpID0gMDsKQEAg
LTg2LDYgKzg5LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgSURCRXJyb3Igb3BlbkN1cnNvcihj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3Qg
SURCQ3Vyc29ySW5mbyYsIElEQkdldFJlc3VsdCYgb3V0UmVzdWx0KSA9IDA7CiAgICAgdmlydHVh
bCBJREJFcnJvciBpdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJh
bnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIGN1cnNvcklk
ZW50aWZpZXIsIGNvbnN0IElEQkl0ZXJhdGVDdXJzb3JEYXRhJiwgSURCR2V0UmVzdWx0JiBvdXRS
ZXN1bHQpID0gMDsKIAorICAgIHZpcnR1YWwgSURCU2VyaWFsaXphdGlvbkNvbnRleHQmIHNlcmlh
bGl6YXRpb25Db250ZXh0KCkgPSAwOworCiAgICAgdmlydHVhbCBJREJPYmplY3RTdG9yZUluZm8q
IGluZm9Gb3JPYmplY3RTdG9yZSh1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQmFja2luZ1N0b3JlKCkgPSAwOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2lu
Z1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1v
cnlJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDQwMWNlM2QyYjE2MWJhZDNlNzkzOTc3MTdlZDVl
Mjg4NzcwNDI2MmUuLjBmNGIzNWM5NGExOWU2ODVkYzVkYjJjNWI1NDdiMzJlZTE4ZmEyN2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJ
REJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5j
bHVkZSAiSURCSW5kZXhJbmZvLmgiCiAjaW5jbHVkZSAiSURCSXRlcmF0ZUN1cnNvckRhdGEuaCIK
ICNpbmNsdWRlICJJREJLZXlSYW5nZURhdGEuaCIKKyNpbmNsdWRlICJJREJTZXJpYWxpemF0aW9u
Q29udGV4dC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZW1vcnlJbmRleEN1
cnNvci5oIgogI2luY2x1ZGUgIk1lbW9yeU9iamVjdFN0b3JlLmgiCkBAIC00OSw2ICs1MCw3IEBA
IGNvbnN0ZXhwciB1aW50NjRfdCBtYXhHZW5lcmF0ZWRLZXlWYWx1ZSA9IDB4MjAwMDAwMDAwMDAw
MDA7CiBNZW1vcnlJREJCYWNraW5nU3RvcmU6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IElEQkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmll
cikKICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgICwgbV9zZXNzaW9uSUQoc2Vz
c2lvbklEKQorICAgICwgbV9zZXJpYWxpemF0aW9uQ29udGV4dChJREJTZXJpYWxpemF0aW9uQ29u
dGV4dDo6Z2V0T3JDcmVhdGVJREJTZXJpYWxpemF0aW9uQ29udGV4dChzZXNzaW9uSUQpKQogewog
fQogCkBAIC0zNTUsNyArMzU3LDcgQEAgSURCRXJyb3IgTWVtb3J5SURCQmFja2luZ1N0b3JlOjpk
ZWxldGVSYW5nZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWMKICAgICByZXR1
cm4gSURCRXJyb3IgeyB9OwogfQogCi1JREJFcnJvciBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmFk
ZFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmll
ciwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBvYmplY3RTdG9yZUluZm8sIGNvbnN0IElEQktl
eURhdGEmIGtleURhdGEsIGNvbnN0IElEQlZhbHVlJiB2YWx1ZSkKK0lEQkVycm9yIE1lbW9yeUlE
QkJhY2tpbmdTdG9yZTo6YWRkUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJh
bnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIG9iamVjdFN0b3Jl
SW5mbywgY29uc3QgSURCS2V5RGF0YSYga2V5RGF0YSwgY29uc3QgSW5kZXhJRFRvSW5kZXhLZXlN
YXAmIGluZGV4S2V5cywgY29uc3QgSURCVmFsdWUmIHZhbHVlKQogewogICAgIExPRyhJbmRleGVk
REIsICJNZW1vcnlJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZCIpOwogCkBAIC0zNjksNyArMzcx
LDcgQEAgSURCRXJyb3IgTWVtb3J5SURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQoY29uc3QgSURC
UmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGkKICAgICBpZiAoIW9iamVjdFN0b3JlKQogICAg
ICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtub3duRXJyb3IsICJObyBiYWNraW5nIHN0b3JlIG9i
amVjdCBzdG9yZSBmb3VuZCB0byBwdXQgcmVjb3JkIl9zIH07CiAKLSAgICByZXR1cm4gb2JqZWN0
U3RvcmUtPmFkZFJlY29yZCgqdHJhbnNhY3Rpb24sIGtleURhdGEsIHZhbHVlKTsKKyAgICByZXR1
cm4gb2JqZWN0U3RvcmUtPmFkZFJlY29yZCgqdHJhbnNhY3Rpb24sIGtleURhdGEsIGluZGV4S2V5
cywgdmFsdWUpOwogfQogCiBJREJFcnJvciBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmdldFJlY29y
ZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWlu
dDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdl
LCBJREJHZXRSZWNvcmREYXRhVHlwZSB0eXBlLCBJREJHZXRSZXN1bHQmIG91dFZhbHVlKQpAQCAt
NjExLDYgKzYxMywxMSBAQCBSZWZQdHI8TWVtb3J5T2JqZWN0U3RvcmU+IE1lbW9yeUlEQkJhY2tp
bmdTdG9yZTo6dGFrZU9iamVjdFN0b3JlQnlJZGVudGlmaWVyKHVpbgogICAgIHJldHVybiBvYmpl
Y3RTdG9yZUJ5SWRlbnRpZmllcjsKIH0KIAorSURCU2VyaWFsaXphdGlvbkNvbnRleHQmIE1lbW9y
eUlEQkJhY2tpbmdTdG9yZTo6c2VyaWFsaXphdGlvbkNvbnRleHQoKQoreworICAgIHJldHVybiBt
X3NlcmlhbGl6YXRpb25Db250ZXh0LmdldCgpOworfQorCiBJREJPYmplY3RTdG9yZUluZm8qIE1l
bW9yeUlEQkJhY2tpbmdTdG9yZTo6aW5mb0Zvck9iamVjdFN0b3JlKHVpbnQ2NF90IG9iamVjdFN0
b3JlSWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQobV9kYXRhYmFzZUluZm8pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tp
bmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9y
eUlEQkJhY2tpbmdTdG9yZS5oCmluZGV4IDc0ZGM5NTA5NDVhNmVmNGI4ZWI1NzJhOGJkNGQxNWRk
YTUyYjhmYjUuLmI5NjkyMjY1M2I1MWNhODU5MWE0M2M4YTY4YmYxOWVjMjdmYTczZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJC
YWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJJ
REJCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUlkZW50aWZpZXIuaCIKICNp
bmNsdWRlICJJREJSZXNvdXJjZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJJbmRleEtleS5oIgog
I2luY2x1ZGUgIk1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSA8cGFs
L1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC0zNyw2ICszOCw3IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1lc3BhY2UgSURCU2VydmVyIHsKIAorY2xhc3MgSURC
U2VyaWFsaXphdGlvbkNvbnRleHQ7CiBjbGFzcyBNZW1vcnlPYmplY3RTdG9yZTsKIAogY2xhc3Mg
TWVtb3J5SURCQmFja2luZ1N0b3JlIGZpbmFsIDogcHVibGljIElEQkJhY2tpbmdTdG9yZSB7CkBA
IC01MSw2ICs1Myw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZU9iamVjdFN0b3JlRm9yVmVy
c2lvbkNoYW5nZUFib3J0KE1lbW9yeU9iamVjdFN0b3JlJik7CiAgICAgdm9pZCByZXN0b3JlT2Jq
ZWN0U3RvcmVGb3JWZXJzaW9uQ2hhbmdlQWJvcnQoUmVmPE1lbW9yeU9iamVjdFN0b3JlPiYmKTsK
IAorICAgIElEQlNlcmlhbGl6YXRpb25Db250ZXh0JiBzZXJpYWxpemF0aW9uQ29udGV4dCgpIGZp
bmFsOworCiBwcml2YXRlOgogICAgIElEQkVycm9yIGJlZ2luVHJhbnNhY3Rpb24oY29uc3QgSURC
VHJhbnNhY3Rpb25JbmZvJikgZmluYWw7CiAgICAgSURCRXJyb3IgYWJvcnRUcmFuc2FjdGlvbihj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikgZmluYWw7
CkBAIC02NCw3ICs2OCw3IEBAIHByaXZhdGU6CiAgICAgSURCRXJyb3IgcmVuYW1lSW5kZXgoY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90
IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBT
dHJpbmcmIG5ld05hbWUpIGZpbmFsOwogICAgIElEQkVycm9yIGtleUV4aXN0c0luT2JqZWN0U3Rv
cmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVp
bnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgSURCS2V5RGF0YSYsIGJvb2wmIGtl
eUV4aXN0cykgZmluYWw7CiAgICAgSURCRXJyb3IgZGVsZXRlUmFuZ2UoY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3Jl
SWRlbnRpZmllciwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJikgZmluYWw7Ci0gICAgSURCRXJyb3Ig
YWRkUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlm
aWVyLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mLCBjb25zdCBJREJLZXlEYXRhJiwgY29uc3Qg
SURCVmFsdWUmKSBmaW5hbDsKKyAgICBJREJFcnJvciBhZGRSZWNvcmQoY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQk9iamVjdFN0b3Jl
SW5mbyYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJbmRleElEVG9JbmRleEtleU1hcCYsIGNv
bnN0IElEQlZhbHVlJikgZmluYWw7CiAgICAgSURCRXJyb3IgZ2V0UmVjb3JkKGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RT
dG9yZUlkZW50aWZpZXIsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIElEQkdldFJlY29yZERhdGFU
eXBlLCBJREJHZXRSZXN1bHQmIG91dFZhbHVlKSBmaW5hbDsKICAgICBJREJFcnJvciBnZXRBbGxS
ZWNvcmRzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVy
LCBjb25zdCBJREJHZXRBbGxSZWNvcmRzRGF0YSYsIElEQkdldEFsbFJlc3VsdCYgb3V0VmFsdWUp
IGZpbmFsOwogICAgIElEQkVycm9yIGdldEluZGV4UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgSW5kZXhlZERCOjpJbmRleFJlY29yZFR5
cGUsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIElEQkdldFJlc3VsdCYgb3V0VmFsdWUpIGZpbmFs
OwpAQCAtOTIsNiArOTYsNyBAQCBwcml2YXRlOgogCiAgICAgSURCRGF0YWJhc2VJZGVudGlmaWVy
IG1faWRlbnRpZmllcjsKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKKyAgICBSZWY8
SURCU2VyaWFsaXphdGlvbkNvbnRleHQ+IG1fc2VyaWFsaXphdGlvbkNvbnRleHQ7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5mbz4gbV9kYXRhYmFzZUluZm87CiAKICAgICBIYXNo
TWFwPElEQlJlc291cmNlSWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPE1lbW9yeUJhY2tpbmdT
dG9yZVRyYW5zYWN0aW9uPj4gbV90cmFuc2FjdGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNw
cAppbmRleCA3MTU1YjU5N2E0MjBmNTllMTM5NWI5MjgxZGU4YzJkNjRkYWE4NzExLi40MjNmMDg3
YWRiMjQ2NWJmNGY5NzNjNDFlNWExNTRlNjI2YWYwYzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9y
ZS5jcHAKQEAgLTI1MSw2ICsyNTEsMTIgQEAgdm9pZCBNZW1vcnlPYmplY3RTdG9yZTo6ZGVsZXRl
UmFuZ2UoY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBpbnB1dFJhbmdlKQogfQogCiBJREJFcnJvciBN
ZW1vcnlPYmplY3RTdG9yZTo6YWRkUmVjb3JkKE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9u
JiB0cmFuc2FjdGlvbiwgY29uc3QgSURCS2V5RGF0YSYga2V5RGF0YSwgY29uc3QgSURCVmFsdWUm
IHZhbHVlKQoreworICAgIGF1dG8gaW5kZXhLZXlzID0gZ2VuZXJhdGVJbmRleEtleU1hcEZvclZh
bHVlKG1fc2VyaWFsaXphdGlvbkNvbnRleHQtPmV4ZWNTdGF0ZSgpLCBtX2luZm8sIGtleURhdGEs
IHZhbHVlKTsKKyAgICByZXR1cm4gYWRkUmVjb3JkKHRyYW5zYWN0aW9uLCBrZXlEYXRhLCBpbmRl
eEtleXMsIHZhbHVlKTsKK30KKworSURCRXJyb3IgTWVtb3J5T2JqZWN0U3RvcmU6OmFkZFJlY29y
ZChNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IElEQktl
eURhdGEmIGtleURhdGEsIGNvbnN0IEluZGV4SURUb0luZGV4S2V5TWFwJiBpbmRleEtleXMsIGNv
bnN0IElEQlZhbHVlJiB2YWx1ZSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiTWVtb3J5T2JqZWN0
U3RvcmU6OmFkZFJlY29yZCIpOwogCkBAIC0yNzEsNyArMjc3LDcgQEAgSURCRXJyb3IgTWVtb3J5
T2JqZWN0U3RvcmU6OmFkZFJlY29yZChNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbiYgdHJh
bnNhY3Rpb24KICAgICBBU1NFUlQobGlzdFJlc3VsdC5zZWNvbmQpOwogCiAgICAgLy8gSWYgdGhl
cmUgd2FzIGFuIGVycm9yIGluZGV4aW5nIHRoaXMgYWRkaXRpb24sIHRoZW4gcmV2ZXJ0IGl0Lgot
ICAgIGF1dG8gZXJyb3IgPSB1cGRhdGVJbmRleGVzRm9yUHV0UmVjb3JkKGtleURhdGEsIHZhbHVl
LmRhdGEoKSk7CisgICAgYXV0byBlcnJvciA9IHVwZGF0ZUluZGV4ZXNGb3JQdXRSZWNvcmQoa2V5
RGF0YSwgaW5kZXhLZXlzKTsKICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7CiAgICAgICAgIG1f
a2V5VmFsdWVTdG9yZS0+cmVtb3ZlKG1hcFJlc3VsdC5pdGVyYXRvcik7CiAgICAgICAgIG1fb3Jk
ZXJlZEtleXMtPmVyYXNlKGxpc3RSZXN1bHQuZmlyc3QpOwpAQCAtMjk5LDI5ICszMDUsMjQgQEAg
dm9pZCBNZW1vcnlPYmplY3RTdG9yZTo6dXBkYXRlSW5kZXhlc0ZvckRlbGV0ZVJlY29yZChjb25z
dCBJREJLZXlEYXRhJiB2YWx1ZSkKICAgICAgICAgaW5kZXgtPnJlbW92ZUVudHJpZXNXaXRoVmFs
dWVLZXkodmFsdWUpOwogfQogCi1JREJFcnJvciBNZW1vcnlPYmplY3RTdG9yZTo6dXBkYXRlSW5k
ZXhlc0ZvclB1dFJlY29yZChjb25zdCBJREJLZXlEYXRhJiBrZXksIGNvbnN0IFRocmVhZFNhZmVE
YXRhQnVmZmVyJiB2YWx1ZSkKK0lEQkVycm9yIE1lbW9yeU9iamVjdFN0b3JlOjp1cGRhdGVJbmRl
eGVzRm9yUHV0UmVjb3JkKGNvbnN0IElEQktleURhdGEmIGtleSwgY29uc3QgSW5kZXhJRFRvSW5k
ZXhLZXlNYXAmIGluZGV4S2V5cykKIHsKLSAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKG1fc2VyaWFs
aXphdGlvbkNvbnRleHQtPnZtKCkpOwotCi0gICAgYXV0byBqc1ZhbHVlID0gZGVzZXJpYWxpemVJ
REJWYWx1ZVRvSlNWYWx1ZShtX3NlcmlhbGl6YXRpb25Db250ZXh0LT5leGVjU3RhdGUoKSwgdmFs
dWUpOwotICAgIGlmIChqc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVy
biBJREJFcnJvciB7IH07Ci0KICAgICBJREJFcnJvciBlcnJvcjsKICAgICBWZWN0b3I8c3RkOjpw
YWlyPE1lbW9yeUluZGV4KiwgSW5kZXhLZXk+PiBjaGFuZ2VkSW5kZXhSZWNvcmRzOwogCi0gICAg
Zm9yIChhdXRvJiBpbmRleCA6IG1faW5kZXhlc0J5TmFtZS52YWx1ZXMoKSkgewotICAgICAgICBJ
bmRleEtleSBpbmRleEtleTsKLSAgICAgICAgZ2VuZXJhdGVJbmRleEtleUZvclZhbHVlKG1fc2Vy
aWFsaXphdGlvbkNvbnRleHQtPmV4ZWNTdGF0ZSgpLCBpbmRleC0+aW5mbygpLCBqc1ZhbHVlLCBp
bmRleEtleSwgbV9pbmZvLmtleVBhdGgoKSwga2V5KTsKLQotICAgICAgICBpZiAoaW5kZXhLZXku
aXNOdWxsKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIFtp
bmRleElELCBpbmRleEtleV0gOiBpbmRleEtleXMpIHsKKyAgICAgICAgYXV0byogaW5kZXggPSBt
X2luZGV4ZXNCeUlkZW50aWZpZXIuZ2V0KGluZGV4SUQpOworICAgICAgICBBU1NFUlQoaW5kZXgp
OworICAgICAgICBpZiAoIWluZGV4KSB7CisgICAgICAgICAgICBlcnJvciA9IElEQkVycm9yIHsg
SW52YWxpZFN0YXRlRXJyb3IsICJNaXNzaW5nIGluZGV4IG1ldGFkYXRhIiB9OworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KIAogICAgICAgICBlcnJvciA9IGluZGV4LT5wdXRJbmRleEtl
eShrZXksIGluZGV4S2V5KTsKICAgICAgICAgaWYgKCFlcnJvci5pc051bGwoKSkKICAgICAgICAg
ICAgIGJyZWFrOwogCi0gICAgICAgIGNoYW5nZWRJbmRleFJlY29yZHMuYXBwZW5kKHN0ZDo6bWFr
ZV9wYWlyKGluZGV4LmdldCgpLCBpbmRleEtleSkpOworICAgICAgICBjaGFuZ2VkSW5kZXhSZWNv
cmRzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihpbmRleCwgaW5kZXhLZXkpKTsKICAgICB9CiAKICAg
ICAvLyBJZiBhbnkgb2YgdGhlIGluZGV4IHB1dHMgZmFpbGVkLCByZXZlcnQgYWxsIG9mIHRoZSBv
bmVzIHRoYXQgd2VudCB0aHJvdWdoLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaAppbmRleCBhYzcwMTA4
OWJjNGIxNWY3NzY1MTFlMTM4OGI2ZGZiMDdjMmRmYjA2Li5iMTUwMjk5Mzk1YzFhZWI1ZjFjNDA1
OTI4Nzk4YzQ3MDM3MDAxMTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaApAQCAtMjksNiArMjks
NyBAQAogCiAjaW5jbHVkZSAiSURCS2V5RGF0YS5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3Jl
SW5mby5oIgorI2luY2x1ZGUgIkluZGV4S2V5LmgiCiAjaW5jbHVkZSAiTWVtb3J5SW5kZXguaCIK
ICNpbmNsdWRlICJNZW1vcnlPYmplY3RTdG9yZUN1cnNvci5oIgogI2luY2x1ZGUgIlRocmVhZFNh
ZmVEYXRhQnVmZmVyLmgiCkBAIC04MCw2ICs4MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0
ZVJlY29yZChjb25zdCBJREJLZXlEYXRhJik7CiAgICAgdm9pZCBkZWxldGVSYW5nZShjb25zdCBJ
REJLZXlSYW5nZURhdGEmKTsKICAgICBJREJFcnJvciBhZGRSZWNvcmQoTWVtb3J5QmFja2luZ1N0
b3JlVHJhbnNhY3Rpb24mLCBjb25zdCBJREJLZXlEYXRhJiwgY29uc3QgSURCVmFsdWUmKTsKKyAg
ICBJREJFcnJvciBhZGRSZWNvcmQoTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24mLCBjb25z
dCBJREJLZXlEYXRhJiwgY29uc3QgSW5kZXhJRFRvSW5kZXhLZXlNYXAmLCBjb25zdCBJREJWYWx1
ZSYpOwogCiAgICAgdWludDY0X3QgY3VycmVudEtleUdlbmVyYXRvclZhbHVlKCkgY29uc3QgeyBy
ZXR1cm4gbV9rZXlHZW5lcmF0b3JWYWx1ZTsgfQogICAgIHZvaWQgc2V0S2V5R2VuZXJhdG9yVmFs
dWUodWludDY0X3QgdmFsdWUpIHsgbV9rZXlHZW5lcmF0b3JWYWx1ZSA9IHZhbHVlOyB9CkBAIC0x
MTQsNyArMTE2LDcgQEAgcHJpdmF0ZToKICAgICBJREJLZXlEYXRhU2V0OjppdGVyYXRvciBsb3dl
c3RJdGVyYXRvckluUmFuZ2UoY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgYm9vbCByZXZlcnNlKSBj
b25zdDsKIAogICAgIElEQkVycm9yIHBvcHVsYXRlSW5kZXhXaXRoRXhpc3RpbmdSZWNvcmRzKE1l
bW9yeUluZGV4Jik7Ci0gICAgSURCRXJyb3IgdXBkYXRlSW5kZXhlc0ZvclB1dFJlY29yZChjb25z
dCBJREJLZXlEYXRhJiwgY29uc3QgVGhyZWFkU2FmZURhdGFCdWZmZXImIHZhbHVlKTsKKyAgICBJ
REJFcnJvciB1cGRhdGVJbmRleGVzRm9yUHV0UmVjb3JkKGNvbnN0IElEQktleURhdGEmLCBjb25z
dCBJbmRleElEVG9JbmRleEtleU1hcCYpOwogICAgIHZvaWQgdXBkYXRlSW5kZXhlc0ZvckRlbGV0
ZVJlY29yZChjb25zdCBJREJLZXlEYXRhJiB2YWx1ZSk7CiAgICAgdm9pZCB1cGRhdGVDdXJzb3Jz
Rm9yUHV0UmVjb3JkKElEQktleURhdGFTZXQ6Oml0ZXJhdG9yKTsKICAgICB2b2lkIHVwZGF0ZUN1
cnNvcnNGb3JEZWxldGVSZWNvcmQoY29uc3QgSURCS2V5RGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURC
QmFja2luZ1N0b3JlLmNwcAppbmRleCA1NjNkZWE4ODBmYTg3OGY1NDIyOTgwZGM3YWZiM2VhNDg5
OTg1MjI3Li42YzVlYWQ0Y2FlNjY1ZWVlNDIxYzljNjVjMjZlYjRkN2UwNTNiYmUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFj
a2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApAQCAtMTg0OCwyNCArMTg0OCwyMiBAQCBJREJF
cnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVwZGF0ZU9uZUluZGV4Rm9yQWRkUmVjb3JkKGNv
bnN0IElEQkluZGV4SW5mbyYgaQogICAgIHJldHVybiB1bmNoZWNrZWRQdXRJbmRleEtleShpbmZv
LCBrZXksIGluZGV4S2V5LCByZWNvcmRJRCk7CiB9CiAKLUlEQkVycm9yIFNRTGl0ZUlEQkJhY2tp
bmdTdG9yZTo6dXBkYXRlQWxsSW5kZXhlc0ZvckFkZFJlY29yZChjb25zdCBJREJPYmplY3RTdG9y
ZUluZm8mIGluZm8sIGNvbnN0IElEQktleURhdGEmIGtleSwgY29uc3QgVGhyZWFkU2FmZURhdGFC
dWZmZXImIHZhbHVlLCBpbnQ2NF90IHJlY29yZElEKQorSURCRXJyb3IgU1FMaXRlSURCQmFja2lu
Z1N0b3JlOjp1cGRhdGVBbGxJbmRleGVzRm9yQWRkUmVjb3JkKGNvbnN0IElEQk9iamVjdFN0b3Jl
SW5mbyYgaW5mbywgY29uc3QgSURCS2V5RGF0YSYga2V5LCBjb25zdCBJbmRleElEVG9JbmRleEtl
eU1hcCYgaW5kZXhLZXlzLCBpbnQ2NF90IHJlY29yZElEKQogewotICAgIEpTTG9ja0hvbGRlciBs
b2NrZXIobV9zZXJpYWxpemF0aW9uQ29udGV4dC0+dm0oKSk7Ci0KLSAgICBhdXRvIGpzVmFsdWUg
PSBkZXNlcmlhbGl6ZUlEQlZhbHVlVG9KU1ZhbHVlKG1fc2VyaWFsaXphdGlvbkNvbnRleHQtPmV4
ZWNTdGF0ZSgpLCB2YWx1ZSk7Ci0gICAgaWYgKGpzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkK
LSAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgfTsKLQogICAgIElEQkVycm9yIGVycm9yOworICAg
IGNvbnN0IGF1dG8mIGluZGV4TWFwID0gaW5mby5pbmRleE1hcCgpOwogICAgIGJvb2wgYW55UmVj
b3Jkc1N1Y2NlZWRlZCA9IGZhbHNlOwotICAgIGZvciAoYXV0byYgaW5kZXggOiBpbmZvLmluZGV4
TWFwKCkudmFsdWVzKCkpIHsKLSAgICAgICAgSW5kZXhLZXkgaW5kZXhLZXk7Ci0gICAgICAgIGdl
bmVyYXRlSW5kZXhLZXlGb3JWYWx1ZShtX3NlcmlhbGl6YXRpb25Db250ZXh0LT5leGVjU3RhdGUo
KSwgaW5kZXgsIGpzVmFsdWUsIGluZGV4S2V5LCBpbmZvLmtleVBhdGgoKSwga2V5KTsKIAotICAg
ICAgICBpZiAoaW5kZXhLZXkuaXNOdWxsKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKKyAgICBm
b3IgKGNvbnN0IGF1dG8mIFtpbmRleElELCBpbmRleEtleV0gOiBpbmRleEtleXMpIHsKKyAgICAg
ICAgYXV0byBpbmRleEl0ZXJhdG9yID0gaW5kZXhNYXAuZmluZChpbmRleElEKTsKKyAgICAgICAg
QVNTRVJUKGluZGV4SXRlcmF0b3IgIT0gaW5kZXhNYXAuZW5kKCkpOwogCi0gICAgICAgIGVycm9y
ID0gdW5jaGVja2VkUHV0SW5kZXhLZXkoaW5kZXgsIGtleSwgaW5kZXhLZXksIHJlY29yZElEKTsK
KyAgICAgICAgaWYgKGluZGV4SXRlcmF0b3IgPT0gaW5kZXhNYXAuZW5kKCkpIHsKKyAgICAgICAg
ICAgIGVycm9yID0gSURCRXJyb3IgeyBJbnZhbGlkU3RhdGVFcnJvciwgIk1pc3NpbmcgaW5kZXgg
bWV0YWRhdGEiIH07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGVy
cm9yID0gdW5jaGVja2VkUHV0SW5kZXhLZXkoaW5kZXhJdGVyYXRvci0+dmFsdWUsIGtleSwgaW5k
ZXhLZXksIHJlY29yZElEKTsKICAgICAgICAgaWYgKCFlcnJvci5pc051bGwoKSkKICAgICAgICAg
ICAgIGJyZWFrOwogCkBAIC0xODg3LDcgKzE4ODUsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNr
aW5nU3RvcmU6OnVwZGF0ZUFsbEluZGV4ZXNGb3JBZGRSZWNvcmQoY29uc3QgSURCT2JqZWN0U3Rv
cgogICAgIHJldHVybiBlcnJvcjsKIH0KIAotSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3Jl
OjphZGRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50
aWZpZXIsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgb2JqZWN0U3RvcmVJbmZvLCBjb25zdCBJ
REJLZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBJREJWYWx1ZSYgdmFsdWUpCitJREJFcnJvciBTUUxp
dGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBvYmplY3RT
dG9yZUluZm8sIGNvbnN0IElEQktleURhdGEmIGtleURhdGEsIGNvbnN0IEluZGV4SURUb0luZGV4
S2V5TWFwJiBpbmRleEtleXMsIGNvbnN0IElEQlZhbHVlJiB2YWx1ZSkKIHsKICAgICBMT0coSW5k
ZXhlZERCLCAiU1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQgLSBrZXkgJXMsIG9iamVj
dCBzdG9yZSAlIiBQUkl1NjQsIGtleURhdGEubG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCks
IG9iamVjdFN0b3JlSW5mby5pZGVudGlmaWVyKCkpOwogCkBAIC0xOTI2LDcgKzE5MjQsNyBAQCBJ
REJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZChjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAgICAgICByZWNvcmRJRCA9IG1fc3FsaXRlREItPmxh
c3RJbnNlcnRSb3dJRCgpOwogICAgIH0KIAotICAgIGF1dG8gZXJyb3IgPSB1cGRhdGVBbGxJbmRl
eGVzRm9yQWRkUmVjb3JkKG9iamVjdFN0b3JlSW5mbywga2V5RGF0YSwgdmFsdWUuZGF0YSgpLCBy
ZWNvcmRJRCk7CisgICAgYXV0byBlcnJvciA9IHVwZGF0ZUFsbEluZGV4ZXNGb3JBZGRSZWNvcmQo
b2JqZWN0U3RvcmVJbmZvLCBrZXlEYXRhLCBpbmRleEtleXMsIHJlY29yZElEKTsKIAogICAgIGlm
ICghZXJyb3IuaXNOdWxsKCkpIHsKICAgICAgICAgYXV0byogc3FsID0gY2FjaGVkU3RhdGVtZW50
KFNRTDo6RGVsZXRlT2JqZWN0U3RvcmVSZWNvcmQsICJERUxFVEUgRlJPTSBSZWNvcmRzIFdIRVJF
IG9iamVjdFN0b3JlSUQgPSA/IEFORCBrZXkgPSBDQVNUKD8gQVMgVEVYVCk7Il9zKTsKQEAgLTI3
MzMsNiArMjczMSwxMSBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6Oml0ZXJhdGVD
dXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFucwogICAgIHJldHVybiBJREJF
cnJvciB7IH07CiB9CiAKK0lEQlNlcmlhbGl6YXRpb25Db250ZXh0JiBTUUxpdGVJREJCYWNraW5n
U3RvcmU6OnNlcmlhbGl6YXRpb25Db250ZXh0KCkKK3sKKyAgICByZXR1cm4gbV9zZXJpYWxpemF0
aW9uQ29udGV4dC5nZXQoKTsKK30KKwogSURCT2JqZWN0U3RvcmVJbmZvKiBTUUxpdGVJREJCYWNr
aW5nU3RvcmU6OmluZm9Gb3JPYmplY3RTdG9yZSh1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZp
ZXIpCiB7CiAgICAgQVNTRVJUKG1fZGF0YWJhc2VJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5n
U3RvcmUuaAppbmRleCA0OTQwYzE1MTYxMTA0YWQ5Njk1OGZkMjM0MzdkYWM2OTk0MGNjNzE4Li5i
YjA1N2Q5NTE4Y2YwZjdiZTc5MDZjNzNmM2ViZmViOGI4YzJhMTQzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3Jl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlE
QkJhY2tpbmdTdG9yZS5oCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICBJREJFcnJvciBy
ZW5hbWVJbmRleChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRp
ZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRfdCBpbmRleElkZW50
aWZpZXIsIGNvbnN0IFN0cmluZyYgbmV3TmFtZSkgZmluYWw7CiAgICAgSURCRXJyb3Iga2V5RXhp
c3RzSW5PYmplY3RTdG9yZShjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9u
SWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBJREJLZXlE
YXRhJiwgYm9vbCYga2V5RXhpc3RzKSBmaW5hbDsKICAgICBJREJFcnJvciBkZWxldGVSYW5nZShj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0
X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBJREJLZXlSYW5nZURhdGEmKSBmaW5hbDsK
LSAgICBJREJFcnJvciBhZGRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFu
c2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYsIGNvbnN0IElEQktl
eURhdGEmLCBjb25zdCBJREJWYWx1ZSYpIGZpbmFsOworICAgIElEQkVycm9yIGFkZFJlY29yZChj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3Qg
SURCT2JqZWN0U3RvcmVJbmZvJiwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IEluZGV4SURUb0lu
ZGV4S2V5TWFwJiwgY29uc3QgSURCVmFsdWUmKSBmaW5hbDsKICAgICBJREJFcnJvciBnZXRSZWNv
cmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVp
bnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgSURC
R2V0UmVjb3JkRGF0YVR5cGUsIElEQkdldFJlc3VsdCYgb3V0VmFsdWUpIGZpbmFsOwogICAgIElE
QkVycm9yIGdldEFsbFJlY29yZHMoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2Fj
dGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkdldEFsbFJlY29yZHNEYXRhJiwgSURCR2V0QWxsUmVz
dWx0JiBvdXRWYWx1ZSkgZmluYWw7CiAgICAgSURCRXJyb3IgZ2V0SW5kZXhSZWNvcmQoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9i
amVjdFN0b3JlSWRlbnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBJbmRleGVkREI6
OkluZGV4UmVjb3JkVHlwZSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiwgSURCR2V0UmVzdWx0JiBv
dXRWYWx1ZSkgZmluYWw7CkBAIC04MSw2ICs4MSw4IEBAIHB1YmxpYzoKICAgICBJREJFcnJvciBv
cGVuQ3Vyc29yKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlm
aWVyLCBjb25zdCBJREJDdXJzb3JJbmZvJiwgSURCR2V0UmVzdWx0JiBvdXRSZXN1bHQpIGZpbmFs
OwogICAgIElEQkVycm9yIGl0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgY3Vy
c29ySWRlbnRpZmllciwgY29uc3QgSURCSXRlcmF0ZUN1cnNvckRhdGEmLCBJREJHZXRSZXN1bHQm
IG91dFJlc3VsdCkgZmluYWw7CiAKKyAgICBJREJTZXJpYWxpemF0aW9uQ29udGV4dCYgc2VyaWFs
aXphdGlvbkNvbnRleHQoKSBmaW5hbDsKKwogICAgIElEQk9iamVjdFN0b3JlSW5mbyogaW5mb0Zv
ck9iamVjdFN0b3JlKHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikgZmluYWw7CiAgICAg
dm9pZCBkZWxldGVCYWNraW5nU3RvcmUoKSBmaW5hbDsKIApAQCAtMTIyLDcgKzEyNCw3IEBAIHBy
aXZhdGU6CiAgICAgSURCRXJyb3IgdW5jaGVja2VkR2V0S2V5R2VuZXJhdG9yVmFsdWUoaW50NjRf
dCBvYmplY3RTdG9yZUlELCB1aW50NjRfdCYgb3V0VmFsdWUpOwogICAgIElEQkVycm9yIHVuY2hl
Y2tlZFNldEtleUdlbmVyYXRvclZhbHVlKGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgdWludDY0X3Qg
dmFsdWUpOwogCi0gICAgSURCRXJyb3IgdXBkYXRlQWxsSW5kZXhlc0ZvckFkZFJlY29yZChjb25z
dCBJREJPYmplY3RTdG9yZUluZm8mLCBjb25zdCBJREJLZXlEYXRhJiwgY29uc3QgVGhyZWFkU2Fm
ZURhdGFCdWZmZXImIHZhbHVlLCBpbnQ2NF90IHJlY29yZElEKTsKKyAgICBJREJFcnJvciB1cGRh
dGVBbGxJbmRleGVzRm9yQWRkUmVjb3JkKGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYsIGNvbnN0
IElEQktleURhdGEmLCBjb25zdCBJbmRleElEVG9JbmRleEtleU1hcCYsIGludDY0X3QgcmVjb3Jk
SUQpOwogICAgIElEQkVycm9yIHVwZGF0ZU9uZUluZGV4Rm9yQWRkUmVjb3JkKGNvbnN0IElEQklu
ZGV4SW5mbyYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYg
dmFsdWUsIGludDY0X3QgcmVjb3JkSUQpOwogICAgIElEQkVycm9yIHVuY2hlY2tlZFB1dEluZGV4
S2V5KGNvbnN0IElEQkluZGV4SW5mbyYsIGNvbnN0IElEQktleURhdGEmIGtleVZhbHVlLCBjb25z
dCBJbmRleEtleSYsIGludDY0X3QgcmVjb3JkSUQpOwogICAgIElEQkVycm9yIHVuY2hlY2tlZFB1
dEluZGV4UmVjb3JkKGludDY0X3Qgb2JqZWN0U3RvcmVJRCwgaW50NjRfdCBpbmRleElELCBjb25z
dCBJREJLZXlEYXRhJiBrZXlWYWx1ZSwgY29uc3QgSURCS2V5RGF0YSYgaW5kZXhLZXksIGludDY0
X3QgcmVjb3JkSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKaW5kZXggNDI5ZTQ0MmFlOTI2
OGVhNDFmMzA3NzRhZWVjN2JlMDBlMjg3MTdkNi4uM2M4YjdjY2E0MGIwZGJlN2VhNmU4NDljYzFj
ZWI1OWRmNDI3NGUxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCkBAIC0zOCw2ICszOCw3
IEBACiAjaW5jbHVkZSAiSURCU2VydmVyLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25JbmZv
LmgiCiAjaW5jbHVkZSAiSURCVmFsdWUuaCIKKyNpbmNsdWRlICJJbmRleEtleS5oIgogI2luY2x1
ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJTdG9yYWdlUXVvdGFNYW5hZ2VyLmgiCiAjaW5jbHVk
ZSAiVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmgiCkBAIC03MCw2ICs3MSwyOSBAQCBzdGF0
aWMgaW5saW5lIHVpbnQ2NF90IGVzdGltYXRlU2l6ZShjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRh
KQogICAgIHJldHVybiBzaXplOwogfQogCitzdGF0aWMgaW5saW5lIHVpbnQ2NF90IGVzdGltYXRl
U2l6ZShjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIGluZm8sIGNvbnN0IEluZGV4SURUb0luZGV4
S2V5TWFwJiBpbmRleEtleXMsIHVpbnQ2NF90IHByaW1hcnlLZXlTaXplKQoreworICAgIC8vIEVh
Y2ggSW5kZXhSZWNvcmQgaGFzIDUgY29sdW1uczoKKyAgICAvLyAgLSBpbmRleElELCBvYmplY3RT
dG9yZUlELCByZWNvcmRJRDogdGhlc2UgYXJlIHZhcmludHMsIGVzdGltYXRlIDQgYnl0ZXMgZWFj
aCA9IDEyIGJ5dGVzCisgICAgLy8gIC0gcHJpbWFyeSBrZXk6IHVzZSBwcmltYXJ5S2V5U2l6ZQor
ICAgIC8vICAtIHNlY29uZGFyeSBpbmRleCBrZXk6IHVzZSBlc3RpbWF0ZVNpemUoc2Vjb25kYXJ5
IGtleSkKKyAgICBzdGF0aWMgY29uc3RleHByIHVpbnQ2NF90IGJhc2VJbmRleFJvd1NpemUgPSAx
MjsKKyAgICB1aW50NjRfdCBzaXplID0gMDsKKworICAgIGZvciAoY29uc3QgYXV0byYgW2luZGV4
SUQsIGluZGV4S2V5XSA6IGluZGV4S2V5cykgeworICAgICAgICBhdXRvIGluZGV4SXRlcmF0b3Ig
PSBpbmZvLmluZGV4TWFwKCkuZmluZChpbmRleElEKTsKKyAgICAgICAgQVNTRVJUKGluZGV4SXRl
cmF0b3IgIT0gaW5mby5pbmRleE1hcCgpLmVuZCgpKTsKKworICAgICAgICBpZiAoaW5kZXhJdGVy
YXRvciAhPSBpbmZvLmluZGV4TWFwKCkuZW5kKCkgJiYgaW5kZXhJdGVyYXRvci0+dmFsdWUubXVs
dGlFbnRyeSgpKSB7CisgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHNlY29uZGFyeUtleSA6
IGluZGV4S2V5Lm11bHRpRW50cnkoKSkKKyAgICAgICAgICAgICAgICBzaXplICs9IChiYXNlSW5k
ZXhSb3dTaXplICsgcHJpbWFyeUtleVNpemUgKyBlc3RpbWF0ZVNpemUoc2Vjb25kYXJ5S2V5KSk7
CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgc2l6ZSArPSAoYmFzZUluZGV4Um93U2l6ZSAr
IHByaW1hcnlLZXlTaXplICsgZXN0aW1hdGVTaXplKGluZGV4S2V5LmFzT25lS2V5KCkpKTsKKyAg
ICB9CisKKyAgICByZXR1cm4gc2l6ZTsKK30KKwogc3RhdGljIGlubGluZSB1aW50NjRfdCBlc3Rp
bWF0ZVNpemUoY29uc3QgSURCVmFsdWUmIHZhbHVlKQogewogICAgIHVpbnQ2NF90IHNpemUgPSA0
OwpAQCAtNzEyLDE2ICs3MzYsNiBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRPckFkZChj
b25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgLy8gUXVvdGEgY2hlY2suCi0gICAgYXV0byB0YXNrU2l6ZSA9
IGRlZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBlc3RpbWF0ZVNpemUoa2V5RGF0YSkgKyBlc3Rp
bWF0ZVNpemUodmFsdWUpOwotICAgIGF1dG8qIG9iamVjdFN0b3JlID0gbV9kYXRhYmFzZUluZm8t
PmluZm9Gb3JFeGlzdGluZ09iamVjdFN0b3JlKG9iamVjdFN0b3JlSWRlbnRpZmllcik7Ci0gICAg
aWYgKG9iamVjdFN0b3JlKQotICAgICAgICB0YXNrU2l6ZSArPSBvYmplY3RTdG9yZS0+aW5kZXhO
YW1lcygpLnNpemUoKSAqIHRhc2tTaXplOwotICAgIGlmIChtX3NlcnZlci5yZXF1ZXN0U3BhY2Uo
bV9pZGVudGlmaWVyLm9yaWdpbigpLCB0YXNrU2l6ZSkgPT0gU3RvcmFnZVF1b3RhTWFuYWdlcjo6
RGVjaXNpb246OkRlbnkpIHsKLSAgICAgICAgY2FsbGJhY2soSURCRXJyb3IgeyBRdW90YUV4Y2Vl
ZGVkRXJyb3IsIHF1b3RhRXJyb3JNZXNzYWdlTmFtZSgiUHV0T3JBZGQiKSB9LCB1c2VkS2V5KTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIGJvb2wgdXNlZEtleUlzR2VuZXJhdGVkID0g
ZmFsc2U7CiAgICAgdWludDY0X3Qga2V5TnVtYmVyOwogICAgIGF1dG8gdHJhbnNhY3Rpb25JZGVu
dGlmaWVyID0gcmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCk7CkBAIC03NDEsNiAr
NzU1LDkgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6cHV0T3JBZGQoY29uc3QgSURCUmVxdWVz
dERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXkKICAgICB9IGVsc2UKICAgICAgICAgdXNl
ZEtleSA9IGtleURhdGE7CiAKKyAgICAvLyBHZW5lcmF0ZSBpbmRleCBrZXlzIHVwIGZyb250IGZv
ciBtb3JlIGFjY3VyYXRlIHF1b3RhIGNoZWNrLgorICAgIGF1dG8gaW5kZXhLZXlzID0gZ2VuZXJh
dGVJbmRleEtleU1hcEZvclZhbHVlKG1fYmFja2luZ1N0b3JlLT5zZXJpYWxpemF0aW9uQ29udGV4
dCgpLmV4ZWNTdGF0ZSgpLCAqb2JqZWN0U3RvcmVJbmZvLCB1c2VkS2V5LCB2YWx1ZSk7CisKICAg
ICBpZiAob3ZlcndyaXRlTW9kZSA9PSBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9k
ZTo6Tm9PdmVyd3JpdGUpIHsKICAgICAgICAgYm9vbCBrZXlFeGlzdHM7CiAgICAgICAgIGVycm9y
ID0gbV9iYWNraW5nU3RvcmUtPmtleUV4aXN0c0luT2JqZWN0U3RvcmUodHJhbnNhY3Rpb25JZGVu
dGlmaWVyLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVzZWRLZXksIGtleUV4aXN0cyk7CkBAIC03
NTIsNiArNzY5LDIwIEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6OnB1dE9yQWRkKGNvbnN0IElE
QlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICB9CisKKyAgICAvLyBRdW90YSBjaGVjay4KKyAgICBhdXRvIGtl
eVNpemUgPSBlc3RpbWF0ZVNpemUodXNlZEtleSk7CisgICAgYXV0byB2YWx1ZVNpemUgPSBlc3Rp
bWF0ZVNpemUodmFsdWUpOworICAgIGF1dG8gaW5kZXhTaXplID0gZXN0aW1hdGVTaXplKCpvYmpl
Y3RTdG9yZUluZm8sIGluZGV4S2V5cywga2V5U2l6ZSk7CisgICAgYXV0byB0YXNrU2l6ZSA9IGRl
ZmF1bHRXcml0ZU9wZXJhdGlvbkNvc3QgKyBrZXlTaXplICsgdmFsdWVTaXplICsgaW5kZXhTaXpl
OworCisgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRPckFkZCBxdW90
YSBjaGVjayB3aXRoIHRhc2sgc2l6ZTogJWxsdSBrZXkgc2l6ZTogJWxsdSB2YWx1ZSBzaXplOiAl
bGx1IGluZGV4IHNpemU6ICVsbHUiLCB0YXNrU2l6ZSwga2V5U2l6ZSwgdmFsdWVTaXplLCBpbmRl
eFNpemUpOworCisgICAgaWYgKG1fc2VydmVyLnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3Jp
Z2luKCksIHRhc2tTaXplKSA9PSBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueSkg
eworICAgICAgICBjYWxsYmFjayhJREJFcnJvciB7IFF1b3RhRXhjZWVkZWRFcnJvciwgcXVvdGFF
cnJvck1lc3NhZ2VOYW1lKCJQdXRPckFkZCIpIH0sIHVzZWRLZXkpOworICAgICAgICByZXR1cm47
CisgICAgfQorCiAgICAgLy8gSWYgYSByZWNvcmQgYWxyZWFkeSBleGlzdHMgaW4gc3RvcmUsIHRo
ZW4gcmVtb3ZlIHRoZSByZWNvcmQgZnJvbSBzdG9yZSB1c2luZyB0aGUgc3RlcHMgZm9yIGRlbGV0
aW5nIHJlY29yZHMgZnJvbSBhbiBvYmplY3Qgc3RvcmUuCiAgICAgLy8gVGhpcyBpcyBpbXBvcnRh
bnQgYmVjYXVzZSBmb3JtYWxseSBkZWxldGluZyBpdCBmcm9tIGZyb20gdGhlIG9iamVjdCBzdG9y
ZSBhbHNvIHJlbW92ZXMgaXQgZnJvbSB0aGUgYXBwcm9wcmlhdGUgaW5kZXhlcy4KICAgICBlcnJv
ciA9IG1fYmFja2luZ1N0b3JlLT5kZWxldGVSYW5nZSh0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9i
amVjdFN0b3JlSWRlbnRpZmllciwgdXNlZEtleSk7CkBAIC03NjAsNyArNzkxLDcgQEAgdm9pZCBV
bmlxdWVJREJEYXRhYmFzZTo6cHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3RE
YXRhLCBjb25zdCBJREJLZXkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGVycm9yID0g
bV9iYWNraW5nU3RvcmUtPmFkZFJlY29yZCh0cmFuc2FjdGlvbklkZW50aWZpZXIsICpvYmplY3RT
dG9yZUluZm8sIHVzZWRLZXksIHZhbHVlKTsKKyAgICBlcnJvciA9IG1fYmFja2luZ1N0b3JlLT5h
ZGRSZWNvcmQodHJhbnNhY3Rpb25JZGVudGlmaWVyLCAqb2JqZWN0U3RvcmVJbmZvLCB1c2VkS2V5
LCBpbmRleEtleXMsIHZhbHVlKTsKICAgICBpZiAoIWVycm9yLmlzTnVsbCgpKSB7CiAgICAgICAg
IGNhbGxiYWNrKGVycm9yLCB1c2VkS2V5KTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luZGV4S2V5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5kZXhLZXkuaAppbmRleCBjMzgw
YzQ5NmMyMzM0NWY0MzRiNjdmOGZkMDYyODA1MDliN2Q3NGZmLi44NzUxY2ExODQ0NGU1OTE2MTVh
NWE0ZDUyMTY1MGJjM2QwMzUxNzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSW5kZXhLZXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSW5kZXhLZXkuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiSURCS2V5RGF0YS5oIgorI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC00OCw2ICs0OSw4IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPElEQktleURhdGE+
IG1fa2V5czsKIH07CiAKK3R5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgSW5kZXhLZXk+IEluZGV4
SURUb0luZGV4S2V5TWFwOworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBF
TkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5N2Y2MzAxODFkZWY0YzgzZGEzYjJkNzc2NzYy
OWM2YjM2ZmMxOTMwLi5kZTY2ZTJiMTUwOTU2YzRkNDFkOWMyYmEzOTcyZjA4NTJhYTQxOGY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC0xNDUzLDcgKzE0NTMsNyBAQAogCQk1MTZEN0Q3MDFCQjVGMEJEMDBBRjdDNzcgLyogSURC
Q29ubmVjdGlvblRvU2VydmVyRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxODVGQ0JEMUJCNUNCNzcwMDEyODk4RiAvKiBJREJDb25uZWN0
aW9uVG9TZXJ2ZXJEZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTUxNkQ3RDcyMUJCNUYwQkQwMEFGN0M3NyAvKiBJREJDb25uZWN0aW9u
VG9DbGllbnREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTE2RDdENkUxQkI1RjA2NTAwQUY3Qzc3IC8qIElEQkNvbm5lY3Rpb25Ub0NsaWVu
dERlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNTE2RjdGNkQxQzMxRTM5QTAwRjExMURDIC8qIFNlcnZlck9wZW5EQlJlcXVlc3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNkY3RjZDMUMz
MUM3OUQwMEYxMTFEQyAvKiBTZXJ2ZXJPcGVuREJSZXF1ZXN0LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNTE3MTM4RjAxQkVEMUQxQTAwMEQ1RjAx
IC8qIEluZGV4S2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTcxMzhFRTFCRUQxRDE3MDAwRDVGMDEgLyogSW5kZXhLZXkuaCAqLzsgfTsKKwkJNTE3
MTM4RjAxQkVEMUQxQTAwMEQ1RjAxIC8qIEluZGV4S2V5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTcxMzhFRTFCRUQxRDE3MDAwRDVGMDEgLyogSW5k
ZXhLZXkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk1MTcxMzhGODFCRjEyOEJCMDAwRDVGMDEgLyogSW5kZXhWYWx1ZVN0b3JlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTcxMzhGNjFCRjEyMjYyMDAw
RDVGMDEgLyogSW5kZXhWYWx1ZVN0b3JlLmggKi87IH07CiAJCTUxNzEzOEZDMUJGM0FERjQwMDBE
NUYwMSAvKiBJREJDdXJzb3JJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTcxMzhGQTFCRjNBREFDMDAwRDVGMDEgLyogSURCQ3Vyc29ySW5mby5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxNzEz
OTA2MUJGNjRERUMwMDBENUYwMSAvKiBNZW1vcnlPYmplY3RTdG9yZUN1cnNvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3MTM5MDQxQkY2NERFMzAw
MEQ1RjAxIC8qIE1lbW9yeU9iamVjdFN0b3JlQ3Vyc29yLmggKi87IH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCmluZGV4IDU3OGMx
MzY3OWVkNzg5YTk4NjkzMTA1MmJjMDZhYTA0MDA1YzcyM2IuLjJmNWFmNmM3ZWRiZTdhNzljZTcx
MWEwZDhhNmU2YjRlODc1OWU1OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAi
SURCS2V5LmgiCiAjaW5jbHVkZSAiSURCS2V5RGF0YS5oIgogI2luY2x1ZGUgIklEQktleVBhdGgu
aCIKKyNpbmNsdWRlICJJREJPYmplY3RTdG9yZUluZm8uaCIKICNpbmNsdWRlICJJREJWYWx1ZS5o
IgogI2luY2x1ZGUgIkluZGV4S2V5LmgiCiAjaW5jbHVkZSAiSlNCbG9iLmgiCkBAIC00NjMsNiAr
NDY0LDM0IEBAIHZvaWQgZ2VuZXJhdGVJbmRleEtleUZvclZhbHVlKEpTR2xvYmFsT2JqZWN0JiBs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdCBJREJJbmRlCiAgICAgb3V0S2V5ID0gSW5kZXhLZXko
V1RGTW92ZShrZXlEYXRhcykpOwogfQogCitJbmRleElEVG9JbmRleEtleU1hcCBnZW5lcmF0ZUlu
ZGV4S2V5TWFwRm9yVmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVj
dCwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBzdG9yZUluZm8sIGNvbnN0IElEQktleURhdGEm
IGtleSwgY29uc3QgSURCVmFsdWUmIHZhbHVlKQoreworICAgIGF1dG8mIGluZGV4TWFwID0gc3Rv
cmVJbmZvLmluZGV4TWFwKCk7CisgICAgYXV0byBpbmRleENvdW50ID0gaW5kZXhNYXAuc2l6ZSgp
OworICAgIGlmICghaW5kZXhDb3VudCkKKyAgICAgICAgcmV0dXJuIEluZGV4SURUb0luZGV4S2V5
TWFwIHsgfTsKKworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIobGV4aWNhbEdsb2JhbE9iamVjdC52
bSgpKTsKKyAgICBhdXRvIGpzVmFsdWUgPSBkZXNlcmlhbGl6ZUlEQlZhbHVlVG9KU1ZhbHVlKGxl
eGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKKyAgICBpZiAoanNWYWx1ZS5pc1VuZGVmaW5lZE9y
TnVsbCgpKQorICAgICAgICByZXR1cm4gSW5kZXhJRFRvSW5kZXhLZXlNYXAgeyB9OworCisgICAg
SW5kZXhJRFRvSW5kZXhLZXlNYXAgaW5kZXhLZXlzOworICAgIGluZGV4S2V5cy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KGluZGV4Q291bnQpOworCisgICAgZm9yIChjb25zdCBhdXRvJiBbaW5kZXhJ
RCwgaW5kZXhJbmZvXSA6IGluZGV4TWFwKSB7CisgICAgICAgIEluZGV4S2V5IGluZGV4S2V5Owor
ICAgICAgICBnZW5lcmF0ZUluZGV4S2V5Rm9yVmFsdWUobGV4aWNhbEdsb2JhbE9iamVjdCwgaW5k
ZXhJbmZvLCBqc1ZhbHVlLCBpbmRleEtleSwgc3RvcmVJbmZvLmtleVBhdGgoKSwga2V5KTsKKwor
ICAgICAgICBpZiAoaW5kZXhLZXkuaXNOdWxsKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKwor
ICAgICAgICBpbmRleEtleXMuYWRkKGluZGV4SUQsIFdURk1vdmUoaW5kZXhLZXkpKTsKKyAgICB9
CisKKyAgICByZXR1cm4gaW5kZXhLZXlzOworfQorCiBPcHRpb25hbDxKU0M6OkpTVmFsdWU+IGRl
c2VyaWFsaXplSURCVmFsdWVXaXRoS2V5SW5qZWN0aW9uKEpTR2xvYmFsT2JqZWN0JiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBjb25zdCBJREJWYWx1ZSYgdmFsdWUsIGNvbnN0IElEQktleURhdGEmIGtl
eSwgY29uc3QgT3B0aW9uYWw8SURCS2V5UGF0aD4mIGtleVBhdGgpCiB7CiAgICAgYXV0byBqc1Zh
bHVlID0gZGVzZXJpYWxpemVJREJWYWx1ZVRvSlNWYWx1ZShsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5n
VXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0
aWVzLmgKaW5kZXggNDZkYTVhZWVkZDZhM2I1OTRiYTg5NjBmODUyYWE3MmRlMzIxYjdiMS4uOGFi
NzRmODg3OTBmNmRkZDIxNmYwNWE1ODBjM2IxZjQyM2Y4YzE2MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaApAQCAtMjksNiArMjksNyBA
QAogI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiSURCS2V5UGF0aC5o
IgorI2luY2x1ZGUgIkluZGV4S2V5LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CkBAIC00Miw2ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IElEQkluZGV4SW5mbzsKIGNsYXNzIElEQktleTsKIGNsYXNzIElEQktleURhdGE7CitjbGFzcyBJ
REJPYmplY3RTdG9yZUluZm87CiBjbGFzcyBJREJWYWx1ZTsKIGNsYXNzIEluZGV4S2V5OwogY2xh
c3MgSlNET01HbG9iYWxPYmplY3Q7CkBAIC01Miw2ICs1NCw4IEBAIGJvb2wgaW5qZWN0SURCS2V5
SW50b1NjcmlwdFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBjb25zdCBJREJLZXlEYXRhJiwg
SlNDOjpKCiAKIHZvaWQgZ2VuZXJhdGVJbmRleEtleUZvclZhbHVlKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmLCBjb25zdCBJREJJbmRleEluZm8mLCBKU0M6OkpTVmFsdWUsIEluZGV4S2V5JiBvdXRLZXks
IGNvbnN0IE9wdGlvbmFsPElEQktleVBhdGg+JiwgY29uc3QgSURCS2V5RGF0YSYpOwogCitJbmRl
eElEVG9JbmRleEtleU1hcCBnZW5lcmF0ZUluZGV4S2V5TWFwRm9yVmFsdWUoSlNDOjpKU0dsb2Jh
bE9iamVjdCYsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYsIGNvbnN0IElEQktleURhdGEmLCBj
b25zdCBJREJWYWx1ZSYpOworCiBSZWY8SURCS2V5PiBzY3JpcHRWYWx1ZVRvSURCS2V5KEpTQzo6
SlNHbG9iYWxPYmplY3QmLCBjb25zdCBKU0M6OkpTVmFsdWUmKTsKIAogSlNDOjpKU1ZhbHVlIGRl
c2VyaWFsaXplSURCVmFsdWVUb0pTVmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIGNvbnN0IElE
QlZhbHVlJiwgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+Jik7CmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDYxNWIyYWY1YjcyMWEz
YTNiYjg3MGNiNjUwZjBiYjdjMTQ3ZTNkZC4uYzRlNTRlNjFmZmViMTIzZGFiODUxYjk5YjFiZTE5
NWU4NzMwNDdlMSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTA1LTAzICBCZW4gTmhhbSAgPG5oYW1AYXBwbGUu
Y29tPgorCisgICAgICAgIEltcHJvdmUgYWNjdXJhY3kgb2YgSW5kZXhlZERCIGVzdGltYXRlZCB3
cml0ZSBzaXplIGNvbXB1dGF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTEzNjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGRlZCBhbiBBUEkgdGVzdCB0byBtYWtlIHN1cmUgdGhlIHF1b3RhIGNo
ZWNrIHByb2R1Y2VzIGEgc2FuZSBzaXplIHdoZW4gdXNpbmcgYSBsYXJnZQorICAgICAgICBudW1i
ZXIgb2YgaW5kaWNlcy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvSURCUXVvdGFDaGVjay5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lEQlF1b3RhQ2hlY2subW06IEFkZGVkLgorICAgICAg
ICAoLVtJREJRdW90YUNoZWNrTWVzc2FnZUhhbmRsZXIgZGVhbGxvY10pOgorICAgICAgICAoLVtJ
REJRdW90YUNoZWNrTWVzc2FnZUhhbmRsZXIgdXNlckNvbnRlbnRDb250cm9sbGVyOmRpZFJlY2Vp
dmVTY3JpcHRNZXNzYWdlOl0pOgorICAgICAgICAoLVtJREJRdW90YUNoZWNrTWVzc2FnZUhhbmRs
ZXIgcmVjZWl2ZWRTY3JpcHRNZXNzYWdlUG9pbnRlcl0pOgorICAgICAgICAoLVtJREJRdW90YUNo
ZWNrV2ViVmlld0RlbGVnYXRlIF93ZWJWaWV3OmRlY2lkZURhdGFiYXNlUXVvdGFGb3JTZWN1cml0
eU9yaWdpbjpjdXJyZW50UXVvdGE6Y3VycmVudE9yaWdpblVzYWdlOmN1cnJlbnREYXRhYmFzZVVz
YWdlOmV4cGVjdGVkVXNhZ2U6ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAgICAoVEVTVCk6CisK
IDIwMjAtMDQtMjggIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CiAK
ICAgICAgICAgQ3JlYXRlIGEgbWVjaGFuaXNtIHRvIGFkZCBtaXNzaW5nIElUUCBEYXRhYmFzZSB0
YWJsZXMgd2hlbiB0aGUgc2NoZW1hIGlzIHVwZGF0ZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggNzMxMjk1NDgwYzdhNzVjOWI5ZjZmMThjZTRlZjZhNmZlODA2ZmJmOS4uY2U0OGFlNTlmYzAy
NDQyMzA4NzEyM2YzMmJmYTAwNzBiZWNlYmFhNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTEwMzAsNiArMTAzMCw4IEBACiAJCUUzREVBODExMUYwQTU4OTAwMENCQzJFOCAvKiBUaHJlYWRH
cm91cC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
M0RFQTgxMDFGMEE1ODgwMDBDQkMyRTggLyogVGhyZWFkR3JvdXAuY3BwICovOyB9OwogCQlFM0Y4
QUI5MjI0MUFCOUNFMDAzRTJBN0UgLyogQWNjZXNzaWJpbGl0eVJlbW90ZVVJQXBwLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNGOEFCOTEyNDFBQjlD
RTAwM0UyQTdFIC8qIEFjY2Vzc2liaWxpdHlSZW1vdGVVSUFwcC5tbSAqLzsgfTsKIAkJRTUwMzZG
NzgyMTFCQzI1NDAwQkZEQkUyIC8qIGNvbG9yLWRyb3AuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNTAzNkY3NzIxMUJDMjI4MDBCRkRC
RTIgLyogY29sb3ItZHJvcC5odG1sICovOyB9OworCQlFQjg3RjZENTI0NUY0RTY4MDBFM0U0OUMg
LyogSURCUXVvdGFDaGVjay5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEVCODdGNkQzMjQ1RjRFNEYwMEUzRTQ5QyAvKiBJREJRdW90YUNoZWNrLm1tICov
OyB9OworCQlFQjg3RjZENjI0NUY0RTdBMDBFM0U0OUMgLyogSURCUXVvdGFDaGVjay5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVCODdG
NkQyMjQ1RjRFMkIwMEUzRTQ5QyAvKiBJREJRdW90YUNoZWNrLmh0bWwgKi87IH07CiAJCUVDQTY4
MENFMUU2OENDMDkwMDczMUQyMCAvKiBTdHJpbmdVdGlsaXRpZXMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQ0E2ODBDRDFFNjhDQzA5MDA3MzFEMjAg
LyogU3RyaW5nVXRpbGl0aWVzLm1tICovOyB9OwogCQlGNDAyRjU2QzIzRUNDMkZCMDA4NjU1NDkg
LyogVUlXS0ludGVyYWN0aW9uVmlld1Byb3RvY29sLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQwMkY1NkIyM0VDQzJGQjAwODY1NTQ5IC8qIFVJV0tJ
bnRlcmFjdGlvblZpZXdQcm90b2NvbC5tbSAqLzsgfTsKIAkJRjQwN0ZFMzkxRjFEMERGQzAwMTdD
RjI1IC8qIGVub3Jtb3VzLnN2ZyBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGNDA3RkUzODFGMUQwREU2MDAxN0NGMjUgLyogZW5vcm1vdXMuc3Zn
ICovOyB9OwpAQCAtMTM1Miw2ICsxMzU0LDcgQEAKIAkJCQk1MTEwRkNGMTFFMDFDRDY0MDA2RjhE
MEIgLyogSURCSW5kZXhVcGdyYWRlVG9WMi5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJ
CTkzN0I1NjlFMjNDRDIzREIwMDJBRTY0MCAvKiBJREJPYmplY3RTdG9yZUluZm9VcGdyYWRlLnNx
bGl0ZTMgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJOTNCQ0JDODQyM0NDNkY0NDAwQ0EyMjIx
IC8qIElEQk9iamVjdFN0b3JlSW5mb1VwZ3JhZGVUb1YyLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8sCisJCQkJRUI4N0Y2RDYyNDVGNEU3QTAwRTNFNDlDIC8qIElEQlF1b3RhQ2hlY2suaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNDFBQjlBNDFFRjQ2OTZCMDA4M0ZBMDggLyogaW1h
Z2UtYW5kLWNvbnRlbnRlZGl0YWJsZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0
RTBBMkI0MjEyMjQwMkIwMEFGN0M3RiAvKiBpbWFnZS1hbmQtZmlsZS11cGxvYWQuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLywKIAkJCQlGNDFBQjlBNTFFRjQ2OTZCMDA4M0ZBMDggLyogaW1hZ2Ut
YW5kLXRleHRhcmVhLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0yNjU3LDYgKzI2NjAs
OCBAQAogCQlFNEE3NTdEMzE3OEFFQTVCMDBCNUQ3QTQgLyogRGVxdWUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gRGVxdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNEM5QUJD
NzFCM0RCMTcxMDA0MEE5ODcgLyogUnVuTG9vcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSdW5Mb29wLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RTUwMzZGNzcyMTFCQzIyODAwQkZEQkUyIC8qIGNvbG9yLWRyb3AuaHRtbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuaHRtbDsgcGF0aCA9ICJjb2xvci1kcm9wLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlFQjg3RjZEMjI0NUY0RTJCMDBFM0U0OUMgLyogSURCUXVvdGFDaGVjay5odG1sICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gSURCUXVvdGFDaGVjay5odG1sOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlFQjg3RjZEMzI0NUY0RTRGMDBFM0U0OUMgLyogSURCUXVvdGFD
aGVjay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IElEQlF1b3Rh
Q2hlY2subW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVDNzlGMTY4QkU0NTRFNTc5
RTQxN0IwNSAvKiBNYXJrYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBNYXJrYWJsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVDQTY4MENE
MUU2OENDMDkwMDczMUQyMCAvKiBTdHJpbmdVdGlsaXRpZXMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTdHJpbmdVdGlsaXRpZXMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUYzRkMzRUUyMTM2NzhCNzMwMDEyNkE2NSAvKiBsaWJndGVzdC5hICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gYXJjaGl2ZS5h
cjsgcGF0aCA9IGxpYmd0ZXN0LmE7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07
CkBAIC0zMDY5LDYgKzMwNzQsNyBAQAogCQkJCTUxMDQ3Nzc1MUQyOThFMDMwMDk3NDdFQiAvKiBJ
REJEZWxldGVSZWNvdmVyeS5tbSAqLywKIAkJCQk1MTEwRkNFRjFFMDFDQkFBMDA2RjhEMEIgLyog
SURCSW5kZXhVcGdyYWRlVG9WMi5tbSAqLywKIAkJCQk5M0JDQkM4MDIzQ0M2RUU4MDBDQTIyMjEg
LyogSURCT2JqZWN0U3RvcmVJbmZvVXBncmFkZVRvVjIubW0gKi8sCisJCQkJRUI4N0Y2RDMyNDVG
NEU0RjAwRTNFNDlDIC8qIElEQlF1b3RhQ2hlY2subW0gKi8sCiAJCQkJNDlBRUVGNkIyNDA3MzU4
NjAwQzg3RTRDIC8qIEluQXBwQnJvd3NlclByaXZhY3kubW0gKi8sCiAJCQkJNTFBNTg3ODQxRDI3
MkVGMzAwNEJBOUFGIC8qIEluZGV4ZWREQkRhdGFiYXNlUHJvY2Vzc0tpbGwubW0gKi8sCiAJCQkJ
Q0FCMEZGNTQyMjMzMkMzQTAwNkNBNUIwIC8qIEluZGV4ZWREQkZpbGVOYW1lLm1tICovLApAQCAt
MzU0Myw2ICszNTQ5LDcgQEAKIAkJCQk1MTEwRkNGMDFFMDFDRDUzMDA2RjhEMEIgLyogSURCSW5k
ZXhVcGdyYWRlVG9WMi5odG1sICovLAogCQkJCTkzQkNCQzgxMjNDQzZFRjUwMENBMjIyMSAvKiBJ
REJPYmplY3RTdG9yZUluZm9VcGdyYWRlLnNxbGl0ZTMgKi8sCiAJCQkJOTNCQ0JDODIyM0NDNkVG
NTAwQ0EyMjIxIC8qIElEQk9iamVjdFN0b3JlSW5mb1VwZ3JhZGVUb1YyLmh0bWwgKi8sCisJCQkJ
RUI4N0Y2RDIyNDVGNEUyQjAwRTNFNDlDIC8qIElEQlF1b3RhQ2hlY2suaHRtbCAqLywKIAkJCQlG
NDFBQjk5OTFFRjQ2OTJDMDA4M0ZBMDggLyogaW1hZ2UtYW5kLWNvbnRlbnRlZGl0YWJsZS5odG1s
ICovLAogCQkJCUY0RTBBMkIzMjEyMjNGMkQwMEFGN0M3RiAvKiBpbWFnZS1hbmQtZmlsZS11cGxv
YWQuaHRtbCAqLywKIAkJCQlGNDFBQjk5MzFFRjQ2OTJDMDA4M0ZBMDggLyogaW1hZ2UtYW5kLXRl
eHRhcmVhLmh0bWwgKi8sCkBAIC00OTIwLDYgKzQ5MjcsNyBAQAogCQkJCTUxMDQ3Nzc4MUQyOTky
M0IwMDk3NDdFQiAvKiBJREJEZWxldGVSZWNvdmVyeS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUx
MTBGQ0ZBMUUwMUNEQjgwMDZGOEQwQiAvKiBJREJJbmRleFVwZ3JhZGVUb1YyLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOTNCQ0JDODMyM0NDNkYyQTAwQ0EyMjIxIC8qIElEQk9iamVjdFN0b3JlSW5m
b1VwZ3JhZGVUb1YyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRUI4N0Y2RDUyNDVGNEU2ODAwRTNF
NDlDIC8qIElEQlF1b3RhQ2hlY2subW0gaW4gU291cmNlcyAqLywKIAkJCQk0OUFFRUY2RDI0MDcz
NTlEMDBDODdFNEMgLyogSW5BcHBCcm93c2VyUHJpdmFjeS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTUxQTU4Nzg2MUQyNzNBQTkwMDRCQTlBRiAvKiBJbmRleGVkREJEYXRhYmFzZVByb2Nlc3NLaWxs
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0FCMEZGNTUyMjMzMkM1NzAwNkNBNUIwIC8qIEluZGV4
ZWREQkZpbGVOYW1lLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lEQlF1b3RhQ2hlY2suaHRtbCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSURCUXVvdGFDaGVjay5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjZiZjM2MjhiNTQ4MzZjOTZlM2JmNmQzMzhlY2YxNzU1NjI3OTJiODIKLS0tIC9kZXYvbnVsbAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lEQlF1b3RhQ2hlY2su
aHRtbApAQCAtMCwwICsxLDUxIEBACis8c2NyaXB0PgorCitsZXQga2V5ID0gbmV3IEludDhBcnJh
eSgxXzAwMCk7CitsZXQgb2JqID0geworICAgIGE6IG5ldyBJbnQ4QXJyYXkoNV8wMDApLAorICAg
IGI6IG5ldyBJbnQ4QXJyYXkoMjVfMDAwKSwKKyAgICBkYXRhOiBuZXcgSW50OEFycmF5KDEyNV8w
MDApLAorfTsKKworZnVuY3Rpb24gb3BlbklEQkFzeW5jKCkgeworICAgIHJldHVybiBuZXcgUHJv
bWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CisgICAgICAgIGxldCByZXEgPSBpbmRleGVkREIu
b3BlbigndGVzdC1xdW90YS1jaGVjaycpOworICAgICAgICByZXEub251cGdyYWRlbmVlZGVkID0g
ZSA9PiB7CisgICAgICAgICAgICBsZXQgZGIgPSBlLnRhcmdldC5yZXN1bHQ7CisgICAgICAgICAg
ICBsZXQgc3RvcmUgPSBkYi5jcmVhdGVPYmplY3RTdG9yZSgnb2JqZWN0cycpOworCisgICAgICAg
ICAgICAvLyBJbiBvbGRlciBXZWJLaXRzLCB0aGUgZXN0aW1hdGVkIHB1dCBzaXplIHNjYWxlZCB3
aXRoIHRoZSBudW1iZXIgb2YgaW5kaWNlcyAoMjExMzYwKS4KKyAgICAgICAgICAgIHN0b3JlLmNy
ZWF0ZUluZGV4KCdhJywgJ2EnKTsKKyAgICAgICAgICAgIHN0b3JlLmNyZWF0ZUluZGV4KCdiJywg
J2InKTsKKyAgICAgICAgICAgIHN0b3JlLmNyZWF0ZUluZGV4KCdjJywgJ2MnKTsKKyAgICAgICAg
ICAgIHN0b3JlLmNyZWF0ZUluZGV4KCdkJywgJ2QnKTsKKyAgICAgICAgICAgIHN0b3JlLmNyZWF0
ZUluZGV4KCdlJywgJ2UnKTsKKworICAgICAgICAgICAgcmV0dXJuIGRiOworICAgICAgICB9Cisg
ICAgICAgIHJlcS5vbnN1Y2Nlc3MgPSBlID0+IHJlc29sdmUoZS50YXJnZXQucmVzdWx0KTsKKyAg
ICAgICAgcmVxLm9uZXJyb3IgPSByZWplY3Q7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIGluc2Vy
dFJvd0FzeW5jKGRiKSB7CisgICAgbGV0IHR4bjsKKyAgICBsZXQgdHhuUHJvbWlzZSA9IG5ldyBQ
cm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgdHhuID0gZGIudHJhbnNhY3Rp
b24oJ29iamVjdHMnLCAncmVhZHdyaXRlJyk7CisgICAgICAgIFt0eG4ub25jb21wbGV0ZSwgdHhu
Lm9uZXJyb3JdID0gW3Jlc29sdmUsIHJlamVjdF07CisgICAgfSk7CisKKyAgICBsZXQgcmVxUHJv
bWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgbGV0IHJl
cSA9IHR4bi5vYmplY3RTdG9yZSgnb2JqZWN0cycpLnB1dChvYmosIGtleSk7CisgICAgICAgIFty
ZXEub25zdWNjZXNzLCByZXEub25lcnJvcl0gPSBbcmVzb2x2ZSwgcmVqZWN0XTsKKyAgICB9KTsK
KworICAgIHJldHVybiBQcm9taXNlLmFsbChbdHhuUHJvbWlzZSwgcmVxUHJvbWlzZV0pLnRoZW4o
XyA9PiBkYik7Cit9CisKK29wZW5JREJBc3luYygpCisgICAgLnRoZW4oaW5zZXJ0Um93QXN5bmMp
CisgICAgLnRoZW4oXyA9PiB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy50ZXN0SGFuZGxl
ci5wb3N0TWVzc2FnZSgnU3VjY2VzcycpKQorICAgIC5jYXRjaChlID0+IHdpbmRvdy53ZWJraXQu
bWVzc2FnZUhhbmRsZXJzLnRlc3RIYW5kbGVyLnBvc3RNZXNzYWdlKCdGYWlsZWQgaW5zZXJ0aW5n
IHJvdzogJyArIChlPy50YXJnZXQ/LmVycm9yIHx8IGUpKSkKKworPC9zY3JpcHQ+CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lEQlF1b3RhQ2hlY2su
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0lEQlF1b3RhQ2hlY2su
bW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uM2UxMTRhMTQ2YTg3YjNhYTMzZjljNWY5MGFhMTgxYjlkMmQ3OWQ2MQot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
SURCUXVvdGFDaGVjay5tbQpAQCAtMCwwICsxLDE0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
ImNvbmZpZy5oIgorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVz
dC5oIgorI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vz
c1Bvb2xQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQ
cml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUu
aD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg+CisjaW1wb3J0
IDxXZWJLaXQvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmg+CisjaW1wb3J0IDxXZWJLaXQvV2ViS2l0
Lmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg+CisjaW1w
b3J0IDxXZWJLaXQvX1dLVXNlclN0eWxlU2hlZXQuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tXZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgor
CitAaW50ZXJmYWNlIElEQlF1b3RhQ2hlY2tNZXNzYWdlSGFuZGxlciA6IE5TT2JqZWN0IDxXS1Nj
cmlwdE1lc3NhZ2VIYW5kbGVyPgorQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgYm9vbCBy
ZWNlaXZlZFNjcmlwdE1lc3NhZ2U7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBXS1Nj
cmlwdE1lc3NhZ2UgKmxhc3RTY3JpcHRNZXNzYWdlOworQGVuZAorCitAaW1wbGVtZW50YXRpb24g
SURCUXVvdGFDaGVja01lc3NhZ2VIYW5kbGVyCisKK0BzeW50aGVzaXplIHJlY2VpdmVkU2NyaXB0
TWVzc2FnZT1fcmVjZWl2ZWRTY3JpcHRNZXNzYWdlOworQHN5bnRoZXNpemUgbGFzdFNjcmlwdE1l
c3NhZ2U9X2xhc3RTY3JpcHRNZXNzYWdlOworCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBbX2xh
c3RTY3JpcHRNZXNzYWdlIHJlbGVhc2VdOworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAo
dm9pZCl1c2VyQ29udGVudENvbnRyb2xsZXI6KFdLVXNlckNvbnRlbnRDb250cm9sbGVyICopdXNl
ckNvbnRlbnRDb250cm9sbGVyIGRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOihXS1NjcmlwdE1lc3Nh
Z2UgKiltZXNzYWdlCit7CisgICAgX3JlY2VpdmVkU2NyaXB0TWVzc2FnZSA9IFlFUzsKKyAgICBz
ZWxmLmxhc3RTY3JpcHRNZXNzYWdlID0gbWVzc2FnZTsKK30KKworLSAoYm9vbCAqKXJlY2VpdmVk
U2NyaXB0TWVzc2FnZVBvaW50ZXIKK3sKKyAgICByZXR1cm4gJl9yZWNlaXZlZFNjcmlwdE1lc3Nh
Z2U7Cit9CisKK0BlbmQKKworQGludGVyZmFjZSBJREJRdW90YUNoZWNrV2ViVmlld0RlbGVnYXRl
IDogTlNPYmplY3QgPFdLVUlEZWxlZ2F0ZT4KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24p
IHVpbnQ2NF90IGN1cnJlbnRRdW90YTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIHVp
bnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24p
IHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlOworQHByb3BlcnR5IChub25hdG9taWMsIGFz
c2lnbikgdWludDY0X3QgZXhwZWN0ZWRVc2FnZTsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIElE
QlF1b3RhQ2hlY2tXZWJWaWV3RGVsZWdhdGUKKworQHN5bnRoZXNpemUgY3VycmVudFF1b3RhPV9j
dXJyZW50UXVvdGE7CitAc3ludGhlc2l6ZSBjdXJyZW50T3JpZ2luVXNhZ2U9X2N1cnJlbnRPcmln
aW5Vc2FnZTsKK0BzeW50aGVzaXplIGN1cnJlbnREYXRhYmFzZVVzYWdlPV9jdXJyZW50RGF0YWJh
c2VVc2FnZTsKK0BzeW50aGVzaXplIGV4cGVjdGVkVXNhZ2U9X2V4cGVjdGVkVXNhZ2U7CisKKy0g
KHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlRGF0YWJhc2VRdW90YUZv
clNlY3VyaXR5T3JpZ2luOihXS1NlY3VyaXR5T3JpZ2luICopc2VjdXJpdHlPcmlnaW4gY3VycmVu
dFF1b3RhOih1bnNpZ25lZCBsb25nIGxvbmcpY3VycmVudFF1b3RhIGN1cnJlbnRPcmlnaW5Vc2Fn
ZToodW5zaWduZWQgbG9uZyBsb25nKWN1cnJlbnRPcmlnaW5Vc2FnZSBjdXJyZW50RGF0YWJhc2VV
c2FnZToodW5zaWduZWQgbG9uZyBsb25nKWN1cnJlbnREYXRhYmFzZVVzYWdlIGV4cGVjdGVkVXNh
Z2U6KHVuc2lnbmVkIGxvbmcgbG9uZylleHBlY3RlZFVzYWdlIGRlY2lzaW9uSGFuZGxlcjoodm9p
ZCAoXikodW5zaWduZWQgbG9uZyBsb25nIG5ld1F1b3RhKSlkZWNpc2lvbkhhbmRsZXIKK3sKKyAg
ICBfY3VycmVudFF1b3RhID0gY3VycmVudFF1b3RhOworICAgIF9jdXJyZW50T3JpZ2luVXNhZ2Ug
PSBjdXJyZW50T3JpZ2luVXNhZ2U7CisgICAgX2N1cnJlbnREYXRhYmFzZVVzYWdlID0gY3VycmVu
dERhdGFiYXNlVXNhZ2U7CisgICAgX2V4cGVjdGVkVXNhZ2UgPSBleHBlY3RlZFVzYWdlOworCisg
ICAgZGVjaXNpb25IYW5kbGVyKDEuMSAqIChfY3VycmVudE9yaWdpblVzYWdlICsgX2V4cGVjdGVk
VXNhZ2UpKTsKK30KKworQGVuZAorCitURVNUKEluZGV4ZWREQiwgQ29tcHV0ZXNBY2N1cmF0ZVB1
dE9wZXJhdGlvbkRpc2tVc2FnZUVzdGltYXRlKQoreworICAgIF9XS1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uICpzdG9yZUNvbmZpZ3VyYXRpb24gPSBbW1tfV0tXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIHN0b3JlQ29uZmln
dXJhdGlvbi5wZXJPcmlnaW5TdG9yYWdlUXVvdGEgPSAxMDAgKiAxMDAwOyAvLyBlbm91Z2ggdG8g
Y3JlYXRlIHRoZSBEQiBidXQgbm90IGVub3VnaCB0byBwZXJmb3JtIHRoZSBwdXQgb3BlcmF0aW9u
CisKKyAgICBXS1dlYnNpdGVEYXRhU3RvcmUgKmRhdGFTdG9yZSA9IFtbW1dLV2Vic2l0ZURhdGFT
dG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpzdG9yZUNvbmZpZ3VyYXRpb25dIGF1
dG9yZWxlYXNlXTsKKworICAgIF9fYmxvY2sgYm9vbCByZW1vdmVkRGF0YSA9IGZhbHNlOworICAg
IFtkYXRhU3RvcmUgcmVtb3ZlRGF0YU9mVHlwZXM6W1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxXZWJz
aXRlRGF0YVR5cGVzXSBtb2RpZmllZFNpbmNlOltOU0RhdGUgZGlzdGFudFBhc3RdIGNvbXBsZXRp
b25IYW5kbGVyOl4oKSB7CisgICAgICAgIHJlbW92ZWREYXRhID0gdHJ1ZTsKKyAgICB9XTsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlbW92ZWREYXRhKTsKKworICAgIFJldGFpblB0
cjxJREJRdW90YUNoZWNrTWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbSURCUXVv
dGFDaGVja01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAgUmV0YWluUHRyPFdLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNldFdlYnNpdGVE
YXRhU3RvcmU6ZGF0YVN0b3JlXTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250
cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpoYW5kbGVyLmdldCgpIG5hbWU6QCJ0ZXN0
SGFuZGxlciJdOworCisgICAgW1tjb25maWd1cmF0aW9uIHByb2Nlc3NQb29sXSBfdGVybWluYXRl
TmV0d29ya1Byb2Nlc3NdOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgCisgICAgYXV0byB1aURlbGVn
YXRlID0gYWRvcHROUyhbW0lEQlF1b3RhQ2hlY2tXZWJWaWV3RGVsZWdhdGUgYWxsb2NdIGluaXRd
KTsKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOnVpRGVsZWdhdGUuZ2V0KCldOworCisgICAg
Ly8gTXVzdCBiZSB2aXNpYmxlIGZvciB0aGUgcXVvdGEgY2FsbGJhY2sgdG8gb2NjdXIuCisjaWYg
UExBVEZPUk0oTUFDKQorICAgICAgICBbd2ViVmlldy5nZXQoKS53aW5kb3cgc2V0SXNWaXNpYmxl
OllFU107CisjZWxzZQorICAgICAgICB3ZWJWaWV3LmdldCgpLndpbmRvdy5oaWRkZW4gPSBOTzsK
KyNlbmRpZgorCisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1
ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiSURCUXVv
dGFDaGVjayIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRB
UEkucmVzb3VyY2VzIl1dOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworCisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKFtoYW5kbGVyIHJlY2VpdmVkU2NyaXB0TWVzc2Fn
ZVBvaW50ZXJdKTsKKyAgICBFWFBFQ1RfU1RSRVEoIlN1Y2Nlc3MiLCBbW1toYW5kbGVyIGxhc3RT
Y3JpcHRNZXNzYWdlXSBib2R5XSBVVEY4U3RyaW5nXSk7CisKKyAgICAvLyBTZWUga2V5IGFuZCBv
YmogaW4gSURCUXVvdGFDaGVjay5odG1sLgorICAgIHVpbnQ2NF90IGtleVNpemUgPSAxMDAwOwor
ICAgIHVpbnQ2NF90IGFTaXplID0gNTAwMDsKKyAgICB1aW50NjRfdCBiU2l6ZSA9IDI1MDAwOwor
ICAgIHVpbnQ2NF90IGRhdGFTaXplID0gMTI1MDAwOworCisgICAgdWludDY0X3QgZXhwZWN0ZWRS
b3dTaXplID0ga2V5U2l6ZSArIGFTaXplICsgYlNpemUgKyBkYXRhU2l6ZTsKKyAgICB1aW50NjRf
dCBleHBlY3RlZEluZGV4QVNpemUgPSBhU2l6ZSArIGtleVNpemU7CisgICAgdWludDY0X3QgZXhw
ZWN0ZWRJbmRleEJTaXplID0gYlNpemUgKyBrZXlTaXplOworICAgIHVpbnQ2NF90IGV4cGVjdGVk
UHV0U2l6ZSA9IGV4cGVjdGVkUm93U2l6ZSArIGV4cGVjdGVkSW5kZXhBU2l6ZSArIGV4cGVjdGVk
SW5kZXhCU2l6ZTsKKworICAgIEVYUEVDVF9ORUFSKGV4cGVjdGVkUHV0U2l6ZSwgW3VpRGVsZWdh
dGUgZXhwZWN0ZWRVc2FnZV0sIGV4cGVjdGVkUHV0U2l6ZSAvIDEwKTsKK30KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0Nzhk
MjFkNjIzZTNhNDA1M2VlYmVlYzY4YjA1MDFjZTg1YzY3M2QyLi5jMTc3NDg2ZDExOTE0ZmZlYjAz
ZmM1ZGMxZTVhZGIzOTAyYWI0YTlmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMDUtMDMg
IEJlbiBOaGFtICA8bmhhbUBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wcm92ZSBhY2N1cmFjeSBv
ZiBJbmRleGVkREIgZXN0aW1hdGVkIHdyaXRlIHNpemUgY29tcHV0YXRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTM2MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgbGF5b3V0IHRlc3Qg
dG8gY2hlY2sgdGhhdCB0aGUgc2l6ZSBlc3RpbWF0ZSBhc3NvY2lhdGVkIHdpdGggYWRkaW5nIGFu
IG9iamVjdCB0byBhCisgICAgICAgIHN0b3JlIHdpdGggbWFueSBpbmRpY2VzIGlzIHJlYXNvbmFi
bGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnM6IFNraXAg
dGVzdCBvbiBNYWMgV0sxIHNpbmNlIGl0IGRvZXNuJ3QgaW1wbGVtZW50IHF1b3RhIGNoZWNrcy4K
KyAgICAgICAgKiBwbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9uczogU2tpcCB0ZXN0IG9uIFdp
bmRvd3Mgc2luY2UgaXQgZG9lc24ndCBpbXBsZW1lbnQgcXVvdGEgY2hlY2tzLgorICAgICAgICAq
IHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zdG9yYWdlLWxpbWl0LXdpdGgtaW5kaWNlcy5q
czogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvc3RvcmFnZS1saW1pdC13aXRo
LWluZGljZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRk
Yi9zdG9yYWdlLWxpbWl0LXdpdGgtaW5kaWNlcy5odG1sOiBBZGRlZC4KKwogMjAyMC0wNC0yOCAg
UGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVT
U0lPTihyMjYwODIyKTogQnJva2UgbWVkaWEvdHJhY2svdHJhY2staW4tYmFuZC1tZXRhZGF0YS1k
aXNwbGF5LW9yZGVyLmh0bWwgb24gTWFjCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sx
L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggOTg3NzljMTAwN2QzN2I3MTZjYTRiNmEyZWQ3ZmQ0MGJm
OTA1YjFkMS4uZTJjN2QxNjJjZDUwOThmODBkNmVkMWE5YjMzMTdiMzgwZjE1MGJlNSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMzI4LDYg
KzMyOCw3IEBAIGh0dHAvdGVzdHMvSW5kZXhlZERCL3N0b3JhZ2UtbGltaXQuaHR0cHMuaHRtbCBb
IFNraXAgXQogaHR0cC90ZXN0cy9JbmRleGVkREIvc3RvcmFnZS1saW1pdC0xLmh0dHBzLmh0bWwg
WyBTa2lwIF0KIGh0dHAvdGVzdHMvSW5kZXhlZERCL3N0b3JhZ2UtbGltaXQtMi5odHRwcy5odG1s
IFsgU2tpcCBdCiBzdG9yYWdlL2luZGV4ZWRkYi9zdG9yYWdlLWxpbWl0Lmh0bWwgWyBTa2lwIF0K
K3N0b3JhZ2UvaW5kZXhlZGRiL3N0b3JhZ2UtbGltaXQtd2l0aC1pbmRpY2VzLmh0bWwgWyBTa2lw
IF0KIHN0b3JhZ2UvaW5kZXhlZGRiL3JlcXVlc3Qtc2l6ZS1lc3RpbWF0ZS5odG1sIFsgU2tpcCBd
CiAKICMgU2tpcCBXZWJSVEMgZm9yIG5vdyBpbiBXSzEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2lu
L1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYTYyYWQyNDUwMjZjYzI2YzUwZGI5ZWIxNzA4ZjQwZGE5
N2MyZDk4Yy4uNzM2ZjRjODVmZjVhOWRhNWU5NzgwMTlkNDZhY2JhOGEwMzdjNjM4MiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTI0MDQsNiArMjQwNCw3
IEBAIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd2ViLWFwcHMvMDEyLmh0bWwKIGh0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3Qvd2ViLWFwcHMvMDEzLmh0bWwKIAogc3RvcmFnZS9pbmRleGVkZGIv
c3RvcmFnZS1saW1pdC5odG1sIFsgU2tpcCBdCitzdG9yYWdlL2luZGV4ZWRkYi9zdG9yYWdlLWxp
bWl0LXdpdGgtaW5kaWNlcy5odG1sIFsgU2tpcCBdCiBzdG9yYWdlL2luZGV4ZWRkYi9yZXF1ZXN0
LXNpemUtZXN0aW1hdGUuaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy9JbmRleGVkREIvc3RvcmFn
ZS1saW1pdC5odHRwcy5odG1sIFsgU2tpcCBdCiBodHRwL3Rlc3RzL0luZGV4ZWREQi9zdG9yYWdl
LWxpbWl0LTEuaHR0cHMuaHRtbCBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3N0b3JhZ2UtbGltaXQtd2l0aC1pbmRpY2VzLmpzIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3N0b3JhZ2UtbGltaXQtd2l0
aC1pbmRpY2VzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVmNmY1MzhkNjQzYzUyNTY4YjJiMjk5NGQ4MzEzMDJi
ZDI2YTQyMTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9yZXNvdXJjZXMvc3RvcmFnZS1saW1pdC13aXRoLWluZGljZXMuanMKQEAgLTAsMCArMSw1MCBA
QAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgeworICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LmpzJyk7CisgICAgaW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7
Cit9CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLnNldEFsbG93U3Rv
cmFnZVF1b3RhSW5jcmVhc2UoZmFsc2UpOworCit2YXIgcXVvdGEgPSA0MDAgKiAxMDI0OyAvLyBk
ZWZhdWx0IHF1b3RhIGZvciB0ZXN0aW5nLgordmFyIG51bUluZGljZXMgPSAxMDsKKworZGVzY3Jp
cHRpb24oIlRoaXMgdGVzdCBjaGVja3MgdGhhdCB0aGUgc2l6ZSBlc3RpbWF0ZSBhc3NvY2lhdGVk
IHdpdGggYWRkaW5nIGFuIG9iamVjdCB0byBhIHN0b3JlIHdpdGggbWFueSBpbmRpY2VzIGlzIHJl
YXNvbmFibGUuIik7CisKK2luZGV4ZWREQlRlc3QocHJlcGFyZURhdGFiYXNlLCBvbk9wZW5TdWNj
ZXNzKTsKKworZnVuY3Rpb24gcHJlcGFyZURhdGFiYXNlKGV2ZW50KQoreworICAgIHByZWFtYmxl
KGV2ZW50KTsKKworICAgIGV2YWxBbmRMb2coImRiID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwor
ICAgIGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsK
KworICAgIGxldCBkYiA9IGV2ZW50LnRhcmdldDsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51
bUluZGljZXM7IGkrKykgeworICAgICAgICBsZXQgaW5kZXhOYW1lID0gJ2EnICsgaTsKKyAgICAg
ICAgc3RvcmUuY3JlYXRlSW5kZXgoaW5kZXhOYW1lLCBpbmRleE5hbWUpOworICAgIH0KK30KKwor
ZnVuY3Rpb24gb25PcGVuU3VjY2VzcyhldmVudCkKK3sKKyAgICBwcmVhbWJsZShldmVudCk7Cisg
ICAgZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJnZXQucmVzdWx0Iik7CisgICAgZXZhbEFuZExv
Zygic3RvcmUgPSBkYi50cmFuc2FjdGlvbignc3RvcmUnLCAncmVhZHdyaXRlJykub2JqZWN0U3Rv
cmUoJ3N0b3JlJykiKTsKKwkKKyAgICAvLyBUaGUgc2l6ZSBvZiB0aGUgaW5kZXhlZCBhdHRyaWJ1
dGVzIGEwLCBhMSwgLi4uIGlzIHNtYWxsLCBzbyB0aGV5IHNob3VsZG4ndCBoYXZlIGEgbWF0ZXJp
YWwKKyAgICAvLyBlZmZlY3Qgb24gdGhlIGVzdGltYXRlZCBwdXQgc2l6ZSBmb3IgcXVvdGEgcHVy
cG9zZXMuCisgICAgZXZhbEFuZExvZyhgcmVxdWVzdCA9IHN0b3JlLmFkZCh7YTA6IDAsIGExOiAx
LCBwYXlsb2FkOiBuZXcgVWludDhBcnJheSgke3F1b3RhIC8gbnVtSW5kaWNlc30pfSwgNDIpYCk7
CisKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIHJl
cUV2ZW50ID0gZXZlbnQ7CisgICAgICAgIHNob3VsZEJlKCJyZXFFdmVudC50YXJnZXQucmVzdWx0
IiwgIjQyIik7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0KKworICAgIHJlcXVlc3Qu
b25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIHRlc3RGYWlsZWQoIkFkZCBvcGVy
YXRpb24gZmFpbGVkLCBidXQgaXQgc2hvdWxkIHN1Y2NlZWQgYmVjYXVzZSBpdCB1c2VzIG11Y2gg
bGVzcyBzcGFjZSB0aGFuIHRoZSBzdG9yYWdlIGxpbWl0LiIpOworICAgICAgICBmaW5pc2hKU1Rl
c3QoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRk
Yi9zdG9yYWdlLWxpbWl0LXdpdGgtaW5kaWNlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9zdG9yYWdlLWxpbWl0LXdpdGgtaW5kaWNlcy1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYTdmOTA5YjNjYjg5NGEzMGVmMDdlM2I5MTI2OWZjMzQzNmRhM2JhOQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3N0b3JhZ2UtbGlt
aXQtd2l0aC1pbmRpY2VzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIzIEBACitUaGlzIHRlc3Qg
Y2hlY2tzIHRoYXQgdGhlIHNpemUgZXN0aW1hdGUgYXNzb2NpYXRlZCB3aXRoIGFkZGluZyBhbiBv
YmplY3QgdG8gYSBzdG9yZSB3aXRoIG1hbnkgaW5kaWNlcyBpcyByZWFzb25hYmxlLgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0gc2VsZi5pbmRleGVkREIgfHwg
c2VsZi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIgfHwgc2VsZi5tc0luZGV4
ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7CisKK2luZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYm5h
bWUpCitpbmRleGVkREIub3BlbihkYm5hbWUpCisKK3ByZXBhcmVEYXRhYmFzZSgpOgorZGIgPSBl
dmVudC50YXJnZXQucmVzdWx0CitzdG9yZSA9IGRiLmNyZWF0ZU9iamVjdFN0b3JlKCdzdG9yZScp
CisKK29uT3BlblN1Y2Nlc3MoKToKK2RiID0gZXZlbnQudGFyZ2V0LnJlc3VsdAorc3RvcmUgPSBk
Yi50cmFuc2FjdGlvbignc3RvcmUnLCAncmVhZHdyaXRlJykub2JqZWN0U3RvcmUoJ3N0b3JlJykK
K3JlcXVlc3QgPSBzdG9yZS5hZGQoe2EwOiAwLCBhMTogMSwgcGF5bG9hZDogbmV3IFVpbnQ4QXJy
YXkoNDA5NjApfSwgNDIpCitQQVNTIHJlcUV2ZW50LnRhcmdldC5yZXN1bHQgaXMgNDIKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zdG9yYWdlLWxpbWl0LXdpdGgtaW5kaWNl
cy5odG1sIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvc3RvcmFnZS1saW1pdC13aXRo
LWluZGljZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZDg4Y2NjY2ZlNzRkM2M4MDExOTU4YTlhNTk5ZGIy
MjBkN2NiZDE5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvc3RvcmFnZS1saW1pdC13aXRoLWluZGljZXMuaHRtbApAQCAtMCwwICsxLDkgQEAKKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3N0b3JhZ2UtbGltaXQtd2l0aC1pbmRp
Y2VzLmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398766</attachid>
            <date>2020-05-07 11:18:02 -0700</date>
            <delta_ts>2020-05-11 17:38:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211360-20200507111801.patch</filename>
            <type>text/plain</type>
            <size>39876</size>
            <attacher name="Ben Nham">nham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGU3NzYyYTJjM2RkZmMw
MjM5MTRiM2Q4ZDljMDA1MDE1NDIzZjU0My4uNjQ2NTg0NTNiNDhkM2RhNWMxMDAxZTQ4NjA4NDFl
MGUzNzcwZTgzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIwLTA1LTAzICBCZW4g
TmhhbSAgPG5oYW1AYXBwbGUuY29tPgorCisgICAgICAgIEltcHJvdmUgYWNjdXJhY3kgb2YgSW5k
ZXhlZERCIGVzdGltYXRlZCB3cml0ZSBzaXplIGNvbXB1dGF0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTEzNjAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBjdXJyZW50bHkgZXN0aW1hdGUgdGhl
IHNpemUgb2YgYSBwdXQgaW4gSW5kZXhlZERCIGZvciBxdW90YSBjaGVjayBwdXJwb3NlcyB3aXRo
IHNvbWV0aGluZworICAgICAgICBsaWtlOgorCisgICAgICAgICAgZXN0aW1hdGVkV3JpdGVTaXpl
ID0gKDEgKyBudW1JbmRpY2VzKSAqIChrZXlTaXplICsgdmFsdWVTaXplKQorCisgICAgICAgIEhv
d2V2ZXIsIHRoaXMgY2FuIGxlYWQgdG8gbGFyZ2Ugb3ZlcmVzdGltYXRlcyBvZiB3cml0ZSBzaXpl
cy4gVGhpcyBpcyBiZWNhdXNlIHNlY29uZGFyeQorICAgICAgICBpbmRpY2VzIG9ubHkgc3RvcmUg
YSBtYXBwaW5nIG9mIHNlY29uZGFyeSBpbmRleCBrZXkgPT4gcHJpbWFyeSBrZXk7IHRoZXkgZG8g
bm90IHN0b3JlIHRoZQorICAgICAgICBlbnRpcmUgdmFsdWUuIEluIHRoZSBleGFtcGxlIHNpdGUg
YXR0YWNoZWQgdG8gMjAyMTM3IChhbm90aGVyIERCIHF1b3RhLXJlbGF0ZWQgYnVnKSwgdGhlCisg
ICAgICAgIHRoZSBoZXVyaXN0aWMgZXN0aW1hdGVzIHRoYXQgb25lIG9mIHRoZSBwdXQgb3BlcmF0
aW9ucyB3b3VsZCB1c2UgbW9yZSB0aGFuIDgwMCBNQiB3aGVuIGl0CisgICAgICAgIGFjdHVhbGx5
IHVzZXMgMjIwIE1CLiBUaGlzIGluYWNjdXJhY3kgbGVhZHMgdG8gc3B1cmlvdXMgZGlzayBxdW90
YSBwZXJtaXNzaW9uIG1vZGFscyBiZWluZworICAgICAgICBwcmVzZW50ZWQgaW4gU2FmYXJpLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggaW1wcm92ZXMgdGhlIHdyaXRlIHNpemUgY29tcHV0YXRpb24g
YnkgZ2VuZXJhdGluZyB0aGUgc2Vjb25kYXJ5IGluZGV4IGtleXMgYmVmb3JlCisgICAgICAgIGVz
dGltYXRpbmcgdGhlIHdyaXRlIHNpemUuIFRoZSBwZXJmb3JtYW5jZSBzaG91bGQgYmUgYWJvdXQg
dGhlIHNhbWUgc2luY2Ugd2Ugc2F2ZSB0aGUKKyAgICAgICAgZ2VuZXJhdGVkIGluZGV4IGtleXMg
Zm9yIGxhdGVyIHVzYWdlIHdoZW4gd2UgYWN0dWFsbHkgYWRkIHRoZSByZWNvcmQgdG8gdGhlIERC
LgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6TWVtb3J5SURCQmFja2luZ1N0b3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6TWVtb3J5SURCQmFja2luZ1N0b3JlOjphZGRSZWNv
cmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCU2VydmVyOjpNZW1vcnlJREJCYWNraW5nU3RvcmU6
OnNlcmlhbGl6YXRpb25Db250ZXh0KToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6TWVtb3J5T2JqZWN0U3RvcmU6OmFkZFJlY29yZCk6CisgICAgICAgIChXZWJDb3JlOjpJREJT
ZXJ2ZXI6Ok1lbW9yeU9iamVjdFN0b3JlOjp1cGRhdGVJbmRleGVzRm9yUHV0UmVjb3JkKToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0U3RvcmUuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjp1
cGRhdGVBbGxJbmRleGVzRm9yQWRkUmVjb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZl
cjo6U1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQpOgorICAgICAgICAoV2ViQ29yZTo6
SURCU2VydmVyOjpTUUxpdGVJREJCYWNraW5nU3RvcmU6OnNlcmlhbGl6YXRpb25Db250ZXh0KToK
KyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3Jl
Lmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6ZXN0aW1hdGVTaXplKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2U6OnB1dE9yQWRkKToKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5kZXhLZXkuaDoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMv
SURCQmluZGluZ1V0aWxpdGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZW5lcmF0ZUluZGV4
S2V5TWFwRm9yVmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRp
ZXMuaDoKKwogMjAyMC0wNS0wNSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNv
bT4KIAogICAgICAgICBBc3NlcnQgdGhhdCBFdmVudEhhbmRsZXIgb25seSB0cmFja3MgZXZlbnQg
dGFyZ2V0IG5vZGVzIGluIGl0cyBvd24gZG9jdW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IGY0
YzU3MWQwZWYyYTZlZTJiNjAzZDhjYjM4YmU2MDEwZjJiYWI1ODcuLjVhMWI0NWEyMWVmNzAwNGQ4
ZjU1MGMyOGFlOTMyYjEzMjFlZDMxNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRl
cnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtNjgsNiArNjgs
NyBAQCBzZXQoV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5oCiAgICAgTW9kdWxl
cy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uaAogCisgICAg
TW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luZGV4S2V5LmgKICAgICBNb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSURCQ3Vyc29ySW5mby5oCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lE
QkN1cnNvclJlY29yZC5oCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkRhdGFiYXNl
SW5mby5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvSURCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvSURCQmFja2luZ1N0b3JlLmgKaW5kZXggYTdkZjdhMWRjZDYwNzVkZGE0NTEwOTBhYTkz
MDM3YWU4MjFjZGJmNC4uODg4OWFiMGI0NDIyZWYzN2Y5ZjY2NWNmYjdkZmIzMWI3ZjY2ZWY4NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQkJh
Y2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9JREJCYWNraW5nU3RvcmUuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiSURCRGF0
YWJhc2VJbmZvLmgiCiAjaW5jbHVkZSAiSURCRXJyb3IuaCIKKyNpbmNsdWRlICJJbmRleEtleS5o
IgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTU2LDYgKzU3LDggQEAgZW51bSBjbGFzcyBJbmRleFJlY29yZFR5cGU7CiAKIG5hbWVzcGFjZSBJ
REJTZXJ2ZXIgewogCitjbGFzcyBJREJTZXJpYWxpemF0aW9uQ29udGV4dDsKKwogY2xhc3MgSURC
QmFja2luZ1N0b3JlIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JREJCYWNraW5nU3RvcmUoKSB7
IFJFTEVBU0VfQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7IH0KQEAgLTc1LDcgKzc4LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgSURCRXJyb3IgcmVuYW1lSW5kZXgoY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRl
bnRpZmllciwgdWludDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUp
ID0gMDsKICAgICB2aXJ0dWFsIElEQkVycm9yIGtleUV4aXN0c0luT2JqZWN0U3RvcmUoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9i
amVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgSURCS2V5RGF0YSYsIGJvb2wmIGtleUV4aXN0cykg
PSAwOwogICAgIHZpcnR1YWwgSURCRXJyb3IgZGVsZXRlUmFuZ2UoY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRl
bnRpZmllciwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJikgPSAwOwotICAgIHZpcnR1YWwgSURCRXJy
b3IgYWRkUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVu
dGlmaWVyLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mLCBjb25zdCBJREJLZXlEYXRhJiwgY29u
c3QgSURCVmFsdWUmKSA9IDA7CisgICAgdmlydHVhbCBJREJFcnJvciBhZGRSZWNvcmQoY29uc3Qg
SURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQk9i
amVjdFN0b3JlSW5mbyYsIGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJbmRleElEVG9JbmRleEtl
eU1hcCYsIGNvbnN0IElEQlZhbHVlJikgPSAwOwogICAgIHZpcnR1YWwgSURCRXJyb3IgZ2V0UmVj
b3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1
aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIElE
QkdldFJlY29yZERhdGFUeXBlLCBJREJHZXRSZXN1bHQmIG91dFZhbHVlKSA9IDA7CiAgICAgdmly
dHVhbCBJREJFcnJvciBnZXRBbGxSZWNvcmRzKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYg
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJHZXRBbGxSZWNvcmRzRGF0YSYsIElEQkdl
dEFsbFJlc3VsdCYgb3V0VmFsdWUpID0gMDsKICAgICB2aXJ0dWFsIElEQkVycm9yIGdldEluZGV4
UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVy
LCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmll
ciwgSW5kZXhlZERCOjpJbmRleFJlY29yZFR5cGUsIGNvbnN0IElEQktleVJhbmdlRGF0YSYsIElE
QkdldFJlc3VsdCYgb3V0VmFsdWUpID0gMDsKQEAgLTg2LDYgKzg5LDggQEAgcHVibGljOgogICAg
IHZpcnR1YWwgSURCRXJyb3Igb3BlbkN1cnNvcihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCQ3Vyc29ySW5mbyYsIElEQkdldFJlc3Vs
dCYgb3V0UmVzdWx0KSA9IDA7CiAgICAgdmlydHVhbCBJREJFcnJvciBpdGVyYXRlQ3Vyc29yKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJ
REJSZXNvdXJjZUlkZW50aWZpZXImIGN1cnNvcklkZW50aWZpZXIsIGNvbnN0IElEQkl0ZXJhdGVD
dXJzb3JEYXRhJiwgSURCR2V0UmVzdWx0JiBvdXRSZXN1bHQpID0gMDsKIAorICAgIHZpcnR1YWwg
SURCU2VyaWFsaXphdGlvbkNvbnRleHQmIHNlcmlhbGl6YXRpb25Db250ZXh0KCkgPSAwOworCiAg
ICAgdmlydHVhbCBJREJPYmplY3RTdG9yZUluZm8qIGluZm9Gb3JPYmplY3RTdG9yZSh1aW50NjRf
dCBvYmplY3RTdG9yZUlkZW50aWZpZXIpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQmFj
a2luZ1N0b3JlKCkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCmluZGV4
IDQwMWNlM2QyYjE2MWJhZDNlNzkzOTc3MTdlZDVlMjg4NzcwNDI2MmUuLjBmNGIzNWM5NGExOWU2
ODVkYzVkYjJjNWI1NDdiMzJlZTE4ZmEyN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3Rv
cmUuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSURCSW5kZXhJbmZvLmgiCiAjaW5j
bHVkZSAiSURCSXRlcmF0ZUN1cnNvckRhdGEuaCIKICNpbmNsdWRlICJJREJLZXlSYW5nZURhdGEu
aCIKKyNpbmNsdWRlICJJREJTZXJpYWxpemF0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKICNpbmNsdWRlICJNZW1vcnlJbmRleEN1cnNvci5oIgogI2luY2x1ZGUgIk1lbW9yeU9i
amVjdFN0b3JlLmgiCkBAIC00OSw2ICs1MCw3IEBAIGNvbnN0ZXhwciB1aW50NjRfdCBtYXhHZW5l
cmF0ZWRLZXlWYWx1ZSA9IDB4MjAwMDAwMDAwMDAwMDA7CiBNZW1vcnlJREJCYWNraW5nU3RvcmU6
Ok1lbW9yeUlEQkJhY2tpbmdTdG9yZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IElE
QkRhdGFiYXNlSWRlbnRpZmllciYgaWRlbnRpZmllcikKICAgICA6IG1faWRlbnRpZmllcihpZGVu
dGlmaWVyKQogICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklEKQorICAgICwgbV9zZXJpYWxpemF0
aW9uQ29udGV4dChJREJTZXJpYWxpemF0aW9uQ29udGV4dDo6Z2V0T3JDcmVhdGVJREJTZXJpYWxp
emF0aW9uQ29udGV4dChzZXNzaW9uSUQpKQogewogfQogCkBAIC0zNTUsNyArMzU3LDcgQEAgSURC
RXJyb3IgTWVtb3J5SURCQmFja2luZ1N0b3JlOjpkZWxldGVSYW5nZShjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zYWMKICAgICByZXR1cm4gSURCRXJyb3IgeyB9OwogfQogCi1JREJF
cnJvciBNZW1vcnlJREJCYWNraW5nU3RvcmU6OmFkZFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlk
ZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZv
JiBvYmplY3RTdG9yZUluZm8sIGNvbnN0IElEQktleURhdGEmIGtleURhdGEsIGNvbnN0IElEQlZh
bHVlJiB2YWx1ZSkKK0lEQkVycm9yIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6YWRkUmVjb3JkKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJ
REJPYmplY3RTdG9yZUluZm8mIG9iamVjdFN0b3JlSW5mbywgY29uc3QgSURCS2V5RGF0YSYga2V5
RGF0YSwgY29uc3QgSW5kZXhJRFRvSW5kZXhLZXlNYXAmIGluZGV4S2V5cywgY29uc3QgSURCVmFs
dWUmIHZhbHVlKQogewogICAgIExPRyhJbmRleGVkREIsICJNZW1vcnlJREJCYWNraW5nU3RvcmU6
OmFkZFJlY29yZCIpOwogCkBAIC0zNjksNyArMzcxLDcgQEAgSURCRXJyb3IgTWVtb3J5SURCQmFj
a2luZ1N0b3JlOjphZGRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2Fj
dGkKICAgICBpZiAoIW9iamVjdFN0b3JlKQogICAgICAgICByZXR1cm4gSURCRXJyb3IgeyBVbmtu
b3duRXJyb3IsICJObyBiYWNraW5nIHN0b3JlIG9iamVjdCBzdG9yZSBmb3VuZCB0byBwdXQgcmVj
b3JkIl9zIH07CiAKLSAgICByZXR1cm4gb2JqZWN0U3RvcmUtPmFkZFJlY29yZCgqdHJhbnNhY3Rp
b24sIGtleURhdGEsIHZhbHVlKTsKKyAgICByZXR1cm4gb2JqZWN0U3RvcmUtPmFkZFJlY29yZCgq
dHJhbnNhY3Rpb24sIGtleURhdGEsIGluZGV4S2V5cywgdmFsdWUpOwogfQogCiBJREJFcnJvciBN
ZW1vcnlJREJCYWNraW5nU3RvcmU6OmdldFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZp
ZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCBjb25zdCBJREJLZXlSYW5nZURhdGEmIHJhbmdlLCBJREJHZXRSZWNvcmREYXRhVHlwZSB0eXBl
LCBJREJHZXRSZXN1bHQmIG91dFZhbHVlKQpAQCAtNjExLDYgKzYxMywxMSBAQCBSZWZQdHI8TWVt
b3J5T2JqZWN0U3RvcmU+IE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6dGFrZU9iamVjdFN0b3JlQnlJ
ZGVudGlmaWVyKHVpbgogICAgIHJldHVybiBvYmplY3RTdG9yZUJ5SWRlbnRpZmllcjsKIH0KIAor
SURCU2VyaWFsaXphdGlvbkNvbnRleHQmIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6c2VyaWFsaXph
dGlvbkNvbnRleHQoKQoreworICAgIHJldHVybiBtX3NlcmlhbGl6YXRpb25Db250ZXh0LmdldCgp
OworfQorCiBJREJPYmplY3RTdG9yZUluZm8qIE1lbW9yeUlEQkJhY2tpbmdTdG9yZTo6aW5mb0Zv
ck9iamVjdFN0b3JlKHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikKIHsKICAgICBBU1NF
UlQobV9kYXRhYmFzZUluZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeUlEQkJhY2tpbmdTdG9yZS5oCmluZGV4IDc0
ZGM5NTA5NDVhNmVmNGI4ZWI1NzJhOGJkNGQxNWRkYTUyYjhmYjUuLmI5NjkyMjY1M2I1MWNhODU5
MWE0M2M4YTY4YmYxOWVjMjdmYTczZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9NZW1vcnlJREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5SURCQmFja2luZ1N0b3JlLmgK
QEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJJREJCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRl
ICJJREJEYXRhYmFzZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJJREJSZXNvdXJjZUlkZW50aWZp
ZXIuaCIKKyNpbmNsdWRlICJJbmRleEtleS5oIgogI2luY2x1ZGUgIk1lbW9yeUJhY2tpbmdTdG9y
ZVRyYW5zYWN0aW9uLmgiCiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CkBAIC0zNyw2ICszOCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBuYW1l
c3BhY2UgSURCU2VydmVyIHsKIAorY2xhc3MgSURCU2VyaWFsaXphdGlvbkNvbnRleHQ7CiBjbGFz
cyBNZW1vcnlPYmplY3RTdG9yZTsKIAogY2xhc3MgTWVtb3J5SURCQmFja2luZ1N0b3JlIGZpbmFs
IDogcHVibGljIElEQkJhY2tpbmdTdG9yZSB7CkBAIC01MSw2ICs1Myw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlbW92ZU9iamVjdFN0b3JlRm9yVmVyc2lvbkNoYW5nZUFib3J0KE1lbW9yeU9iamVj
dFN0b3JlJik7CiAgICAgdm9pZCByZXN0b3JlT2JqZWN0U3RvcmVGb3JWZXJzaW9uQ2hhbmdlQWJv
cnQoUmVmPE1lbW9yeU9iamVjdFN0b3JlPiYmKTsKIAorICAgIElEQlNlcmlhbGl6YXRpb25Db250
ZXh0JiBzZXJpYWxpemF0aW9uQ29udGV4dCgpIGZpbmFsOworCiBwcml2YXRlOgogICAgIElEQkVy
cm9yIGJlZ2luVHJhbnNhY3Rpb24oY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJikgZmluYWw7CiAg
ICAgSURCRXJyb3IgYWJvcnRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXIm
IHRyYW5zYWN0aW9uSWRlbnRpZmllcikgZmluYWw7CkBAIC02NCw3ICs2OCw3IEBAIHByaXZhdGU6
CiAgICAgSURCRXJyb3IgcmVuYW1lSW5kZXgoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0
cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgdWlu
dDY0X3QgaW5kZXhJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIG5ld05hbWUpIGZpbmFsOwogICAg
IElEQkVycm9yIGtleUV4aXN0c0luT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmll
ciwgY29uc3QgSURCS2V5RGF0YSYsIGJvb2wmIGtleUV4aXN0cykgZmluYWw7CiAgICAgSURCRXJy
b3IgZGVsZXRlUmFuZ2UoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklk
ZW50aWZpZXIsIHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllciwgY29uc3QgSURCS2V5UmFu
Z2VEYXRhJikgZmluYWw7Ci0gICAgSURCRXJyb3IgYWRkUmVjb3JkKGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJPYmplY3RTdG9yZUlu
Zm8mLCBjb25zdCBJREJLZXlEYXRhJiwgY29uc3QgSURCVmFsdWUmKSBmaW5hbDsKKyAgICBJREJF
cnJvciBhZGRSZWNvcmQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklk
ZW50aWZpZXIsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYsIGNvbnN0IElEQktleURhdGEmLCBj
b25zdCBJbmRleElEVG9JbmRleEtleU1hcCYsIGNvbnN0IElEQlZhbHVlJikgZmluYWw7CiAgICAg
SURCRXJyb3IgZ2V0UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rp
b25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IElEQktl
eVJhbmdlRGF0YSYsIElEQkdldFJlY29yZERhdGFUeXBlLCBJREJHZXRSZXN1bHQmIG91dFZhbHVl
KSBmaW5hbDsKICAgICBJREJFcnJvciBnZXRBbGxSZWNvcmRzKGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJHZXRBbGxSZWNvcmRzRGF0
YSYsIElEQkdldEFsbFJlc3VsdCYgb3V0VmFsdWUpIGZpbmFsOwogICAgIElEQkVycm9yIGdldElu
ZGV4UmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlm
aWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRp
ZmllciwgSW5kZXhlZERCOjpJbmRleFJlY29yZFR5cGUsIGNvbnN0IElEQktleVJhbmdlRGF0YSYs
IElEQkdldFJlc3VsdCYgb3V0VmFsdWUpIGZpbmFsOwpAQCAtOTIsNiArOTYsNyBAQCBwcml2YXRl
OgogCiAgICAgSURCRGF0YWJhc2VJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBQQUw6OlNl
c3Npb25JRCBtX3Nlc3Npb25JRDsKKyAgICBSZWY8SURCU2VyaWFsaXphdGlvbkNvbnRleHQ+IG1f
c2VyaWFsaXphdGlvbkNvbnRleHQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElEQkRhdGFiYXNlSW5m
bz4gbV9kYXRhYmFzZUluZm87CiAKICAgICBIYXNoTWFwPElEQlJlc291cmNlSWRlbnRpZmllciwg
c3RkOjp1bmlxdWVfcHRyPE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uPj4gbV90cmFuc2Fj
dGlvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL01lbW9yeU9iamVjdFN0b3JlLmNwcAppbmRleCA3MTU1YjU5N2E0MjBmNTllMTM5
NWI5MjgxZGU4YzJkNjRkYWE4NzExLi40MjNmMDg3YWRiMjQ2NWJmNGY5NzNjNDFlNWExNTRlNjI2
YWYwYzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvTWVtb3J5T2JqZWN0U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9NZW1vcnlPYmplY3RTdG9yZS5jcHAKQEAgLTI1MSw2ICsyNTEsMTIgQEAg
dm9pZCBNZW1vcnlPYmplY3RTdG9yZTo6ZGVsZXRlUmFuZ2UoY29uc3QgSURCS2V5UmFuZ2VEYXRh
JiBpbnB1dFJhbmdlKQogfQogCiBJREJFcnJvciBNZW1vcnlPYmplY3RTdG9yZTo6YWRkUmVjb3Jk
KE1lbW9yeUJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgY29uc3QgSURCS2V5
RGF0YSYga2V5RGF0YSwgY29uc3QgSURCVmFsdWUmIHZhbHVlKQoreworICAgIGF1dG8gaW5kZXhL
ZXlzID0gZ2VuZXJhdGVJbmRleEtleU1hcEZvclZhbHVlKG1fc2VyaWFsaXphdGlvbkNvbnRleHQt
PmV4ZWNTdGF0ZSgpLCBtX2luZm8sIGtleURhdGEsIHZhbHVlKTsKKyAgICByZXR1cm4gYWRkUmVj
b3JkKHRyYW5zYWN0aW9uLCBrZXlEYXRhLCBpbmRleEtleXMsIHZhbHVlKTsKK30KKworSURCRXJy
b3IgTWVtb3J5T2JqZWN0U3RvcmU6OmFkZFJlY29yZChNZW1vcnlCYWNraW5nU3RvcmVUcmFuc2Fj
dGlvbiYgdHJhbnNhY3Rpb24sIGNvbnN0IElEQktleURhdGEmIGtleURhdGEsIGNvbnN0IEluZGV4
SURUb0luZGV4S2V5TWFwJiBpbmRleEtleXMsIGNvbnN0IElEQlZhbHVlJiB2YWx1ZSkKIHsKICAg
ICBMT0coSW5kZXhlZERCLCAiTWVtb3J5T2JqZWN0U3RvcmU6OmFkZFJlY29yZCIpOwogCkBAIC0y
NzEsNyArMjc3LDcgQEAgSURCRXJyb3IgTWVtb3J5T2JqZWN0U3RvcmU6OmFkZFJlY29yZChNZW1v
cnlCYWNraW5nU3RvcmVUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24KICAgICBBU1NFUlQobGlzdFJl
c3VsdC5zZWNvbmQpOwogCiAgICAgLy8gSWYgdGhlcmUgd2FzIGFuIGVycm9yIGluZGV4aW5nIHRo
aXMgYWRkaXRpb24sIHRoZW4gcmV2ZXJ0IGl0LgotICAgIGF1dG8gZXJyb3IgPSB1cGRhdGVJbmRl
eGVzRm9yUHV0UmVjb3JkKGtleURhdGEsIHZhbHVlLmRhdGEoKSk7CisgICAgYXV0byBlcnJvciA9
IHVwZGF0ZUluZGV4ZXNGb3JQdXRSZWNvcmQoa2V5RGF0YSwgaW5kZXhLZXlzKTsKICAgICBpZiAo
IWVycm9yLmlzTnVsbCgpKSB7CiAgICAgICAgIG1fa2V5VmFsdWVTdG9yZS0+cmVtb3ZlKG1hcFJl
c3VsdC5pdGVyYXRvcik7CiAgICAgICAgIG1fb3JkZXJlZEtleXMtPmVyYXNlKGxpc3RSZXN1bHQu
Zmlyc3QpOwpAQCAtMjk5LDI5ICszMDUsMjQgQEAgdm9pZCBNZW1vcnlPYmplY3RTdG9yZTo6dXBk
YXRlSW5kZXhlc0ZvckRlbGV0ZVJlY29yZChjb25zdCBJREJLZXlEYXRhJiB2YWx1ZSkKICAgICAg
ICAgaW5kZXgtPnJlbW92ZUVudHJpZXNXaXRoVmFsdWVLZXkodmFsdWUpOwogfQogCi1JREJFcnJv
ciBNZW1vcnlPYmplY3RTdG9yZTo6dXBkYXRlSW5kZXhlc0ZvclB1dFJlY29yZChjb25zdCBJREJL
ZXlEYXRhJiBrZXksIGNvbnN0IFRocmVhZFNhZmVEYXRhQnVmZmVyJiB2YWx1ZSkKK0lEQkVycm9y
IE1lbW9yeU9iamVjdFN0b3JlOjp1cGRhdGVJbmRleGVzRm9yUHV0UmVjb3JkKGNvbnN0IElEQktl
eURhdGEmIGtleSwgY29uc3QgSW5kZXhJRFRvSW5kZXhLZXlNYXAmIGluZGV4S2V5cykKIHsKLSAg
ICBKU0xvY2tIb2xkZXIgbG9ja2VyKG1fc2VyaWFsaXphdGlvbkNvbnRleHQtPnZtKCkpOwotCi0g
ICAgYXV0byBqc1ZhbHVlID0gZGVzZXJpYWxpemVJREJWYWx1ZVRvSlNWYWx1ZShtX3NlcmlhbGl6
YXRpb25Db250ZXh0LT5leGVjU3RhdGUoKSwgdmFsdWUpOwotICAgIGlmIChqc1ZhbHVlLmlzVW5k
ZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiBJREJFcnJvciB7IH07Ci0KICAgICBJREJF
cnJvciBlcnJvcjsKICAgICBWZWN0b3I8c3RkOjpwYWlyPE1lbW9yeUluZGV4KiwgSW5kZXhLZXk+
PiBjaGFuZ2VkSW5kZXhSZWNvcmRzOwogCi0gICAgZm9yIChhdXRvJiBpbmRleCA6IG1faW5kZXhl
c0J5TmFtZS52YWx1ZXMoKSkgewotICAgICAgICBJbmRleEtleSBpbmRleEtleTsKLSAgICAgICAg
Z2VuZXJhdGVJbmRleEtleUZvclZhbHVlKG1fc2VyaWFsaXphdGlvbkNvbnRleHQtPmV4ZWNTdGF0
ZSgpLCBpbmRleC0+aW5mbygpLCBqc1ZhbHVlLCBpbmRleEtleSwgbV9pbmZvLmtleVBhdGgoKSwg
a2V5KTsKLQotICAgICAgICBpZiAoaW5kZXhLZXkuaXNOdWxsKCkpCi0gICAgICAgICAgICBjb250
aW51ZTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIFtpbmRleElELCBpbmRleEtleV0gOiBpbmRleEtl
eXMpIHsKKyAgICAgICAgYXV0byogaW5kZXggPSBtX2luZGV4ZXNCeUlkZW50aWZpZXIuZ2V0KGlu
ZGV4SUQpOworICAgICAgICBBU1NFUlQoaW5kZXgpOworICAgICAgICBpZiAoIWluZGV4KSB7Cisg
ICAgICAgICAgICBlcnJvciA9IElEQkVycm9yIHsgSW52YWxpZFN0YXRlRXJyb3IsICJNaXNzaW5n
IGluZGV4IG1ldGFkYXRhIiB9OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KIAogICAg
ICAgICBlcnJvciA9IGluZGV4LT5wdXRJbmRleEtleShrZXksIGluZGV4S2V5KTsKICAgICAgICAg
aWYgKCFlcnJvci5pc051bGwoKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGNoYW5n
ZWRJbmRleFJlY29yZHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGluZGV4LmdldCgpLCBpbmRleEtl
eSkpOworICAgICAgICBjaGFuZ2VkSW5kZXhSZWNvcmRzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihp
bmRleCwgaW5kZXhLZXkpKTsKICAgICB9CiAKICAgICAvLyBJZiBhbnkgb2YgdGhlIGluZGV4IHB1
dHMgZmFpbGVkLCByZXZlcnQgYWxsIG9mIHRoZSBvbmVzIHRoYXQgd2VudCB0aHJvdWdoLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL01lbW9yeU9i
amVjdFN0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVt
b3J5T2JqZWN0U3RvcmUuaAppbmRleCBhYzcwMTA4OWJjNGIxNWY3NzY1MTFlMTM4OGI2ZGZiMDdj
MmRmYjA2Li5iMTUwMjk5Mzk1YzFhZWI1ZjFjNDA1OTI4Nzk4YzQ3MDM3MDAxMTNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVtb3J5T2JqZWN0
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvTWVt
b3J5T2JqZWN0U3RvcmUuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiSURCS2V5RGF0
YS5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlSW5mby5oIgorI2luY2x1ZGUgIkluZGV4S2V5
LmgiCiAjaW5jbHVkZSAiTWVtb3J5SW5kZXguaCIKICNpbmNsdWRlICJNZW1vcnlPYmplY3RTdG9y
ZUN1cnNvci5oIgogI2luY2x1ZGUgIlRocmVhZFNhZmVEYXRhQnVmZmVyLmgiCkBAIC04MCw2ICs4
MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZVJlY29yZChjb25zdCBJREJLZXlEYXRhJik7
CiAgICAgdm9pZCBkZWxldGVSYW5nZShjb25zdCBJREJLZXlSYW5nZURhdGEmKTsKICAgICBJREJF
cnJvciBhZGRSZWNvcmQoTWVtb3J5QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24mLCBjb25zdCBJREJL
ZXlEYXRhJiwgY29uc3QgSURCVmFsdWUmKTsKKyAgICBJREJFcnJvciBhZGRSZWNvcmQoTWVtb3J5
QmFja2luZ1N0b3JlVHJhbnNhY3Rpb24mLCBjb25zdCBJREJLZXlEYXRhJiwgY29uc3QgSW5kZXhJ
RFRvSW5kZXhLZXlNYXAmLCBjb25zdCBJREJWYWx1ZSYpOwogCiAgICAgdWludDY0X3QgY3VycmVu
dEtleUdlbmVyYXRvclZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9rZXlHZW5lcmF0b3JWYWx1ZTsg
fQogICAgIHZvaWQgc2V0S2V5R2VuZXJhdG9yVmFsdWUodWludDY0X3QgdmFsdWUpIHsgbV9rZXlH
ZW5lcmF0b3JWYWx1ZSA9IHZhbHVlOyB9CkBAIC0xMTQsNyArMTE2LDcgQEAgcHJpdmF0ZToKICAg
ICBJREJLZXlEYXRhU2V0OjppdGVyYXRvciBsb3dlc3RJdGVyYXRvckluUmFuZ2UoY29uc3QgSURC
S2V5UmFuZ2VEYXRhJiwgYm9vbCByZXZlcnNlKSBjb25zdDsKIAogICAgIElEQkVycm9yIHBvcHVs
YXRlSW5kZXhXaXRoRXhpc3RpbmdSZWNvcmRzKE1lbW9yeUluZGV4Jik7Ci0gICAgSURCRXJyb3Ig
dXBkYXRlSW5kZXhlc0ZvclB1dFJlY29yZChjb25zdCBJREJLZXlEYXRhJiwgY29uc3QgVGhyZWFk
U2FmZURhdGFCdWZmZXImIHZhbHVlKTsKKyAgICBJREJFcnJvciB1cGRhdGVJbmRleGVzRm9yUHV0
UmVjb3JkKGNvbnN0IElEQktleURhdGEmLCBjb25zdCBJbmRleElEVG9JbmRleEtleU1hcCYpOwog
ICAgIHZvaWQgdXBkYXRlSW5kZXhlc0ZvckRlbGV0ZVJlY29yZChjb25zdCBJREJLZXlEYXRhJiB2
YWx1ZSk7CiAgICAgdm9pZCB1cGRhdGVDdXJzb3JzRm9yUHV0UmVjb3JkKElEQktleURhdGFTZXQ6
Oml0ZXJhdG9yKTsKICAgICB2b2lkIHVwZGF0ZUN1cnNvcnNGb3JEZWxldGVSZWNvcmQoY29uc3Qg
SURCS2V5RGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAppbmRleCBlZTNl
N2U4ZjlkZmY4OWJjMjQzOGMzZjNiODAxN2Y0NGNkOTZmMWY3Li44NzUxNjBhNjlmOTQ2NTIxMTEz
ZWYzMWU0YjFhYjRjMzlhYzRkY2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNw
cApAQCAtMTg1MiwyNCArMTg1MiwyMiBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6
OnVwZGF0ZU9uZUluZGV4Rm9yQWRkUmVjb3JkKGNvbnN0IElEQkluZGV4SW5mbyYgaQogICAgIHJl
dHVybiB1bmNoZWNrZWRQdXRJbmRleEtleShpbmZvLCBrZXksIGluZGV4S2V5LCByZWNvcmRJRCk7
CiB9CiAKLUlEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6dXBkYXRlQWxsSW5kZXhlc0Zv
ckFkZFJlY29yZChjb25zdCBJREJPYmplY3RTdG9yZUluZm8mIGluZm8sIGNvbnN0IElEQktleURh
dGEmIGtleSwgY29uc3QgVGhyZWFkU2FmZURhdGFCdWZmZXImIHZhbHVlLCBpbnQ2NF90IHJlY29y
ZElEKQorSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjp1cGRhdGVBbGxJbmRleGVzRm9y
QWRkUmVjb3JkKGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbywgY29uc3QgSURCS2V5RGF0
YSYga2V5LCBjb25zdCBJbmRleElEVG9JbmRleEtleU1hcCYgaW5kZXhLZXlzLCBpbnQ2NF90IHJl
Y29yZElEKQogewotICAgIEpTTG9ja0hvbGRlciBsb2NrZXIobV9zZXJpYWxpemF0aW9uQ29udGV4
dC0+dm0oKSk7Ci0KLSAgICBhdXRvIGpzVmFsdWUgPSBkZXNlcmlhbGl6ZUlEQlZhbHVlVG9KU1Zh
bHVlKG1fc2VyaWFsaXphdGlvbkNvbnRleHQtPmV4ZWNTdGF0ZSgpLCB2YWx1ZSk7Ci0gICAgaWYg
KGpzVmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgcmV0dXJuIElEQkVycm9yIHsg
fTsKLQogICAgIElEQkVycm9yIGVycm9yOworICAgIGNvbnN0IGF1dG8mIGluZGV4TWFwID0gaW5m
by5pbmRleE1hcCgpOwogICAgIGJvb2wgYW55UmVjb3Jkc1N1Y2NlZWRlZCA9IGZhbHNlOwotICAg
IGZvciAoYXV0byYgaW5kZXggOiBpbmZvLmluZGV4TWFwKCkudmFsdWVzKCkpIHsKLSAgICAgICAg
SW5kZXhLZXkgaW5kZXhLZXk7Ci0gICAgICAgIGdlbmVyYXRlSW5kZXhLZXlGb3JWYWx1ZShtX3Nl
cmlhbGl6YXRpb25Db250ZXh0LT5leGVjU3RhdGUoKSwgaW5kZXgsIGpzVmFsdWUsIGluZGV4S2V5
LCBpbmZvLmtleVBhdGgoKSwga2V5KTsKIAotICAgICAgICBpZiAoaW5kZXhLZXkuaXNOdWxsKCkp
Ci0gICAgICAgICAgICBjb250aW51ZTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIFtpbmRleElELCBp
bmRleEtleV0gOiBpbmRleEtleXMpIHsKKyAgICAgICAgYXV0byBpbmRleEl0ZXJhdG9yID0gaW5k
ZXhNYXAuZmluZChpbmRleElEKTsKKyAgICAgICAgQVNTRVJUKGluZGV4SXRlcmF0b3IgIT0gaW5k
ZXhNYXAuZW5kKCkpOwogCi0gICAgICAgIGVycm9yID0gdW5jaGVja2VkUHV0SW5kZXhLZXkoaW5k
ZXgsIGtleSwgaW5kZXhLZXksIHJlY29yZElEKTsKKyAgICAgICAgaWYgKGluZGV4SXRlcmF0b3Ig
PT0gaW5kZXhNYXAuZW5kKCkpIHsKKyAgICAgICAgICAgIGVycm9yID0gSURCRXJyb3IgeyBJbnZh
bGlkU3RhdGVFcnJvciwgIk1pc3NpbmcgaW5kZXggbWV0YWRhdGEiIH07CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGVycm9yID0gdW5jaGVja2VkUHV0SW5kZXhLZXko
aW5kZXhJdGVyYXRvci0+dmFsdWUsIGtleSwgaW5kZXhLZXksIHJlY29yZElEKTsKICAgICAgICAg
aWYgKCFlcnJvci5pc051bGwoKSkKICAgICAgICAgICAgIGJyZWFrOwogCkBAIC0xODkxLDcgKzE4
ODksNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OnVwZGF0ZUFsbEluZGV4ZXNG
b3JBZGRSZWNvcmQoY29uc3QgSURCT2JqZWN0U3RvcgogICAgIHJldHVybiBlcnJvcjsKIH0KIAot
SURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3JlOjphZGRSZWNvcmQoY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQk9iamVjdFN0b3Jl
SW5mbyYgb2JqZWN0U3RvcmVJbmZvLCBjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBJ
REJWYWx1ZSYgdmFsdWUpCitJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3RvcmU6OmFkZFJlY29y
ZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29u
c3QgSURCT2JqZWN0U3RvcmVJbmZvJiBvYmplY3RTdG9yZUluZm8sIGNvbnN0IElEQktleURhdGEm
IGtleURhdGEsIGNvbnN0IEluZGV4SURUb0luZGV4S2V5TWFwJiBpbmRleEtleXMsIGNvbnN0IElE
QlZhbHVlJiB2YWx1ZSkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiU1FMaXRlSURCQmFja2luZ1N0
b3JlOjphZGRSZWNvcmQgLSBrZXkgJXMsIG9iamVjdCBzdG9yZSAlIiBQUkl1NjQsIGtleURhdGEu
bG9nZ2luZ1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIG9iamVjdFN0b3JlSW5mby5pZGVudGlmaWVy
KCkpOwogCkBAIC0xOTMwLDcgKzE5MjgsNyBAQCBJREJFcnJvciBTUUxpdGVJREJCYWNraW5nU3Rv
cmU6OmFkZFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aQogICAg
ICAgICByZWNvcmRJRCA9IG1fc3FsaXRlREItPmxhc3RJbnNlcnRSb3dJRCgpOwogICAgIH0KIAot
ICAgIGF1dG8gZXJyb3IgPSB1cGRhdGVBbGxJbmRleGVzRm9yQWRkUmVjb3JkKG9iamVjdFN0b3Jl
SW5mbywga2V5RGF0YSwgdmFsdWUuZGF0YSgpLCByZWNvcmRJRCk7CisgICAgYXV0byBlcnJvciA9
IHVwZGF0ZUFsbEluZGV4ZXNGb3JBZGRSZWNvcmQob2JqZWN0U3RvcmVJbmZvLCBrZXlEYXRhLCBp
bmRleEtleXMsIHJlY29yZElEKTsKIAogICAgIGlmICghZXJyb3IuaXNOdWxsKCkpIHsKICAgICAg
ICAgYXV0byBzcWwgPSBjYWNoZWRTdGF0ZW1lbnQoU1FMOjpEZWxldGVPYmplY3RTdG9yZVJlY29y
ZCwgIkRFTEVURSBGUk9NIFJlY29yZHMgV0hFUkUgb2JqZWN0U3RvcmVJRCA9ID8gQU5EIGtleSA9
IENBU1QoPyBBUyBURVhUKTsiX3MpOwpAQCAtMjczNyw2ICsyNzM1LDExIEBAIElEQkVycm9yIFNR
TGl0ZUlEQkJhY2tpbmdTdG9yZTo6aXRlcmF0ZUN1cnNvcihjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHRyYW5zCiAgICAgcmV0dXJuIElEQkVycm9yIHsgfTsKIH0KIAorSURCU2VyaWFsaXph
dGlvbkNvbnRleHQmIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6c2VyaWFsaXphdGlvbkNvbnRleHQo
KQoreworICAgIHJldHVybiBtX3NlcmlhbGl6YXRpb25Db250ZXh0LmdldCgpOworfQorCiBJREJP
YmplY3RTdG9yZUluZm8qIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6aW5mb0Zvck9iamVjdFN0b3Jl
KHVpbnQ2NF90IG9iamVjdFN0b3JlSWRlbnRpZmllcikKIHsKICAgICBBU1NFUlQobV9kYXRhYmFz
ZUluZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5oCmluZGV4IDMzNmUyOTNjNTkwYWJm
NGNlZTdiOTA3OWI3ZTc0NGFmNmZlNDg2ZjQuLmJiNWViYjU1OTBlNzQ3MzA3OTI3NDlmZWUyY2Yx
YWFjNWM2OTQzOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmgKQEAgLTcxLDcgKzcx
LDcgQEAgcHVibGljOgogICAgIElEQkVycm9yIHJlbmFtZUluZGV4KGNvbnN0IElEQlJlc291cmNl
SWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlk
ZW50aWZpZXIsIHVpbnQ2NF90IGluZGV4SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBuZXdOYW1l
KSBmaW5hbDsKICAgICBJREJFcnJvciBrZXlFeGlzdHNJbk9iamVjdFN0b3JlKGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RT
dG9yZUlkZW50aWZpZXIsIGNvbnN0IElEQktleURhdGEmLCBib29sJiBrZXlFeGlzdHMpIGZpbmFs
OwogICAgIElEQkVycm9yIGRlbGV0ZVJhbmdlKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYg
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNv
bnN0IElEQktleVJhbmdlRGF0YSYpIGZpbmFsOwotICAgIElEQkVycm9yIGFkZFJlY29yZChjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURC
T2JqZWN0U3RvcmVJbmZvJiwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IElEQlZhbHVlJikgZmlu
YWw7CisgICAgSURCRXJyb3IgYWRkUmVjb3JkKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYg
dHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8mLCBjb25zdCBJ
REJLZXlEYXRhJiwgY29uc3QgSW5kZXhJRFRvSW5kZXhLZXlNYXAmLCBjb25zdCBJREJWYWx1ZSYp
IGZpbmFsOwogICAgIElEQkVycm9yIGdldFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZp
ZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVy
LCBjb25zdCBJREJLZXlSYW5nZURhdGEmLCBJREJHZXRSZWNvcmREYXRhVHlwZSwgSURCR2V0UmVz
dWx0JiBvdXRWYWx1ZSkgZmluYWw7CiAgICAgSURCRXJyb3IgZ2V0QWxsUmVjb3Jkcyhjb25zdCBJ
REJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCR2V0
QWxsUmVjb3Jkc0RhdGEmLCBJREJHZXRBbGxSZXN1bHQmIG91dFZhbHVlKSBmaW5hbDsKICAgICBJ
REJFcnJvciBnZXRJbmRleFJlY29yZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5z
YWN0aW9uSWRlbnRpZmllciwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1aW50NjRf
dCBpbmRleElkZW50aWZpZXIsIEluZGV4ZWREQjo6SW5kZXhSZWNvcmRUeXBlLCBjb25zdCBJREJL
ZXlSYW5nZURhdGEmLCBJREJHZXRSZXN1bHQmIG91dFZhbHVlKSBmaW5hbDsKQEAgLTgyLDYgKzgy
LDggQEAgcHVibGljOgogICAgIElEQkVycm9yIG9wZW5DdXJzb3IoY29uc3QgSURCUmVzb3VyY2VJ
ZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkN1cnNvckluZm8mLCBJ
REJHZXRSZXN1bHQmIG91dFJlc3VsdCkgZmluYWw7CiAgICAgSURCRXJyb3IgaXRlcmF0ZUN1cnNv
cihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiBjdXJzb3JJZGVudGlmaWVyLCBjb25zdCBJREJJdGVy
YXRlQ3Vyc29yRGF0YSYsIElEQkdldFJlc3VsdCYgb3V0UmVzdWx0KSBmaW5hbDsKIAorICAgIElE
QlNlcmlhbGl6YXRpb25Db250ZXh0JiBzZXJpYWxpemF0aW9uQ29udGV4dCgpIGZpbmFsOworCiAg
ICAgSURCT2JqZWN0U3RvcmVJbmZvKiBpbmZvRm9yT2JqZWN0U3RvcmUodWludDY0X3Qgb2JqZWN0
U3RvcmVJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGRlbGV0ZUJhY2tpbmdTdG9yZSgpIGZp
bmFsOwogCkBAIC0xMjMsNyArMTI1LDcgQEAgcHJpdmF0ZToKICAgICBJREJFcnJvciB1bmNoZWNr
ZWRHZXRLZXlHZW5lcmF0b3JWYWx1ZShpbnQ2NF90IG9iamVjdFN0b3JlSUQsIHVpbnQ2NF90JiBv
dXRWYWx1ZSk7CiAgICAgSURCRXJyb3IgdW5jaGVja2VkU2V0S2V5R2VuZXJhdG9yVmFsdWUoaW50
NjRfdCBvYmplY3RTdG9yZUlELCB1aW50NjRfdCB2YWx1ZSk7CiAKLSAgICBJREJFcnJvciB1cGRh
dGVBbGxJbmRleGVzRm9yQWRkUmVjb3JkKGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYsIGNvbnN0
IElEQktleURhdGEmLCBjb25zdCBUaHJlYWRTYWZlRGF0YUJ1ZmZlciYgdmFsdWUsIGludDY0X3Qg
cmVjb3JkSUQpOworICAgIElEQkVycm9yIHVwZGF0ZUFsbEluZGV4ZXNGb3JBZGRSZWNvcmQoY29u
c3QgSURCT2JqZWN0U3RvcmVJbmZvJiwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IEluZGV4SURU
b0luZGV4S2V5TWFwJiwgaW50NjRfdCByZWNvcmRJRCk7CiAgICAgSURCRXJyb3IgdXBkYXRlT25l
SW5kZXhGb3JBZGRSZWNvcmQoY29uc3QgSURCSW5kZXhJbmZvJiwgY29uc3QgSURCS2V5RGF0YSYs
IGNvbnN0IFRocmVhZFNhZmVEYXRhQnVmZmVyJiB2YWx1ZSwgaW50NjRfdCByZWNvcmRJRCk7CiAg
ICAgSURCRXJyb3IgdW5jaGVja2VkUHV0SW5kZXhLZXkoY29uc3QgSURCSW5kZXhJbmZvJiwgY29u
c3QgSURCS2V5RGF0YSYga2V5VmFsdWUsIGNvbnN0IEluZGV4S2V5JiwgaW50NjRfdCByZWNvcmRJ
RCk7CiAgICAgSURCRXJyb3IgdW5jaGVja2VkUHV0SW5kZXhSZWNvcmQoaW50NjRfdCBvYmplY3RT
dG9yZUlELCBpbnQ2NF90IGluZGV4SUQsIGNvbnN0IElEQktleURhdGEmIGtleVZhbHVlLCBjb25z
dCBJREJLZXlEYXRhJiBpbmRleEtleSwgaW50NjRfdCByZWNvcmRJRCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRh
dGFiYXNlLmNwcAppbmRleCA0MjllNDQyYWU5MjY4ZWE0MWYzMDc3NGFlZWM3YmUwMGUyODcxN2Q2
Li4zYzhiN2NjYTQwYjBkYmU3ZWE2ZTg0OWNjMWNlYjU5ZGY0Mjc0ZTE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJ
REJEYXRhYmFzZS5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJJREJTZXJ2ZXIuaCIK
ICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkluZm8uaCIKICNpbmNsdWRlICJJREJWYWx1ZS5oIgor
I2luY2x1ZGUgIkluZGV4S2V5LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlN0
b3JhZ2VRdW90YU1hbmFnZXIuaCIKICNpbmNsdWRlICJVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rp
b24uaCIKQEAgLTcwLDYgKzcxLDI5IEBAIHN0YXRpYyBpbmxpbmUgdWludDY0X3QgZXN0aW1hdGVT
aXplKGNvbnN0IElEQktleURhdGEmIGtleURhdGEpCiAgICAgcmV0dXJuIHNpemU7CiB9CiAKK3N0
YXRpYyBpbmxpbmUgdWludDY0X3QgZXN0aW1hdGVTaXplKGNvbnN0IElEQk9iamVjdFN0b3JlSW5m
byYgaW5mbywgY29uc3QgSW5kZXhJRFRvSW5kZXhLZXlNYXAmIGluZGV4S2V5cywgdWludDY0X3Qg
cHJpbWFyeUtleVNpemUpCit7CisgICAgLy8gRWFjaCBJbmRleFJlY29yZCBoYXMgNSBjb2x1bW5z
OgorICAgIC8vICAtIGluZGV4SUQsIG9iamVjdFN0b3JlSUQsIHJlY29yZElEOiB0aGVzZSBhcmUg
dmFyaW50cywgZXN0aW1hdGUgNCBieXRlcyBlYWNoID0gMTIgYnl0ZXMKKyAgICAvLyAgLSBwcmlt
YXJ5IGtleTogdXNlIHByaW1hcnlLZXlTaXplCisgICAgLy8gIC0gc2Vjb25kYXJ5IGluZGV4IGtl
eTogdXNlIGVzdGltYXRlU2l6ZShzZWNvbmRhcnkga2V5KQorICAgIHN0YXRpYyBjb25zdGV4cHIg
dWludDY0X3QgYmFzZUluZGV4Um93U2l6ZSA9IDEyOworICAgIHVpbnQ2NF90IHNpemUgPSAwOwor
CisgICAgZm9yIChjb25zdCBhdXRvJiBbaW5kZXhJRCwgaW5kZXhLZXldIDogaW5kZXhLZXlzKSB7
CisgICAgICAgIGF1dG8gaW5kZXhJdGVyYXRvciA9IGluZm8uaW5kZXhNYXAoKS5maW5kKGluZGV4
SUQpOworICAgICAgICBBU1NFUlQoaW5kZXhJdGVyYXRvciAhPSBpbmZvLmluZGV4TWFwKCkuZW5k
KCkpOworCisgICAgICAgIGlmIChpbmRleEl0ZXJhdG9yICE9IGluZm8uaW5kZXhNYXAoKS5lbmQo
KSAmJiBpbmRleEl0ZXJhdG9yLT52YWx1ZS5tdWx0aUVudHJ5KCkpIHsKKyAgICAgICAgICAgIGZv
ciAoY29uc3QgYXV0byYgc2Vjb25kYXJ5S2V5IDogaW5kZXhLZXkubXVsdGlFbnRyeSgpKQorICAg
ICAgICAgICAgICAgIHNpemUgKz0gKGJhc2VJbmRleFJvd1NpemUgKyBwcmltYXJ5S2V5U2l6ZSAr
IGVzdGltYXRlU2l6ZShzZWNvbmRhcnlLZXkpKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICBzaXplICs9IChiYXNlSW5kZXhSb3dTaXplICsgcHJpbWFyeUtleVNpemUgKyBlc3RpbWF0ZVNp
emUoaW5kZXhLZXkuYXNPbmVLZXkoKSkpOworICAgIH0KKworICAgIHJldHVybiBzaXplOworfQor
CiBzdGF0aWMgaW5saW5lIHVpbnQ2NF90IGVzdGltYXRlU2l6ZShjb25zdCBJREJWYWx1ZSYgdmFs
dWUpCiB7CiAgICAgdWludDY0X3Qgc2l6ZSA9IDQ7CkBAIC03MTIsMTYgKzczNiw2IEBAIHZvaWQg
VW5pcXVlSURCRGF0YWJhc2U6OnB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0
RGF0YSwgY29uc3QgSURCS2V5CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBRdW90
YSBjaGVjay4KLSAgICBhdXRvIHRhc2tTaXplID0gZGVmYXVsdFdyaXRlT3BlcmF0aW9uQ29zdCAr
IGVzdGltYXRlU2l6ZShrZXlEYXRhKSArIGVzdGltYXRlU2l6ZSh2YWx1ZSk7Ci0gICAgYXV0byog
b2JqZWN0U3RvcmUgPSBtX2RhdGFiYXNlSW5mby0+aW5mb0ZvckV4aXN0aW5nT2JqZWN0U3RvcmUo
b2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKLSAgICBpZiAob2JqZWN0U3RvcmUpCi0gICAgICAgIHRh
c2tTaXplICs9IG9iamVjdFN0b3JlLT5pbmRleE5hbWVzKCkuc2l6ZSgpICogdGFza1NpemU7Ci0g
ICAgaWYgKG1fc2VydmVyLnJlcXVlc3RTcGFjZShtX2lkZW50aWZpZXIub3JpZ2luKCksIHRhc2tT
aXplKSA9PSBTdG9yYWdlUXVvdGFNYW5hZ2VyOjpEZWNpc2lvbjo6RGVueSkgewotICAgICAgICBj
YWxsYmFjayhJREJFcnJvciB7IFF1b3RhRXhjZWVkZWRFcnJvciwgcXVvdGFFcnJvck1lc3NhZ2VO
YW1lKCJQdXRPckFkZCIpIH0sIHVzZWRLZXkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAg
ICAgYm9vbCB1c2VkS2V5SXNHZW5lcmF0ZWQgPSBmYWxzZTsKICAgICB1aW50NjRfdCBrZXlOdW1i
ZXI7CiAgICAgYXV0byB0cmFuc2FjdGlvbklkZW50aWZpZXIgPSByZXF1ZXN0RGF0YS50cmFuc2Fj
dGlvbklkZW50aWZpZXIoKTsKQEAgLTc0MSw2ICs3NTUsOSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjpwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElE
QktleQogICAgIH0gZWxzZQogICAgICAgICB1c2VkS2V5ID0ga2V5RGF0YTsKIAorICAgIC8vIEdl
bmVyYXRlIGluZGV4IGtleXMgdXAgZnJvbnQgZm9yIG1vcmUgYWNjdXJhdGUgcXVvdGEgY2hlY2su
CisgICAgYXV0byBpbmRleEtleXMgPSBnZW5lcmF0ZUluZGV4S2V5TWFwRm9yVmFsdWUobV9iYWNr
aW5nU3RvcmUtPnNlcmlhbGl6YXRpb25Db250ZXh0KCkuZXhlY1N0YXRlKCksICpvYmplY3RTdG9y
ZUluZm8sIHVzZWRLZXksIHZhbHVlKTsKKwogICAgIGlmIChvdmVyd3JpdGVNb2RlID09IEluZGV4
ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlOjpOb092ZXJ3cml0ZSkgewogICAgICAgICBi
b29sIGtleUV4aXN0czsKICAgICAgICAgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+a2V5RXhpc3Rz
SW5PYmplY3RTdG9yZSh0cmFuc2FjdGlvbklkZW50aWZpZXIsIG9iamVjdFN0b3JlSWRlbnRpZmll
ciwgdXNlZEtleSwga2V5RXhpc3RzKTsKQEAgLTc1Miw2ICs3NjksMjAgQEAgdm9pZCBVbmlxdWVJ
REJEYXRhYmFzZTo6cHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBj
b25zdCBJREJLZXkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KKworICAg
IC8vIFF1b3RhIGNoZWNrLgorICAgIGF1dG8ga2V5U2l6ZSA9IGVzdGltYXRlU2l6ZSh1c2VkS2V5
KTsKKyAgICBhdXRvIHZhbHVlU2l6ZSA9IGVzdGltYXRlU2l6ZSh2YWx1ZSk7CisgICAgYXV0byBp
bmRleFNpemUgPSBlc3RpbWF0ZVNpemUoKm9iamVjdFN0b3JlSW5mbywgaW5kZXhLZXlzLCBrZXlT
aXplKTsKKyAgICBhdXRvIHRhc2tTaXplID0gZGVmYXVsdFdyaXRlT3BlcmF0aW9uQ29zdCArIGtl
eVNpemUgKyB2YWx1ZVNpemUgKyBpbmRleFNpemU7CisKKyAgICBMT0coSW5kZXhlZERCLCAiVW5p
cXVlSURCRGF0YWJhc2U6OnB1dE9yQWRkIHF1b3RhIGNoZWNrIHdpdGggdGFzayBzaXplOiAlbGx1
IGtleSBzaXplOiAlbGx1IHZhbHVlIHNpemU6ICVsbHUgaW5kZXggc2l6ZTogJWxsdSIsIHRhc2tT
aXplLCBrZXlTaXplLCB2YWx1ZVNpemUsIGluZGV4U2l6ZSk7CisKKyAgICBpZiAobV9zZXJ2ZXIu
cmVxdWVzdFNwYWNlKG1faWRlbnRpZmllci5vcmlnaW4oKSwgdGFza1NpemUpID09IFN0b3JhZ2VR
dW90YU1hbmFnZXI6OkRlY2lzaW9uOjpEZW55KSB7CisgICAgICAgIGNhbGxiYWNrKElEQkVycm9y
IHsgUXVvdGFFeGNlZWRlZEVycm9yLCBxdW90YUVycm9yTWVzc2FnZU5hbWUoIlB1dE9yQWRkIikg
fSwgdXNlZEtleSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICAvLyBJZiBhIHJlY29y
ZCBhbHJlYWR5IGV4aXN0cyBpbiBzdG9yZSwgdGhlbiByZW1vdmUgdGhlIHJlY29yZCBmcm9tIHN0
b3JlIHVzaW5nIHRoZSBzdGVwcyBmb3IgZGVsZXRpbmcgcmVjb3JkcyBmcm9tIGFuIG9iamVjdCBz
dG9yZS4KICAgICAvLyBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIGZvcm1hbGx5IGRlbGV0aW5n
IGl0IGZyb20gZnJvbSB0aGUgb2JqZWN0IHN0b3JlIGFsc28gcmVtb3ZlcyBpdCBmcm9tIHRoZSBh
cHByb3ByaWF0ZSBpbmRleGVzLgogICAgIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmRlbGV0ZVJh
bmdlKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCB1c2VkS2V5
KTsKQEAgLTc2MCw3ICs3OTEsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpwdXRPckFkZChj
b25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleQogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgZXJyb3IgPSBtX2JhY2tpbmdTdG9yZS0+YWRkUmVjb3JkKHRy
YW5zYWN0aW9uSWRlbnRpZmllciwgKm9iamVjdFN0b3JlSW5mbywgdXNlZEtleSwgdmFsdWUpOwor
ICAgIGVycm9yID0gbV9iYWNraW5nU3RvcmUtPmFkZFJlY29yZCh0cmFuc2FjdGlvbklkZW50aWZp
ZXIsICpvYmplY3RTdG9yZUluZm8sIHVzZWRLZXksIGluZGV4S2V5cywgdmFsdWUpOwogICAgIGlm
ICghZXJyb3IuaXNOdWxsKCkpIHsKICAgICAgICAgY2FsbGJhY2soZXJyb3IsIHVzZWRLZXkpOwog
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zaGFyZWQvSW5kZXhLZXkuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NoYXJlZC9JbmRleEtleS5oCmluZGV4IGMzODBjNDk2YzIzMzQ1ZjQzNGI2N2Y4ZmQwNjI4MDUw
OWI3ZDc0ZmYuLjg3NTFjYTE4NDQ0ZTU5MTYxNWE1YTRkNTIxNjUwYmMzZDAzNTE3MjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JbmRleEtleS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JbmRleEtleS5o
CkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCiAKICNpbmNs
dWRlICJJREJLZXlEYXRhLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ4LDYgKzQ5LDggQEAgcHJp
dmF0ZToKICAgICBWZWN0b3I8SURCS2V5RGF0YT4gbV9rZXlzOwogfTsKIAordHlwZWRlZiBIYXNo
TWFwPHVpbnQ2NF90LCBJbmRleEtleT4gSW5kZXhJRFRvSW5kZXhLZXlNYXA7CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDk5MWI2ZDZlZDk2ZjVlMGQ5ODJkM2RiNTg1NTQ2ZWZjNTEwMmNkODQuLjE2NjdiZGQ0ZjUwM2Jl
YWNlOTJmZTMxNDY4NzA2Y2EwZWMyYmJiZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0NTQsNyArMTQ1NCw3IEBACiAJCTUx
NkQ3RDcwMUJCNUYwQkQwMEFGN0M3NyAvKiBJREJDb25uZWN0aW9uVG9TZXJ2ZXJEZWxlZ2F0ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4NUZDQkQx
QkI1Q0I3NzAwMTI4OThGIC8qIElEQkNvbm5lY3Rpb25Ub1NlcnZlckRlbGVnYXRlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE2RDdENzIxQkI1
RjBCRDAwQUY3Qzc3IC8qIElEQkNvbm5lY3Rpb25Ub0NsaWVudERlbGVnYXRlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTZEN0Q2RTFCQjVGMDY1MDBB
RjdDNzcgLyogSURCQ29ubmVjdGlvblRvQ2xpZW50RGVsZWdhdGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTZGN0Y2RDFDMzFFMzlBMDBGMTEx
REMgLyogU2VydmVyT3BlbkRCUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE2RjdGNkMxQzMxQzc5RDAwRjExMURDIC8qIFNlcnZlck9wZW5E
QlJlcXVlc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwotCQk1MTcxMzhGMDFCRUQxRDFBMDAwRDVGMDEgLyogSW5kZXhLZXkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzEzOEVFMUJFRDFEMTcwMDBENUYw
MSAvKiBJbmRleEtleS5oICovOyB9OworCQk1MTcxMzhGMDFCRUQxRDFBMDAwRDVGMDEgLyogSW5k
ZXhLZXkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
NzEzOEVFMUJFRDFEMTcwMDBENUYwMSAvKiBJbmRleEtleS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxNzEzOEY4MUJGMTI4QkIwMDBENUYwMSAv
KiBJbmRleFZhbHVlU3RvcmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxNzEzOEY2MUJGMTIyNjIwMDBENUYwMSAvKiBJbmRleFZhbHVlU3RvcmUuaCAq
LzsgfTsKIAkJNTE3MTM4RkMxQkYzQURGNDAwMEQ1RjAxIC8qIElEQkN1cnNvckluZm8uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzEzOEZBMUJGM0FE
QUMwMDBENUYwMSAvKiBJREJDdXJzb3JJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE3MTM5MDYxQkY2NERFQzAwMEQ1RjAxIC8qIE1lbW9y
eU9iamVjdFN0b3JlQ3Vyc29yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTcxMzkwNDFCRjY0REUzMDAwRDVGMDEgLyogTWVtb3J5T2JqZWN0U3RvcmVD
dXJzb3IuaCAqLzsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lE
QkJpbmRpbmdVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmlu
ZGluZ1V0aWxpdGllcy5jcHAKaW5kZXggNTc4YzEzNjc5ZWQ3ODlhOTg2OTMxMDUyYmMwNmFhMDQw
MDVjNzIzYi4uMmY1YWY2YzdlZGJlN2E3OWNlNzExYTBkOGE2ZTZiNGU4NzU5ZTU5NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAK
QEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJJREJLZXkuaCIKICNpbmNsdWRlICJJREJLZXlE
YXRhLmgiCiAjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgorI2luY2x1ZGUgIklEQk9iamVjdFN0b3Jl
SW5mby5oIgogI2luY2x1ZGUgIklEQlZhbHVlLmgiCiAjaW5jbHVkZSAiSW5kZXhLZXkuaCIKICNp
bmNsdWRlICJKU0Jsb2IuaCIKQEAgLTQ2Myw2ICs0NjQsMzQgQEAgdm9pZCBnZW5lcmF0ZUluZGV4
S2V5Rm9yVmFsdWUoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IElE
QkluZGUKICAgICBvdXRLZXkgPSBJbmRleEtleShXVEZNb3ZlKGtleURhdGFzKSk7CiB9CiAKK0lu
ZGV4SURUb0luZGV4S2V5TWFwIGdlbmVyYXRlSW5kZXhLZXlNYXBGb3JWYWx1ZShKU0M6OkpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdCBJREJPYmplY3RTdG9yZUluZm8m
IHN0b3JlSW5mbywgY29uc3QgSURCS2V5RGF0YSYga2V5LCBjb25zdCBJREJWYWx1ZSYgdmFsdWUp
Cit7CisgICAgYXV0byYgaW5kZXhNYXAgPSBzdG9yZUluZm8uaW5kZXhNYXAoKTsKKyAgICBhdXRv
IGluZGV4Q291bnQgPSBpbmRleE1hcC5zaXplKCk7CisgICAgaWYgKCFpbmRleENvdW50KQorICAg
ICAgICByZXR1cm4gSW5kZXhJRFRvSW5kZXhLZXlNYXAgeyB9OworCisgICAgSlNMb2NrSG9sZGVy
IGxvY2tlcihsZXhpY2FsR2xvYmFsT2JqZWN0LnZtKCkpOworICAgIGF1dG8ganNWYWx1ZSA9IGRl
c2VyaWFsaXplSURCVmFsdWVUb0pTVmFsdWUobGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwor
ICAgIGlmIChqc1ZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCisgICAgICAgIHJldHVybiBJbmRl
eElEVG9JbmRleEtleU1hcCB7IH07CisKKyAgICBJbmRleElEVG9JbmRleEtleU1hcCBpbmRleEtl
eXM7CisgICAgaW5kZXhLZXlzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoaW5kZXhDb3VudCk7CisK
KyAgICBmb3IgKGNvbnN0IGF1dG8mIFtpbmRleElELCBpbmRleEluZm9dIDogaW5kZXhNYXApIHsK
KyAgICAgICAgSW5kZXhLZXkgaW5kZXhLZXk7CisgICAgICAgIGdlbmVyYXRlSW5kZXhLZXlGb3JW
YWx1ZShsZXhpY2FsR2xvYmFsT2JqZWN0LCBpbmRleEluZm8sIGpzVmFsdWUsIGluZGV4S2V5LCBz
dG9yZUluZm8ua2V5UGF0aCgpLCBrZXkpOworCisgICAgICAgIGlmIChpbmRleEtleS5pc051bGwo
KSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGluZGV4S2V5cy5hZGQoaW5kZXhJ
RCwgV1RGTW92ZShpbmRleEtleSkpOworICAgIH0KKworICAgIHJldHVybiBpbmRleEtleXM7Cit9
CisKIE9wdGlvbmFsPEpTQzo6SlNWYWx1ZT4gZGVzZXJpYWxpemVJREJWYWx1ZVdpdGhLZXlJbmpl
Y3Rpb24oSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIGNvbnN0IElEQlZhbHVl
JiB2YWx1ZSwgY29uc3QgSURCS2V5RGF0YSYga2V5LCBjb25zdCBPcHRpb25hbDxJREJLZXlQYXRo
PiYga2V5UGF0aCkKIHsKICAgICBhdXRvIGpzVmFsdWUgPSBkZXNlcmlhbGl6ZUlEQlZhbHVlVG9K
U1ZhbHVlKGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaAppbmRleCA0NmRhNWFlZWRkNmEzYjU5
NGJhODk2MGY4NTJhYTcyZGUzMjFiN2IxLi44YWI3NGY4ODc5MGY2ZGRkMjE2ZjA1YTU4MGMzYjFm
NDIzZjhjMTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5k
aW5nVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGlu
Z1V0aWxpdGllcy5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKElOREVYRURfREFUQUJB
U0UpCiAKICNpbmNsdWRlICJJREJLZXlQYXRoLmgiCisjaW5jbHVkZSAiSW5kZXhLZXkuaCIKICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQyLDYgKzQzLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSURCSW5kZXhJbmZvOwogY2xhc3MgSURCS2V5
OwogY2xhc3MgSURCS2V5RGF0YTsKK2NsYXNzIElEQk9iamVjdFN0b3JlSW5mbzsKIGNsYXNzIElE
QlZhbHVlOwogY2xhc3MgSW5kZXhLZXk7CiBjbGFzcyBKU0RPTUdsb2JhbE9iamVjdDsKQEAgLTUy
LDYgKzU0LDggQEAgYm9vbCBpbmplY3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoSlNDOjpKU0dsb2Jh
bE9iamVjdCYsIGNvbnN0IElEQktleURhdGEmLCBKU0M6OkoKIAogdm9pZCBnZW5lcmF0ZUluZGV4
S2V5Rm9yVmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIGNvbnN0IElEQkluZGV4SW5mbyYsIEpT
Qzo6SlNWYWx1ZSwgSW5kZXhLZXkmIG91dEtleSwgY29uc3QgT3B0aW9uYWw8SURCS2V5UGF0aD4m
LCBjb25zdCBJREJLZXlEYXRhJik7CiAKK0luZGV4SURUb0luZGV4S2V5TWFwIGdlbmVyYXRlSW5k
ZXhLZXlNYXBGb3JWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0JiwgY29uc3QgSURCT2JqZWN0U3Rv
cmVJbmZvJiwgY29uc3QgSURCS2V5RGF0YSYsIGNvbnN0IElEQlZhbHVlJik7CisKIFJlZjxJREJL
ZXk+IHNjcmlwdFZhbHVlVG9JREJLZXkoSlNDOjpKU0dsb2JhbE9iamVjdCYsIGNvbnN0IEpTQzo6
SlNWYWx1ZSYpOwogCiBKU0M6OkpTVmFsdWUgZGVzZXJpYWxpemVJREJWYWx1ZVRvSlNWYWx1ZShK
U0M6OkpTR2xvYmFsT2JqZWN0JiwgY29uc3QgSURCVmFsdWUmLCBWZWN0b3I8c3RkOjpwYWlyPFN0
cmluZywgU3RyaW5nPj4mKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmYzhkYzAxMTkwOTkwMDRiMmNkNjhjNGRiZTdmMDIy
MDlmNzgzMzAzLi45YTBlYWE3MGNlYWM1MTUwZGIyZjQ3MWRkYzg1MzU4ZWVhM2NiYTkyIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMDUtMDMgIEJlbiBOaGFtICA8bmhhbUBhcHBsZS5jb20+
CisKKyAgICAgICAgSW1wcm92ZSBhY2N1cmFjeSBvZiBJbmRleGVkREIgZXN0aW1hdGVkIHdyaXRl
IHNpemUgY29tcHV0YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIxMTM2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZGVkIGEgbGF5b3V0IHRlc3QgdG8gY2hlY2sgdGhhdCB0aGUgc2l6ZSBlc3Rp
bWF0ZSBhc3NvY2lhdGVkIHdpdGggYWRkaW5nIGFuIG9iamVjdCB0byBhCisgICAgICAgIHN0b3Jl
IHdpdGggbWFueSBpbmRpY2VzIGlzIHJlYXNvbmFibGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnM6IFNraXAgdGVzdCBvbiBNYWMgV0sxIHNpbmNlIGl0IGRv
ZXNuJ3QgaW1wbGVtZW50IHF1b3RhIGNoZWNrcy4KKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vVGVz
dEV4cGVjdGF0aW9uczogU2tpcCB0ZXN0IG9uIFdpbmRvd3Mgc2luY2UgaXQgZG9lc24ndCBpbXBs
ZW1lbnQgcXVvdGEgY2hlY2tzLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9zdG9yYWdlLWxpbWl0LXdpdGgtaW5kaWNlcy5qczogQWRkZWQuCisgICAgICAgICogc3RvcmFn
ZS9pbmRleGVkZGIvc3RvcmFnZS1saW1pdC13aXRoLWluZGljZXMtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9zdG9yYWdlLWxpbWl0LXdpdGgtaW5kaWNl
cy5odG1sOiBBZGRlZC4KKwogMjAyMC0wNS0wNSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhh
bGxhd2FAYXBwbGUuY29tPgogCiAgICAgICAgIFsgTWFjIF0gZmFzdC9hbmltYXRpb24vcmVxdWVz
dC1hbmltYXRpb24tZnJhbWUtdGltZXN0YW1wcy5odG1sIGlzIGZsYWt5IGZhaWxpbmcuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNjA4Mzg4
ZTA3YjAzNmNhYzVlNTNmZDBhZDc5YzI3NmQ3NjIxN2FiMy4uNjVjNzYxN2MxMjhlZGNlZjc4YjA1
ZDM5NmFjN2VmMmZhNzNhZTYwZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEv
VGVzdEV4cGVjdGF0aW9ucwpAQCAtMzMxLDYgKzMzMSw3IEBAIGh0dHAvdGVzdHMvSW5kZXhlZERC
L3N0b3JhZ2UtbGltaXQuaHR0cHMuaHRtbCBbIFNraXAgXQogaHR0cC90ZXN0cy9JbmRleGVkREIv
c3RvcmFnZS1saW1pdC0xLmh0dHBzLmh0bWwgWyBTa2lwIF0KIGh0dHAvdGVzdHMvSW5kZXhlZERC
L3N0b3JhZ2UtbGltaXQtMi5odHRwcy5odG1sIFsgU2tpcCBdCiBzdG9yYWdlL2luZGV4ZWRkYi9z
dG9yYWdlLWxpbWl0Lmh0bWwgWyBTa2lwIF0KK3N0b3JhZ2UvaW5kZXhlZGRiL3N0b3JhZ2UtbGlt
aXQtd2l0aC1pbmRpY2VzLmh0bWwgWyBTa2lwIF0KIHN0b3JhZ2UvaW5kZXhlZGRiL3JlcXVlc3Qt
c2l6ZS1lc3RpbWF0ZS5odG1sIFsgU2tpcCBdCiAKICMgU2tpcCBXZWJSVEMgZm9yIG5vdyBpbiBX
SzEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25z
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYjFiZmRh
YWU2Y2NmYjRlZDFhMWJiYmZhY2I4ODQzZTFhZjc3M2I3YS4uNWEzNDRiMGI5M2ViODlhMjRhMzhk
NWIyNjA1MmM2ZWQ1MWUzMzllZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2lu
L1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBl
Y3RhdGlvbnMKQEAgLTIzOTksNiArMjM5OSw3IEBAIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
d2ViLWFwcHMvMDEyLmh0bWwKIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qvd2ViLWFwcHMvMDEz
Lmh0bWwKIAogc3RvcmFnZS9pbmRleGVkZGIvc3RvcmFnZS1saW1pdC5odG1sIFsgU2tpcCBdCitz
dG9yYWdlL2luZGV4ZWRkYi9zdG9yYWdlLWxpbWl0LXdpdGgtaW5kaWNlcy5odG1sIFsgU2tpcCBd
CiBzdG9yYWdlL2luZGV4ZWRkYi9yZXF1ZXN0LXNpemUtZXN0aW1hdGUuaHRtbCBbIFNraXAgXQog
aHR0cC90ZXN0cy9JbmRleGVkREIvc3RvcmFnZS1saW1pdC5odHRwcy5odG1sIFsgU2tpcCBdCiBo
dHRwL3Rlc3RzL0luZGV4ZWREQi9zdG9yYWdlLWxpbWl0LTEuaHR0cHMuaHRtbCBbIFNraXAgXQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3N0b3Jh
Z2UtbGltaXQtd2l0aC1pbmRpY2VzLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL3N0b3JhZ2UtbGltaXQtd2l0aC1pbmRpY2VzLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRhNDVh
NjI4ZDJjYjJkMmNkNmRlNmNjMjRiNDdlMDQwNDZiNWI4MjEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc3RvcmFnZS1saW1pdC13aXRo
LWluZGljZXMuanMKQEAgLTAsMCArMSw1MCBAQAoraWYgKHRoaXMuaW1wb3J0U2NyaXB0cykgewor
ICAgIGltcG9ydFNjcmlwdHMoJy4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzJyk7CisgICAg
aW1wb3J0U2NyaXB0cygnc2hhcmVkLmpzJyk7Cit9CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICB0ZXN0UnVubmVyLnNldEFsbG93U3RvcmFnZVF1b3RhSW5jcmVhc2UoZmFsc2UpOworCit2
YXIgcXVvdGEgPSA0MDAgKiAxMDI0OyAvLyBkZWZhdWx0IHF1b3RhIGZvciB0ZXN0aW5nLgordmFy
IG51bUluZGljZXMgPSAxMDsKKworZGVzY3JpcHRpb24oIlRoaXMgdGVzdCBjaGVja3MgdGhhdCB0
aGUgc2l6ZSBlc3RpbWF0ZSBhc3NvY2lhdGVkIHdpdGggYWRkaW5nIGFuIG9iamVjdCB0byBhIHN0
b3JlIHdpdGggbWFueSBpbmRpY2VzIGlzIHJlYXNvbmFibGUuIik7CisKK2luZGV4ZWREQlRlc3Qo
cHJlcGFyZURhdGFiYXNlLCBvbk9wZW5TdWNjZXNzKTsKKworZnVuY3Rpb24gcHJlcGFyZURhdGFi
YXNlKGV2ZW50KQoreworICAgIHByZWFtYmxlKGV2ZW50KTsKKworICAgIGV2YWxBbmRMb2coImRi
ID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIGV2YWxBbmRMb2coInN0b3JlID0gZGIuY3Jl
YXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKworICAgIGxldCBkYiA9IGV2ZW50LnRhcmdldDsK
KyAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bUluZGljZXM7IGkrKykgeworICAgICAgICBsZXQg
aW5kZXhOYW1lID0gJ2EnICsgaTsKKyAgICAgICAgc3RvcmUuY3JlYXRlSW5kZXgoaW5kZXhOYW1l
LCBpbmRleE5hbWUpOworICAgIH0KK30KKworZnVuY3Rpb24gb25PcGVuU3VjY2VzcyhldmVudCkK
K3sKKyAgICBwcmVhbWJsZShldmVudCk7CisgICAgZXZhbEFuZExvZygiZGIgPSBldmVudC50YXJn
ZXQucmVzdWx0Iik7CisgICAgZXZhbEFuZExvZygic3RvcmUgPSBkYi50cmFuc2FjdGlvbignc3Rv
cmUnLCAncmVhZHdyaXRlJykub2JqZWN0U3RvcmUoJ3N0b3JlJykiKTsKKworICAgIC8vIFRoZSBz
aXplIG9mIHRoZSBpbmRleGVkIGF0dHJpYnV0ZXMgYTAsIGExLCAuLi4gaXMgc21hbGwsIHNvIHRo
ZXkgc2hvdWxkbid0IGhhdmUgYSBtYXRlcmlhbAorICAgIC8vIGVmZmVjdCBvbiB0aGUgZXN0aW1h
dGVkIHB1dCBzaXplIGZvciBxdW90YSBwdXJwb3Nlcy4KKyAgICBldmFsQW5kTG9nKGByZXF1ZXN0
ID0gc3RvcmUuYWRkKHthMDogMCwgYTE6IDEsIHBheWxvYWQ6IG5ldyBVaW50OEFycmF5KCR7cXVv
dGEgLyBudW1JbmRpY2VzfSl9LCA0MilgKTsKKworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVu
Y3Rpb24oZXZlbnQpIHsKKyAgICAgICAgcmVxRXZlbnQgPSBldmVudDsKKyAgICAgICAgc2hvdWxk
QmUoInJlcUV2ZW50LnRhcmdldC5yZXN1bHQiLCAiNDIiKTsKKyAgICAgICAgZmluaXNoSlNUZXN0
KCk7CisgICAgfQorCisgICAgcmVxdWVzdC5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAg
ICAgICAgdGVzdEZhaWxlZCgiQWRkIG9wZXJhdGlvbiBmYWlsZWQsIGJ1dCBpdCBzaG91bGQgc3Vj
Y2VlZCBiZWNhdXNlIGl0IHVzZXMgbXVjaCBsZXNzIHNwYWNlIHRoYW4gdGhlIHN0b3JhZ2UgbGlt
aXQuIik7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3N0b3JhZ2UtbGltaXQtd2l0aC1pbmRpY2VzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3N0b3JhZ2UtbGltaXQt
d2l0aC1pbmRpY2VzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hN2Y5MDliM2NiODk0YTMwZWYw
N2UzYjkxMjY5ZmMzNDM2ZGEzYmE5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvc3RvcmFnZS1saW1pdC13aXRoLWluZGljZXMtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMjMgQEAKK1RoaXMgdGVzdCBjaGVja3MgdGhhdCB0aGUgc2l6ZSBlc3RpbWF0ZSBh
c3NvY2lhdGVkIHdpdGggYWRkaW5nIGFuIG9iamVjdCB0byBhIHN0b3JlIHdpdGggbWFueSBpbmRp
Y2VzIGlzIHJlYXNvbmFibGUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitpbmRl
eGVkREIgPSBzZWxmLmluZGV4ZWREQiB8fCBzZWxmLndlYmtpdEluZGV4ZWREQiB8fCBzZWxmLm1v
ekluZGV4ZWREQiB8fCBzZWxmLm1zSW5kZXhlZERCIHx8IHNlbGYuT0luZGV4ZWREQjsKKworaW5k
ZXhlZERCLmRlbGV0ZURhdGFiYXNlKGRibmFtZSkKK2luZGV4ZWREQi5vcGVuKGRibmFtZSkKKwor
cHJlcGFyZURhdGFiYXNlKCk6CitkYiA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK3N0b3JlID0gZGIu
Y3JlYXRlT2JqZWN0U3RvcmUoJ3N0b3JlJykKKworb25PcGVuU3VjY2VzcygpOgorZGIgPSBldmVu
dC50YXJnZXQucmVzdWx0CitzdG9yZSA9IGRiLnRyYW5zYWN0aW9uKCdzdG9yZScsICdyZWFkd3Jp
dGUnKS5vYmplY3RTdG9yZSgnc3RvcmUnKQorcmVxdWVzdCA9IHN0b3JlLmFkZCh7YTA6IDAsIGEx
OiAxLCBwYXlsb2FkOiBuZXcgVWludDhBcnJheSg0MDk2MCl9LCA0MikKK1BBU1MgcmVxRXZlbnQu
dGFyZ2V0LnJlc3VsdCBpcyA0MgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L3N0b3JhZ2UtbGltaXQtd2l0aC1pbmRpY2VzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9zdG9yYWdlLWxpbWl0LXdpdGgtaW5kaWNlcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJkODhj
Y2NjZmU3NGQzYzgwMTE5NThhOWE1OTlkYjIyMGQ3Y2JkMTkKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9zdG9yYWdlLWxpbWl0LXdpdGgtaW5kaWNlcy5o
dG1sCkBAIC0wLDAgKzEsOSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3No
YXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvc3RvcmFnZS1saW1pdC13aXRoLWluZGljZXMuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
      

    </bug>

</bugzilla>