<?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>229414</bug_id>
          
          <creation_ts>2021-08-23 12:22:47 -0700</creation_ts>
          <short_desc>Cut down on use of CFGetTypeID, using dynamic_cf_cast instead; related streamlining</short_desc>
          <delta_ts>2022-05-12 11:17:05 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          
          <blocked>239591</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>hi</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>msaboff</cc>
    
    <cc>pangle</cc>
    
    <cc>philipj</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>thorton</cc>
    
    <cc>tommyw</cc>
    
    <cc>toyoshim</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1786504</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-08-23 12:22:47 -0700</bug_when>
    <thetext>Cut down on use of CFGetTypeID, using dynamic_cf_cast instead; related streamlining</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786531</commentid>
    <comment_count>1</comment_count>
      <attachid>436230</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-08-23 13:35:44 -0700</bug_when>
    <thetext>Created attachment 436230
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786544</commentid>
    <comment_count>2</comment_count>
      <attachid>436233</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-08-23 14:00:13 -0700</bug_when>
    <thetext>Created attachment 436233
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786565</commentid>
    <comment_count>3</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2021-08-23 14:35:29 -0700</bug_when>
    <thetext>dynamic_cf_cast! Very cool!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786572</commentid>
    <comment_count>4</comment_count>
      <attachid>436233</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2021-08-23 14:55:06 -0700</bug_when>
    <thetext>Comment on attachment 436233
Patch

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

&gt; Source/WebCore/platform/ios/UserAgentIOS.mm:-85
&gt; -        String appNameSuffix = applicationName.isEmpty() ? &quot;&quot; : makeString(&quot; &quot;, applicationName);

Is there a performance benefit to removing these intermediate variables? These `appNameSuffix` variables seemed to make the code more readable, but that may just be personal preference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786578</commentid>
    <comment_count>5</comment_count>
      <attachid>436233</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-08-23 15:02:20 -0700</bug_when>
    <thetext>Comment on attachment 436233
Patch

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

&gt;&gt; Source/WebCore/platform/ios/UserAgentIOS.mm:-85
&gt;&gt; -        String appNameSuffix = applicationName.isEmpty() ? &quot;&quot; : makeString(&quot; &quot;, applicationName);
&gt; 
&gt; Is there a performance benefit to removing these intermediate variables? These `appNameSuffix` variables seemed to make the code more readable, but that may just be personal preference.

Yes, there is a performance benefit.

But I can do a different version where we still have local variables, just different ones, and still keep the performance benefit. For example, you might like this better:

    auto separator = applicationName.isEmpty() ? &quot;&quot; : &quot; &quot;;
    return makeString(&quot;Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko)&quot;, separator, applicationName);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786592</commentid>
    <comment_count>6</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2021-08-23 15:37:05 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #5)
&gt; Comment on attachment 436233 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=436233&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/ios/UserAgentIOS.mm:-85
&gt; &gt;&gt; -        String appNameSuffix = applicationName.isEmpty() ? &quot;&quot; : makeString(&quot; &quot;, applicationName);
&gt; &gt; 
&gt; &gt; Is there a performance benefit to removing these intermediate variables? These `appNameSuffix` variables seemed to make the code more readable, but that may just be personal preference.
&gt; 
&gt; Yes, there is a performance benefit.
&gt; 
&gt; But I can do a different version where we still have local variables, just
&gt; different ones, and still keep the performance benefit. For example, you
&gt; might like this better:
&gt; 
&gt;     auto separator = applicationName.isEmpty() ? &quot;&quot; : &quot; &quot;;
&gt;     return makeString(&quot;Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6)
&gt; AppleWebKit/605.1.15 (KHTML, like Gecko)&quot;, separator, applicationName);

Yeah that reads better to me then the inlined ternary, just having the name &quot;separator&quot; or &quot;suffix&quot; is helpful to understand the intent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1786750</commentid>
    <comment_count>7</comment_count>
      <attachid>436233</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-08-24 08:59:30 -0700</bug_when>
    <thetext>Comment on attachment 436233
Patch

Looks like this broke iOS, should be easy to fix. But also, not compiling on Windows, trivial to fix. So not ready to review yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787673</commentid>
    <comment_count>8</comment_count>
      <attachid>436531</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-08-26 10:43:36 -0700</bug_when>
    <thetext>Created attachment 436531
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787744</commentid>
    <comment_count>9</comment_count>
      <attachid>436549</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-08-26 12:35:46 -0700</bug_when>
    <thetext>Created attachment 436549
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1787918</commentid>
    <comment_count>10</comment_count>
      <attachid>436600</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-08-26 18:42:29 -0700</bug_when>
    <thetext>Created attachment 436600
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788042</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-08-27 09:38:46 -0700</bug_when>
    <thetext>Looks like it is passing all EWS tests now, so ready for a review.

I improved the coding style at Joe’s request to use a local variable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788611</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-08-30 12:23:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/82540876&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788769</commentid>
    <comment_count>13</comment_count>
      <attachid>436600</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-08-30 18:59:01 -0700</bug_when>
    <thetext>Comment on attachment 436600
Patch

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

&gt; Source/WebKitLegacy/cf/ChangeLog:9
&gt; +        (loadSetting): Rename from populateSetting. Use dyanmic_cf_cast, kCFBooleanTrue, and

`dyanmic`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788777</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-08-30 20:43:41 -0700</bug_when>
    <thetext>Committed r281791 (241128@main): &lt;https://commits.webkit.org/241128@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1788778</commentid>
    <comment_count>15</comment_count>
      <attachid>436600</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-08-30 20:49:32 -0700</bug_when>
    <thetext>Comment on attachment 436600
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        (WebCore::makeSimpleColorFromARGBCFArray): Use dyanamic_cf_cast.

Fixed this one.

&gt;&gt; Source/WebKitLegacy/cf/ChangeLog:9
&gt;&gt; +        (loadSetting): Rename from populateSetting. Use dyanmic_cf_cast, kCFBooleanTrue, and
&gt; 
&gt; `dyanmic`

Didn’t fix this one, because I thought your comment was about the other one!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868488</commentid>
    <comment_count>16</comment_count>
      <attachid>436600</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2022-05-12 11:17:05 -0700</bug_when>
    <thetext>Comment on attachment 436600
Patch

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

&gt; Source/WTF/wtf/cf/TypeCastsCF.h:2
&gt; + * Copyright (C) 2014-2021 Apple Inc. All rights reserved.

Did you mean to update to only 2021?

&gt; Source/WebCore/platform/network/mac/WebCoreURLResponse.h:2
&gt; + * Copyright (C) 2008-2021 Apple Inc. All rights reserved.

Ditto

&gt; Source/WebCore/platform/network/mac/WebCoreURLResponse.mm:2
&gt; + * Copyright (C) 2008-2021 Apple Inc. All rights reserved.

Ditto

&gt; Source/WebKitLegacy/cf/WebCoreSupport/WebInspectorClientCF.cpp:2
&gt; + * Copyright (C) 2008-2021 Apple Inc. All Rights Reserved.

Ditto.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436230</attachid>
            <date>2021-08-23 13:35:44 -0700</date>
            <delta_ts>2021-08-23 14:03:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229414-20210823133543.patch</filename>
            <type>text/plain</type>
            <size>102251</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNDMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZmE4ZDUxYTY5NTIxODBlZmM0MTYxMjRlMGU5ODM0ZThiZjYwNTg5Li4zZmZkMTQyMTA5MDIwNWQ4
OGFmMWZiMDgyMTgxOGRkOTMyNTg2MjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAyMS0wOC0yMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgQ3V0IGRvd24gb24gdXNlIG9mIENGR2V0VHlwZUlELCB1c2luZyBkeW5hbWljX2Nm
X2Nhc3QgaW5zdGVhZDsgcmVsYXRlZCBzdHJlYW1saW5pbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTQxNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1v
dGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJ
bnNwZWN0b3JYUENDb25uZWN0aW9uOjpkZXNlcmlhbGl6ZU1lc3NhZ2UpOiBVc2UKKyAgICAgICAg
ZHluYW1pY19jZl9jYXN0IHRvIGNoZWNrIHR5cGUgaW5zdGVhZCBvZiBDRkdldFR5cGVJRC4gQWxz
byBkbyB0aGUKKyAgICAgICAgY2hlY2sgYXQgcnVudGltZSByYXRoZXIgdGhhbiBhc3NlcnRpbmcu
IE5vdCByZWFsbHkgc3VmZmljaWVudCB0bworICAgICAgICBhc3NlcnQgdGhlIGNvcnJlY3QgdHlw
ZSBmb3Igc29tZXRoaW5nIHRoYXQgY29tZXMgb3ZlciBhbiBYUEMgY29ubmVjdGlvbi4KKwogMjAy
MS0wOC0yMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtK
U0NdIFJlbW92ZSBhbHJlYWR5LXNoaXBwZWQgSlMgZmVhdHVyZSBmbGFncwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA2NDZhMWY3
NGNjOTgwMWU5MWZkMGNmN2RmNTVjZjQ1YjkzYmMxM2FlLi4yMmNhMjYwOGI5YWZlYjcwMDkwOTI5
MTA5MTg2ZTEzZmIzZjU3MTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIxLTA4LTIzICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBDdXQgZG93biBvbiB1c2Ugb2Yg
Q0ZHZXRUeXBlSUQsIHVzaW5nIGR5bmFtaWNfY2ZfY2FzdCBpbnN0ZWFkOyByZWxhdGVkIHN0cmVh
bWxpbmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI5NDE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiB3dGYvY2YvVHlwZUNhc3RzQ0YuaDogQWRkZWQgYSBkeW5hbWljX2NmX2Nhc3Qgb3ZlcmxvYWQg
dGhhdCBjb252ZXJ0cyBmcm9tCisgICAgICAgIG9uZSBSZXRhaW5QdHIgdHlwZSB0byBhbm90aGVy
IGFuZCBhdm9pZHMgcmVmZXJlbmNlIGNvdW50IGNodXJuLiBUd2Vha2VkIGNvbW1lbnRzLgorCisg
ICAgICAgICogd3RmL2NvY29hL0VudGl0bGVtZW50cy5tbToKKyAgICAgICAgKFdURjo6aGFzRW50
aXRsZW1lbnQpOiBVc2Uga0NGQm9vbGVhblRydWUgaW5zdGVhZCBvZiBDRkJvb2xlYW5HZXRWYWx1
ZS4KKworICAgICAgICAqIHd0Zi90ZXh0L2NvY29hL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJ
Q1VDb2NvYS5jcHA6CisgICAgICAgIChXVEY6OnRleHRCcmVha0xvY2FsZVByZWZlcmVuY2UpOiBV
c2UgZHluYW1pY19jZl9jYXN0LgorCiAyMDIxLTA4LTIxICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1t
YXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgb3ZlcndyaXRlQ29kZVBvaW50KCkgaW4gY3Jl
YXRlQW5kRmlsbEdseXBoUGFnZSgpIGlzIHdyb25nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGUyYzQ0OGY2MWMz
MGUwZWExY2I1MjgyOWNmNTdhNWNmN2E1MDkxMi4uMmRkZDEzYzVkOTI2NDJlZWY3M2Y1YzMwMDVm
NmIxOTc2Mjc3ODViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMCBAQAorMjAyMS0wOC0yMyAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ3V0IGRvd24gb24gdXNl
IG9mIENGR2V0VHlwZUlELCB1c2luZyBkeW5hbWljX2NmX2Nhc3QgaW5zdGVhZDsgcmVsYXRlZCBz
dHJlYW1saW5pbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyOTQxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZh
dGVBVkYuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bWFrZVNpbXBsZUNvbG9yRnJvbUFSR0JDRkFy
cmF5KTogVXNlIGR5YW5hbWljX2NmX2Nhc3QuCisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0
VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQ3VlQXR0cmlidXRlcyk6IERpdHRvLgorICAgICAgICBB
bHNvIHJlbW92ZWQgdW5uZWNlc3NhcnkgdHlwZSBjYXN0cyB3aGVuIGNvbXBhcmluZyB3aXRoIGtD
RkJvb2xlYW5UcnVlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbToKKyAgICAgICAgVXNlIGR5bmFtaWNf
Y2ZfY2FzdC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3Jl
VGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OnN5c3RlbUZvbnRGYW1pbGll
cyk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6aXNVc2VySW5zdGFsbGVkRm9udCk6IFVzZSBr
Q0ZCb29sZWFuVHJ1ZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9IRVZDVXRp
bGl0aWVzQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjp2YWxpZGF0ZUhFVkNQYXJhbWV0ZXJz
KTogVXNlIGR5bmFtaWNfY2ZfY2FzdCBhbmQga0NGQm9vbGVhblRydWUuCisgICAgICAgIChXZWJD
b3JlOjp2YWxpZGF0ZURvVmlQYXJhbWV0ZXJzKTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24ubW06CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb246OnNob3VsZERlY29kZVNhbXBs
ZSk6CisgICAgICAgIFVzZSBrQ0ZCb29sZWFuRmFsc2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udFBsYXRmb3JtRGF0YTo6b2JqZWN0Rm9yRXF1YWxpdHlDaGVjayk6IFVzZSBh
dXRvLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xD
VkFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyYW5zZmVyRnVuY3Rpb25Gcm9tU3RyaW5n
KTogUmVtb3ZlZCB0eXBlIGNoZWNrLCB3aGljaCBjYWxsZXIKKyAgICAgICAgc2hvdWxkIGRvIHNp
bmNlIHRoZSBhZ3VtZW50IHR5cGUgaXMgQ0ZTdHJpbmdSZWYuCisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHRHTENWQU5HTEU6OmNvcHlQaXhlbEJ1ZmZlclRvVGV4dHVyZSk6IFVzZQor
ICAgICAgICBkeW5hbWljX2NmX2Nhc3QgaW5zdGVhZCBvZiBhbiB1bmNoZWNrZWQgc3RhdGljX2Nh
c3QuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tOgorICAgICAgICAo
V2ViQ29yZTo6c3RhbmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKTogSW1wcm92ZWQg
ZWZmaWNpZW5jeQorICAgICAgICBieSB1c2luZyBhIGJldHRlciBpZG9tIGZvciB0aGUgc3BhY2Ug
YmVmb3JlIHRoZSBhcHBsaWNhdGlvbiBuYW1lLgorICAgICAgICBVc2UgZHluYW1pY19jZl9jYXN0
LgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dpbmRvd0Rpc3BsYXlDYXB0
dXJlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFueU9mQ0dXaW5kb3cpOiBVc2Uga0NGQm9v
bGVhbkZhbHNlLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNG
TmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByb2Nlc3NQcm94eVNlcnZlcnMpOiBVc2UgZHlu
YW1pY19jZl9jYXN0LgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFt
SGFuZGxlSW1wbENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRs
ZUltcGw6OmNob29zZVByb3h5RnJvbUFycmF5KTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2lvcy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MuaDogVHdlYWtlZCBhIGJpdC4KKwor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvaW9zL1dlYkNvcmVVUkxSZXNwb25zZUlPUy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUV4dGVuc2lvblRvTUlNRVR5cGVNYXApOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6YWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeSk6IFJlbW92ZWQg
dGhlIGNvZGUgdGhhdCBtYXBzICIubWpzIgorICAgICAgICB0byAidGV4dC9qYXZhc2NyaXB0Iiwg
bm8gbG9uZ2VyIG5lZWRlZCBzaW5jZSByZGFyOi8vcHJvYmxlbS80NjMzMjg5MworICAgICAgICB3
YXMgZml4ZWQgYSBjb3VwbGUgcmVsZWFzZXMgYmFjay4gUmVmYWN0b3JlZCB0byBzaGFyZSBjb2Rl
IHdpdGggdGhlCisgICAgICAgIE1hYywgdmlhIGZ1bmN0aW9ucyBpbiBXZWJDb3JlVVJMUmVzcG9u
c2UuaC9tbSwgd2hpY2ggYXJlIG5vdCBtYWNPUy1zcGVjaWZpYworICAgICAgICBldmVuIHRob3Vn
aCB0aGV5IGFyZSBpbiBhIGRpcmVjdG9yeSBuYW1lZCAibWFjIi4gRml4ZWQgYSBwbGFjZSB3aGVy
ZSB3ZQorICAgICAgICBkaWQgYWRvcHRDRiB3aGVyZSBpdCBzaG91bGQgYmUgYWRvcHROUy4KKwor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL05ldHdvcmtTdGF0ZU5vdGlmaWVyTWFjLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtTdGF0ZU5vdGlmaWVyOjp1cGRhdGVTdGF0ZVdp
dGhvdXROb3RpZnlpbmcpOiBVc2UKKyAgICAgICAgZHluYW1pY19jZl9jYXN0LgorCisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLmg6IFJlbmFtZWQgTUlNRVR5cGVG
cm9tVVRJVHJlZQorICAgICAgICB0byBtaW1lVHlwZUZyb21VVElUcmVlIHRvIG1ha2UgdGhlIHN0
eWxlIHJvYm90IGhhcHB5LiBDaGFuZ2VkIHRoZQorICAgICAgICBhcmd1bWVudCBhbmQgcmV0dXJu
IHR5cGUgdG8gQ0ZTdHJpbmdSZWYgc2luY2UgdGhhdCdzIHdoYXQgdGhlIGNhbGxlcnMKKyAgICAg
ICAgYWxsIHdhbnQsIGFuZCB3aGF0IHRoZSBpbXBsZW1lbnRhdGlvbiB1c2VzLCBhbmQgdGhlcmUg
aXMgbm8gcmVhc29uIHRvCisgICAgICAgIGNvbnZlcnQgYmFjayBhbmQgZm9ydGggdG8gV1RGOjpT
dHJpbmcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMubW06
CisgICAgICAgIChXZWJDb3JlOjptaW1lVHlwZUZyb21VVElUcmVlKTogVXNlIG51bGxwdHIsIG5v
dCBlbXB0eVN0cmluZygpLCBmb3IgdGhlCisgICAgICAgIHZhbHVlIHdoZW4gdGhlcmUgaXMgbm8g
TUlNRSB0eXBlIGZvdW5kLiBVc2UgYXV0by4gVXNlIGR5bmFtaWNfY2ZfY2FzdC4KKyAgICAgICAg
TWFrZSByZWN1cnNpb24gbW9yZSBlZmZpY2llbnQgc2luY2Ugd2UgZG9uJ3Qga2VlcCBjb252ZXJ0
aW5nIGJhY2sgYW5kCisgICAgICAgIGZvcnRoIGJldHdlZW4gQ0ZTdHJpbmdSZWYgYW5kIFdURjo6
U3RyaW5nLgorICAgICAgICAoV2ViQ29yZTo6VVRJRnJvbVRhZyk6IFJlbW92ZWQgdW5uZWVkZWQg
ZXhwbGljaXQgY29udmVyc3Rpb24gdG8gV1RGOjpTdHJpbmcuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UuaDogQWRkZWQgaGVscGVyIGZ1bmN0aW9u
cworICAgICAgICB0byB0aGUgaGVhZGVyLCBzaGFyZWQgYnkgV2ViQ29yZVVSTFJlc3BvbnNlLm1t
IGFuZCBXZWJDb3JlVVJMUmVzcG9uc2VJT1MubW0uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVF
eHRlbnNpb25Ub01JTUVUeXBlTWFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmFkanVz
dE1JTUVUeXBlSWZOZWNlc3NhcnkpOiBSZWZhY3RvcmVkIHRvIHVzZSBhIFNvcnRlZEFycmF5TWFw
CisgICAgICAgIGluc3RlYWQgb2YgYSBDRkRpY3Rpb25hcnksIGVsaW1pbmF0aW5nIHZhcmlvdXMg
dHlwZSBjYXN0cyBhbmQgY29udmVyc2lvbnMuCisgICAgICAgIFJlZmFjdG9yZWQgdG8gdXNlIHRo
ZSBuZXcgZnVuY3Rpb25zIGJlbG93LiBVc2UgbWFrZU5ldmVyRGVzdHJveWVkIHRvCisgICAgICAg
IGluc3RlYWQgb2YgUmV0YWluUHRyOjpsZWFrUmVmLiBSZW1vdmVkIHVubmVjZXNzYXJ5IGNoZWNr
IGZvciBlcXVhbGl0eQorICAgICAgICBzaW5jZSB0aGlzIGZ1bmN0aW9uIG9ubHkgZG9lcyB3b3Jr
IHdoZW4gQ0ZVUkxSZXNwb25zZUdldE1JTUVUeXBlIGlzIG51bGxwdHIuCisgICAgICAgIChXZWJD
b3JlOjpmaWxlUGF0aEV4dGVuc2lvbik6IEFkZGVkLiBSZWZhY3RvcmVkIHRoZSBjb2RlIHRvIGdl
dCBhIHBhdGggZXh0ZW5zaW9uCisgICAgICAgIGZyb20gYSBDRlVSTFJlc3BvbnNlUmVmIGludG8g
YSBmdW5jdGlvbiBzaW5jZSBpdCdzIHVzZWQgaW4gdHdvIHBsYWNlcy4KKyAgICAgICAgKFdlYkNv
cmU6OnByZWZlcnJlZE1JTUVUeXBlRm9yRmlsZUV4dGVuc2lvbkZyb21VVFR5cGUpOiBBZGRlZC4g
UmVmYWN0b3JlZAorICAgICAgICB0aGlzIGxvZ2ljYWwgb3BlcmF0aW9uLCBtYXBwaW5nIGEgZmls
ZSBleHRlbnNpb24gdG8gYSBNSU1FIHR5cGUsIGludG8gYSBmdW5jdGlvbi4KKyAgICAgICAgVGhp
cyBpcyB1c2VkIGluIHR3byBwbGFjZXMuIEFsc28gcHV0cyBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19CRUdJTi9FTkQKKyAgICAgICAgcGFpciBpbnRvIGEgc2luZ2xlIHBsYWNlLCBhbmQg
dGhpcyBpcyB3aGVyZSB3ZSdsbCBzd2l0Y2ggdG8gdXNlIG5ld2VyIFVUVHlwZQorICAgICAgICBt
YWNoaW5lcnkgbGF0ZXIgb24uCisKKyAgICAgICAgKiB0ZXN0aW5nL2NvY29hL1dlYkFyY2hpdmVE
dW1wU3VwcG9ydC5tbToKKyAgICAgICAgKFdlYkNvcmVUZXN0U3VwcG9ydDo6Y29udmVydFdlYlJl
c291cmNlUmVzcG9uc2VUb0RpY3Rpb25hcnkpOiBVc2UgYXV0byBhbmQKKyAgICAgICAgZHluYW1p
Y19jZl9jYXN0LgorCiAyMDIxLTA4LTIyICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4K
IAogICAgICAgICBbTEZDXVtJRkNdIEFkZCBzdXBwb3J0IGZvciB2ZXJ0aWNhbC1hbGlnbjogc3Vw
ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9QQUwvQ2hhbmdlTG9nCmluZGV4IGYxYjdjOGZmMDg0NWVlZGI0MzVjMTFhZWIyMWZkY2U4
NDE5MjY1M2EuLjQ2NjVhMzAwZGJlZTAxN2I2NzIxNTc2ZTI5NGRiMjFiOGQ1N2UzNTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
UEFML0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTA4LTIzICBEYXJpbiBBZGxlciAg
PGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBDdXQgZG93biBvbiB1c2Ugb2YgQ0ZHZXRUeXBl
SUQsIHVzaW5nIGR5bmFtaWNfY2ZfY2FzdCBpbnN0ZWFkOyByZWxhdGVkIHN0cmVhbWxpbmluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5NDE0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwYWwvc3lz
dGVtL21hYy9EZWZhdWx0U2VhcmNoUHJvdmlkZXIuY3BwOgorICAgICAgICAoUEFMOjpkZWZhdWx0
U2VhcmNoUHJvdmlkZXJEaXNwbGF5TmFtZSk6IFVzZSBkeW5hbWljX2NmX2Nhc3QgYW5kIHJlbW92
ZWQgYW4gdW5uZWVkZWQgY2FsbCB0bworICAgICAgICBDRlN0cmluZ0NyZWF0ZUNvcHksIHNpbmNl
IHRoZSBjYWxsZXJzIGRvbid0IG5lZWQgYW4gaXNvbGF0ZWQgY29weS4KKwogMjAyMS0wOC0xMCAg
VGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYjdjYTY5NWQxNmNhMjE2NmNkYWFkYjlmZDcwZmZk
MDdmYTEyMTE3Yy4uNjQ3ODU0NGI2NDU4NjUzYTY5YTI1Nzc4NjIxMzdkYzM2YzIwN2RlZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0wOC0yMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CisKKyAgICAgICAgQ3V0IGRvd24gb24gdXNlIG9mIENGR2V0VHlwZUlELCB1c2lu
ZyBkeW5hbWljX2NmX2Nhc3QgaW5zdGVhZDsgcmVsYXRlZCBzdHJlYW1saW5pbmcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTQxNAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2hhcmVkL1BsdWdpbnMv
TmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2luTW9kdWxlTWFjLm1tOgorICAgICAgICAoV2ViS2l0
OjpnZXRQbHVnaW5JbmZvRnJvbVByb3BlcnR5TGlzdHMpOiBVc2UgZHluYW1pY19jZl9jYXN0Lgor
ICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0UGx1Z2luSW5mbyk6IERp
dHRvLgorCiAyMDIxLTA4LTIyICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlcG9ydCBjb3JyZWN0IGJsb2NrZWQgVVJJIGluIENTUCB2aW9sYXRp
b24gcmVwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvY2YvQ2hhbmdlTG9nCmluZGV4IGU3NzExMzY3YmQwMGMzZDU5
ZjhhZTAyY2FhZDYyNmE1YjI5ODhmYTEuLjFiNTM0NjhmZTBmOGU2MWQwYjgxNjA2YzA5MzhlNDNj
ZDYwMzNjNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvY2YvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvY2YvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIw
MjEtMDgtMjMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIEN1dCBk
b3duIG9uIHVzZSBvZiBDRkdldFR5cGVJRCwgdXNpbmcgZHluYW1pY19jZl9jYXN0IGluc3RlYWQ7
IHJlbGF0ZWQgc3RyZWFtbGluaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjk0MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcDoK
KyAgICAgICAgKGxvYWRTZXR0aW5nKTogUmVuYW1lIGZyb20gcG9wdWxhdGVTZXR0aW5nLiBVc2Ug
ZHlhbm1pY19jZl9jYXN0LCBrQ0ZCb29sZWFuVHJ1ZSwgYW5kCisgICAgICAgIGtDRkJvb2xlYW5G
YWxzZSwgYWxzbyBjaGFuZ2UgdG8gcmV0dXJuIHZhbHVlIGluc3RlYWQgb2YgYSBwb2ludGVyLWJh
c2VkIG91dCBhcmd1bWVudC4KKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6aW5zcGVjdG9y
QXR0YWNoRGlzYWJsZWQpOiBVcGRhdGUgZm9yIGNoYW5nZSB0byBsb2FkU2V0dGluZy4KKyAgICAg
ICAgKFdlYkluc3BlY3RvckNsaWVudDo6aW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQpOiBEaXR0by4K
KyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6Y3JlYXRlRnJvbnRlbmRTZXR0aW5ncyk6IERp
dHRvLiBBbHNvIHVzZSBmaW5hbCBpbnN0ZWFkIG9mIHZpcnR1YWwuCisKIDIwMjAtMTAtMzAgIEJy
aWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogbW92
ZSBJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIgdG8gV2ViQ29yZSwgY2xlYW4gdXAgdXNl
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDAxZTFiOGU1MzhmOGZlMjczYjc3NTQ1
ZDgwMWIxMTMzNmQ1ODE3OTAuLmJlMDZhOTZjMWI2YjEwOGYxMzI4YzNjOGMxMjA2NTA3YTZlNzk2
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0w
OC0yMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ3V0IGRvd24g
b24gdXNlIG9mIENGR2V0VHlwZUlELCB1c2luZyBkeW5hbWljX2NmX2Nhc3QgaW5zdGVhZDsgcmVs
YXRlZCBzdHJlYW1saW5pbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyOTQxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogUGx1Z2lucy9XZWJCYXNlUGx1Z2luUGFja2FnZS5tbToKKyAgICAgICAgKC1b
V2ViQmFzZVBsdWdpblBhY2thZ2UgYnVuZGxlVmVyc2lvbl0pOiBVc2UgZHluYW1pY19jZl9jYXN0
LgorCiAyMDIxLTA4LTE5ICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+
CiAKICAgICAgICAgUmVtb3ZlIG9sZCB1bnVzZWQgY29kZSBhbmQgb3V0IG9mIGRhdGUgY29tbWVu
dHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9j
b2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5t
bQppbmRleCA0M2RmMjcwYWM4MjJmNGJmOWNkNjVkOWQ1MDBmODczZTJhYjFhZDNkLi4yNjU4NTVm
ZjdhMjc0MmUwMWM2MjE3NWU4MDA2NWVhZjEwY2JhNGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25u
ZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2Nv
Y29hL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0KQEAgLTM0LDYgKzM0LDcgQEAKICNp
bXBvcnQgPHd0Zi9Mb2NrLmg+CiAjaW1wb3J0IDx3dGYvUmVmLmg+CiAjaW1wb3J0IDx3dGYvUmV0
YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4KICNpbXBvcnQgPHd0Zi9j
b2NvYS9FbnRpdGxlbWVudHMuaD4KICNpbXBvcnQgPHd0Zi9zcGkvY29jb2EvQ0ZYUENCcmlkZ2VT
UEkuaD4KICNpbXBvcnQgPHd0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEkuaD4KQEAgLTExMCw5ICsx
MTEsOCBAQCBOU0RpY3Rpb25hcnkgKlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmRlc2Vy
aWFsaXplTWVzc2FnZSh4cGNfb2JqZWN0X3Qgb2JqZQogICAgICAgICByZXR1cm4gbmlsOwogICAg
IH0KIAotICAgIGF1dG8gZGljdGlvbmFyeSA9IGFkb3B0Q0YoX0NGWFBDQ3JlYXRlQ0ZPYmplY3RG
cm9tWFBDTWVzc2FnZSh4cGNEaWN0aW9uYXJ5KSk7CisgICAgYXV0byBkaWN0aW9uYXJ5ID0gZHlu
YW1pY19jZl9jYXN0PENGRGljdGlvbmFyeVJlZj4oYWRvcHRDRihfQ0ZYUENDcmVhdGVDRk9iamVj
dEZyb21YUENNZXNzYWdlKHhwY0RpY3Rpb25hcnkpKSk7CiAgICAgQVNTRVJUX1dJVEhfTUVTU0FH
RShkaWN0aW9uYXJ5LCAiVW5hYmxlIHRvIGRlc2VyaWFsaXplIHhwYyBtZXNzYWdlIik7Ci0gICAg
QVNTRVJUKENGR2V0VHlwZUlEKGRpY3Rpb25hcnkuZ2V0KCkpID09IENGRGljdGlvbmFyeUdldFR5
cGVJRCgpKTsKICAgICByZXR1cm4gZGljdGlvbmFyeS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NmL1R5cGVDYXN0c0NGLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9jZi9UeXBlQ2FzdHNDRi5oCmluZGV4IGUwOTIwZjZjNDZjMDIxZmE2M2JmNmQ5NjBj
NWM3MWU4ZTI2OGNhYzUuLjUzYjJiMjRmMTRmYTVjY2I4ZmI1NTUzZGVhMmZkMDZjM2U5NzRhMTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2NmL1R5cGVDYXN0c0NGLmgKKysrIGIvU291cmNl
L1dURi93dGYvY2YvVHlwZUNhc3RzQ0YuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTYyLDggKzYyLDkgQEAgV1RGX0RFQ0xBUkVf
Q0ZfTVVUQUJMRV9UWVBFX1RSQUlUKENGU3RyaW5nLCBDRk11dGFibGVTdHJpbmcpOwogCiAjdW5k
ZWYgV1RGX0RFQ0xBUkVfQ0ZfTVVUQUJMRV9UWVBFX1RSQUlUCiAKLS8vIFVzZSB0aGlzIGluc3Rl
YWQgb2YgY2hlY2tlZF9jZl9jYXN0PD4gd2hlbiBhY3RpdmVseSBjaGVja2luZyBDRiB0eXBlcywK
Ky8vIFVzZSBkeW5hbWljX2NmX2Nhc3Q8PiBpbnN0ZWFkIG9mIGNoZWNrZWRfY2ZfY2FzdDw+IHdo
ZW4gYWN0aXZlbHkgY2hlY2tpbmcgQ0YgdHlwZXMsCiAvLyBzaW1pbGFyIHRvIGR5bmFtaWNfY2Fz
dDw+IGluIEMrKy4gQmUgc3VyZSB0byBpbmNsdWRlIGEgbnVsbHB0ciBjaGVjay4KKwogdGVtcGxh
dGU8dHlwZW5hbWUgVD4gVCBkeW5hbWljX2NmX2Nhc3QoQ0ZUeXBlUmVmIG9iamVjdCkKIHsKICAg
ICBpZiAoIW9iamVjdCkKQEAgLTc1LDcgKzc2LDE5IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQg
ZHluYW1pY19jZl9jYXN0KENGVHlwZVJlZiBvYmplY3QpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PFQ+KGNvbnN0X2Nhc3Q8Q0ZfQlJJREdFRF9UWVBFKGlkKSB2b2lkKj4ob2JqZWN0KSk7CiB9CiAK
LS8vIFVzZSB0aGlzIGluc3RlYWQgb2YgZHluYW1pY19jZl9jYXN0PD4gd2hlbiBhIHNwZWNpZmMg
Q0YgdHlwZSBpcyByZXF1aXJlZC4KK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IFJl
dGFpblB0cjxUPiBkeW5hbWljX2NmX2Nhc3QoUmV0YWluUHRyPFU+JiYgb2JqZWN0KQoreworICAg
IGlmICghb2JqZWN0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGlmIChDRkdldFR5
cGVJRChvYmplY3QuZ2V0KCkpICE9IENGVHlwZVRyYWl0PFQ+Ojp0eXBlSUQoKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gYWRvcHRDRihzdGF0aWNfY2FzdDxUPihjb25z
dF9jYXN0PENGX0JSSURHRURfVFlQRShpZCkgdm9pZCo+KG9iamVjdC5sZWFrUmVmKCkpKSk7Cit9
CisKKy8vIFVzZSBjaGVja2VkX2NmX2Nhc3Q8PiBpbnN0ZWFkIG9mIGR5bmFtaWNfY2ZfY2FzdDw+
IHdoZW4gYSBzcGVjaWZpYyBDRiB0eXBlIGlzIHJlcXVpcmVkLgorCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBUIGNoZWNrZWRfY2ZfY2FzdChDRlR5cGVSZWYgb2JqZWN0KQogewogICAgIGlmICghb2Jq
ZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvRW50aXRsZW1lbnRzLm1tIGIv
U291cmNlL1dURi93dGYvY29jb2EvRW50aXRsZW1lbnRzLm1tCmluZGV4IGMzOTQ3YTgxNjMwMDNl
ODVmOTlmYjY2ZjgwNDk3MDg5MWVkOTMxODQuLjlkOTQ2YWQwZGYxMGM4YzZjODkxMmVhOTM2MTY1
Y2Y4ZmU1MTU0OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2NvY29hL0VudGl0bGVtZW50
cy5tbQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9FbnRpdGxlbWVudHMubW0KQEAgLTM5LDgg
KzM5LDcgQEAgc3RhdGljIGJvb2wgaGFzRW50aXRsZW1lbnQoU2VjVGFza1JlZiB0YXNrLCBjb25z
dCBjaGFyKiBlbnRpdGxlbWVudCkKICAgICBpZiAoIXRhc2spCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBhdXRvIHN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZ05v
Q29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBlbnRpdGxlbWVudCwga0NGU3RyaW5nRW5jb2RpbmdB
U0NJSSwga0NGQWxsb2NhdG9yTnVsbCkpOwotICAgIGF1dG8gdmFsdWUgPSBhZG9wdENGKFNlY1Rh
c2tDb3B5VmFsdWVGb3JFbnRpdGxlbWVudCh0YXNrLCBzdHJpbmcuZ2V0KCksIG51bGxwdHIpKTsK
LSAgICByZXR1cm4gdmFsdWUgJiYgQ0ZHZXRUeXBlSUQodmFsdWUuZ2V0KCkpID09IENGQm9vbGVh
bkdldFR5cGVJRCgpICYmIENGQm9vbGVhbkdldFZhbHVlKHN0YXRpY19jYXN0PENGQm9vbGVhblJl
Zj4odmFsdWUuZ2V0KCkpKTsKKyAgICByZXR1cm4gYWRvcHRDRihTZWNUYXNrQ29weVZhbHVlRm9y
RW50aXRsZW1lbnQodGFzaywgc3RyaW5nLmdldCgpLCBudWxscHRyKSkgPT0ga0NGQm9vbGVhblRy
dWU7CiB9CiAKIGJvb2wgaGFzRW50aXRsZW1lbnQoYXVkaXRfdG9rZW5fdCB0b2tlbiwgY29uc3Qg
Y2hhciogZW50aXRsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NvY29h
L1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VDb2NvYS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L2NvY29hL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VDb2NvYS5jcHAKaW5kZXggYTQw
MDlhZDlkY2VkZjZlNmJiNGQwNmNhZmI3NGQwZmQ3ZTA2ZTU0Mi4uMjVkMDZiMmE1OTRkM2MwMmQz
OGMzZjk5YjRmZDgxNTdmMzEwYTA1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9j
b2NvYS9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvY29jb2EvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVUNvY29hLmNwcApA
QCAtMjMsNiArMjMsNyBAQAogCiAjaW5jbHVkZSA8YXJyYXk+CiAjaW5jbHVkZSA8d3RmL1JldGFp
blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtNTEsMTEgKzUy
LDggQEAgVGV4dEJyZWFrSXRlcmF0b3I6OlRleHRCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcgc3Ry
aW5nLCBNb2RlIG1vZGUsIGNvbnN0IEF0b21TdHIKIAogc3RhdGljIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gdGV4dEJyZWFrTG9jYWxlUHJlZmVyZW5jZSgpCiB7Ci0gICAgYXV0byBsb2NhbGUgPSBh
ZG9wdENGKENGUHJlZmVyZW5jZXNDb3B5VmFsdWUoQ0ZTVFIoIkFwcGxlVGV4dEJyZWFrTG9jYWxl
IiksCi0gICAgICAgIGtDRlByZWZlcmVuY2VzQW55QXBwbGljYXRpb24sIGtDRlByZWZlcmVuY2Vz
Q3VycmVudFVzZXIsIGtDRlByZWZlcmVuY2VzQW55SG9zdCkpOwotICAgIGlmICghbG9jYWxlIHx8
IENGR2V0VHlwZUlEKGxvY2FsZS5nZXQoKSkgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkKLSAgICAg
ICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihs
b2NhbGUuZ2V0KCkpOworICAgIHJldHVybiBkeW5hbWljX2NmX2Nhc3Q8Q0ZTdHJpbmdSZWY+KGFk
b3B0Q0YoQ0ZQcmVmZXJlbmNlc0NvcHlWYWx1ZShDRlNUUigiQXBwbGVUZXh0QnJlYWtMb2NhbGUi
KSwKKyAgICAgICAga0NGUHJlZmVyZW5jZXNBbnlBcHBsaWNhdGlvbiwga0NGUHJlZmVyZW5jZXND
dXJyZW50VXNlciwga0NGUHJlZmVyZW5jZXNBbnlIb3N0KSkpOwogfQogCiBzdGF0aWMgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiB0b3BMYW5ndWFnZVByZWZlcmVuY2UoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vbWFjL0RlZmF1bHRTZWFyY2hQcm92aWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9tYWMvRGVmYXVsdFNlYXJjaFByb3ZpZGVy
LmNwcAppbmRleCA5NTE2ZDZhYmJiYjM1YWU4N2MyZDllYWJhMTY5YzcyNGI1ZDNkZTZlLi4zNmU4
ODViNGZkMzk0NDI0YzQ2YjBjMTEwZDc4ZDhmZjQyOWY1ODEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9tYWMvRGVmYXVsdFNlYXJjaFByb3ZpZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9tYWMvRGVmYXVsdFNlYXJjaFByb3ZpZGVy
LmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQ0ZVdGlsaXRpZXNTUEkuaCIKICNp
bmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9j
Zi9UeXBlQ2FzdHNDRi5oPgogCiBuYW1lc3BhY2UgUEFMIHsKIApAQCAtMzksMTIgKzQwLDExIEBA
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZGVmYXVsdFNlYXJjaFByb3ZpZGVyRGlzcGxheU5hbWUo
KQogICAgIGlmICghcHJvdmlkZXJJbmZvKQogICAgICAgICByZXR1cm4gQ0ZTVFIoIkdvb2dsZSIp
OwogCi0gICAgQ0ZUeXBlUmVmIGRpc3BsYXlOYW1lID0gQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJv
dmlkZXJJbmZvLmdldCgpLCBrQ0ZXZWJTZXJ2aWNlc1Byb3ZpZGVyRGVmYXVsdERpc3BsYXlOYW1l
S2V5KTsKKyAgICBhdXRvIGRpc3BsYXlOYW1lID0gZHluYW1pY19jZl9jYXN0PENGU3RyaW5nUmVm
PihDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm92aWRlckluZm8uZ2V0KCksIGtDRldlYlNlcnZpY2Vz
UHJvdmlkZXJEZWZhdWx0RGlzcGxheU5hbWVLZXkpKTsKICAgICBpZiAoIWRpc3BsYXlOYW1lKQog
ICAgICAgICByZXR1cm4gQ0ZTVFIoIkdvb2dsZSIpOwogCi0gICAgQVNTRVJUKENGR2V0VHlwZUlE
KGRpc3BsYXlOYW1lKSA9PSBDRlN0cmluZ0dldFR5cGVJRCgpKTsKLSAgICByZXR1cm4gYWRvcHRD
RihDRlN0cmluZ0NyZWF0ZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKENGU3RyaW5nUmVmKWRp
c3BsYXlOYW1lKSk7CisgICAgcmV0dXJuIGRpc3BsYXlOYW1lOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBQQUwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNw
cAppbmRleCBhMzYxNDBhZDQxZGQ5MGRkN2U1NGZhYTlmZTU5ZjJjOTM5NzJhNjVhLi44NGUwODZh
MTg0YmFjZTRmZDI5MWVmM2E1OTAzMjcyNjAzODcwOTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCkBAIC0zNiwxNCArMzYsMTYgQEAKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9EYXRhVmlldy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0ludDhBcnJheS5oPgogI2luY2x1ZGUgPHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZG
b3VuZGF0aW9uLmg+Ci0jaW5jbHVkZSA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CiAjaW5j
bHVkZSA8d3RmL01lZGlhVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5o
PgorI2luY2x1ZGUgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFt
ZXMuaD4KIAorI2luY2x1ZGUgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgorCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIEFWRkluYmFuZFRyYWNrUGFyZW50Ojp+QVZGSW5iYW5kVHJhY2tQYXJl
bnQoKSA9IGRlZmF1bHQ7CkBAIC03MSw4ICs3Myw4IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNS
R0JBPHVpbnQ4X3Q+PiBtYWtlU2ltcGxlQ29sb3JGcm9tQVJHQkNGQXJyYXkoQ0ZBcnJheVJlZiBj
CiAKICAgICBmbG9hdCBjb21wb25lbnRBcnJheVs0XTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8
IDQ7IGkrKykgewotICAgICAgICBDRk51bWJlclJlZiB2YWx1ZSA9IHN0YXRpY19jYXN0PENGTnVt
YmVyUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGNvbG9yQXJyYXksIGkpKTsKLSAgICAgICAg
aWYgKENGR2V0VHlwZUlEKHZhbHVlKSAhPSBDRk51bWJlckdldFR5cGVJRCgpKQorICAgICAgICBh
dXRvIHZhbHVlID0gZHluYW1pY19jZl9jYXN0PENGTnVtYmVyUmVmPihDRkFycmF5R2V0VmFsdWVB
dEluZGV4KGNvbG9yQXJyYXksIGkpKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgZmxvYXQgY29tcG9uZW50OwpAQCAtMTA1
LDcgKzEwNyw2IEBAIFJlZjxJbmJhbmRHZW5lcmljQ3VlPiBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZGOjpwcm9jZXNzQ3VlQXR0cmlidXRlcyhDRkF0dHJpYnV0CiAgICAgaWYgKCFsZW5ndGgpCiAg
ICAgICAgIHJldHVybiBjdWVEYXRhOwogCi0KICAgICBDRlJhbmdlIGVmZmVjdGl2ZVJhbmdlID0g
Q0ZSYW5nZU1ha2UoMCwgMCk7CiAgICAgd2hpbGUgKChlZmZlY3RpdmVSYW5nZS5sb2NhdGlvbiAr
IGVmZmVjdGl2ZVJhbmdlLmxlbmd0aCkgPCBsZW5ndGgpIHsKIApAQCAtMTE0LDcgKzExNSw2IEBA
IFJlZjxJbmJhbmRHZW5lcmljQ3VlPiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNz
Q3VlQXR0cmlidXRlcyhDRkF0dHJpYnV0CiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAg
ICBTdHJpbmdCdWlsZGVyIHRhZ1N0YXJ0OwotICAgICAgICBDRlN0cmluZ1JlZiB2YWx1ZVN0cmlu
ZzsKICAgICAgICAgU3RyaW5nIHRhZ0VuZDsKICAgICAgICAgQ0ZJbmRleCBhdHRyaWJ1dGVDb3Vu
dCA9IENGRGljdGlvbmFyeUdldENvdW50KGF0dHJpYnV0ZXMpOwogICAgICAgICBWZWN0b3I8Y29u
c3Qgdm9pZCo+IGtleXMoYXR0cmlidXRlQ291bnQpOwpAQCAtMTIyLDE0ICsxMjIsMTQgQEAgUmVm
PEluYmFuZEdlbmVyaWNDdWU+IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWVB
dHRyaWJ1dGVzKENGQXR0cmlidXQKICAgICAgICAgQ0ZEaWN0aW9uYXJ5R2V0S2V5c0FuZFZhbHVl
cyhhdHRyaWJ1dGVzLCBrZXlzLmRhdGEoKSwgdmFsdWVzLmRhdGEoKSk7CiAKICAgICAgICAgZm9y
IChDRkluZGV4IGkgPSAwOyBpIDwgYXR0cmlidXRlQ291bnQ7ICsraSkgewotICAgICAgICAgICAg
Q0ZTdHJpbmdSZWYga2V5ID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KGtleXNbaV0pOworICAg
ICAgICAgICAgYXV0byBrZXkgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZTdHJpbmdSZWY+KGtleXNbaV0p
OwogICAgICAgICAgICAgQ0ZUeXBlUmVmIHZhbHVlID0gdmFsdWVzW2ldOwotICAgICAgICAgICAg
aWYgKENGR2V0VHlwZUlEKGtleSkgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSB8fCAhQ0ZTdHJpbmdH
ZXRMZW5ndGgoa2V5KSkKKyAgICAgICAgICAgIGlmICgha2V5IHx8ICFDRlN0cmluZ0dldExlbmd0
aChrZXkpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBpZiAoQ0ZT
dHJpbmdDb21wYXJlKGtleSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9BbGlnbm1lbnQsIDApID09
IGtDRkNvbXBhcmVFcXVhbFRvKSB7Ci0gICAgICAgICAgICAgICAgdmFsdWVTdHJpbmcgPSBzdGF0
aWNfY2FzdDxDRlN0cmluZ1JlZj4odmFsdWUpOwotICAgICAgICAgICAgICAgIGlmIChDRkdldFR5
cGVJRCh2YWx1ZVN0cmluZykgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSB8fCAhQ0ZTdHJpbmdHZXRM
ZW5ndGgodmFsdWVTdHJpbmcpKQorICAgICAgICAgICAgICAgIGF1dG8gdmFsdWVTdHJpbmcgPSBk
eW5hbWljX2NmX2Nhc3Q8Q0ZTdHJpbmdSZWY+KHZhbHVlKTsKKyAgICAgICAgICAgICAgICBpZiAo
IXZhbHVlU3RyaW5nIHx8ICFDRlN0cmluZ0dldExlbmd0aCh2YWx1ZVN0cmluZykpCiAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzZWQgJiBB
bGlnbikKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0xNDgsNyArMTQ4LDcgQEAg
UmVmPEluYmFuZEdlbmVyaWNDdWU+IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3ND
dWVBdHRyaWJ1dGVzKENGQXR0cmlidXQKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYg
KENGU3RyaW5nQ29tcGFyZShrZXksIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfQm9sZFN0eWxlLCAw
KSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykgewotICAgICAgICAgICAgICAgIGlmIChzdGF0aWNfY2Fz
dDxDRkJvb2xlYW5SZWY+KHZhbHVlKSAhPSBrQ0ZCb29sZWFuVHJ1ZSkKKyAgICAgICAgICAgICAg
ICBpZiAodmFsdWUgIT0ga0NGQm9vbGVhblRydWUpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogCiAgICAgICAgICAgICAgICAgdGFnU3RhcnQuYXBwZW5kKCI8Yj4iKTsKQEAgLTE1Nyw3
ICsxNTcsNyBAQCBSZWY8SW5iYW5kR2VuZXJpY0N1ZT4gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Rjo6cHJvY2Vzc0N1ZUF0dHJpYnV0ZXMoQ0ZBdHRyaWJ1dAogICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKGtleSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9J
dGFsaWNTdHlsZSwgMCkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pIHsKLSAgICAgICAgICAgICAgICBp
ZiAoc3RhdGljX2Nhc3Q8Q0ZCb29sZWFuUmVmPih2YWx1ZSkgIT0ga0NGQm9vbGVhblRydWUpCisg
ICAgICAgICAgICAgICAgaWYgKHZhbHVlICE9IGtDRkJvb2xlYW5UcnVlKQogICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgICAgIHRhZ1N0YXJ0LmFwcGVuZCgiPGk+
Iik7CkBAIC0xNjYsNyArMTY2LDcgQEAgUmVmPEluYmFuZEdlbmVyaWNDdWU+IEluYmFuZFRleHRU
cmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWVBdHRyaWJ1dGVzKENGQXR0cmlidXQKICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgaWYgKENGU3RyaW5nQ29tcGFyZShrZXksIGtDTVRleHRNYXJr
dXBBdHRyaWJ1dGVfVW5kZXJsaW5lU3R5bGUsIDApID09IGtDRkNvbXBhcmVFcXVhbFRvKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PENGQm9vbGVhblJlZj4odmFsdWUpICE9IGtD
RkJvb2xlYW5UcnVlKQorICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAhPSBrQ0ZCb29sZWFuVHJ1
ZSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgICAgICB0YWdT
dGFydC5hcHBlbmQoIjx1PiIpOwpAQCAtMTc1LDEzICsxNzUsMTMgQEAgUmVmPEluYmFuZEdlbmVy
aWNDdWU+IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWVBdHRyaWJ1dGVzKENG
QXR0cmlidXQKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKENGU3RyaW5nQ29tcGFy
ZShrZXksIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfT3J0aG9nb25hbExpbmVQb3NpdGlvblBlcmNl
bnRhZ2VSZWxhdGl2ZVRvV3JpdGluZ0RpcmVjdGlvbiwgMCkgPT0ga0NGQ29tcGFyZUVxdWFsVG8p
IHsKLSAgICAgICAgICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQodmFsdWUpICE9IENGTnVtYmVyR2V0
VHlwZUlEKCkpCisgICAgICAgICAgICAgICAgYXV0byB2YWx1ZU51bWJlciA9IGR5bmFtaWNfY2Zf
Y2FzdDxDRk51bWJlclJlZj4odmFsdWUpOworICAgICAgICAgICAgICAgIGlmICghdmFsdWVOdW1i
ZXIpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGlmIChw
cm9jZXNzZWQgJiBMaW5lKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgICAgICBwcm9jZXNzZWQgfD0gTGluZTsKIAotICAgICAgICAgICAgICAgIENGTnVtYmVyUmVm
IHZhbHVlTnVtYmVyID0gc3RhdGljX2Nhc3Q8Q0ZOdW1iZXJSZWY+KHZhbHVlKTsKICAgICAgICAg
ICAgICAgICBkb3VibGUgbGluZTsKICAgICAgICAgICAgICAgICBDRk51bWJlckdldFZhbHVlKHZh
bHVlTnVtYmVyLCBrQ0ZOdW1iZXJGbG9hdDY0VHlwZSwgJmxpbmUpOwogICAgICAgICAgICAgICAg
IGN1ZURhdGEtPnNldExpbmUobGluZSk7CkBAIC0xODksMTMgKzE4OSwxMyBAQCBSZWY8SW5iYW5k
R2VuZXJpY0N1ZT4gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0N1ZUF0dHJpYnV0
ZXMoQ0ZBdHRyaWJ1dAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoQ0ZTdHJpbmdD
b21wYXJlKGtleSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9UZXh0UG9zaXRpb25QZXJjZW50YWdl
UmVsYXRpdmVUb1dyaXRpbmdEaXJlY3Rpb24sIDApID09IGtDRkNvbXBhcmVFcXVhbFRvKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKENGR2V0VHlwZUlEKHZhbHVlKSAhPSBDRk51bWJlckdldFR5cGVJ
RCgpKQorICAgICAgICAgICAgICAgIGF1dG8gdmFsdWVOdW1iZXIgPSBkeW5hbWljX2NmX2Nhc3Q8
Q0ZOdW1iZXJSZWY+KHZhbHVlKTsKKyAgICAgICAgICAgICAgICBpZiAoIXZhbHVlTnVtYmVyKQog
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBpZiAocHJvY2Vz
c2VkICYgUG9zaXRpb24pCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgICAgIHByb2Nlc3NlZCB8PSBQb3NpdGlvbjsKIAotICAgICAgICAgICAgICAgIENGTnVtYmVy
UmVmIHZhbHVlTnVtYmVyID0gc3RhdGljX2Nhc3Q8Q0ZOdW1iZXJSZWY+KHZhbHVlKTsKICAgICAg
ICAgICAgICAgICBkb3VibGUgcG9zaXRpb247CiAgICAgICAgICAgICAgICAgQ0ZOdW1iZXJHZXRW
YWx1ZSh2YWx1ZU51bWJlciwga0NGTnVtYmVyRmxvYXQ2NFR5cGUsICZwb3NpdGlvbik7CiAgICAg
ICAgICAgICAgICAgY3VlRGF0YS0+c2V0UG9zaXRpb24ocG9zaXRpb24pOwpAQCAtMjAzLDEzICsy
MDMsMTMgQEAgUmVmPEluYmFuZEdlbmVyaWNDdWU+IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6
OnByb2Nlc3NDdWVBdHRyaWJ1dGVzKENGQXR0cmlidXQKICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgaWYgKENGU3RyaW5nQ29tcGFyZShrZXksIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfV3Jp
dGluZ0RpcmVjdGlvblNpemVQZXJjZW50YWdlLCAwKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykgewot
ICAgICAgICAgICAgICAgIGlmIChDRkdldFR5cGVJRCh2YWx1ZSkgIT0gQ0ZOdW1iZXJHZXRUeXBl
SUQoKSkKKyAgICAgICAgICAgICAgICBhdXRvIHZhbHVlTnVtYmVyID0gZHluYW1pY19jZl9jYXN0
PENGTnVtYmVyUmVmPih2YWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZU51bWJlcikK
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgaWYgKHByb2Nl
c3NlZCAmIFNpemUpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
ICAgIHByb2Nlc3NlZCB8PSBTaXplOwogCi0gICAgICAgICAgICAgICAgQ0ZOdW1iZXJSZWYgdmFs
dWVOdW1iZXIgPSBzdGF0aWNfY2FzdDxDRk51bWJlclJlZj4odmFsdWUpOwogICAgICAgICAgICAg
ICAgIGRvdWJsZSBzaXplOwogICAgICAgICAgICAgICAgIENGTnVtYmVyR2V0VmFsdWUodmFsdWVO
dW1iZXIsIGtDRk51bWJlckZsb2F0NjRUeXBlLCAmc2l6ZSk7CiAgICAgICAgICAgICAgICAgY3Vl
RGF0YS0+c2V0U2l6ZShzaXplKTsKQEAgLTIxNyw4ICsyMTcsOCBAQCBSZWY8SW5iYW5kR2VuZXJp
Y0N1ZT4gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0N1ZUF0dHJpYnV0ZXMoQ0ZB
dHRyaWJ1dAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoQ0ZTdHJpbmdDb21wYXJl
KGtleSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9WZXJ0aWNhbExheW91dCwgMCkgPT0ga0NGQ29t
cGFyZUVxdWFsVG8pIHsKLSAgICAgICAgICAgICAgICB2YWx1ZVN0cmluZyA9IHN0YXRpY19jYXN0
PENGU3RyaW5nUmVmPih2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgaWYgKENGR2V0VHlwZUlEKHZh
bHVlU3RyaW5nKSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpIHx8ICFDRlN0cmluZ0dldExlbmd0aCh2
YWx1ZVN0cmluZykpCisgICAgICAgICAgICAgICAgYXV0byB2YWx1ZVN0cmluZyA9IGR5bmFtaWNf
Y2ZfY2FzdDxDRlN0cmluZ1JlZj4odmFsdWUpOworICAgICAgICAgICAgICAgIGlmICghdmFsdWVT
dHJpbmcgfHwgIUNGU3RyaW5nR2V0TGVuZ3RoKHZhbHVlU3RyaW5nKSkKICAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKENG
U3RyaW5nQ29tcGFyZSh2YWx1ZVN0cmluZywga0NNVGV4dFZlcnRpY2FsTGF5b3V0X0xlZnRUb1Jp
Z2h0LCAwKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykKQEAgLTIyOSwxMCArMjI5LDEwIEBAIFJlZjxJ
bmJhbmRHZW5lcmljQ3VlPiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQ3VlQXR0
cmlidXRlcyhDRkF0dHJpYnV0CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChDRlN0
cmluZ0NvbXBhcmUoa2V5LCBrQ01UZXh0TWFya3VwQXR0cmlidXRlX0Jhc2VGb250U2l6ZVBlcmNl
bnRhZ2VSZWxhdGl2ZVRvVmlkZW9IZWlnaHQsIDApID09IGtDRkNvbXBhcmVFcXVhbFRvKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKENGR2V0VHlwZUlEKHZhbHVlKSAhPSBDRk51bWJlckdldFR5cGVJ
RCgpKQorICAgICAgICAgICAgICAgIGF1dG8gdmFsdWVOdW1iZXIgPSBkeW5hbWljX2NmX2Nhc3Q8
Q0ZOdW1iZXJSZWY+KHZhbHVlKTsKKyAgICAgICAgICAgICAgICBpZiAoIXZhbHVlTnVtYmVyKQog
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICBDRk51bWJlclJlZiB2YWx1ZU51bWJlciA9IHN0YXRpY19jYXN0PENGTnVtYmVyUmVm
Pih2YWx1ZSk7CisKICAgICAgICAgICAgICAgICBkb3VibGUgYmFzZUZvbnRTaXplOwogICAgICAg
ICAgICAgICAgIENGTnVtYmVyR2V0VmFsdWUodmFsdWVOdW1iZXIsIGtDRk51bWJlckZsb2F0NjRU
eXBlLCAmYmFzZUZvbnRTaXplKTsKICAgICAgICAgICAgICAgICBjdWVEYXRhLT5zZXRCYXNlRm9u
dFNpemUoYmFzZUZvbnRTaXplKTsKQEAgLTI0MCwxMCArMjQwLDEwIEBAIFJlZjxJbmJhbmRHZW5l
cmljQ3VlPiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQ3VlQXR0cmlidXRlcyhD
RkF0dHJpYnV0CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChDRlN0cmluZ0NvbXBh
cmUoa2V5LCBrQ01UZXh0TWFya3VwQXR0cmlidXRlX1JlbGF0aXZlRm9udFNpemUsIDApID09IGtD
RkNvbXBhcmVFcXVhbFRvKSB7Ci0gICAgICAgICAgICAgICAgaWYgKENGR2V0VHlwZUlEKHZhbHVl
KSAhPSBDRk51bWJlckdldFR5cGVJRCgpKQorICAgICAgICAgICAgICAgIGF1dG8gdmFsdWVOdW1i
ZXIgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZOdW1iZXJSZWY+KHZhbHVlKTsKKyAgICAgICAgICAgICAg
ICBpZiAoIXZhbHVlTnVtYmVyKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBDRk51bWJlclJlZiB2YWx1ZU51bWJlciA9IHN0
YXRpY19jYXN0PENGTnVtYmVyUmVmPih2YWx1ZSk7CisKICAgICAgICAgICAgICAgICBkb3VibGUg
cmVsYXRpdmVGb250U2l6ZTsKICAgICAgICAgICAgICAgICBDRk51bWJlckdldFZhbHVlKHZhbHVl
TnVtYmVyLCBrQ0ZOdW1iZXJGbG9hdDY0VHlwZSwgJnJlbGF0aXZlRm9udFNpemUpOwogICAgICAg
ICAgICAgICAgIGN1ZURhdGEtPnNldFJlbGF0aXZlRm9udFNpemUocmVsYXRpdmVGb250U2l6ZSk7
CkBAIC0yNTEsOCArMjUxLDggQEAgUmVmPEluYmFuZEdlbmVyaWNDdWU+IEluYmFuZFRleHRUcmFj
a1ByaXZhdGVBVkY6OnByb2Nlc3NDdWVBdHRyaWJ1dGVzKENGQXR0cmlidXQKICAgICAgICAgICAg
IH0KIAogICAgICAgICAgICAgaWYgKENGU3RyaW5nQ29tcGFyZShrZXksIGtDTVRleHRNYXJrdXBB
dHRyaWJ1dGVfRm9udEZhbWlseU5hbWUsIDApID09IGtDRkNvbXBhcmVFcXVhbFRvKSB7Ci0gICAg
ICAgICAgICAgICAgdmFsdWVTdHJpbmcgPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4odmFsdWUp
OwotICAgICAgICAgICAgICAgIGlmIChDRkdldFR5cGVJRCh2YWx1ZVN0cmluZykgIT0gQ0ZTdHJp
bmdHZXRUeXBlSUQoKSB8fCAhQ0ZTdHJpbmdHZXRMZW5ndGgodmFsdWVTdHJpbmcpKQorICAgICAg
ICAgICAgICAgIGF1dG8gdmFsdWVTdHJpbmcgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZTdHJpbmdSZWY+
KHZhbHVlKTsKKyAgICAgICAgICAgICAgICBpZiAoIXZhbHVlU3RyaW5nIHx8ICFDRlN0cmluZ0dl
dExlbmd0aCh2YWx1ZVN0cmluZykpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgICAgIGlmIChwcm9jZXNzZWQgJiBGb250TmFtZSkKICAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CkBAIC0yNjMsMjIgKzI2MywyMiBAQCBSZWY8SW5iYW5kR2VuZXJpY0N1ZT4g
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0N1ZUF0dHJpYnV0ZXMoQ0ZBdHRyaWJ1
dAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKGtleSwg
a0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9Gb3JlZ3JvdW5kQ29sb3JBUkdCLCAwKSA9PSBrQ0ZDb21w
YXJlRXF1YWxUbykgewotICAgICAgICAgICAgICAgIENGQXJyYXlSZWYgYXJyYXlWYWx1ZSA9IHN0
YXRpY19jYXN0PENGQXJyYXlSZWY+KHZhbHVlKTsKLSAgICAgICAgICAgICAgICBpZiAoQ0ZHZXRU
eXBlSUQoYXJyYXlWYWx1ZSkgIT0gQ0ZBcnJheUdldFR5cGVJRCgpKQorICAgICAgICAgICAgICAg
IGF1dG8gYXJyYXlWYWx1ZSA9IGR5bmFtaWNfY2ZfY2FzdDxDRkFycmF5UmVmPih2YWx1ZSk7Cisg
ICAgICAgICAgICAgICAgaWYgKCFhcnJheVZhbHVlKQogICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgICAgIGF1dG8gY29sb3IgPSBt
YWtlU2ltcGxlQ29sb3JGcm9tQVJHQkNGQXJyYXkoYXJyYXlWYWx1ZSk7CiAgICAgICAgICAgICAg
ICAgaWYgKCFjb2xvcikKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICAgICAgY3VlRGF0YS0+c2V0Rm9yZWdyb3VuZENvbG9yKCpjb2xvcik7CiAgICAgICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAg
aWYgKENGU3RyaW5nQ29tcGFyZShrZXksIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfQmFja2dyb3Vu
ZENvbG9yQVJHQiwgMCkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pIHsKLSAgICAgICAgICAgICAgICBD
RkFycmF5UmVmIGFycmF5VmFsdWUgPSBzdGF0aWNfY2FzdDxDRkFycmF5UmVmPih2YWx1ZSk7Ci0g
ICAgICAgICAgICAgICAgaWYgKENGR2V0VHlwZUlEKGFycmF5VmFsdWUpICE9IENGQXJyYXlHZXRU
eXBlSUQoKSkKKyAgICAgICAgICAgICAgICBhdXRvIGFycmF5VmFsdWUgPSBkeW5hbWljX2NmX2Nh
c3Q8Q0ZBcnJheVJlZj4odmFsdWUpOworICAgICAgICAgICAgICAgIGlmICghYXJyYXlWYWx1ZSkK
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgCisKICAgICAg
ICAgICAgICAgICBhdXRvIGNvbG9yID0gbWFrZVNpbXBsZUNvbG9yRnJvbUFSR0JDRkFycmF5KGFy
cmF5VmFsdWUpOwogICAgICAgICAgICAgICAgIGlmICghY29sb3IpCiAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwpAQCAtMjg3LDEwICsyODcsMTAgQEAgUmVmPEluYmFuZEdlbmVyaWNDdWU+
IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWVBdHRyaWJ1dGVzKENGQXR0cmli
dXQKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKENGU3RyaW5nQ29tcGFyZShrZXks
IGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfQ2hhcmFjdGVyQmFja2dyb3VuZENvbG9yQVJHQiwgMCkg
PT0ga0NGQ29tcGFyZUVxdWFsVG8pIHsKLSAgICAgICAgICAgICAgICBDRkFycmF5UmVmIGFycmF5
VmFsdWUgPSBzdGF0aWNfY2FzdDxDRkFycmF5UmVmPih2YWx1ZSk7Ci0gICAgICAgICAgICAgICAg
aWYgKENGR2V0VHlwZUlEKGFycmF5VmFsdWUpICE9IENGQXJyYXlHZXRUeXBlSUQoKSkKKyAgICAg
ICAgICAgICAgICBhdXRvIGFycmF5VmFsdWUgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZBcnJheVJlZj4o
dmFsdWUpOworICAgICAgICAgICAgICAgIGlmICghYXJyYXlWYWx1ZSkKICAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgCisKICAgICAgICAgICAgICAgICBhdXRv
IGNvbG9yID0gbWFrZVNpbXBsZUNvbG9yRnJvbUFSR0JDRkFycmF5KGFycmF5VmFsdWUpOwogICAg
ICAgICAgICAgICAgIGlmICghY29sb3IpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMu
bW0KaW5kZXggMmM4YjJlMjY2MTgzOTE1NWMzZjU3ZTliYzExYTMwOWUyZjk5ZTY2YS4uYWYyYTJl
NmMwNGFmNTNiNjJhMzViYjA3OTFiNmNjNTg5MDA5ZTFhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCkBAIC00OCw2ICs0OCw3
IEBACiAjaW1wb3J0IDxwYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5oPgog
I2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9BVkZvdW5kYXRpb25TUEkuaD4KICNpbXBvcnQgPHd0Zi9C
bG9ja09iakNFeGNlcHRpb25zLmg+CisjaW1wb3J0IDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4KIAog
I2ltcG9ydCA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CiAjaW1wb3J0IDxwYWwvY29jb2Ev
QVZGb3VuZGF0aW9uU29mdExpbmsuaD4KQEAgLTE2OSw5ICsxNzAsOCBAQCBwcml2YXRlOgogICAg
ICAgICBpZiAoZGVzY3JpcHRpb24pIHsKICAgICAgICAgICAgIG1fb3JpZ2luYWxDb2RlYyA9IFBB
TDo6c29mdExpbmtfQ29yZU1lZGlhX0NNRm9ybWF0RGVzY3JpcHRpb25HZXRNZWRpYVN1YlR5cGUo
ZGVzY3JpcHRpb24pOwogICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgb3JpZ2luYWxGb3JtYXRLZXkg
PSBQQUw6OmNhbkxvYWRfQ29yZU1lZGlhX2tDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX1By
b3RlY3RlZENvbnRlbnRPcmlnaW5hbEZvcm1hdCgpID8gUEFMOjpnZXRfQ29yZU1lZGlhX2tDTUZv
cm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX1Byb3RlY3RlZENvbnRlbnRPcmlnaW5hbEZvcm1hdCgp
IDogQ0ZTVFIoIkNvbW1vbkVuY3J5cHRpb25PcmlnaW5hbEZvcm1hdCIpOwotICAgICAgICAgICAg
Q0ZUeXBlUmVmIG9yaWdpbmFsRm9ybWF0ID0gQ01Gb3JtYXREZXNjcmlwdGlvbkdldEV4dGVuc2lv
bihkZXNjcmlwdGlvbiwgb3JpZ2luYWxGb3JtYXRLZXkpOwotICAgICAgICAgICAgaWYgKG9yaWdp
bmFsRm9ybWF0ICYmIENGR2V0VHlwZUlEKG9yaWdpbmFsRm9ybWF0KSA9PSBDRk51bWJlckdldFR5
cGVJRCgpKQotICAgICAgICAgICAgICAgIENGTnVtYmVyR2V0VmFsdWUoKENGTnVtYmVyUmVmKW9y
aWdpbmFsRm9ybWF0LCBrQ0ZOdW1iZXJTSW50MzJUeXBlLCAmbV9vcmlnaW5hbENvZGVjKTsKKyAg
ICAgICAgICAgIGlmIChhdXRvIG9yaWdpbmFsRm9ybWF0ID0gZHluYW1pY19jZl9jYXN0PENGTnVt
YmVyUmVmPihDTUZvcm1hdERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9uKGRlc2NyaXB0aW9uLCBvcmln
aW5hbEZvcm1hdEtleSkpKQorICAgICAgICAgICAgICAgIENGTnVtYmVyR2V0VmFsdWUob3JpZ2lu
YWxGb3JtYXQsIGtDRk51bWJlclNJbnQzMlR5cGUsICZtX29yaWdpbmFsQ29kZWMpOwogICAgICAg
ICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKaW5kZXggYmVkZTU0NTZkN2ZkNWQy
ZTgwMmViOGVlNzgxNjUzYmYyNDA2YTZhZi4uODUyMDMxMzBlMTJlZGM0ZjUyOWIwZjkwMGMwYWY0
OWQ5OWZkNWNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcApAQCAtMzIsMTUgKzMyLDE0IEBA
CiAjaW5jbHVkZSAiUmVuZGVyVGhlbWVDb2NvYS5oIgogI2luY2x1ZGUgIlN5c3RlbUZvbnREYXRh
YmFzZUNvcmVUZXh0LmgiCiAjaW5jbHVkZSAiVmVyc2lvbkNoZWNrcy5oIgotI2luY2x1ZGUgPHBh
bC9zcGkvY2YvQ29yZVRleHRTUEkuaD4KLQogI2luY2x1ZGUgPENvcmVUZXh0L1NGTlRMYXlvdXRU
eXBlcy5oPgotCisjaW5jbHVkZSA8cGFsL3NwaS9jZi9Db3JlVGV4dFNQSS5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KICNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYvY2YvVHlwZUNhc3RzQ0Yu
aD4KIAogLy8gRklYTUU6IFRoaXMgc2VlbXMgbGlrZSBpdCBzaG91bGQgYmUgaW4gUGxhdGZvcm1I
YXZlLmguCiAvLyBGSVhNRTogTGlrZWx5IHdlIGNhbiByZW1vdmUgdGhpcyBzcGVjaWFsIGNhc2Ug
Zm9yIHdhdGNoT1MgYW5kIHR2T1MuCkBAIC02OTcsOCArNjk2LDggQEAgVmVjdG9yPFN0cmluZz4g
Rm9udENhY2hlOjpzeXN0ZW1Gb250RmFtaWxpZXMoKQogICAgIGF1dG8gYXZhaWxhYmxlRm9udEZh
bWlsaWVzID0gYWRvcHRDRihDVEZvbnRNYW5hZ2VyQ29weUF2YWlsYWJsZUZvbnRGYW1pbHlOYW1l
cygpKTsKICAgICBDRkluZGV4IGNvdW50ID0gQ0ZBcnJheUdldENvdW50KGF2YWlsYWJsZUZvbnRG
YW1pbGllcy5nZXQoKSk7CiAgICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwgY291bnQ7ICsraSkg
ewotICAgICAgICBDRlN0cmluZ1JlZiBmb250TmFtZSA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVm
PihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGF2YWlsYWJsZUZvbnRGYW1pbGllcy5nZXQoKSwgaSkp
OwotICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQoZm9udE5hbWUpICE9IENGU3RyaW5nR2V0VHlwZUlE
KCkpIHsKKyAgICAgICAgYXV0byBmb250TmFtZSA9IGR5bmFtaWNfY2ZfY2FzdDxDRlN0cmluZ1Jl
Zj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChhdmFpbGFibGVGb250RmFtaWxpZXMuZ2V0KCksIGkp
KTsKKyAgICAgICAgaWYgKCFmb250TmFtZSkgewogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQpAQCAtMTM0Nyw4ICsxMzQ2
LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzQXJhYmljQ2hhcmFjdGVyKFVDaGFyIGNoYXJhY3Rl
cikKICNpZiBBU1NFUlRfRU5BQkxFRAogc3RhdGljIGJvb2wgaXNVc2VySW5zdGFsbGVkRm9udChD
VEZvbnRSZWYgZm9udCkKIHsKLSAgICBhdXRvIGF0dHJpYnV0ZSA9IGFkb3B0Q0Yoc3RhdGljX2Nh
c3Q8Q0ZCb29sZWFuUmVmPihDVEZvbnRDb3B5QXR0cmlidXRlKGZvbnQsIGtDVEZvbnRVc2VySW5z
dGFsbGVkQXR0cmlidXRlKSkpOwotICAgIHJldHVybiBhdHRyaWJ1dGUgJiYgQ0ZCb29sZWFuR2V0
VmFsdWUoYXR0cmlidXRlLmdldCgpKTsKKyAgICByZXR1cm4gYWRvcHRDRihDVEZvbnRDb3B5QXR0
cmlidXRlKGZvbnQsIGtDVEZvbnRVc2VySW5zdGFsbGVkQXR0cmlidXRlKSkgPT0ga0NGQm9vbGVh
blRydWU7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLm1tCmluZGV4IGVhY2RmNzAx
MzUyMDBkYTg0Mjc5N2M0MGM2MjUxYjllYzc1NTUwYTYuLmYwODJjYzFjZTBhZDdlNDE1Y2ZkNDY3
YzFhMDZiZTA1MDM4YTUxMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0hFVkNVdGlsaXRpZXNDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29jb2EubW0KQEAgLTMxLDYgKzMx
LDcgQEAKICNpbXBvcnQgIkZvdXJDQy5oIgogI2ltcG9ydCAiSEVWQ1V0aWxpdGllcy5oIgogI2lt
cG9ydCAiTWVkaWFDYXBhYmlsaXRpZXNJbmZvLmgiCisjaW1wb3J0IDx3dGYvY2YvVHlwZUNhc3Rz
Q0YuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAog
I2ltcG9ydCAiVmlkZW9Ub29sYm94U29mdExpbmsuaCIKQEAgLTc2LDggKzc3LDggQEAgc3RkOjpv
cHRpb25hbDxNZWRpYUNhcGFiaWxpdGllc0luZm8+IHZhbGlkYXRlSEVWQ1BhcmFtZXRlcnMoY29u
c3QgSEVWQ1BhcmFtZXRlcnMKICAgICBpZiAoIWNhcGFiaWxpdGllcykKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAotICAgIGF1dG8gc3VwcG9ydGVkUHJvZmlsZXMgPSAoQ0ZBcnJheVJl
ZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShjYXBhYmlsaXRpZXMuZ2V0KCksIGtWVEhFVkNEZWNvZGVy
Q2FwYWJpbGl0eV9TdXBwb3J0ZWRQcm9maWxlcyk7Ci0gICAgaWYgKCFzdXBwb3J0ZWRQcm9maWxl
cyB8fCBDRkdldFR5cGVJRChzdXBwb3J0ZWRQcm9maWxlcykgIT0gQ0ZBcnJheUdldFR5cGVJRCgp
KQorICAgIGF1dG8gc3VwcG9ydGVkUHJvZmlsZXMgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZBcnJheVJl
Zj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoY2FwYWJpbGl0aWVzLmdldCgpLCBrVlRIRVZDRGVjb2Rl
ckNhcGFiaWxpdHlfU3VwcG9ydGVkUHJvZmlsZXMpKTsKKyAgICBpZiAoIXN1cHBvcnRlZFByb2Zp
bGVzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaW50MTZfdCBnZW5lcmFs
UHJvZmlsZUlEQyA9IHBhcmFtZXRlcnMuZ2VuZXJhbFByb2ZpbGVJREM7CkBAIC04NiwyNSArODcs
MjIgQEAgc3RkOjpvcHRpb25hbDxNZWRpYUNhcGFiaWxpdGllc0luZm8+IHZhbGlkYXRlSEVWQ1Bh
cmFtZXRlcnMoY29uc3QgSEVWQ1BhcmFtZXRlcnMKICAgICBpZiAoIUNGQXJyYXlDb250YWluc1Zh
bHVlKHN1cHBvcnRlZFByb2ZpbGVzLCBzZWFyY2hSYW5nZSwgY2ZHZW5lcmFsUHJvZmlsZUlEQy5n
ZXQoKSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBhdXRvIHBlclByb2Zp
bGVTdXBwb3J0ID0gKENGRGljdGlvbmFyeVJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShjYXBhYmls
aXRpZXMuZ2V0KCksIGtWVEhFVkNEZWNvZGVyQ2FwYWJpbGl0eV9QZXJQcm9maWxlU3VwcG9ydCk7
Ci0gICAgaWYgKCFwZXJQcm9maWxlU3VwcG9ydCB8fCBDRkdldFR5cGVJRChwZXJQcm9maWxlU3Vw
cG9ydCkgIT0gQ0ZEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpCisgICAgYXV0byBwZXJQcm9maWxlU3Vw
cG9ydCA9IGR5bmFtaWNfY2ZfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGRGljdGlvbmFyeUdldFZh
bHVlKGNhcGFiaWxpdGllcy5nZXQoKSwga1ZUSEVWQ0RlY29kZXJDYXBhYmlsaXR5X1BlclByb2Zp
bGVTdXBwb3J0KSk7CisgICAgaWYgKCFwZXJQcm9maWxlU3VwcG9ydCkKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gZ2VuZXJhbFByb2ZpbGVJRENTdHJpbmcgPSBTdHJp
bmc6Om51bWJlcihnZW5lcmFsUHJvZmlsZUlEQykuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAgICBhdXRv
IHByb2ZpbGVTdXBwb3J0ID0gKENGRGljdGlvbmFyeVJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShw
ZXJQcm9maWxlU3VwcG9ydCwgZ2VuZXJhbFByb2ZpbGVJRENTdHJpbmcuZ2V0KCkpOwotICAgIGlm
ICghcHJvZmlsZVN1cHBvcnQgfHwgQ0ZHZXRUeXBlSUQocHJvZmlsZVN1cHBvcnQpICE9IENGRGlj
dGlvbmFyeUdldFR5cGVJRCgpKQorICAgIGF1dG8gcHJvZmlsZVN1cHBvcnQgPSBkeW5hbWljX2Nm
X2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShwZXJQcm9maWxlU3Vw
cG9ydCwgZ2VuZXJhbFByb2ZpbGVJRENTdHJpbmcuZ2V0KCkpKTsKKyAgICBpZiAoIXByb2ZpbGVT
dXBwb3J0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgTWVkaWFDYXBhYmls
aXRpZXNJbmZvIGluZm87CiAKICAgICBpbmZvLnN1cHBvcnRlZCA9IHRydWU7CiAKLSAgICBhdXRv
IGlzSGFyZHdhcmVBY2NlbGVyYXRlZCA9IChDRkJvb2xlYW5SZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFs
dWUocHJvZmlsZVN1cHBvcnQsIGtWVEhFVkNEZWNvZGVyUHJvZmlsZUNhcGFiaWxpdHlfSXNIYXJk
d2FyZUFjY2VsZXJhdGVkKTsKLSAgICBpZiAoaXNIYXJkd2FyZUFjY2VsZXJhdGVkICYmIENGR2V0
VHlwZUlEKGlzSGFyZHdhcmVBY2NlbGVyYXRlZCkgPT0gQ0ZCb29sZWFuR2V0VHlwZUlEKCkpCi0g
ICAgICAgIGluZm8ucG93ZXJFZmZpY2llbnQgPSBDRkJvb2xlYW5HZXRWYWx1ZShpc0hhcmR3YXJl
QWNjZWxlcmF0ZWQpOworICAgIGluZm8ucG93ZXJFZmZpY2llbnQgPSBDRkRpY3Rpb25hcnlHZXRW
YWx1ZShwcm9maWxlU3VwcG9ydCwga1ZUSEVWQ0RlY29kZXJQcm9maWxlQ2FwYWJpbGl0eV9Jc0hh
cmR3YXJlQWNjZWxlcmF0ZWQpID09IGtDRkJvb2xlYW5UcnVlOwogCi0gICAgYXV0byBjZk1heERl
Y29kZUxldmVsID0gKENGTnVtYmVyUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKHByb2ZpbGVTdXBw
b3J0LCBrVlRIRVZDRGVjb2RlclByb2ZpbGVDYXBhYmlsaXR5X01heERlY29kZUxldmVsKTsKLSAg
ICBpZiAoY2ZNYXhEZWNvZGVMZXZlbCAmJiBDRkdldFR5cGVJRChjZk1heERlY29kZUxldmVsKSA9
PSBDRk51bWJlckdldFR5cGVJRCgpKSB7CisgICAgaWYgKGF1dG8gY2ZNYXhEZWNvZGVMZXZlbCA9
IGR5bmFtaWNfY2ZfY2FzdDxDRk51bWJlclJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvZmls
ZVN1cHBvcnQsIGtWVEhFVkNEZWNvZGVyUHJvZmlsZUNhcGFiaWxpdHlfTWF4RGVjb2RlTGV2ZWwp
KSkgewogICAgICAgICBpbnQxNl90IG1heERlY29kZUxldmVsID0gMDsKICAgICAgICAgaWYgKCFD
Rk51bWJlckdldFZhbHVlKGNmTWF4RGVjb2RlTGV2ZWwsIGtDRk51bWJlclNJbnQxNlR5cGUsICZt
YXhEZWNvZGVMZXZlbCkpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTEz
LDggKzExMSw3IEBAIHN0ZDo6b3B0aW9uYWw8TWVkaWFDYXBhYmlsaXRpZXNJbmZvPiB2YWxpZGF0
ZUhFVkNQYXJhbWV0ZXJzKGNvbnN0IEhFVkNQYXJhbWV0ZXJzCiAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogICAgIH0KIAotICAgIGF1dG8gY2ZNYXhQbGF5YmFja0xldmVsID0gKENG
TnVtYmVyUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKHByb2ZpbGVTdXBwb3J0LCBrVlRIRVZDRGVj
b2RlclByb2ZpbGVDYXBhYmlsaXR5X01heFBsYXliYWNrTGV2ZWwpOwotICAgIGlmIChjZk1heFBs
YXliYWNrTGV2ZWwgJiYgQ0ZHZXRUeXBlSUQoY2ZNYXhQbGF5YmFja0xldmVsKSA9PSBDRk51bWJl
ckdldFR5cGVJRCgpKSB7CisgICAgaWYgKGF1dG8gY2ZNYXhQbGF5YmFja0xldmVsID0gZHluYW1p
Y19jZl9jYXN0PENGTnVtYmVyUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9maWxlU3VwcG9y
dCwga1ZUSEVWQ0RlY29kZXJQcm9maWxlQ2FwYWJpbGl0eV9NYXhQbGF5YmFja0xldmVsKSkpIHsK
ICAgICAgICAgaW50MTZfdCBtYXhQbGF5YmFja0xldmVsID0gMDsKICAgICAgICAgaWYgKCFDRk51
bWJlckdldFZhbHVlKGNmTWF4UGxheWJhY2tMZXZlbCwga0NGTnVtYmVyU0ludDE2VHlwZSwgJm1h
eFBsYXliYWNrTGV2ZWwpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTE5
NiwxMCArMTkzLDcgQEAgc3RkOjpvcHRpb25hbDxNZWRpYUNhcGFiaWxpdGllc0luZm8+IHZhbGlk
YXRlRG9WaVBhcmFtZXRlcnMoY29uc3QgRG9WaVBhcmFtZXRlcnMKICAgICBpZiAoIXN1cHBvcnRl
ZExldmVscykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIGF1dG8gaXNIYXJk
d2FyZUFjY2VsZXJhdGVkQ0YgPSAoQ0ZCb29sZWFuUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGNh
cGFiaWxpdGllcy5nZXQoKSwga1ZURG9sYnlWaXNpb25EZWNvZGVyQ2FwYWJpbGl0eV9Jc0hhcmR3
YXJlQWNjZWxlcmF0ZWQpOwotICAgIGlmICghaXNIYXJkd2FyZUFjY2VsZXJhdGVkQ0YgfHwgQ0ZH
ZXRUeXBlSUQoaXNIYXJkd2FyZUFjY2VsZXJhdGVkQ0YpICE9IENGQm9vbGVhbkdldFR5cGVJRCgp
KQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGJvb2wgaXNIYXJkd2FyZUFjY2Vs
ZXJhdGVkID0gQ0ZCb29sZWFuR2V0VmFsdWUoaXNIYXJkd2FyZUFjY2VsZXJhdGVkQ0YpOworICAg
IGJvb2wgaXNIYXJkd2FyZUFjY2VsZXJhdGVkID0gQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoY2FwYWJp
bGl0aWVzLmdldCgpLCBrVlREb2xieVZpc2lvbkRlY29kZXJDYXBhYmlsaXR5X0lzSGFyZHdhcmVB
Y2NlbGVyYXRlZCkgPT0ga0NGQm9vbGVhblRydWU7CiAKICAgICBpZiAoIXN1cHBvcnRlZFByb2Zp
bGVzLnZhbHVlKCkuY29udGFpbnMocGFyYW1ldGVycy5iaXRzdHJlYW1Qcm9maWxlSUQpIHx8ICFz
dXBwb3J0ZWRMZXZlbHMudmFsdWUoKS5jb250YWlucyhwYXJhbWV0ZXJzLmJpdHN0cmVhbUxldmVs
SUQpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9u
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29t
cHJlc3Npb25TZXNzaW9uLm1tCmluZGV4IGQxYzg0NDg4MzY3NDBmZGI3NWM0MGFjOTNmN2RkMDlk
NzhmMDMwMDAuLmI1ZmE1OGVjNDI5NmM2ZjM2YTFkZjcxMzM0MDBhMjU0MzA2ZTI1NmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVEZWNv
bXByZXNzaW9uU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24ubW0KQEAgLTE5NCw4ICsxOTQsNyBA
QCBib29sIFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjo6c2hvdWxkRGVjb2RlU2FtcGxlKENN
U2FtcGxlQnVmZmVyUmVmIHNhbXBsZSwgYgogCiAgICAgZm9yIChDRkluZGV4IGluZGV4ID0gMCwg
Y291bnQgPSBDRkFycmF5R2V0Q291bnQoYXR0YWNobWVudHMpOyBpbmRleCA8IGNvdW50OyArK2lu
ZGV4KSB7CiAgICAgICAgIENGRGljdGlvbmFyeVJlZiBhdHRhY2htZW50RGljdCA9IChDRkRpY3Rp
b25hcnlSZWYpQ0ZBcnJheUdldFZhbHVlQXRJbmRleChhdHRhY2htZW50cywgaW5kZXgpOwotICAg
ICAgICBDRkJvb2xlYW5SZWYgZGVwZW5kZWRPbiA9IChDRkJvb2xlYW5SZWYpQ0ZEaWN0aW9uYXJ5
R2V0VmFsdWUoYXR0YWNobWVudERpY3QsIFBBTDo6a0NNU2FtcGxlQXR0YWNobWVudEtleV9Jc0Rl
cGVuZGVkT25CeU90aGVycyk7Ci0gICAgICAgIGlmIChkZXBlbmRlZE9uICYmICFDRkJvb2xlYW5H
ZXRWYWx1ZShkZXBlbmRlZE9uKSkKKyAgICAgICAgaWYgKENGRGljdGlvbmFyeUdldFZhbHVlKGF0
dGFjaG1lbnREaWN0LCBQQUw6OmtDTVNhbXBsZUF0dGFjaG1lbnRLZXlfSXNEZXBlbmRlZE9uQnlP
dGhlcnMpID09IGtDRkJvb2xlYW5GYWxzZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0
ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwCmluZGV4IDYx
NGM4MDJlZGQ0OGI1Y2Q5ZmE0N2ZhM2Y4ZmZkYjk4MzM3MzY2MDguLmI4OTE5OWM1ZDNkZGNkYmMw
NGFjM2JlOTkwNzA4YTM0YzU2ZTkzNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0
YUNvcmVUZXh0LmNwcApAQCAtMTQxLDkgKzE0MSw5IEBAIFJldGFpblB0cjxDRlR5cGVSZWY+IEZv
bnRQbGF0Zm9ybURhdGE6Om9iamVjdEZvckVxdWFsaXR5Q2hlY2soQ1RGb250UmVmIGN0Rm9udCkK
ICAgICBhdXRvIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnRDb3B5Rm9udERlc2NyaXB0
b3IoY3RGb250KSk7CiAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzg2ODMgVGhpcyBpcyBhIHNoYWxsb3cgcG9pbnRlciBjb21wYXJlIGZvciB3
ZWIgZm9udHMKICAgICAvLyBiZWNhdXNlIHRoZSBVUkwgY29udGFpbnMgdGhlIGFkZHJlc3Mgb2Yg
dGhlIGZvbnQuIFRoaXMgbWVhbnMgd2UgbWlnaHQgZXJyb25lb3VzbHkgZ2V0IGZhbHNlIG5lZ2F0
aXZlcy4KLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybCA9IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8
Q0ZVUkxSZWY+KENURm9udERlc2NyaXB0b3JDb3B5QXR0cmlidXRlKGZvbnREZXNjcmlwdG9yLmdl
dCgpLCBrQ1RGb250UmVmZXJlbmNlVVJMQXR0cmlidXRlKSkpOwotICAgIEFTU0VSVCghdXJsIHx8
IENGR2V0VHlwZUlEKHVybC5nZXQoKSkgPT0gQ0ZVUkxHZXRUeXBlSUQoKSk7Ci0gICAgcmV0dXJu
IHVybDsKKyAgICBhdXRvIG9iamVjdCA9IGFkb3B0Q0YoQ1RGb250RGVzY3JpcHRvckNvcHlBdHRy
aWJ1dGUoZm9udERlc2NyaXB0b3IuZ2V0KCksIGtDVEZvbnRSZWZlcmVuY2VVUkxBdHRyaWJ1dGUp
KTsKKyAgICBBU1NFUlQoIW9iamVjdCB8fCBDRkdldFR5cGVJRChvYmplY3QuZ2V0KCkpID09IENG
VVJMR2V0VHlwZUlEKCkpOworICAgIHJldHVybiBvYmplY3Q7CiB9CiAKIFJldGFpblB0cjxDRlR5
cGVSZWY+IEZvbnRQbGF0Zm9ybURhdGE6Om9iamVjdEZvckVxdWFsaXR5Q2hlY2soKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3ND
b250ZXh0R0xDVkFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2
L0dyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHAKaW5kZXggNjA0NjM5ZWI5NWZhNDViNGFmYjU5
NmMxZGQ1YmJkZGQ0YmYyZGEwMS4uNzgwMWJlNDk2MDE0ZjM0NzNkNDQ1MjVlNDQ4MTUyNjQyOGFh
NmRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3Jh
cGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRHTENWQU5HTEUuY3BwCkBAIC0yOSwxNSArMjksMTcg
QEAKICNpZiBFTkFCTEUoV0VCR0wpICYmIEVOQUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElP
TikKIAogI2luY2x1ZGUgIkFOR0xFSGVhZGVycy5oIgotI2luY2x1ZGUgIkNvcmVWaWRlb1NvZnRM
aW5rLmgiCiAjaW5jbHVkZSAiRm91ckNDLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1
ZGUgPHBhbC9zcGkvY2YvQ29yZVZpZGVvU1BJLmg+CiAjaW5jbHVkZSA8cGFsL3NwaS9jb2NvYS9J
T1N1cmZhY2VTUEkuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRl
IDx3dGYvU3RkTWFwLmg+CisjaW5jbHVkZSA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCisjaW5jbHVkZSAiQ29yZVZpZGVvU29mdExp
bmsuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3RleHByIGF1dG8gc195
dXZWZXJ0ZXhTaGFkZXJUZXh0dXJlMkQgewpAQCAtMTU4LDcgKzE2MCw3IEBAIHN0YXRpYyBQaXhl
bFJhbmdlIHBpeGVsUmFuZ2VGcm9tUGl4ZWxGb3JtYXQoT1NUeXBlIHBpeGVsRm9ybWF0KQogCiBz
dGF0aWMgVHJhbnNmZXJGdW5jdGlvbkNWIHRyYW5zZmVyRnVuY3Rpb25Gcm9tU3RyaW5nKENGU3Ry
aW5nUmVmIHN0cmluZykKIHsKLSAgICBpZiAoIXN0cmluZyB8fCBDRkdldFR5cGVJRChzdHJpbmcp
ICE9IENGU3RyaW5nR2V0VHlwZUlEKCkpCisgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgIHJldHVy
biBUcmFuc2ZlckZ1bmN0aW9uQ1Y6OlVua25vd247CiAgICAgaWYgKENGRXF1YWwoc3RyaW5nLCBr
Q1ZJbWFnZUJ1ZmZlcllDYkNyTWF0cml4X0lUVV9SXzcwOV8yKSkKICAgICAgICAgcmV0dXJuIFRy
YW5zZmVyRnVuY3Rpb25DVjo6a0lUVV9SXzcwOV8yOwpAQCAtNjk5LDcgKzcwMSw3IEBAIGJvb2wg
R3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOjpjb3B5UGl4ZWxCdWZmZXJUb1RleHR1cmUoQ1ZQaXhl
bEJ1ZmZlclJlZiBpbWFnZSwKICAgICBtX2NvbnRleHQtPnVuaWZvcm0yZihtX3V2VGV4dHVyZVNp
emVVbmlmb3JtTG9jYXRpb24sIHV2UGxhbmVXaWR0aCwgdXZQbGFuZUhlaWdodCk7CiAKICAgICBh
dXRvIHJhbmdlID0gcGl4ZWxSYW5nZUZyb21QaXhlbEZvcm1hdChwaXhlbEZvcm1hdCk7Ci0gICAg
YXV0byB0cmFuc2ZlckZ1bmN0aW9uID0gdHJhbnNmZXJGdW5jdGlvbkZyb21TdHJpbmcoKENGU3Ry
aW5nUmVmKUNWQnVmZmVyR2V0QXR0YWNobWVudChpbWFnZSwga0NWSW1hZ2VCdWZmZXJZQ2JDck1h
dHJpeEtleSwgbmlsKSk7CisgICAgYXV0byB0cmFuc2ZlckZ1bmN0aW9uID0gdHJhbnNmZXJGdW5j
dGlvbkZyb21TdHJpbmcoZHluYW1pY19jZl9jYXN0PENGU3RyaW5nUmVmPihDVkJ1ZmZlckdldEF0
dGFjaG1lbnQoaW1hZ2UsIGtDVkltYWdlQnVmZmVyWUNiQ3JNYXRyaXhLZXksIG5pbCkpKTsKICAg
ICBhdXRvIGNvbG9yTWF0cml4ID0gWUNiQ3JUb1JHQk1hdHJpeEZvclJhbmdlQW5kVHJhbnNmZXJG
dW5jdGlvbihyYW5nZSwgdHJhbnNmZXJGdW5jdGlvbik7CiAgICAgbV9jb250ZXh0LT51bmlmb3Jt
TWF0cml4NGZ2KG1fY29sb3JNYXRyaXhVbmlmb3JtTG9jYXRpb24sIEdMX0ZBTFNFLCBjb2xvck1h
dHJpeCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdl
bnRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tCmlu
ZGV4IDNiNmRlMWVjMGYzZmM1ZDE0MmRjZWM2YTVhYTZkMzFjYzhkODBlNTUuLmZlNzMwYjI5N2M0
ODA4ZWJiMjY4ODcwMWMwMzFhOGE4YTA3MjBhOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1VzZXJBZ2VudElPUy5tbQpAQCAtODEsMjQgKzgxLDE1IEBAIHN0YXRpYyBpbmxpbmUg
U3RyaW5nIGRldmljZU5hbWVGb3JVc2VyQWdlbnQoKQogCiBTdHJpbmcgc3RhbmRhcmRVc2VyQWdl
bnRXaXRoQXBwbGljYXRpb25OYW1lKGNvbnN0IFN0cmluZyYgYXBwbGljYXRpb25OYW1lLCBjb25z
dCBTdHJpbmcmIHVzZXJBZ2VudE9TVmVyc2lvbiwgVXNlckFnZW50VHlwZSB0eXBlKQogewotICAg
IGlmICh0eXBlID09IFVzZXJBZ2VudFR5cGU6OkRlc2t0b3ApIHsKLSAgICAgICAgU3RyaW5nIGFw
cE5hbWVTdWZmaXggPSBhcHBsaWNhdGlvbk5hbWUuaXNFbXB0eSgpID8gIiIgOiBtYWtlU3RyaW5n
KCIgIiwgYXBwbGljYXRpb25OYW1lKTsKLSAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIk1vemls
bGEvNS4wIChNYWNpbnRvc2g7IEludGVsIE1hYyBPUyBYIDEwXzE1XzYpIEFwcGxlV2ViS2l0LzYw
NS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykiLCBhcHBOYW1lU3VmZml4KTsKLSAgICB9Ci0KLSAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIGRlcHJlY2F0ZSBhbmQgZXZlbnR1YWxseSByZW1vdmUgdGhp
cyBvYnNvbGV0ZSBVQSBvdmVycmlkZTsKLSAgICAvLyBzZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxNzkyNyBmb3IgZGV0YWlscy4KLSAgICAvLyBDaGVjayB0byBz
ZWUgaWYgdGhlcmUgaXMgYSB1c2VyIGFnZW50IG92ZXJyaWRlIGZvciBhbGwgV2ViS2l0IGNsaWVu
dHMuCi0gICAgYXV0byBvdmVycmlkZSA9IGFkb3B0Q0YoQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1
ZShDRlNUUigiVXNlckFnZW50IiksIENGU1RSKCJjb20uYXBwbGUuV2ViRm91bmRhdGlvbiIpKSk7
Ci0gICAgaWYgKG92ZXJyaWRlKSB7Ci0gICAgICAgIGlmIChDRkdldFR5cGVJRChvdmVycmlkZS5n
ZXQoKSkgPT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkKLSAgICAgICAgICAgIHJldHVybiAoX19icmlk
Z2UgTlNTdHJpbmcgKilvdmVycmlkZS5nZXQoKTsKLSAgICB9CisgICAgaWYgKHR5cGUgPT0gVXNl
ckFnZW50VHlwZTo6RGVza3RvcCkKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIk1vemlsbGEv
NS4wIChNYWNpbnRvc2g7IEludGVsIE1hYyBPUyBYIDEwXzE1XzYpIEFwcGxlV2ViS2l0LzYwNS4x
LjE1IChLSFRNTCwgbGlrZSBHZWNrbykiLCBhcHBsaWNhdGlvbk5hbWUuaXNFbXB0eSgpID8gIiIg
OiAiICIsIGFwcGxpY2F0aW9uTmFtZSk7CiAKLSAgICBTdHJpbmcgb3NWZXJzaW9uID0gdXNlckFn
ZW50T1NWZXJzaW9uLmlzRW1wdHkoKSAgPyBzeXN0ZW1NYXJrZXRpbmdWZXJzaW9uRm9yVXNlckFn
ZW50U3RyaW5nKCkgOiB1c2VyQWdlbnRPU1ZlcnNpb247Ci0gICAgU3RyaW5nIGFwcE5hbWVTdWZm
aXggPSBhcHBsaWNhdGlvbk5hbWUuaXNFbXB0eSgpID8gIiIgOiBtYWtlU3RyaW5nKCIgIiwgYXBw
bGljYXRpb25OYW1lKTsKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGRlcHJlY2F0ZSBhbmQgcmVt
b3ZlIHRoaXMgb3ZlcnJpZGU7IHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE3OTI3IGZvciBkZXRhaWxzLgorICAgIGlmIChhdXRvIG92ZXJyaWRlID0gZHluYW1p
Y19jZl9jYXN0PENGU3RyaW5nUmVmPihhZG9wdENGKENGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWUo
Q0ZTVFIoIlVzZXJBZ2VudCIpLCBDRlNUUigiY29tLmFwcGxlLldlYkZvdW5kYXRpb24iKSkpKSkK
KyAgICAgICAgcmV0dXJuIG92ZXJyaWRlLmdldCgpOwogCi0gICAgcmV0dXJuIG1ha2VTdHJpbmco
Ik1vemlsbGEvNS4wICgiLCBkZXZpY2VOYW1lRm9yVXNlckFnZW50KCksICI7IENQVSAiLCBvc05h
bWVGb3JVc2VyQWdlbnQoKSwgIiAiLCBvc1ZlcnNpb24sICIgbGlrZSBNYWMgT1MgWCkgQXBwbGVX
ZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSIsIGFwcE5hbWVTdWZmaXgpOworICAg
IGF1dG8gb3NWZXJzaW9uID0gdXNlckFnZW50T1NWZXJzaW9uLmlzRW1wdHkoKSA/IHN5c3RlbU1h
cmtldGluZ1ZlcnNpb25Gb3JVc2VyQWdlbnRTdHJpbmcoKSA6IHVzZXJBZ2VudE9TVmVyc2lvbjsK
KyAgICByZXR1cm4gbWFrZVN0cmluZygiTW96aWxsYS81LjAgKCIsIGRldmljZU5hbWVGb3JVc2Vy
QWdlbnQoKSwgIjsgQ1BVICIsIG9zTmFtZUZvclVzZXJBZ2VudCgpLCAiICIsIG9zVmVyc2lvbiwg
IiBsaWtlIE1hYyBPUyBYKSBBcHBsZVdlYktpdC82MDUuMS4xNSAoS0hUTUwsIGxpa2UgR2Vja28p
IiwgYXBwbGljYXRpb25OYW1lLmlzRW1wdHkoKSA/ICIiIDogIiAiLCBhcHBsaWNhdGlvbk5hbWUp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dpbmRvd0Rpc3BsYXlDYXB0dXJlck1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XaW5kb3dEaXNwbGF5Q2Fw
dHVyZXJNYWMubW0KaW5kZXggZjAyY2U4ZmRmMGYwYzU4ZjQwNzBkNGI0Yjc4MWVkYjVmMWVjMjFk
Yi4uYjJlNjQ3MzkyNGFmZWY5NDliYzk5OGM2ODg0NzY2YTE5YTllY2FkMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dpbmRvd0Rpc3BsYXlDYXB0
dXJlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
V2luZG93RGlzcGxheUNhcHR1cmVyTWFjLm1tCkBAIC03MSw4ICs3MSw3IEBAIHN0YXRpYyBib29s
IGFueU9mQ0dXaW5kb3coY29uc3QgRnVuY3Rpb248Ym9vbChDRkRpY3Rpb25hcnlSZWYgaW5mbywg
dW5zaWduZWQgaWQsCiAgICAgICAgIGlmICh3aW5kb3dMYXllcikKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCi0gICAgICAgIGF1dG8gb25TY3JlZW4gPSBjaGVja2VkX2NmX2Nhc3Q8Q0ZCb29sZWFu
UmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZSh3aW5kb3dJbmZvLCBrQ0dXaW5kb3dJc09uc2NyZWVu
KSk7Ci0gICAgICAgIGlmICghQ0ZCb29sZWFuR2V0VmFsdWUob25TY3JlZW4pKQorICAgICAgICBp
ZiAoQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUod2luZG93SW5mbywga0NHV2luZG93SXNPbnNjcmVlbikg
PT0ga0NGQm9vbGVhbkZhbHNlKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgYXV0
byB3aW5kb3dJRFJlZiA9IGNoZWNrZWRfY2ZfY2FzdDxDRk51bWJlclJlZj4oQ0ZEaWN0aW9uYXJ5
R2V0VmFsdWUod2luZG93SW5mbywga0NHV2luZG93TnVtYmVyKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3h5U2VydmVyQ0ZOZXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcAppbmRl
eCA2NGNmYzliZWNkYjI2Y2I1M2QwZTE0MTA0ZWM0ZTFkZmM2OWIyZjQwLi41OTFjMzMwZDdiOTFk
YjA0YmFlZjI4ZmVlYzAxMTJhOTMwMDYxY2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3h5U2VydmVyQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJveHlTZXJ2ZXJDRk5ldC5jcHAKQEAgLTc2LDggKzc2
LDggQEAgc3RhdGljIHZvaWQgcHJvY2Vzc1Byb3h5U2VydmVycyhWZWN0b3I8UHJveHlTZXJ2ZXI+
JiBwcm94eVNlcnZlcnMsIENGQXJyYXlSZWYgcHIKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
IAogICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCByZXN0cnVjdHVyZSB0byBhbGxvdyB0
aGlzIHRvIGhhcHBlbiBhc3luY2hyb25vdXNseS4KLSAgICAgICAgICAgIENGVVJMUmVmIHNjcmlw
dFVSTCA9IHN0YXRpY19jYXN0PENGVVJMUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm94eURp
Y3Rpb25hcnksIGtDRlByb3h5QXV0b0NvbmZpZ3VyYXRpb25VUkxLZXkpKTsKLSAgICAgICAgICAg
IGlmICghc2NyaXB0VVJMIHx8IENGR2V0VHlwZUlEKHNjcmlwdFVSTCkgIT0gQ0ZVUkxHZXRUeXBl
SUQoKSkKKyAgICAgICAgICAgIGF1dG8gc2NyaXB0VVJMID0gZHluYW1pY19jZl9jYXN0PENGVVJM
UmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm94eURpY3Rpb25hcnksIGtDRlByb3h5QXV0b0Nv
bmZpZ3VyYXRpb25VUkxLZXkpKTsKKyAgICAgICAgICAgIGlmICghc2NyaXB0VVJMKQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBDRlN0cmVhbUNsaWVudENvbnRleHQg
Y29udGV4dCA9IHsgMCwgKHZvaWQqKSZwcm94eVNlcnZlcnMsIDAsIDAsIDAgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxl
SW1wbENGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0
U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcAppbmRleCA1NWI5ZjFlZDRhMGQzMjVhNmIxNmExMTQz
ODlmMzljN2RlZDM2Y2E2Li44NTBmY2ExN2EyMWQ5NzFhOWUyMDI3OWEyMzEyZTJkYTI3OTAwNDJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0
cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCkBAIC0yNDksMTIgKzI0OSw5
IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y2hvb3NlUHJveHlGcm9tQXJyYXkoQ0ZB
cnJheVJlZiBwcm94eUFycmF5KQogCiAgICAgLy8gUEFDIGlzIGFsd2F5cyB0aGUgZmlyc3QgZW50
cnksIGlmIHByZXNlbnQuCiAgICAgaWYgKHByb3h5QXJyYXlDb3VudCkgewotICAgICAgICBDRkRp
Y3Rpb25hcnlSZWYgcHJveHlJbmZvID0gc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkFy
cmF5R2V0VmFsdWVBdEluZGV4KHByb3h5QXJyYXksIDApKTsKLSAgICAgICAgQ0ZUeXBlUmVmIHBy
b3h5VHlwZSA9IENGRGljdGlvbmFyeUdldFZhbHVlKHByb3h5SW5mbywga0NGUHJveHlUeXBlS2V5
KTsKLSAgICAgICAgaWYgKHByb3h5VHlwZSAmJiBDRkdldFR5cGVJRChwcm94eVR5cGUpID09IENG
U3RyaW5nR2V0VHlwZUlEKCkpIHsKLSAgICAgICAgICAgIGlmIChDRkVxdWFsKHByb3h5VHlwZSwg
a0NGUHJveHlUeXBlQXV0b0NvbmZpZ3VyYXRpb25VUkwpKSB7Ci0gICAgICAgICAgICAgICAgQ0ZU
eXBlUmVmIHBhY0ZpbGVVUkwgPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm94eUluZm8sIGtDRlBy
b3h5QXV0b0NvbmZpZ3VyYXRpb25VUkxLZXkpOwotICAgICAgICAgICAgICAgIGlmIChwYWNGaWxl
VVJMICYmIENGR2V0VHlwZUlEKHBhY0ZpbGVVUkwpID09IENGVVJMR2V0VHlwZUlEKCkpIHsKKyAg
ICAgICAgaWYgKGF1dG8gcHJveHlJbmZvID0gZHluYW1pY19jZl9jYXN0PENGRGljdGlvbmFyeVJl
Zj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChwcm94eUFycmF5LCAwKSkpIHsKKyAgICAgICAgICAg
IGlmIChhdXRvIHByb3h5VHlwZSA9IGR5bmFtaWNfY2ZfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0
aW9uYXJ5R2V0VmFsdWUocHJveHlJbmZvLCBrQ0ZQcm94eVR5cGVLZXkpKTsgcHJveHlUeXBlICYm
IENGRXF1YWwocHJveHlUeXBlLCBrQ0ZQcm94eVR5cGVBdXRvQ29uZmlndXJhdGlvblVSTCkpIHsK
KyAgICAgICAgICAgICAgICBpZiAoYXV0byBwYWNGaWxlVVJMID0gZHluYW1pY19jZl9jYXN0PENG
VVJMUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm94eUluZm8sIGtDRlByb3h5QXV0b0NvbmZp
Z3VyYXRpb25VUkxLZXkpKSkgewogICAgICAgICAgICAgICAgICAgICBleGVjdXRlUEFDRmlsZVVS
TChzdGF0aWNfY2FzdDxDRlVSTFJlZj4ocGFjRmlsZVVSTCkpOwogICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQpAQCAtMjYyLDIwICsyNTksMjAgQEAgdm9pZCBT
b2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjaG9vc2VQcm94eUZyb21BcnJheShDRkFycmF5UmVmIHBy
b3h5QXJyYXkpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBDRkRpY3Rpb25hcnlSZWYgY2hvc2Vu
UHJveHkgPSAwOworICAgIENGRGljdGlvbmFyeVJlZiBjaG9zZW5Qcm94eSA9IG51bGxwdHI7CiAg
ICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwgcHJveHlBcnJheUNvdW50OyArK2kpIHsKLSAgICAg
ICAgQ0ZEaWN0aW9uYXJ5UmVmIHByb3h5SW5mbyA9IHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJl
Zj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChwcm94eUFycmF5LCBpKSk7Ci0gICAgICAgIENGVHlw
ZVJlZiBwcm94eVR5cGUgPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm94eUluZm8sIGtDRlByb3h5
VHlwZUtleSk7Ci0gICAgICAgIGlmIChwcm94eVR5cGUgJiYgQ0ZHZXRUeXBlSUQocHJveHlUeXBl
KSA9PSBDRlN0cmluZ0dldFR5cGVJRCgpKSB7Ci0gICAgICAgICAgICBpZiAoQ0ZFcXVhbChwcm94
eVR5cGUsIGtDRlByb3h5VHlwZVNPQ0tTKSkgewotICAgICAgICAgICAgICAgIG1fY29ubmVjdGlv
blR5cGUgPSBTT0NLU1Byb3h5OwotICAgICAgICAgICAgICAgIGNob3NlblByb3h5ID0gcHJveHlJ
bmZvOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
aWYgKENGRXF1YWwocHJveHlUeXBlLCBrQ0ZQcm94eVR5cGVIVFRQUykpIHsKLSAgICAgICAgICAg
ICAgICBtX2Nvbm5lY3Rpb25UeXBlID0gQ09OTkVDVFByb3h5OwotICAgICAgICAgICAgICAgIGNo
b3NlblByb3h5ID0gcHJveHlJbmZvOwotICAgICAgICAgICAgICAgIC8vIEtlZXAgbG9va2luZyBm
b3IgcHJveGllcywgYXMgYSBTT0NLUyBvbmUgaXMgcHJlZmVyYWJsZS4KKyAgICAgICAgaWYgKGF1
dG8gcHJveHlJbmZvID0gZHluYW1pY19jZl9jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZBcnJheUdl
dFZhbHVlQXRJbmRleChwcm94eUFycmF5LCBpKSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHBy
b3h5VHlwZSA9IGR5bmFtaWNfY2ZfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFs
dWUocHJveHlJbmZvLCBrQ0ZQcm94eVR5cGVLZXkpKSkgeworICAgICAgICAgICAgICAgIGlmIChD
RkVxdWFsKHByb3h5VHlwZSwga0NGUHJveHlUeXBlU09DS1MpKSB7CisgICAgICAgICAgICAgICAg
ICAgIG1fY29ubmVjdGlvblR5cGUgPSBTT0NLU1Byb3h5OworICAgICAgICAgICAgICAgICAgICBj
aG9zZW5Qcm94eSA9IHByb3h5SW5mbzsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChDRkVxdWFsKHByb3h5VHlwZSwga0NG
UHJveHlUeXBlSFRUUFMpKSB7CisgICAgICAgICAgICAgICAgICAgIG1fY29ubmVjdGlvblR5cGUg
PSBDT05ORUNUUHJveHk7CisgICAgICAgICAgICAgICAgICAgIGNob3NlblByb3h5ID0gcHJveHlJ
bmZvOworICAgICAgICAgICAgICAgICAgICAvLyBLZWVwIGxvb2tpbmcgZm9yIHByb3hpZXMsIGFz
IGEgU09DS1Mgb25lIGlzIHByZWZlcmFibGUuCisgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMjg0LDEyICsyODEsMTIgQEAgdm9pZCBTb2NrZXRT
dHJlYW1IYW5kbGVJbXBsOjpjaG9vc2VQcm94eUZyb21BcnJheShDRkFycmF5UmVmIHByb3h5QXJy
YXkpCiAgICAgICAgIEFTU0VSVChtX2Nvbm5lY3Rpb25UeXBlICE9IFVua25vd24pOwogICAgICAg
ICBBU1NFUlQobV9jb25uZWN0aW9uVHlwZSAhPSBEaXJlY3QpOwogCi0gICAgICAgIENGVHlwZVJl
ZiBwcm94eUhvc3QgPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShjaG9zZW5Qcm94eSwga0NGUHJveHlI
b3N0TmFtZUtleSk7Ci0gICAgICAgIENGVHlwZVJlZiBwcm94eVBvcnQgPSBDRkRpY3Rpb25hcnlH
ZXRWYWx1ZShjaG9zZW5Qcm94eSwga0NGUHJveHlQb3J0TnVtYmVyS2V5KTsKKyAgICAgICAgYXV0
byBwcm94eUhvc3QgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFyeUdl
dFZhbHVlKGNob3NlblByb3h5LCBrQ0ZQcm94eUhvc3ROYW1lS2V5KSk7CisgICAgICAgIGF1dG8g
cHJveHlQb3J0ID0gZHluYW1pY19jZl9jYXN0PENGTnVtYmVyUmVmPihDRkRpY3Rpb25hcnlHZXRW
YWx1ZShjaG9zZW5Qcm94eSwga0NGUHJveHlQb3J0TnVtYmVyS2V5KSk7CiAKLSAgICAgICAgaWYg
KHByb3h5SG9zdCAmJiBDRkdldFR5cGVJRChwcm94eUhvc3QpID09IENGU3RyaW5nR2V0VHlwZUlE
KCkgJiYgcHJveHlQb3J0ICYmIENGR2V0VHlwZUlEKHByb3h5UG9ydCkgPT0gQ0ZOdW1iZXJHZXRU
eXBlSUQoKSkgewotICAgICAgICAgICAgbV9wcm94eUhvc3QgPSBzdGF0aWNfY2FzdDxDRlN0cmlu
Z1JlZj4ocHJveHlIb3N0KTsKLSAgICAgICAgICAgIG1fcHJveHlQb3J0ID0gc3RhdGljX2Nhc3Q8
Q0ZOdW1iZXJSZWY+KHByb3h5UG9ydCk7CisgICAgICAgIGlmIChwcm94eUhvc3QgJiYgcHJveHlQ
b3J0KSB7CisgICAgICAgICAgICBtX3Byb3h5SG9zdCA9IHByb3h5SG9zdDsKKyAgICAgICAgICAg
IG1fcHJveHlQb3J0ID0gcHJveHlQb3J0OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3Mv
V2ViQ29yZVVSTFJlc3BvbnNlSU9TLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2lvcy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MuaAppbmRleCA4ZDNjN2NiMWZiMjViMzc4YTE0ODE2
OTVmNzMyMTRhYmJlNmRmMzBkLi5mMzAyODc4MDJhZTI0MDY5ZjViYTIyODIzNTA2OTllOTAzNjIw
OGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9XZWJD
b3JlVVJMUmVzcG9uc2VJT1MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2lvcy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MuaApAQCAtMzAsMTggKzMwLDE1IEBACiAKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogCi0jaWZkZWYgX19PQkpDX18KLSNpbmNsdWRlICJXZWJDb3Jl
VVJMUmVzcG9uc2UuaCIKLSNlbmRpZgotCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgor
I2luY2x1ZGUgIldlYkNvcmVVUkxSZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KICNpZiBVU0UoUVVJQ0tfTE9PSykKICAg
ICAKLWlubGluZSBib29sIHNob3VsZFVzZVF1aWNrTG9va0Zvck1JTUVUeXBlKGNvbnN0IFdURjo6
U3RyaW5nJiBtaW1lVHlwZSkKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworaW5saW5lIGJvb2wgc2hv
dWxkVXNlUXVpY2tMb29rRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKICAg
ICBpZiAoKCFNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGUobWlt
ZVR5cGUpICAgICAgIC8vIGlnbm9yZSBzdXBwb3J0ZWQgbm9uLWltYWdlIE1JTUUgdHlwZXMKICAg
ICAgICAgICYmICFNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGUobWlt
ZVR5cGUpICAgICAgIC8vIGlnbm9yZSBzdXBwb3J0ZWQgaW1hZ2UgTUlNRSB0eXBlcwpAQCAtNTcs
OCArNTQsOCBAQCBpbmxpbmUgYm9vbCBzaG91bGRVc2VRdWlja0xvb2tGb3JNSU1FVHlwZShjb25z
dCBXVEY6OlN0cmluZyYgbWltZVR5cGUpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi0jZW5kaWYg
Ly8gVVNFKFFVSUNLX0xPT0spCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorI2VuZGlmIC8v
IFVTRShRVUlDS19MT09LKQorCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1dlYkNvcmVVUkxSZXNw
b25zZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1dlYkNvcmVV
UkxSZXNwb25zZUlPUy5tbQppbmRleCAzNTc3NDBmMjI1NmY5ODkwYmE3MWEzNjM4ZWY1NzA3ZTcx
YTlkOWIxLi5lZTZjZTUxZmI1ZjUwNTE1MTVlN2FlNzk5YmFhM2U0NTFkZGZmODNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9XZWJDb3JlVVJMUmVzcG9u
c2VJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvV2ViQ29y
ZVVSTFJlc3BvbnNlSU9TLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDgxICszMiw0NCBAQAogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAKICNpbXBvcnQgIlF1aWNrTG9vay5oIgotI2ltcG9ydCAiVVRJVXRpbGl0aWVzLmgiCiAj
aW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CisKICNpbXBv
cnQgPHBhbC9pb3MvUXVpY2tMb29rU29mdExpbmsuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci0vLyA8cmRhcjovL3Byb2JsZW0vNDYzMzI4OTM+IFJlZ2lzdGVyIC5tanMgZmlsZXMgYXMgd2hh
dGV2ZXIgVVRJIGluZGljYXRlcyBKYXZhU2NyaXB0Ci1zdGF0aWMgUmV0YWluUHRyPENGRGljdGlv
bmFyeVJlZj4gY3JlYXRlRXh0ZW5zaW9uVG9NSU1FVHlwZU1hcCgpCi17Ci0gICAgQ0ZTdHJpbmdS
ZWYga2V5c1tdID0gewotICAgICAgICBDRlNUUigibWpzIikKLSAgICB9OwotCi0gICAgQ0ZTdHJp
bmdSZWYgdmFsdWVzW10gPSB7Ci0gICAgICAgIENGU1RSKCJ0ZXh0L2phdmFzY3JpcHQiKQotICAg
IH07CisjaWYgIVVTRShRVUlDS19MT09LKQogCi0gICAgQVNTRVJUKHNpemVvZihrZXlzKSA9PSBz
aXplb2YodmFsdWVzKSk7Ci0gICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCB2b2lkKiopJmtleXMsIChjb25zdCB2b2lkKiopJnZh
bHVlcywgc2l6ZW9mKGtleXMpIC8gc2l6ZW9mKENGU3RyaW5nUmVmKSwgJmtDRlR5cGVEaWN0aW9u
YXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwordm9p
ZCBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KENGVVJMUmVzcG9uc2VSZWYsIGJvb2wpCit7CiB9
CiAKLXZvaWQgYWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeShDRlVSTFJlc3BvbnNlUmVmIGNmUmVz
cG9uc2UsIGJvb2wgaXNNYWluUmVzb3VyY2VMb2FkKQorI2Vsc2UKKwordm9pZCBhZGp1c3RNSU1F
VHlwZUlmTmVjZXNzYXJ5KENGVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UsIGJvb2wgaXNNYWluUmVz
b3VyY2VMb2FkKQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZVR5cGUgPSBDRlVS
TFJlc3BvbnNlR2V0TUlNRVR5cGUoY2ZSZXNwb25zZSk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiB1cGRhdGVkTUlNRVR5cGUgPSBtaW1lVHlwZTsKLSAgICBpZiAoIXVwZGF0ZWRNSU1FVHlw
ZSkKLSAgICAgICAgdXBkYXRlZE1JTUVUeXBlID0gZGVmYXVsdE1JTUVUeXBlKCkuY3JlYXRlQ0ZT
dHJpbmcoKTsKKyAgICBpZiAoIWlzTWFpblJlc291cmNlTG9hZCkKKyAgICAgICAgcmV0dXJuOwog
Ci0gICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzQ2MzMyODkzPiBSZWdpc3RlciAubWpzIGZpbGVzIGFz
IHdoYXRldmVyIFVUSSBpbmRpY2F0ZXMgSmF2YVNjcmlwdAotICAgIGlmICghbWltZVR5cGUpIHsK
LSAgICAgICAgYXV0byB1cmwgPSBDRlVSTFJlc3BvbnNlR2V0VVJMKGNmUmVzcG9uc2UpOwotICAg
ICAgICBpZiAoWyhfX2JyaWRnZSBOU1VSTCAqKXVybCBpc0ZpbGVVUkxdKSB7Ci0gICAgICAgICAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGV4dGVuc2lvbiA9IGFkb3B0Q0YoQ0ZVUkxDb3B5UGF0
aEV4dGVuc2lvbih1cmwpKTsKLSAgICAgICAgICAgIGlmIChleHRlbnNpb24pIHsKLSAgICAgICAg
ICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4+
IGV4dGVuc2lvbk1hcCA9IGNyZWF0ZUV4dGVuc2lvblRvTUlNRVR5cGVNYXAoKTsKLSAgICAgICAg
ICAgICAgICBhdXRvIG11dGFibGVFeHRlbnNpb24gPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlTXV0
YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgZXh0ZW5zaW9uLmdldCgpKSk7Ci0gICAg
ICAgICAgICAgICAgQ0ZTdHJpbmdMb3dlcmNhc2UobXV0YWJsZUV4dGVuc2lvbi5nZXQoKSwgTlVM
TCk7Ci0gICAgICAgICAgICAgICAgZXh0ZW5zaW9uID0gV1RGTW92ZShtdXRhYmxlRXh0ZW5zaW9u
KTsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byBuZXdNSU1FVHlwZSA9IChDRlN0cmluZ1JlZilD
RkRpY3Rpb25hcnlHZXRWYWx1ZShleHRlbnNpb25NYXAuZ2V0KCkuZ2V0KCksIGV4dGVuc2lvbi5n
ZXQoKSkpCi0gICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRNSU1FVHlwZSA9IG5ld01JTUVUeXBl
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQorICAgIGF1dG8gdHlwZSA9IENGVVJM
UmVzcG9uc2VHZXRNSU1FVHlwZShyZXNwb25zZSk7CisgICAgaWYgKCFzaG91bGRVc2VRdWlja0xv
b2tGb3JNSU1FVHlwZSgoX19icmlkZ2UgTlNTdHJpbmcgKil0eXBlKSkKKyAgICAgICAgcmV0dXJu
OwogCi0jaWYgVVNFKFFVSUNLX0xPT0spCi0gICAgLy8gV2UgbXVzdCBlbnN1cmUgdGhhdCB0aGUg
TUlNRSB0eXBlIGlzIGNvcnJlY3QsIHNvIHRoYXQgUXVpY2tMb29rJ3Mgd2ViIHBsdWdpbiBpcyBj
YWxsZWQgd2hlbiBuZWVkZWQuCi0gICAgLy8gV2UgZmlsdGVyIHRoZSBiYXNpYyBNSU1FIHR5cGVz
IHNvIHRoYXQgd2UgZG9uJ3QgZG8gdW5uZWNlc3Nhcnkgd29yayBpbiBzdGFuZGFyZCBicm93c2lu
ZyBzaXR1YXRpb25zLgotICAgIGlmIChpc01haW5SZXNvdXJjZUxvYWQgJiYgc2hvdWxkVXNlUXVp
Y2tMb29rRm9yTUlNRVR5cGUoKE5TU3RyaW5nICopdXBkYXRlZE1JTUVUeXBlLmdldCgpKSkgewot
ICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHN1Z2dlc3RlZEZpbGVuYW1lID0gYWRvcHRD
RihDRlVSTFJlc3BvbnNlQ29weVN1Z2dlc3RlZEZpbGVuYW1lKGNmUmVzcG9uc2UpKTsKLSAgICAg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBxdWlja0xvb2tNSU1FVHlwZSA9IGFkb3B0Q0YoKENG
U3RyaW5nUmVmKVBBTDo6c29mdExpbmtfUXVpY2tMb29rX1FMVHlwZUNvcHlCZXN0TWltZVR5cGVG
b3JGaWxlTmFtZUFuZE1pbWVUeXBlKChOU1N0cmluZyAqKXN1Z2dlc3RlZEZpbGVuYW1lLmdldCgp
LCAoTlNTdHJpbmcgKiltaW1lVHlwZS5nZXQoKSkpOwotICAgICAgICBpZiAoIXF1aWNrTG9va01J
TUVUeXBlKSB7Ci0gICAgICAgICAgICBhdXRvIHVybCA9IENGVVJMUmVzcG9uc2VHZXRVUkwoY2ZS
ZXNwb25zZSk7Ci0gICAgICAgICAgICBpZiAoWyhOU1VSTCAqKXVybCBpc0ZpbGVVUkxdKSB7Ci0g
ICAgICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBleHRlbnNpb24gPSBhZG9wdENG
KENGVVJMQ29weVBhdGhFeHRlbnNpb24odXJsKSk7Ci0gICAgICAgICAgICAgICAgaWYgKGV4dGVu
c2lvbikgewotQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICAgICAgICAg
ICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGkgPSBhZG9wdENGKFVUVHlwZUNyZWF0
ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NGaWxlbmFtZUV4dGVuc2lvbiwg
ZXh0ZW5zaW9uLmdldCgpLCBudWxscHRyKSk7Ci1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19FTkQKLSAgICAgICAgICAgICAgICAgICAgU3RyaW5nIE1JTUVUeXBlID0gTUlNRVR5cGVGcm9t
VVRJVHJlZSh1dGkuZ2V0KCkpOwotICAgICAgICAgICAgICAgICAgICBpZiAoIU1JTUVUeXBlLmlz
RW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHF1aWNrTG9va01JTUVUeXBlID0gTUlN
RVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KKyAgICAvLyBFbnN1cmUgdGhhdCB0aGUgTUlNRSB0eXBlIGlzIGNvcnJlY3Qg
c28gdGhhdCBRdWlja0xvb2sncyB3ZWIgcGx1Zy1pbiBpcyBjYWxsZWQgd2hlbiBuZWVkZWQuCisg
ICAgLy8gVGhlIHNob3VsZFVzZVF1aWNrTG9va0Zvck1JTUVUeXBlIGZ1bmN0aW9uIGZpbHRlcnMg
Y29tbW9uIE1JTUUgdHlwZXMgc28gd2UgZG9uJ3QgZG8gdW5uZWNlc3Nhcnkgd29yay4KIAotICAg
ICAgICBpZiAocXVpY2tMb29rTUlNRVR5cGUpCi0gICAgICAgICAgICB1cGRhdGVkTUlNRVR5cGUg
PSBxdWlja0xvb2tNSU1FVHlwZTsKLSAgICB9Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShpc01h
aW5SZXNvdXJjZUxvYWQpOwotI2VuZGlmIC8vIFVTRShRVUlDS19MT09LKQotICAgIGlmICghbWlt
ZVR5cGUgfHwgQ0ZTdHJpbmdDb21wYXJlKG1pbWVUeXBlLmdldCgpLCB1cGRhdGVkTUlNRVR5cGUu
Z2V0KCksIGtDRkNvbXBhcmVDYXNlSW5zZW5zaXRpdmUpICE9IGtDRkNvbXBhcmVFcXVhbFRvKQot
ICAgICAgICBDRlVSTFJlc3BvbnNlU2V0TUlNRVR5cGUoY2ZSZXNwb25zZSwgdXBkYXRlZE1JTUVU
eXBlLmdldCgpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHVwZGF0ZWRUeXBlOworICAg
IGF1dG8gc3VnZ2VzdGVkRmlsZW5hbWUgPSBhZG9wdENGKENGVVJMUmVzcG9uc2VDb3B5U3VnZ2Vz
dGVkRmlsZW5hbWUocmVzcG9uc2UpKTsKKyAgICBpZiAoYXV0byBxdWlja0xvb2tUeXBlID0gYWRv
cHROUyhQQUw6OnNvZnRMaW5rX1F1aWNrTG9va19RTFR5cGVDb3B5QmVzdE1pbWVUeXBlRm9yRmls
ZU5hbWVBbmRNaW1lVHlwZSgoX19icmlkZ2UgTlNTdHJpbmcgKilzdWdnZXN0ZWRGaWxlbmFtZS5n
ZXQoKSwgKF9fYnJpZGdlIE5TU3RyaW5nICopdHlwZSkpKQorICAgICAgICB1cGRhdGVkVHlwZSA9
IChfX2JyaWRnZSBDRlN0cmluZ1JlZilxdWlja0xvb2tUeXBlLmdldCgpOworICAgIGVsc2UgaWYg
KGF1dG8gZXh0ZW5zaW9uID0gZmlsZVBhdGhFeHRlbnNpb24ocmVzcG9uc2UpKQorICAgICAgICB1
cGRhdGVkVHlwZSA9IHByZWZlcnJlZE1JTUVUeXBlRm9yRmlsZUV4dGVuc2lvbkZyb21VVFR5cGUo
ZXh0ZW5zaW9uLmdldCgpKTsKKyAgICBpZiAodXBkYXRlZFR5cGUgJiYgKCF0eXBlIHx8IENGU3Ry
aW5nQ29tcGFyZSh0eXBlLCB1cGRhdGVkVHlwZS5nZXQoKSwga0NGQ29tcGFyZUNhc2VJbnNlbnNp
dGl2ZSkgIT0ga0NGQ29tcGFyZUVxdWFsVG8pKQorICAgICAgICBDRlVSTFJlc3BvbnNlU2V0TUlN
RVR5cGUocmVzcG9uc2UsIHVwZGF0ZWRUeXBlLmdldCgpKTsKIH0KIAorI2VuZGlmIC8vIFVTRShR
VUlDS19MT09LKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBQTEFURk9S
TShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvTmV0d29ya1N0YXRlTm90aWZpZXJNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvTmV0d29ya1N0YXRlTm90aWZpZXJNYWMuY3BwCmluZGV4IDg2Yzc5Mjli
ODcwZjRkZTljM2UxNjE1YjE1YTJmZWI0ZjQzOTBkMGUuLmRkOTdjZWE0ZDg5Y2Q3ZGIwMGI2NDQw
NDA1YzFlMDNlYzc4OGQyODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL05ldHdvcmtTdGF0ZU5vdGlmaWVyTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9OZXR3b3JrU3RhdGVOb3RpZmllck1hYy5jcHAKQEAgLTI5
LDIzICsyOSwyNCBAQAogI2lmIFBMQVRGT1JNKE1BQykKIAogI2luY2x1ZGUgPFN5c3RlbUNvbmZp
Z3VyYXRpb24vU3lzdGVtQ29uZmlndXJhdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9jZi9UeXBlQ2Fz
dHNDRi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgTmV0d29ya1N0YXRlTm90aWZp
ZXI6OnVwZGF0ZVN0YXRlV2l0aG91dE5vdGlmeWluZygpCiB7CiAgICAgYXV0byBrZXkgPSBhZG9w
dENGKFNDRHluYW1pY1N0b3JlS2V5Q3JlYXRlTmV0d29ya0ludGVyZmFjZSgwLCBrU0NEeW5hbWlj
U3RvcmVEb21haW5TdGF0ZSkpOwotICAgIGF1dG8gcHJvcGVydHlMaXN0ID0gYWRvcHRDRihTQ0R5
bmFtaWNTdG9yZUNvcHlWYWx1ZShtX3N0b3JlLmdldCgpLCBrZXkuZ2V0KCkpKTsKLSAgICBpZiAo
IXByb3BlcnR5TGlzdCB8fCBDRkdldFR5cGVJRChwcm9wZXJ0eUxpc3QuZ2V0KCkpICE9IENGRGlj
dGlvbmFyeUdldFR5cGVJRCgpKQorICAgIGF1dG8gcHJvcGVydHlMaXN0ID0gZHluYW1pY19jZl9j
YXN0PENGRGljdGlvbmFyeVJlZj4oYWRvcHRDRihTQ0R5bmFtaWNTdG9yZUNvcHlWYWx1ZShtX3N0
b3JlLmdldCgpLCBrZXkuZ2V0KCkpKSk7CisgICAgaWYgKCFwcm9wZXJ0eUxpc3QpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGF1dG8gbmV0SW50ZXJmYWNlcyA9IENGRGljdGlvbmFyeUdldFZhbHVl
KChDRkRpY3Rpb25hcnlSZWYpcHJvcGVydHlMaXN0LmdldCgpLCBrU0NEeW5hbWljU3RvcmVQcm9w
TmV0SW50ZXJmYWNlcyk7Ci0gICAgaWYgKCFuZXRJbnRlcmZhY2VzIHx8IENGR2V0VHlwZUlEKG5l
dEludGVyZmFjZXMpICE9IENGQXJyYXlHZXRUeXBlSUQoKSkKKyAgICBhdXRvIG5ldEludGVyZmFj
ZXMgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZBcnJheVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJv
cGVydHlMaXN0LmdldCgpLCBrU0NEeW5hbWljU3RvcmVQcm9wTmV0SW50ZXJmYWNlcykpOworICAg
IGlmICghbmV0SW50ZXJmYWNlcykKICAgICAgICAgcmV0dXJuOwogCi0gICAgZm9yIChDRkluZGV4
IGkgPSAwOyBpIDwgQ0ZBcnJheUdldENvdW50KChDRkFycmF5UmVmKW5ldEludGVyZmFjZXMpOyBp
KyspIHsKLSAgICAgICAgYXV0byBpbnRlcmZhY2VOYW1lID0gKENGU3RyaW5nUmVmKUNGQXJyYXlH
ZXRWYWx1ZUF0SW5kZXgoKENGQXJyYXlSZWYpbmV0SW50ZXJmYWNlcywgaSk7Ci0gICAgICAgIGlm
IChDRkdldFR5cGVJRChpbnRlcmZhY2VOYW1lKSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpKQorICAg
IGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IENGQXJyYXlHZXRDb3VudChuZXRJbnRlcmZhY2VzKTsg
aSsrKSB7CisgICAgICAgIGF1dG8gaW50ZXJmYWNlTmFtZSA9IGR5bmFtaWNfY2ZfY2FzdDxDRlN0
cmluZ1JlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChuZXRJbnRlcmZhY2VzLCBpKSk7CisgICAg
ICAgIGlmICghaW50ZXJmYWNlTmFtZSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAg
IC8vIElnbm9yZSB0aGUgbG9vcGJhY2sgaW50ZXJmYWNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMuaAppbmRleCA1ZDE4OTVmMzM1Y2E4
MzQxNzdhOTIyYWFlYTQ2Y2M2N2Y3ZjBlNTRlLi44MjUxN2I3ZWIzYTlmODM0N2Y0MGE3NDQ2OGU3
ZjExMjI4ZjJlNzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9VVElVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9VVElVdGlsaXRpZXMuaApAQCAtMzAsNyArMzAsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgTUlNRVR5cGVGcm9tVVRJKGNvbnN0IFN0cmluZyYp
OwotU3RyaW5nIE1JTUVUeXBlRnJvbVVUSVRyZWUoY29uc3QgU3RyaW5nJik7CitSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IG1pbWVUeXBlRnJvbVVUSVRyZWUoQ0ZTdHJpbmdSZWYpOwogV0VCQ09SRV9F
WFBPUlQgU3RyaW5nIFVUSUZyb21NSU1FVHlwZShjb25zdCBTdHJpbmcmKTsKIGJvb2wgaXNEZWNs
YXJlZFVUSShjb25zdCBTdHJpbmcmKTsKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBVVElGcm9tVGFn
KGNvbnN0IFN0cmluZyYgdGFnQ2xhc3MsIGNvbnN0IFN0cmluZyYgdGFnLCBjb25zdCBTdHJpbmcm
IGNvbmZvcm1pbmdUb1VUSSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9VVElVdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9VVElVdGlsaXRpZXMubW0KaW5kZXggY2ViYmNhNWIyNGNiZjhkMGMwZTE4ZmRiMjQ4
NGUwODI0OGNiMzYwMS4uNDIwNGE0MWNkYWQ5NmZkYmUxY2NiYmMxY2RhMzgwODAyOGExNjE0ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0
aWVzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxp
dGllcy5tbQpAQCAtNDUsNDQgKzQ1LDM3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0JFR0lOCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIH0KIAotU3RyaW5nIE1J
TUVUeXBlRnJvbVVUSVRyZWUoY29uc3QgU3RyaW5nJiB1dGkpCitSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IG1pbWVUeXBlRnJvbVVUSVRyZWUoQ0ZTdHJpbmdSZWYgdXRpKQogewotICAgIGF1dG8gdXRp
Q0YgPSB1dGkuY3JlYXRlQ0ZTdHJpbmcoKTsKLQogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfQkVHSU4KICAgICAvLyBDaGVjayBpZiB0aGlzIFVUSSBoYXMgYSBNSU1FIHR5cGUuCi0gICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBtaW1lVHlwZSA9IGFkb3B0Q0YoVVRUeXBlQ29weVByZWZl
cnJlZFRhZ1dpdGhDbGFzcyh1dGlDRi5nZXQoKSwga1VUVGFnQ2xhc3NNSU1FVHlwZSkpOwotICAg
IGlmIChtaW1lVHlwZSkKLSAgICAgICAgcmV0dXJuIG1pbWVUeXBlLmdldCgpOworICAgIGlmIChh
dXRvIHR5cGUgPSBhZG9wdENGKFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3ModXRpLCBr
VVRUYWdDbGFzc01JTUVUeXBlKSkpCisgICAgICAgIHJldHVybiB0eXBlOwogCiAgICAgLy8gSWYg
bm90LCB3YWxrIHRoZSBhbmNlc3Rvcnkgb2YgdGhpcyBVVEkgdmlhIGl0cyAiQ29uZm9ybXNUbyIg
dGFncyBhbmQgcmV0dXJuIHRoZSBmaXJzdCBNSU1FIHR5cGUgd2UgZmluZC4KLSAgICBSZXRhaW5Q
dHI8Q0ZEaWN0aW9uYXJ5UmVmPiBkZWNsID0gYWRvcHRDRihVVFR5cGVDb3B5RGVjbGFyYXRpb24o
dXRpQ0YuZ2V0KCkpKTsKLSAgICBpZiAoIWRlY2wpCi0gICAgICAgIHJldHVybiBlbXB0eVN0cmlu
ZygpOwotICAgIENGVHlwZVJlZiB2YWx1ZSA9IENGRGljdGlvbmFyeUdldFZhbHVlKGRlY2wuZ2V0
KCksIGtVVFR5cGVDb25mb3Jtc1RvS2V5KTsKKyAgICBhdXRvIGRlY2xhcmF0aW9uID0gYWRvcHRD
RihVVFR5cGVDb3B5RGVjbGFyYXRpb24odXRpKSk7CisgICAgaWYgKCFkZWNsYXJhdGlvbikKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIHZhbHVlID0gQ0ZEaWN0aW9uYXJ5R2V0
VmFsdWUoZGVjbGFyYXRpb24uZ2V0KCksIGtVVFR5cGVDb25mb3Jtc1RvS2V5KTsKIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJldHVy
biBlbXB0eVN0cmluZygpOwotICAgIENGVHlwZUlEIHR5cGVJRCA9IENGR2V0VHlwZUlEKHZhbHVl
KTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBpZiAodHlwZUlEID09IENGU3RyaW5n
R2V0VHlwZUlEKCkpCi0gICAgICAgIHJldHVybiBNSU1FVHlwZUZyb21VVElUcmVlKChDRlN0cmlu
Z1JlZil2YWx1ZSk7CisgICAgaWYgKGF1dG8gc3RyaW5nID0gZHluYW1pY19jZl9jYXN0PENGU3Ry
aW5nUmVmPih2YWx1ZSkpCisgICAgICAgIHJldHVybiBtaW1lVHlwZUZyb21VVElUcmVlKHN0cmlu
Zyk7CiAKLSAgICBpZiAodHlwZUlEID09IENGQXJyYXlHZXRUeXBlSUQoKSkgewotICAgICAgICBD
RkFycmF5UmVmIG5ld1R5cGVzID0gKENGQXJyYXlSZWYpdmFsdWU7Ci0gICAgICAgIENGSW5kZXgg
Y291bnQgPSBDRkFycmF5R2V0Q291bnQobmV3VHlwZXMpOworICAgIGlmIChhdXRvIGFycmF5ID0g
ZHluYW1pY19jZl9jYXN0PENGQXJyYXlSZWY+KHZhbHVlKSkgeworICAgICAgICBDRkluZGV4IGNv
dW50ID0gQ0ZBcnJheUdldENvdW50KGFycmF5KTsKICAgICAgICAgZm9yIChDRkluZGV4IGkgPSAw
OyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICAgICAgQ0ZUeXBlUmVmIG9iamVjdCA9IENGQXJy
YXlHZXRWYWx1ZUF0SW5kZXgobmV3VHlwZXMsIGkpOwotICAgICAgICAgICAgaWYgKENGR2V0VHlw
ZUlEKG9iamVjdCkgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkKLSAgICAgICAgICAgICAgICBjb250
aW51ZTsKLQotICAgICAgICAgICAgU3RyaW5nIG1pbWVUeXBlID0gTUlNRVR5cGVGcm9tVVRJVHJl
ZSgoQ0ZTdHJpbmdSZWYpb2JqZWN0KTsKLSAgICAgICAgICAgIGlmICghbWltZVR5cGUuaXNFbXB0
eSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBtaW1lVHlwZTsKKyAgICAgICAgICAgIGlmIChh
dXRvIHN0cmluZyA9IGR5bmFtaWNfY2ZfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZBcnJheUdldFZhbHVl
QXRJbmRleChhcnJheSwgaSkpKSB7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8gdHlwZSA9IG1p
bWVUeXBlRnJvbVVUSVRyZWUoc3RyaW5nKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHR5
cGU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gZW1wdHlT
dHJpbmcoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogc3RhdGljIENGU3RyaW5nUmVmIFVU
SUZyb21Vbmtub3duTUlNRVR5cGUoU3RyaW5nVmlldyBtaW1lVHlwZSkKQEAgLTEzNyw3ICsxMzAs
NyBAQCBTdHJpbmcgVVRJRnJvbVRhZyhjb25zdCBTdHJpbmcmIHRhZ0NsYXNzLCBjb25zdCBTdHJp
bmcmIHRhZywgY29uc3QgU3RyaW5nJiBjb25mbwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElP
TlNfQkVHSU4KICAgICBhdXRvIHUgPSBhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50
aWZpZXJGb3JUYWcodGFnQ2xhc3MuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwgdGFnLmNyZWF0ZUNG
U3RyaW5nKCkuZ2V0KCksIGNvbmZvcm1pbmdUb1VUSS5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7
CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLSAgICByZXR1cm4gU3RyaW5nKHUu
Z2V0KCkpOworICAgIHJldHVybiB1LmdldCgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5oCmluZGV4
IGU2MTg3Yjk3N2I5ODJjYTU0MjkzOWY2OGI5YTEyNTc5MzFjMTFjNjYuLmQyYjRkNWUyNTJmNDQ2
MDUyZDE1MWI0OWVhODI5NWE2ZGFhYTVlNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzgsNCAr
MzgsNyBAQCBXRUJDT1JFX0VYUE9SVCBOU1VSTFJlc3BvbnNlICpzeW50aGVzaXplUmVkaXJlY3RS
ZXNwb25zZUlmTmVjZXNzYXJ5KE5TVVJMUmVxdWVzdAogCiBXRUJDT1JFX0VYUE9SVCB2b2lkIGFk
anVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoQ0ZVUkxSZXNwb25zZVJlZiwgYm9vbCBpc01haW5SZXNv
dXJjZUxvYWQpOwogCitSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGZpbGVQYXRoRXh0ZW5zaW9uKENG
VVJMUmVzcG9uc2VSZWYpOworUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwcmVmZXJyZWRNSU1FVHlw
ZUZvckZpbGVFeHRlbnNpb25Gcm9tVVRUeXBlKENGU3RyaW5nUmVmIGV4dGVuc2lvbik7CisKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVV
UkxSZXNwb25zZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNv
cmVVUkxSZXNwb25zZS5tbQppbmRleCA0ZmE1MGU0NmIwOTQ5NmNkZWUwNzM5NjQ1Yzg0ZjFkN2E0
NjlmZmNkLi43NDEwMzlhMTBkYzcyMWNlMWNjZThjMThlOWM0MDNjYTI1NzQzMWMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9u
c2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVS
TFJlc3BvbnNlLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwg
MjAwOSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDMwMiArMzYsMTYyIEBACiAjaW1wb3J0IDx3dGYv
QXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLSNpZiBQTEFURk9STShNQUMpCi0vLyA8cmRhcjovL3Byb2JsZW0vNzAwNzM4OT4g
Q29yZVR5cGVzIFVUSSBtYXAgaXMgbWlzc2luZyAxMDArIGZpbGUgZXh0ZW5zaW9ucyB0aGF0IEdh
dGVLZWVwZXIga25ldyBhYm91dAotLy8gV2hlbiB3ZSBkaXNhYmxlZCBjb250ZW50IHNuaWZmaW5n
IGZvciBmaWxlIFVSTHMgd2UgY2F1c2VkIHByb2JsZW1zIHdpdGggdGhlc2UgMTAwKyBleHRlbnNp
b25zIHRoYXQgQ29yZVR5cGVzCi0vLyBkb2Vzbid0IGtub3cgYWJvdXQuCi0vLyBJZiBDb3JlVHlw
ZXMgaXMgZXZlciBicm91Z2h0IHVwIHRvIHNwZWVkIHdlIGNhbiByZW1vdmUgdGhpcyB0YWJsZSBh
bmQgYXNzb2NpYXRlZCBjb2RlLgotc3RhdGljIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGNy
ZWF0ZUV4dGVuc2lvblRvTUlNRVR5cGVNYXAoKQotewotICAgIENGU3RyaW5nUmVmIGtleXNbXSA9
IHsKLSAgICAgICAgQ0ZTVFIoImFpIiksCi0gICAgICAgIENGU1RSKCJhc2MiKSwKLSAgICAgICAg
Q0ZTVFIoImJjcGlvIiksCi0gICAgICAgIENGU1RSKCJibXAiKSwKLSAgICAgICAgQ0ZTVFIoImNk
ZiIpLAotICAgICAgICBDRlNUUigiY2xhc3MiKSwKLSAgICAgICAgQ0ZTVFIoImNwZ3oiKSwKLSAg
ICAgICAgQ0ZTVFIoImNwaW8iKSwKLSAgICAgICAgQ0ZTVFIoImNwdCIpLAotICAgICAgICBDRlNU
UigiY3NoIiksCi0gICAgICAgIENGU1RSKCJjc3MiKSwKLSAgICAgICAgQ0ZTVFIoImRjciIpLAot
ICAgICAgICBDRlNUUigiZGlyIiksCi0gICAgICAgIENGU1RSKCJkbWciKSwKLSAgICAgICAgQ0ZT
VFIoImRtcyIpLAotICAgICAgICBDRlNUUigiZHZpIiksCi0gICAgICAgIENGU1RSKCJkeHIiKSwK
LSAgICAgICAgQ0ZTVFIoImVwcyIpLAotICAgICAgICBDRlNUUigiZXR4IiksCi0gICAgICAgIENG
U1RSKCJleiIpLAotICAgICAgICBDRlNUUigiZmRmIiksCi0gICAgICAgIENGU1RSKCJmbGEiKSwK
LSAgICAgICAgQ0ZTVFIoImZwIiksCi0gICAgICAgIENGU1RSKCJmcDIiKSwKLSAgICAgICAgQ0ZT
VFIoImZwMyIpLAotICAgICAgICBDRlNUUigiZnA0IiksCi0gICAgICAgIENGU1RSKCJmcDUiKSwK
LSAgICAgICAgQ0ZTVFIoImZwNiIpLAotICAgICAgICBDRlNUUigiaGRmIiksCi0gICAgICAgIENG
U1RSKCJpY2UiKSwKLSAgICAgICAgQ0ZTVFIoImljbyIpLAotICAgICAgICBDRlNUUigiaWNzIiks
Ci0gICAgICAgIENGU1RSKCJpZWYiKSwKLSAgICAgICAgQ0ZTVFIoImlnZXMiKSwKLSAgICAgICAg
Q0ZTVFIoImlncyIpLAotICAgICAgICBDRlNUUigiaXNvIiksCi0gICAgICAgIENGU1RSKCJqaHRt
bCIpLAotICAgICAgICBDRlNUUigibGF0ZXgiKSwKLSAgICAgICAgQ0ZTVFIoImxoYSIpLAotICAg
ICAgICBDRlNUUigibHpoIiksCi0gICAgICAgIENGU1RSKCJtM3UiKSwKLSAgICAgICAgQ0ZTVFIo
Im00cCIpLAotICAgICAgICBDRlNUUigibWFjIiksCi0gICAgICAgIENGU1RSKCJtYW4iKSwKLSAg
ICAgICAgQ0ZTVFIoIm1lIiksCi0gICAgICAgIENGU1RSKCJtZXNoIiksCi0gICAgICAgIENGU1RS
KCJtaWYiKSwKLSAgICAgICAgQ0ZTVFIoIm1qcyIpLAotICAgICAgICBDRlNUUigibW92aWUiKSwK
LSAgICAgICAgQ0ZTVFIoIm1wMiIpLAotICAgICAgICBDRlNUUigibXBnYSIpLAotICAgICAgICBD
RlNUUigibXMiKSwKLSAgICAgICAgQ0ZTVFIoIm1zaCIpLAotICAgICAgICBDRlNUUigibXh1Iiks
Ci0gICAgICAgIENGU1RSKCJuYyIpLAotICAgICAgICBDRlNUUigib2RhIiksCi0gICAgICAgIENG
U1RSKCJwYm0iKSwKLSAgICAgICAgQ0ZTVFIoInBjeCIpLAotICAgICAgICBDRlNUUigicGRiIiks
Ci0gICAgICAgIENGU1RSKCJwZ20iKSwKLSAgICAgICAgQ0ZTVFIoInBnbiIpLAotICAgICAgICBD
RlNUUigicGxzIiksCi0gICAgICAgIENGU1RSKCJwbm0iKSwKLSAgICAgICAgQ0ZTVFIoInBudCIp
LAotICAgICAgICBDRlNUUigicG50ZyIpLAotICAgICAgICBDRlNUUigicHBtIiksCi0gICAgICAg
IENGU1RSKCJyYXMiKSwKLSAgICAgICAgQ0ZTVFIoInJnYiIpLAotICAgICAgICBDRlNUUigicm9m
ZiIpLAotICAgICAgICBDRlNUUigicnBtIiksCi0gICAgICAgIENGU1RSKCJydHgiKSwKLSAgICAg
ICAgQ0ZTVFIoInNnbSIpLAotICAgICAgICBDRlNUUigic2dtbCIpLAotICAgICAgICBDRlNUUigi
c2giKSwKLSAgICAgICAgQ0ZTVFIoInNoYXIiKSwKLSAgICAgICAgQ0ZTVFIoInNpbG8iKSwKLSAg
ICAgICAgQ0ZTVFIoInNrZCIpLAotICAgICAgICBDRlNUUigic2ttIiksCi0gICAgICAgIENGU1RS
KCJza3AiKSwKLSAgICAgICAgQ0ZTVFIoInNrdCIpLAotICAgICAgICBDRlNUUigic21pIiksCi0g
ICAgICAgIENGU1RSKCJzbyIpLAotICAgICAgICBDRlNUUigic3BsIiksCi0gICAgICAgIENGU1RS
KCJzcmMiKSwKLSAgICAgICAgQ0ZTVFIoInN2NGNwaW8iKSwKLSAgICAgICAgQ0ZTVFIoInN2NGNy
YyIpLAotICAgICAgICBDRlNUUigic3dmIiksCi0gICAgICAgIENGU1RSKCJ0IiksCi0gICAgICAg
IENGU1RSKCJ0YXJnYSIpLAotICAgICAgICBDRlNUUigidGNsIiksCi0gICAgICAgIENGU1RSKCJ0
ZXgiKSwKLSAgICAgICAgQ0ZTVFIoInRleGkiKSwKLSAgICAgICAgQ0ZTVFIoInRleGluZm8iKSwK
LSAgICAgICAgQ0ZTVFIoInRneiIpLAotICAgICAgICBDRlNUUigidG9ycmVudCIpLAotICAgICAg
ICBDRlNUUigidHIiKSwKLSAgICAgICAgQ0ZTVFIoInRzdiIpLAotICAgICAgICBDRlNUUigidXN0
YXIiKSwKLSAgICAgICAgQ0ZTVFIoInZjZCIpLAotICAgICAgICBDRlNUUigidnJtbCIpLAotICAg
ICAgICBDRlNUUigid2JtcCIpLAotICAgICAgICBDRlNUUigid2J4bWwiKSwKLSAgICAgICAgQ0ZT
VFIoIndlYmFyY2hpdmUiKSwKLSAgICAgICAgQ0ZTVFIoIndlYm0iKSwKLSAgICAgICAgQ0ZTVFIo
IndtZCIpLAotICAgICAgICBDRlNUUigid21sIiksCi0gICAgICAgIENGU1RSKCJ3bWxjIiksCi0g
ICAgICAgIENGU1RSKCJ3bWxzIiksCi0gICAgICAgIENGU1RSKCJ3bWxzYyIpLAotICAgICAgICBD
RlNUUigid3JsIiksCi0gICAgICAgIENGU1RSKCJ4ZHAiKSwKLSAgICAgICAgQ0ZTVFIoInhmZCIp
LAotICAgICAgICBDRlNUUigieGZkZiIpLAotICAgICAgICBDRlNUUigieHBtIiksCi0gICAgICAg
IENGU1RSKCJ4c2wiKSwKLSAgICAgICAgQ0ZTVFIoInh3ZCIpLAotICAgICAgICBDRlNUUigieHl6
IiksCi0gICAgICAgIENGU1RSKCJ6IikKLSAgICB9OworbmFtZXNwYWNlIFdURiB7CiAKLSAgICBD
RlN0cmluZ1JlZiB2YWx1ZXNbXSA9IHsKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3Bvc3Rz
Y3JpcHQiKSwKLSAgICAgICAgQ0ZTVFIoInRleHQvcGxhaW4iKSwKLSAgICAgICAgQ0ZTVFIoImFw
cGxpY2F0aW9uL3gtYmNwaW8iKSwKLSAgICAgICAgQ0ZTVFIoImltYWdlL2JtcCIpLAotICAgICAg
ICBDRlNUUigiYXBwbGljYXRpb24veC1uZXRjZGYiKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0
aW9uL29jdGV0LXN0cmVhbSIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC1nemlwIiks
Ci0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LWNwaW8iKSwKLSAgICAgICAgQ0ZTVFIoImFw
cGxpY2F0aW9uL21hYy1jb21wYWN0cHJvIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi94
LWNzaCIpLAotICAgICAgICBDRlNUUigidGV4dC9jc3MiKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxp
Y2F0aW9uL3gtZGlyZWN0b3IiKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gtZGlyZWN0
b3IiKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gtZGlza2NvcHkiKSwKLSAgICAgICAg
Q0ZTVFIoImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIpLAotICAgICAgICBDRlNUUigiYXBwbGlj
YXRpb24veC1kdmkiKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gtZGlyZWN0b3IiKSwK
LSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3Bvc3RzY3JpcHQiKSwKLSAgICAgICAgQ0ZTVFIo
InRleHQveC1zZXRleHQiKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL2FuZHJldy1pbnNl
dCIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24vdm5kLmZkZiIpLAotICAgICAgICBDRlNU
UigiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlv
bi94LWZpbGVtYWtlciIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC1maWxlbWFrZXIi
KSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gtZmlsZW1ha2VyIiksCi0gICAgICAgIENG
U1RSKCJhcHBsaWNhdGlvbi94LWZpbGVtYWtlciIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRp
b24veC1maWxlbWFrZXIiKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gtZmlsZW1ha2Vy
IiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LWhkZiIpLAotICAgICAgICBDRlNUUigi
eC1jb25mZXJlbmNlL3gtY29vbHRhbGsiKSwKLSAgICAgICAgQ0ZTVFIoImltYWdlL3gtaWNvbiIp
LAotICAgICAgICBDRlNUUigidGV4dC9jYWxlbmRhciIpLAotICAgICAgICBDRlNUUigiaW1hZ2Uv
aWVmIiksCi0gICAgICAgIENGU1RSKCJtb2RlbC9pZ2VzIiksCi0gICAgICAgIENGU1RSKCJtb2Rl
bC9pZ2VzIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iKSwKLSAg
ICAgICAgQ0ZTVFIoInRleHQvaHRtbCIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC1s
YXRleCIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiksCi0gICAg
ICAgIENGU1RSKCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iKSwKLSAgICAgICAgQ0ZTVFIoImF1
ZGlvL3gtbXBlZ3VybCIpLAotICAgICAgICBDRlNUUigiYXVkaW8veC1tNHAiKSwKLSAgICAgICAg
Q0ZTVFIoImltYWdlL3gtbWFjcGFpbnQiKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gt
dHJvZmYtbWFuIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LXRyb2ZmLW1lIiksCi0g
ICAgICAgIENGU1RSKCJtb2RlbC9tZXNoIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi92
bmQubWlmIiksCi0gICAgICAgIENGU1RSKCJ0ZXh0L2phdmFzY3JpcHQiKSwKLSAgICAgICAgQ0ZT
VFIoInZpZGVvL3gtc2dpLW1vdmllIiksCi0gICAgICAgIENGU1RSKCJhdWRpby9tcGVnIiksCi0g
ICAgICAgIENGU1RSKCJhdWRpby9tcGVnIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi94
LXRyb2ZmLW1zIiksCi0gICAgICAgIENGU1RSKCJtb2RlbC9tZXNoIiksCi0gICAgICAgIENGU1RS
KCJ2aWRlby92bmQubXBlZ3VybCIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC1uZXRj
ZGYiKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL29kYSIpLAotICAgICAgICBDRlNUUigi
aW1hZ2UveC1wb3J0YWJsZS1iaXRtYXAiKSwKLSAgICAgICAgQ0ZTVFIoImltYWdlL3gtcGN4Iiks
Ci0gICAgICAgIENGU1RSKCJjaGVtaWNhbC94LXBkYiIpLAotICAgICAgICBDRlNUUigiaW1hZ2Uv
eC1wb3J0YWJsZS1ncmF5bWFwIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LWNoZXNz
LXBnbiIpLAotICAgICAgICBDRlNUUigiYXVkaW8vc2NwbHMiKSwKLSAgICAgICAgQ0ZTVFIoImlt
YWdlL3gtcG9ydGFibGUtYW55bWFwIiksCi0gICAgICAgIENGU1RSKCJpbWFnZS94LW1hY3BhaW50
IiksCi0gICAgICAgIENGU1RSKCJpbWFnZS94LW1hY3BhaW50IiksCi0gICAgICAgIENGU1RSKCJp
bWFnZS94LXBvcnRhYmxlLXBpeG1hcCIpLAotICAgICAgICBDRlNUUigiaW1hZ2UveC1jbXUtcmFz
dGVyIiksCi0gICAgICAgIENGU1RSKCJpbWFnZS94LXJnYiIpLAotICAgICAgICBDRlNUUigiYXBw
bGljYXRpb24veC10cm9mZiIpLAotICAgICAgICBDRlNUUigiYXVkaW8veC1wbi1yZWFsYXVkaW8t
cGx1Z2luIiksCi0gICAgICAgIENGU1RSKCJ0ZXh0L3JpY2h0ZXh0IiksCi0gICAgICAgIENGU1RS
KCJ0ZXh0L3NnbWwiKSwKLSAgICAgICAgQ0ZTVFIoInRleHQvc2dtbCIpLAotICAgICAgICBDRlNU
UigiYXBwbGljYXRpb24veC1zaCIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC1zaGFy
IiksCi0gICAgICAgIENGU1RSKCJtb2RlbC9tZXNoIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNh
dGlvbi94LWtvYW4iKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gta29hbiIpLAotICAg
ICAgICBDRlNUUigiYXBwbGljYXRpb24veC1rb2FuIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNh
dGlvbi94LWtvYW4iKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gtZGlza2NvcHkiKSwK
LSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIpLAotICAgICAgICBDRlNU
UigiYXBwbGljYXRpb24veC1mdXR1cmVzcGxhc2giKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0
aW9uL3gtd2Fpcy1zb3VyY2UiKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gtc3Y0Y3Bp
byIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC1zdjRjcmMiKSwKLSAgICAgICAgQ0ZT
VFIoImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoIiksCi0gICAgICAgIENGU1RSKCJhcHBs
aWNhdGlvbi94LXRyb2ZmIiksCi0gICAgICAgIENGU1RSKCJpbWFnZS94LXRhcmdhIiksCi0gICAg
ICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LXRjbCIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRp
b24veC10ZXgiKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gtdGV4aW5mbyIpLAotICAg
ICAgICBDRlNUUigiYXBwbGljYXRpb24veC10ZXhpbmZvIiksCi0gICAgICAgIENGU1RSKCJhcHBs
aWNhdGlvbi94LWd6aXAiKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gtYml0dG9ycmVu
dCIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC10cm9mZiIpLAotICAgICAgICBDRlNU
UigidGV4dC90YWItc2VwYXJhdGVkLXZhbHVlcyIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRp
b24veC11c3RhciIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC1jZGxpbmsiKSwKLSAg
ICAgICAgQ0ZTVFIoIm1vZGVsL3ZybWwiKSwKLSAgICAgICAgQ0ZTVFIoImltYWdlL3ZuZC53YXAu
d2JtcCIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24vdm5kLndhcC53YnhtbCIpLAotICAg
ICAgICBDRlNUUigiYXBwbGljYXRpb24veC13ZWJhcmNoaXZlIiksCi0gICAgICAgIENGU1RSKCJ2
aWRlby93ZWJtIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LW1zLXdtZCIpLAotICAg
ICAgICBDRlNUUigidGV4dC92bmQud2FwLndtbCIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRp
b24vdm5kLndhcC53bWxjIiksCi0gICAgICAgIENGU1RSKCJ0ZXh0L3ZuZC53YXAud21sc2NyaXB0
IiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi92bmQud2FwLndtbHNjcmlwdGMiKSwKLSAg
ICAgICAgQ0ZTVFIoIm1vZGVsL3ZybWwiKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3Zu
ZC5hZG9iZS54ZHAreG1sIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi92bmQuYWRvYmUu
eGZkK3htbCIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24vdm5kLmFkb2JlLnhmZGYiKSwK
LSAgICAgICAgQ0ZTVFIoImltYWdlL3gteHBpeG1hcCIpLAotICAgICAgICBDRlNUUigidGV4dC94
bWwiKSwKLSAgICAgICAgQ0ZTVFIoImltYWdlL3gteHdpbmRvd2R1bXAiKSwKLSAgICAgICAgQ0ZT
VFIoImNoZW1pY2FsL3gteHl6IiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LWNvbXBy
ZXNzIikKLSAgICB9OwordGVtcGxhdGU8dHlwZW5hbWUgVD4gTmV2ZXJEZXN0cm95ZWQoVCYmKSAt
PiBOZXZlckRlc3Ryb3llZDxULCBBbnlUaHJlYWRzQWNjZXNzVHJhaXRzPjsKIAotICAgIEFTU0VS
VChzaXplb2Yoa2V5cykgPT0gc2l6ZW9mKHZhbHVlcykpOwotICAgIHJldHVybiBhZG9wdENGKENG
RGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3Qgdm9pZCoqKSZrZXlz
LCAoY29uc3Qgdm9pZCoqKSZ2YWx1ZXMsIHNpemVvZihrZXlzKSAvIHNpemVvZihDRlN0cmluZ1Jl
ZiksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFs
dWVDYWxsQmFja3MpKTsKIH0KIAotdm9pZCBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KENGVVJM
UmVzcG9uc2VSZWYgY2ZSZXNwb25zZSwgYm9vbCBpc01haW5SZXNvdXJjZUxvYWQpCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKKyNpZiBQTEFURk9STShNQUMpCisKK3ZvaWQgYWRqdXN0TUlNRVR5cGVJ
Zk5lY2Vzc2FyeShDRlVSTFJlc3BvbnNlUmVmIHJlc3BvbnNlLCBib29sIC8qaXNNYWluUmVzb3Vy
Y2VMb2FkKi8pCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGlzTWFpblJlc291cmNlTG9hZCk7Ci0gICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiByZXN1bHQgPSBDRlVSTFJlc3BvbnNlR2V0TUlNRVR5cGUo
Y2ZSZXNwb25zZSk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBvcmlnaW5hbFJlc3VsdCA9
IHJlc3VsdDsKKyAgICBpZiAoQ0ZVUkxSZXNwb25zZUdldE1JTUVUeXBlKHJlc3BvbnNlKSkKKyAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgYXV0byB1cmwgPSBD
RlVSTFJlc3BvbnNlR2V0VVJMKGNmUmVzcG9uc2UpOwotICAgICAgICBpZiAoWyhfX2JyaWRnZSBO
U1VSTCAqKXVybCBpc0ZpbGVVUkxdKSB7Ci0gICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IGV4dGVuc2lvbiA9IGFkb3B0Q0YoQ0ZVUkxDb3B5UGF0aEV4dGVuc2lvbih1cmwpKTsKLSAg
ICAgICAgICAgIGlmIChleHRlbnNpb24pIHsKLSAgICAgICAgICAgICAgICAvLyA8cmRhcjovL3By
b2JsZW0vNzAwNzM4OT4gQ29yZVR5cGVzIFVUSSBtYXAgaXMgbWlzc2luZyAxMDArIGZpbGUgZXh0
ZW5zaW9ucyB0aGF0IEdhdGVLZWVwZXIga25ldyBhYm91dAotICAgICAgICAgICAgICAgIC8vIFdo
ZW4gdGhpcyByYWRhciBpcyByZXNvbHZlZCwgd2UgY2FuIHJlbW92ZSB0aGlzIGZpbGU6Ly8gdXJs
IHNwZWNpZmljIGNvZGUuCi0gICAgICAgICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJl
dGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+PiBleHRlbnNpb25NYXAgPSBjcmVhdGVFeHRlbnNpb25U
b01JTUVUeXBlTWFwKCk7Ci0gICAgICAgICAgICAgICAgYXV0byBtdXRhYmxlRXh0ZW5zaW9uID0g
YWRvcHRDRihDRlN0cmluZ0NyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIDAs
IGV4dGVuc2lvbi5nZXQoKSkpOwotICAgICAgICAgICAgICAgIENGU3RyaW5nTG93ZXJjYXNlKG11
dGFibGVFeHRlbnNpb24uZ2V0KCksIE5VTEwpOwotICAgICAgICAgICAgICAgIGV4dGVuc2lvbiA9
IFdURk1vdmUobXV0YWJsZUV4dGVuc2lvbik7Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gKENG
U3RyaW5nUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGV4dGVuc2lvbk1hcC5nZXQoKS5nZXQoKSwg
ZXh0ZW5zaW9uLmdldCgpKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAo
IXJlc3VsdCkgewotICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgR2F0ZWtlZXBlci1iYXNl
ZCBtYXAgZG9lc24ndCBoYXZlIGEgTUlNRSB0eXBlLCB3ZSdsbCB0cnkgdG8gZmlndXJlIG91dCB3
aGF0IGl0IHNob3VsZCBiZSBieQotICAgICAgICAgICAgICAgICAgICAvLyBsb29raW5nIHVwIHRo
ZSBmaWxlIGV4dGVuc2lvbiBpbiB0aGUgVVRJIG1hcHMuCi1BTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19CRUdJTgotICAgICAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+
IHV0aSA9IGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRU
YWdDbGFzc0ZpbGVuYW1lRXh0ZW5zaW9uLCBleHRlbnNpb24uZ2V0KCksIDApKTsKLUFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotICAgICAgICAgICAgICAgICAgICBTdHJpbmcgTUlN
RVR5cGUgPSBNSU1FVHlwZUZyb21VVElUcmVlKHV0aS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmICghTUlNRVR5cGUuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmVz
dWx0ID0gTUlNRVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHR5cGU7CisK
KyAgICBpZiAoYXV0byBleHRlbnNpb24gPSBmaWxlUGF0aEV4dGVuc2lvbihyZXNwb25zZSkpIHsK
KyAgICAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzcwMDczODk+IENvcmVUeXBlcyBVVEkgbWFwIGlz
IG1pc3NpbmcgMTAwKyBmaWxlIGV4dGVuc2lvbnMgdGhhdCBHYXRlS2VlcGVyIGtuZXcgYWJvdXQK
KyAgICAgICAgLy8gT25jZSBVVFR5cGUgbWF0Y2hlcyBvbmUgb2YgdGhlc2UgbWFwcGluZ3Mgb24g
YWxsIHZlcnNpb25zIG9mIG1hY09TIHdlIHN1cHBvcnQsIHdlIGNhbiByZW1vdmUgdGhhdCBwYWly
LgorICAgICAgICAvLyBBbHRlcm5hdGl2ZWx5LCB3ZSBjb3VsZCByZW1vdmUgYW55IHBhaXJzIHRo
YXQgd2UgZGV0ZXJtaW5lIHdlIG5vIGxvbmdlciBuZWVkLgorICAgICAgICAvLyBBbmQgdGhlbiBy
ZW1vdmUgdGhpcyBjb2RlIGVudGlyZWx5IG9uY2UgdGhleSBhcmUgYWxsIGdvbmUuCisgICAgICAg
IHN0YXRpYyBjb25zdGV4cHIgc3RkOjpwYWlyPENvbXBhcmFibGVMZXR0ZXJzTGl0ZXJhbCwgTlNT
dHJpbmcgKj4gZXh0ZW5zaW9uUGFpcnNbXSA9IHsKKyAgICAgICAgICAgIHsgImFpIiwgQCJhcHBs
aWNhdGlvbi9wb3N0c2NyaXB0IiB9LAorICAgICAgICAgICAgeyAiYXNjIiwgQCJ0ZXh0L3BsYWlu
IiB9LAorICAgICAgICAgICAgeyAiYmNwaW8iLCBAImFwcGxpY2F0aW9uL3gtYmNwaW8iIH0sCisg
ICAgICAgICAgICB7ICJibXAiLCBAImltYWdlL2JtcCIgfSwKKyAgICAgICAgICAgIHsgImNkZiIs
IEAiYXBwbGljYXRpb24veC1uZXRjZGYiIH0sCisgICAgICAgICAgICB7ICJjbGFzcyIsIEAiYXBw
bGljYXRpb24vb2N0ZXQtc3RyZWFtIiB9LAorICAgICAgICAgICAgeyAiY3BneiIsIEAiYXBwbGlj
YXRpb24veC1nemlwIiB9LAorICAgICAgICAgICAgeyAiY3BpbyIsIEAiYXBwbGljYXRpb24veC1j
cGlvIiB9LAorICAgICAgICAgICAgeyAiY3B0IiwgQCJhcHBsaWNhdGlvbi9tYWMtY29tcGFjdHBy
byIgfSwKKyAgICAgICAgICAgIHsgImNzaCIsIEAiYXBwbGljYXRpb24veC1jc2giIH0sCisgICAg
ICAgICAgICB7ICJjc3MiLCBAInRleHQvY3NzIiB9LAorICAgICAgICAgICAgeyAiZGNyIiwgQCJh
cHBsaWNhdGlvbi94LWRpcmVjdG9yIiB9LAorICAgICAgICAgICAgeyAiZGlyIiwgQCJhcHBsaWNh
dGlvbi94LWRpcmVjdG9yIiB9LAorICAgICAgICAgICAgeyAiZG1nIiwgQCJhcHBsaWNhdGlvbi94
LWRpc2tjb3B5IiB9LAorICAgICAgICAgICAgeyAiZG1zIiwgQCJhcHBsaWNhdGlvbi9vY3RldC1z
dHJlYW0iIH0sCisgICAgICAgICAgICB7ICJkdmkiLCBAImFwcGxpY2F0aW9uL3gtZHZpIiB9LAor
ICAgICAgICAgICAgeyAiZHhyIiwgQCJhcHBsaWNhdGlvbi94LWRpcmVjdG9yIiB9LAorICAgICAg
ICAgICAgeyAiZXBzIiwgQCJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0IiB9LAorICAgICAgICAgICAg
eyAiZXR4IiwgQCJ0ZXh0L3gtc2V0ZXh0IiB9LAorICAgICAgICAgICAgeyAiZXoiLCBAImFwcGxp
Y2F0aW9uL2FuZHJldy1pbnNldCIgfSwKKyAgICAgICAgICAgIHsgImZkZiIsIEAiYXBwbGljYXRp
b24vdm5kLmZkZiIgfSwKKyAgICAgICAgICAgIHsgImZsYSIsIEAiYXBwbGljYXRpb24vb2N0ZXQt
c3RyZWFtIiB9LAorICAgICAgICAgICAgeyAiZnAiLCBAImFwcGxpY2F0aW9uL3gtZmlsZW1ha2Vy
IiB9LAorICAgICAgICAgICAgeyAiZnAyIiwgQCJhcHBsaWNhdGlvbi94LWZpbGVtYWtlciIgfSwK
KyAgICAgICAgICAgIHsgImZwMyIsIEAiYXBwbGljYXRpb24veC1maWxlbWFrZXIiIH0sCisgICAg
ICAgICAgICB7ICJmcDQiLCBAImFwcGxpY2F0aW9uL3gtZmlsZW1ha2VyIiB9LAorICAgICAgICAg
ICAgeyAiZnA1IiwgQCJhcHBsaWNhdGlvbi94LWZpbGVtYWtlciIgfSwKKyAgICAgICAgICAgIHsg
ImZwNiIsIEAiYXBwbGljYXRpb24veC1maWxlbWFrZXIiIH0sCisgICAgICAgICAgICB7ICJoZGYi
LCBAImFwcGxpY2F0aW9uL3gtaGRmIiB9LAorICAgICAgICAgICAgeyAiaWNlIiwgQCJ4LWNvbmZl
cmVuY2UveC1jb29sdGFsayIgfSwKKyAgICAgICAgICAgIHsgImljbyIsIEAiaW1hZ2UveC1pY29u
IiB9LAorICAgICAgICAgICAgeyAiaWNzIiwgQCJ0ZXh0L2NhbGVuZGFyIiB9LAorICAgICAgICAg
ICAgeyAiaWVmIiwgQCJpbWFnZS9pZWYiIH0sCisgICAgICAgICAgICB7ICJpZ2VzIiwgQCJtb2Rl
bC9pZ2VzIiB9LAorICAgICAgICAgICAgeyAiaWdzIiwgQCJtb2RlbC9pZ2VzIiB9LAorICAgICAg
ICAgICAgeyAiaXNvIiwgQCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iIH0sCisgICAgICAgICAg
ICB7ICJqaHRtbCIsIEAidGV4dC9odG1sIiB9LAorICAgICAgICAgICAgeyAibGF0ZXgiLCBAImFw
cGxpY2F0aW9uL3gtbGF0ZXgiIH0sCisgICAgICAgICAgICB7ICJsaGEiLCBAImFwcGxpY2F0aW9u
L29jdGV0LXN0cmVhbSIgfSwKKyAgICAgICAgICAgIHsgImx6aCIsIEAiYXBwbGljYXRpb24vb2N0
ZXQtc3RyZWFtIiB9LAorICAgICAgICAgICAgeyAibTN1IiwgQCJhdWRpby94LW1wZWd1cmwiIH0s
CisgICAgICAgICAgICB7ICJtNHAiLCBAImF1ZGlvL3gtbTRwIiB9LAorICAgICAgICAgICAgeyAi
bWFjIiwgQCJpbWFnZS94LW1hY3BhaW50IiB9LAorICAgICAgICAgICAgeyAibWFuIiwgQCJhcHBs
aWNhdGlvbi94LXRyb2ZmLW1hbiIgfSwKKyAgICAgICAgICAgIHsgIm1lIiwgQCJhcHBsaWNhdGlv
bi94LXRyb2ZmLW1lIiB9LAorICAgICAgICAgICAgeyAibWVzaCIsIEAibW9kZWwvbWVzaCIgfSwK
KyAgICAgICAgICAgIHsgIm1pZiIsIEAiYXBwbGljYXRpb24vdm5kLm1pZiIgfSwKKyAgICAgICAg
ICAgIHsgIm1qcyIsIEAidGV4dC9qYXZhc2NyaXB0IiB9LAorICAgICAgICAgICAgeyAibW92aWUi
LCBAInZpZGVvL3gtc2dpLW1vdmllIiB9LAorICAgICAgICAgICAgeyAibXAyIiwgQCJhdWRpby9t
cGVnIiB9LAorICAgICAgICAgICAgeyAibXBnYSIsIEAiYXVkaW8vbXBlZyIgfSwKKyAgICAgICAg
ICAgIHsgIm1zIiwgQCJhcHBsaWNhdGlvbi94LXRyb2ZmLW1zIiB9LAorICAgICAgICAgICAgeyAi
bXNoIiwgQCJtb2RlbC9tZXNoIiB9LAorICAgICAgICAgICAgeyAibXh1IiwgQCJ2aWRlby92bmQu
bXBlZ3VybCIgfSwKKyAgICAgICAgICAgIHsgIm5jIiwgQCJhcHBsaWNhdGlvbi94LW5ldGNkZiIg
fSwKKyAgICAgICAgICAgIHsgIm9kYSIsIEAiYXBwbGljYXRpb24vb2RhIiB9LAorICAgICAgICAg
ICAgeyAicGJtIiwgQCJpbWFnZS94LXBvcnRhYmxlLWJpdG1hcCIgfSwKKyAgICAgICAgICAgIHsg
InBjeCIsIEAiaW1hZ2UveC1wY3giIH0sCisgICAgICAgICAgICB7ICJwZGIiLCBAImNoZW1pY2Fs
L3gtcGRiIiB9LAorICAgICAgICAgICAgeyAicGdtIiwgQCJpbWFnZS94LXBvcnRhYmxlLWdyYXlt
YXAiIH0sCisgICAgICAgICAgICB7ICJwZ24iLCBAImFwcGxpY2F0aW9uL3gtY2hlc3MtcGduIiB9
LAorICAgICAgICAgICAgeyAicGxzIiwgQCJhdWRpby9zY3BscyIgfSwKKyAgICAgICAgICAgIHsg
InBubSIsIEAiaW1hZ2UveC1wb3J0YWJsZS1hbnltYXAiIH0sCisgICAgICAgICAgICB7ICJwbnQi
LCBAImltYWdlL3gtbWFjcGFpbnQiIH0sCisgICAgICAgICAgICB7ICJwbnRnIiwgQCJpbWFnZS94
LW1hY3BhaW50IiB9LAorICAgICAgICAgICAgeyAicHBtIiwgQCJpbWFnZS94LXBvcnRhYmxlLXBp
eG1hcCIgfSwKKyAgICAgICAgICAgIHsgInJhcyIsIEAiaW1hZ2UveC1jbXUtcmFzdGVyIiB9LAor
ICAgICAgICAgICAgeyAicmdiIiwgQCJpbWFnZS94LXJnYiIgfSwKKyAgICAgICAgICAgIHsgInJv
ZmYiLCBAImFwcGxpY2F0aW9uL3gtdHJvZmYiIH0sCisgICAgICAgICAgICB7ICJycG0iLCBAImF1
ZGlvL3gtcG4tcmVhbGF1ZGlvLXBsdWdpbiIgfSwKKyAgICAgICAgICAgIHsgInJ0eCIsIEAidGV4
dC9yaWNodGV4dCIgfSwKKyAgICAgICAgICAgIHsgInNnbSIsIEAidGV4dC9zZ21sIiB9LAorICAg
ICAgICAgICAgeyAic2dtbCIsIEAidGV4dC9zZ21sIiB9LAorICAgICAgICAgICAgeyAic2giLCBA
ImFwcGxpY2F0aW9uL3gtc2giIH0sCisgICAgICAgICAgICB7ICJzaGFyIiwgQCJhcHBsaWNhdGlv
bi94LXNoYXIiIH0sCisgICAgICAgICAgICB7ICJzaWxvIiwgQCJtb2RlbC9tZXNoIiB9LAorICAg
ICAgICAgICAgeyAic2tkIiwgQCJhcHBsaWNhdGlvbi94LWtvYW4iIH0sCisgICAgICAgICAgICB7
ICJza20iLCBAImFwcGxpY2F0aW9uL3gta29hbiIgfSwKKyAgICAgICAgICAgIHsgInNrcCIsIEAi
YXBwbGljYXRpb24veC1rb2FuIiB9LAorICAgICAgICAgICAgeyAic2t0IiwgQCJhcHBsaWNhdGlv
bi94LWtvYW4iIH0sCisgICAgICAgICAgICB7ICJzbWkiLCBAImFwcGxpY2F0aW9uL3gtZGlza2Nv
cHkiIH0sCisgICAgICAgICAgICB7ICJzbyIsIEAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiB9
LAorICAgICAgICAgICAgeyAic3BsIiwgQCJhcHBsaWNhdGlvbi94LWZ1dHVyZXNwbGFzaCIgfSwK
KyAgICAgICAgICAgIHsgInNyYyIsIEAiYXBwbGljYXRpb24veC13YWlzLXNvdXJjZSIgfSwKKyAg
ICAgICAgICAgIHsgInN2NGNwaW8iLCBAImFwcGxpY2F0aW9uL3gtc3Y0Y3BpbyIgfSwKKyAgICAg
ICAgICAgIHsgInN2NGNyYyIsIEAiYXBwbGljYXRpb24veC1zdjRjcmMiIH0sCisgICAgICAgICAg
ICB7ICJzd2YiLCBAImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoIiB9LAorICAgICAgICAg
ICAgeyAidCIsIEAiYXBwbGljYXRpb24veC10cm9mZiIgfSwKKyAgICAgICAgICAgIHsgInRhcmdh
IiwgQCJpbWFnZS94LXRhcmdhIiB9LAorICAgICAgICAgICAgeyAidGNsIiwgQCJhcHBsaWNhdGlv
bi94LXRjbCIgfSwKKyAgICAgICAgICAgIHsgInRleCIsIEAiYXBwbGljYXRpb24veC10ZXgiIH0s
CisgICAgICAgICAgICB7ICJ0ZXhpIiwgQCJhcHBsaWNhdGlvbi94LXRleGluZm8iIH0sCisgICAg
ICAgICAgICB7ICJ0ZXhpbmZvIiwgQCJhcHBsaWNhdGlvbi94LXRleGluZm8iIH0sCisgICAgICAg
ICAgICB7ICJ0Z3oiLCBAImFwcGxpY2F0aW9uL3gtZ3ppcCIgfSwKKyAgICAgICAgICAgIHsgInRv
cnJlbnQiLCBAImFwcGxpY2F0aW9uL3gtYml0dG9ycmVudCIgfSwKKyAgICAgICAgICAgIHsgInRy
IiwgQCJhcHBsaWNhdGlvbi94LXRyb2ZmIiB9LAorICAgICAgICAgICAgeyAidHN2IiwgQCJ0ZXh0
L3RhYi1zZXBhcmF0ZWQtdmFsdWVzIiB9LAorICAgICAgICAgICAgeyAidXN0YXIiLCBAImFwcGxp
Y2F0aW9uL3gtdXN0YXIiIH0sCisgICAgICAgICAgICB7ICJ2Y2QiLCBAImFwcGxpY2F0aW9uL3gt
Y2RsaW5rIiB9LAorICAgICAgICAgICAgeyAidnJtbCIsIEAibW9kZWwvdnJtbCIgfSwKKyAgICAg
ICAgICAgIHsgIndibXAiLCBAImltYWdlL3ZuZC53YXAud2JtcCIgfSwKKyAgICAgICAgICAgIHsg
IndieG1sIiwgQCJhcHBsaWNhdGlvbi92bmQud2FwLndieG1sIiB9LAorICAgICAgICAgICAgeyAi
d2ViYXJjaGl2ZSIsIEAiYXBwbGljYXRpb24veC13ZWJhcmNoaXZlIiB9LAorICAgICAgICAgICAg
eyAid2VibSIsIEAidmlkZW8vd2VibSIgfSwKKyAgICAgICAgICAgIHsgIndtZCIsIEAiYXBwbGlj
YXRpb24veC1tcy13bWQiIH0sCisgICAgICAgICAgICB7ICJ3bWwiLCBAInRleHQvdm5kLndhcC53
bWwiIH0sCisgICAgICAgICAgICB7ICJ3bWxjIiwgQCJhcHBsaWNhdGlvbi92bmQud2FwLndtbGMi
IH0sCisgICAgICAgICAgICB7ICJ3bWxzIiwgQCJ0ZXh0L3ZuZC53YXAud21sc2NyaXB0IiB9LAor
ICAgICAgICAgICAgeyAid21sc2MiLCBAImFwcGxpY2F0aW9uL3ZuZC53YXAud21sc2NyaXB0YyIg
fSwKKyAgICAgICAgICAgIHsgIndybCIsIEAibW9kZWwvdnJtbCIgfSwKKyAgICAgICAgICAgIHsg
InhkcCIsIEAiYXBwbGljYXRpb24vdm5kLmFkb2JlLnhkcCt4bWwiIH0sCisgICAgICAgICAgICB7
ICJ4ZmQiLCBAImFwcGxpY2F0aW9uL3ZuZC5hZG9iZS54ZmQreG1sIiB9LAorICAgICAgICAgICAg
eyAieGZkZiIsIEAiYXBwbGljYXRpb24vdm5kLmFkb2JlLnhmZGYiIH0sCisgICAgICAgICAgICB7
ICJ4cG0iLCBAImltYWdlL3gteHBpeG1hcCIgfSwKKyAgICAgICAgICAgIHsgInhzbCIsIEAidGV4
dC94bWwiIH0sCisgICAgICAgICAgICB7ICJ4d2QiLCBAImltYWdlL3gteHdpbmRvd2R1bXAiIH0s
CisgICAgICAgICAgICB7ICJ4eXoiLCBAImNoZW1pY2FsL3gteHl6IiB9LAorICAgICAgICAgICAg
eyAieiIsIEAiYXBwbGljYXRpb24veC1jb21wcmVzcyIgfSwKKyAgICAgICAgfTsKKyAgICAgICAg
c3RhdGljIGNvbnN0ZXhwciBTb3J0ZWRBcnJheU1hcCBleHRlbnNpb25NYXAgeyBleHRlbnNpb25Q
YWlycyB9OworICAgICAgICB0eXBlID0gKF9fYnJpZGdlIENGU3RyaW5nUmVmKWV4dGVuc2lvbk1h
cC5nZXQoU3RyaW5nIHsgZXh0ZW5zaW9uLmdldCgpIH0pOworICAgICAgICBpZiAoIXR5cGUpCisg
ICAgICAgICAgICB0eXBlID0gcHJlZmVycmVkTUlNRVR5cGVGb3JGaWxlRXh0ZW5zaW9uRnJvbVVU
VHlwZShleHRlbnNpb24uZ2V0KCkpOwogICAgIH0KLSAgICAKLSAgICBpZiAoIXJlc3VsdCkgewot
ICAgICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYgZGVmYXVsdE1JTUVUeXBlU3RyaW5nID0gV2ViQ29y
ZTo6ZGVmYXVsdE1JTUVUeXBlKCkuY3JlYXRlQ0ZTdHJpbmcoKS5sZWFrUmVmKCk7Ci0gICAgICAg
IHJlc3VsdCA9IGRlZmF1bHRNSU1FVHlwZVN0cmluZzsKKworICAgIGlmICghdHlwZSkgeworICAg
ICAgICBzdGF0aWMgYXV0byBkZWZhdWx0VHlwZSA9IG1ha2VOZXZlckRlc3Ryb3llZChXZWJDb3Jl
OjpkZWZhdWx0TUlNRVR5cGUoKS5jcmVhdGVDRlN0cmluZygpKTsKKyAgICAgICAgdHlwZSA9IGRl
ZmF1bHRUeXBlOwogICAgIH0KIAotICAgIGlmIChyZXN1bHQgIT0gb3JpZ2luYWxSZXN1bHQpCi0g
ICAgICAgIENGVVJMUmVzcG9uc2VTZXRNSU1FVHlwZShjZlJlc3BvbnNlLCByZXN1bHQuZ2V0KCkp
OworICAgIENGVVJMUmVzcG9uc2VTZXRNSU1FVHlwZShyZXNwb25zZSwgdHlwZS5nZXQoKSk7CiB9
CisKICNlbmRpZgogCiBOU1VSTFJlc3BvbnNlICpzeW50aGVzaXplUmVkaXJlY3RSZXNwb25zZUlm
TmVjZXNzYXJ5KE5TVVJMUmVxdWVzdCAqY3VycmVudFJlcXVlc3QsIE5TVVJMUmVxdWVzdCAqbmV3
UmVxdWVzdCwgTlNVUkxSZXNwb25zZSAqcmVkaXJlY3RSZXNwb25zZSkKQEAgLTM0NSw0ICsyMDUs
MTkgQEAgTlNVUkxSZXNwb25zZSAqc3ludGhlc2l6ZVJlZGlyZWN0UmVzcG9uc2VJZk5lY2Vzc2Fy
eShOU1VSTFJlcXVlc3QgKmN1cnJlbnRSZXF1ZXMKICAgICByZXR1cm4gcmV0YWluUHRyKFJlc291
cmNlUmVzcG9uc2U6OnN5bnRoZXRpY1JlZGlyZWN0UmVzcG9uc2UoVVJMKFtjdXJyZW50UmVxdWVz
dCBVUkxdKSwgVVJMKFtuZXdSZXF1ZXN0IFVSTF0pKS5uc1VSTFJlc3BvbnNlKCkpLmF1dG9yZWxl
YXNlKCk7CiB9CiAKK1JldGFpblB0cjxDRlN0cmluZ1JlZj4gZmlsZVBhdGhFeHRlbnNpb24oQ0ZV
UkxSZXNwb25zZVJlZiByZXNwb25zZSkKK3sKKyAgICBhdXRvIHJlc3BvbnNlVVJMID0gQ0ZVUkxS
ZXNwb25zZUdldFVSTChyZXNwb25zZSk7CisgICAgaWYgKCFbKF9fYnJpZGdlIE5TVVJMICopcmVz
cG9uc2VVUkwgaXNGaWxlVVJMXSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJu
IGFkb3B0Q0YoQ0ZVUkxDb3B5UGF0aEV4dGVuc2lvbihyZXNwb25zZVVSTCkpOworfQorCitSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IHByZWZlcnJlZE1JTUVUeXBlRm9yRmlsZUV4dGVuc2lvbkZyb21V
VFR5cGUoQ0ZTdHJpbmdSZWYgZXh0ZW5zaW9uKQoreworQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJB
VElPTlNfQkVHSU4KKyAgICByZXR1cm4gbWltZVR5cGVGcm9tVVRJVHJlZShhZG9wdENGKFVUVHlw
ZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NGaWxlbmFtZUV4dGVu
c2lvbiwgZXh0ZW5zaW9uLCBudWxscHRyKSkuZ2V0KCkpOworQUxMT1dfREVQUkVDQVRFRF9ERUNM
QVJBVElPTlNfRU5ECit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
Y29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9j
b2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQubW0KaW5kZXggNWE5YmJjNzE1YzllNWM4NDNhYWYy
YjkxNWRkODhmNzJlZmExOWVlMS4uYmEyZjI5NTViZDYxNWRmZDVlMTQzZjc2NDhmMmUwMGVkYmU5
YTlhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJBcmNoaXZl
RHVtcFN1cHBvcnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJBcmNo
aXZlRHVtcFN1cHBvcnQubW0KQEAgLTE1Miw0MCArMTUyLDQwIEBAIHN0YXRpYyB2b2lkIG5vcm1h
bGl6ZVdlYlJlc291cmNlVVJMKENGTXV0YWJsZVN0cmluZ1JlZiB3ZWJSZXNvdXJjZVVSTCkKIAog
c3RhdGljIHZvaWQgY29udmVydFdlYlJlc291cmNlUmVzcG9uc2VUb0RpY3Rpb25hcnkoQ0ZNdXRh
YmxlRGljdGlvbmFyeVJlZiBwcm9wZXJ0eUxpc3QpCiB7Ci0gICAgQ0ZEYXRhUmVmIHJlc3BvbnNl
RGF0YSA9IHN0YXRpY19jYXN0PENGRGF0YVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvcGVy
dHlMaXN0LCBDRlNUUigiV2ViUmVzb3VyY2VSZXNwb25zZSIpKSk7IC8vIFdlYlJlc291cmNlUmVz
cG9uc2VLZXkgaW4gV2ViUmVzb3VyY2UubQotICAgIGlmIChDRkdldFR5cGVJRChyZXNwb25zZURh
dGEpICE9IENGRGF0YUdldFR5cGVJRCgpKQorICAgIGF1dG8gcmVzcG9uc2VEYXRhID0gZHluYW1p
Y19jZl9jYXN0PENGRGF0YVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvcGVydHlMaXN0LCBD
RlNUUigiV2ViUmVzb3VyY2VSZXNwb25zZSIpKSk7IC8vIFdlYlJlc291cmNlUmVzcG9uc2VLZXkg
aW4gV2ViUmVzb3VyY2UubQorICAgIGlmICghcmVzcG9uc2VEYXRhKQogICAgICAgICByZXR1cm47
CiAKICAgICBhdXRvIHJlc3BvbnNlID0gY3JlYXRlQ0ZVUkxSZXNwb25zZUZyb21SZXNwb25zZURh
dGEocmVzcG9uc2VEYXRhKTsKICAgICBpZiAoIXJlc3BvbnNlKQogICAgICAgICByZXR1cm47CiAK
LSAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gcmVzcG9uc2VEaWN0aW9uYXJ5
ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFs
dWVDYWxsQmFja3MpKTsKKyAgICBhdXRvIHJlc3BvbnNlRGljdGlvbmFyeSA9IGFkb3B0Q0YoQ0ZE
aWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAma0NGVHlwZURp
Y3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7
CiAKLSAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlU3RyaW5nUmVmPiB1cmxTdHJpbmcgPSBhZG9wdENG
KENGU3RyaW5nQ3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgQ0ZVUkxH
ZXRTdHJpbmcoQ0ZVUkxSZXNwb25zZUdldFVSTChyZXNwb25zZS5nZXQoKSkpKSk7CisgICAgYXV0
byB1cmxTdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgMCwgQ0ZVUkxHZXRTdHJpbmcoQ0ZVUkxSZXNwb25zZUdldFVSTChyZXNwb25z
ZS5nZXQoKSkpKSk7CiAgICAgbm9ybWFsaXplV2ViUmVzb3VyY2VVUkwodXJsU3RyaW5nLmdldCgp
KTsKICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShyZXNwb25zZURpY3Rpb25hcnkuZ2V0KCksIENG
U1RSKCJVUkwiKSwgdXJsU3RyaW5nLmdldCgpKTsKIAotICAgIFJldGFpblB0cjxDRk11dGFibGVT
dHJpbmdSZWY+IG1pbWVUeXBlU3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZU11dGFibGVD
b3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIENGVVJMUmVzcG9uc2VHZXRNSU1FVHlwZShyZXNw
b25zZS5nZXQoKSkpKTsKKyAgICBhdXRvIG1pbWVUeXBlU3RyaW5nID0gYWRvcHRDRihDRlN0cmlu
Z0NyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIENGVVJMUmVzcG9uc2VH
ZXRNSU1FVHlwZShyZXNwb25zZS5nZXQoKSkpKTsKICAgICBjb252ZXJ0TUlNRVR5cGUobWltZVR5
cGVTdHJpbmcuZ2V0KCkpOwogICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHJlc3BvbnNlRGljdGlv
bmFyeS5nZXQoKSwgQ0ZTVFIoIk1JTUVUeXBlIiksIG1pbWVUeXBlU3RyaW5nLmdldCgpKTsKIAot
ICAgIENGU3RyaW5nUmVmIHRleHRFbmNvZGluZ05hbWUgPSBDRlVSTFJlc3BvbnNlR2V0VGV4dEVu
Y29kaW5nTmFtZShyZXNwb25zZS5nZXQoKSk7CisgICAgYXV0byB0ZXh0RW5jb2RpbmdOYW1lID0g
Q0ZVUkxSZXNwb25zZUdldFRleHRFbmNvZGluZ05hbWUocmVzcG9uc2UuZ2V0KCkpOwogICAgIGlm
ICh0ZXh0RW5jb2RpbmdOYW1lKQogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShyZXNwb25z
ZURpY3Rpb25hcnkuZ2V0KCksIENGU1RSKCJ0ZXh0RW5jb2RpbmdOYW1lIiksIHRleHRFbmNvZGlu
Z05hbWUpOwogCiAgICAgU0ludDY0IGV4cGVjdGVkQ29udGVudExlbmd0aCA9IENGVVJMUmVzcG9u
c2VHZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgocmVzcG9uc2UuZ2V0KCkpOwotICAgIFJldGFpblB0
cjxDRk51bWJlclJlZj4gZXhwZWN0ZWRDb250ZW50TGVuZ3RoTnVtYmVyID0gYWRvcHRDRihDRk51
bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTSW50NjRUeXBlLCAmZXhw
ZWN0ZWRDb250ZW50TGVuZ3RoKSk7CisgICAgYXV0byBleHBlY3RlZENvbnRlbnRMZW5ndGhOdW1i
ZXIgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJl
clNJbnQ2NFR5cGUsICZleHBlY3RlZENvbnRlbnRMZW5ndGgpKTsKICAgICBDRkRpY3Rpb25hcnlT
ZXRWYWx1ZShyZXNwb25zZURpY3Rpb25hcnkuZ2V0KCksIENGU1RSKCJleHBlY3RlZENvbnRlbnRM
ZW5ndGgiKSwgZXhwZWN0ZWRDb250ZW50TGVuZ3RoTnVtYmVyLmdldCgpKTsKIAogICAgIGlmIChD
RkhUVFBNZXNzYWdlUmVmIGh0dHBNZXNzYWdlID0gQ0ZVUkxSZXNwb25zZUdldEhUVFBSZXNwb25z
ZShyZXNwb25zZS5nZXQoKSkpIHsKLSAgICAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4g
YWxsSGVhZGVycyA9IGFkb3B0Q0YoQ0ZIVFRQTWVzc2FnZUNvcHlBbGxIZWFkZXJGaWVsZHMoaHR0
cE1lc3NhZ2UpKTsKLSAgICAgICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rpb25hcnlSZWY+IGFs
bEhlYWRlckZpZWxkcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZUNvcHkoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgMCwgYWxsSGVhZGVycy5nZXQoKSkpOworICAgICAgICBhdXRvIGFs
bEhlYWRlcnMgPSBhZG9wdENGKENGSFRUUE1lc3NhZ2VDb3B5QWxsSGVhZGVyRmllbGRzKGh0dHBN
ZXNzYWdlKSk7CisgICAgICAgIGF1dG8gYWxsSGVhZGVyRmllbGRzID0gYWRvcHRDRihDRkRpY3Rp
b25hcnlDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBhbGxIZWFkZXJz
LmdldCgpKSk7CiAgICAgICAgIG5vcm1hbGl6ZUhUVFBSZXNwb25zZUhlYWRlckZpZWxkcyhhbGxI
ZWFkZXJGaWVsZHMuZ2V0KCkpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShyZXNwb25z
ZURpY3Rpb25hcnkuZ2V0KCksIENGU1RSKCJhbGxIZWFkZXJGaWVsZHMiKSwgYWxsSGVhZGVyRmll
bGRzLmdldCgpKTsKIAogICAgICAgICBDRkluZGV4IHN0YXR1c0NvZGUgPSBDRkhUVFBNZXNzYWdl
R2V0UmVzcG9uc2VTdGF0dXNDb2RlKGh0dHBNZXNzYWdlKTsKLSAgICAgICAgUmV0YWluUHRyPENG
TnVtYmVyUmVmPiBzdGF0dXNDb2RlTnVtYmVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJDRkluZGV4VHlwZSwgJnN0YXR1c0NvZGUpKTsKKyAg
ICAgICAgYXV0byBzdGF0dXNDb2RlTnVtYmVyID0gYWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJDRkluZGV4VHlwZSwgJnN0YXR1c0NvZGUpKTsKICAg
ICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocmVzcG9uc2VEaWN0aW9uYXJ5LmdldCgpLCBDRlNU
Uigic3RhdHVzQ29kZSIpLCBzdGF0dXNDb2RlTnVtYmVyLmdldCgpKTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05ldHNjYXBl
UGx1Z2luTW9kdWxlTWFjLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2Fw
ZS9tYWMvTmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW0KaW5kZXggYjNlYWUyOGE2YWFkZDAxOTA2
MjBhNDFhNDQ5MDM4N2Q0NDEzYTNkOS4uZmMzYTE3ZWE5OTY5OWNjMjdmMTAxY2Q3ZTczNTBhNjk5
MjYzM2Q5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2Fw
ZS9tYWMvTmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvUGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW0KQEAgLTMy
LDYgKzMyLDcgQEAKICNpbXBvcnQgIlBsdWdpblNhbmRib3hQcm9maWxlLmgiCiAjaW1wb3J0IDx3
dGYvSGFzaFNldC5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KKyNpbXBvcnQgPHd0Zi9j
Zi9UeXBlQ2FzdHNDRi5oPgogI2ltcG9ydCA8d3RmL3NwaS9jZi9DRkJ1bmRsZVNQSS5oPgogI2lt
cG9ydCA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCkBAIC02Nyw3OCAr
NjgsNjggQEAgc3RhdGljIGJvb2wgZ2V0UGx1Z2luQXJjaGl0ZWN0dXJlKENGQnVuZGxlUmVmIGJ1
bmRsZSwgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luKQogCiBzdGF0aWMgYm9vbCBnZXRQbHVnaW5J
bmZvRnJvbVByb3BlcnR5TGlzdHMoQ0ZCdW5kbGVSZWYgYnVuZGxlLCBQbHVnaW5Nb2R1bGVJbmZv
JiBwbHVnaW4pCiB7Ci0gICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gbWltZVR5cGVzID0g
c3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkJ1bmRsZUdldFZhbHVlRm9ySW5mb0RpY3Rp
b25hcnlLZXkoYnVuZGxlLCBDRlNUUigiV2ViUGx1Z2luTUlNRVR5cGVzIikpKTsKLSAgICBpZiAo
IW1pbWVUeXBlcyB8fCBDRkdldFR5cGVJRChtaW1lVHlwZXMuZ2V0KCkpICE9IENGRGljdGlvbmFy
eUdldFR5cGVJRCgpKQorICAgIFJldGFpblB0ciBtaW1lVHlwZXMgPSBkeW5hbWljX2NmX2Nhc3Q8
Q0ZEaWN0aW9uYXJ5UmVmPihDRkJ1bmRsZUdldFZhbHVlRm9ySW5mb0RpY3Rpb25hcnlLZXkoYnVu
ZGxlLCBDRlNUUigiV2ViUGx1Z2luTUlNRVR5cGVzIikpKTsKKyAgICBpZiAoIW1pbWVUeXBlcykK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gR2V0IHRoZSBwbHVnLWluIG5hbWUuCi0g
ICAgQ0ZTdHJpbmdSZWYgcGx1Z2luTmFtZSA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkJ1
bmRsZUdldFZhbHVlRm9ySW5mb0RpY3Rpb25hcnlLZXkoYnVuZGxlLCBDRlNUUigiV2ViUGx1Z2lu
TmFtZSIpKSk7Ci0gICAgaWYgKHBsdWdpbk5hbWUgJiYgQ0ZHZXRUeXBlSUQocGx1Z2luTmFtZSkg
PT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkKKyAgICBhdXRvIHBsdWdpbk5hbWUgPSBkeW5hbWljX2Nm
X2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQnVuZGxlR2V0VmFsdWVGb3JJbmZvRGljdGlvbmFyeUtleShi
dW5kbGUsIENGU1RSKCJXZWJQbHVnaW5OYW1lIikpKTsKKyAgICBpZiAocGx1Z2luTmFtZSkKICAg
ICAgICAgcGx1Z2luLmluZm8ubmFtZSA9IHBsdWdpbk5hbWU7CiAgICAgCiAgICAgLy8gR2V0IHRo
ZSBwbHVnLWluIGRlc2NyaXB0aW9uLgotICAgIENGU3RyaW5nUmVmIHBsdWdpbkRlc2NyaXB0aW9u
ID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQnVuZGxlR2V0VmFsdWVGb3JJbmZvRGljdGlv
bmFyeUtleShidW5kbGUsIENGU1RSKCJXZWJQbHVnaW5EZXNjcmlwdGlvbiIpKSk7Ci0gICAgaWYg
KHBsdWdpbkRlc2NyaXB0aW9uICYmIENGR2V0VHlwZUlEKHBsdWdpbkRlc2NyaXB0aW9uKSA9PSBD
RlN0cmluZ0dldFR5cGVJRCgpKQorICAgIGF1dG8gcGx1Z2luRGVzY3JpcHRpb24gPSBkeW5hbWlj
X2NmX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQnVuZGxlR2V0VmFsdWVGb3JJbmZvRGljdGlvbmFyeUtl
eShidW5kbGUsIENGU1RSKCJXZWJQbHVnaW5EZXNjcmlwdGlvbiIpKSk7CisgICAgaWYgKHBsdWdp
bkRlc2NyaXB0aW9uKQogICAgICAgICBwbHVnaW4uaW5mby5kZXNjID0gcGx1Z2luRGVzY3JpcHRp
b247CiAgICAgCiAgICAgLy8gR2V0IHRoZSBNSU1FIHR5cGUgbWFwcGluZyBkaWN0aW9uYXJ5Lgog
ICAgIENGSW5kZXggbnVtTWltZVR5cGVzID0gQ0ZEaWN0aW9uYXJ5R2V0Q291bnQobWltZVR5cGVz
LmdldCgpKTsgICAgICAgICAgCi0gICAgVmVjdG9yPENGU3RyaW5nUmVmPiBtaW1lVHlwZXNWZWN0
b3IobnVtTWltZVR5cGVzKTsKLSAgICBWZWN0b3I8Q0ZEaWN0aW9uYXJ5UmVmPiBtaW1lVHlwZUlu
Zm9WZWN0b3IobnVtTWltZVR5cGVzKTsKLSAgICBDRkRpY3Rpb25hcnlHZXRLZXlzQW5kVmFsdWVz
KG1pbWVUeXBlcy5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKio+KG1pbWVUeXBl
c1ZlY3Rvci5kYXRhKCkpLCByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQqKj4obWltZVR5cGVJ
bmZvVmVjdG9yLmRhdGEoKSkpOworICAgIFZlY3RvcjxDRlR5cGVSZWY+IG1pbWVUeXBlc1ZlY3Rv
cihudW1NaW1lVHlwZXMpOworICAgIFZlY3RvcjxDRlR5cGVSZWY+IG1pbWVUeXBlSW5mb1ZlY3Rv
cihudW1NaW1lVHlwZXMpOworICAgIENGRGljdGlvbmFyeUdldEtleXNBbmRWYWx1ZXMobWltZVR5
cGVzLmdldCgpLCBtaW1lVHlwZXNWZWN0b3IuZGF0YSgpLCBtaW1lVHlwZUluZm9WZWN0b3IuZGF0
YSgpKTsKICAgICAKICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBudW1NaW1lVHlwZXM7ICsr
aSkgewogICAgICAgICBXZWJDb3JlOjpNaW1lQ2xhc3NJbmZvIG1pbWVDbGFzc0luZm87CiAgICAg
ICAgIAogICAgICAgICAvLyBJZiB0aGlzIE1JTUUgdHlwZSBpcyBpbnZhbGlkLCBpZ25vcmUgaXQu
Ci0gICAgICAgIENGU3RyaW5nUmVmIG1pbWVUeXBlID0gbWltZVR5cGVzVmVjdG9yW2ldOwotICAg
ICAgICBpZiAoIW1pbWVUeXBlIHx8IENGR2V0VHlwZUlEKG1pbWVUeXBlKSAhPSBDRlN0cmluZ0dl
dFR5cGVJRCgpIHx8IENGU3RyaW5nR2V0TGVuZ3RoKG1pbWVUeXBlKSA9PSAwKQorICAgICAgICBh
dXRvIG1pbWVUeXBlID0gZHluYW1pY19jZl9jYXN0PENGU3RyaW5nUmVmPihtaW1lVHlwZXNWZWN0
b3JbaV0pOworICAgICAgICBpZiAoIW1pbWVUeXBlIHx8ICFDRlN0cmluZ0dldExlbmd0aChtaW1l
VHlwZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAvLyBJZiB0aGlzIE1JTUUg
dHlwZSBkb2Vzbid0IGhhdmUgYSB2YWxpZCBpbmZvIGRpY3Rpb25hcnksIGlnbm9yZSBpdC4KLSAg
ICAgICAgQ0ZEaWN0aW9uYXJ5UmVmIG1pbWVUeXBlSW5mbyA9IG1pbWVUeXBlSW5mb1ZlY3Rvcltp
XTsKLSAgICAgICAgaWYgKCFtaW1lVHlwZUluZm8gfHwgQ0ZHZXRUeXBlSUQobWltZVR5cGVJbmZv
KSAhPSBDRkRpY3Rpb25hcnlHZXRUeXBlSUQoKSkKKyAgICAgICAgYXV0byBtaW1lVHlwZUluZm8g
PSBkeW5hbWljX2NmX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihtaW1lVHlwZUluZm9WZWN0b3JbaV0p
OworICAgICAgICBpZiAoIW1pbWVUeXBlSW5mbykKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAg
ICAgICAgIC8vIEZJWE1FOiBDb25zaWRlciBzdG9yaW5nIGRpc2FibGVkIE1JTUUgdHlwZXMuCi0g
ICAgICAgIENGVHlwZVJlZiBpc0VuYWJsZWQgPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShtaW1lVHlw
ZUluZm8sIENGU1RSKCJXZWJQbHVnaW5UeXBlRW5hYmxlZCIpKTsKKyAgICAgICAgYXV0byBpc0Vu
YWJsZWQgPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShtaW1lVHlwZUluZm8sIENGU1RSKCJXZWJQbHVn
aW5UeXBlRW5hYmxlZCIpKTsKICAgICAgICAgaWYgKGlzRW5hYmxlZCkgewotICAgICAgICAgICAg
aWYgKENGR2V0VHlwZUlEKGlzRW5hYmxlZCkgPT0gQ0ZOdW1iZXJHZXRUeXBlSUQoKSkgeworICAg
ICAgICAgICAgaWYgKGF1dG8gbnVtYmVyID0gZHluYW1pY19jZl9jYXN0PENGTnVtYmVyUmVmPihp
c0VuYWJsZWQpKSB7CiAgICAgICAgICAgICAgICAgaW50IHZhbHVlOwotICAgICAgICAgICAgICAg
IGlmICghQ0ZOdW1iZXJHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRk51bWJlclJlZj4oaXNFbmFibGVk
KSwga0NGTnVtYmVySW50VHlwZSwgJnZhbHVlKSB8fCAhdmFsdWUpCisgICAgICAgICAgICAgICAg
aWYgKCFDRk51bWJlckdldFZhbHVlKG51bWJlciwga0NGTnVtYmVySW50VHlwZSwgJnZhbHVlKSB8
fCAhdmFsdWUpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfSBl
bHNlIGlmIChDRkdldFR5cGVJRChpc0VuYWJsZWQpID09IENGQm9vbGVhbkdldFR5cGVJRCgpKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKCFDRkJvb2xlYW5HZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkJv
b2xlYW5SZWY+KGlzRW5hYmxlZCkpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgfSBlbHNlIGlmIChpc0VuYWJsZWQgIT0ga0NG
Qm9vbGVhblRydWUpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAg
ICAgICAvLyBHZXQgdGhlIE1JTUUgdHlwZSBkZXNjcmlwdGlvbi4KLSAgICAgICAgQ0ZTdHJpbmdS
ZWYgbWltZVR5cGVEZXNjcmlwdGlvbiA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkRpY3Rp
b25hcnlHZXRWYWx1ZShtaW1lVHlwZUluZm8sIENGU1RSKCJXZWJQbHVnaW5UeXBlRGVzY3JpcHRp
b24iKSkpOwotICAgICAgICBpZiAobWltZVR5cGVEZXNjcmlwdGlvbiAmJiBDRkdldFR5cGVJRCht
aW1lVHlwZURlc2NyaXB0aW9uKSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpKQotICAgICAgICAgICAg
bWltZVR5cGVEZXNjcmlwdGlvbiA9IDA7Ci0KICAgICAgICAgbWltZUNsYXNzSW5mby50eXBlID0g
U3RyaW5nKG1pbWVUeXBlKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwotICAgICAgICBtaW1l
Q2xhc3NJbmZvLmRlc2MgPSBtaW1lVHlwZURlc2NyaXB0aW9uOworICAgICAgICBtaW1lQ2xhc3NJ
bmZvLmRlc2MgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFyeUdldFZh
bHVlKG1pbWVUeXBlSW5mbywgQ0ZTVFIoIldlYlBsdWdpblR5cGVEZXNjcmlwdGlvbiIpKSk7CiAK
ICAgICAgICAgLy8gTm93IGdldCB0aGUgZXh0ZW5zaW9ucyBmb3IgdGhpcyBNSU1FIHR5cGUuCiAg
ICAgICAgIENGSW5kZXggbnVtRXh0ZW5zaW9ucyA9IDA7Ci0gICAgICAgIENGQXJyYXlSZWYgZXh0
ZW5zaW9uc0FycmF5ID0gc3RhdGljX2Nhc3Q8Q0ZBcnJheVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFs
dWUobWltZVR5cGVJbmZvLCBDRlNUUigiV2ViUGx1Z2luRXh0ZW5zaW9ucyIpKSk7Ci0gICAgICAg
IGlmIChleHRlbnNpb25zQXJyYXkgJiYgQ0ZHZXRUeXBlSUQoZXh0ZW5zaW9uc0FycmF5KSA9PSBD
RkFycmF5R2V0VHlwZUlEKCkpCisgICAgICAgIGF1dG8gZXh0ZW5zaW9uc0FycmF5ID0gZHluYW1p
Y19jZl9jYXN0PENGQXJyYXlSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKG1pbWVUeXBlSW5mbywg
Q0ZTVFIoIldlYlBsdWdpbkV4dGVuc2lvbnMiKSkpOworICAgICAgICBpZiAoZXh0ZW5zaW9uc0Fy
cmF5KQogICAgICAgICAgICAgbnVtRXh0ZW5zaW9ucyA9IENGQXJyYXlHZXRDb3VudChleHRlbnNp
b25zQXJyYXkpOwogCiAgICAgICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IG51bUV4dGVuc2lv
bnM7ICsraSkgewotICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgZXh0ZW5zaW9uID0gc3RhdGljX2Nh
c3Q8Q0ZTdHJpbmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoZXh0ZW5zaW9uc0FycmF5LCBp
KSk7Ci0gICAgICAgICAgICBpZiAoIWV4dGVuc2lvbiB8fCBDRkdldFR5cGVJRChleHRlbnNpb24p
ICE9IENGU3RyaW5nR2V0VHlwZUlEKCkpCisgICAgICAgICAgICBhdXRvIGV4dGVuc2lvbiA9IGR5
bmFtaWNfY2ZfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChleHRlbnNp
b25zQXJyYXksIGkpKTsKKyAgICAgICAgICAgIGlmICghZXh0ZW5zaW9uKQogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICAvLyBUaGUgRGl2WCBwbHVnLWluIGxpc3RzIG11
bHRpcGxlIGV4dGVuc2lvbnMgaW4gYSBjb21tYSBzZXBhcmF0ZWQgc3RyaW5nIGluc3RlYWQgb2Yg
dXNpbmcKICAgICAgICAgICAgIC8vIG11bHRpcGxlIGFycmF5IGVsZW1lbnRzIGluIHRoZSBwcm9w
ZXJ0eSBsaXN0LiBXb3JrIGFyb3VuZCB0aGlzIGhlcmUgYnkgc3BsaXR0aW5nIHRoZQogICAgICAg
ICAgICAgLy8gZXh0ZW5zaW9uIHN0cmluZyBpbnRvIGNvbXBvbmVudHMuCi0gICAgICAgICAgICBW
ZWN0b3I8U3RyaW5nPiBleHRlbnNpb25Db21wb25lbnRzID0gU3RyaW5nKGV4dGVuc2lvbikuY29u
dmVydFRvQVNDSUlMb3dlcmNhc2UoKS5zcGxpdCgnLCcpOwotCi0gICAgICAgICAgICBmb3IgKGF1
dG8mIGNvbXBvbmVudCA6IGV4dGVuc2lvbkNvbXBvbmVudHMpCisgICAgICAgICAgICBmb3IgKGF1
dG8mIGNvbXBvbmVudCA6IFN0cmluZyhleHRlbnNpb24pLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNl
KCkuc3BsaXQoJywnKSkKICAgICAgICAgICAgICAgICBtaW1lQ2xhc3NJbmZvLmV4dGVuc2lvbnMu
YXBwZW5kKGNvbXBvbmVudCk7CiAgICAgICAgIH0KIApAQCAtMTUxLDEwICsxNDIsMTAgQEAgc3Rh
dGljIGJvb2wgZ2V0UGx1Z2luSW5mb0Zyb21Qcm9wZXJ0eUxpc3RzKENGQnVuZGxlUmVmIGJ1bmRs
ZSwgUGx1Z2luTW9kdWxlSW5mbyYKIAogYm9vbCBOZXRzY2FwZVBsdWdpbk1vZHVsZTo6Z2V0UGx1
Z2luSW5mbyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFBsdWdpbk1vZHVsZUluZm8mIHBsdWdp
bikKIHsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGJ1bmRsZVVSTCA9IGFkb3B0Q0YoQ0ZVUkxD
cmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcGx1Z2luUGF0aC5j
cmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgZmFsc2UpKTsKKyAg
ICBhdXRvIGJ1bmRsZVVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgcGx1Z2luUGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBr
Q0ZVUkxQT1NJWFBhdGhTdHlsZSwgZmFsc2UpKTsKICAgICAKICAgICAvLyBUcnkgdG8gaW5pdGlh
bGl6ZSB0aGUgYnVuZGxlLgotICAgIFJldGFpblB0cjxDRkJ1bmRsZVJlZj4gYnVuZGxlID0gYWRv
cHRDRihfQ0ZCdW5kbGVDcmVhdGVVbmlxdWUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgYnVuZGxlVVJM
LmdldCgpKSk7CisgICAgYXV0byBidW5kbGUgPSBhZG9wdENGKF9DRkJ1bmRsZUNyZWF0ZVVuaXF1
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidW5kbGVVUkwuZ2V0KCkpKTsKICAgICBpZiAoIWJ1bmRs
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIApAQCAtMTcwLDE1ICsxNjEsOCBAQCBib29s
IE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1Z2lu
UGF0aCwgUGx1Z2luTW9kdWxlSQogCiAgICAgcGx1Z2luLnBhdGggPSBwbHVnaW5QYXRoOwogICAg
IHBsdWdpbi5idW5kbGVJZGVudGlmaWVyID0gQ0ZCdW5kbGVHZXRJZGVudGlmaWVyKGJ1bmRsZS5n
ZXQoKSk7Ci0gICAgaWYgKENGVHlwZVJlZiB2ZXJzaW9uVHlwZVJlZiA9IENGQnVuZGxlR2V0VmFs
dWVGb3JJbmZvRGljdGlvbmFyeUtleShidW5kbGUuZ2V0KCksIGtDRkJ1bmRsZVZlcnNpb25LZXkp
KSB7Ci0gICAgICAgIGlmIChDRkdldFR5cGVJRCh2ZXJzaW9uVHlwZVJlZikgPT0gQ0ZTdHJpbmdH
ZXRUeXBlSUQoKSkKLSAgICAgICAgICAgIHBsdWdpbi52ZXJzaW9uU3RyaW5nID0gc3RhdGljX2Nh
c3Q8Q0ZTdHJpbmdSZWY+KHZlcnNpb25UeXBlUmVmKTsKLSAgICB9Ci0KLSAgICBpZiAoQ0ZUeXBl
UmVmIHNob3J0VmVyc2lvblR5cGVSZWYgPSBDRkJ1bmRsZUdldFZhbHVlRm9ySW5mb0RpY3Rpb25h
cnlLZXkoYnVuZGxlLmdldCgpLCBDRlNUUigiQ0ZCdW5kbGVTaG9ydFZlcnNpb25TdHJpbmciKSkp
IHsKLSAgICAgICAgaWYgKENGR2V0VHlwZUlEKHNob3J0VmVyc2lvblR5cGVSZWYpID09IENGU3Ry
aW5nR2V0VHlwZUlEKCkpCi0gICAgICAgICAgICBwbHVnaW4uc2hvcnRWZXJzaW9uU3RyaW5nID0g
c3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KHNob3J0VmVyc2lvblR5cGVSZWYpOwotICAgIH0KKyAg
ICBwbHVnaW4udmVyc2lvblN0cmluZyA9IGR5bmFtaWNfY2ZfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZC
dW5kbGVHZXRWYWx1ZUZvckluZm9EaWN0aW9uYXJ5S2V5KGJ1bmRsZS5nZXQoKSwga0NGQnVuZGxl
VmVyc2lvbktleSkpOworICAgIHBsdWdpbi5zaG9ydFZlcnNpb25TdHJpbmcgPSBkeW5hbWljX2Nm
X2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQnVuZGxlR2V0VmFsdWVGb3JJbmZvRGljdGlvbmFyeUtleShi
dW5kbGUuZ2V0KCksIENGU1RSKCJDRkJ1bmRsZVNob3J0VmVyc2lvblN0cmluZyIpKSk7CiAKICAg
ICBpZiAoIWdldFBsdWdpbkluZm9Gcm9tUHJvcGVydHlMaXN0cyhidW5kbGUuZ2V0KCksIHBsdWdp
bikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwIGIvU291cmNlL1dl
YktpdExlZ2FjeS9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAKaW5k
ZXggMTZkYzE0NGRjYzk4ZTI1NmMwNTMyNjdmNTJkMWQzZTRlNDg5NTgzZC4uYzZiZGVhNjhjNWU2
YzUwZmFlMDliZWUwYTc2NzFmNTUwYTJhYjQ2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExl
Z2FjeS9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAKKysrIGIvU291
cmNlL1dlYktpdExlZ2FjeS9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5j
cHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDIxIEFwcGxlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNDEsNDcgKzQxLDM2IEBACiAjZW5kaWYKICNlbmRpZgogCi0vLyBOT1RFOiBUaGVzZSBuZWVk
IHRvIGFwcGVhciB1cCB0b3AsIGFzIHRoZXkgZGVjbGFyZSBtYWNyb3MKLS8vIHVzZWQgaW4gdGhl
IEpTIGFuZCBXVEYgaGVhZGVycy4KKy8vIE5PVEU6IFRoZXNlIG5lZWQgdG8gYXBwZWFyIHVwIHRv
cCwgYXMgdGhleSBkZWNsYXJlIG1hY3JvcyB1c2VkIGluIHRoZSBKUyBhbmQgV1RGIGhlYWRlcnMu
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNFeHBvcnRNYWNyb3MuaD4KICNpbmNsdWRlIDx3
dGYvRXhwb3J0TWFjcm9zLmg+CiAKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JDbGllbnQuaCIKIAog
I2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+Ci0KICNpbmNsdWRlIDxX
ZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZENsaWVu
dExvY2FsLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+Ci0KICNpbmNsdWRlIDx3dGYvUmV0
YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLXVzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOwogCi1zdGF0aWMgY29uc3QgY2hhciogaW5zcGVjdG9yU3RhcnRzQXR0YWNo
ZWRTZXR0aW5nID0gImluc3BlY3RvclN0YXJ0c0F0dGFjaGVkIjsKLXN0YXRpYyBjb25zdCBjaGFy
KiBpbnNwZWN0b3JBdHRhY2hEaXNhYmxlZFNldHRpbmcgPSAiaW5zcGVjdG9yQXR0YWNoRGlzYWJs
ZWQiOworc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBpbnNwZWN0b3JTdGFydHNBdHRhY2hl
ZFNldHRpbmcgPSAiaW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQiOworc3RhdGljIGNvbnN0ZXhwciBj
b25zdCBjaGFyKiBpbnNwZWN0b3JBdHRhY2hEaXNhYmxlZFNldHRpbmcgPSAiaW5zcGVjdG9yQXR0
YWNoRGlzYWJsZWQiOwogCi1zdGF0aWMgaW5saW5lIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY3Jl
YXRlS2V5Rm9yUHJlZmVyZW5jZXMoY29uc3QgU3RyaW5nJiBrZXkpCitzdGF0aWMgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiBjcmVhdGVLZXlGb3JQcmVmZXJlbmNlcyhjb25zdCBTdHJpbmcmIGtleSkK
IHsKICAgICByZXR1cm4gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhGb3JtYXQoMCwgMCwgQ0ZT
VFIoIldlYktpdCBXZWIgSW5zcGVjdG9yIFNldHRpbmcgLSAlQCIpLCBrZXkuY3JlYXRlQ0ZTdHJp
bmcoKS5nZXQoKSkpOwogfQogCi1zdGF0aWMgdm9pZCBwb3B1bGF0ZVNldHRpbmcoY29uc3QgU3Ry
aW5nJiBrZXksIFN0cmluZyogc2V0dGluZykKK3N0YXRpYyBTdHJpbmcgbG9hZFNldHRpbmcoY29u
c3QgU3RyaW5nJiBrZXkpCiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwcmVmZXJlbmNl
c0tleSA9IGNyZWF0ZUtleUZvclByZWZlcmVuY2VzKGtleSk7Ci0gICAgUmV0YWluUHRyPENGUHJv
cGVydHlMaXN0UmVmPiB2YWx1ZSA9IGFkb3B0Q0YoQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZShw
cmVmZXJlbmNlc0tleS5nZXQoKSwga0NGUHJlZmVyZW5jZXNDdXJyZW50QXBwbGljYXRpb24pKTsK
LQotICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJldHVybjsKLQotICAgIENGVHlwZUlEIHR5cGUg
PSBDRkdldFR5cGVJRCh2YWx1ZS5nZXQoKSk7Ci0gICAgaWYgKHR5cGUgPT0gQ0ZTdHJpbmdHZXRU
eXBlSUQoKSkKLSAgICAgICAgKnNldHRpbmcgPSBzdGF0aWNfY2FzdDxTdHJpbmc+KHN0YXRpY19j
YXN0PENGU3RyaW5nUmVmPih2YWx1ZS5nZXQoKSkpOwotICAgIGVsc2UgaWYgKHR5cGUgPT0gQ0ZC
b29sZWFuR2V0VHlwZUlEKCkpCi0gICAgICAgICpzZXR0aW5nID0gc3RhdGljX2Nhc3Q8Ym9vbD4o
Q0ZCb29sZWFuR2V0VmFsdWUoc3RhdGljX2Nhc3Q8Q0ZCb29sZWFuUmVmPih2YWx1ZS5nZXQoKSkp
KSA/ICJ0cnVlIiA6ICJmYWxzZSI7Ci0gICAgZWxzZQotICAgICAgICAqc2V0dGluZyA9IGVtcHR5
U3RyaW5nKCk7CisgICAgYXV0byB2YWx1ZSA9IGFkb3B0Q0YoQ0ZQcmVmZXJlbmNlc0NvcHlBcHBW
YWx1ZShjcmVhdGVLZXlGb3JQcmVmZXJlbmNlcyhrZXkpLmdldCgpLCBrQ0ZQcmVmZXJlbmNlc0N1
cnJlbnRBcHBsaWNhdGlvbikpOworICAgIGlmIChhdXRvIHN0cmluZyA9IGR5bmFtaWNfY2ZfY2Fz
dDxDRlN0cmluZ1JlZj4odmFsdWUuZ2V0KCkpKQorICAgICAgICByZXR1cm4gc3RyaW5nOworICAg
IGlmICh2YWx1ZSA9PSBrQ0ZCb29sZWFuVHJ1ZSkKKyAgICAgICAgcmV0dXJuICJ0cnVlIl9zOwor
ICAgIGlmICh2YWx1ZSA9PSBrQ0ZCb29sZWFuRmFsc2UpCisgICAgICAgIHJldHVybiAiZmFsc2Ui
X3M7CisgICAgcmV0dXJuIHsgfTsKIH0KIAogc3RhdGljIHZvaWQgc3RvcmVTZXR0aW5nKGNvbnN0
IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHNldHRpbmcpCkBAIC0xMDEsMTEgKzkwLDcgQEAg
dm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpCiAKIGJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0b3JBdHRhY2hE
aXNhYmxlZCgpCiB7Ci0gICAgU3RyaW5nIHZhbHVlOwotICAgIHBvcHVsYXRlU2V0dGluZyhpbnNw
ZWN0b3JBdHRhY2hEaXNhYmxlZFNldHRpbmcsICZ2YWx1ZSk7Ci0gICAgaWYgKHZhbHVlLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB2YWx1ZSA9PSAidHJ1ZSI7
CisgICAgcmV0dXJuIGxvYWRTZXR0aW5nKGluc3BlY3RvckF0dGFjaERpc2FibGVkU2V0dGluZykg
PT0gInRydWUiOwogfQogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6c2V0SW5zcGVjdG9yQXR0
YWNoRGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkKQEAgLTEyMCwxMSArMTA1LDcgQEAgdm9pZCBXZWJJ
bnNwZWN0b3JDbGllbnQ6OmRlbGV0ZUluc3BlY3RvclN0YXJ0c0F0dGFjaGVkKCkKIAogYm9vbCBX
ZWJJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RvclN0YXJ0c0F0dGFjaGVkKCkKIHsKLSAgICBTdHJp
bmcgdmFsdWU7Ci0gICAgcG9wdWxhdGVTZXR0aW5nKGluc3BlY3RvclN0YXJ0c0F0dGFjaGVkU2V0
dGluZywgJnZhbHVlKTsKLSAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICByZXR1cm4gdmFsdWUgPT0gInRydWUiOworICAgIHJldHVybiBsb2FkU2V0dGlu
ZyhpbnNwZWN0b3JTdGFydHNBdHRhY2hlZFNldHRpbmcpID09ICJ0cnVlIjsKIH0KIAogdm9pZCBX
ZWJJbnNwZWN0b3JDbGllbnQ6OnNldEluc3BlY3RvclN0YXJ0c0F0dGFjaGVkKGJvb2wgYXR0YWNo
ZWQpCkBAIC0xNDAsMjQgKzEyMSwxMCBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6ZGVsZXRl
SW5zcGVjdG9yQXR0YWNoRGlzYWJsZWQoKQogc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Okluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OlNldHRpbmdzPiBXZWJJbnNwZWN0b3JDbGllbnQ6OmNy
ZWF0ZUZyb250ZW5kU2V0dGluZ3MoKQogewogICAgIGNsYXNzIEluc3BlY3RvckZyb250ZW5kU2V0
dGluZ3NDRiA6IHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpT
ZXR0aW5ncyB7Ci0gICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JGcm9udGVu
ZFNldHRpbmdzQ0YoKSB7IH0KLSAgICAgICAgdmlydHVhbCBTdHJpbmcgZ2V0UHJvcGVydHkoY29u
c3QgU3RyaW5nJiBuYW1lKQotICAgICAgICB7Ci0gICAgICAgICAgICBTdHJpbmcgdmFsdWU7Ci0g
ICAgICAgICAgICBwb3B1bGF0ZVNldHRpbmcobmFtZSwgJnZhbHVlKTsKLSAgICAgICAgICAgIHJl
dHVybiB2YWx1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9wZXJ0
eShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHN0b3JlU2V0dGluZyhuYW1lLCB2YWx1ZSk7Ci0gICAgICAgIH0KLQotICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGVsZXRlUHJvcGVydHkoY29uc3QgU3RyaW5nJiBuYW1lKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBkZWxldGVTZXR0aW5nKG5hbWUpOwotICAgICAgICB9CisgICAgcHJp
dmF0ZToKKyAgICAgICAgU3RyaW5nIGdldFByb3BlcnR5KGNvbnN0IFN0cmluZyYgbmFtZSkgZmlu
YWwgeyByZXR1cm4gbG9hZFNldHRpbmcobmFtZSk7IH0KKyAgICAgICAgdm9pZCBzZXRQcm9wZXJ0
eShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpIGZpbmFsIHsgc3RvcmVT
ZXR0aW5nKG5hbWUsIHZhbHVlKTsgfQorICAgICAgICB2b2lkIGRlbGV0ZVByb3BlcnR5KGNvbnN0
IFN0cmluZyYgbmFtZSkgZmluYWwgeyBkZWxldGVTZXR0aW5nKG5hbWUpOyB9CiAgICAgfTsKICAg
ICByZXR1cm4gbWFrZVVuaXF1ZTxJbnNwZWN0b3JGcm9udGVuZFNldHRpbmdzQ0Y+KCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJhc2VQbHVnaW5Q
YWNrYWdlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJCYXNlUGx1Z2lu
UGFja2FnZS5tbQppbmRleCA4MGEzYjRmNGE4Mjc0MjRlZWRkZWY5NzdmN2U2MTg1OTY0N2QxNmFk
Li5kOTllZjI4MTkzOGJkY2UzOTllYTAyYjJhYjEwZjk3OGE2ZmEzMzFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJhc2VQbHVnaW5QYWNrYWdlLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZVBsdWdpblBhY2thZ2Uu
bW0KQEAgLTM3NywxNSArMzc3LDExIEBAIC0gKFN0cmluZylidW5kbGVJZGVudGlmaWVyCiAKIC0g
KFN0cmluZylidW5kbGVWZXJzaW9uCiB7Ci0gICAgQ0ZEaWN0aW9uYXJ5UmVmIGluZm9EaWN0aW9u
YXJ5ID0gQ0ZCdW5kbGVHZXRJbmZvRGljdGlvbmFyeShjZkJ1bmRsZS5nZXQoKSk7CisgICAgYXV0
byBpbmZvRGljdGlvbmFyeSA9IENGQnVuZGxlR2V0SW5mb0RpY3Rpb25hcnkoY2ZCdW5kbGUuZ2V0
KCkpOwogICAgIGlmICghaW5mb0RpY3Rpb25hcnkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
IAotICAgIENGVHlwZVJlZiBidW5kbGVWZXJzaW9uU3RyaW5nID0gQ0ZEaWN0aW9uYXJ5R2V0VmFs
dWUoaW5mb0RpY3Rpb25hcnksIGtDRkJ1bmRsZVZlcnNpb25LZXkpOwotICAgIGlmICghYnVuZGxl
VmVyc2lvblN0cmluZyB8fCBDRkdldFR5cGVJRChidW5kbGVWZXJzaW9uU3RyaW5nKSAhPSBDRlN0
cmluZ0dldFR5cGVJRCgpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxDRlN0cmluZ1JlZj4oYnVuZGxlVmVyc2lvblN0cmluZyk7CisgICAg
cmV0dXJuIGR5bmFtaWNfY2ZfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUo
aW5mb0RpY3Rpb25hcnksIGtDRkJ1bmRsZVZlcnNpb25LZXkpKTsKIH0KIAogQGVuZAo=
</data>
<flag name="commit-queue"
          id="459224"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436233</attachid>
            <date>2021-08-23 14:00:13 -0700</date>
            <delta_ts>2021-08-26 10:43:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229414-20210823140012.patch</filename>
            <type>text/plain</type>
            <size>102548</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNDMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZmE4ZDUxYTY5NTIxODBlZmM0MTYxMjRlMGU5ODM0ZThiZjYwNTg5Li40NzAxMGNhZDM2Mjk3NDY5
OTYwYjVhZGRlOTgwZDgwYWE4MmNhZGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAyMS0wOC0yMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgQ3V0IGRvd24gb24gdXNlIG9mIENGR2V0VHlwZUlELCB1c2luZyBkeW5hbWljX2Nm
X2Nhc3QgaW5zdGVhZDsgcmVsYXRlZCBzdHJlYW1saW5pbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTQxNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1v
dGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJ
bnNwZWN0b3JYUENDb25uZWN0aW9uOjpkZXNlcmlhbGl6ZU1lc3NhZ2UpOiBVc2UKKyAgICAgICAg
ZHluYW1pY19jZl9jYXN0IHRvIGNoZWNrIHR5cGUgaW5zdGVhZCBvZiBDRkdldFR5cGVJRC4gQWxz
byBkbyB0aGUKKyAgICAgICAgY2hlY2sgYXQgcnVudGltZSByYXRoZXIgdGhhbiBhc3NlcnRpbmcu
IE5vdCByZWFsbHkgc3VmZmljaWVudCB0bworICAgICAgICBhc3NlcnQgY29ycmVjdCB0eXBlIGZv
ciBzb21ldGhpbmcgdGhhdCBjb21lcyBvdmVyIGFuIFhQQyBjb25uZWN0aW9uLgorCiAyMDIxLTA4
LTIyICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10g
UmVtb3ZlIGFscmVhZHktc2hpcHBlZCBKUyBmZWF0dXJlIGZsYWdzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDY0NmExZjc0Y2M5
ODAxZTkxZmQwY2Y3ZGY1NWNmNDViOTNiYzEzYWUuLjIyY2EyNjA4YjlhZmViNzAwOTA5MjkxMDkx
ODZlMTNmYjNmNTcxMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjEtMDgtMjMgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIEN1dCBkb3duIG9uIHVzZSBvZiBDRkdl
dFR5cGVJRCwgdXNpbmcgZHluYW1pY19jZl9jYXN0IGluc3RlYWQ7IHJlbGF0ZWQgc3RyZWFtbGlu
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk0
MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHd0
Zi9jZi9UeXBlQ2FzdHNDRi5oOiBBZGRlZCBhIGR5bmFtaWNfY2ZfY2FzdCBvdmVybG9hZCB0aGF0
IGNvbnZlcnRzIGZyb20KKyAgICAgICAgb25lIFJldGFpblB0ciB0eXBlIHRvIGFub3RoZXIgYW5k
IGF2b2lkcyByZWZlcmVuY2UgY291bnQgY2h1cm4uIFR3ZWFrZWQgY29tbWVudHMuCisKKyAgICAg
ICAgKiB3dGYvY29jb2EvRW50aXRsZW1lbnRzLm1tOgorICAgICAgICAoV1RGOjpoYXNFbnRpdGxl
bWVudCk6IFVzZSBrQ0ZCb29sZWFuVHJ1ZSBpbnN0ZWFkIG9mIENGQm9vbGVhbkdldFZhbHVlLgor
CisgICAgICAgICogd3RmL3RleHQvY29jb2EvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVUNv
Y29hLmNwcDoKKyAgICAgICAgKFdURjo6dGV4dEJyZWFrTG9jYWxlUHJlZmVyZW5jZSk6IFVzZSBk
eW5hbWljX2NmX2Nhc3QuCisKIDIwMjEtMDgtMjEgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZp
ZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBvdmVyd3JpdGVDb2RlUG9pbnQoKSBpbiBjcmVhdGVB
bmRGaWxsR2x5cGhQYWdlKCkgaXMgd3JvbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkZTJjNDQ4ZjYxYzMwZTBl
YTFjYjUyODI5Y2Y1N2E1Y2Y3YTUwOTEyLi4yZGRkMTNjNWQ5MjY0MmVlZjczZjVjMzAwNWY2YjE5
NzYyNzc4NWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTAwIEBACisyMDIxLTA4LTIzICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBDdXQgZG93biBvbiB1c2Ugb2Yg
Q0ZHZXRUeXBlSUQsIHVzaW5nIGR5bmFtaWNfY2ZfY2FzdCBpbnN0ZWFkOyByZWxhdGVkIHN0cmVh
bWxpbmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI5NDE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFW
Ri5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYWtlU2ltcGxlQ29sb3JGcm9tQVJHQkNGQXJyYXkp
OiBVc2UgZHlhbmFtaWNfY2ZfY2FzdC4KKyAgICAgICAgKFdlYkNvcmU6OkluYmFuZFRleHRUcmFj
a1ByaXZhdGVBVkY6OnByb2Nlc3NDdWVBdHRyaWJ1dGVzKTogRGl0dG8uCisgICAgICAgIEFsc28g
cmVtb3ZlZCB1bm5lY2Vzc2FyeSB0eXBlIGNhc3RzIHdoZW4gY29tcGFyaW5nIHdpdGgga0NGQm9v
bGVhblRydWUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tOgorICAgICAgICBVc2UgZHluYW1pY19jZl9j
YXN0LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRDYWNoZTo6c3lzdGVtRm9udEZhbWlsaWVzKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjppc1VzZXJJbnN0YWxsZWRGb250KTogVXNlIGtDRkJv
b2xlYW5UcnVlLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0hFVkNVdGlsaXRp
ZXNDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnZhbGlkYXRlSEVWQ1BhcmFtZXRlcnMpOiBV
c2UgZHluYW1pY19jZl9jYXN0IGFuZCBrQ0ZCb29sZWFuVHJ1ZS4KKyAgICAgICAgKFdlYkNvcmU6
OnZhbGlkYXRlRG9WaVBhcmFtZXRlcnMpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5tbToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjo6c2hvdWxkRGVjb2RlU2FtcGxlKToK
KyAgICAgICAgVXNlIGtDRkJvb2xlYW5GYWxzZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGb250UGxhdGZvcm1EYXRhOjpvYmplY3RGb3JFcXVhbGl0eUNoZWNrKTogVXNlIGF1dG8u
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRHTENWQU5H
TEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dHJhbnNmZXJGdW5jdGlvbkZyb21TdHJpbmcpOiBS
ZW1vdmVkIHR5cGUgY2hlY2ssIHdoaWNoIGNhbGxlcgorICAgICAgICBzaG91bGQgZG8gc2luY2Ug
dGhlIGFndW1lbnQgdHlwZSBpcyBDRlN0cmluZ1JlZi4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dEdMQ1ZBTkdMRTo6Y29weVBpeGVsQnVmZmVyVG9UZXh0dXJlKTogVXNlCisgICAg
ICAgIGR5bmFtaWNfY2ZfY2FzdCBpbnN0ZWFkIG9mIGFuIHVuY2hlY2tlZCBzdGF0aWNfY2FzdC4K
KworICAgICAgICAqIHBsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW06CisgICAgICAgIChXZWJD
b3JlOjpzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUpOiBJbXByb3ZlZCBlZmZp
Y2llbmN5CisgICAgICAgIGJ5IHVzaW5nIGEgYmV0dGVyIGlkb20gZm9yIHRoZSBzcGFjZSBiZWZv
cmUgdGhlIGFwcGxpY2F0aW9uIG5hbWUuCisgICAgICAgIFVzZSBkeW5hbWljX2NmX2Nhc3QuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2luZG93RGlzcGxheUNhcHR1cmVy
TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6YW55T2ZDR1dpbmRvdyk6IFVzZSBrQ0ZCb29sZWFu
RmFsc2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3h5U2VydmVyQ0ZOZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJvY2Vzc1Byb3h5U2VydmVycyk6IFVzZSBkeW5hbWlj
X2NmX2Nhc3QuCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5k
bGVJbXBsQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1w
bDo6Y2hvb3NlUHJveHlGcm9tQXJyYXkpOiBEaXR0by4KKworICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvaW9zL1dlYkNvcmVVUkxSZXNwb25zZUlPUy5oOiBUd2Vha2VkIGEgYml0LgorCisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvV2ViQ29yZVVSTFJlc3BvbnNlSU9TLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlRXh0ZW5zaW9uVG9NSU1FVHlwZU1hcCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjphZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KTogUmVtb3ZlZCB0aGUg
Y29kZSB0aGF0IG1hcHMgIi5tanMiCisgICAgICAgIHRvICJ0ZXh0L2phdmFzY3JpcHQiLCBubyBs
b25nZXIgbmVlZGVkIHNpbmNlIHJkYXI6Ly9wcm9ibGVtLzQ2MzMyODkzCisgICAgICAgIHdhcyBm
aXhlZCBhIGNvdXBsZSByZWxlYXNlcyBiYWNrLiBSZWZhY3RvcmVkIHRvIHNoYXJlIGNvZGUgd2l0
aCB0aGUKKyAgICAgICAgTWFjLCB2aWEgZnVuY3Rpb25zIGluIFdlYkNvcmVVUkxSZXNwb25zZS5o
L21tLCB3aGljaCBhcmUgbm90IG1hY09TLXNwZWNpZmljCisgICAgICAgIGV2ZW4gdGhvdWdoIHRo
ZXkgYXJlIGluIGEgZGlyZWN0b3J5IG5hbWVkICJtYWMiLiBGaXhlZCBhIHBsYWNlIHdoZXJlIHdl
CisgICAgICAgIGRpZCBhZG9wdENGIHdoZXJlIGl0IHNob3VsZCBiZSBhZG9wdE5TLgorCisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvTmV0d29ya1N0YXRlTm90aWZpZXJNYWMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1N0YXRlTm90aWZpZXI6OnVwZGF0ZVN0YXRlV2l0aG91
dE5vdGlmeWluZyk6IFVzZQorICAgICAgICBkeW5hbWljX2NmX2Nhc3QuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMuaDogUmVuYW1lZCBNSU1FVHlwZUZyb21V
VElUcmVlCisgICAgICAgIHRvIG1pbWVUeXBlRnJvbVVUSVRyZWUgdG8gbWFrZSB0aGUgc3R5bGUg
cm9ib3QgaGFwcHkuIENoYW5nZWQgdGhlCisgICAgICAgIGFyZ3VtZW50IGFuZCByZXR1cm4gdHlw
ZSB0byBDRlN0cmluZ1JlZiBzaW5jZSB0aGF0J3Mgd2hhdCB0aGUgY2FsbGVycworICAgICAgICBh
bGwgd2FudCwgYW5kIHdoYXQgdGhlIGltcGxlbWVudGF0aW9uIHVzZXMsIGFuZCB0aGVyZSBpcyBu
byByZWFzb24gdG8KKyAgICAgICAgY29udmVydCBiYWNrIGFuZCBmb3J0aCB0byBXVEY6OlN0cmlu
Zy4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6Om1pbWVUeXBlRnJvbVVUSVRyZWUpOiBVc2UgbnVsbHB0ciwgbm90IGVt
cHR5U3RyaW5nKCksIGZvciB0aGUKKyAgICAgICAgdmFsdWUgd2hlbiB0aGVyZSBpcyBubyBNSU1F
IHR5cGUgZm91bmQuIFVzZSBhdXRvLiBVc2UgZHluYW1pY19jZl9jYXN0LgorICAgICAgICBNYWtl
IHJlY3Vyc2lvbiBtb3JlIGVmZmljaWVudCBzaW5jZSB3ZSBkb24ndCBrZWVwIGNvbnZlcnRpbmcg
YmFjayBhbmQKKyAgICAgICAgZm9ydGggYmV0d2VlbiBDRlN0cmluZ1JlZiBhbmQgV1RGOjpTdHJp
bmcuCisgICAgICAgIChXZWJDb3JlOjpVVElGcm9tVGFnKTogUmVtb3ZlZCB1bm5lZWRlZCBleHBs
aWNpdCBjb252ZXJzdGlvbiB0byBXVEY6OlN0cmluZy4KKworICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5oOiBBZGRlZCBoZWxwZXIgZnVuY3Rpb25zCisg
ICAgICAgIHRvIHRoZSBoZWFkZXIsIHNoYXJlZCBieSBXZWJDb3JlVVJMUmVzcG9uc2UubW0gYW5k
IFdlYkNvcmVVUkxSZXNwb25zZUlPUy5tbS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
bWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUV4dGVu
c2lvblRvTUlNRVR5cGVNYXApOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6YWRqdXN0TUlN
RVR5cGVJZk5lY2Vzc2FyeSk6IFJlZmFjdG9yZWQgdG8gdXNlIGEgU29ydGVkQXJyYXlNYXAKKyAg
ICAgICAgaW5zdGVhZCBvZiBhIENGRGljdGlvbmFyeSwgZWxpbWluYXRpbmcgdmFyaW91cyB0eXBl
IGNhc3RzIGFuZCBjb252ZXJzaW9ucy4KKyAgICAgICAgUmVmYWN0b3JlZCB0byB1c2UgdGhlIG5l
dyBmdW5jdGlvbnMgYmVsb3cuIFVzZSBtYWtlTmV2ZXJEZXN0cm95ZWQgdG8KKyAgICAgICAgaW5z
dGVhZCBvZiBSZXRhaW5QdHI6OmxlYWtSZWYuIFJlbW92ZWQgdW5uZWNlc3NhcnkgY2hlY2sgZm9y
IGVxdWFsaXR5CisgICAgICAgIHNpbmNlIHRoaXMgZnVuY3Rpb24gb25seSBkb2VzIHdvcmsgd2hl
biBDRlVSTFJlc3BvbnNlR2V0TUlNRVR5cGUgaXMgbnVsbHB0ci4KKyAgICAgICAgKFdlYkNvcmU6
OmZpbGVQYXRoRXh0ZW5zaW9uKTogQWRkZWQuIFJlZmFjdG9yZWQgdGhlIGNvZGUgdG8gZ2V0IGEg
cGF0aCBleHRlbnNpb24KKyAgICAgICAgZnJvbSBhIENGVVJMUmVzcG9uc2VSZWYgaW50byBhIGZ1
bmN0aW9uIHNpbmNlIGl0J3MgdXNlZCBpbiB0d28gcGxhY2VzLgorICAgICAgICAoV2ViQ29yZTo6
cHJlZmVycmVkTUlNRVR5cGVGb3JGaWxlRXh0ZW5zaW9uRnJvbVVUVHlwZSk6IEFkZGVkLiBSZWZh
Y3RvcmVkCisgICAgICAgIHRoaXMgbG9naWNhbCBvcGVyYXRpb24sIG1hcHBpbmcgYSBmaWxlIGV4
dGVuc2lvbiB0byBhIE1JTUUgdHlwZSwgaW50byBhIGZ1bmN0aW9uLgorICAgICAgICBUaGlzIGlz
IHVzZWQgaW4gdHdvIHBsYWNlcy4gQWxzbyBwdXRzIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0JFR0lOL0VORAorICAgICAgICBwYWlyIGludG8gYSBzaW5nbGUgcGxhY2UsIGFuZCB0aGlz
IGlzIHdoZXJlIHdlJ2xsIHN3aXRjaCB0byB1c2UgbmV3ZXIgVVRUeXBlCisgICAgICAgIG1hY2hp
bmVyeSBsYXRlciBvbi4KKworICAgICAgICAqIHRlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBT
dXBwb3J0Lm1tOgorICAgICAgICAoV2ViQ29yZVRlc3RTdXBwb3J0Ojpjb252ZXJ0V2ViUmVzb3Vy
Y2VSZXNwb25zZVRvRGljdGlvbmFyeSk6IFVzZSBhdXRvIGFuZAorICAgICAgICBkeW5hbWljX2Nm
X2Nhc3QuCisKIDIwMjEtMDgtMjIgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFtMRkNdW0lGQ10gQWRkIHN1cHBvcnQgZm9yIHZlcnRpY2FsLWFsaWduOiBzdXBlcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L1BBTC9DaGFuZ2VMb2cKaW5kZXggZjFiN2M4ZmYwODQ1ZWVkYjQzNWMxMWFlYjIxZmRjZTg0MTky
NjUzYS4uNDY2NWEzMDBkYmVlMDE3YjY3MjE1NzZlMjk0ZGIyMWI4ZDU3ZTM1MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDgtMjMgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgorCisgICAgICAgIEN1dCBkb3duIG9uIHVzZSBvZiBDRkdldFR5cGVJRCwg
dXNpbmcgZHluYW1pY19jZl9jYXN0IGluc3RlYWQ7IHJlbGF0ZWQgc3RyZWFtbGluaW5nCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk0MTQKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9zeXN0ZW0v
bWFjL0RlZmF1bHRTZWFyY2hQcm92aWRlci5jcHA6CisgICAgICAgIChQQUw6OmRlZmF1bHRTZWFy
Y2hQcm92aWRlckRpc3BsYXlOYW1lKTogVXNlIGR5bmFtaWNfY2ZfY2FzdCBhbmQgcmVtb3ZlZCBh
biB1bm5lZWRlZCBjYWxsIHRvCisgICAgICAgIENGU3RyaW5nQ3JlYXRlQ29weSwgc2luY2UgdGhl
IGNhbGxlcnMgZG9uJ3QgbmVlZCBhbiBpc29sYXRlZCBjb3B5LgorCiAyMDIxLTA4LTEwICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQg
YnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCBiN2NhNjk1ZDE2Y2EyMTY2Y2RhYWRiOWZkNzBmZmQwN2Zh
MTIxMTdjLi42NDc4NTQ0YjY0NTg2NTNhNjlhMjU3Nzg2MjEzN2RjMzZjMjA3ZGVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTA4LTIzICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxl
LmNvbT4KKworICAgICAgICBDdXQgZG93biBvbiB1c2Ugb2YgQ0ZHZXRUeXBlSUQsIHVzaW5nIGR5
bmFtaWNfY2ZfY2FzdCBpbnN0ZWFkOyByZWxhdGVkIHN0cmVhbWxpbmluZworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5NDE0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9OZXRz
Y2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW06CisgICAgICAgIChXZWJLaXQ6Omdl
dFBsdWdpbkluZm9Gcm9tUHJvcGVydHlMaXN0cyk6IFVzZSBkeW5hbWljX2NmX2Nhc3QuCisgICAg
ICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luTW9kdWxlOjpnZXRQbHVnaW5JbmZvKTogRGl0dG8u
CisKIDIwMjEtMDgtMjIgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+
CiAKICAgICAgICAgUmVwb3J0IGNvcnJlY3QgYmxvY2tlZCBVUkkgaW4gQ1NQIHZpb2xhdGlvbiBy
ZXBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvY2YvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdExlZ2FjeS9jZi9DaGFuZ2VMb2cKaW5kZXggZTc3MTEzNjdiZDAwYzNkNTlmOGFl
MDJjYWFkNjI2YTViMjk4OGZhMS4uMWI1MzQ2OGZlMGY4ZTYxZDBiODE2MDZjMDkzOGU0M2NkNjAz
M2M3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9jZi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9jZi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMS0w
OC0yMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ3V0IGRvd24g
b24gdXNlIG9mIENGR2V0VHlwZUlELCB1c2luZyBkeW5hbWljX2NmX2Nhc3QgaW5zdGVhZDsgcmVs
YXRlZCBzdHJlYW1saW5pbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyOTQxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwOgorICAg
ICAgICAobG9hZFNldHRpbmcpOiBSZW5hbWUgZnJvbSBwb3B1bGF0ZVNldHRpbmcuIFVzZSBkeWFu
bWljX2NmX2Nhc3QsIGtDRkJvb2xlYW5UcnVlLCBhbmQKKyAgICAgICAga0NGQm9vbGVhbkZhbHNl
LCBhbHNvIGNoYW5nZSB0byByZXR1cm4gdmFsdWUgaW5zdGVhZCBvZiBhIHBvaW50ZXItYmFzZWQg
b3V0IGFyZ3VtZW50LgorICAgICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0b3JBdHRh
Y2hEaXNhYmxlZCk6IFVwZGF0ZSBmb3IgY2hhbmdlIHRvIGxvYWRTZXR0aW5nLgorICAgICAgICAo
V2ViSW5zcGVjdG9yQ2xpZW50OjppbnNwZWN0b3JTdGFydHNBdHRhY2hlZCk6IERpdHRvLgorICAg
ICAgICAoV2ViSW5zcGVjdG9yQ2xpZW50OjpjcmVhdGVGcm9udGVuZFNldHRpbmdzKTogRGl0dG8u
IEFsc28gdXNlIGZpbmFsIGluc3RlYWQgb2YgdmlydHVhbC4KKwogMjAyMC0xMC0zMCAgQnJpYW4g
QnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBtb3ZlIElu
c3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlciB0byBXZWJDb3JlLCBjbGVhbiB1cCB1c2VzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggMDFlMWI4ZTUzOGY4ZmUyNzNiNzc1NDVkODAx
YjExMzM2ZDU4MTc5MC4uYmUwNmE5NmMxYjZiMTA4ZjEzMjhjM2M4YzEyMDY1MDdhNmU3OTZmYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTA4LTIz
ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBDdXQgZG93biBvbiB1
c2Ugb2YgQ0ZHZXRUeXBlSUQsIHVzaW5nIGR5bmFtaWNfY2ZfY2FzdCBpbnN0ZWFkOyByZWxhdGVk
IHN0cmVhbWxpbmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI5NDE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBQbHVnaW5zL1dlYkJhc2VQbHVnaW5QYWNrYWdlLm1tOgorICAgICAgICAoLVtXZWJC
YXNlUGx1Z2luUGFja2FnZSBidW5kbGVWZXJzaW9uXSk6IFVzZSBkeW5hbWljX2NmX2Nhc3QuCisK
IDIwMjEtMDgtMTkgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZW1vdmUgb2xkIHVudXNlZCBjb2RlIGFuZCBvdXQgb2YgZGF0ZSBjb21tZW50cy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29h
L1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tCmlu
ZGV4IDQzZGYyNzBhYzgyMmY0YmY5Y2Q2NWQ5ZDUwMGY4NzNlMmFiMWFkM2QuLjI2NTg1NWZmN2Ey
NzQyZTAxYzYyMTc1ZTgwMDY1ZWFmMTBjYmE0Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rp
b24ubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2Ev
UmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbi5tbQpAQCAtMzQsNiArMzQsNyBAQAogI2ltcG9y
dCA8d3RmL0xvY2suaD4KICNpbXBvcnQgPHd0Zi9SZWYuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KKyNpbXBvcnQgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgogI2ltcG9ydCA8d3RmL2NvY29h
L0VudGl0bGVtZW50cy5oPgogI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9DRlhQQ0JyaWRnZVNQSS5o
PgogI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oPgpAQCAtMTEwLDkgKzExMSw4
IEBAIE5TRGljdGlvbmFyeSAqUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6ZGVzZXJpYWxp
emVNZXNzYWdlKHhwY19vYmplY3RfdCBvYmplCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgfQog
Ci0gICAgYXV0byBkaWN0aW9uYXJ5ID0gYWRvcHRDRihfQ0ZYUENDcmVhdGVDRk9iamVjdEZyb21Y
UENNZXNzYWdlKHhwY0RpY3Rpb25hcnkpKTsKKyAgICBhdXRvIGRpY3Rpb25hcnkgPSBkeW5hbWlj
X2NmX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihhZG9wdENGKF9DRlhQQ0NyZWF0ZUNGT2JqZWN0RnJv
bVhQQ01lc3NhZ2UoeHBjRGljdGlvbmFyeSkpKTsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGRp
Y3Rpb25hcnksICJVbmFibGUgdG8gZGVzZXJpYWxpemUgeHBjIG1lc3NhZ2UiKTsKLSAgICBBU1NF
UlQoQ0ZHZXRUeXBlSUQoZGljdGlvbmFyeS5nZXQoKSkgPT0gQ0ZEaWN0aW9uYXJ5R2V0VHlwZUlE
KCkpOwogICAgIHJldHVybiBkaWN0aW9uYXJ5LmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY2YvVHlwZUNhc3RzQ0YuaCBiL1NvdXJjZS9XVEYv
d3RmL2NmL1R5cGVDYXN0c0NGLmgKaW5kZXggZTA5MjBmNmM0NmMwMjFmYTYzYmY2ZDk2MGM1Yzcx
ZThlMjY4Y2FjNS4uNTNiMmIyNGYxNGZhNWNjYjhmYjU1NTNkZWEyZmQwNmMzZTk3NGExOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvY2YvVHlwZUNhc3RzQ0YuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9jZi9UeXBlQ2FzdHNDRi5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjIsOCArNjIsOSBAQCBXVEZfREVDTEFSRV9DRl9N
VVRBQkxFX1RZUEVfVFJBSVQoQ0ZTdHJpbmcsIENGTXV0YWJsZVN0cmluZyk7CiAKICN1bmRlZiBX
VEZfREVDTEFSRV9DRl9NVVRBQkxFX1RZUEVfVFJBSVQKIAotLy8gVXNlIHRoaXMgaW5zdGVhZCBv
ZiBjaGVja2VkX2NmX2Nhc3Q8PiB3aGVuIGFjdGl2ZWx5IGNoZWNraW5nIENGIHR5cGVzLAorLy8g
VXNlIGR5bmFtaWNfY2ZfY2FzdDw+IGluc3RlYWQgb2YgY2hlY2tlZF9jZl9jYXN0PD4gd2hlbiBh
Y3RpdmVseSBjaGVja2luZyBDRiB0eXBlcywKIC8vIHNpbWlsYXIgdG8gZHluYW1pY19jYXN0PD4g
aW4gQysrLiBCZSBzdXJlIHRvIGluY2x1ZGUgYSBudWxscHRyIGNoZWNrLgorCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBUIGR5bmFtaWNfY2ZfY2FzdChDRlR5cGVSZWYgb2JqZWN0KQogewogICAgIGlm
ICghb2JqZWN0KQpAQCAtNzUsNyArNzYsMTkgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBkeW5h
bWljX2NmX2Nhc3QoQ0ZUeXBlUmVmIG9iamVjdCkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4o
Y29uc3RfY2FzdDxDRl9CUklER0VEX1RZUEUoaWQpIHZvaWQqPihvYmplY3QpKTsKIH0KIAotLy8g
VXNlIHRoaXMgaW5zdGVhZCBvZiBkeW5hbWljX2NmX2Nhc3Q8PiB3aGVuIGEgc3BlY2lmYyBDRiB0
eXBlIGlzIHJlcXVpcmVkLgordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gUmV0YWlu
UHRyPFQ+IGR5bmFtaWNfY2ZfY2FzdChSZXRhaW5QdHI8VT4mJiBvYmplY3QpCit7CisgICAgaWYg
KCFvYmplY3QpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKENGR2V0VHlwZUlE
KG9iamVjdC5nZXQoKSkgIT0gQ0ZUeXBlVHJhaXQ8VD46OnR5cGVJRCgpKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBhZG9wdENGKHN0YXRpY19jYXN0PFQ+KGNvbnN0X2Nh
c3Q8Q0ZfQlJJREdFRF9UWVBFKGlkKSB2b2lkKj4ob2JqZWN0LmxlYWtSZWYoKSkpKTsKK30KKwor
Ly8gVXNlIGNoZWNrZWRfY2ZfY2FzdDw+IGluc3RlYWQgb2YgZHluYW1pY19jZl9jYXN0PD4gd2hl
biBhIHNwZWNpZmljIENGIHR5cGUgaXMgcmVxdWlyZWQuCisKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
IFQgY2hlY2tlZF9jZl9jYXN0KENGVHlwZVJlZiBvYmplY3QpCiB7CiAgICAgaWYgKCFvYmplY3Qp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9FbnRpdGxlbWVudHMubW0gYi9Tb3Vy
Y2UvV1RGL3d0Zi9jb2NvYS9FbnRpdGxlbWVudHMubW0KaW5kZXggYzM5NDdhODE2MzAwM2U4NWY5
OWZiNjZmODA0OTcwODkxZWQ5MzE4NC4uOWQ5NDZhZDBkZjEwYzhjNmM4OTEyZWE5MzYxNjVjZjhm
ZTUxNTQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY29jb2EvRW50aXRsZW1lbnRzLm1t
CisrKyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL0VudGl0bGVtZW50cy5tbQpAQCAtMzksOCArMzks
NyBAQCBzdGF0aWMgYm9vbCBoYXNFbnRpdGxlbWVudChTZWNUYXNrUmVmIHRhc2ssIGNvbnN0IGNo
YXIqIGVudGl0bGVtZW50KQogICAgIGlmICghdGFzaykKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIGF1dG8gc3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nTm9Db3B5
KGtDRkFsbG9jYXRvckRlZmF1bHQsIGVudGl0bGVtZW50LCBrQ0ZTdHJpbmdFbmNvZGluZ0FTQ0lJ
LCBrQ0ZBbGxvY2F0b3JOdWxsKSk7Ci0gICAgYXV0byB2YWx1ZSA9IGFkb3B0Q0YoU2VjVGFza0Nv
cHlWYWx1ZUZvckVudGl0bGVtZW50KHRhc2ssIHN0cmluZy5nZXQoKSwgbnVsbHB0cikpOwotICAg
IHJldHVybiB2YWx1ZSAmJiBDRkdldFR5cGVJRCh2YWx1ZS5nZXQoKSkgPT0gQ0ZCb29sZWFuR2V0
VHlwZUlEKCkgJiYgQ0ZCb29sZWFuR2V0VmFsdWUoc3RhdGljX2Nhc3Q8Q0ZCb29sZWFuUmVmPih2
YWx1ZS5nZXQoKSkpOworICAgIHJldHVybiBhZG9wdENGKFNlY1Rhc2tDb3B5VmFsdWVGb3JFbnRp
dGxlbWVudCh0YXNrLCBzdHJpbmcuZ2V0KCksIG51bGxwdHIpKSA9PSBrQ0ZCb29sZWFuVHJ1ZTsK
IH0KIAogYm9vbCBoYXNFbnRpdGxlbWVudChhdWRpdF90b2tlbl90IHRva2VuLCBjb25zdCBjaGFy
KiBlbnRpdGxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvY29jb2EvVGV4
dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVUNvY29hLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
Y29jb2EvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVUNvY29hLmNwcAppbmRleCBhNDAwOWFk
OWRjZWRmNmU2YmI0ZDA2Y2FmYjc0ZDBmZDdlMDZlNTQyLi4yNWQwNmIyYTU5NGQzYzAyZDM4YzNm
OTliNGZkODE1N2YzMTBhMDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NvY29h
L1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VDb2NvYS5jcHAKKysrIGIvU291cmNlL1dURi93
dGYvdGV4dC9jb2NvYS9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVQ29jb2EuY3BwCkBAIC0y
Myw2ICsyMyw3IEBACiAKICNpbmNsdWRlIDxhcnJheT4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
VGV4dEJyZWFrSXRlcmF0b3IuaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC01MSwxMSArNTIsOCBA
QCBUZXh0QnJlYWtJdGVyYXRvcjo6VGV4dEJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyBzdHJpbmcs
IE1vZGUgbW9kZSwgY29uc3QgQXRvbVN0cgogCiBzdGF0aWMgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiB0ZXh0QnJlYWtMb2NhbGVQcmVmZXJlbmNlKCkKIHsKLSAgICBhdXRvIGxvY2FsZSA9IGFkb3B0
Q0YoQ0ZQcmVmZXJlbmNlc0NvcHlWYWx1ZShDRlNUUigiQXBwbGVUZXh0QnJlYWtMb2NhbGUiKSwK
LSAgICAgICAga0NGUHJlZmVyZW5jZXNBbnlBcHBsaWNhdGlvbiwga0NGUHJlZmVyZW5jZXNDdXJy
ZW50VXNlciwga0NGUHJlZmVyZW5jZXNBbnlIb3N0KSk7Ci0gICAgaWYgKCFsb2NhbGUgfHwgQ0ZH
ZXRUeXBlSUQobG9jYWxlLmdldCgpKSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpKQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KGxvY2Fs
ZS5nZXQoKSk7CisgICAgcmV0dXJuIGR5bmFtaWNfY2ZfY2FzdDxDRlN0cmluZ1JlZj4oYWRvcHRD
RihDRlByZWZlcmVuY2VzQ29weVZhbHVlKENGU1RSKCJBcHBsZVRleHRCcmVha0xvY2FsZSIpLAor
ICAgICAgICBrQ0ZQcmVmZXJlbmNlc0FueUFwcGxpY2F0aW9uLCBrQ0ZQcmVmZXJlbmNlc0N1cnJl
bnRVc2VyLCBrQ0ZQcmVmZXJlbmNlc0FueUhvc3QpKSk7CiB9CiAKIHN0YXRpYyBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IHRvcExhbmd1YWdlUHJlZmVyZW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9tYWMvRGVmYXVsdFNlYXJjaFByb3ZpZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVtL21hYy9EZWZhdWx0U2VhcmNoUHJvdmlkZXIuY3Bw
CmluZGV4IDk1MTZkNmFiYmJiMzVhZTg3YzJkOWVhYmExNjljNzI0YjVkM2RlNmUuLjM2ZTg4NWI0
ZmQzOTQ0MjRjNDZiMGMxMTBkNzhkOGZmNDI5ZjU4MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1BBTC9wYWwvc3lzdGVtL21hYy9EZWZhdWx0U2VhcmNoUHJvdmlkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVtL21hYy9EZWZhdWx0U2VhcmNoUHJvdmlkZXIuY3Bw
CkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJDRlV0aWxpdGllc1NQSS5oIgogI2luY2x1
ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CisjaW5jbHVkZSA8d3RmL2NmL1R5
cGVDYXN0c0NGLmg+CiAKIG5hbWVzcGFjZSBQQUwgewogCkBAIC0zOSwxMiArNDAsMTEgQEAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBkZWZhdWx0U2VhcmNoUHJvdmlkZXJEaXNwbGF5TmFtZSgpCiAg
ICAgaWYgKCFwcm92aWRlckluZm8pCiAgICAgICAgIHJldHVybiBDRlNUUigiR29vZ2xlIik7CiAK
LSAgICBDRlR5cGVSZWYgZGlzcGxheU5hbWUgPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm92aWRl
ckluZm8uZ2V0KCksIGtDRldlYlNlcnZpY2VzUHJvdmlkZXJEZWZhdWx0RGlzcGxheU5hbWVLZXkp
OworICAgIGF1dG8gZGlzcGxheU5hbWUgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENG
RGljdGlvbmFyeUdldFZhbHVlKHByb3ZpZGVySW5mby5nZXQoKSwga0NGV2ViU2VydmljZXNQcm92
aWRlckRlZmF1bHREaXNwbGF5TmFtZUtleSkpOwogICAgIGlmICghZGlzcGxheU5hbWUpCiAgICAg
ICAgIHJldHVybiBDRlNUUigiR29vZ2xlIik7CiAKLSAgICBBU1NFUlQoQ0ZHZXRUeXBlSUQoZGlz
cGxheU5hbWUpID09IENGU3RyaW5nR2V0VHlwZUlEKCkpOwotICAgIHJldHVybiBhZG9wdENGKENG
U3RyaW5nQ3JlYXRlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoQ0ZTdHJpbmdSZWYpZGlzcGxh
eU5hbWUpKTsKKyAgICByZXR1cm4gZGlzcGxheU5hbWU7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFBB
TApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCmlu
ZGV4IGEzNjE0MGFkNDFkZDkwZGQ3ZTU0ZmFhOWZlNTlmMmM5Mzk3MmE2NWEuLjg0ZTA4NmExODRi
YWNlNGZkMjkxZWYzYTU5MDMyNzI2MDM4NzA5MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZG
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAKQEAgLTM2LDE0ICszNiwxNiBAQAogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0RhdGFWaWV3Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SW50OEFycmF5Lmg+CiAjaW5jbHVkZSA8cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5k
YXRpb24uaD4KLSNpbmNsdWRlIDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KICNpbmNsdWRl
IDx3dGYvTWVkaWFUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+Cisj
aW5jbHVkZSA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmlu
Zy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5o
PgogCisjaW5jbHVkZSA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogQVZGSW5iYW5kVHJhY2tQYXJlbnQ6On5BVkZJbmJhbmRUcmFja1BhcmVudCgp
ID0gZGVmYXVsdDsKQEAgLTcxLDggKzczLDggQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U1JHQkE8
dWludDhfdD4+IG1ha2VTaW1wbGVDb2xvckZyb21BUkdCQ0ZBcnJheShDRkFycmF5UmVmIGMKIAog
ICAgIGZsb2F0IGNvbXBvbmVudEFycmF5WzRdOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsg
aSsrKSB7Ci0gICAgICAgIENGTnVtYmVyUmVmIHZhbHVlID0gc3RhdGljX2Nhc3Q8Q0ZOdW1iZXJS
ZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoY29sb3JBcnJheSwgaSkpOwotICAgICAgICBpZiAo
Q0ZHZXRUeXBlSUQodmFsdWUpICE9IENGTnVtYmVyR2V0VHlwZUlEKCkpCisgICAgICAgIGF1dG8g
dmFsdWUgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZOdW1iZXJSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5k
ZXgoY29sb3JBcnJheSwgaSkpOworICAgICAgICBpZiAoIXZhbHVlKQogICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBmbG9hdCBjb21wb25lbnQ7CkBAIC0xMDUsNyAr
MTA3LDYgQEAgUmVmPEluYmFuZEdlbmVyaWNDdWU+IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6
OnByb2Nlc3NDdWVBdHRyaWJ1dGVzKENGQXR0cmlidXQKICAgICBpZiAoIWxlbmd0aCkKICAgICAg
ICAgcmV0dXJuIGN1ZURhdGE7CiAKLQogICAgIENGUmFuZ2UgZWZmZWN0aXZlUmFuZ2UgPSBDRlJh
bmdlTWFrZSgwLCAwKTsKICAgICB3aGlsZSAoKGVmZmVjdGl2ZVJhbmdlLmxvY2F0aW9uICsgZWZm
ZWN0aXZlUmFuZ2UubGVuZ3RoKSA8IGxlbmd0aCkgewogCkBAIC0xMTQsNyArMTE1LDYgQEAgUmVm
PEluYmFuZEdlbmVyaWNDdWU+IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWVB
dHRyaWJ1dGVzKENGQXR0cmlidXQKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIFN0
cmluZ0J1aWxkZXIgdGFnU3RhcnQ7Ci0gICAgICAgIENGU3RyaW5nUmVmIHZhbHVlU3RyaW5nOwog
ICAgICAgICBTdHJpbmcgdGFnRW5kOwogICAgICAgICBDRkluZGV4IGF0dHJpYnV0ZUNvdW50ID0g
Q0ZEaWN0aW9uYXJ5R2V0Q291bnQoYXR0cmlidXRlcyk7CiAgICAgICAgIFZlY3Rvcjxjb25zdCB2
b2lkKj4ga2V5cyhhdHRyaWJ1dGVDb3VudCk7CkBAIC0xMjIsMTQgKzEyMiwxNCBAQCBSZWY8SW5i
YW5kR2VuZXJpY0N1ZT4gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0N1ZUF0dHJp
YnV0ZXMoQ0ZBdHRyaWJ1dAogICAgICAgICBDRkRpY3Rpb25hcnlHZXRLZXlzQW5kVmFsdWVzKGF0
dHJpYnV0ZXMsIGtleXMuZGF0YSgpLCB2YWx1ZXMuZGF0YSgpKTsKIAogICAgICAgICBmb3IgKENG
SW5kZXggaSA9IDA7IGkgPCBhdHRyaWJ1dGVDb3VudDsgKytpKSB7Ci0gICAgICAgICAgICBDRlN0
cmluZ1JlZiBrZXkgPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oa2V5c1tpXSk7CisgICAgICAg
ICAgICBhdXRvIGtleSA9IGR5bmFtaWNfY2ZfY2FzdDxDRlN0cmluZ1JlZj4oa2V5c1tpXSk7CiAg
ICAgICAgICAgICBDRlR5cGVSZWYgdmFsdWUgPSB2YWx1ZXNbaV07Ci0gICAgICAgICAgICBpZiAo
Q0ZHZXRUeXBlSUQoa2V5KSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpIHx8ICFDRlN0cmluZ0dldExl
bmd0aChrZXkpKQorICAgICAgICAgICAgaWYgKCFrZXkgfHwgIUNGU3RyaW5nR2V0TGVuZ3RoKGtl
eSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIGlmIChDRlN0cmlu
Z0NvbXBhcmUoa2V5LCBrQ01UZXh0TWFya3VwQXR0cmlidXRlX0FsaWdubWVudCwgMCkgPT0ga0NG
Q29tcGFyZUVxdWFsVG8pIHsKLSAgICAgICAgICAgICAgICB2YWx1ZVN0cmluZyA9IHN0YXRpY19j
YXN0PENGU3RyaW5nUmVmPih2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgaWYgKENGR2V0VHlwZUlE
KHZhbHVlU3RyaW5nKSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpIHx8ICFDRlN0cmluZ0dldExlbmd0
aCh2YWx1ZVN0cmluZykpCisgICAgICAgICAgICAgICAgYXV0byB2YWx1ZVN0cmluZyA9IGR5bmFt
aWNfY2ZfY2FzdDxDRlN0cmluZ1JlZj4odmFsdWUpOworICAgICAgICAgICAgICAgIGlmICghdmFs
dWVTdHJpbmcgfHwgIUNGU3RyaW5nR2V0TGVuZ3RoKHZhbHVlU3RyaW5nKSkKICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgaWYgKHByb2Nlc3NlZCAmIEFsaWdu
KQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTE0OCw3ICsxNDgsNyBAQCBSZWY8
SW5iYW5kR2VuZXJpY0N1ZT4gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0N1ZUF0
dHJpYnV0ZXMoQ0ZBdHRyaWJ1dAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoQ0ZT
dHJpbmdDb21wYXJlKGtleSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9Cb2xkU3R5bGUsIDApID09
IGtDRkNvbXBhcmVFcXVhbFRvKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PENG
Qm9vbGVhblJlZj4odmFsdWUpICE9IGtDRkJvb2xlYW5UcnVlKQorICAgICAgICAgICAgICAgIGlm
ICh2YWx1ZSAhPSBrQ0ZCb29sZWFuVHJ1ZSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7
CiAKICAgICAgICAgICAgICAgICB0YWdTdGFydC5hcHBlbmQoIjxiPiIpOwpAQCAtMTU3LDcgKzE1
Nyw3IEBAIFJlZjxJbmJhbmRHZW5lcmljQ3VlPiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpw
cm9jZXNzQ3VlQXR0cmlidXRlcyhDRkF0dHJpYnV0CiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIGlmIChDRlN0cmluZ0NvbXBhcmUoa2V5LCBrQ01UZXh0TWFya3VwQXR0cmlidXRlX0l0YWxp
Y1N0eWxlLCAwKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykgewotICAgICAgICAgICAgICAgIGlmIChz
dGF0aWNfY2FzdDxDRkJvb2xlYW5SZWY+KHZhbHVlKSAhPSBrQ0ZCb29sZWFuVHJ1ZSkKKyAgICAg
ICAgICAgICAgICBpZiAodmFsdWUgIT0ga0NGQm9vbGVhblRydWUpCiAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICAgICAgdGFnU3RhcnQuYXBwZW5kKCI8aT4iKTsK
QEAgLTE2Niw3ICsxNjYsNyBAQCBSZWY8SW5iYW5kR2VuZXJpY0N1ZT4gSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWRjo6cHJvY2Vzc0N1ZUF0dHJpYnV0ZXMoQ0ZBdHRyaWJ1dAogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKGtleSwga0NNVGV4dE1hcmt1cEF0
dHJpYnV0ZV9VbmRlcmxpbmVTdHlsZSwgMCkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pIHsKLSAgICAg
ICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8Q0ZCb29sZWFuUmVmPih2YWx1ZSkgIT0ga0NGQm9v
bGVhblRydWUpCisgICAgICAgICAgICAgICAgaWYgKHZhbHVlICE9IGtDRkJvb2xlYW5UcnVlKQog
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgICAgIHRhZ1N0YXJ0
LmFwcGVuZCgiPHU+Iik7CkBAIC0xNzUsMTMgKzE3NSwxMyBAQCBSZWY8SW5iYW5kR2VuZXJpY0N1
ZT4gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0N1ZUF0dHJpYnV0ZXMoQ0ZBdHRy
aWJ1dAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKGtl
eSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9PcnRob2dvbmFsTGluZVBvc2l0aW9uUGVyY2VudGFn
ZVJlbGF0aXZlVG9Xcml0aW5nRGlyZWN0aW9uLCAwKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykgewot
ICAgICAgICAgICAgICAgIGlmIChDRkdldFR5cGVJRCh2YWx1ZSkgIT0gQ0ZOdW1iZXJHZXRUeXBl
SUQoKSkKKyAgICAgICAgICAgICAgICBhdXRvIHZhbHVlTnVtYmVyID0gZHluYW1pY19jZl9jYXN0
PENGTnVtYmVyUmVmPih2YWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZU51bWJlcikK
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgaWYgKHByb2Nl
c3NlZCAmIExpbmUpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
ICAgIHByb2Nlc3NlZCB8PSBMaW5lOwogCi0gICAgICAgICAgICAgICAgQ0ZOdW1iZXJSZWYgdmFs
dWVOdW1iZXIgPSBzdGF0aWNfY2FzdDxDRk51bWJlclJlZj4odmFsdWUpOwogICAgICAgICAgICAg
ICAgIGRvdWJsZSBsaW5lOwogICAgICAgICAgICAgICAgIENGTnVtYmVyR2V0VmFsdWUodmFsdWVO
dW1iZXIsIGtDRk51bWJlckZsb2F0NjRUeXBlLCAmbGluZSk7CiAgICAgICAgICAgICAgICAgY3Vl
RGF0YS0+c2V0TGluZShsaW5lKTsKQEAgLTE4OSwxMyArMTg5LDEzIEBAIFJlZjxJbmJhbmRHZW5l
cmljQ3VlPiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQ3VlQXR0cmlidXRlcyhD
RkF0dHJpYnV0CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChDRlN0cmluZ0NvbXBh
cmUoa2V5LCBrQ01UZXh0TWFya3VwQXR0cmlidXRlX1RleHRQb3NpdGlvblBlcmNlbnRhZ2VSZWxh
dGl2ZVRvV3JpdGluZ0RpcmVjdGlvbiwgMCkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pIHsKLSAgICAg
ICAgICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQodmFsdWUpICE9IENGTnVtYmVyR2V0VHlwZUlEKCkp
CisgICAgICAgICAgICAgICAgYXV0byB2YWx1ZU51bWJlciA9IGR5bmFtaWNfY2ZfY2FzdDxDRk51
bWJlclJlZj4odmFsdWUpOworICAgICAgICAgICAgICAgIGlmICghdmFsdWVOdW1iZXIpCiAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzZWQg
JiBQb3NpdGlvbikKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAg
ICAgcHJvY2Vzc2VkIHw9IFBvc2l0aW9uOwogCi0gICAgICAgICAgICAgICAgQ0ZOdW1iZXJSZWYg
dmFsdWVOdW1iZXIgPSBzdGF0aWNfY2FzdDxDRk51bWJlclJlZj4odmFsdWUpOwogICAgICAgICAg
ICAgICAgIGRvdWJsZSBwb3NpdGlvbjsKICAgICAgICAgICAgICAgICBDRk51bWJlckdldFZhbHVl
KHZhbHVlTnVtYmVyLCBrQ0ZOdW1iZXJGbG9hdDY0VHlwZSwgJnBvc2l0aW9uKTsKICAgICAgICAg
ICAgICAgICBjdWVEYXRhLT5zZXRQb3NpdGlvbihwb3NpdGlvbik7CkBAIC0yMDMsMTMgKzIwMywx
MyBAQCBSZWY8SW5iYW5kR2VuZXJpY0N1ZT4gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJv
Y2Vzc0N1ZUF0dHJpYnV0ZXMoQ0ZBdHRyaWJ1dAogICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICBpZiAoQ0ZTdHJpbmdDb21wYXJlKGtleSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9Xcml0aW5n
RGlyZWN0aW9uU2l6ZVBlcmNlbnRhZ2UsIDApID09IGtDRkNvbXBhcmVFcXVhbFRvKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKENGR2V0VHlwZUlEKHZhbHVlKSAhPSBDRk51bWJlckdldFR5cGVJRCgp
KQorICAgICAgICAgICAgICAgIGF1dG8gdmFsdWVOdW1iZXIgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZO
dW1iZXJSZWY+KHZhbHVlKTsKKyAgICAgICAgICAgICAgICBpZiAoIXZhbHVlTnVtYmVyKQogICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBpZiAocHJvY2Vzc2Vk
ICYgU2l6ZSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAg
cHJvY2Vzc2VkIHw9IFNpemU7CiAKLSAgICAgICAgICAgICAgICBDRk51bWJlclJlZiB2YWx1ZU51
bWJlciA9IHN0YXRpY19jYXN0PENGTnVtYmVyUmVmPih2YWx1ZSk7CiAgICAgICAgICAgICAgICAg
ZG91YmxlIHNpemU7CiAgICAgICAgICAgICAgICAgQ0ZOdW1iZXJHZXRWYWx1ZSh2YWx1ZU51bWJl
ciwga0NGTnVtYmVyRmxvYXQ2NFR5cGUsICZzaXplKTsKICAgICAgICAgICAgICAgICBjdWVEYXRh
LT5zZXRTaXplKHNpemUpOwpAQCAtMjE3LDggKzIxNyw4IEBAIFJlZjxJbmJhbmRHZW5lcmljQ3Vl
PiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQ3VlQXR0cmlidXRlcyhDRkF0dHJp
YnV0CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChDRlN0cmluZ0NvbXBhcmUoa2V5
LCBrQ01UZXh0TWFya3VwQXR0cmlidXRlX1ZlcnRpY2FsTGF5b3V0LCAwKSA9PSBrQ0ZDb21wYXJl
RXF1YWxUbykgewotICAgICAgICAgICAgICAgIHZhbHVlU3RyaW5nID0gc3RhdGljX2Nhc3Q8Q0ZT
dHJpbmdSZWY+KHZhbHVlKTsKLSAgICAgICAgICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQodmFsdWVT
dHJpbmcpICE9IENGU3RyaW5nR2V0VHlwZUlEKCkgfHwgIUNGU3RyaW5nR2V0TGVuZ3RoKHZhbHVl
U3RyaW5nKSkKKyAgICAgICAgICAgICAgICBhdXRvIHZhbHVlU3RyaW5nID0gZHluYW1pY19jZl9j
YXN0PENGU3RyaW5nUmVmPih2YWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZVN0cmlu
ZyB8fCAhQ0ZTdHJpbmdHZXRMZW5ndGgodmFsdWVTdHJpbmcpKQogICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAoQ0ZTdHJp
bmdDb21wYXJlKHZhbHVlU3RyaW5nLCBrQ01UZXh0VmVydGljYWxMYXlvdXRfTGVmdFRvUmlnaHQs
IDApID09IGtDRkNvbXBhcmVFcXVhbFRvKQpAQCAtMjI5LDEwICsyMjksMTAgQEAgUmVmPEluYmFu
ZEdlbmVyaWNDdWU+IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWVBdHRyaWJ1
dGVzKENGQXR0cmlidXQKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKENGU3RyaW5n
Q29tcGFyZShrZXksIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfQmFzZUZvbnRTaXplUGVyY2VudGFn
ZVJlbGF0aXZlVG9WaWRlb0hlaWdodCwgMCkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pIHsKLSAgICAg
ICAgICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQodmFsdWUpICE9IENGTnVtYmVyR2V0VHlwZUlEKCkp
CisgICAgICAgICAgICAgICAgYXV0byB2YWx1ZU51bWJlciA9IGR5bmFtaWNfY2ZfY2FzdDxDRk51
bWJlclJlZj4odmFsdWUpOworICAgICAgICAgICAgICAgIGlmICghdmFsdWVOdW1iZXIpCiAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAg
ICAgIENGTnVtYmVyUmVmIHZhbHVlTnVtYmVyID0gc3RhdGljX2Nhc3Q8Q0ZOdW1iZXJSZWY+KHZh
bHVlKTsKKwogICAgICAgICAgICAgICAgIGRvdWJsZSBiYXNlRm9udFNpemU7CiAgICAgICAgICAg
ICAgICAgQ0ZOdW1iZXJHZXRWYWx1ZSh2YWx1ZU51bWJlciwga0NGTnVtYmVyRmxvYXQ2NFR5cGUs
ICZiYXNlRm9udFNpemUpOwogICAgICAgICAgICAgICAgIGN1ZURhdGEtPnNldEJhc2VGb250U2l6
ZShiYXNlRm9udFNpemUpOwpAQCAtMjQwLDEwICsyNDAsMTAgQEAgUmVmPEluYmFuZEdlbmVyaWND
dWU+IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWVBdHRyaWJ1dGVzKENGQXR0
cmlidXQKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKENGU3RyaW5nQ29tcGFyZShr
ZXksIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfUmVsYXRpdmVGb250U2l6ZSwgMCkgPT0ga0NGQ29t
cGFyZUVxdWFsVG8pIHsKLSAgICAgICAgICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQodmFsdWUpICE9
IENGTnVtYmVyR2V0VHlwZUlEKCkpCisgICAgICAgICAgICAgICAgYXV0byB2YWx1ZU51bWJlciA9
IGR5bmFtaWNfY2ZfY2FzdDxDRk51bWJlclJlZj4odmFsdWUpOworICAgICAgICAgICAgICAgIGlm
ICghdmFsdWVOdW1iZXIpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgIENGTnVtYmVyUmVmIHZhbHVlTnVtYmVyID0gc3RhdGlj
X2Nhc3Q8Q0ZOdW1iZXJSZWY+KHZhbHVlKTsKKwogICAgICAgICAgICAgICAgIGRvdWJsZSByZWxh
dGl2ZUZvbnRTaXplOwogICAgICAgICAgICAgICAgIENGTnVtYmVyR2V0VmFsdWUodmFsdWVOdW1i
ZXIsIGtDRk51bWJlckZsb2F0NjRUeXBlLCAmcmVsYXRpdmVGb250U2l6ZSk7CiAgICAgICAgICAg
ICAgICAgY3VlRGF0YS0+c2V0UmVsYXRpdmVGb250U2l6ZShyZWxhdGl2ZUZvbnRTaXplKTsKQEAg
LTI1MSw4ICsyNTEsOCBAQCBSZWY8SW5iYW5kR2VuZXJpY0N1ZT4gSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUFWRjo6cHJvY2Vzc0N1ZUF0dHJpYnV0ZXMoQ0ZBdHRyaWJ1dAogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKGtleSwga0NNVGV4dE1hcmt1cEF0dHJp
YnV0ZV9Gb250RmFtaWx5TmFtZSwgMCkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pIHsKLSAgICAgICAg
ICAgICAgICB2YWx1ZVN0cmluZyA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPih2YWx1ZSk7Ci0g
ICAgICAgICAgICAgICAgaWYgKENGR2V0VHlwZUlEKHZhbHVlU3RyaW5nKSAhPSBDRlN0cmluZ0dl
dFR5cGVJRCgpIHx8ICFDRlN0cmluZ0dldExlbmd0aCh2YWx1ZVN0cmluZykpCisgICAgICAgICAg
ICAgICAgYXV0byB2YWx1ZVN0cmluZyA9IGR5bmFtaWNfY2ZfY2FzdDxDRlN0cmluZ1JlZj4odmFs
dWUpOworICAgICAgICAgICAgICAgIGlmICghdmFsdWVTdHJpbmcgfHwgIUNGU3RyaW5nR2V0TGVu
Z3RoKHZhbHVlU3RyaW5nKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICAgICAgaWYgKHByb2Nlc3NlZCAmIEZvbnROYW1lKQogICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKQEAgLTI2MywyMiArMjYzLDIyIEBAIFJlZjxJbmJhbmRHZW5lcmljQ3VlPiBJbmJh
bmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQ3VlQXR0cmlidXRlcyhDRkF0dHJpYnV0CiAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChDRlN0cmluZ0NvbXBhcmUoa2V5LCBrQ01U
ZXh0TWFya3VwQXR0cmlidXRlX0ZvcmVncm91bmRDb2xvckFSR0IsIDApID09IGtDRkNvbXBhcmVF
cXVhbFRvKSB7Ci0gICAgICAgICAgICAgICAgQ0ZBcnJheVJlZiBhcnJheVZhbHVlID0gc3RhdGlj
X2Nhc3Q8Q0ZBcnJheVJlZj4odmFsdWUpOwotICAgICAgICAgICAgICAgIGlmIChDRkdldFR5cGVJ
RChhcnJheVZhbHVlKSAhPSBDRkFycmF5R2V0VHlwZUlEKCkpCisgICAgICAgICAgICAgICAgYXV0
byBhcnJheVZhbHVlID0gZHluYW1pY19jZl9jYXN0PENGQXJyYXlSZWY+KHZhbHVlKTsKKyAgICAg
ICAgICAgICAgICBpZiAoIWFycmF5VmFsdWUpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgICAgIAorCiAgICAgICAgICAgICAgICAgYXV0byBjb2xvciA9IG1ha2VT
aW1wbGVDb2xvckZyb21BUkdCQ0ZBcnJheShhcnJheVZhbHVlKTsKICAgICAgICAgICAgICAgICBp
ZiAoIWNvbG9yKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAg
ICBjdWVEYXRhLT5zZXRGb3JlZ3JvdW5kQ29sb3IoKmNvbG9yKTsKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBpZiAo
Q0ZTdHJpbmdDb21wYXJlKGtleSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9CYWNrZ3JvdW5kQ29s
b3JBUkdCLCAwKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykgewotICAgICAgICAgICAgICAgIENGQXJy
YXlSZWYgYXJyYXlWYWx1ZSA9IHN0YXRpY19jYXN0PENGQXJyYXlSZWY+KHZhbHVlKTsKLSAgICAg
ICAgICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQoYXJyYXlWYWx1ZSkgIT0gQ0ZBcnJheUdldFR5cGVJ
RCgpKQorICAgICAgICAgICAgICAgIGF1dG8gYXJyYXlWYWx1ZSA9IGR5bmFtaWNfY2ZfY2FzdDxD
RkFycmF5UmVmPih2YWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKCFhcnJheVZhbHVlKQogICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAKKwogICAgICAgICAg
ICAgICAgIGF1dG8gY29sb3IgPSBtYWtlU2ltcGxlQ29sb3JGcm9tQVJHQkNGQXJyYXkoYXJyYXlW
YWx1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKCFjb2xvcikKICAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CkBAIC0yODcsMTAgKzI4NywxMCBAQCBSZWY8SW5iYW5kR2VuZXJpY0N1ZT4gSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0N1ZUF0dHJpYnV0ZXMoQ0ZBdHRyaWJ1dAog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKGtleSwga0NN
VGV4dE1hcmt1cEF0dHJpYnV0ZV9DaGFyYWN0ZXJCYWNrZ3JvdW5kQ29sb3JBUkdCLCAwKSA9PSBr
Q0ZDb21wYXJlRXF1YWxUbykgewotICAgICAgICAgICAgICAgIENGQXJyYXlSZWYgYXJyYXlWYWx1
ZSA9IHN0YXRpY19jYXN0PENGQXJyYXlSZWY+KHZhbHVlKTsKLSAgICAgICAgICAgICAgICBpZiAo
Q0ZHZXRUeXBlSUQoYXJyYXlWYWx1ZSkgIT0gQ0ZBcnJheUdldFR5cGVJRCgpKQorICAgICAgICAg
ICAgICAgIGF1dG8gYXJyYXlWYWx1ZSA9IGR5bmFtaWNfY2ZfY2FzdDxDRkFycmF5UmVmPih2YWx1
ZSk7CisgICAgICAgICAgICAgICAgaWYgKCFhcnJheVZhbHVlKQogICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgICAgIGF1dG8gY29s
b3IgPSBtYWtlU2ltcGxlQ29sb3JGcm9tQVJHQkNGQXJyYXkoYXJyYXlWYWx1ZSk7CiAgICAgICAg
ICAgICAgICAgaWYgKCFjb2xvcikKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQpp
bmRleCAyYzhiMmUyNjYxODM5MTU1YzNmNTdlOWJjMTFhMzA5ZTJmOTllNjZhLi5hZjJhMmU2YzA0
YWY1M2I2MmEzNWJiMDc5MWI2Y2M1ODkwMDllMWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAgLTQ4LDYgKzQ4LDcgQEAK
ICNpbXBvcnQgPHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+CiAjaW1w
b3J0IDxwYWwvc3BpL2NvY29hL0FWRm91bmRhdGlvblNQSS5oPgogI2ltcG9ydCA8d3RmL0Jsb2Nr
T2JqQ0V4Y2VwdGlvbnMuaD4KKyNpbXBvcnQgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgogCiAjaW1w
b3J0IDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KICNpbXBvcnQgPHBhbC9jb2NvYS9BVkZv
dW5kYXRpb25Tb2Z0TGluay5oPgpAQCAtMTY5LDkgKzE3MCw4IEBAIHByaXZhdGU6CiAgICAgICAg
IGlmIChkZXNjcmlwdGlvbikgewogICAgICAgICAgICAgbV9vcmlnaW5hbENvZGVjID0gUEFMOjpz
b2Z0TGlua19Db3JlTWVkaWFfQ01Gb3JtYXREZXNjcmlwdGlvbkdldE1lZGlhU3ViVHlwZShkZXNj
cmlwdGlvbik7CiAgICAgICAgICAgICBDRlN0cmluZ1JlZiBvcmlnaW5hbEZvcm1hdEtleSA9IFBB
TDo6Y2FuTG9hZF9Db3JlTWVkaWFfa0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fUHJvdGVj
dGVkQ29udGVudE9yaWdpbmFsRm9ybWF0KCkgPyBQQUw6OmdldF9Db3JlTWVkaWFfa0NNRm9ybWF0
RGVzY3JpcHRpb25FeHRlbnNpb25fUHJvdGVjdGVkQ29udGVudE9yaWdpbmFsRm9ybWF0KCkgOiBD
RlNUUigiQ29tbW9uRW5jcnlwdGlvbk9yaWdpbmFsRm9ybWF0Iik7Ci0gICAgICAgICAgICBDRlR5
cGVSZWYgb3JpZ2luYWxGb3JtYXQgPSBDTUZvcm1hdERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9uKGRl
c2NyaXB0aW9uLCBvcmlnaW5hbEZvcm1hdEtleSk7Ci0gICAgICAgICAgICBpZiAob3JpZ2luYWxG
b3JtYXQgJiYgQ0ZHZXRUeXBlSUQob3JpZ2luYWxGb3JtYXQpID09IENGTnVtYmVyR2V0VHlwZUlE
KCkpCi0gICAgICAgICAgICAgICAgQ0ZOdW1iZXJHZXRWYWx1ZSgoQ0ZOdW1iZXJSZWYpb3JpZ2lu
YWxGb3JtYXQsIGtDRk51bWJlclNJbnQzMlR5cGUsICZtX29yaWdpbmFsQ29kZWMpOworICAgICAg
ICAgICAgaWYgKGF1dG8gb3JpZ2luYWxGb3JtYXQgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZOdW1iZXJS
ZWY+KENNRm9ybWF0RGVzY3JpcHRpb25HZXRFeHRlbnNpb24oZGVzY3JpcHRpb24sIG9yaWdpbmFs
Rm9ybWF0S2V5KSkpCisgICAgICAgICAgICAgICAgQ0ZOdW1iZXJHZXRWYWx1ZShvcmlnaW5hbEZv
cm1hdCwga0NGTnVtYmVyU0ludDMyVHlwZSwgJm1fb3JpZ2luYWxDb2RlYyk7CiAgICAgICAgIH0K
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAppbmRleCBiZWRlNTQ1NmQ3ZmQ1ZDJlODAy
ZWI4ZWU3ODE2NTNiZjI0MDZhNmFmLi44NTIwMzEzMGUxMmVkYzRmNTI5YjBmOTAwYzBhZjQ5ZDk5
ZmQ1Y2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCkBAIC0zMiwxNSArMzIsMTQgQEAKICNp
bmNsdWRlICJSZW5kZXJUaGVtZUNvY29hLmgiCiAjaW5jbHVkZSAiU3lzdGVtRm9udERhdGFiYXNl
Q29yZVRleHQuaCIKICNpbmNsdWRlICJWZXJzaW9uQ2hlY2tzLmgiCi0jaW5jbHVkZSA8cGFsL3Nw
aS9jZi9Db3JlVGV4dFNQSS5oPgotCiAjaW5jbHVkZSA8Q29yZVRleHQvU0ZOVExheW91dFR5cGVz
Lmg+Ci0KKyNpbmNsdWRlIDxwYWwvc3BpL2NmL0NvcmVUZXh0U1BJLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhy
ZWFkLmg+CiAjaW5jbHVkZSA8d3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oPgogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgog
CiAvLyBGSVhNRTogVGhpcyBzZWVtcyBsaWtlIGl0IHNob3VsZCBiZSBpbiBQbGF0Zm9ybUhhdmUu
aC4KIC8vIEZJWE1FOiBMaWtlbHkgd2UgY2FuIHJlbW92ZSB0aGlzIHNwZWNpYWwgY2FzZSBmb3Ig
d2F0Y2hPUyBhbmQgdHZPUy4KQEAgLTY5Nyw4ICs2OTYsOCBAQCBWZWN0b3I8U3RyaW5nPiBGb250
Q2FjaGU6OnN5c3RlbUZvbnRGYW1pbGllcygpCiAgICAgYXV0byBhdmFpbGFibGVGb250RmFtaWxp
ZXMgPSBhZG9wdENGKENURm9udE1hbmFnZXJDb3B5QXZhaWxhYmxlRm9udEZhbWlseU5hbWVzKCkp
OwogICAgIENGSW5kZXggY291bnQgPSBDRkFycmF5R2V0Q291bnQoYXZhaWxhYmxlRm9udEZhbWls
aWVzLmdldCgpKTsKICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7Ci0g
ICAgICAgIENGU3RyaW5nUmVmIGZvbnROYW1lID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENG
QXJyYXlHZXRWYWx1ZUF0SW5kZXgoYXZhaWxhYmxlRm9udEZhbWlsaWVzLmdldCgpLCBpKSk7Ci0g
ICAgICAgIGlmIChDRkdldFR5cGVJRChmb250TmFtZSkgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkg
eworICAgICAgICBhdXRvIGZvbnROYW1lID0gZHluYW1pY19jZl9jYXN0PENGU3RyaW5nUmVmPihD
RkFycmF5R2V0VmFsdWVBdEluZGV4KGF2YWlsYWJsZUZvbnRGYW1pbGllcy5nZXQoKSwgaSkpOwor
ICAgICAgICBpZiAoIWZvbnROYW1lKSB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CkBAIC0xMzQ3LDggKzEzNDYsNyBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgaXNBcmFiaWNDaGFyYWN0ZXIoVUNoYXIgY2hhcmFjdGVyKQog
I2lmIEFTU0VSVF9FTkFCTEVECiBzdGF0aWMgYm9vbCBpc1VzZXJJbnN0YWxsZWRGb250KENURm9u
dFJlZiBmb250KQogewotICAgIGF1dG8gYXR0cmlidXRlID0gYWRvcHRDRihzdGF0aWNfY2FzdDxD
RkJvb2xlYW5SZWY+KENURm9udENvcHlBdHRyaWJ1dGUoZm9udCwga0NURm9udFVzZXJJbnN0YWxs
ZWRBdHRyaWJ1dGUpKSk7Ci0gICAgcmV0dXJuIGF0dHJpYnV0ZSAmJiBDRkJvb2xlYW5HZXRWYWx1
ZShhdHRyaWJ1dGUuZ2V0KCkpOworICAgIHJldHVybiBhZG9wdENGKENURm9udENvcHlBdHRyaWJ1
dGUoZm9udCwga0NURm9udFVzZXJJbnN0YWxsZWRBdHRyaWJ1dGUpKSA9PSBrQ0ZCb29sZWFuVHJ1
ZTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29jb2EubW0KaW5kZXggZWFjZGY3MDEzNTIw
MGRhODQyNzk3YzQwYzYyNTFiOWVjNzU1NTBhNi4uZjA4MmNjMWNlMGFkN2U0MTVjZmQ0NjdjMWEw
NmJlMDUwMzhhNTEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0hFVkNVdGlsaXRpZXNDb2NvYS5tbQpAQCAtMzEsNiArMzEsNyBA
QAogI2ltcG9ydCAiRm91ckNDLmgiCiAjaW1wb3J0ICJIRVZDVXRpbGl0aWVzLmgiCiAjaW1wb3J0
ICJNZWRpYUNhcGFiaWxpdGllc0luZm8uaCIKKyNpbXBvcnQgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5o
PgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiAjaW1w
b3J0ICJWaWRlb1Rvb2xib3hTb2Z0TGluay5oIgpAQCAtNzYsOCArNzcsOCBAQCBzdGQ6Om9wdGlv
bmFsPE1lZGlhQ2FwYWJpbGl0aWVzSW5mbz4gdmFsaWRhdGVIRVZDUGFyYW1ldGVycyhjb25zdCBI
RVZDUGFyYW1ldGVycwogICAgIGlmICghY2FwYWJpbGl0aWVzKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgYXV0byBzdXBwb3J0ZWRQcm9maWxlcyA9IChDRkFycmF5UmVmKUNG
RGljdGlvbmFyeUdldFZhbHVlKGNhcGFiaWxpdGllcy5nZXQoKSwga1ZUSEVWQ0RlY29kZXJDYXBh
YmlsaXR5X1N1cHBvcnRlZFByb2ZpbGVzKTsKLSAgICBpZiAoIXN1cHBvcnRlZFByb2ZpbGVzIHx8
IENGR2V0VHlwZUlEKHN1cHBvcnRlZFByb2ZpbGVzKSAhPSBDRkFycmF5R2V0VHlwZUlEKCkpCisg
ICAgYXV0byBzdXBwb3J0ZWRQcm9maWxlcyA9IGR5bmFtaWNfY2ZfY2FzdDxDRkFycmF5UmVmPihD
RkRpY3Rpb25hcnlHZXRWYWx1ZShjYXBhYmlsaXRpZXMuZ2V0KCksIGtWVEhFVkNEZWNvZGVyQ2Fw
YWJpbGl0eV9TdXBwb3J0ZWRQcm9maWxlcykpOworICAgIGlmICghc3VwcG9ydGVkUHJvZmlsZXMp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpbnQxNl90IGdlbmVyYWxQcm9m
aWxlSURDID0gcGFyYW1ldGVycy5nZW5lcmFsUHJvZmlsZUlEQzsKQEAgLTg2LDI1ICs4NywyMiBA
QCBzdGQ6Om9wdGlvbmFsPE1lZGlhQ2FwYWJpbGl0aWVzSW5mbz4gdmFsaWRhdGVIRVZDUGFyYW1l
dGVycyhjb25zdCBIRVZDUGFyYW1ldGVycwogICAgIGlmICghQ0ZBcnJheUNvbnRhaW5zVmFsdWUo
c3VwcG9ydGVkUHJvZmlsZXMsIHNlYXJjaFJhbmdlLCBjZkdlbmVyYWxQcm9maWxlSURDLmdldCgp
KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIGF1dG8gcGVyUHJvZmlsZVN1
cHBvcnQgPSAoQ0ZEaWN0aW9uYXJ5UmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGNhcGFiaWxpdGll
cy5nZXQoKSwga1ZUSEVWQ0RlY29kZXJDYXBhYmlsaXR5X1BlclByb2ZpbGVTdXBwb3J0KTsKLSAg
ICBpZiAoIXBlclByb2ZpbGVTdXBwb3J0IHx8IENGR2V0VHlwZUlEKHBlclByb2ZpbGVTdXBwb3J0
KSAhPSBDRkRpY3Rpb25hcnlHZXRUeXBlSUQoKSkKKyAgICBhdXRvIHBlclByb2ZpbGVTdXBwb3J0
ID0gZHluYW1pY19jZl9jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUo
Y2FwYWJpbGl0aWVzLmdldCgpLCBrVlRIRVZDRGVjb2RlckNhcGFiaWxpdHlfUGVyUHJvZmlsZVN1
cHBvcnQpKTsKKyAgICBpZiAoIXBlclByb2ZpbGVTdXBwb3J0KQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgYXV0byBnZW5lcmFsUHJvZmlsZUlEQ1N0cmluZyA9IFN0cmluZzo6
bnVtYmVyKGdlbmVyYWxQcm9maWxlSURDKS5jcmVhdGVDRlN0cmluZygpOwotICAgIGF1dG8gcHJv
ZmlsZVN1cHBvcnQgPSAoQ0ZEaWN0aW9uYXJ5UmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKHBlclBy
b2ZpbGVTdXBwb3J0LCBnZW5lcmFsUHJvZmlsZUlEQ1N0cmluZy5nZXQoKSk7Ci0gICAgaWYgKCFw
cm9maWxlU3VwcG9ydCB8fCBDRkdldFR5cGVJRChwcm9maWxlU3VwcG9ydCkgIT0gQ0ZEaWN0aW9u
YXJ5R2V0VHlwZUlEKCkpCisgICAgYXV0byBwcm9maWxlU3VwcG9ydCA9IGR5bmFtaWNfY2ZfY2Fz
dDxDRkRpY3Rpb25hcnlSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKHBlclByb2ZpbGVTdXBwb3J0
LCBnZW5lcmFsUHJvZmlsZUlEQ1N0cmluZy5nZXQoKSkpOworICAgIGlmICghcHJvZmlsZVN1cHBv
cnQpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBNZWRpYUNhcGFiaWxpdGll
c0luZm8gaW5mbzsKIAogICAgIGluZm8uc3VwcG9ydGVkID0gdHJ1ZTsKIAotICAgIGF1dG8gaXNI
YXJkd2FyZUFjY2VsZXJhdGVkID0gKENGQm9vbGVhblJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShw
cm9maWxlU3VwcG9ydCwga1ZUSEVWQ0RlY29kZXJQcm9maWxlQ2FwYWJpbGl0eV9Jc0hhcmR3YXJl
QWNjZWxlcmF0ZWQpOwotICAgIGlmIChpc0hhcmR3YXJlQWNjZWxlcmF0ZWQgJiYgQ0ZHZXRUeXBl
SUQoaXNIYXJkd2FyZUFjY2VsZXJhdGVkKSA9PSBDRkJvb2xlYW5HZXRUeXBlSUQoKSkKLSAgICAg
ICAgaW5mby5wb3dlckVmZmljaWVudCA9IENGQm9vbGVhbkdldFZhbHVlKGlzSGFyZHdhcmVBY2Nl
bGVyYXRlZCk7CisgICAgaW5mby5wb3dlckVmZmljaWVudCA9IENGRGljdGlvbmFyeUdldFZhbHVl
KHByb2ZpbGVTdXBwb3J0LCBrVlRIRVZDRGVjb2RlclByb2ZpbGVDYXBhYmlsaXR5X0lzSGFyZHdh
cmVBY2NlbGVyYXRlZCkgPT0ga0NGQm9vbGVhblRydWU7CiAKLSAgICBhdXRvIGNmTWF4RGVjb2Rl
TGV2ZWwgPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvZmlsZVN1cHBvcnQs
IGtWVEhFVkNEZWNvZGVyUHJvZmlsZUNhcGFiaWxpdHlfTWF4RGVjb2RlTGV2ZWwpOwotICAgIGlm
IChjZk1heERlY29kZUxldmVsICYmIENGR2V0VHlwZUlEKGNmTWF4RGVjb2RlTGV2ZWwpID09IENG
TnVtYmVyR2V0VHlwZUlEKCkpIHsKKyAgICBpZiAoYXV0byBjZk1heERlY29kZUxldmVsID0gZHlu
YW1pY19jZl9jYXN0PENGTnVtYmVyUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9maWxlU3Vw
cG9ydCwga1ZUSEVWQ0RlY29kZXJQcm9maWxlQ2FwYWJpbGl0eV9NYXhEZWNvZGVMZXZlbCkpKSB7
CiAgICAgICAgIGludDE2X3QgbWF4RGVjb2RlTGV2ZWwgPSAwOwogICAgICAgICBpZiAoIUNGTnVt
YmVyR2V0VmFsdWUoY2ZNYXhEZWNvZGVMZXZlbCwga0NGTnVtYmVyU0ludDE2VHlwZSwgJm1heERl
Y29kZUxldmVsKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xMTMsOCAr
MTExLDcgQEAgc3RkOjpvcHRpb25hbDxNZWRpYUNhcGFiaWxpdGllc0luZm8+IHZhbGlkYXRlSEVW
Q1BhcmFtZXRlcnMoY29uc3QgSEVWQ1BhcmFtZXRlcnMKICAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAgICAgfQogCi0gICAgYXV0byBjZk1heFBsYXliYWNrTGV2ZWwgPSAoQ0ZOdW1i
ZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvZmlsZVN1cHBvcnQsIGtWVEhFVkNEZWNvZGVy
UHJvZmlsZUNhcGFiaWxpdHlfTWF4UGxheWJhY2tMZXZlbCk7Ci0gICAgaWYgKGNmTWF4UGxheWJh
Y2tMZXZlbCAmJiBDRkdldFR5cGVJRChjZk1heFBsYXliYWNrTGV2ZWwpID09IENGTnVtYmVyR2V0
VHlwZUlEKCkpIHsKKyAgICBpZiAoYXV0byBjZk1heFBsYXliYWNrTGV2ZWwgPSBkeW5hbWljX2Nm
X2Nhc3Q8Q0ZOdW1iZXJSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKHByb2ZpbGVTdXBwb3J0LCBr
VlRIRVZDRGVjb2RlclByb2ZpbGVDYXBhYmlsaXR5X01heFBsYXliYWNrTGV2ZWwpKSkgewogICAg
ICAgICBpbnQxNl90IG1heFBsYXliYWNrTGV2ZWwgPSAwOwogICAgICAgICBpZiAoIUNGTnVtYmVy
R2V0VmFsdWUoY2ZNYXhQbGF5YmFja0xldmVsLCBrQ0ZOdW1iZXJTSW50MTZUeXBlLCAmbWF4UGxh
eWJhY2tMZXZlbCkpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTk2LDEw
ICsxOTMsNyBAQCBzdGQ6Om9wdGlvbmFsPE1lZGlhQ2FwYWJpbGl0aWVzSW5mbz4gdmFsaWRhdGVE
b1ZpUGFyYW1ldGVycyhjb25zdCBEb1ZpUGFyYW1ldGVycwogICAgIGlmICghc3VwcG9ydGVkTGV2
ZWxzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgYXV0byBpc0hhcmR3YXJl
QWNjZWxlcmF0ZWRDRiA9IChDRkJvb2xlYW5SZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoY2FwYWJp
bGl0aWVzLmdldCgpLCBrVlREb2xieVZpc2lvbkRlY29kZXJDYXBhYmlsaXR5X0lzSGFyZHdhcmVB
Y2NlbGVyYXRlZCk7Ci0gICAgaWYgKCFpc0hhcmR3YXJlQWNjZWxlcmF0ZWRDRiB8fCBDRkdldFR5
cGVJRChpc0hhcmR3YXJlQWNjZWxlcmF0ZWRDRikgIT0gQ0ZCb29sZWFuR2V0VHlwZUlEKCkpCi0g
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgYm9vbCBpc0hhcmR3YXJlQWNjZWxlcmF0
ZWQgPSBDRkJvb2xlYW5HZXRWYWx1ZShpc0hhcmR3YXJlQWNjZWxlcmF0ZWRDRik7CisgICAgYm9v
bCBpc0hhcmR3YXJlQWNjZWxlcmF0ZWQgPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShjYXBhYmlsaXRp
ZXMuZ2V0KCksIGtWVERvbGJ5VmlzaW9uRGVjb2RlckNhcGFiaWxpdHlfSXNIYXJkd2FyZUFjY2Vs
ZXJhdGVkKSA9PSBrQ0ZCb29sZWFuVHJ1ZTsKIAogICAgIGlmICghc3VwcG9ydGVkUHJvZmlsZXMu
dmFsdWUoKS5jb250YWlucyhwYXJhbWV0ZXJzLmJpdHN0cmVhbVByb2ZpbGVJRCkgfHwgIXN1cHBv
cnRlZExldmVscy52YWx1ZSgpLmNvbnRhaW5zKHBhcmFtZXRlcnMuYml0c3RyZWFtTGV2ZWxJRCkp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24ubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVz
c2lvblNlc3Npb24ubW0KaW5kZXggZDFjODQ0ODgzNjc0MGZkYjc1YzQwYWM5M2Y3ZGQwOWQ3OGYw
MzAwMC4uYjVmYTU4ZWM0Mjk2YzZmMzZhMWRmNzEzMzQwMGEyNTQzMDZlMjU2ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29tcHJl
c3Npb25TZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5tbQpAQCAtMTk0LDggKzE5NCw3IEBAIGJv
b2wgV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOjpzaG91bGREZWNvZGVTYW1wbGUoQ01TYW1w
bGVCdWZmZXJSZWYgc2FtcGxlLCBiCiAKICAgICBmb3IgKENGSW5kZXggaW5kZXggPSAwLCBjb3Vu
dCA9IENGQXJyYXlHZXRDb3VudChhdHRhY2htZW50cyk7IGluZGV4IDwgY291bnQ7ICsraW5kZXgp
IHsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5UmVmIGF0dGFjaG1lbnREaWN0ID0gKENGRGljdGlvbmFy
eVJlZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KGF0dGFjaG1lbnRzLCBpbmRleCk7Ci0gICAgICAg
IENGQm9vbGVhblJlZiBkZXBlbmRlZE9uID0gKENGQm9vbGVhblJlZilDRkRpY3Rpb25hcnlHZXRW
YWx1ZShhdHRhY2htZW50RGljdCwgUEFMOjprQ01TYW1wbGVBdHRhY2htZW50S2V5X0lzRGVwZW5k
ZWRPbkJ5T3RoZXJzKTsKLSAgICAgICAgaWYgKGRlcGVuZGVkT24gJiYgIUNGQm9vbGVhbkdldFZh
bHVlKGRlcGVuZGVkT24pKQorICAgICAgICBpZiAoQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoYXR0YWNo
bWVudERpY3QsIFBBTDo6a0NNU2FtcGxlQXR0YWNobWVudEtleV9Jc0RlcGVuZGVkT25CeU90aGVy
cykgPT0ga0NGQm9vbGVhbkZhbHNlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQv
Rm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKaW5kZXggNjE0Yzgw
MmVkZDQ4YjVjZDlmYTQ3ZmEzZjhmZmRiOTgzMzczNjYwOC4uYjg5MTk5YzVkM2RkY2RiYzA0YWMz
YmU5OTA3MDhhMzRjNTZlOTM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29y
ZVRleHQuY3BwCkBAIC0xNDEsOSArMTQxLDkgQEAgUmV0YWluUHRyPENGVHlwZVJlZj4gRm9udFBs
YXRmb3JtRGF0YTo6b2JqZWN0Rm9yRXF1YWxpdHlDaGVjayhDVEZvbnRSZWYgY3RGb250KQogICAg
IGF1dG8gZm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udENvcHlGb250RGVzY3JpcHRvcihj
dEZvbnQpKTsKICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzODY4MyBUaGlzIGlzIGEgc2hhbGxvdyBwb2ludGVyIGNvbXBhcmUgZm9yIHdlYiBm
b250cwogICAgIC8vIGJlY2F1c2UgdGhlIFVSTCBjb250YWlucyB0aGUgYWRkcmVzcyBvZiB0aGUg
Zm9udC4gVGhpcyBtZWFucyB3ZSBtaWdodCBlcnJvbmVvdXNseSBnZXQgZmFsc2UgbmVnYXRpdmVz
LgotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDRlVS
TFJlZj4oQ1RGb250RGVzY3JpcHRvckNvcHlBdHRyaWJ1dGUoZm9udERlc2NyaXB0b3IuZ2V0KCks
IGtDVEZvbnRSZWZlcmVuY2VVUkxBdHRyaWJ1dGUpKSk7Ci0gICAgQVNTRVJUKCF1cmwgfHwgQ0ZH
ZXRUeXBlSUQodXJsLmdldCgpKSA9PSBDRlVSTEdldFR5cGVJRCgpKTsKLSAgICByZXR1cm4gdXJs
OworICAgIGF1dG8gb2JqZWN0ID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ29weUF0dHJpYnV0
ZShmb250RGVzY3JpcHRvci5nZXQoKSwga0NURm9udFJlZmVyZW5jZVVSTEF0dHJpYnV0ZSkpOwor
ICAgIEFTU0VSVCghb2JqZWN0IHx8IENGR2V0VHlwZUlEKG9iamVjdC5nZXQoKSkgPT0gQ0ZVUkxH
ZXRUeXBlSUQoKSk7CisgICAgcmV0dXJuIG9iamVjdDsKIH0KIAogUmV0YWluUHRyPENGVHlwZVJl
Zj4gRm9udFBsYXRmb3JtRGF0YTo6b2JqZWN0Rm9yRXF1YWxpdHlDaGVjaygpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRl
eHRHTENWQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3Jh
cGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcAppbmRleCA2MDQ2MzllYjk1ZmE0NWI0YWZiNTk2YzFk
ZDViYmRkZDRiZjJkYTAxLi43ODAxYmU0OTYwMTRmMzQ3M2Q0NDUyNWU0NDgxNTI2NDI4YWE2ZGQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGlj
c0NvbnRleHRHTENWQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHAKQEAgLTI5LDE1ICsyOSwxNyBAQAog
I2lmIEVOQUJMRShXRUJHTCkgJiYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQog
CiAjaW5jbHVkZSAiQU5HTEVIZWFkZXJzLmgiCi0jaW5jbHVkZSAiQ29yZVZpZGVvU29mdExpbmsu
aCIKICNpbmNsdWRlICJGb3VyQ0MuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSA8
cGFsL3NwaS9jZi9Db3JlVmlkZW9TUEkuaD4KICNpbmNsdWRlIDxwYWwvc3BpL2NvY29hL0lPU3Vy
ZmFjZVNQSS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0
Zi9TdGRNYXAuaD4KKyNpbmNsdWRlIDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKKyNpbmNsdWRlICJDb3JlVmlkZW9Tb2Z0TGluay5o
IgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdGV4cHIgYXV0byBzX3l1dlZl
cnRleFNoYWRlclRleHR1cmUyRCB7CkBAIC0xNTgsNyArMTYwLDcgQEAgc3RhdGljIFBpeGVsUmFu
Z2UgcGl4ZWxSYW5nZUZyb21QaXhlbEZvcm1hdChPU1R5cGUgcGl4ZWxGb3JtYXQpCiAKIHN0YXRp
YyBUcmFuc2ZlckZ1bmN0aW9uQ1YgdHJhbnNmZXJGdW5jdGlvbkZyb21TdHJpbmcoQ0ZTdHJpbmdS
ZWYgc3RyaW5nKQogewotICAgIGlmICghc3RyaW5nIHx8IENGR2V0VHlwZUlEKHN0cmluZykgIT0g
Q0ZTdHJpbmdHZXRUeXBlSUQoKSkKKyAgICBpZiAoIXN0cmluZykKICAgICAgICAgcmV0dXJuIFRy
YW5zZmVyRnVuY3Rpb25DVjo6VW5rbm93bjsKICAgICBpZiAoQ0ZFcXVhbChzdHJpbmcsIGtDVklt
YWdlQnVmZmVyWUNiQ3JNYXRyaXhfSVRVX1JfNzA5XzIpKQogICAgICAgICByZXR1cm4gVHJhbnNm
ZXJGdW5jdGlvbkNWOjprSVRVX1JfNzA5XzI7CkBAIC02OTksNyArNzAxLDcgQEAgYm9vbCBHcmFw
aGljc0NvbnRleHRHTENWQU5HTEU6OmNvcHlQaXhlbEJ1ZmZlclRvVGV4dHVyZShDVlBpeGVsQnVm
ZmVyUmVmIGltYWdlLAogICAgIG1fY29udGV4dC0+dW5pZm9ybTJmKG1fdXZUZXh0dXJlU2l6ZVVu
aWZvcm1Mb2NhdGlvbiwgdXZQbGFuZVdpZHRoLCB1dlBsYW5lSGVpZ2h0KTsKIAogICAgIGF1dG8g
cmFuZ2UgPSBwaXhlbFJhbmdlRnJvbVBpeGVsRm9ybWF0KHBpeGVsRm9ybWF0KTsKLSAgICBhdXRv
IHRyYW5zZmVyRnVuY3Rpb24gPSB0cmFuc2ZlckZ1bmN0aW9uRnJvbVN0cmluZygoQ0ZTdHJpbmdS
ZWYpQ1ZCdWZmZXJHZXRBdHRhY2htZW50KGltYWdlLCBrQ1ZJbWFnZUJ1ZmZlcllDYkNyTWF0cml4
S2V5LCBuaWwpKTsKKyAgICBhdXRvIHRyYW5zZmVyRnVuY3Rpb24gPSB0cmFuc2ZlckZ1bmN0aW9u
RnJvbVN0cmluZyhkeW5hbWljX2NmX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENWQnVmZmVyR2V0QXR0YWNo
bWVudChpbWFnZSwga0NWSW1hZ2VCdWZmZXJZQ2JDck1hdHJpeEtleSwgbmlsKSkpOwogICAgIGF1
dG8gY29sb3JNYXRyaXggPSBZQ2JDclRvUkdCTWF0cml4Rm9yUmFuZ2VBbmRUcmFuc2ZlckZ1bmN0
aW9uKHJhbmdlLCB0cmFuc2ZlckZ1bmN0aW9uKTsKICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRy
aXg0ZnYobV9jb2xvck1hdHJpeFVuaWZvcm1Mb2NhdGlvbiwgR0xfRkFMU0UsIGNvbG9yTWF0cml4
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElP
Uy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0KaW5kZXgg
M2I2ZGUxZWMwZjNmYzVkMTQyZGNlYzZhNWFhNmQzMWNjOGQ4MGU1NS4uMTMzZmMzNGQ2N2RiNTcw
MzUxY2Q3YmViMDViMDIyMDQ5ZWI5OTlmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvVXNlckFnZW50SU9TLm1tCkBAIC0zMCwxMCArMzAsMTIgQEAKIAogI2ltcG9ydCAiRGV2aWNl
LmgiCiAjaW1wb3J0ICJTeXN0ZW1WZXJzaW9uLmgiCi0jaW1wb3J0IDxwYWwvaW9zL1VJS2l0U29m
dExpbmsuaD4KICNpbXBvcnQgPHBhbC9zcGkvaW9zL01vYmlsZUdlc3RhbHRTUEkuaD4KICNpbXBv
cnQgPHBhbC9zcGkvaW9zL1VJS2l0U1BJLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+Cisj
aW1wb3J0IDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4KKworI2ltcG9ydCA8cGFsL2lvcy9VSUtpdFNv
ZnRMaW5rLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtODEsMjQgKzgzLDE1IEBAIHN0
YXRpYyBpbmxpbmUgU3RyaW5nIGRldmljZU5hbWVGb3JVc2VyQWdlbnQoKQogCiBTdHJpbmcgc3Rh
bmRhcmRVc2VyQWdlbnRXaXRoQXBwbGljYXRpb25OYW1lKGNvbnN0IFN0cmluZyYgYXBwbGljYXRp
b25OYW1lLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudE9TVmVyc2lvbiwgVXNlckFnZW50VHlwZSB0
eXBlKQogewotICAgIGlmICh0eXBlID09IFVzZXJBZ2VudFR5cGU6OkRlc2t0b3ApIHsKLSAgICAg
ICAgU3RyaW5nIGFwcE5hbWVTdWZmaXggPSBhcHBsaWNhdGlvbk5hbWUuaXNFbXB0eSgpID8gIiIg
OiBtYWtlU3RyaW5nKCIgIiwgYXBwbGljYXRpb25OYW1lKTsKLSAgICAgICAgcmV0dXJuIG1ha2VT
dHJpbmcoIk1vemlsbGEvNS4wIChNYWNpbnRvc2g7IEludGVsIE1hYyBPUyBYIDEwXzE1XzYpIEFw
cGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykiLCBhcHBOYW1lU3VmZml4KTsK
LSAgICB9Ci0KLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGRlcHJlY2F0ZSBhbmQgZXZlbnR1YWxs
eSByZW1vdmUgdGhpcyBvYnNvbGV0ZSBVQSBvdmVycmlkZTsKLSAgICAvLyBzZWUgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzkyNyBmb3IgZGV0YWlscy4KLSAgICAv
LyBDaGVjayB0byBzZWUgaWYgdGhlcmUgaXMgYSB1c2VyIGFnZW50IG92ZXJyaWRlIGZvciBhbGwg
V2ViS2l0IGNsaWVudHMuCi0gICAgYXV0byBvdmVycmlkZSA9IGFkb3B0Q0YoQ0ZQcmVmZXJlbmNl
c0NvcHlBcHBWYWx1ZShDRlNUUigiVXNlckFnZW50IiksIENGU1RSKCJjb20uYXBwbGUuV2ViRm91
bmRhdGlvbiIpKSk7Ci0gICAgaWYgKG92ZXJyaWRlKSB7Ci0gICAgICAgIGlmIChDRkdldFR5cGVJ
RChvdmVycmlkZS5nZXQoKSkgPT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkKLSAgICAgICAgICAgIHJl
dHVybiAoX19icmlkZ2UgTlNTdHJpbmcgKilvdmVycmlkZS5nZXQoKTsKLSAgICB9CisgICAgaWYg
KHR5cGUgPT0gVXNlckFnZW50VHlwZTo6RGVza3RvcCkKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJp
bmcoIk1vemlsbGEvNS4wIChNYWNpbnRvc2g7IEludGVsIE1hYyBPUyBYIDEwXzE1XzYpIEFwcGxl
V2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykiLCBhcHBsaWNhdGlvbk5hbWUuaXNF
bXB0eSgpID8gIiIgOiAiICIsIGFwcGxpY2F0aW9uTmFtZSk7CiAKLSAgICBTdHJpbmcgb3NWZXJz
aW9uID0gdXNlckFnZW50T1NWZXJzaW9uLmlzRW1wdHkoKSAgPyBzeXN0ZW1NYXJrZXRpbmdWZXJz
aW9uRm9yVXNlckFnZW50U3RyaW5nKCkgOiB1c2VyQWdlbnRPU1ZlcnNpb247Ci0gICAgU3RyaW5n
IGFwcE5hbWVTdWZmaXggPSBhcHBsaWNhdGlvbk5hbWUuaXNFbXB0eSgpID8gIiIgOiBtYWtlU3Ry
aW5nKCIgIiwgYXBwbGljYXRpb25OYW1lKTsKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGRlcHJl
Y2F0ZSBhbmQgcmVtb3ZlIHRoaXMgb3ZlcnJpZGU7IHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE3OTI3IGZvciBkZXRhaWxzLgorICAgIGlmIChhdXRvIG92ZXJy
aWRlID0gZHluYW1pY19jZl9jYXN0PENGU3RyaW5nUmVmPihhZG9wdENGKENGUHJlZmVyZW5jZXND
b3B5QXBwVmFsdWUoQ0ZTVFIoIlVzZXJBZ2VudCIpLCBDRlNUUigiY29tLmFwcGxlLldlYkZvdW5k
YXRpb24iKSkpKSkKKyAgICAgICAgcmV0dXJuIG92ZXJyaWRlLmdldCgpOwogCi0gICAgcmV0dXJu
IG1ha2VTdHJpbmcoIk1vemlsbGEvNS4wICgiLCBkZXZpY2VOYW1lRm9yVXNlckFnZW50KCksICI7
IENQVSAiLCBvc05hbWVGb3JVc2VyQWdlbnQoKSwgIiAiLCBvc1ZlcnNpb24sICIgbGlrZSBNYWMg
T1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSIsIGFwcE5hbWVT
dWZmaXgpOworICAgIGF1dG8gb3NWZXJzaW9uID0gdXNlckFnZW50T1NWZXJzaW9uLmlzRW1wdHko
KSA/IHN5c3RlbU1hcmtldGluZ1ZlcnNpb25Gb3JVc2VyQWdlbnRTdHJpbmcoKSA6IHVzZXJBZ2Vu
dE9TVmVyc2lvbjsKKyAgICByZXR1cm4gbWFrZVN0cmluZygiTW96aWxsYS81LjAgKCIsIGRldmlj
ZU5hbWVGb3JVc2VyQWdlbnQoKSwgIjsgQ1BVICIsIG9zTmFtZUZvclVzZXJBZ2VudCgpLCAiICIs
IG9zVmVyc2lvbiwgIiBsaWtlIE1hYyBPUyBYKSBBcHBsZVdlYktpdC82MDUuMS4xNSAoS0hUTUws
IGxpa2UgR2Vja28pIiwgYXBwbGljYXRpb25OYW1lLmlzRW1wdHkoKSA/ICIiIDogIiAiLCBhcHBs
aWNhdGlvbk5hbWUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dpbmRvd0Rpc3BsYXlDYXB0
dXJlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XaW5k
b3dEaXNwbGF5Q2FwdHVyZXJNYWMubW0KaW5kZXggZjAyY2U4ZmRmMGYwYzU4ZjQwNzBkNGI0Yjc4
MWVkYjVmMWVjMjFkYi4uYjJlNjQ3MzkyNGFmZWY5NDliYzk5OGM2ODg0NzY2YTE5YTllY2FkMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dpbmRv
d0Rpc3BsYXlDYXB0dXJlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvV2luZG93RGlzcGxheUNhcHR1cmVyTWFjLm1tCkBAIC03MSw4ICs3MSw3IEBA
IHN0YXRpYyBib29sIGFueU9mQ0dXaW5kb3coY29uc3QgRnVuY3Rpb248Ym9vbChDRkRpY3Rpb25h
cnlSZWYgaW5mbywgdW5zaWduZWQgaWQsCiAgICAgICAgIGlmICh3aW5kb3dMYXllcikKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGF1dG8gb25TY3JlZW4gPSBjaGVja2VkX2NmX2Nh
c3Q8Q0ZCb29sZWFuUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZSh3aW5kb3dJbmZvLCBrQ0dXaW5k
b3dJc09uc2NyZWVuKSk7Ci0gICAgICAgIGlmICghQ0ZCb29sZWFuR2V0VmFsdWUob25TY3JlZW4p
KQorICAgICAgICBpZiAoQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUod2luZG93SW5mbywga0NHV2luZG93
SXNPbnNjcmVlbikgPT0ga0NGQm9vbGVhbkZhbHNlKQogICAgICAgICAgICAgY29udGludWU7CiAK
ICAgICAgICAgYXV0byB3aW5kb3dJRFJlZiA9IGNoZWNrZWRfY2ZfY2FzdDxDRk51bWJlclJlZj4o
Q0ZEaWN0aW9uYXJ5R2V0VmFsdWUod2luZG93SW5mbywga0NHV2luZG93TnVtYmVyKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3h5U2VydmVyQ0ZO
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNG
TmV0LmNwcAppbmRleCA2NGNmYzliZWNkYjI2Y2I1M2QwZTE0MTA0ZWM0ZTFkZmM2OWIyZjQwLi41
OTFjMzMwZDdiOTFkYjA0YmFlZjI4ZmVlYzAxMTJhOTMwMDYxY2FjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3h5U2VydmVyQ0ZOZXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJveHlTZXJ2ZXJDRk5ldC5jcHAK
QEAgLTc2LDggKzc2LDggQEAgc3RhdGljIHZvaWQgcHJvY2Vzc1Byb3h5U2VydmVycyhWZWN0b3I8
UHJveHlTZXJ2ZXI+JiBwcm94eVNlcnZlcnMsIENGQXJyYXlSZWYgcHIKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKIAogICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCByZXN0cnVjdHVy
ZSB0byBhbGxvdyB0aGlzIHRvIGhhcHBlbiBhc3luY2hyb25vdXNseS4KLSAgICAgICAgICAgIENG
VVJMUmVmIHNjcmlwdFVSTCA9IHN0YXRpY19jYXN0PENGVVJMUmVmPihDRkRpY3Rpb25hcnlHZXRW
YWx1ZShwcm94eURpY3Rpb25hcnksIGtDRlByb3h5QXV0b0NvbmZpZ3VyYXRpb25VUkxLZXkpKTsK
LSAgICAgICAgICAgIGlmICghc2NyaXB0VVJMIHx8IENGR2V0VHlwZUlEKHNjcmlwdFVSTCkgIT0g
Q0ZVUkxHZXRUeXBlSUQoKSkKKyAgICAgICAgICAgIGF1dG8gc2NyaXB0VVJMID0gZHluYW1pY19j
Zl9jYXN0PENGVVJMUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm94eURpY3Rpb25hcnksIGtD
RlByb3h5QXV0b0NvbmZpZ3VyYXRpb25VUkxLZXkpKTsKKyAgICAgICAgICAgIGlmICghc2NyaXB0
VVJMKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBDRlN0cmVhbUNs
aWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgKHZvaWQqKSZwcm94eVNlcnZlcnMsIDAsIDAsIDAg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0
U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcAppbmRleCA1NWI5ZjFlZDRhMGQz
MjVhNmIxNmExMTQzODlmMzljN2RlZDM2Y2E2Li44NTBmY2ExN2EyMWQ5NzFhOWUyMDI3OWEyMzEy
ZTJkYTI3OTAwNDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCkBAIC0y
NDksMTIgKzI0OSw5IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y2hvb3NlUHJveHlG
cm9tQXJyYXkoQ0ZBcnJheVJlZiBwcm94eUFycmF5KQogCiAgICAgLy8gUEFDIGlzIGFsd2F5cyB0
aGUgZmlyc3QgZW50cnksIGlmIHByZXNlbnQuCiAgICAgaWYgKHByb3h5QXJyYXlDb3VudCkgewot
ICAgICAgICBDRkRpY3Rpb25hcnlSZWYgcHJveHlJbmZvID0gc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9u
YXJ5UmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KHByb3h5QXJyYXksIDApKTsKLSAgICAgICAg
Q0ZUeXBlUmVmIHByb3h5VHlwZSA9IENGRGljdGlvbmFyeUdldFZhbHVlKHByb3h5SW5mbywga0NG
UHJveHlUeXBlS2V5KTsKLSAgICAgICAgaWYgKHByb3h5VHlwZSAmJiBDRkdldFR5cGVJRChwcm94
eVR5cGUpID09IENGU3RyaW5nR2V0VHlwZUlEKCkpIHsKLSAgICAgICAgICAgIGlmIChDRkVxdWFs
KHByb3h5VHlwZSwga0NGUHJveHlUeXBlQXV0b0NvbmZpZ3VyYXRpb25VUkwpKSB7Ci0gICAgICAg
ICAgICAgICAgQ0ZUeXBlUmVmIHBhY0ZpbGVVUkwgPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm94
eUluZm8sIGtDRlByb3h5QXV0b0NvbmZpZ3VyYXRpb25VUkxLZXkpOwotICAgICAgICAgICAgICAg
IGlmIChwYWNGaWxlVVJMICYmIENGR2V0VHlwZUlEKHBhY0ZpbGVVUkwpID09IENGVVJMR2V0VHlw
ZUlEKCkpIHsKKyAgICAgICAgaWYgKGF1dG8gcHJveHlJbmZvID0gZHluYW1pY19jZl9jYXN0PENG
RGljdGlvbmFyeVJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChwcm94eUFycmF5LCAwKSkpIHsK
KyAgICAgICAgICAgIGlmIChhdXRvIHByb3h5VHlwZSA9IGR5bmFtaWNfY2ZfY2FzdDxDRlN0cmlu
Z1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJveHlJbmZvLCBrQ0ZQcm94eVR5cGVLZXkpKTsg
cHJveHlUeXBlICYmIENGRXF1YWwocHJveHlUeXBlLCBrQ0ZQcm94eVR5cGVBdXRvQ29uZmlndXJh
dGlvblVSTCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byBwYWNGaWxlVVJMID0gZHluYW1p
Y19jZl9jYXN0PENGVVJMUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm94eUluZm8sIGtDRlBy
b3h5QXV0b0NvbmZpZ3VyYXRpb25VUkxLZXkpKSkgewogICAgICAgICAgICAgICAgICAgICBleGVj
dXRlUEFDRmlsZVVSTChzdGF0aWNfY2FzdDxDRlVSTFJlZj4ocGFjRmlsZVVSTCkpOwogICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQpAQCAtMjYyLDIwICsyNTks
MjAgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjaG9vc2VQcm94eUZyb21BcnJheShD
RkFycmF5UmVmIHByb3h5QXJyYXkpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBDRkRpY3Rpb25h
cnlSZWYgY2hvc2VuUHJveHkgPSAwOworICAgIENGRGljdGlvbmFyeVJlZiBjaG9zZW5Qcm94eSA9
IG51bGxwdHI7CiAgICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwgcHJveHlBcnJheUNvdW50OyAr
K2kpIHsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5UmVmIHByb3h5SW5mbyA9IHN0YXRpY19jYXN0PENG
RGljdGlvbmFyeVJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChwcm94eUFycmF5LCBpKSk7Ci0g
ICAgICAgIENGVHlwZVJlZiBwcm94eVR5cGUgPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm94eUlu
Zm8sIGtDRlByb3h5VHlwZUtleSk7Ci0gICAgICAgIGlmIChwcm94eVR5cGUgJiYgQ0ZHZXRUeXBl
SUQocHJveHlUeXBlKSA9PSBDRlN0cmluZ0dldFR5cGVJRCgpKSB7Ci0gICAgICAgICAgICBpZiAo
Q0ZFcXVhbChwcm94eVR5cGUsIGtDRlByb3h5VHlwZVNPQ0tTKSkgewotICAgICAgICAgICAgICAg
IG1fY29ubmVjdGlvblR5cGUgPSBTT0NLU1Byb3h5OwotICAgICAgICAgICAgICAgIGNob3NlblBy
b3h5ID0gcHJveHlJbmZvOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgaWYgKENGRXF1YWwocHJveHlUeXBlLCBrQ0ZQcm94eVR5cGVIVFRQUykpIHsK
LSAgICAgICAgICAgICAgICBtX2Nvbm5lY3Rpb25UeXBlID0gQ09OTkVDVFByb3h5OwotICAgICAg
ICAgICAgICAgIGNob3NlblByb3h5ID0gcHJveHlJbmZvOwotICAgICAgICAgICAgICAgIC8vIEtl
ZXAgbG9va2luZyBmb3IgcHJveGllcywgYXMgYSBTT0NLUyBvbmUgaXMgcHJlZmVyYWJsZS4KKyAg
ICAgICAgaWYgKGF1dG8gcHJveHlJbmZvID0gZHluYW1pY19jZl9jYXN0PENGRGljdGlvbmFyeVJl
Zj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChwcm94eUFycmF5LCBpKSkpIHsKKyAgICAgICAgICAg
IGlmIChhdXRvIHByb3h5VHlwZSA9IGR5bmFtaWNfY2ZfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0
aW9uYXJ5R2V0VmFsdWUocHJveHlJbmZvLCBrQ0ZQcm94eVR5cGVLZXkpKSkgeworICAgICAgICAg
ICAgICAgIGlmIChDRkVxdWFsKHByb3h5VHlwZSwga0NGUHJveHlUeXBlU09DS1MpKSB7CisgICAg
ICAgICAgICAgICAgICAgIG1fY29ubmVjdGlvblR5cGUgPSBTT0NLU1Byb3h5OworICAgICAgICAg
ICAgICAgICAgICBjaG9zZW5Qcm94eSA9IHByb3h5SW5mbzsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChDRkVxdWFsKHBy
b3h5VHlwZSwga0NGUHJveHlUeXBlSFRUUFMpKSB7CisgICAgICAgICAgICAgICAgICAgIG1fY29u
bmVjdGlvblR5cGUgPSBDT05ORUNUUHJveHk7CisgICAgICAgICAgICAgICAgICAgIGNob3NlblBy
b3h5ID0gcHJveHlJbmZvOworICAgICAgICAgICAgICAgICAgICAvLyBLZWVwIGxvb2tpbmcgZm9y
IHByb3hpZXMsIGFzIGEgU09DS1Mgb25lIGlzIHByZWZlcmFibGUuCisgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMjg0LDEyICsyODEsMTIgQEAg
dm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjaG9vc2VQcm94eUZyb21BcnJheShDRkFycmF5
UmVmIHByb3h5QXJyYXkpCiAgICAgICAgIEFTU0VSVChtX2Nvbm5lY3Rpb25UeXBlICE9IFVua25v
d24pOwogICAgICAgICBBU1NFUlQobV9jb25uZWN0aW9uVHlwZSAhPSBEaXJlY3QpOwogCi0gICAg
ICAgIENGVHlwZVJlZiBwcm94eUhvc3QgPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShjaG9zZW5Qcm94
eSwga0NGUHJveHlIb3N0TmFtZUtleSk7Ci0gICAgICAgIENGVHlwZVJlZiBwcm94eVBvcnQgPSBD
RkRpY3Rpb25hcnlHZXRWYWx1ZShjaG9zZW5Qcm94eSwga0NGUHJveHlQb3J0TnVtYmVyS2V5KTsK
KyAgICAgICAgYXV0byBwcm94eUhvc3QgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENG
RGljdGlvbmFyeUdldFZhbHVlKGNob3NlblByb3h5LCBrQ0ZQcm94eUhvc3ROYW1lS2V5KSk7Cisg
ICAgICAgIGF1dG8gcHJveHlQb3J0ID0gZHluYW1pY19jZl9jYXN0PENGTnVtYmVyUmVmPihDRkRp
Y3Rpb25hcnlHZXRWYWx1ZShjaG9zZW5Qcm94eSwga0NGUHJveHlQb3J0TnVtYmVyS2V5KSk7CiAK
LSAgICAgICAgaWYgKHByb3h5SG9zdCAmJiBDRkdldFR5cGVJRChwcm94eUhvc3QpID09IENGU3Ry
aW5nR2V0VHlwZUlEKCkgJiYgcHJveHlQb3J0ICYmIENGR2V0VHlwZUlEKHByb3h5UG9ydCkgPT0g
Q0ZOdW1iZXJHZXRUeXBlSUQoKSkgewotICAgICAgICAgICAgbV9wcm94eUhvc3QgPSBzdGF0aWNf
Y2FzdDxDRlN0cmluZ1JlZj4ocHJveHlIb3N0KTsKLSAgICAgICAgICAgIG1fcHJveHlQb3J0ID0g
c3RhdGljX2Nhc3Q8Q0ZOdW1iZXJSZWY+KHByb3h5UG9ydCk7CisgICAgICAgIGlmIChwcm94eUhv
c3QgJiYgcHJveHlQb3J0KSB7CisgICAgICAgICAgICBtX3Byb3h5SG9zdCA9IHByb3h5SG9zdDsK
KyAgICAgICAgICAgIG1fcHJveHlQb3J0ID0gcHJveHlQb3J0OwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9pb3MvV2ViQ29yZVVSTFJlc3BvbnNlSU9TLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2lvcy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MuaAppbmRleCA4ZDNjN2NiMWZi
MjViMzc4YTE0ODE2OTVmNzMyMTRhYmJlNmRmMzBkLi5mMzAyODc4MDJhZTI0MDY5ZjViYTIyODIz
NTA2OTllOTAzNjIwOGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2lvcy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2lvcy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MuaApAQCAtMzAsMTggKzMwLDE1
IEBACiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCi0jaWZkZWYgX19PQkpDX18KLSNpbmNs
dWRlICJXZWJDb3JlVVJMUmVzcG9uc2UuaCIKLSNlbmRpZgotCiAjaW5jbHVkZSAiTUlNRVR5cGVS
ZWdpc3RyeS5oIgorI2luY2x1ZGUgIldlYkNvcmVVUkxSZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KICNpZiBVU0UoUVVJ
Q0tfTE9PSykKICAgICAKLWlubGluZSBib29sIHNob3VsZFVzZVF1aWNrTG9va0Zvck1JTUVUeXBl
KGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSkKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworaW5s
aW5lIGJvb2wgc2hvdWxkVXNlUXVpY2tMb29rRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSkKIHsKICAgICBpZiAoKCFNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZE5vbkltYWdl
TUlNRVR5cGUobWltZVR5cGUpICAgICAgIC8vIGlnbm9yZSBzdXBwb3J0ZWQgbm9uLWltYWdlIE1J
TUUgdHlwZXMKICAgICAgICAgICYmICFNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdl
TUlNRVR5cGUobWltZVR5cGUpICAgICAgIC8vIGlnbm9yZSBzdXBwb3J0ZWQgaW1hZ2UgTUlNRSB0
eXBlcwpAQCAtNTcsOCArNTQsOCBAQCBpbmxpbmUgYm9vbCBzaG91bGRVc2VRdWlja0xvb2tGb3JN
SU1FVHlwZShjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUpCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi0jZW5kaWYgLy8gVVNFKFFVSUNLX0xPT0spCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAorI2VuZGlmIC8vIFVTRShRVUlDS19MT09LKQorCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZB
TUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1dl
YkNvcmVVUkxSZXNwb25zZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
aW9zL1dlYkNvcmVVUkxSZXNwb25zZUlPUy5tbQppbmRleCAzNTc3NDBmMjI1NmY5ODkwYmE3MWEz
NjM4ZWY1NzA3ZTcxYTlkOWIxLi5lZTZjZTUxZmI1ZjUwNTE1MTVlN2FlNzk5YmFhM2U0NTFkZGZm
ODNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9XZWJD
b3JlVVJMUmVzcG9uc2VJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9pb3MvV2ViQ29yZVVSTFJlc3BvbnNlSU9TLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDgxICszMiw0NCBAQAogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIlF1aWNrTG9vay5oIgotI2ltcG9ydCAiVVRJVXRp
bGl0aWVzLmgiCiAjaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2Vz
Lmg+CisKICNpbXBvcnQgPHBhbC9pb3MvUXVpY2tMb29rU29mdExpbmsuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi0vLyA8cmRhcjovL3Byb2JsZW0vNDYzMzI4OTM+IFJlZ2lzdGVyIC5tanMg
ZmlsZXMgYXMgd2hhdGV2ZXIgVVRJIGluZGljYXRlcyBKYXZhU2NyaXB0Ci1zdGF0aWMgUmV0YWlu
UHRyPENGRGljdGlvbmFyeVJlZj4gY3JlYXRlRXh0ZW5zaW9uVG9NSU1FVHlwZU1hcCgpCi17Ci0g
ICAgQ0ZTdHJpbmdSZWYga2V5c1tdID0gewotICAgICAgICBDRlNUUigibWpzIikKLSAgICB9Owot
Ci0gICAgQ0ZTdHJpbmdSZWYgdmFsdWVzW10gPSB7Ci0gICAgICAgIENGU1RSKCJ0ZXh0L2phdmFz
Y3JpcHQiKQotICAgIH07CisjaWYgIVVTRShRVUlDS19MT09LKQogCi0gICAgQVNTRVJUKHNpemVv
ZihrZXlzKSA9PSBzaXplb2YodmFsdWVzKSk7Ci0gICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEaWN0aW9u
YXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCB2b2lkKiopJmtleXMsIChjb25z
dCB2b2lkKiopJnZhbHVlcywgc2l6ZW9mKGtleXMpIC8gc2l6ZW9mKENGU3RyaW5nUmVmKSwgJmtD
RlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxC
YWNrcykpOwordm9pZCBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KENGVVJMUmVzcG9uc2VSZWYs
IGJvb2wpCit7CiB9CiAKLXZvaWQgYWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeShDRlVSTFJlc3Bv
bnNlUmVmIGNmUmVzcG9uc2UsIGJvb2wgaXNNYWluUmVzb3VyY2VMb2FkKQorI2Vsc2UKKwordm9p
ZCBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KENGVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UsIGJv
b2wgaXNNYWluUmVzb3VyY2VMb2FkKQogewotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbWlt
ZVR5cGUgPSBDRlVSTFJlc3BvbnNlR2V0TUlNRVR5cGUoY2ZSZXNwb25zZSk7Ci0gICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiB1cGRhdGVkTUlNRVR5cGUgPSBtaW1lVHlwZTsKLSAgICBpZiAoIXVw
ZGF0ZWRNSU1FVHlwZSkKLSAgICAgICAgdXBkYXRlZE1JTUVUeXBlID0gZGVmYXVsdE1JTUVUeXBl
KCkuY3JlYXRlQ0ZTdHJpbmcoKTsKKyAgICBpZiAoIWlzTWFpblJlc291cmNlTG9hZCkKKyAgICAg
ICAgcmV0dXJuOwogCi0gICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzQ2MzMyODkzPiBSZWdpc3RlciAu
bWpzIGZpbGVzIGFzIHdoYXRldmVyIFVUSSBpbmRpY2F0ZXMgSmF2YVNjcmlwdAotICAgIGlmICgh
bWltZVR5cGUpIHsKLSAgICAgICAgYXV0byB1cmwgPSBDRlVSTFJlc3BvbnNlR2V0VVJMKGNmUmVz
cG9uc2UpOwotICAgICAgICBpZiAoWyhfX2JyaWRnZSBOU1VSTCAqKXVybCBpc0ZpbGVVUkxdKSB7
Ci0gICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGV4dGVuc2lvbiA9IGFkb3B0Q0Yo
Q0ZVUkxDb3B5UGF0aEV4dGVuc2lvbih1cmwpKTsKLSAgICAgICAgICAgIGlmIChleHRlbnNpb24p
IHsKLSAgICAgICAgICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGRGlj
dGlvbmFyeVJlZj4+IGV4dGVuc2lvbk1hcCA9IGNyZWF0ZUV4dGVuc2lvblRvTUlNRVR5cGVNYXAo
KTsKLSAgICAgICAgICAgICAgICBhdXRvIG11dGFibGVFeHRlbnNpb24gPSBhZG9wdENGKENGU3Ry
aW5nQ3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgZXh0ZW5zaW9uLmdl
dCgpKSk7Ci0gICAgICAgICAgICAgICAgQ0ZTdHJpbmdMb3dlcmNhc2UobXV0YWJsZUV4dGVuc2lv
bi5nZXQoKSwgTlVMTCk7Ci0gICAgICAgICAgICAgICAgZXh0ZW5zaW9uID0gV1RGTW92ZShtdXRh
YmxlRXh0ZW5zaW9uKTsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byBuZXdNSU1FVHlwZSA9IChD
RlN0cmluZ1JlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShleHRlbnNpb25NYXAuZ2V0KCkuZ2V0KCks
IGV4dGVuc2lvbi5nZXQoKSkpCi0gICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRNSU1FVHlwZSA9
IG5ld01JTUVUeXBlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQorICAgIGF1dG8g
dHlwZSA9IENGVVJMUmVzcG9uc2VHZXRNSU1FVHlwZShyZXNwb25zZSk7CisgICAgaWYgKCFzaG91
bGRVc2VRdWlja0xvb2tGb3JNSU1FVHlwZSgoX19icmlkZ2UgTlNTdHJpbmcgKil0eXBlKSkKKyAg
ICAgICAgcmV0dXJuOwogCi0jaWYgVVNFKFFVSUNLX0xPT0spCi0gICAgLy8gV2UgbXVzdCBlbnN1
cmUgdGhhdCB0aGUgTUlNRSB0eXBlIGlzIGNvcnJlY3QsIHNvIHRoYXQgUXVpY2tMb29rJ3Mgd2Vi
IHBsdWdpbiBpcyBjYWxsZWQgd2hlbiBuZWVkZWQuCi0gICAgLy8gV2UgZmlsdGVyIHRoZSBiYXNp
YyBNSU1FIHR5cGVzIHNvIHRoYXQgd2UgZG9uJ3QgZG8gdW5uZWNlc3Nhcnkgd29yayBpbiBzdGFu
ZGFyZCBicm93c2luZyBzaXR1YXRpb25zLgotICAgIGlmIChpc01haW5SZXNvdXJjZUxvYWQgJiYg
c2hvdWxkVXNlUXVpY2tMb29rRm9yTUlNRVR5cGUoKE5TU3RyaW5nICopdXBkYXRlZE1JTUVUeXBl
LmdldCgpKSkgewotICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHN1Z2dlc3RlZEZpbGVu
YW1lID0gYWRvcHRDRihDRlVSTFJlc3BvbnNlQ29weVN1Z2dlc3RlZEZpbGVuYW1lKGNmUmVzcG9u
c2UpKTsKLSAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBxdWlja0xvb2tNSU1FVHlwZSA9
IGFkb3B0Q0YoKENGU3RyaW5nUmVmKVBBTDo6c29mdExpbmtfUXVpY2tMb29rX1FMVHlwZUNvcHlC
ZXN0TWltZVR5cGVGb3JGaWxlTmFtZUFuZE1pbWVUeXBlKChOU1N0cmluZyAqKXN1Z2dlc3RlZEZp
bGVuYW1lLmdldCgpLCAoTlNTdHJpbmcgKiltaW1lVHlwZS5nZXQoKSkpOwotICAgICAgICBpZiAo
IXF1aWNrTG9va01JTUVUeXBlKSB7Ci0gICAgICAgICAgICBhdXRvIHVybCA9IENGVVJMUmVzcG9u
c2VHZXRVUkwoY2ZSZXNwb25zZSk7Ci0gICAgICAgICAgICBpZiAoWyhOU1VSTCAqKXVybCBpc0Zp
bGVVUkxdKSB7Ci0gICAgICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBleHRlbnNp
b24gPSBhZG9wdENGKENGVVJMQ29weVBhdGhFeHRlbnNpb24odXJsKSk7Ci0gICAgICAgICAgICAg
ICAgaWYgKGV4dGVuc2lvbikgewotQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4K
LSAgICAgICAgICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGkgPSBhZG9wdENG
KFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NGaWxlbmFt
ZUV4dGVuc2lvbiwgZXh0ZW5zaW9uLmdldCgpLCBudWxscHRyKSk7Ci1BTExPV19ERVBSRUNBVEVE
X0RFQ0xBUkFUSU9OU19FTkQKLSAgICAgICAgICAgICAgICAgICAgU3RyaW5nIE1JTUVUeXBlID0g
TUlNRVR5cGVGcm9tVVRJVHJlZSh1dGkuZ2V0KCkpOwotICAgICAgICAgICAgICAgICAgICBpZiAo
IU1JTUVUeXBlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHF1aWNrTG9va01J
TUVUeXBlID0gTUlNRVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAvLyBFbnN1cmUgdGhhdCB0aGUgTUlNRSB0eXBl
IGlzIGNvcnJlY3Qgc28gdGhhdCBRdWlja0xvb2sncyB3ZWIgcGx1Zy1pbiBpcyBjYWxsZWQgd2hl
biBuZWVkZWQuCisgICAgLy8gVGhlIHNob3VsZFVzZVF1aWNrTG9va0Zvck1JTUVUeXBlIGZ1bmN0
aW9uIGZpbHRlcnMgY29tbW9uIE1JTUUgdHlwZXMgc28gd2UgZG9uJ3QgZG8gdW5uZWNlc3Nhcnkg
d29yay4KIAotICAgICAgICBpZiAocXVpY2tMb29rTUlNRVR5cGUpCi0gICAgICAgICAgICB1cGRh
dGVkTUlNRVR5cGUgPSBxdWlja0xvb2tNSU1FVHlwZTsKLSAgICB9Ci0jZWxzZQotICAgIFVOVVNF
RF9QQVJBTShpc01haW5SZXNvdXJjZUxvYWQpOwotI2VuZGlmIC8vIFVTRShRVUlDS19MT09LKQot
ICAgIGlmICghbWltZVR5cGUgfHwgQ0ZTdHJpbmdDb21wYXJlKG1pbWVUeXBlLmdldCgpLCB1cGRh
dGVkTUlNRVR5cGUuZ2V0KCksIGtDRkNvbXBhcmVDYXNlSW5zZW5zaXRpdmUpICE9IGtDRkNvbXBh
cmVFcXVhbFRvKQotICAgICAgICBDRlVSTFJlc3BvbnNlU2V0TUlNRVR5cGUoY2ZSZXNwb25zZSwg
dXBkYXRlZE1JTUVUeXBlLmdldCgpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHVwZGF0
ZWRUeXBlOworICAgIGF1dG8gc3VnZ2VzdGVkRmlsZW5hbWUgPSBhZG9wdENGKENGVVJMUmVzcG9u
c2VDb3B5U3VnZ2VzdGVkRmlsZW5hbWUocmVzcG9uc2UpKTsKKyAgICBpZiAoYXV0byBxdWlja0xv
b2tUeXBlID0gYWRvcHROUyhQQUw6OnNvZnRMaW5rX1F1aWNrTG9va19RTFR5cGVDb3B5QmVzdE1p
bWVUeXBlRm9yRmlsZU5hbWVBbmRNaW1lVHlwZSgoX19icmlkZ2UgTlNTdHJpbmcgKilzdWdnZXN0
ZWRGaWxlbmFtZS5nZXQoKSwgKF9fYnJpZGdlIE5TU3RyaW5nICopdHlwZSkpKQorICAgICAgICB1
cGRhdGVkVHlwZSA9IChfX2JyaWRnZSBDRlN0cmluZ1JlZilxdWlja0xvb2tUeXBlLmdldCgpOwor
ICAgIGVsc2UgaWYgKGF1dG8gZXh0ZW5zaW9uID0gZmlsZVBhdGhFeHRlbnNpb24ocmVzcG9uc2Up
KQorICAgICAgICB1cGRhdGVkVHlwZSA9IHByZWZlcnJlZE1JTUVUeXBlRm9yRmlsZUV4dGVuc2lv
bkZyb21VVFR5cGUoZXh0ZW5zaW9uLmdldCgpKTsKKyAgICBpZiAodXBkYXRlZFR5cGUgJiYgKCF0
eXBlIHx8IENGU3RyaW5nQ29tcGFyZSh0eXBlLCB1cGRhdGVkVHlwZS5nZXQoKSwga0NGQ29tcGFy
ZUNhc2VJbnNlbnNpdGl2ZSkgIT0ga0NGQ29tcGFyZUVxdWFsVG8pKQorICAgICAgICBDRlVSTFJl
c3BvbnNlU2V0TUlNRVR5cGUocmVzcG9uc2UsIHVwZGF0ZWRUeXBlLmdldCgpKTsKIH0KIAorI2Vu
ZGlmIC8vIFVTRShRVUlDS19MT09LKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvTmV0d29ya1N0YXRlTm90aWZpZXJNYWMuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvTmV0d29ya1N0YXRlTm90aWZpZXJNYWMuY3BwCmlu
ZGV4IDg2Yzc5MjliODcwZjRkZTljM2UxNjE1YjE1YTJmZWI0ZjQzOTBkMGUuLmRkOTdjZWE0ZDg5
Y2Q3ZGIwMGI2NDQwNDA1YzFlMDNlYzc4OGQyODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL05ldHdvcmtTdGF0ZU5vdGlmaWVyTWFjLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9OZXR3b3JrU3RhdGVOb3RpZmllck1h
Yy5jcHAKQEAgLTI5LDIzICsyOSwyNCBAQAogI2lmIFBMQVRGT1JNKE1BQykKIAogI2luY2x1ZGUg
PFN5c3RlbUNvbmZpZ3VyYXRpb24vU3lzdGVtQ29uZmlndXJhdGlvbi5oPgorI2luY2x1ZGUgPHd0
Zi9jZi9UeXBlQ2FzdHNDRi5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgTmV0d29y
a1N0YXRlTm90aWZpZXI6OnVwZGF0ZVN0YXRlV2l0aG91dE5vdGlmeWluZygpCiB7CiAgICAgYXV0
byBrZXkgPSBhZG9wdENGKFNDRHluYW1pY1N0b3JlS2V5Q3JlYXRlTmV0d29ya0ludGVyZmFjZSgw
LCBrU0NEeW5hbWljU3RvcmVEb21haW5TdGF0ZSkpOwotICAgIGF1dG8gcHJvcGVydHlMaXN0ID0g
YWRvcHRDRihTQ0R5bmFtaWNTdG9yZUNvcHlWYWx1ZShtX3N0b3JlLmdldCgpLCBrZXkuZ2V0KCkp
KTsKLSAgICBpZiAoIXByb3BlcnR5TGlzdCB8fCBDRkdldFR5cGVJRChwcm9wZXJ0eUxpc3QuZ2V0
KCkpICE9IENGRGljdGlvbmFyeUdldFR5cGVJRCgpKQorICAgIGF1dG8gcHJvcGVydHlMaXN0ID0g
ZHluYW1pY19jZl9jYXN0PENGRGljdGlvbmFyeVJlZj4oYWRvcHRDRihTQ0R5bmFtaWNTdG9yZUNv
cHlWYWx1ZShtX3N0b3JlLmdldCgpLCBrZXkuZ2V0KCkpKSk7CisgICAgaWYgKCFwcm9wZXJ0eUxp
c3QpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gbmV0SW50ZXJmYWNlcyA9IENGRGljdGlv
bmFyeUdldFZhbHVlKChDRkRpY3Rpb25hcnlSZWYpcHJvcGVydHlMaXN0LmdldCgpLCBrU0NEeW5h
bWljU3RvcmVQcm9wTmV0SW50ZXJmYWNlcyk7Ci0gICAgaWYgKCFuZXRJbnRlcmZhY2VzIHx8IENG
R2V0VHlwZUlEKG5ldEludGVyZmFjZXMpICE9IENGQXJyYXlHZXRUeXBlSUQoKSkKKyAgICBhdXRv
IG5ldEludGVyZmFjZXMgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZBcnJheVJlZj4oQ0ZEaWN0aW9uYXJ5
R2V0VmFsdWUocHJvcGVydHlMaXN0LmdldCgpLCBrU0NEeW5hbWljU3RvcmVQcm9wTmV0SW50ZXJm
YWNlcykpOworICAgIGlmICghbmV0SW50ZXJmYWNlcykKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Zm9yIChDRkluZGV4IGkgPSAwOyBpIDwgQ0ZBcnJheUdldENvdW50KChDRkFycmF5UmVmKW5ldElu
dGVyZmFjZXMpOyBpKyspIHsKLSAgICAgICAgYXV0byBpbnRlcmZhY2VOYW1lID0gKENGU3RyaW5n
UmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoKENGQXJyYXlSZWYpbmV0SW50ZXJmYWNlcywgaSk7
Ci0gICAgICAgIGlmIChDRkdldFR5cGVJRChpbnRlcmZhY2VOYW1lKSAhPSBDRlN0cmluZ0dldFR5
cGVJRCgpKQorICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IENGQXJyYXlHZXRDb3VudChuZXRJ
bnRlcmZhY2VzKTsgaSsrKSB7CisgICAgICAgIGF1dG8gaW50ZXJmYWNlTmFtZSA9IGR5bmFtaWNf
Y2ZfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChuZXRJbnRlcmZhY2Vz
LCBpKSk7CisgICAgICAgIGlmICghaW50ZXJmYWNlTmFtZSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCiAgICAgICAgIC8vIElnbm9yZSB0aGUgbG9vcGJhY2sgaW50ZXJmYWNlLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMuaAppbmRleCA1
ZDE4OTVmMzM1Y2E4MzQxNzdhOTIyYWFlYTQ2Y2M2N2Y3ZjBlNTRlLi44MjUxN2I3ZWIzYTlmODM0
N2Y0MGE3NDQ2OGU3ZjExMjI4ZjJlNzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMuaApAQCAtMzAsNyArMzAsNyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgTUlNRVR5cGVGcm9tVVRJKGNv
bnN0IFN0cmluZyYpOwotU3RyaW5nIE1JTUVUeXBlRnJvbVVUSVRyZWUoY29uc3QgU3RyaW5nJik7
CitSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG1pbWVUeXBlRnJvbVVUSVRyZWUoQ0ZTdHJpbmdSZWYp
OwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIFVUSUZyb21NSU1FVHlwZShjb25zdCBTdHJpbmcmKTsK
IGJvb2wgaXNEZWNsYXJlZFVUSShjb25zdCBTdHJpbmcmKTsKIFdFQkNPUkVfRVhQT1JUIFN0cmlu
ZyBVVElGcm9tVGFnKGNvbnN0IFN0cmluZyYgdGFnQ2xhc3MsIGNvbnN0IFN0cmluZyYgdGFnLCBj
b25zdCBTdHJpbmcmIGNvbmZvcm1pbmdUb1VUSSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMubW0KaW5kZXggY2ViYmNhNWIyNGNiZjhk
MGMwZTE4ZmRiMjQ4NGUwODI0OGNiMzYwMS4uNDIwNGE0MWNkYWQ5NmZkYmUxY2NiYmMxY2RhMzgw
ODAyOGExNjE0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvVVRJVXRpbGl0aWVzLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1VUSVV0aWxpdGllcy5tbQpAQCAtNDUsNDQgKzQ1LDM3IEBAIEFMTE9XX0RFUFJFQ0FURURf
REVDTEFSQVRJT05TX0JFR0lOCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKIH0K
IAotU3RyaW5nIE1JTUVUeXBlRnJvbVVUSVRyZWUoY29uc3QgU3RyaW5nJiB1dGkpCitSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IG1pbWVUeXBlRnJvbVVUSVRyZWUoQ0ZTdHJpbmdSZWYgdXRpKQogewot
ICAgIGF1dG8gdXRpQ0YgPSB1dGkuY3JlYXRlQ0ZTdHJpbmcoKTsKLQogQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICAvLyBDaGVjayBpZiB0aGlzIFVUSSBoYXMgYSBNSU1F
IHR5cGUuCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBtaW1lVHlwZSA9IGFkb3B0Q0YoVVRU
eXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh1dGlDRi5nZXQoKSwga1VUVGFnQ2xhc3NNSU1F
VHlwZSkpOwotICAgIGlmIChtaW1lVHlwZSkKLSAgICAgICAgcmV0dXJuIG1pbWVUeXBlLmdldCgp
OworICAgIGlmIChhdXRvIHR5cGUgPSBhZG9wdENGKFVUVHlwZUNvcHlQcmVmZXJyZWRUYWdXaXRo
Q2xhc3ModXRpLCBrVVRUYWdDbGFzc01JTUVUeXBlKSkpCisgICAgICAgIHJldHVybiB0eXBlOwog
CiAgICAgLy8gSWYgbm90LCB3YWxrIHRoZSBhbmNlc3Rvcnkgb2YgdGhpcyBVVEkgdmlhIGl0cyAi
Q29uZm9ybXNUbyIgdGFncyBhbmQgcmV0dXJuIHRoZSBmaXJzdCBNSU1FIHR5cGUgd2UgZmluZC4K
LSAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBkZWNsID0gYWRvcHRDRihVVFR5cGVDb3B5
RGVjbGFyYXRpb24odXRpQ0YuZ2V0KCkpKTsKLSAgICBpZiAoIWRlY2wpCi0gICAgICAgIHJldHVy
biBlbXB0eVN0cmluZygpOwotICAgIENGVHlwZVJlZiB2YWx1ZSA9IENGRGljdGlvbmFyeUdldFZh
bHVlKGRlY2wuZ2V0KCksIGtVVFR5cGVDb25mb3Jtc1RvS2V5KTsKKyAgICBhdXRvIGRlY2xhcmF0
aW9uID0gYWRvcHRDRihVVFR5cGVDb3B5RGVjbGFyYXRpb24odXRpKSk7CisgICAgaWYgKCFkZWNs
YXJhdGlvbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIHZhbHVlID0gQ0ZE
aWN0aW9uYXJ5R2V0VmFsdWUoZGVjbGFyYXRpb24uZ2V0KCksIGtVVFR5cGVDb25mb3Jtc1RvS2V5
KTsKIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgIGlmICghdmFsdWUpCi0g
ICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotICAgIENGVHlwZUlEIHR5cGVJRCA9IENGR2V0
VHlwZUlEKHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBpZiAodHlwZUlE
ID09IENGU3RyaW5nR2V0VHlwZUlEKCkpCi0gICAgICAgIHJldHVybiBNSU1FVHlwZUZyb21VVElU
cmVlKChDRlN0cmluZ1JlZil2YWx1ZSk7CisgICAgaWYgKGF1dG8gc3RyaW5nID0gZHluYW1pY19j
Zl9jYXN0PENGU3RyaW5nUmVmPih2YWx1ZSkpCisgICAgICAgIHJldHVybiBtaW1lVHlwZUZyb21V
VElUcmVlKHN0cmluZyk7CiAKLSAgICBpZiAodHlwZUlEID09IENGQXJyYXlHZXRUeXBlSUQoKSkg
ewotICAgICAgICBDRkFycmF5UmVmIG5ld1R5cGVzID0gKENGQXJyYXlSZWYpdmFsdWU7Ci0gICAg
ICAgIENGSW5kZXggY291bnQgPSBDRkFycmF5R2V0Q291bnQobmV3VHlwZXMpOworICAgIGlmIChh
dXRvIGFycmF5ID0gZHluYW1pY19jZl9jYXN0PENGQXJyYXlSZWY+KHZhbHVlKSkgeworICAgICAg
ICBDRkluZGV4IGNvdW50ID0gQ0ZBcnJheUdldENvdW50KGFycmF5KTsKICAgICAgICAgZm9yIChD
RkluZGV4IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICAgICAgQ0ZUeXBlUmVmIG9i
amVjdCA9IENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgobmV3VHlwZXMsIGkpOwotICAgICAgICAgICAg
aWYgKENGR2V0VHlwZUlEKG9iamVjdCkgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkKLSAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgU3RyaW5nIG1pbWVUeXBlID0gTUlNRVR5
cGVGcm9tVVRJVHJlZSgoQ0ZTdHJpbmdSZWYpb2JqZWN0KTsKLSAgICAgICAgICAgIGlmICghbWlt
ZVR5cGUuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBtaW1lVHlwZTsKKyAgICAg
ICAgICAgIGlmIChhdXRvIHN0cmluZyA9IGR5bmFtaWNfY2ZfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZB
cnJheUdldFZhbHVlQXRJbmRleChhcnJheSwgaSkpKSB7CisgICAgICAgICAgICAgICAgaWYgKGF1
dG8gdHlwZSA9IG1pbWVUeXBlRnJvbVVUSVRyZWUoc3RyaW5nKSkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHR5cGU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogc3RhdGljIENG
U3RyaW5nUmVmIFVUSUZyb21Vbmtub3duTUlNRVR5cGUoU3RyaW5nVmlldyBtaW1lVHlwZSkKQEAg
LTEzNyw3ICsxMzAsNyBAQCBTdHJpbmcgVVRJRnJvbVRhZyhjb25zdCBTdHJpbmcmIHRhZ0NsYXNz
LCBjb25zdCBTdHJpbmcmIHRhZywgY29uc3QgU3RyaW5nJiBjb25mbwogQUxMT1dfREVQUkVDQVRF
RF9ERUNMQVJBVElPTlNfQkVHSU4KICAgICBhdXRvIHUgPSBhZG9wdENGKFVUVHlwZUNyZWF0ZVBy
ZWZlcnJlZElkZW50aWZpZXJGb3JUYWcodGFnQ2xhc3MuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwg
dGFnLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGNvbmZvcm1pbmdUb1VUSS5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpKSk7CiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLSAgICByZXR1
cm4gU3RyaW5nKHUuZ2V0KCkpOworICAgIHJldHVybiB1LmdldCgpOwogfQogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9u
c2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNw
b25zZS5oCmluZGV4IGU2MTg3Yjk3N2I5ODJjYTU0MjkzOWY2OGI5YTEyNTc5MzFjMTFjNjYuLmQy
YjRkNWUyNTJmNDQ2MDUyZDE1MWI0OWVhODI5NWE2ZGFhYTVlNDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOC0yMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMzgsNCArMzgsNyBAQCBXRUJDT1JFX0VYUE9SVCBOU1VSTFJlc3BvbnNlICpzeW50aGVz
aXplUmVkaXJlY3RSZXNwb25zZUlmTmVjZXNzYXJ5KE5TVVJMUmVxdWVzdAogCiBXRUJDT1JFX0VY
UE9SVCB2b2lkIGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoQ0ZVUkxSZXNwb25zZVJlZiwgYm9v
bCBpc01haW5SZXNvdXJjZUxvYWQpOwogCitSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGZpbGVQYXRo
RXh0ZW5zaW9uKENGVVJMUmVzcG9uc2VSZWYpOworUmV0YWluUHRyPENGU3RyaW5nUmVmPiBwcmVm
ZXJyZWRNSU1FVHlwZUZvckZpbGVFeHRlbnNpb25Gcm9tVVRUeXBlKENGU3RyaW5nUmVmIGV4dGVu
c2lvbik7CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQppbmRleCA0ZmE1MGU0NmIwOTQ5NmNkZWUwNzM5
NjQ1Yzg0ZjFkN2E0NjlmZmNkLi43NDEwMzlhMTBkYzcyMWNlMWNjZThjMThlOWM0MDNjYTI1NzQz
MWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJD
b3JlVVJMUmVzcG9uc2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwOCwgMjAwOSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM2LDMwMiArMzYsMTYyIEBACiAj
aW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSNpZiBQTEFURk9STShNQUMpCi0vLyA8cmRhcjovL3Byb2Js
ZW0vNzAwNzM4OT4gQ29yZVR5cGVzIFVUSSBtYXAgaXMgbWlzc2luZyAxMDArIGZpbGUgZXh0ZW5z
aW9ucyB0aGF0IEdhdGVLZWVwZXIga25ldyBhYm91dAotLy8gV2hlbiB3ZSBkaXNhYmxlZCBjb250
ZW50IHNuaWZmaW5nIGZvciBmaWxlIFVSTHMgd2UgY2F1c2VkIHByb2JsZW1zIHdpdGggdGhlc2Ug
MTAwKyBleHRlbnNpb25zIHRoYXQgQ29yZVR5cGVzCi0vLyBkb2Vzbid0IGtub3cgYWJvdXQuCi0v
LyBJZiBDb3JlVHlwZXMgaXMgZXZlciBicm91Z2h0IHVwIHRvIHNwZWVkIHdlIGNhbiByZW1vdmUg
dGhpcyB0YWJsZSBhbmQgYXNzb2NpYXRlZCBjb2RlLgotc3RhdGljIFJldGFpblB0cjxDRkRpY3Rp
b25hcnlSZWY+IGNyZWF0ZUV4dGVuc2lvblRvTUlNRVR5cGVNYXAoKQotewotICAgIENGU3RyaW5n
UmVmIGtleXNbXSA9IHsKLSAgICAgICAgQ0ZTVFIoImFpIiksCi0gICAgICAgIENGU1RSKCJhc2Mi
KSwKLSAgICAgICAgQ0ZTVFIoImJjcGlvIiksCi0gICAgICAgIENGU1RSKCJibXAiKSwKLSAgICAg
ICAgQ0ZTVFIoImNkZiIpLAotICAgICAgICBDRlNUUigiY2xhc3MiKSwKLSAgICAgICAgQ0ZTVFIo
ImNwZ3oiKSwKLSAgICAgICAgQ0ZTVFIoImNwaW8iKSwKLSAgICAgICAgQ0ZTVFIoImNwdCIpLAot
ICAgICAgICBDRlNUUigiY3NoIiksCi0gICAgICAgIENGU1RSKCJjc3MiKSwKLSAgICAgICAgQ0ZT
VFIoImRjciIpLAotICAgICAgICBDRlNUUigiZGlyIiksCi0gICAgICAgIENGU1RSKCJkbWciKSwK
LSAgICAgICAgQ0ZTVFIoImRtcyIpLAotICAgICAgICBDRlNUUigiZHZpIiksCi0gICAgICAgIENG
U1RSKCJkeHIiKSwKLSAgICAgICAgQ0ZTVFIoImVwcyIpLAotICAgICAgICBDRlNUUigiZXR4Iiks
Ci0gICAgICAgIENGU1RSKCJleiIpLAotICAgICAgICBDRlNUUigiZmRmIiksCi0gICAgICAgIENG
U1RSKCJmbGEiKSwKLSAgICAgICAgQ0ZTVFIoImZwIiksCi0gICAgICAgIENGU1RSKCJmcDIiKSwK
LSAgICAgICAgQ0ZTVFIoImZwMyIpLAotICAgICAgICBDRlNUUigiZnA0IiksCi0gICAgICAgIENG
U1RSKCJmcDUiKSwKLSAgICAgICAgQ0ZTVFIoImZwNiIpLAotICAgICAgICBDRlNUUigiaGRmIiks
Ci0gICAgICAgIENGU1RSKCJpY2UiKSwKLSAgICAgICAgQ0ZTVFIoImljbyIpLAotICAgICAgICBD
RlNUUigiaWNzIiksCi0gICAgICAgIENGU1RSKCJpZWYiKSwKLSAgICAgICAgQ0ZTVFIoImlnZXMi
KSwKLSAgICAgICAgQ0ZTVFIoImlncyIpLAotICAgICAgICBDRlNUUigiaXNvIiksCi0gICAgICAg
IENGU1RSKCJqaHRtbCIpLAotICAgICAgICBDRlNUUigibGF0ZXgiKSwKLSAgICAgICAgQ0ZTVFIo
ImxoYSIpLAotICAgICAgICBDRlNUUigibHpoIiksCi0gICAgICAgIENGU1RSKCJtM3UiKSwKLSAg
ICAgICAgQ0ZTVFIoIm00cCIpLAotICAgICAgICBDRlNUUigibWFjIiksCi0gICAgICAgIENGU1RS
KCJtYW4iKSwKLSAgICAgICAgQ0ZTVFIoIm1lIiksCi0gICAgICAgIENGU1RSKCJtZXNoIiksCi0g
ICAgICAgIENGU1RSKCJtaWYiKSwKLSAgICAgICAgQ0ZTVFIoIm1qcyIpLAotICAgICAgICBDRlNU
UigibW92aWUiKSwKLSAgICAgICAgQ0ZTVFIoIm1wMiIpLAotICAgICAgICBDRlNUUigibXBnYSIp
LAotICAgICAgICBDRlNUUigibXMiKSwKLSAgICAgICAgQ0ZTVFIoIm1zaCIpLAotICAgICAgICBD
RlNUUigibXh1IiksCi0gICAgICAgIENGU1RSKCJuYyIpLAotICAgICAgICBDRlNUUigib2RhIiks
Ci0gICAgICAgIENGU1RSKCJwYm0iKSwKLSAgICAgICAgQ0ZTVFIoInBjeCIpLAotICAgICAgICBD
RlNUUigicGRiIiksCi0gICAgICAgIENGU1RSKCJwZ20iKSwKLSAgICAgICAgQ0ZTVFIoInBnbiIp
LAotICAgICAgICBDRlNUUigicGxzIiksCi0gICAgICAgIENGU1RSKCJwbm0iKSwKLSAgICAgICAg
Q0ZTVFIoInBudCIpLAotICAgICAgICBDRlNUUigicG50ZyIpLAotICAgICAgICBDRlNUUigicHBt
IiksCi0gICAgICAgIENGU1RSKCJyYXMiKSwKLSAgICAgICAgQ0ZTVFIoInJnYiIpLAotICAgICAg
ICBDRlNUUigicm9mZiIpLAotICAgICAgICBDRlNUUigicnBtIiksCi0gICAgICAgIENGU1RSKCJy
dHgiKSwKLSAgICAgICAgQ0ZTVFIoInNnbSIpLAotICAgICAgICBDRlNUUigic2dtbCIpLAotICAg
ICAgICBDRlNUUigic2giKSwKLSAgICAgICAgQ0ZTVFIoInNoYXIiKSwKLSAgICAgICAgQ0ZTVFIo
InNpbG8iKSwKLSAgICAgICAgQ0ZTVFIoInNrZCIpLAotICAgICAgICBDRlNUUigic2ttIiksCi0g
ICAgICAgIENGU1RSKCJza3AiKSwKLSAgICAgICAgQ0ZTVFIoInNrdCIpLAotICAgICAgICBDRlNU
Uigic21pIiksCi0gICAgICAgIENGU1RSKCJzbyIpLAotICAgICAgICBDRlNUUigic3BsIiksCi0g
ICAgICAgIENGU1RSKCJzcmMiKSwKLSAgICAgICAgQ0ZTVFIoInN2NGNwaW8iKSwKLSAgICAgICAg
Q0ZTVFIoInN2NGNyYyIpLAotICAgICAgICBDRlNUUigic3dmIiksCi0gICAgICAgIENGU1RSKCJ0
IiksCi0gICAgICAgIENGU1RSKCJ0YXJnYSIpLAotICAgICAgICBDRlNUUigidGNsIiksCi0gICAg
ICAgIENGU1RSKCJ0ZXgiKSwKLSAgICAgICAgQ0ZTVFIoInRleGkiKSwKLSAgICAgICAgQ0ZTVFIo
InRleGluZm8iKSwKLSAgICAgICAgQ0ZTVFIoInRneiIpLAotICAgICAgICBDRlNUUigidG9ycmVu
dCIpLAotICAgICAgICBDRlNUUigidHIiKSwKLSAgICAgICAgQ0ZTVFIoInRzdiIpLAotICAgICAg
ICBDRlNUUigidXN0YXIiKSwKLSAgICAgICAgQ0ZTVFIoInZjZCIpLAotICAgICAgICBDRlNUUigi
dnJtbCIpLAotICAgICAgICBDRlNUUigid2JtcCIpLAotICAgICAgICBDRlNUUigid2J4bWwiKSwK
LSAgICAgICAgQ0ZTVFIoIndlYmFyY2hpdmUiKSwKLSAgICAgICAgQ0ZTVFIoIndlYm0iKSwKLSAg
ICAgICAgQ0ZTVFIoIndtZCIpLAotICAgICAgICBDRlNUUigid21sIiksCi0gICAgICAgIENGU1RS
KCJ3bWxjIiksCi0gICAgICAgIENGU1RSKCJ3bWxzIiksCi0gICAgICAgIENGU1RSKCJ3bWxzYyIp
LAotICAgICAgICBDRlNUUigid3JsIiksCi0gICAgICAgIENGU1RSKCJ4ZHAiKSwKLSAgICAgICAg
Q0ZTVFIoInhmZCIpLAotICAgICAgICBDRlNUUigieGZkZiIpLAotICAgICAgICBDRlNUUigieHBt
IiksCi0gICAgICAgIENGU1RSKCJ4c2wiKSwKLSAgICAgICAgQ0ZTVFIoInh3ZCIpLAotICAgICAg
ICBDRlNUUigieHl6IiksCi0gICAgICAgIENGU1RSKCJ6IikKLSAgICB9OworbmFtZXNwYWNlIFdU
RiB7CiAKLSAgICBDRlN0cmluZ1JlZiB2YWx1ZXNbXSA9IHsKLSAgICAgICAgQ0ZTVFIoImFwcGxp
Y2F0aW9uL3Bvc3RzY3JpcHQiKSwKLSAgICAgICAgQ0ZTVFIoInRleHQvcGxhaW4iKSwKLSAgICAg
ICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gtYmNwaW8iKSwKLSAgICAgICAgQ0ZTVFIoImltYWdlL2Jt
cCIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC1uZXRjZGYiKSwKLSAgICAgICAgQ0ZT
VFIoImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRp
b24veC1nemlwIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LWNwaW8iKSwKLSAgICAg
ICAgQ0ZTVFIoImFwcGxpY2F0aW9uL21hYy1jb21wYWN0cHJvIiksCi0gICAgICAgIENGU1RSKCJh
cHBsaWNhdGlvbi94LWNzaCIpLAotICAgICAgICBDRlNUUigidGV4dC9jc3MiKSwKLSAgICAgICAg
Q0ZTVFIoImFwcGxpY2F0aW9uL3gtZGlyZWN0b3IiKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0
aW9uL3gtZGlyZWN0b3IiKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gtZGlza2NvcHki
KSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIpLAotICAgICAgICBD
RlNUUigiYXBwbGljYXRpb24veC1kdmkiKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gt
ZGlyZWN0b3IiKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3Bvc3RzY3JpcHQiKSwKLSAg
ICAgICAgQ0ZTVFIoInRleHQveC1zZXRleHQiKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9u
L2FuZHJldy1pbnNldCIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24vdm5kLmZkZiIpLAot
ICAgICAgICBDRlNUUigiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiksCi0gICAgICAgIENGU1RS
KCJhcHBsaWNhdGlvbi94LWZpbGVtYWtlciIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24v
eC1maWxlbWFrZXIiKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gtZmlsZW1ha2VyIiks
Ci0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LWZpbGVtYWtlciIpLAotICAgICAgICBDRlNU
UigiYXBwbGljYXRpb24veC1maWxlbWFrZXIiKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9u
L3gtZmlsZW1ha2VyIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LWhkZiIpLAotICAg
ICAgICBDRlNUUigieC1jb25mZXJlbmNlL3gtY29vbHRhbGsiKSwKLSAgICAgICAgQ0ZTVFIoImlt
YWdlL3gtaWNvbiIpLAotICAgICAgICBDRlNUUigidGV4dC9jYWxlbmRhciIpLAotICAgICAgICBD
RlNUUigiaW1hZ2UvaWVmIiksCi0gICAgICAgIENGU1RSKCJtb2RlbC9pZ2VzIiksCi0gICAgICAg
IENGU1RSKCJtb2RlbC9pZ2VzIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi9vY3RldC1z
dHJlYW0iKSwKLSAgICAgICAgQ0ZTVFIoInRleHQvaHRtbCIpLAotICAgICAgICBDRlNUUigiYXBw
bGljYXRpb24veC1sYXRleCIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24vb2N0ZXQtc3Ry
ZWFtIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iKSwKLSAgICAg
ICAgQ0ZTVFIoImF1ZGlvL3gtbXBlZ3VybCIpLAotICAgICAgICBDRlNUUigiYXVkaW8veC1tNHAi
KSwKLSAgICAgICAgQ0ZTVFIoImltYWdlL3gtbWFjcGFpbnQiKSwKLSAgICAgICAgQ0ZTVFIoImFw
cGxpY2F0aW9uL3gtdHJvZmYtbWFuIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LXRy
b2ZmLW1lIiksCi0gICAgICAgIENGU1RSKCJtb2RlbC9tZXNoIiksCi0gICAgICAgIENGU1RSKCJh
cHBsaWNhdGlvbi92bmQubWlmIiksCi0gICAgICAgIENGU1RSKCJ0ZXh0L2phdmFzY3JpcHQiKSwK
LSAgICAgICAgQ0ZTVFIoInZpZGVvL3gtc2dpLW1vdmllIiksCi0gICAgICAgIENGU1RSKCJhdWRp
by9tcGVnIiksCi0gICAgICAgIENGU1RSKCJhdWRpby9tcGVnIiksCi0gICAgICAgIENGU1RSKCJh
cHBsaWNhdGlvbi94LXRyb2ZmLW1zIiksCi0gICAgICAgIENGU1RSKCJtb2RlbC9tZXNoIiksCi0g
ICAgICAgIENGU1RSKCJ2aWRlby92bmQubXBlZ3VybCIpLAotICAgICAgICBDRlNUUigiYXBwbGlj
YXRpb24veC1uZXRjZGYiKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL29kYSIpLAotICAg
ICAgICBDRlNUUigiaW1hZ2UveC1wb3J0YWJsZS1iaXRtYXAiKSwKLSAgICAgICAgQ0ZTVFIoImlt
YWdlL3gtcGN4IiksCi0gICAgICAgIENGU1RSKCJjaGVtaWNhbC94LXBkYiIpLAotICAgICAgICBD
RlNUUigiaW1hZ2UveC1wb3J0YWJsZS1ncmF5bWFwIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNh
dGlvbi94LWNoZXNzLXBnbiIpLAotICAgICAgICBDRlNUUigiYXVkaW8vc2NwbHMiKSwKLSAgICAg
ICAgQ0ZTVFIoImltYWdlL3gtcG9ydGFibGUtYW55bWFwIiksCi0gICAgICAgIENGU1RSKCJpbWFn
ZS94LW1hY3BhaW50IiksCi0gICAgICAgIENGU1RSKCJpbWFnZS94LW1hY3BhaW50IiksCi0gICAg
ICAgIENGU1RSKCJpbWFnZS94LXBvcnRhYmxlLXBpeG1hcCIpLAotICAgICAgICBDRlNUUigiaW1h
Z2UveC1jbXUtcmFzdGVyIiksCi0gICAgICAgIENGU1RSKCJpbWFnZS94LXJnYiIpLAotICAgICAg
ICBDRlNUUigiYXBwbGljYXRpb24veC10cm9mZiIpLAotICAgICAgICBDRlNUUigiYXVkaW8veC1w
bi1yZWFsYXVkaW8tcGx1Z2luIiksCi0gICAgICAgIENGU1RSKCJ0ZXh0L3JpY2h0ZXh0IiksCi0g
ICAgICAgIENGU1RSKCJ0ZXh0L3NnbWwiKSwKLSAgICAgICAgQ0ZTVFIoInRleHQvc2dtbCIpLAot
ICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC1zaCIpLAotICAgICAgICBDRlNUUigiYXBwbGlj
YXRpb24veC1zaGFyIiksCi0gICAgICAgIENGU1RSKCJtb2RlbC9tZXNoIiksCi0gICAgICAgIENG
U1RSKCJhcHBsaWNhdGlvbi94LWtvYW4iKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gt
a29hbiIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC1rb2FuIiksCi0gICAgICAgIENG
U1RSKCJhcHBsaWNhdGlvbi94LWtvYW4iKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gt
ZGlza2NvcHkiKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIpLAot
ICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC1mdXR1cmVzcGxhc2giKSwKLSAgICAgICAgQ0ZT
VFIoImFwcGxpY2F0aW9uL3gtd2Fpcy1zb3VyY2UiKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0
aW9uL3gtc3Y0Y3BpbyIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC1zdjRjcmMiKSwK
LSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoIiksCi0gICAgICAg
IENGU1RSKCJhcHBsaWNhdGlvbi94LXRyb2ZmIiksCi0gICAgICAgIENGU1RSKCJpbWFnZS94LXRh
cmdhIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LXRjbCIpLAotICAgICAgICBDRlNU
UigiYXBwbGljYXRpb24veC10ZXgiKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gtdGV4
aW5mbyIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC10ZXhpbmZvIiksCi0gICAgICAg
IENGU1RSKCJhcHBsaWNhdGlvbi94LWd6aXAiKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9u
L3gtYml0dG9ycmVudCIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC10cm9mZiIpLAot
ICAgICAgICBDRlNUUigidGV4dC90YWItc2VwYXJhdGVkLXZhbHVlcyIpLAotICAgICAgICBDRlNU
UigiYXBwbGljYXRpb24veC11c3RhciIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC1j
ZGxpbmsiKSwKLSAgICAgICAgQ0ZTVFIoIm1vZGVsL3ZybWwiKSwKLSAgICAgICAgQ0ZTVFIoImlt
YWdlL3ZuZC53YXAud2JtcCIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24vdm5kLndhcC53
YnhtbCIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC13ZWJhcmNoaXZlIiksCi0gICAg
ICAgIENGU1RSKCJ2aWRlby93ZWJtIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LW1z
LXdtZCIpLAotICAgICAgICBDRlNUUigidGV4dC92bmQud2FwLndtbCIpLAotICAgICAgICBDRlNU
UigiYXBwbGljYXRpb24vdm5kLndhcC53bWxjIiksCi0gICAgICAgIENGU1RSKCJ0ZXh0L3ZuZC53
YXAud21sc2NyaXB0IiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi92bmQud2FwLndtbHNj
cmlwdGMiKSwKLSAgICAgICAgQ0ZTVFIoIm1vZGVsL3ZybWwiKSwKLSAgICAgICAgQ0ZTVFIoImFw
cGxpY2F0aW9uL3ZuZC5hZG9iZS54ZHAreG1sIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlv
bi92bmQuYWRvYmUueGZkK3htbCIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24vdm5kLmFk
b2JlLnhmZGYiKSwKLSAgICAgICAgQ0ZTVFIoImltYWdlL3gteHBpeG1hcCIpLAotICAgICAgICBD
RlNUUigidGV4dC94bWwiKSwKLSAgICAgICAgQ0ZTVFIoImltYWdlL3gteHdpbmRvd2R1bXAiKSwK
LSAgICAgICAgQ0ZTVFIoImNoZW1pY2FsL3gteHl6IiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNh
dGlvbi94LWNvbXByZXNzIikKLSAgICB9OwordGVtcGxhdGU8dHlwZW5hbWUgVD4gTmV2ZXJEZXN0
cm95ZWQoVCYmKSAtPiBOZXZlckRlc3Ryb3llZDxULCBBbnlUaHJlYWRzQWNjZXNzVHJhaXRzPjsK
IAotICAgIEFTU0VSVChzaXplb2Yoa2V5cykgPT0gc2l6ZW9mKHZhbHVlcykpOwotICAgIHJldHVy
biBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3Qg
dm9pZCoqKSZrZXlzLCAoY29uc3Qgdm9pZCoqKSZ2YWx1ZXMsIHNpemVvZihrZXlzKSAvIHNpemVv
ZihDRlN0cmluZ1JlZiksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVE
aWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKIH0KIAotdm9pZCBhZGp1c3RNSU1FVHlwZUlmTmVj
ZXNzYXJ5KENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSwgYm9vbCBpc01haW5SZXNvdXJjZUxv
YWQpCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiBQTEFURk9STShNQUMpCisKK3ZvaWQgYWRq
dXN0TUlNRVR5cGVJZk5lY2Vzc2FyeShDRlVSTFJlc3BvbnNlUmVmIHJlc3BvbnNlLCBib29sIC8q
aXNNYWluUmVzb3VyY2VMb2FkKi8pCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGlzTWFpblJlc291cmNl
TG9hZCk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiByZXN1bHQgPSBDRlVSTFJlc3BvbnNl
R2V0TUlNRVR5cGUoY2ZSZXNwb25zZSk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBvcmln
aW5hbFJlc3VsdCA9IHJlc3VsdDsKKyAgICBpZiAoQ0ZVUkxSZXNwb25zZUdldE1JTUVUeXBlKHJl
c3BvbnNlKSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAg
YXV0byB1cmwgPSBDRlVSTFJlc3BvbnNlR2V0VVJMKGNmUmVzcG9uc2UpOwotICAgICAgICBpZiAo
WyhfX2JyaWRnZSBOU1VSTCAqKXVybCBpc0ZpbGVVUkxdKSB7Ci0gICAgICAgICAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IGV4dGVuc2lvbiA9IGFkb3B0Q0YoQ0ZVUkxDb3B5UGF0aEV4dGVuc2lv
bih1cmwpKTsKLSAgICAgICAgICAgIGlmIChleHRlbnNpb24pIHsKLSAgICAgICAgICAgICAgICAv
LyA8cmRhcjovL3Byb2JsZW0vNzAwNzM4OT4gQ29yZVR5cGVzIFVUSSBtYXAgaXMgbWlzc2luZyAx
MDArIGZpbGUgZXh0ZW5zaW9ucyB0aGF0IEdhdGVLZWVwZXIga25ldyBhYm91dAotICAgICAgICAg
ICAgICAgIC8vIFdoZW4gdGhpcyByYWRhciBpcyByZXNvbHZlZCwgd2UgY2FuIHJlbW92ZSB0aGlz
IGZpbGU6Ly8gdXJsIHNwZWNpZmljIGNvZGUuCi0gICAgICAgICAgICAgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+PiBleHRlbnNpb25NYXAgPSBjcmVh
dGVFeHRlbnNpb25Ub01JTUVUeXBlTWFwKCk7Ci0gICAgICAgICAgICAgICAgYXV0byBtdXRhYmxl
RXh0ZW5zaW9uID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRv
ckRlZmF1bHQsIDAsIGV4dGVuc2lvbi5nZXQoKSkpOwotICAgICAgICAgICAgICAgIENGU3RyaW5n
TG93ZXJjYXNlKG11dGFibGVFeHRlbnNpb24uZ2V0KCksIE5VTEwpOwotICAgICAgICAgICAgICAg
IGV4dGVuc2lvbiA9IFdURk1vdmUobXV0YWJsZUV4dGVuc2lvbik7Ci0gICAgICAgICAgICAgICAg
cmVzdWx0ID0gKENGU3RyaW5nUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGV4dGVuc2lvbk1hcC5n
ZXQoKS5nZXQoKSwgZXh0ZW5zaW9uLmdldCgpKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgR2F0
ZWtlZXBlci1iYXNlZCBtYXAgZG9lc24ndCBoYXZlIGEgTUlNRSB0eXBlLCB3ZSdsbCB0cnkgdG8g
ZmlndXJlIG91dCB3aGF0IGl0IHNob3VsZCBiZSBieQotICAgICAgICAgICAgICAgICAgICAvLyBs
b29raW5nIHVwIHRoZSBmaWxlIGV4dGVuc2lvbiBpbiB0aGUgVVRJIG1hcHMuCi1BTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgICAgICAgICAgICAgICAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IHV0aSA9IGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmll
ckZvclRhZyhrVVRUYWdDbGFzc0ZpbGVuYW1lRXh0ZW5zaW9uLCBleHRlbnNpb24uZ2V0KCksIDAp
KTsKLUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotICAgICAgICAgICAgICAgICAg
ICBTdHJpbmcgTUlNRVR5cGUgPSBNSU1FVHlwZUZyb21VVElUcmVlKHV0aS5nZXQoKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmICghTUlNRVR5cGUuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0ID0gTUlNRVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IHR5cGU7CisKKyAgICBpZiAoYXV0byBleHRlbnNpb24gPSBmaWxlUGF0aEV4dGVuc2lvbihy
ZXNwb25zZSkpIHsKKyAgICAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzcwMDczODk+IENvcmVUeXBl
cyBVVEkgbWFwIGlzIG1pc3NpbmcgMTAwKyBmaWxlIGV4dGVuc2lvbnMgdGhhdCBHYXRlS2VlcGVy
IGtuZXcgYWJvdXQKKyAgICAgICAgLy8gT25jZSBVVFR5cGUgbWF0Y2hlcyBvbmUgb2YgdGhlc2Ug
bWFwcGluZ3Mgb24gYWxsIHZlcnNpb25zIG9mIG1hY09TIHdlIHN1cHBvcnQsIHdlIGNhbiByZW1v
dmUgdGhhdCBwYWlyLgorICAgICAgICAvLyBBbHRlcm5hdGl2ZWx5LCB3ZSBjb3VsZCByZW1vdmUg
YW55IHBhaXJzIHRoYXQgd2UgZGV0ZXJtaW5lIHdlIG5vIGxvbmdlciBuZWVkLgorICAgICAgICAv
LyBBbmQgdGhlbiByZW1vdmUgdGhpcyBjb2RlIGVudGlyZWx5IG9uY2UgdGhleSBhcmUgYWxsIGdv
bmUuCisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjpwYWlyPENvbXBhcmFibGVMZXR0ZXJz
TGl0ZXJhbCwgTlNTdHJpbmcgKj4gZXh0ZW5zaW9uUGFpcnNbXSA9IHsKKyAgICAgICAgICAgIHsg
ImFpIiwgQCJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0IiB9LAorICAgICAgICAgICAgeyAiYXNjIiwg
QCJ0ZXh0L3BsYWluIiB9LAorICAgICAgICAgICAgeyAiYmNwaW8iLCBAImFwcGxpY2F0aW9uL3gt
YmNwaW8iIH0sCisgICAgICAgICAgICB7ICJibXAiLCBAImltYWdlL2JtcCIgfSwKKyAgICAgICAg
ICAgIHsgImNkZiIsIEAiYXBwbGljYXRpb24veC1uZXRjZGYiIH0sCisgICAgICAgICAgICB7ICJj
bGFzcyIsIEAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiB9LAorICAgICAgICAgICAgeyAiY3Bn
eiIsIEAiYXBwbGljYXRpb24veC1nemlwIiB9LAorICAgICAgICAgICAgeyAiY3BpbyIsIEAiYXBw
bGljYXRpb24veC1jcGlvIiB9LAorICAgICAgICAgICAgeyAiY3B0IiwgQCJhcHBsaWNhdGlvbi9t
YWMtY29tcGFjdHBybyIgfSwKKyAgICAgICAgICAgIHsgImNzaCIsIEAiYXBwbGljYXRpb24veC1j
c2giIH0sCisgICAgICAgICAgICB7ICJjc3MiLCBAInRleHQvY3NzIiB9LAorICAgICAgICAgICAg
eyAiZGNyIiwgQCJhcHBsaWNhdGlvbi94LWRpcmVjdG9yIiB9LAorICAgICAgICAgICAgeyAiZGly
IiwgQCJhcHBsaWNhdGlvbi94LWRpcmVjdG9yIiB9LAorICAgICAgICAgICAgeyAiZG1nIiwgQCJh
cHBsaWNhdGlvbi94LWRpc2tjb3B5IiB9LAorICAgICAgICAgICAgeyAiZG1zIiwgQCJhcHBsaWNh
dGlvbi9vY3RldC1zdHJlYW0iIH0sCisgICAgICAgICAgICB7ICJkdmkiLCBAImFwcGxpY2F0aW9u
L3gtZHZpIiB9LAorICAgICAgICAgICAgeyAiZHhyIiwgQCJhcHBsaWNhdGlvbi94LWRpcmVjdG9y
IiB9LAorICAgICAgICAgICAgeyAiZXBzIiwgQCJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0IiB9LAor
ICAgICAgICAgICAgeyAiZXR4IiwgQCJ0ZXh0L3gtc2V0ZXh0IiB9LAorICAgICAgICAgICAgeyAi
ZXoiLCBAImFwcGxpY2F0aW9uL2FuZHJldy1pbnNldCIgfSwKKyAgICAgICAgICAgIHsgImZkZiIs
IEAiYXBwbGljYXRpb24vdm5kLmZkZiIgfSwKKyAgICAgICAgICAgIHsgImZsYSIsIEAiYXBwbGlj
YXRpb24vb2N0ZXQtc3RyZWFtIiB9LAorICAgICAgICAgICAgeyAiZnAiLCBAImFwcGxpY2F0aW9u
L3gtZmlsZW1ha2VyIiB9LAorICAgICAgICAgICAgeyAiZnAyIiwgQCJhcHBsaWNhdGlvbi94LWZp
bGVtYWtlciIgfSwKKyAgICAgICAgICAgIHsgImZwMyIsIEAiYXBwbGljYXRpb24veC1maWxlbWFr
ZXIiIH0sCisgICAgICAgICAgICB7ICJmcDQiLCBAImFwcGxpY2F0aW9uL3gtZmlsZW1ha2VyIiB9
LAorICAgICAgICAgICAgeyAiZnA1IiwgQCJhcHBsaWNhdGlvbi94LWZpbGVtYWtlciIgfSwKKyAg
ICAgICAgICAgIHsgImZwNiIsIEAiYXBwbGljYXRpb24veC1maWxlbWFrZXIiIH0sCisgICAgICAg
ICAgICB7ICJoZGYiLCBAImFwcGxpY2F0aW9uL3gtaGRmIiB9LAorICAgICAgICAgICAgeyAiaWNl
IiwgQCJ4LWNvbmZlcmVuY2UveC1jb29sdGFsayIgfSwKKyAgICAgICAgICAgIHsgImljbyIsIEAi
aW1hZ2UveC1pY29uIiB9LAorICAgICAgICAgICAgeyAiaWNzIiwgQCJ0ZXh0L2NhbGVuZGFyIiB9
LAorICAgICAgICAgICAgeyAiaWVmIiwgQCJpbWFnZS9pZWYiIH0sCisgICAgICAgICAgICB7ICJp
Z2VzIiwgQCJtb2RlbC9pZ2VzIiB9LAorICAgICAgICAgICAgeyAiaWdzIiwgQCJtb2RlbC9pZ2Vz
IiB9LAorICAgICAgICAgICAgeyAiaXNvIiwgQCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iIH0s
CisgICAgICAgICAgICB7ICJqaHRtbCIsIEAidGV4dC9odG1sIiB9LAorICAgICAgICAgICAgeyAi
bGF0ZXgiLCBAImFwcGxpY2F0aW9uL3gtbGF0ZXgiIH0sCisgICAgICAgICAgICB7ICJsaGEiLCBA
ImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIgfSwKKyAgICAgICAgICAgIHsgImx6aCIsIEAiYXBw
bGljYXRpb24vb2N0ZXQtc3RyZWFtIiB9LAorICAgICAgICAgICAgeyAibTN1IiwgQCJhdWRpby94
LW1wZWd1cmwiIH0sCisgICAgICAgICAgICB7ICJtNHAiLCBAImF1ZGlvL3gtbTRwIiB9LAorICAg
ICAgICAgICAgeyAibWFjIiwgQCJpbWFnZS94LW1hY3BhaW50IiB9LAorICAgICAgICAgICAgeyAi
bWFuIiwgQCJhcHBsaWNhdGlvbi94LXRyb2ZmLW1hbiIgfSwKKyAgICAgICAgICAgIHsgIm1lIiwg
QCJhcHBsaWNhdGlvbi94LXRyb2ZmLW1lIiB9LAorICAgICAgICAgICAgeyAibWVzaCIsIEAibW9k
ZWwvbWVzaCIgfSwKKyAgICAgICAgICAgIHsgIm1pZiIsIEAiYXBwbGljYXRpb24vdm5kLm1pZiIg
fSwKKyAgICAgICAgICAgIHsgIm1qcyIsIEAidGV4dC9qYXZhc2NyaXB0IiB9LAorICAgICAgICAg
ICAgeyAibW92aWUiLCBAInZpZGVvL3gtc2dpLW1vdmllIiB9LAorICAgICAgICAgICAgeyAibXAy
IiwgQCJhdWRpby9tcGVnIiB9LAorICAgICAgICAgICAgeyAibXBnYSIsIEAiYXVkaW8vbXBlZyIg
fSwKKyAgICAgICAgICAgIHsgIm1zIiwgQCJhcHBsaWNhdGlvbi94LXRyb2ZmLW1zIiB9LAorICAg
ICAgICAgICAgeyAibXNoIiwgQCJtb2RlbC9tZXNoIiB9LAorICAgICAgICAgICAgeyAibXh1Iiwg
QCJ2aWRlby92bmQubXBlZ3VybCIgfSwKKyAgICAgICAgICAgIHsgIm5jIiwgQCJhcHBsaWNhdGlv
bi94LW5ldGNkZiIgfSwKKyAgICAgICAgICAgIHsgIm9kYSIsIEAiYXBwbGljYXRpb24vb2RhIiB9
LAorICAgICAgICAgICAgeyAicGJtIiwgQCJpbWFnZS94LXBvcnRhYmxlLWJpdG1hcCIgfSwKKyAg
ICAgICAgICAgIHsgInBjeCIsIEAiaW1hZ2UveC1wY3giIH0sCisgICAgICAgICAgICB7ICJwZGIi
LCBAImNoZW1pY2FsL3gtcGRiIiB9LAorICAgICAgICAgICAgeyAicGdtIiwgQCJpbWFnZS94LXBv
cnRhYmxlLWdyYXltYXAiIH0sCisgICAgICAgICAgICB7ICJwZ24iLCBAImFwcGxpY2F0aW9uL3gt
Y2hlc3MtcGduIiB9LAorICAgICAgICAgICAgeyAicGxzIiwgQCJhdWRpby9zY3BscyIgfSwKKyAg
ICAgICAgICAgIHsgInBubSIsIEAiaW1hZ2UveC1wb3J0YWJsZS1hbnltYXAiIH0sCisgICAgICAg
ICAgICB7ICJwbnQiLCBAImltYWdlL3gtbWFjcGFpbnQiIH0sCisgICAgICAgICAgICB7ICJwbnRn
IiwgQCJpbWFnZS94LW1hY3BhaW50IiB9LAorICAgICAgICAgICAgeyAicHBtIiwgQCJpbWFnZS94
LXBvcnRhYmxlLXBpeG1hcCIgfSwKKyAgICAgICAgICAgIHsgInJhcyIsIEAiaW1hZ2UveC1jbXUt
cmFzdGVyIiB9LAorICAgICAgICAgICAgeyAicmdiIiwgQCJpbWFnZS94LXJnYiIgfSwKKyAgICAg
ICAgICAgIHsgInJvZmYiLCBAImFwcGxpY2F0aW9uL3gtdHJvZmYiIH0sCisgICAgICAgICAgICB7
ICJycG0iLCBAImF1ZGlvL3gtcG4tcmVhbGF1ZGlvLXBsdWdpbiIgfSwKKyAgICAgICAgICAgIHsg
InJ0eCIsIEAidGV4dC9yaWNodGV4dCIgfSwKKyAgICAgICAgICAgIHsgInNnbSIsIEAidGV4dC9z
Z21sIiB9LAorICAgICAgICAgICAgeyAic2dtbCIsIEAidGV4dC9zZ21sIiB9LAorICAgICAgICAg
ICAgeyAic2giLCBAImFwcGxpY2F0aW9uL3gtc2giIH0sCisgICAgICAgICAgICB7ICJzaGFyIiwg
QCJhcHBsaWNhdGlvbi94LXNoYXIiIH0sCisgICAgICAgICAgICB7ICJzaWxvIiwgQCJtb2RlbC9t
ZXNoIiB9LAorICAgICAgICAgICAgeyAic2tkIiwgQCJhcHBsaWNhdGlvbi94LWtvYW4iIH0sCisg
ICAgICAgICAgICB7ICJza20iLCBAImFwcGxpY2F0aW9uL3gta29hbiIgfSwKKyAgICAgICAgICAg
IHsgInNrcCIsIEAiYXBwbGljYXRpb24veC1rb2FuIiB9LAorICAgICAgICAgICAgeyAic2t0Iiwg
QCJhcHBsaWNhdGlvbi94LWtvYW4iIH0sCisgICAgICAgICAgICB7ICJzbWkiLCBAImFwcGxpY2F0
aW9uL3gtZGlza2NvcHkiIH0sCisgICAgICAgICAgICB7ICJzbyIsIEAiYXBwbGljYXRpb24vb2N0
ZXQtc3RyZWFtIiB9LAorICAgICAgICAgICAgeyAic3BsIiwgQCJhcHBsaWNhdGlvbi94LWZ1dHVy
ZXNwbGFzaCIgfSwKKyAgICAgICAgICAgIHsgInNyYyIsIEAiYXBwbGljYXRpb24veC13YWlzLXNv
dXJjZSIgfSwKKyAgICAgICAgICAgIHsgInN2NGNwaW8iLCBAImFwcGxpY2F0aW9uL3gtc3Y0Y3Bp
byIgfSwKKyAgICAgICAgICAgIHsgInN2NGNyYyIsIEAiYXBwbGljYXRpb24veC1zdjRjcmMiIH0s
CisgICAgICAgICAgICB7ICJzd2YiLCBAImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoIiB9
LAorICAgICAgICAgICAgeyAidCIsIEAiYXBwbGljYXRpb24veC10cm9mZiIgfSwKKyAgICAgICAg
ICAgIHsgInRhcmdhIiwgQCJpbWFnZS94LXRhcmdhIiB9LAorICAgICAgICAgICAgeyAidGNsIiwg
QCJhcHBsaWNhdGlvbi94LXRjbCIgfSwKKyAgICAgICAgICAgIHsgInRleCIsIEAiYXBwbGljYXRp
b24veC10ZXgiIH0sCisgICAgICAgICAgICB7ICJ0ZXhpIiwgQCJhcHBsaWNhdGlvbi94LXRleGlu
Zm8iIH0sCisgICAgICAgICAgICB7ICJ0ZXhpbmZvIiwgQCJhcHBsaWNhdGlvbi94LXRleGluZm8i
IH0sCisgICAgICAgICAgICB7ICJ0Z3oiLCBAImFwcGxpY2F0aW9uL3gtZ3ppcCIgfSwKKyAgICAg
ICAgICAgIHsgInRvcnJlbnQiLCBAImFwcGxpY2F0aW9uL3gtYml0dG9ycmVudCIgfSwKKyAgICAg
ICAgICAgIHsgInRyIiwgQCJhcHBsaWNhdGlvbi94LXRyb2ZmIiB9LAorICAgICAgICAgICAgeyAi
dHN2IiwgQCJ0ZXh0L3RhYi1zZXBhcmF0ZWQtdmFsdWVzIiB9LAorICAgICAgICAgICAgeyAidXN0
YXIiLCBAImFwcGxpY2F0aW9uL3gtdXN0YXIiIH0sCisgICAgICAgICAgICB7ICJ2Y2QiLCBAImFw
cGxpY2F0aW9uL3gtY2RsaW5rIiB9LAorICAgICAgICAgICAgeyAidnJtbCIsIEAibW9kZWwvdnJt
bCIgfSwKKyAgICAgICAgICAgIHsgIndibXAiLCBAImltYWdlL3ZuZC53YXAud2JtcCIgfSwKKyAg
ICAgICAgICAgIHsgIndieG1sIiwgQCJhcHBsaWNhdGlvbi92bmQud2FwLndieG1sIiB9LAorICAg
ICAgICAgICAgeyAid2ViYXJjaGl2ZSIsIEAiYXBwbGljYXRpb24veC13ZWJhcmNoaXZlIiB9LAor
ICAgICAgICAgICAgeyAid2VibSIsIEAidmlkZW8vd2VibSIgfSwKKyAgICAgICAgICAgIHsgIndt
ZCIsIEAiYXBwbGljYXRpb24veC1tcy13bWQiIH0sCisgICAgICAgICAgICB7ICJ3bWwiLCBAInRl
eHQvdm5kLndhcC53bWwiIH0sCisgICAgICAgICAgICB7ICJ3bWxjIiwgQCJhcHBsaWNhdGlvbi92
bmQud2FwLndtbGMiIH0sCisgICAgICAgICAgICB7ICJ3bWxzIiwgQCJ0ZXh0L3ZuZC53YXAud21s
c2NyaXB0IiB9LAorICAgICAgICAgICAgeyAid21sc2MiLCBAImFwcGxpY2F0aW9uL3ZuZC53YXAu
d21sc2NyaXB0YyIgfSwKKyAgICAgICAgICAgIHsgIndybCIsIEAibW9kZWwvdnJtbCIgfSwKKyAg
ICAgICAgICAgIHsgInhkcCIsIEAiYXBwbGljYXRpb24vdm5kLmFkb2JlLnhkcCt4bWwiIH0sCisg
ICAgICAgICAgICB7ICJ4ZmQiLCBAImFwcGxpY2F0aW9uL3ZuZC5hZG9iZS54ZmQreG1sIiB9LAor
ICAgICAgICAgICAgeyAieGZkZiIsIEAiYXBwbGljYXRpb24vdm5kLmFkb2JlLnhmZGYiIH0sCisg
ICAgICAgICAgICB7ICJ4cG0iLCBAImltYWdlL3gteHBpeG1hcCIgfSwKKyAgICAgICAgICAgIHsg
InhzbCIsIEAidGV4dC94bWwiIH0sCisgICAgICAgICAgICB7ICJ4d2QiLCBAImltYWdlL3gteHdp
bmRvd2R1bXAiIH0sCisgICAgICAgICAgICB7ICJ4eXoiLCBAImNoZW1pY2FsL3gteHl6IiB9LAor
ICAgICAgICAgICAgeyAieiIsIEAiYXBwbGljYXRpb24veC1jb21wcmVzcyIgfSwKKyAgICAgICAg
fTsKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBTb3J0ZWRBcnJheU1hcCBleHRlbnNpb25NYXAg
eyBleHRlbnNpb25QYWlycyB9OworICAgICAgICB0eXBlID0gKF9fYnJpZGdlIENGU3RyaW5nUmVm
KWV4dGVuc2lvbk1hcC5nZXQoU3RyaW5nIHsgZXh0ZW5zaW9uLmdldCgpIH0pOworICAgICAgICBp
ZiAoIXR5cGUpCisgICAgICAgICAgICB0eXBlID0gcHJlZmVycmVkTUlNRVR5cGVGb3JGaWxlRXh0
ZW5zaW9uRnJvbVVUVHlwZShleHRlbnNpb24uZ2V0KCkpOwogICAgIH0KLSAgICAKLSAgICBpZiAo
IXJlc3VsdCkgewotICAgICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYgZGVmYXVsdE1JTUVUeXBlU3Ry
aW5nID0gV2ViQ29yZTo6ZGVmYXVsdE1JTUVUeXBlKCkuY3JlYXRlQ0ZTdHJpbmcoKS5sZWFrUmVm
KCk7Ci0gICAgICAgIHJlc3VsdCA9IGRlZmF1bHRNSU1FVHlwZVN0cmluZzsKKworICAgIGlmICgh
dHlwZSkgeworICAgICAgICBzdGF0aWMgYXV0byBkZWZhdWx0VHlwZSA9IG1ha2VOZXZlckRlc3Ry
b3llZChXZWJDb3JlOjpkZWZhdWx0TUlNRVR5cGUoKS5jcmVhdGVDRlN0cmluZygpKTsKKyAgICAg
ICAgdHlwZSA9IGRlZmF1bHRUeXBlOwogICAgIH0KIAotICAgIGlmIChyZXN1bHQgIT0gb3JpZ2lu
YWxSZXN1bHQpCi0gICAgICAgIENGVVJMUmVzcG9uc2VTZXRNSU1FVHlwZShjZlJlc3BvbnNlLCBy
ZXN1bHQuZ2V0KCkpOworICAgIENGVVJMUmVzcG9uc2VTZXRNSU1FVHlwZShyZXNwb25zZSwgdHlw
ZS5nZXQoKSk7CiB9CisKICNlbmRpZgogCiBOU1VSTFJlc3BvbnNlICpzeW50aGVzaXplUmVkaXJl
Y3RSZXNwb25zZUlmTmVjZXNzYXJ5KE5TVVJMUmVxdWVzdCAqY3VycmVudFJlcXVlc3QsIE5TVVJM
UmVxdWVzdCAqbmV3UmVxdWVzdCwgTlNVUkxSZXNwb25zZSAqcmVkaXJlY3RSZXNwb25zZSkKQEAg
LTM0NSw0ICsyMDUsMTkgQEAgTlNVUkxSZXNwb25zZSAqc3ludGhlc2l6ZVJlZGlyZWN0UmVzcG9u
c2VJZk5lY2Vzc2FyeShOU1VSTFJlcXVlc3QgKmN1cnJlbnRSZXF1ZXMKICAgICByZXR1cm4gcmV0
YWluUHRyKFJlc291cmNlUmVzcG9uc2U6OnN5bnRoZXRpY1JlZGlyZWN0UmVzcG9uc2UoVVJMKFtj
dXJyZW50UmVxdWVzdCBVUkxdKSwgVVJMKFtuZXdSZXF1ZXN0IFVSTF0pKS5uc1VSTFJlc3BvbnNl
KCkpLmF1dG9yZWxlYXNlKCk7CiB9CiAKK1JldGFpblB0cjxDRlN0cmluZ1JlZj4gZmlsZVBhdGhF
eHRlbnNpb24oQ0ZVUkxSZXNwb25zZVJlZiByZXNwb25zZSkKK3sKKyAgICBhdXRvIHJlc3BvbnNl
VVJMID0gQ0ZVUkxSZXNwb25zZUdldFVSTChyZXNwb25zZSk7CisgICAgaWYgKCFbKF9fYnJpZGdl
IE5TVVJMICopcmVzcG9uc2VVUkwgaXNGaWxlVVJMXSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgcmV0dXJuIGFkb3B0Q0YoQ0ZVUkxDb3B5UGF0aEV4dGVuc2lvbihyZXNwb25zZVVSTCkp
OworfQorCitSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHByZWZlcnJlZE1JTUVUeXBlRm9yRmlsZUV4
dGVuc2lvbkZyb21VVFR5cGUoQ0ZTdHJpbmdSZWYgZXh0ZW5zaW9uKQoreworQUxMT1dfREVQUkVD
QVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KKyAgICByZXR1cm4gbWltZVR5cGVGcm9tVVRJVHJlZShh
ZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NG
aWxlbmFtZUV4dGVuc2lvbiwgZXh0ZW5zaW9uLCBudWxscHRyKSkuZ2V0KCkpOworQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQubW0KaW5kZXggNWE5YmJjNzE1
YzllNWM4NDNhYWYyYjkxNWRkODhmNzJlZmExOWVlMS4uYmEyZjI5NTViZDYxNWRmZDVlMTQzZjc2
NDhmMmUwMGVkYmU5YTlhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2Nv
YS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9j
b2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQubW0KQEAgLTE1Miw0MCArMTUyLDQwIEBAIHN0YXRp
YyB2b2lkIG5vcm1hbGl6ZVdlYlJlc291cmNlVVJMKENGTXV0YWJsZVN0cmluZ1JlZiB3ZWJSZXNv
dXJjZVVSTCkKIAogc3RhdGljIHZvaWQgY29udmVydFdlYlJlc291cmNlUmVzcG9uc2VUb0RpY3Rp
b25hcnkoQ0ZNdXRhYmxlRGljdGlvbmFyeVJlZiBwcm9wZXJ0eUxpc3QpCiB7Ci0gICAgQ0ZEYXRh
UmVmIHJlc3BvbnNlRGF0YSA9IHN0YXRpY19jYXN0PENGRGF0YVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0
VmFsdWUocHJvcGVydHlMaXN0LCBDRlNUUigiV2ViUmVzb3VyY2VSZXNwb25zZSIpKSk7IC8vIFdl
YlJlc291cmNlUmVzcG9uc2VLZXkgaW4gV2ViUmVzb3VyY2UubQotICAgIGlmIChDRkdldFR5cGVJ
RChyZXNwb25zZURhdGEpICE9IENGRGF0YUdldFR5cGVJRCgpKQorICAgIGF1dG8gcmVzcG9uc2VE
YXRhID0gZHluYW1pY19jZl9jYXN0PENGRGF0YVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJv
cGVydHlMaXN0LCBDRlNUUigiV2ViUmVzb3VyY2VSZXNwb25zZSIpKSk7IC8vIFdlYlJlc291cmNl
UmVzcG9uc2VLZXkgaW4gV2ViUmVzb3VyY2UubQorICAgIGlmICghcmVzcG9uc2VEYXRhKQogICAg
ICAgICByZXR1cm47CiAKICAgICBhdXRvIHJlc3BvbnNlID0gY3JlYXRlQ0ZVUkxSZXNwb25zZUZy
b21SZXNwb25zZURhdGEocmVzcG9uc2VEYXRhKTsKICAgICBpZiAoIXJlc3BvbnNlKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gcmVzcG9u
c2VEaWN0aW9uYXJ5ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVE
aWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKKyAgICBhdXRvIHJlc3BvbnNlRGljdGlvbmFyeSA9
IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAw
LCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVl
Q2FsbEJhY2tzKSk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlU3RyaW5nUmVmPiB1cmxTdHJp
bmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgMCwgQ0ZVUkxHZXRTdHJpbmcoQ0ZVUkxSZXNwb25zZUdldFVSTChyZXNwb25zZS5nZXQoKSkp
KSk7CisgICAgYXV0byB1cmxTdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlTXV0YWJsZUNv
cHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgQ0ZVUkxHZXRTdHJpbmcoQ0ZVUkxSZXNwb25zZUdl
dFVSTChyZXNwb25zZS5nZXQoKSkpKSk7CiAgICAgbm9ybWFsaXplV2ViUmVzb3VyY2VVUkwodXJs
U3RyaW5nLmdldCgpKTsKICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShyZXNwb25zZURpY3Rpb25h
cnkuZ2V0KCksIENGU1RSKCJVUkwiKSwgdXJsU3RyaW5nLmdldCgpKTsKIAotICAgIFJldGFpblB0
cjxDRk11dGFibGVTdHJpbmdSZWY+IG1pbWVUeXBlU3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0Ny
ZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIENGVVJMUmVzcG9uc2VHZXRN
SU1FVHlwZShyZXNwb25zZS5nZXQoKSkpKTsKKyAgICBhdXRvIG1pbWVUeXBlU3RyaW5nID0gYWRv
cHRDRihDRlN0cmluZ0NyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIENG
VVJMUmVzcG9uc2VHZXRNSU1FVHlwZShyZXNwb25zZS5nZXQoKSkpKTsKICAgICBjb252ZXJ0TUlN
RVR5cGUobWltZVR5cGVTdHJpbmcuZ2V0KCkpOwogICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHJl
c3BvbnNlRGljdGlvbmFyeS5nZXQoKSwgQ0ZTVFIoIk1JTUVUeXBlIiksIG1pbWVUeXBlU3RyaW5n
LmdldCgpKTsKIAotICAgIENGU3RyaW5nUmVmIHRleHRFbmNvZGluZ05hbWUgPSBDRlVSTFJlc3Bv
bnNlR2V0VGV4dEVuY29kaW5nTmFtZShyZXNwb25zZS5nZXQoKSk7CisgICAgYXV0byB0ZXh0RW5j
b2RpbmdOYW1lID0gQ0ZVUkxSZXNwb25zZUdldFRleHRFbmNvZGluZ05hbWUocmVzcG9uc2UuZ2V0
KCkpOwogICAgIGlmICh0ZXh0RW5jb2RpbmdOYW1lKQogICAgICAgICBDRkRpY3Rpb25hcnlTZXRW
YWx1ZShyZXNwb25zZURpY3Rpb25hcnkuZ2V0KCksIENGU1RSKCJ0ZXh0RW5jb2RpbmdOYW1lIiks
IHRleHRFbmNvZGluZ05hbWUpOwogCiAgICAgU0ludDY0IGV4cGVjdGVkQ29udGVudExlbmd0aCA9
IENGVVJMUmVzcG9uc2VHZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgocmVzcG9uc2UuZ2V0KCkpOwot
ICAgIFJldGFpblB0cjxDRk51bWJlclJlZj4gZXhwZWN0ZWRDb250ZW50TGVuZ3RoTnVtYmVyID0g
YWRvcHRDRihDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTSW50
NjRUeXBlLCAmZXhwZWN0ZWRDb250ZW50TGVuZ3RoKSk7CisgICAgYXV0byBleHBlY3RlZENvbnRl
bnRMZW5ndGhOdW1iZXIgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIGtDRk51bWJlclNJbnQ2NFR5cGUsICZleHBlY3RlZENvbnRlbnRMZW5ndGgpKTsKICAgICBD
RkRpY3Rpb25hcnlTZXRWYWx1ZShyZXNwb25zZURpY3Rpb25hcnkuZ2V0KCksIENGU1RSKCJleHBl
Y3RlZENvbnRlbnRMZW5ndGgiKSwgZXhwZWN0ZWRDb250ZW50TGVuZ3RoTnVtYmVyLmdldCgpKTsK
IAogICAgIGlmIChDRkhUVFBNZXNzYWdlUmVmIGh0dHBNZXNzYWdlID0gQ0ZVUkxSZXNwb25zZUdl
dEhUVFBSZXNwb25zZShyZXNwb25zZS5nZXQoKSkpIHsKLSAgICAgICAgUmV0YWluUHRyPENGRGlj
dGlvbmFyeVJlZj4gYWxsSGVhZGVycyA9IGFkb3B0Q0YoQ0ZIVFRQTWVzc2FnZUNvcHlBbGxIZWFk
ZXJGaWVsZHMoaHR0cE1lc3NhZ2UpKTsKLSAgICAgICAgUmV0YWluUHRyPENGTXV0YWJsZURpY3Rp
b25hcnlSZWY+IGFsbEhlYWRlckZpZWxkcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0
YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgYWxsSGVhZGVycy5nZXQoKSkpOworICAg
ICAgICBhdXRvIGFsbEhlYWRlcnMgPSBhZG9wdENGKENGSFRUUE1lc3NhZ2VDb3B5QWxsSGVhZGVy
RmllbGRzKGh0dHBNZXNzYWdlKSk7CisgICAgICAgIGF1dG8gYWxsSGVhZGVyRmllbGRzID0gYWRv
cHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAw
LCBhbGxIZWFkZXJzLmdldCgpKSk7CiAgICAgICAgIG5vcm1hbGl6ZUhUVFBSZXNwb25zZUhlYWRl
ckZpZWxkcyhhbGxIZWFkZXJGaWVsZHMuZ2V0KCkpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRW
YWx1ZShyZXNwb25zZURpY3Rpb25hcnkuZ2V0KCksIENGU1RSKCJhbGxIZWFkZXJGaWVsZHMiKSwg
YWxsSGVhZGVyRmllbGRzLmdldCgpKTsKIAogICAgICAgICBDRkluZGV4IHN0YXR1c0NvZGUgPSBD
RkhUVFBNZXNzYWdlR2V0UmVzcG9uc2VTdGF0dXNDb2RlKGh0dHBNZXNzYWdlKTsKLSAgICAgICAg
UmV0YWluUHRyPENGTnVtYmVyUmVmPiBzdGF0dXNDb2RlTnVtYmVyID0gYWRvcHRDRihDRk51bWJl
ckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJDRkluZGV4VHlwZSwgJnN0YXR1
c0NvZGUpKTsKKyAgICAgICAgYXV0byBzdGF0dXNDb2RlTnVtYmVyID0gYWRvcHRDRihDRk51bWJl
ckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJDRkluZGV4VHlwZSwgJnN0YXR1
c0NvZGUpKTsKICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocmVzcG9uc2VEaWN0aW9uYXJ5
LmdldCgpLCBDRlNUUigic3RhdHVzQ29kZSIpLCBzdGF0dXNDb2RlTnVtYmVyLmdldCgpKTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUv
bWFjL05ldHNjYXBlUGx1Z2luTW9kdWxlTWFjLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1
Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW0KaW5kZXggYjNlYWUy
OGE2YWFkZDAxOTA2MjBhNDFhNDQ5MDM4N2Q0NDEzYTNkOS4uZmMzYTE3ZWE5OTY5OWNjMjdmMTAx
Y2Q3ZTczNTBhNjk5MjYzM2Q5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1
Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW0KKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5Nb2R1bGVN
YWMubW0KQEAgLTMyLDYgKzMyLDcgQEAKICNpbXBvcnQgIlBsdWdpblNhbmRib3hQcm9maWxlLmgi
CiAjaW1wb3J0IDx3dGYvSGFzaFNldC5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KKyNp
bXBvcnQgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgogI2ltcG9ydCA8d3RmL3NwaS9jZi9DRkJ1bmRs
ZVNQSS5oPgogI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgog
CkBAIC02Nyw3OCArNjgsNjggQEAgc3RhdGljIGJvb2wgZ2V0UGx1Z2luQXJjaGl0ZWN0dXJlKENG
QnVuZGxlUmVmIGJ1bmRsZSwgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luKQogCiBzdGF0aWMgYm9v
bCBnZXRQbHVnaW5JbmZvRnJvbVByb3BlcnR5TGlzdHMoQ0ZCdW5kbGVSZWYgYnVuZGxlLCBQbHVn
aW5Nb2R1bGVJbmZvJiBwbHVnaW4pCiB7Ci0gICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4g
bWltZVR5cGVzID0gc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkJ1bmRsZUdldFZhbHVl
Rm9ySW5mb0RpY3Rpb25hcnlLZXkoYnVuZGxlLCBDRlNUUigiV2ViUGx1Z2luTUlNRVR5cGVzIikp
KTsKLSAgICBpZiAoIW1pbWVUeXBlcyB8fCBDRkdldFR5cGVJRChtaW1lVHlwZXMuZ2V0KCkpICE9
IENGRGljdGlvbmFyeUdldFR5cGVJRCgpKQorICAgIFJldGFpblB0ciBtaW1lVHlwZXMgPSBkeW5h
bWljX2NmX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkJ1bmRsZUdldFZhbHVlRm9ySW5mb0RpY3Rp
b25hcnlLZXkoYnVuZGxlLCBDRlNUUigiV2ViUGx1Z2luTUlNRVR5cGVzIikpKTsKKyAgICBpZiAo
IW1pbWVUeXBlcykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gR2V0IHRoZSBwbHVn
LWluIG5hbWUuCi0gICAgQ0ZTdHJpbmdSZWYgcGx1Z2luTmFtZSA9IHN0YXRpY19jYXN0PENGU3Ry
aW5nUmVmPihDRkJ1bmRsZUdldFZhbHVlRm9ySW5mb0RpY3Rpb25hcnlLZXkoYnVuZGxlLCBDRlNU
UigiV2ViUGx1Z2luTmFtZSIpKSk7Ci0gICAgaWYgKHBsdWdpbk5hbWUgJiYgQ0ZHZXRUeXBlSUQo
cGx1Z2luTmFtZSkgPT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkKKyAgICBhdXRvIHBsdWdpbk5hbWUg
PSBkeW5hbWljX2NmX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQnVuZGxlR2V0VmFsdWVGb3JJbmZvRGlj
dGlvbmFyeUtleShidW5kbGUsIENGU1RSKCJXZWJQbHVnaW5OYW1lIikpKTsKKyAgICBpZiAocGx1
Z2luTmFtZSkKICAgICAgICAgcGx1Z2luLmluZm8ubmFtZSA9IHBsdWdpbk5hbWU7CiAgICAgCiAg
ICAgLy8gR2V0IHRoZSBwbHVnLWluIGRlc2NyaXB0aW9uLgotICAgIENGU3RyaW5nUmVmIHBsdWdp
bkRlc2NyaXB0aW9uID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQnVuZGxlR2V0VmFsdWVG
b3JJbmZvRGljdGlvbmFyeUtleShidW5kbGUsIENGU1RSKCJXZWJQbHVnaW5EZXNjcmlwdGlvbiIp
KSk7Ci0gICAgaWYgKHBsdWdpbkRlc2NyaXB0aW9uICYmIENGR2V0VHlwZUlEKHBsdWdpbkRlc2Ny
aXB0aW9uKSA9PSBDRlN0cmluZ0dldFR5cGVJRCgpKQorICAgIGF1dG8gcGx1Z2luRGVzY3JpcHRp
b24gPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQnVuZGxlR2V0VmFsdWVGb3JJbmZv
RGljdGlvbmFyeUtleShidW5kbGUsIENGU1RSKCJXZWJQbHVnaW5EZXNjcmlwdGlvbiIpKSk7Cisg
ICAgaWYgKHBsdWdpbkRlc2NyaXB0aW9uKQogICAgICAgICBwbHVnaW4uaW5mby5kZXNjID0gcGx1
Z2luRGVzY3JpcHRpb247CiAgICAgCiAgICAgLy8gR2V0IHRoZSBNSU1FIHR5cGUgbWFwcGluZyBk
aWN0aW9uYXJ5LgogICAgIENGSW5kZXggbnVtTWltZVR5cGVzID0gQ0ZEaWN0aW9uYXJ5R2V0Q291
bnQobWltZVR5cGVzLmdldCgpKTsgICAgICAgICAgCi0gICAgVmVjdG9yPENGU3RyaW5nUmVmPiBt
aW1lVHlwZXNWZWN0b3IobnVtTWltZVR5cGVzKTsKLSAgICBWZWN0b3I8Q0ZEaWN0aW9uYXJ5UmVm
PiBtaW1lVHlwZUluZm9WZWN0b3IobnVtTWltZVR5cGVzKTsKLSAgICBDRkRpY3Rpb25hcnlHZXRL
ZXlzQW5kVmFsdWVzKG1pbWVUeXBlcy5nZXQoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB2b2lk
Kio+KG1pbWVUeXBlc1ZlY3Rvci5kYXRhKCkpLCByZWludGVycHJldF9jYXN0PGNvbnN0IHZvaWQq
Kj4obWltZVR5cGVJbmZvVmVjdG9yLmRhdGEoKSkpOworICAgIFZlY3RvcjxDRlR5cGVSZWY+IG1p
bWVUeXBlc1ZlY3RvcihudW1NaW1lVHlwZXMpOworICAgIFZlY3RvcjxDRlR5cGVSZWY+IG1pbWVU
eXBlSW5mb1ZlY3RvcihudW1NaW1lVHlwZXMpOworICAgIENGRGljdGlvbmFyeUdldEtleXNBbmRW
YWx1ZXMobWltZVR5cGVzLmdldCgpLCBtaW1lVHlwZXNWZWN0b3IuZGF0YSgpLCBtaW1lVHlwZUlu
Zm9WZWN0b3IuZGF0YSgpKTsKICAgICAKICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBudW1N
aW1lVHlwZXM7ICsraSkgewogICAgICAgICBXZWJDb3JlOjpNaW1lQ2xhc3NJbmZvIG1pbWVDbGFz
c0luZm87CiAgICAgICAgIAogICAgICAgICAvLyBJZiB0aGlzIE1JTUUgdHlwZSBpcyBpbnZhbGlk
LCBpZ25vcmUgaXQuCi0gICAgICAgIENGU3RyaW5nUmVmIG1pbWVUeXBlID0gbWltZVR5cGVzVmVj
dG9yW2ldOwotICAgICAgICBpZiAoIW1pbWVUeXBlIHx8IENGR2V0VHlwZUlEKG1pbWVUeXBlKSAh
PSBDRlN0cmluZ0dldFR5cGVJRCgpIHx8IENGU3RyaW5nR2V0TGVuZ3RoKG1pbWVUeXBlKSA9PSAw
KQorICAgICAgICBhdXRvIG1pbWVUeXBlID0gZHluYW1pY19jZl9jYXN0PENGU3RyaW5nUmVmPiht
aW1lVHlwZXNWZWN0b3JbaV0pOworICAgICAgICBpZiAoIW1pbWVUeXBlIHx8ICFDRlN0cmluZ0dl
dExlbmd0aChtaW1lVHlwZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAvLyBJ
ZiB0aGlzIE1JTUUgdHlwZSBkb2Vzbid0IGhhdmUgYSB2YWxpZCBpbmZvIGRpY3Rpb25hcnksIGln
bm9yZSBpdC4KLSAgICAgICAgQ0ZEaWN0aW9uYXJ5UmVmIG1pbWVUeXBlSW5mbyA9IG1pbWVUeXBl
SW5mb1ZlY3RvcltpXTsKLSAgICAgICAgaWYgKCFtaW1lVHlwZUluZm8gfHwgQ0ZHZXRUeXBlSUQo
bWltZVR5cGVJbmZvKSAhPSBDRkRpY3Rpb25hcnlHZXRUeXBlSUQoKSkKKyAgICAgICAgYXV0byBt
aW1lVHlwZUluZm8gPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihtaW1lVHlwZUlu
Zm9WZWN0b3JbaV0pOworICAgICAgICBpZiAoIW1pbWVUeXBlSW5mbykKICAgICAgICAgICAgIGNv
bnRpbnVlOwogCiAgICAgICAgIC8vIEZJWE1FOiBDb25zaWRlciBzdG9yaW5nIGRpc2FibGVkIE1J
TUUgdHlwZXMuCi0gICAgICAgIENGVHlwZVJlZiBpc0VuYWJsZWQgPSBDRkRpY3Rpb25hcnlHZXRW
YWx1ZShtaW1lVHlwZUluZm8sIENGU1RSKCJXZWJQbHVnaW5UeXBlRW5hYmxlZCIpKTsKKyAgICAg
ICAgYXV0byBpc0VuYWJsZWQgPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShtaW1lVHlwZUluZm8sIENG
U1RSKCJXZWJQbHVnaW5UeXBlRW5hYmxlZCIpKTsKICAgICAgICAgaWYgKGlzRW5hYmxlZCkgewot
ICAgICAgICAgICAgaWYgKENGR2V0VHlwZUlEKGlzRW5hYmxlZCkgPT0gQ0ZOdW1iZXJHZXRUeXBl
SUQoKSkgeworICAgICAgICAgICAgaWYgKGF1dG8gbnVtYmVyID0gZHluYW1pY19jZl9jYXN0PENG
TnVtYmVyUmVmPihpc0VuYWJsZWQpKSB7CiAgICAgICAgICAgICAgICAgaW50IHZhbHVlOwotICAg
ICAgICAgICAgICAgIGlmICghQ0ZOdW1iZXJHZXRWYWx1ZShzdGF0aWNfY2FzdDxDRk51bWJlclJl
Zj4oaXNFbmFibGVkKSwga0NGTnVtYmVySW50VHlwZSwgJnZhbHVlKSB8fCAhdmFsdWUpCisgICAg
ICAgICAgICAgICAgaWYgKCFDRk51bWJlckdldFZhbHVlKG51bWJlciwga0NGTnVtYmVySW50VHlw
ZSwgJnZhbHVlKSB8fCAhdmFsdWUpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICAgICAgfSBlbHNlIGlmIChDRkdldFR5cGVJRChpc0VuYWJsZWQpID09IENGQm9vbGVhbkdl
dFR5cGVJRCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFDRkJvb2xlYW5HZXRWYWx1ZShzdGF0
aWNfY2FzdDxDRkJvb2xlYW5SZWY+KGlzRW5hYmxlZCkpKQotICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgfSBlbHNlIGlmIChpc0Vu
YWJsZWQgIT0ga0NGQm9vbGVhblRydWUpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIH0KIAotICAgICAgICAvLyBHZXQgdGhlIE1JTUUgdHlwZSBkZXNjcmlwdGlvbi4KLSAgICAg
ICAgQ0ZTdHJpbmdSZWYgbWltZVR5cGVEZXNjcmlwdGlvbiA9IHN0YXRpY19jYXN0PENGU3RyaW5n
UmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShtaW1lVHlwZUluZm8sIENGU1RSKCJXZWJQbHVnaW5U
eXBlRGVzY3JpcHRpb24iKSkpOwotICAgICAgICBpZiAobWltZVR5cGVEZXNjcmlwdGlvbiAmJiBD
RkdldFR5cGVJRChtaW1lVHlwZURlc2NyaXB0aW9uKSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpKQot
ICAgICAgICAgICAgbWltZVR5cGVEZXNjcmlwdGlvbiA9IDA7Ci0KICAgICAgICAgbWltZUNsYXNz
SW5mby50eXBlID0gU3RyaW5nKG1pbWVUeXBlKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpOwot
ICAgICAgICBtaW1lQ2xhc3NJbmZvLmRlc2MgPSBtaW1lVHlwZURlc2NyaXB0aW9uOworICAgICAg
ICBtaW1lQ2xhc3NJbmZvLmRlc2MgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGlj
dGlvbmFyeUdldFZhbHVlKG1pbWVUeXBlSW5mbywgQ0ZTVFIoIldlYlBsdWdpblR5cGVEZXNjcmlw
dGlvbiIpKSk7CiAKICAgICAgICAgLy8gTm93IGdldCB0aGUgZXh0ZW5zaW9ucyBmb3IgdGhpcyBN
SU1FIHR5cGUuCiAgICAgICAgIENGSW5kZXggbnVtRXh0ZW5zaW9ucyA9IDA7Ci0gICAgICAgIENG
QXJyYXlSZWYgZXh0ZW5zaW9uc0FycmF5ID0gc3RhdGljX2Nhc3Q8Q0ZBcnJheVJlZj4oQ0ZEaWN0
aW9uYXJ5R2V0VmFsdWUobWltZVR5cGVJbmZvLCBDRlNUUigiV2ViUGx1Z2luRXh0ZW5zaW9ucyIp
KSk7Ci0gICAgICAgIGlmIChleHRlbnNpb25zQXJyYXkgJiYgQ0ZHZXRUeXBlSUQoZXh0ZW5zaW9u
c0FycmF5KSA9PSBDRkFycmF5R2V0VHlwZUlEKCkpCisgICAgICAgIGF1dG8gZXh0ZW5zaW9uc0Fy
cmF5ID0gZHluYW1pY19jZl9jYXN0PENGQXJyYXlSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKG1p
bWVUeXBlSW5mbywgQ0ZTVFIoIldlYlBsdWdpbkV4dGVuc2lvbnMiKSkpOworICAgICAgICBpZiAo
ZXh0ZW5zaW9uc0FycmF5KQogICAgICAgICAgICAgbnVtRXh0ZW5zaW9ucyA9IENGQXJyYXlHZXRD
b3VudChleHRlbnNpb25zQXJyYXkpOwogCiAgICAgICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8
IG51bUV4dGVuc2lvbnM7ICsraSkgewotICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgZXh0ZW5zaW9u
ID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoZXh0ZW5z
aW9uc0FycmF5LCBpKSk7Ci0gICAgICAgICAgICBpZiAoIWV4dGVuc2lvbiB8fCBDRkdldFR5cGVJ
RChleHRlbnNpb24pICE9IENGU3RyaW5nR2V0VHlwZUlEKCkpCisgICAgICAgICAgICBhdXRvIGV4
dGVuc2lvbiA9IGR5bmFtaWNfY2ZfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZBcnJheUdldFZhbHVlQXRJ
bmRleChleHRlbnNpb25zQXJyYXksIGkpKTsKKyAgICAgICAgICAgIGlmICghZXh0ZW5zaW9uKQog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICAvLyBUaGUgRGl2WCBwbHVn
LWluIGxpc3RzIG11bHRpcGxlIGV4dGVuc2lvbnMgaW4gYSBjb21tYSBzZXBhcmF0ZWQgc3RyaW5n
IGluc3RlYWQgb2YgdXNpbmcKICAgICAgICAgICAgIC8vIG11bHRpcGxlIGFycmF5IGVsZW1lbnRz
IGluIHRoZSBwcm9wZXJ0eSBsaXN0LiBXb3JrIGFyb3VuZCB0aGlzIGhlcmUgYnkgc3BsaXR0aW5n
IHRoZQogICAgICAgICAgICAgLy8gZXh0ZW5zaW9uIHN0cmluZyBpbnRvIGNvbXBvbmVudHMuCi0g
ICAgICAgICAgICBWZWN0b3I8U3RyaW5nPiBleHRlbnNpb25Db21wb25lbnRzID0gU3RyaW5nKGV4
dGVuc2lvbikuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKS5zcGxpdCgnLCcpOwotCi0gICAgICAg
ICAgICBmb3IgKGF1dG8mIGNvbXBvbmVudCA6IGV4dGVuc2lvbkNvbXBvbmVudHMpCisgICAgICAg
ICAgICBmb3IgKGF1dG8mIGNvbXBvbmVudCA6IFN0cmluZyhleHRlbnNpb24pLmNvbnZlcnRUb0FT
Q0lJTG93ZXJjYXNlKCkuc3BsaXQoJywnKSkKICAgICAgICAgICAgICAgICBtaW1lQ2xhc3NJbmZv
LmV4dGVuc2lvbnMuYXBwZW5kKGNvbXBvbmVudCk7CiAgICAgICAgIH0KIApAQCAtMTUxLDEwICsx
NDIsMTAgQEAgc3RhdGljIGJvb2wgZ2V0UGx1Z2luSW5mb0Zyb21Qcm9wZXJ0eUxpc3RzKENGQnVu
ZGxlUmVmIGJ1bmRsZSwgUGx1Z2luTW9kdWxlSW5mbyYKIAogYm9vbCBOZXRzY2FwZVBsdWdpbk1v
ZHVsZTo6Z2V0UGx1Z2luSW5mbyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFBsdWdpbk1vZHVs
ZUluZm8mIHBsdWdpbikKIHsKLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IGJ1bmRsZVVSTCA9IGFk
b3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmlsZVN5c3RlbVBhdGgoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
cGx1Z2luUGF0aC5jcmVhdGVDRlN0cmluZygpLmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwg
ZmFsc2UpKTsKKyAgICBhdXRvIGJ1bmRsZVVSTCA9IGFkb3B0Q0YoQ0ZVUkxDcmVhdGVXaXRoRmls
ZVN5c3RlbVBhdGgoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcGx1Z2luUGF0aC5jcmVhdGVDRlN0cmlu
ZygpLmdldCgpLCBrQ0ZVUkxQT1NJWFBhdGhTdHlsZSwgZmFsc2UpKTsKICAgICAKICAgICAvLyBU
cnkgdG8gaW5pdGlhbGl6ZSB0aGUgYnVuZGxlLgotICAgIFJldGFpblB0cjxDRkJ1bmRsZVJlZj4g
YnVuZGxlID0gYWRvcHRDRihfQ0ZCdW5kbGVDcmVhdGVVbmlxdWUoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgYnVuZGxlVVJMLmdldCgpKSk7CisgICAgYXV0byBidW5kbGUgPSBhZG9wdENGKF9DRkJ1bmRs
ZUNyZWF0ZVVuaXF1ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBidW5kbGVVUkwuZ2V0KCkpKTsKICAg
ICBpZiAoIWJ1bmRsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIApAQCAtMTcwLDE1ICsx
NjEsOCBAQCBib29sIE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFN0
cmluZyYgcGx1Z2luUGF0aCwgUGx1Z2luTW9kdWxlSQogCiAgICAgcGx1Z2luLnBhdGggPSBwbHVn
aW5QYXRoOwogICAgIHBsdWdpbi5idW5kbGVJZGVudGlmaWVyID0gQ0ZCdW5kbGVHZXRJZGVudGlm
aWVyKGJ1bmRsZS5nZXQoKSk7Ci0gICAgaWYgKENGVHlwZVJlZiB2ZXJzaW9uVHlwZVJlZiA9IENG
QnVuZGxlR2V0VmFsdWVGb3JJbmZvRGljdGlvbmFyeUtleShidW5kbGUuZ2V0KCksIGtDRkJ1bmRs
ZVZlcnNpb25LZXkpKSB7Ci0gICAgICAgIGlmIChDRkdldFR5cGVJRCh2ZXJzaW9uVHlwZVJlZikg
PT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkKLSAgICAgICAgICAgIHBsdWdpbi52ZXJzaW9uU3RyaW5n
ID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KHZlcnNpb25UeXBlUmVmKTsKLSAgICB9Ci0KLSAg
ICBpZiAoQ0ZUeXBlUmVmIHNob3J0VmVyc2lvblR5cGVSZWYgPSBDRkJ1bmRsZUdldFZhbHVlRm9y
SW5mb0RpY3Rpb25hcnlLZXkoYnVuZGxlLmdldCgpLCBDRlNUUigiQ0ZCdW5kbGVTaG9ydFZlcnNp
b25TdHJpbmciKSkpIHsKLSAgICAgICAgaWYgKENGR2V0VHlwZUlEKHNob3J0VmVyc2lvblR5cGVS
ZWYpID09IENGU3RyaW5nR2V0VHlwZUlEKCkpCi0gICAgICAgICAgICBwbHVnaW4uc2hvcnRWZXJz
aW9uU3RyaW5nID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KHNob3J0VmVyc2lvblR5cGVSZWYp
OwotICAgIH0KKyAgICBwbHVnaW4udmVyc2lvblN0cmluZyA9IGR5bmFtaWNfY2ZfY2FzdDxDRlN0
cmluZ1JlZj4oQ0ZCdW5kbGVHZXRWYWx1ZUZvckluZm9EaWN0aW9uYXJ5S2V5KGJ1bmRsZS5nZXQo
KSwga0NGQnVuZGxlVmVyc2lvbktleSkpOworICAgIHBsdWdpbi5zaG9ydFZlcnNpb25TdHJpbmcg
PSBkeW5hbWljX2NmX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQnVuZGxlR2V0VmFsdWVGb3JJbmZvRGlj
dGlvbmFyeUtleShidW5kbGUuZ2V0KCksIENGU1RSKCJDRkJ1bmRsZVNob3J0VmVyc2lvblN0cmlu
ZyIpKSk7CiAKICAgICBpZiAoIWdldFBsdWdpbkluZm9Gcm9tUHJvcGVydHlMaXN0cyhidW5kbGUu
Z2V0KCksIHBsdWdpbikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3Bw
IGIvU291cmNlL1dlYktpdExlZ2FjeS9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnRDRi5jcHAKaW5kZXggMTZkYzE0NGRjYzk4ZTI1NmMwNTMyNjdmNTJkMWQzZTRlNDg5NTgzZC4u
YzZiZGVhNjhjNWU2YzUwZmFlMDliZWUwYTc2NzFmNTUwYTJhYjQ2NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdExlZ2FjeS9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5j
cHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnRDRi5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0y
MDIxIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNDEsNDcgKzQxLDM2IEBACiAjZW5kaWYKICNlbmRpZgogCi0vLyBOT1RF
OiBUaGVzZSBuZWVkIHRvIGFwcGVhciB1cCB0b3AsIGFzIHRoZXkgZGVjbGFyZSBtYWNyb3MKLS8v
IHVzZWQgaW4gdGhlIEpTIGFuZCBXVEYgaGVhZGVycy4KKy8vIE5PVEU6IFRoZXNlIG5lZWQgdG8g
YXBwZWFyIHVwIHRvcCwgYXMgdGhleSBkZWNsYXJlIG1hY3JvcyB1c2VkIGluIHRoZSBKUyBhbmQg
V1RGIGhlYWRlcnMuCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNFeHBvcnRNYWNyb3MuaD4K
ICNpbmNsdWRlIDx3dGYvRXhwb3J0TWFjcm9zLmg+CiAKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JD
bGllbnQuaCIKIAogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+Ci0K
ICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+Ci0KICNpbmNs
dWRlIDx3dGYvUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0K
LXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1zdGF0aWMgY29uc3QgY2hhciogaW5zcGVjdG9y
U3RhcnRzQXR0YWNoZWRTZXR0aW5nID0gImluc3BlY3RvclN0YXJ0c0F0dGFjaGVkIjsKLXN0YXRp
YyBjb25zdCBjaGFyKiBpbnNwZWN0b3JBdHRhY2hEaXNhYmxlZFNldHRpbmcgPSAiaW5zcGVjdG9y
QXR0YWNoRGlzYWJsZWQiOworc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBpbnNwZWN0b3JT
dGFydHNBdHRhY2hlZFNldHRpbmcgPSAiaW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQiOworc3RhdGlj
IGNvbnN0ZXhwciBjb25zdCBjaGFyKiBpbnNwZWN0b3JBdHRhY2hEaXNhYmxlZFNldHRpbmcgPSAi
aW5zcGVjdG9yQXR0YWNoRGlzYWJsZWQiOwogCi1zdGF0aWMgaW5saW5lIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gY3JlYXRlS2V5Rm9yUHJlZmVyZW5jZXMoY29uc3QgU3RyaW5nJiBrZXkpCitzdGF0
aWMgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjcmVhdGVLZXlGb3JQcmVmZXJlbmNlcyhjb25zdCBT
dHJpbmcmIGtleSkKIHsKICAgICByZXR1cm4gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhGb3Jt
YXQoMCwgMCwgQ0ZTVFIoIldlYktpdCBXZWIgSW5zcGVjdG9yIFNldHRpbmcgLSAlQCIpLCBrZXku
Y3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwogfQogCi1zdGF0aWMgdm9pZCBwb3B1bGF0ZVNldHRp
bmcoY29uc3QgU3RyaW5nJiBrZXksIFN0cmluZyogc2V0dGluZykKK3N0YXRpYyBTdHJpbmcgbG9h
ZFNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXkpCiB7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBwcmVmZXJlbmNlc0tleSA9IGNyZWF0ZUtleUZvclByZWZlcmVuY2VzKGtleSk7Ci0gICAgUmV0
YWluUHRyPENGUHJvcGVydHlMaXN0UmVmPiB2YWx1ZSA9IGFkb3B0Q0YoQ0ZQcmVmZXJlbmNlc0Nv
cHlBcHBWYWx1ZShwcmVmZXJlbmNlc0tleS5nZXQoKSwga0NGUHJlZmVyZW5jZXNDdXJyZW50QXBw
bGljYXRpb24pKTsKLQotICAgIGlmICghdmFsdWUpCi0gICAgICAgIHJldHVybjsKLQotICAgIENG
VHlwZUlEIHR5cGUgPSBDRkdldFR5cGVJRCh2YWx1ZS5nZXQoKSk7Ci0gICAgaWYgKHR5cGUgPT0g
Q0ZTdHJpbmdHZXRUeXBlSUQoKSkKLSAgICAgICAgKnNldHRpbmcgPSBzdGF0aWNfY2FzdDxTdHJp
bmc+KHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPih2YWx1ZS5nZXQoKSkpOwotICAgIGVsc2UgaWYg
KHR5cGUgPT0gQ0ZCb29sZWFuR2V0VHlwZUlEKCkpCi0gICAgICAgICpzZXR0aW5nID0gc3RhdGlj
X2Nhc3Q8Ym9vbD4oQ0ZCb29sZWFuR2V0VmFsdWUoc3RhdGljX2Nhc3Q8Q0ZCb29sZWFuUmVmPih2
YWx1ZS5nZXQoKSkpKSA/ICJ0cnVlIiA6ICJmYWxzZSI7Ci0gICAgZWxzZQotICAgICAgICAqc2V0
dGluZyA9IGVtcHR5U3RyaW5nKCk7CisgICAgYXV0byB2YWx1ZSA9IGFkb3B0Q0YoQ0ZQcmVmZXJl
bmNlc0NvcHlBcHBWYWx1ZShjcmVhdGVLZXlGb3JQcmVmZXJlbmNlcyhrZXkpLmdldCgpLCBrQ0ZQ
cmVmZXJlbmNlc0N1cnJlbnRBcHBsaWNhdGlvbikpOworICAgIGlmIChhdXRvIHN0cmluZyA9IGR5
bmFtaWNfY2ZfY2FzdDxDRlN0cmluZ1JlZj4odmFsdWUuZ2V0KCkpKQorICAgICAgICByZXR1cm4g
c3RyaW5nOworICAgIGlmICh2YWx1ZSA9PSBrQ0ZCb29sZWFuVHJ1ZSkKKyAgICAgICAgcmV0dXJu
ICJ0cnVlIl9zOworICAgIGlmICh2YWx1ZSA9PSBrQ0ZCb29sZWFuRmFsc2UpCisgICAgICAgIHJl
dHVybiAiZmFsc2UiX3M7CisgICAgcmV0dXJuIHsgfTsKIH0KIAogc3RhdGljIHZvaWQgc3RvcmVT
ZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHNldHRpbmcpCkBAIC0xMDEs
MTEgKzkwLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVu
ZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAKIGJvb2wgV2ViSW5zcGVjdG9yQ2xpZW50OjppbnNw
ZWN0b3JBdHRhY2hEaXNhYmxlZCgpCiB7Ci0gICAgU3RyaW5nIHZhbHVlOwotICAgIHBvcHVsYXRl
U2V0dGluZyhpbnNwZWN0b3JBdHRhY2hEaXNhYmxlZFNldHRpbmcsICZ2YWx1ZSk7Ci0gICAgaWYg
KHZhbHVlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB2YWx1
ZSA9PSAidHJ1ZSI7CisgICAgcmV0dXJuIGxvYWRTZXR0aW5nKGluc3BlY3RvckF0dGFjaERpc2Fi
bGVkU2V0dGluZykgPT0gInRydWUiOwogfQogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6c2V0
SW5zcGVjdG9yQXR0YWNoRGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkKQEAgLTEyMCwxMSArMTA1LDcg
QEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmRlbGV0ZUluc3BlY3RvclN0YXJ0c0F0dGFjaGVk
KCkKIAogYm9vbCBXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RvclN0YXJ0c0F0dGFjaGVkKCkK
IHsKLSAgICBTdHJpbmcgdmFsdWU7Ci0gICAgcG9wdWxhdGVTZXR0aW5nKGluc3BlY3RvclN0YXJ0
c0F0dGFjaGVkU2V0dGluZywgJnZhbHVlKTsKLSAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gdmFsdWUgPT0gInRydWUiOworICAgIHJldHVy
biBsb2FkU2V0dGluZyhpbnNwZWN0b3JTdGFydHNBdHRhY2hlZFNldHRpbmcpID09ICJ0cnVlIjsK
IH0KIAogdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnNldEluc3BlY3RvclN0YXJ0c0F0dGFjaGVk
KGJvb2wgYXR0YWNoZWQpCkBAIC0xNDAsMjQgKzEyMSwxMCBAQCB2b2lkIFdlYkluc3BlY3RvckNs
aWVudDo6ZGVsZXRlSW5zcGVjdG9yQXR0YWNoRGlzYWJsZWQoKQogc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OlNldHRpbmdzPiBXZWJJbnNwZWN0
b3JDbGllbnQ6OmNyZWF0ZUZyb250ZW5kU2V0dGluZ3MoKQogewogICAgIGNsYXNzIEluc3BlY3Rv
ckZyb250ZW5kU2V0dGluZ3NDRiA6IHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsOjpTZXR0aW5ncyB7Ci0gICAgcHVibGljOgotICAgICAgICB2aXJ0dWFsIH5JbnNw
ZWN0b3JGcm9udGVuZFNldHRpbmdzQ0YoKSB7IH0KLSAgICAgICAgdmlydHVhbCBTdHJpbmcgZ2V0
UHJvcGVydHkoY29uc3QgU3RyaW5nJiBuYW1lKQotICAgICAgICB7Ci0gICAgICAgICAgICBTdHJp
bmcgdmFsdWU7Ci0gICAgICAgICAgICBwb3B1bGF0ZVNldHRpbmcobmFtZSwgJnZhbHVlKTsKLSAg
ICAgICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHZpcnR1YWwgdm9p
ZCBzZXRQcm9wZXJ0eShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHN0b3JlU2V0dGluZyhuYW1lLCB2YWx1ZSk7Ci0gICAgICAg
IH0KLQotICAgICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlUHJvcGVydHkoY29uc3QgU3RyaW5nJiBu
YW1lKQotICAgICAgICB7Ci0gICAgICAgICAgICBkZWxldGVTZXR0aW5nKG5hbWUpOwotICAgICAg
ICB9CisgICAgcHJpdmF0ZToKKyAgICAgICAgU3RyaW5nIGdldFByb3BlcnR5KGNvbnN0IFN0cmlu
ZyYgbmFtZSkgZmluYWwgeyByZXR1cm4gbG9hZFNldHRpbmcobmFtZSk7IH0KKyAgICAgICAgdm9p
ZCBzZXRQcm9wZXJ0eShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpIGZp
bmFsIHsgc3RvcmVTZXR0aW5nKG5hbWUsIHZhbHVlKTsgfQorICAgICAgICB2b2lkIGRlbGV0ZVBy
b3BlcnR5KGNvbnN0IFN0cmluZyYgbmFtZSkgZmluYWwgeyBkZWxldGVTZXR0aW5nKG5hbWUpOyB9
CiAgICAgfTsKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbnNwZWN0b3JGcm9udGVuZFNldHRpbmdz
Q0Y+KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dl
YkJhc2VQbHVnaW5QYWNrYWdlLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9X
ZWJCYXNlUGx1Z2luUGFja2FnZS5tbQppbmRleCA4MGEzYjRmNGE4Mjc0MjRlZWRkZWY5NzdmN2U2
MTg1OTY0N2QxNmFkLi5kOTllZjI4MTkzOGJkY2UzOTllYTAyYjJhYjEwZjk3OGE2ZmEzMzFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJhc2VQbHVnaW5Q
YWNrYWdlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZVBs
dWdpblBhY2thZ2UubW0KQEAgLTM3NywxNSArMzc3LDExIEBAIC0gKFN0cmluZylidW5kbGVJZGVu
dGlmaWVyCiAKIC0gKFN0cmluZylidW5kbGVWZXJzaW9uCiB7Ci0gICAgQ0ZEaWN0aW9uYXJ5UmVm
IGluZm9EaWN0aW9uYXJ5ID0gQ0ZCdW5kbGVHZXRJbmZvRGljdGlvbmFyeShjZkJ1bmRsZS5nZXQo
KSk7CisgICAgYXV0byBpbmZvRGljdGlvbmFyeSA9IENGQnVuZGxlR2V0SW5mb0RpY3Rpb25hcnko
Y2ZCdW5kbGUuZ2V0KCkpOwogICAgIGlmICghaW5mb0RpY3Rpb25hcnkpCiAgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKIAotICAgIENGVHlwZVJlZiBidW5kbGVWZXJzaW9uU3RyaW5nID0gQ0ZEaWN0
aW9uYXJ5R2V0VmFsdWUoaW5mb0RpY3Rpb25hcnksIGtDRkJ1bmRsZVZlcnNpb25LZXkpOwotICAg
IGlmICghYnVuZGxlVmVyc2lvblN0cmluZyB8fCBDRkdldFR5cGVJRChidW5kbGVWZXJzaW9uU3Ry
aW5nKSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0K
LSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDRlN0cmluZ1JlZj4oYnVuZGxlVmVyc2lvblN0
cmluZyk7CisgICAgcmV0dXJuIGR5bmFtaWNfY2ZfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0aW9u
YXJ5R2V0VmFsdWUoaW5mb0RpY3Rpb25hcnksIGtDRkJ1bmRsZVZlcnNpb25LZXkpKTsKIH0KIAog
QGVuZAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436531</attachid>
            <date>2021-08-26 10:43:36 -0700</date>
            <delta_ts>2021-08-26 12:35:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229414-20210826104335.patch</filename>
            <type>text/plain</type>
            <size>104617</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNjMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
NTI4OWU5NWNjMjI2MDdhZTI0NWFjYzRmZDRlOWVhZjFkYzYwOTQ5Li45MDgwOTU5YTU5MmE3MDFi
MmEzOWUyMTQ2NDFiZTRkODM2NDYwMWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAyMS0wOC0yNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgQ3V0IGRvd24gb24gdXNlIG9mIENGR2V0VHlwZUlELCB1c2luZyBkeW5hbWljX2Nm
X2Nhc3QgaW5zdGVhZDsgcmVsYXRlZCBzdHJlYW1saW5pbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTQxNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1v
dGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJ
bnNwZWN0b3JYUENDb25uZWN0aW9uOjpkZXNlcmlhbGl6ZU1lc3NhZ2UpOiBVc2UKKyAgICAgICAg
ZHluYW1pY19jZl9jYXN0IHRvIGNoZWNrIHR5cGUgaW5zdGVhZCBvZiBDRkdldFR5cGVJRC4gQWxz
byBkbyB0aGUKKyAgICAgICAgY2hlY2sgYXQgcnVudGltZSByYXRoZXIgdGhhbiBhc3NlcnRpbmcu
IE5vdCByZWFsbHkgc3VmZmljaWVudCB0bworICAgICAgICBhc3NlcnQgY29ycmVjdCB0eXBlIGZv
ciBzb21ldGhpbmcgdGhhdCBjb21lcyBvdmVyIGFuIFhQQyBjb25uZWN0aW9uLgorCiAyMDIxLTA4
LTI2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10g
RGF0YUlDIHNob3VsZCBub3QgZW1iZWQgU3RydWN0dXJlU3R1YkluZm8gcG9pbnRlcgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA4
YWU4NzUzYjZiZmZjYjVhMzM1N2I5NWJkYjE0YTcyZWI4ZTY4ZDBhLi40NGE4MjkwMzQ1OWQzZDdk
Mjg3NmEzZTBlN2Y0Mzc3MmJiMWM5N2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIxLTA4LTI2
ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBDdXQgZG93biBvbiB1
c2Ugb2YgQ0ZHZXRUeXBlSUQsIHVzaW5nIGR5bmFtaWNfY2ZfY2FzdCBpbnN0ZWFkOyByZWxhdGVk
IHN0cmVhbWxpbmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI5NDE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiB3dGYvY2YvVHlwZUNhc3RzQ0YuaDogQWRkZWQgV1RGX0RFQ0xBUkVfQ0ZfVFlQRV9U
UkFJVChDRlVSTCkuIEFkZGVkIGEKKyAgICAgICAgZHluYW1pY19jZl9jYXN0IG92ZXJsb2FkIHRo
YXQgY29udmVydHMgZnJvbSBvbmUgUmV0YWluUHRyIHR5cGUgdG8gYW5vdGhlcgorICAgICAgICBh
bmQgYXZvaWRzIHJlZmVyZW5jZSBjb3VudCBjaHVybi4gVHdlYWtlZCBjb21tZW50cy4KKworICAg
ICAgICAqIHd0Zi9jb2NvYS9FbnRpdGxlbWVudHMubW06CisgICAgICAgIChXVEY6Omhhc0VudGl0
bGVtZW50KTogVXNlIGtDRkJvb2xlYW5UcnVlIGluc3RlYWQgb2YgQ0ZCb29sZWFuR2V0VmFsdWUu
CisKKyAgICAgICAgKiB3dGYvdGV4dC9jb2NvYS9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNV
Q29jb2EuY3BwOgorICAgICAgICAoV1RGOjp0ZXh0QnJlYWtMb2NhbGVQcmVmZXJlbmNlKTogVXNl
IGR5bmFtaWNfY2ZfY2FzdC4KKwogMjAyMS0wOC0yNiAgUmlzdWwgSXNsYW0gIDxyaXN1bF9pc2xh
bUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIG5ldyBleHBlcmltZW50YWwgZmVhdHVyZSBmbGFn
IGZvciBzYW5pdGl6aW5nIGxpbmtzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTg5YTllZGFmMmQwNzQwYmM4OTRj
OTkxZmUyNmE1YmU1ZjlmZDZiYi4uZjRkYWM2YmZkMmQwYWVhYzY1MDkxOTAyNTZjMGQ0MmRkYmEx
NmQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOSBAQAorMjAyMS0wOC0yNiAgRGFyaW4gQWRs
ZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ3V0IGRvd24gb24gdXNlIG9mIENGR2V0
VHlwZUlELCB1c2luZyBkeW5hbWljX2NmX2Nhc3QgaW5zdGVhZDsgcmVsYXRlZCBzdHJlYW1saW5p
bmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTQx
NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6bWFrZVNpbXBsZUNvbG9yRnJvbUFSR0JDRkFycmF5KTogVXNl
IGR5YW5hbWljX2NmX2Nhc3QuCisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGOjpwcm9jZXNzQ3VlQXR0cmlidXRlcyk6IERpdHRvLgorICAgICAgICBBbHNvIHJlbW92
ZWQgdW5uZWNlc3NhcnkgdHlwZSBjYXN0cyB3aGVuIGNvbXBhcmluZyB3aXRoIGtDRkJvb2xlYW5U
cnVlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291
cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbToKKyAgICAgICAgVXNlIGR5bmFtaWNfY2ZfY2FzdC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OnN5c3RlbUZvbnRGYW1pbGllcyk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6aXNVc2VySW5zdGFsbGVkRm9udCk6IFVzZSBrQ0ZCb29sZWFu
VHJ1ZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29j
b2EubW06CisgICAgICAgIChXZWJDb3JlOjp2YWxpZGF0ZUhFVkNQYXJhbWV0ZXJzKTogVXNlIGR5
bmFtaWNfY2ZfY2FzdCBhbmQga0NGQm9vbGVhblRydWUuCisgICAgICAgIChXZWJDb3JlOjp2YWxp
ZGF0ZURvVmlQYXJhbWV0ZXJzKTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24ubW06CisgICAgICAgIChXZWJDb3Jl
OjpXZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb246OnNob3VsZERlY29kZVNhbXBsZSk6CisgICAg
ICAgIFVzZSBrQ0ZCb29sZWFuRmFsc2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
b3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udFBsYXRmb3JtRGF0YTo6b2JqZWN0Rm9yRXF1YWxpdHlDaGVjayk6IFVzZSBhdXRvLgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnRyYW5zZmVyRnVuY3Rpb25Gcm9tU3RyaW5nKTogUmVtb3Zl
ZCB0eXBlIGNoZWNrLCB3aGljaCBjYWxsZXIKKyAgICAgICAgc2hvdWxkIGRvIHNpbmNlIHRoZSBh
Z3VtZW50IHR5cGUgaXMgQ0ZTdHJpbmdSZWYuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHRHTENWQU5HTEU6OmNvcHlQaXhlbEJ1ZmZlclRvVGV4dHVyZSk6IFVzZQorICAgICAgICBk
eW5hbWljX2NmX2Nhc3QgaW5zdGVhZCBvZiBhbiB1bmNoZWNrZWQgc3RhdGljX2Nhc3QuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6
ZGV2aWNlTmFtZUZvclVzZXJBZ2VudCk6IEltcHJvdmVkIGVmZmljaWVuY3kgYnkgcmV0dXJuaW5n
CisgICAgICAgIGEgU3RyaW5nVmlldyBpbnN0ZWFkIG9mIGEgU3RyaW5nLCBubyBuZWVkIHRvIGNy
ZWF0ZSBhbmQgZGVzdHJveSBhIHN0cmluZworICAgICAgICBvciBjaHVybiB0aGUgcmVmZXJlbmNl
IGNvdW50IGVhY2ggdGltZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZC4KKyAgICAgICAgKFdlYkNv
cmU6OnN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZSk6IEltcHJvdmVkIGVmZmlj
aWVuY3kKKyAgICAgICAgYnkgdXNpbmcgYSBiZXR0ZXIgaWRpb20gZm9yIHRoZSBzcGFjZSBiZWZv
cmUgdGhlIGFwcGxpY2F0aW9uIG5hbWUuCisgICAgICAgIFVzZSBkeW5hbWljX2NmX2Nhc3QuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2luZG93RGlzcGxheUNhcHR1cmVy
TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6YW55T2ZDR1dpbmRvdyk6IFVzZSBrQ0ZCb29sZWFu
RmFsc2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3h5U2VydmVyQ0ZOZXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJvY2Vzc1Byb3h5U2VydmVycyk6IFVzZSBkeW5hbWlj
X2NmX2Nhc3QuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVz
dENGTmV0LmNwcDogTW92ZQorICAgICAgICBXVEZfREVDTEFSRV9DRl9UWVBFX1RSQUlUIGZvciBD
RlVSTFJlZiBvdXQgb2YgaGVyZS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvU29j
a2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0
cmVhbUhhbmRsZUltcGw6OmNob29zZVByb3h5RnJvbUFycmF5KTogRGl0dG8uCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MuaDogVHdlYWtlZCBh
IGJpdC4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvaW9zL1dlYkNvcmVVUkxSZXNwb25z
ZUlPUy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUV4dGVuc2lvblRvTUlNRVR5cGVNYXAp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6YWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeSk6
IFNpbXBsaWZpZWQgdGhlIGNvZGUgdGhhdCBtYXBzICIubWpzIgorICAgICAgICB0byAidGV4dC9q
YXZhc2NyaXB0IiB0byBtYWtlIGl0IG11Y2ggbW9yZSBlZmZpY2llbnQgYW5kIG5vdCB1c2UgYSBk
aWN0aW9uYXJ5LgorICAgICAgICBSZWZhY3RvcmVkIHRvIHNoYXJlIGNvZGUgd2l0aCB0aGUgTWFj
LCB2aWEgdGhlIFdlYkNvcmVVUkxSZXNwb25zZS5oL21tCisgICAgICAgIGZpbGVzLCB3aGljaCBh
cmUgbm90IG1hY09TLXNwZWNpZmljIGV2ZW4gdGhvdWdoIHRoZXkgYXJlIGluIGEgZGlyZWN0b3J5
CisgICAgICAgIG5hbWVkICJtYWMiLiBGaXhlZCBvbmUgcGxhY2Ugd2hlcmUgd2UgZGlkIGFkb3B0
Q0Ygd2hlcmUgaXQgc2hvdWxkIGJlIGFkb3B0TlMuCisgICAgICAgIFVzZSBDRlNUUigiYXBwbGlj
YXRpb24vb2N0ZXQtc3RyZWFtIikgZGlyZWN0bHkgaW5zdGVhZCBvZiB1c2luZworICAgICAgICBX
ZWJDb3JlOjpkZWZhdWx0TUlNRVR5cGUoKS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
bWFjL05ldHdvcmtTdGF0ZU5vdGlmaWVyTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdv
cmtTdGF0ZU5vdGlmaWVyOjp1cGRhdGVTdGF0ZVdpdGhvdXROb3RpZnlpbmcpOiBVc2UKKyAgICAg
ICAgZHluYW1pY19jZl9jYXN0LgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJ
VXRpbGl0aWVzLmg6IFJlbmFtZWQgTUlNRVR5cGVGcm9tVVRJVHJlZQorICAgICAgICB0byBtaW1l
VHlwZUZyb21VVElUcmVlIHRvIG1ha2UgdGhlIHN0eWxlIHJvYm90IGhhcHB5LiBDaGFuZ2VkIHRo
ZQorICAgICAgICBhcmd1bWVudCBhbmQgcmV0dXJuIHR5cGUgdG8gQ0ZTdHJpbmdSZWYgc2luY2Ug
dGhhdCdzIHdoYXQgdGhlIGNhbGxlcnMKKyAgICAgICAgYWxsIHdhbnQsIGFuZCB3aGF0IHRoZSBp
bXBsZW1lbnRhdGlvbiB1c2VzLCBhbmQgdGhlcmUgaXMgbm8gcmVhc29uIHRvCisgICAgICAgIGNv
bnZlcnQgYmFjayBhbmQgZm9ydGggdG8gV1RGOjpTdHJpbmcuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMubW06CisgICAgICAgIChXZWJDb3JlOjptaW1lVHlw
ZUZyb21VVElUcmVlKTogVXNlIG51bGxwdHIsIG5vdCBlbXB0eVN0cmluZygpLCBmb3IgdGhlCisg
ICAgICAgIHZhbHVlIHdoZW4gdGhlcmUgaXMgbm8gTUlNRSB0eXBlIGZvdW5kLiBVc2UgYXV0by4g
VXNlIGR5bmFtaWNfY2ZfY2FzdC4KKyAgICAgICAgTWFrZSByZWN1cnNpb24gbW9yZSBlZmZpY2ll
bnQgc2luY2Ugd2UgZG9uJ3Qga2VlcCBjb252ZXJ0aW5nIGJhY2sgYW5kCisgICAgICAgIGZvcnRo
IGJldHdlZW4gQ0ZTdHJpbmdSZWYgYW5kIFdURjo6U3RyaW5nLgorICAgICAgICAoV2ViQ29yZTo6
VVRJRnJvbVRhZyk6IFJlbW92ZWQgdW5uZWVkZWQgZXhwbGljaXQgY29udmVyc3Rpb24gdG8gV1RG
OjpTdHJpbmcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVz
cG9uc2UuaDogQWRkZWQgaGVscGVyIGZ1bmN0aW9ucworICAgICAgICB0byB0aGUgaGVhZGVyLCBz
aGFyZWQgYnkgV2ViQ29yZVVSTFJlc3BvbnNlLm1tIGFuZCBXZWJDb3JlVVJMUmVzcG9uc2VJT1Mu
bW0uCisgICAgICAgIFVzZSBDRlNUUigiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIikgZGlyZWN0
bHkgaW5zdGVhZCBvZiB1c2luZworICAgICAgICBXZWJDb3JlOjpkZWZhdWx0TUlNRVR5cGUoKS42
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRXh0ZW5zaW9uVG9NSU1FVHlwZU1hcCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjphZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KTogUmVmYWN0b3Jl
ZCB0byB1c2UgYSBTb3J0ZWRBcnJheU1hcAorICAgICAgICBpbnN0ZWFkIG9mIGEgQ0ZEaWN0aW9u
YXJ5LCBlbGltaW5hdGluZyB2YXJpb3VzIHR5cGUgY2FzdHMgYW5kIGNvbnZlcnNpb25zLgorICAg
ICAgICBSZWZhY3RvcmVkIHRvIHVzZSB0aGUgbmV3IGZ1bmN0aW9ucyBiZWxvdy4gVXNlIG1ha2VO
ZXZlckRlc3Ryb3llZCB0bworICAgICAgICBpbnN0ZWFkIG9mIFJldGFpblB0cjo6bGVha1JlZi4g
UmVtb3ZlZCB1bm5lY2Vzc2FyeSBjaGVjayBmb3IgZXF1YWxpdHkKKyAgICAgICAgc2luY2UgdGhp
cyBmdW5jdGlvbiBvbmx5IGRvZXMgd29yayB3aGVuIENGVVJMUmVzcG9uc2VHZXRNSU1FVHlwZSBp
cyBudWxscHRyLgorICAgICAgICAoV2ViQ29yZTo6ZmlsZVBhdGhFeHRlbnNpb24pOiBBZGRlZC4g
UmVmYWN0b3JlZCB0aGUgY29kZSB0byBnZXQgYSBwYXRoIGV4dGVuc2lvbgorICAgICAgICBmcm9t
IGEgQ0ZVUkxSZXNwb25zZVJlZiBpbnRvIGEgZnVuY3Rpb24gc2luY2UgaXQncyB1c2VkIGluIHR3
byBwbGFjZXMuCisgICAgICAgIChXZWJDb3JlOjpwcmVmZXJyZWRNSU1FVHlwZUZvckZpbGVFeHRl
bnNpb25Gcm9tVVRUeXBlKTogQWRkZWQuIFJlZmFjdG9yZWQKKyAgICAgICAgdGhpcyBsb2dpY2Fs
IG9wZXJhdGlvbiwgbWFwcGluZyBhIGZpbGUgZXh0ZW5zaW9uIHRvIGEgTUlNRSB0eXBlLCBpbnRv
IGEgZnVuY3Rpb24uCisgICAgICAgIFRoaXMgaXMgdXNlZCBpbiB0d28gcGxhY2VzLiBBbHNvIHB1
dHMgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4vRU5ECisgICAgICAgIHBhaXIg
aW50byBhIHNpbmdsZSBwbGFjZSwgYW5kIHRoaXMgaXMgd2hlcmUgd2UnbGwgc3dpdGNoIHRvIHVz
ZSBuZXdlciBVVFR5cGUKKyAgICAgICAgbWFjaGluZXJ5IGxhdGVyIG9uLgorCisgICAgICAgICog
dGVzdGluZy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQubW06CisgICAgICAgIChXZWJDb3Jl
VGVzdFN1cHBvcnQ6OmNvbnZlcnRXZWJSZXNvdXJjZVJlc3BvbnNlVG9EaWN0aW9uYXJ5KTogVXNl
IGF1dG8gYW5kCisgICAgICAgIGR5bmFtaWNfY2ZfY2FzdC4KKwogMjAyMS0wOC0yNiAgQ29tbWl0
IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cmV2ZXJ0aW5nIHIyODE2MTYuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCBjMjMxNTRhNGZhOTQyZGVl
YzAyMmVlMTk0NjM1Yjc4ZDNlYmEwNzYyLi4wOGEzMDRhOWQzZDY5MDQ2NzA1OWVlM2U1NmY0Mjgw
OTE2ODRmYWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMS0wOC0y
NiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ3V0IGRvd24gb24g
dXNlIG9mIENGR2V0VHlwZUlELCB1c2luZyBkeW5hbWljX2NmX2Nhc3QgaW5zdGVhZDsgcmVsYXRl
ZCBzdHJlYW1saW5pbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyOTQxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogcGFsL3N5c3RlbS9tYWMvRGVmYXVsdFNlYXJjaFByb3ZpZGVyLmNwcDoKKyAgICAg
ICAgKFBBTDo6ZGVmYXVsdFNlYXJjaFByb3ZpZGVyRGlzcGxheU5hbWUpOiBVc2UgZHluYW1pY19j
Zl9jYXN0IGFuZCByZW1vdmVkIGFuIHVubmVlZGVkIGNhbGwgdG8KKyAgICAgICAgQ0ZTdHJpbmdD
cmVhdGVDb3B5LCBzaW5jZSB0aGUgY2FsbGVycyBkb24ndCBuZWVkIGFuIGlzb2xhdGVkIGNvcHku
CisKIDIwMjEtMDgtMjUgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+
CiAKICAgICAgICAgV2ViQ3J5cHRvIHVzZXMgZGVwcmVjYXRlZCBDQ0tleURlcml2YXRpb25ITWFj
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IGEwZjM2ODk4NmU2NGFhN2E3YjkwZjc5NzJjNDFhNzJlNDM5ZmU5NzIuLjhl
MWU5Njc1OWUxNWI5NTU3ZmZmMDI2ODUxNzcwNjZmZTZiZjQ1ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMjEtMDgtMjYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisg
ICAgICAgIEN1dCBkb3duIG9uIHVzZSBvZiBDRkdldFR5cGVJRCwgdXNpbmcgZHluYW1pY19jZl9j
YXN0IGluc3RlYWQ7IHJlbGF0ZWQgc3RyZWFtbGluaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk0MTQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL21hYy9O
ZXRzY2FwZVBsdWdpbk1vZHVsZU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6Z2V0UGx1Z2luSW5m
b0Zyb21Qcm9wZXJ0eUxpc3RzKTogVXNlIGR5bmFtaWNfY2ZfY2FzdC4KKyAgICAgICAgKFdlYktp
dDo6TmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdpbkluZm8pOiBEaXR0by4KKwogMjAyMS0w
OC0yNiAgS2ltbW8gS2lubnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJl
bW90ZUdyYXBoaWNzQ29udGV4dEdMIHJlZmVycyB0byBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
U2ltdWxhdGVkRXZlbnRGb3JUZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5
L2NmL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvY2YvQ2hhbmdlTG9nCmluZGV4IGU3
NzExMzY3YmQwMGMzZDU5ZjhhZTAyY2FhZDYyNmE1YjI5ODhmYTEuLmQzODgyMGM4MmMxMDYwYTcx
ZTIzZWRlYTQyZTQzN2UzMWVkNDgxNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
Y2YvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvY2YvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTcgQEAKKzIwMjEtMDgtMjYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgor
CisgICAgICAgIEN1dCBkb3duIG9uIHVzZSBvZiBDRkdldFR5cGVJRCwgdXNpbmcgZHluYW1pY19j
Zl9jYXN0IGluc3RlYWQ7IHJlbGF0ZWQgc3RyZWFtbGluaW5nCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk0MTQKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudENGLmNwcDoKKyAgICAgICAgKGxvYWRTZXR0aW5nKTogUmVuYW1lIGZyb20gcG9wdWxh
dGVTZXR0aW5nLiBVc2UgZHlhbm1pY19jZl9jYXN0LCBrQ0ZCb29sZWFuVHJ1ZSwgYW5kCisgICAg
ICAgIGtDRkJvb2xlYW5GYWxzZSwgYWxzbyBjaGFuZ2UgdG8gcmV0dXJuIHZhbHVlIGluc3RlYWQg
b2YgYSBwb2ludGVyLWJhc2VkIG91dCBhcmd1bWVudC4KKyAgICAgICAgKFdlYkluc3BlY3RvckNs
aWVudDo6aW5zcGVjdG9yQXR0YWNoRGlzYWJsZWQpOiBVcGRhdGUgZm9yIGNoYW5nZSB0byBsb2Fk
U2V0dGluZy4KKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6aW5zcGVjdG9yU3RhcnRzQXR0
YWNoZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkluc3BlY3RvckNsaWVudDo6Y3JlYXRlRnJvbnRl
bmRTZXR0aW5ncyk6IERpdHRvLiBBbHNvIHVzZSBmaW5hbCBpbnN0ZWFkIG9mIHZpcnR1YWwuCisK
IDIwMjAtMTAtMzAgIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2Vi
IEluc3BlY3RvcjogbW92ZSBJbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIgdG8gV2ViQ29y
ZSwgY2xlYW4gdXAgdXNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDQ1YTU0ODZl
MDU4MDVkOTdiYzFlNDhiNDRmOTNkYTMwMzI4YTZhMWQuLjQxNGYyZjhhYWIyMWQ4YTM2MGRlMjQ3
MTRkYjQ4MGFhZWZkZTJkZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMyBAQAorMjAyMS0wOC0yNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgQ3V0IGRvd24gb24gdXNlIG9mIENGR2V0VHlwZUlELCB1c2luZyBkeW5hbWljX2NmX2Nh
c3QgaW5zdGVhZDsgcmVsYXRlZCBzdHJlYW1saW5pbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTQxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2lucy9XZWJCYXNlUGx1Z2luUGFja2FnZS5t
bToKKyAgICAgICAgKC1bV2ViQmFzZVBsdWdpblBhY2thZ2UgYnVuZGxlVmVyc2lvbl0pOiBVc2Ug
ZHluYW1pY19jZl9jYXN0LgorCiAyMDIxLTA4LTI0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgW1dLMl0gSW1wbGVtZW50IHByb2Nlc3Mtc3dhcHBpbmcgYmFzZWQg
b24gQ3Jvc3MtT3JpZ2luLU9wZW5lci1Qb2xpY3kgSFRUUCBoZWFkZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3Rv
clhQQ0Nvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tCmluZGV4IDQzZGYyNzBhYzgy
MmY0YmY5Y2Q2NWQ5ZDUwMGY4NzNlMmFiMWFkM2QuLjI2NTg1NWZmN2EyNzQyZTAxYzYyMTc1ZTgw
MDY1ZWFmMTBjYmE0Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0KKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9y
WFBDQ29ubmVjdGlvbi5tbQpAQCAtMzQsNiArMzQsNyBAQAogI2ltcG9ydCA8d3RmL0xvY2suaD4K
ICNpbXBvcnQgPHd0Zi9SZWYuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQg
PHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgogI2ltcG9ydCA8d3RmL2NvY29hL0VudGl0bGVtZW50cy5o
PgogI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9DRlhQQ0JyaWRnZVNQSS5oPgogI2ltcG9ydCA8d3Rm
L3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oPgpAQCAtMTEwLDkgKzExMSw4IEBAIE5TRGljdGlvbmFy
eSAqUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlvbjo6ZGVzZXJpYWxpemVNZXNzYWdlKHhwY19v
YmplY3RfdCBvYmplCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgfQogCi0gICAgYXV0byBkaWN0
aW9uYXJ5ID0gYWRvcHRDRihfQ0ZYUENDcmVhdGVDRk9iamVjdEZyb21YUENNZXNzYWdlKHhwY0Rp
Y3Rpb25hcnkpKTsKKyAgICBhdXRvIGRpY3Rpb25hcnkgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZEaWN0
aW9uYXJ5UmVmPihhZG9wdENGKF9DRlhQQ0NyZWF0ZUNGT2JqZWN0RnJvbVhQQ01lc3NhZ2UoeHBj
RGljdGlvbmFyeSkpKTsKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGRpY3Rpb25hcnksICJVbmFi
bGUgdG8gZGVzZXJpYWxpemUgeHBjIG1lc3NhZ2UiKTsKLSAgICBBU1NFUlQoQ0ZHZXRUeXBlSUQo
ZGljdGlvbmFyeS5nZXQoKSkgPT0gQ0ZEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpOwogICAgIHJldHVy
biBkaWN0aW9uYXJ5LmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvY2YvVHlwZUNhc3RzQ0YuaCBiL1NvdXJjZS9XVEYvd3RmL2NmL1R5cGVDYXN0
c0NGLmgKaW5kZXggZTA5MjBmNmM0NmMwMjFmYTYzYmY2ZDk2MGM1YzcxZThlMjY4Y2FjNS4uODM2
ZjU3MDAyZDU1ZmM4OTE0Y2Q5OWNkYzc1YTYxNDNkNzVkZmFmNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvY2YvVHlwZUNhc3RzQ0YuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jZi9UeXBlQ2Fz
dHNDRi5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNDgsNiArNDgsNyBAQCBXVEZfREVDTEFSRV9DRl9UWVBFX1RSQUlUKENGRGF0
YSk7CiBXVEZfREVDTEFSRV9DRl9UWVBFX1RSQUlUKENGRGljdGlvbmFyeSk7CiBXVEZfREVDTEFS
RV9DRl9UWVBFX1RSQUlUKENGTnVtYmVyKTsKIFdURl9ERUNMQVJFX0NGX1RZUEVfVFJBSVQoQ0ZT
dHJpbmcpOworV1RGX0RFQ0xBUkVfQ0ZfVFlQRV9UUkFJVChDRlVSTCk7CiAKICNkZWZpbmUgV1RG
X0RFQ0xBUkVfQ0ZfTVVUQUJMRV9UWVBFX1RSQUlUKENsYXNzTmFtZSwgTXV0YWJsZUNsYXNzTmFt
ZSkgXAogdGVtcGxhdGUgPD4gXApAQCAtNjIsOCArNjMsOSBAQCBXVEZfREVDTEFSRV9DRl9NVVRB
QkxFX1RZUEVfVFJBSVQoQ0ZTdHJpbmcsIENGTXV0YWJsZVN0cmluZyk7CiAKICN1bmRlZiBXVEZf
REVDTEFSRV9DRl9NVVRBQkxFX1RZUEVfVFJBSVQKIAotLy8gVXNlIHRoaXMgaW5zdGVhZCBvZiBj
aGVja2VkX2NmX2Nhc3Q8PiB3aGVuIGFjdGl2ZWx5IGNoZWNraW5nIENGIHR5cGVzLAorLy8gVXNl
IGR5bmFtaWNfY2ZfY2FzdDw+IGluc3RlYWQgb2YgY2hlY2tlZF9jZl9jYXN0PD4gd2hlbiBhY3Rp
dmVseSBjaGVja2luZyBDRiB0eXBlcywKIC8vIHNpbWlsYXIgdG8gZHluYW1pY19jYXN0PD4gaW4g
QysrLiBCZSBzdXJlIHRvIGluY2x1ZGUgYSBudWxscHRyIGNoZWNrLgorCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBUIGR5bmFtaWNfY2ZfY2FzdChDRlR5cGVSZWYgb2JqZWN0KQogewogICAgIGlmICgh
b2JqZWN0KQpAQCAtNzUsNyArNzcsMTkgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBkeW5hbWlj
X2NmX2Nhc3QoQ0ZUeXBlUmVmIG9iamVjdCkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4oY29u
c3RfY2FzdDxDRl9CUklER0VEX1RZUEUoaWQpIHZvaWQqPihvYmplY3QpKTsKIH0KIAotLy8gVXNl
IHRoaXMgaW5zdGVhZCBvZiBkeW5hbWljX2NmX2Nhc3Q8PiB3aGVuIGEgc3BlY2lmYyBDRiB0eXBl
IGlzIHJlcXVpcmVkLgordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4gUmV0YWluUHRy
PFQ+IGR5bmFtaWNfY2ZfY2FzdChSZXRhaW5QdHI8VT4mJiBvYmplY3QpCit7CisgICAgaWYgKCFv
YmplY3QpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgaWYgKENGR2V0VHlwZUlEKG9i
amVjdC5nZXQoKSkgIT0gQ0ZUeXBlVHJhaXQ8VD46OnR5cGVJRCgpKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgIHJldHVybiBhZG9wdENGKHN0YXRpY19jYXN0PFQ+KGNvbnN0X2Nhc3Q8
Q0ZfQlJJREdFRF9UWVBFKGlkKSB2b2lkKj4ob2JqZWN0LmxlYWtSZWYoKSkpKTsKK30KKworLy8g
VXNlIGNoZWNrZWRfY2ZfY2FzdDw+IGluc3RlYWQgb2YgZHluYW1pY19jZl9jYXN0PD4gd2hlbiBh
IHNwZWNpZmljIENGIHR5cGUgaXMgcmVxdWlyZWQuCisKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQg
Y2hlY2tlZF9jZl9jYXN0KENGVHlwZVJlZiBvYmplY3QpCiB7CiAgICAgaWYgKCFvYmplY3QpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9FbnRpdGxlbWVudHMubW0gYi9Tb3VyY2Uv
V1RGL3d0Zi9jb2NvYS9FbnRpdGxlbWVudHMubW0KaW5kZXggYzM5NDdhODE2MzAwM2U4NWY5OWZi
NjZmODA0OTcwODkxZWQ5MzE4NC4uOWQ5NDZhZDBkZjEwYzhjNmM4OTEyZWE5MzYxNjVjZjhmZTUx
NTQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvY29jb2EvRW50aXRsZW1lbnRzLm1tCisr
KyBiL1NvdXJjZS9XVEYvd3RmL2NvY29hL0VudGl0bGVtZW50cy5tbQpAQCAtMzksOCArMzksNyBA
QCBzdGF0aWMgYm9vbCBoYXNFbnRpdGxlbWVudChTZWNUYXNrUmVmIHRhc2ssIGNvbnN0IGNoYXIq
IGVudGl0bGVtZW50KQogICAgIGlmICghdGFzaykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IGF1dG8gc3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZVdpdGhDU3RyaW5nTm9Db3B5KGtD
RkFsbG9jYXRvckRlZmF1bHQsIGVudGl0bGVtZW50LCBrQ0ZTdHJpbmdFbmNvZGluZ0FTQ0lJLCBr
Q0ZBbGxvY2F0b3JOdWxsKSk7Ci0gICAgYXV0byB2YWx1ZSA9IGFkb3B0Q0YoU2VjVGFza0NvcHlW
YWx1ZUZvckVudGl0bGVtZW50KHRhc2ssIHN0cmluZy5nZXQoKSwgbnVsbHB0cikpOwotICAgIHJl
dHVybiB2YWx1ZSAmJiBDRkdldFR5cGVJRCh2YWx1ZS5nZXQoKSkgPT0gQ0ZCb29sZWFuR2V0VHlw
ZUlEKCkgJiYgQ0ZCb29sZWFuR2V0VmFsdWUoc3RhdGljX2Nhc3Q8Q0ZCb29sZWFuUmVmPih2YWx1
ZS5nZXQoKSkpOworICAgIHJldHVybiBhZG9wdENGKFNlY1Rhc2tDb3B5VmFsdWVGb3JFbnRpdGxl
bWVudCh0YXNrLCBzdHJpbmcuZ2V0KCksIG51bGxwdHIpKSA9PSBrQ0ZCb29sZWFuVHJ1ZTsKIH0K
IAogYm9vbCBoYXNFbnRpdGxlbWVudChhdWRpdF90b2tlbl90IHRva2VuLCBjb25zdCBjaGFyKiBl
bnRpdGxlbWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvY29jb2EvVGV4dEJy
ZWFrSXRlcmF0b3JJbnRlcm5hbElDVUNvY29hLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvY29j
b2EvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElDVUNvY29hLmNwcAppbmRleCBhNDAwOWFkOWRj
ZWRmNmU2YmI0ZDA2Y2FmYjc0ZDBmZDdlMDZlNTQyLi4yNWQwNmIyYTU5NGQzYzAyZDM4YzNmOTli
NGZkODE1N2YzMTBhMDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NvY29hL1Rl
eHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VDb2NvYS5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
dGV4dC9jb2NvYS9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVQ29jb2EuY3BwCkBAIC0yMyw2
ICsyMyw3IEBACiAKICNpbmNsdWRlIDxhcnJheT4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+
CisjaW5jbHVkZSA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4
dEJyZWFrSXRlcmF0b3IuaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC01MSwxMSArNTIsOCBAQCBU
ZXh0QnJlYWtJdGVyYXRvcjo6VGV4dEJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyBzdHJpbmcsIE1v
ZGUgbW9kZSwgY29uc3QgQXRvbVN0cgogCiBzdGF0aWMgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB0
ZXh0QnJlYWtMb2NhbGVQcmVmZXJlbmNlKCkKIHsKLSAgICBhdXRvIGxvY2FsZSA9IGFkb3B0Q0Yo
Q0ZQcmVmZXJlbmNlc0NvcHlWYWx1ZShDRlNUUigiQXBwbGVUZXh0QnJlYWtMb2NhbGUiKSwKLSAg
ICAgICAga0NGUHJlZmVyZW5jZXNBbnlBcHBsaWNhdGlvbiwga0NGUHJlZmVyZW5jZXNDdXJyZW50
VXNlciwga0NGUHJlZmVyZW5jZXNBbnlIb3N0KSk7Ci0gICAgaWYgKCFsb2NhbGUgfHwgQ0ZHZXRU
eXBlSUQobG9jYWxlLmdldCgpKSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KGxvY2FsZS5n
ZXQoKSk7CisgICAgcmV0dXJuIGR5bmFtaWNfY2ZfY2FzdDxDRlN0cmluZ1JlZj4oYWRvcHRDRihD
RlByZWZlcmVuY2VzQ29weVZhbHVlKENGU1RSKCJBcHBsZVRleHRCcmVha0xvY2FsZSIpLAorICAg
ICAgICBrQ0ZQcmVmZXJlbmNlc0FueUFwcGxpY2F0aW9uLCBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRV
c2VyLCBrQ0ZQcmVmZXJlbmNlc0FueUhvc3QpKSk7CiB9CiAKIHN0YXRpYyBSZXRhaW5QdHI8Q0ZT
dHJpbmdSZWY+IHRvcExhbmd1YWdlUHJlZmVyZW5jZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9QQUwvcGFsL3N5c3RlbS9tYWMvRGVmYXVsdFNlYXJjaFByb3ZpZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVtL21hYy9EZWZhdWx0U2VhcmNoUHJvdmlkZXIuY3BwCmlu
ZGV4IDk1MTZkNmFiYmJiMzVhZTg3YzJkOWVhYmExNjljNzI0YjVkM2RlNmUuLjM2ZTg4NWI0ZmQz
OTQ0MjRjNDZiMGMxMTBkNzhkOGZmNDI5ZjU4MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1BBTC9wYWwvc3lzdGVtL21hYy9EZWZhdWx0U2VhcmNoUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1BBTC9wYWwvc3lzdGVtL21hYy9EZWZhdWx0U2VhcmNoUHJvdmlkZXIuY3BwCkBA
IC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJDRlV0aWxpdGllc1NQSS5oIgogI2luY2x1ZGUg
PENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CisjaW5jbHVkZSA8d3RmL2NmL1R5cGVD
YXN0c0NGLmg+CiAKIG5hbWVzcGFjZSBQQUwgewogCkBAIC0zOSwxMiArNDAsMTEgQEAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBkZWZhdWx0U2VhcmNoUHJvdmlkZXJEaXNwbGF5TmFtZSgpCiAgICAg
aWYgKCFwcm92aWRlckluZm8pCiAgICAgICAgIHJldHVybiBDRlNUUigiR29vZ2xlIik7CiAKLSAg
ICBDRlR5cGVSZWYgZGlzcGxheU5hbWUgPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm92aWRlcklu
Zm8uZ2V0KCksIGtDRldlYlNlcnZpY2VzUHJvdmlkZXJEZWZhdWx0RGlzcGxheU5hbWVLZXkpOwor
ICAgIGF1dG8gZGlzcGxheU5hbWUgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGlj
dGlvbmFyeUdldFZhbHVlKHByb3ZpZGVySW5mby5nZXQoKSwga0NGV2ViU2VydmljZXNQcm92aWRl
ckRlZmF1bHREaXNwbGF5TmFtZUtleSkpOwogICAgIGlmICghZGlzcGxheU5hbWUpCiAgICAgICAg
IHJldHVybiBDRlNUUigiR29vZ2xlIik7CiAKLSAgICBBU1NFUlQoQ0ZHZXRUeXBlSUQoZGlzcGxh
eU5hbWUpID09IENGU3RyaW5nR2V0VHlwZUlEKCkpOwotICAgIHJldHVybiBhZG9wdENGKENGU3Ry
aW5nQ3JlYXRlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoQ0ZTdHJpbmdSZWYpZGlzcGxheU5h
bWUpKTsKKyAgICByZXR1cm4gZGlzcGxheU5hbWU7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFBBTApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCmluZGV4
IGEzNjE0MGFkNDFkZDkwZGQ3ZTU0ZmFhOWZlNTlmMmM5Mzk3MmE2NWEuLjg0ZTA4NmExODRiYWNl
NGZkMjkxZWYzYTU5MDMyNzI2MDM4NzA5MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAKQEAgLTM2LDE0ICszNiwxNiBAQAogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0RhdGFWaWV3Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW50
OEFycmF5Lmg+CiAjaW5jbHVkZSA8cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRp
b24uaD4KLSNpbmNsdWRlIDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KICNpbmNsdWRlIDx3
dGYvTWVkaWFUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CisjaW5j
bHVkZSA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgog
CisjaW5jbHVkZSA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogQVZGSW5iYW5kVHJhY2tQYXJlbnQ6On5BVkZJbmJhbmRUcmFja1BhcmVudCgpID0g
ZGVmYXVsdDsKQEAgLTcxLDggKzczLDggQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U1JHQkE8dWlu
dDhfdD4+IG1ha2VTaW1wbGVDb2xvckZyb21BUkdCQ0ZBcnJheShDRkFycmF5UmVmIGMKIAogICAg
IGZsb2F0IGNvbXBvbmVudEFycmF5WzRdOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgaSsr
KSB7Ci0gICAgICAgIENGTnVtYmVyUmVmIHZhbHVlID0gc3RhdGljX2Nhc3Q8Q0ZOdW1iZXJSZWY+
KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoY29sb3JBcnJheSwgaSkpOwotICAgICAgICBpZiAoQ0ZH
ZXRUeXBlSUQodmFsdWUpICE9IENGTnVtYmVyR2V0VHlwZUlEKCkpCisgICAgICAgIGF1dG8gdmFs
dWUgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZOdW1iZXJSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgo
Y29sb3JBcnJheSwgaSkpOworICAgICAgICBpZiAoIXZhbHVlKQogICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgICAgICBmbG9hdCBjb21wb25lbnQ7CkBAIC0xMDUsNyArMTA3
LDYgQEAgUmVmPEluYmFuZEdlbmVyaWNDdWU+IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnBy
b2Nlc3NDdWVBdHRyaWJ1dGVzKENGQXR0cmlidXQKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAg
cmV0dXJuIGN1ZURhdGE7CiAKLQogICAgIENGUmFuZ2UgZWZmZWN0aXZlUmFuZ2UgPSBDRlJhbmdl
TWFrZSgwLCAwKTsKICAgICB3aGlsZSAoKGVmZmVjdGl2ZVJhbmdlLmxvY2F0aW9uICsgZWZmZWN0
aXZlUmFuZ2UubGVuZ3RoKSA8IGxlbmd0aCkgewogCkBAIC0xMTQsNyArMTE1LDYgQEAgUmVmPElu
YmFuZEdlbmVyaWNDdWU+IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWVBdHRy
aWJ1dGVzKENGQXR0cmlidXQKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIFN0cmlu
Z0J1aWxkZXIgdGFnU3RhcnQ7Ci0gICAgICAgIENGU3RyaW5nUmVmIHZhbHVlU3RyaW5nOwogICAg
ICAgICBTdHJpbmcgdGFnRW5kOwogICAgICAgICBDRkluZGV4IGF0dHJpYnV0ZUNvdW50ID0gQ0ZE
aWN0aW9uYXJ5R2V0Q291bnQoYXR0cmlidXRlcyk7CiAgICAgICAgIFZlY3Rvcjxjb25zdCB2b2lk
Kj4ga2V5cyhhdHRyaWJ1dGVDb3VudCk7CkBAIC0xMjIsMTQgKzEyMiwxNCBAQCBSZWY8SW5iYW5k
R2VuZXJpY0N1ZT4gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0N1ZUF0dHJpYnV0
ZXMoQ0ZBdHRyaWJ1dAogICAgICAgICBDRkRpY3Rpb25hcnlHZXRLZXlzQW5kVmFsdWVzKGF0dHJp
YnV0ZXMsIGtleXMuZGF0YSgpLCB2YWx1ZXMuZGF0YSgpKTsKIAogICAgICAgICBmb3IgKENGSW5k
ZXggaSA9IDA7IGkgPCBhdHRyaWJ1dGVDb3VudDsgKytpKSB7Ci0gICAgICAgICAgICBDRlN0cmlu
Z1JlZiBrZXkgPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oa2V5c1tpXSk7CisgICAgICAgICAg
ICBhdXRvIGtleSA9IGR5bmFtaWNfY2ZfY2FzdDxDRlN0cmluZ1JlZj4oa2V5c1tpXSk7CiAgICAg
ICAgICAgICBDRlR5cGVSZWYgdmFsdWUgPSB2YWx1ZXNbaV07Ci0gICAgICAgICAgICBpZiAoQ0ZH
ZXRUeXBlSUQoa2V5KSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpIHx8ICFDRlN0cmluZ0dldExlbmd0
aChrZXkpKQorICAgICAgICAgICAgaWYgKCFrZXkgfHwgIUNGU3RyaW5nR2V0TGVuZ3RoKGtleSkp
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIGlmIChDRlN0cmluZ0Nv
bXBhcmUoa2V5LCBrQ01UZXh0TWFya3VwQXR0cmlidXRlX0FsaWdubWVudCwgMCkgPT0ga0NGQ29t
cGFyZUVxdWFsVG8pIHsKLSAgICAgICAgICAgICAgICB2YWx1ZVN0cmluZyA9IHN0YXRpY19jYXN0
PENGU3RyaW5nUmVmPih2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgaWYgKENGR2V0VHlwZUlEKHZh
bHVlU3RyaW5nKSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpIHx8ICFDRlN0cmluZ0dldExlbmd0aCh2
YWx1ZVN0cmluZykpCisgICAgICAgICAgICAgICAgYXV0byB2YWx1ZVN0cmluZyA9IGR5bmFtaWNf
Y2ZfY2FzdDxDRlN0cmluZ1JlZj4odmFsdWUpOworICAgICAgICAgICAgICAgIGlmICghdmFsdWVT
dHJpbmcgfHwgIUNGU3RyaW5nR2V0TGVuZ3RoKHZhbHVlU3RyaW5nKSkKICAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgaWYgKHByb2Nlc3NlZCAmIEFsaWduKQog
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTE0OCw3ICsxNDgsNyBAQCBSZWY8SW5i
YW5kR2VuZXJpY0N1ZT4gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0N1ZUF0dHJp
YnV0ZXMoQ0ZBdHRyaWJ1dAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoQ0ZTdHJp
bmdDb21wYXJlKGtleSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9Cb2xkU3R5bGUsIDApID09IGtD
RkNvbXBhcmVFcXVhbFRvKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PENGQm9v
bGVhblJlZj4odmFsdWUpICE9IGtDRkJvb2xlYW5UcnVlKQorICAgICAgICAgICAgICAgIGlmICh2
YWx1ZSAhPSBrQ0ZCb29sZWFuVHJ1ZSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAK
ICAgICAgICAgICAgICAgICB0YWdTdGFydC5hcHBlbmQoIjxiPiIpOwpAQCAtMTU3LDcgKzE1Nyw3
IEBAIFJlZjxJbmJhbmRHZW5lcmljQ3VlPiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9j
ZXNzQ3VlQXR0cmlidXRlcyhDRkF0dHJpYnV0CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IGlmIChDRlN0cmluZ0NvbXBhcmUoa2V5LCBrQ01UZXh0TWFya3VwQXR0cmlidXRlX0l0YWxpY1N0
eWxlLCAwKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykgewotICAgICAgICAgICAgICAgIGlmIChzdGF0
aWNfY2FzdDxDRkJvb2xlYW5SZWY+KHZhbHVlKSAhPSBrQ0ZCb29sZWFuVHJ1ZSkKKyAgICAgICAg
ICAgICAgICBpZiAodmFsdWUgIT0ga0NGQm9vbGVhblRydWUpCiAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogCiAgICAgICAgICAgICAgICAgdGFnU3RhcnQuYXBwZW5kKCI8aT4iKTsKQEAg
LTE2Niw3ICsxNjYsNyBAQCBSZWY8SW5iYW5kR2VuZXJpY0N1ZT4gSW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUFWRjo6cHJvY2Vzc0N1ZUF0dHJpYnV0ZXMoQ0ZBdHRyaWJ1dAogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKGtleSwga0NNVGV4dE1hcmt1cEF0dHJp
YnV0ZV9VbmRlcmxpbmVTdHlsZSwgMCkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pIHsKLSAgICAgICAg
ICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8Q0ZCb29sZWFuUmVmPih2YWx1ZSkgIT0ga0NGQm9vbGVh
blRydWUpCisgICAgICAgICAgICAgICAgaWYgKHZhbHVlICE9IGtDRkJvb2xlYW5UcnVlKQogICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgICAgIHRhZ1N0YXJ0LmFw
cGVuZCgiPHU+Iik7CkBAIC0xNzUsMTMgKzE3NSwxMyBAQCBSZWY8SW5iYW5kR2VuZXJpY0N1ZT4g
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0N1ZUF0dHJpYnV0ZXMoQ0ZBdHRyaWJ1
dAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKGtleSwg
a0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9PcnRob2dvbmFsTGluZVBvc2l0aW9uUGVyY2VudGFnZVJl
bGF0aXZlVG9Xcml0aW5nRGlyZWN0aW9uLCAwKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykgewotICAg
ICAgICAgICAgICAgIGlmIChDRkdldFR5cGVJRCh2YWx1ZSkgIT0gQ0ZOdW1iZXJHZXRUeXBlSUQo
KSkKKyAgICAgICAgICAgICAgICBhdXRvIHZhbHVlTnVtYmVyID0gZHluYW1pY19jZl9jYXN0PENG
TnVtYmVyUmVmPih2YWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZU51bWJlcikKICAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgaWYgKHByb2Nlc3Nl
ZCAmIExpbmUpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAg
IHByb2Nlc3NlZCB8PSBMaW5lOwogCi0gICAgICAgICAgICAgICAgQ0ZOdW1iZXJSZWYgdmFsdWVO
dW1iZXIgPSBzdGF0aWNfY2FzdDxDRk51bWJlclJlZj4odmFsdWUpOwogICAgICAgICAgICAgICAg
IGRvdWJsZSBsaW5lOwogICAgICAgICAgICAgICAgIENGTnVtYmVyR2V0VmFsdWUodmFsdWVOdW1i
ZXIsIGtDRk51bWJlckZsb2F0NjRUeXBlLCAmbGluZSk7CiAgICAgICAgICAgICAgICAgY3VlRGF0
YS0+c2V0TGluZShsaW5lKTsKQEAgLTE4OSwxMyArMTg5LDEzIEBAIFJlZjxJbmJhbmRHZW5lcmlj
Q3VlPiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQ3VlQXR0cmlidXRlcyhDRkF0
dHJpYnV0CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChDRlN0cmluZ0NvbXBhcmUo
a2V5LCBrQ01UZXh0TWFya3VwQXR0cmlidXRlX1RleHRQb3NpdGlvblBlcmNlbnRhZ2VSZWxhdGl2
ZVRvV3JpdGluZ0RpcmVjdGlvbiwgMCkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pIHsKLSAgICAgICAg
ICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQodmFsdWUpICE9IENGTnVtYmVyR2V0VHlwZUlEKCkpCisg
ICAgICAgICAgICAgICAgYXV0byB2YWx1ZU51bWJlciA9IGR5bmFtaWNfY2ZfY2FzdDxDRk51bWJl
clJlZj4odmFsdWUpOworICAgICAgICAgICAgICAgIGlmICghdmFsdWVOdW1iZXIpCiAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzZWQgJiBQ
b3NpdGlvbikKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAg
cHJvY2Vzc2VkIHw9IFBvc2l0aW9uOwogCi0gICAgICAgICAgICAgICAgQ0ZOdW1iZXJSZWYgdmFs
dWVOdW1iZXIgPSBzdGF0aWNfY2FzdDxDRk51bWJlclJlZj4odmFsdWUpOwogICAgICAgICAgICAg
ICAgIGRvdWJsZSBwb3NpdGlvbjsKICAgICAgICAgICAgICAgICBDRk51bWJlckdldFZhbHVlKHZh
bHVlTnVtYmVyLCBrQ0ZOdW1iZXJGbG9hdDY0VHlwZSwgJnBvc2l0aW9uKTsKICAgICAgICAgICAg
ICAgICBjdWVEYXRhLT5zZXRQb3NpdGlvbihwb3NpdGlvbik7CkBAIC0yMDMsMTMgKzIwMywxMyBA
QCBSZWY8SW5iYW5kR2VuZXJpY0N1ZT4gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vz
c0N1ZUF0dHJpYnV0ZXMoQ0ZBdHRyaWJ1dAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBp
ZiAoQ0ZTdHJpbmdDb21wYXJlKGtleSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9Xcml0aW5nRGly
ZWN0aW9uU2l6ZVBlcmNlbnRhZ2UsIDApID09IGtDRkNvbXBhcmVFcXVhbFRvKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKENGR2V0VHlwZUlEKHZhbHVlKSAhPSBDRk51bWJlckdldFR5cGVJRCgpKQor
ICAgICAgICAgICAgICAgIGF1dG8gdmFsdWVOdW1iZXIgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZOdW1i
ZXJSZWY+KHZhbHVlKTsKKyAgICAgICAgICAgICAgICBpZiAoIXZhbHVlTnVtYmVyKQogICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBpZiAocHJvY2Vzc2VkICYg
U2l6ZSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgcHJv
Y2Vzc2VkIHw9IFNpemU7CiAKLSAgICAgICAgICAgICAgICBDRk51bWJlclJlZiB2YWx1ZU51bWJl
ciA9IHN0YXRpY19jYXN0PENGTnVtYmVyUmVmPih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgZG91
YmxlIHNpemU7CiAgICAgICAgICAgICAgICAgQ0ZOdW1iZXJHZXRWYWx1ZSh2YWx1ZU51bWJlciwg
a0NGTnVtYmVyRmxvYXQ2NFR5cGUsICZzaXplKTsKICAgICAgICAgICAgICAgICBjdWVEYXRhLT5z
ZXRTaXplKHNpemUpOwpAQCAtMjE3LDggKzIxNyw4IEBAIFJlZjxJbmJhbmRHZW5lcmljQ3VlPiBJ
bmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQ3VlQXR0cmlidXRlcyhDRkF0dHJpYnV0
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChDRlN0cmluZ0NvbXBhcmUoa2V5LCBr
Q01UZXh0TWFya3VwQXR0cmlidXRlX1ZlcnRpY2FsTGF5b3V0LCAwKSA9PSBrQ0ZDb21wYXJlRXF1
YWxUbykgewotICAgICAgICAgICAgICAgIHZhbHVlU3RyaW5nID0gc3RhdGljX2Nhc3Q8Q0ZTdHJp
bmdSZWY+KHZhbHVlKTsKLSAgICAgICAgICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQodmFsdWVTdHJp
bmcpICE9IENGU3RyaW5nR2V0VHlwZUlEKCkgfHwgIUNGU3RyaW5nR2V0TGVuZ3RoKHZhbHVlU3Ry
aW5nKSkKKyAgICAgICAgICAgICAgICBhdXRvIHZhbHVlU3RyaW5nID0gZHluYW1pY19jZl9jYXN0
PENGU3RyaW5nUmVmPih2YWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZVN0cmluZyB8
fCAhQ0ZTdHJpbmdHZXRMZW5ndGgodmFsdWVTdHJpbmcpKQogICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAoQ0ZTdHJpbmdD
b21wYXJlKHZhbHVlU3RyaW5nLCBrQ01UZXh0VmVydGljYWxMYXlvdXRfTGVmdFRvUmlnaHQsIDAp
ID09IGtDRkNvbXBhcmVFcXVhbFRvKQpAQCAtMjI5LDEwICsyMjksMTAgQEAgUmVmPEluYmFuZEdl
bmVyaWNDdWU+IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWVBdHRyaWJ1dGVz
KENGQXR0cmlidXQKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKENGU3RyaW5nQ29t
cGFyZShrZXksIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfQmFzZUZvbnRTaXplUGVyY2VudGFnZVJl
bGF0aXZlVG9WaWRlb0hlaWdodCwgMCkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pIHsKLSAgICAgICAg
ICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQodmFsdWUpICE9IENGTnVtYmVyR2V0VHlwZUlEKCkpCisg
ICAgICAgICAgICAgICAgYXV0byB2YWx1ZU51bWJlciA9IGR5bmFtaWNfY2ZfY2FzdDxDRk51bWJl
clJlZj4odmFsdWUpOworICAgICAgICAgICAgICAgIGlmICghdmFsdWVOdW1iZXIpCiAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
IENGTnVtYmVyUmVmIHZhbHVlTnVtYmVyID0gc3RhdGljX2Nhc3Q8Q0ZOdW1iZXJSZWY+KHZhbHVl
KTsKKwogICAgICAgICAgICAgICAgIGRvdWJsZSBiYXNlRm9udFNpemU7CiAgICAgICAgICAgICAg
ICAgQ0ZOdW1iZXJHZXRWYWx1ZSh2YWx1ZU51bWJlciwga0NGTnVtYmVyRmxvYXQ2NFR5cGUsICZi
YXNlRm9udFNpemUpOwogICAgICAgICAgICAgICAgIGN1ZURhdGEtPnNldEJhc2VGb250U2l6ZShi
YXNlRm9udFNpemUpOwpAQCAtMjQwLDEwICsyNDAsMTAgQEAgUmVmPEluYmFuZEdlbmVyaWNDdWU+
IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWVBdHRyaWJ1dGVzKENGQXR0cmli
dXQKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKENGU3RyaW5nQ29tcGFyZShrZXks
IGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfUmVsYXRpdmVGb250U2l6ZSwgMCkgPT0ga0NGQ29tcGFy
ZUVxdWFsVG8pIHsKLSAgICAgICAgICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQodmFsdWUpICE9IENG
TnVtYmVyR2V0VHlwZUlEKCkpCisgICAgICAgICAgICAgICAgYXV0byB2YWx1ZU51bWJlciA9IGR5
bmFtaWNfY2ZfY2FzdDxDRk51bWJlclJlZj4odmFsdWUpOworICAgICAgICAgICAgICAgIGlmICgh
dmFsdWVOdW1iZXIpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgIENGTnVtYmVyUmVmIHZhbHVlTnVtYmVyID0gc3RhdGljX2Nh
c3Q8Q0ZOdW1iZXJSZWY+KHZhbHVlKTsKKwogICAgICAgICAgICAgICAgIGRvdWJsZSByZWxhdGl2
ZUZvbnRTaXplOwogICAgICAgICAgICAgICAgIENGTnVtYmVyR2V0VmFsdWUodmFsdWVOdW1iZXIs
IGtDRk51bWJlckZsb2F0NjRUeXBlLCAmcmVsYXRpdmVGb250U2l6ZSk7CiAgICAgICAgICAgICAg
ICAgY3VlRGF0YS0+c2V0UmVsYXRpdmVGb250U2l6ZShyZWxhdGl2ZUZvbnRTaXplKTsKQEAgLTI1
MSw4ICsyNTEsOCBAQCBSZWY8SW5iYW5kR2VuZXJpY0N1ZT4gSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWRjo6cHJvY2Vzc0N1ZUF0dHJpYnV0ZXMoQ0ZBdHRyaWJ1dAogICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKGtleSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0
ZV9Gb250RmFtaWx5TmFtZSwgMCkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pIHsKLSAgICAgICAgICAg
ICAgICB2YWx1ZVN0cmluZyA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPih2YWx1ZSk7Ci0gICAg
ICAgICAgICAgICAgaWYgKENGR2V0VHlwZUlEKHZhbHVlU3RyaW5nKSAhPSBDRlN0cmluZ0dldFR5
cGVJRCgpIHx8ICFDRlN0cmluZ0dldExlbmd0aCh2YWx1ZVN0cmluZykpCisgICAgICAgICAgICAg
ICAgYXV0byB2YWx1ZVN0cmluZyA9IGR5bmFtaWNfY2ZfY2FzdDxDRlN0cmluZ1JlZj4odmFsdWUp
OworICAgICAgICAgICAgICAgIGlmICghdmFsdWVTdHJpbmcgfHwgIUNGU3RyaW5nR2V0TGVuZ3Ro
KHZhbHVlU3RyaW5nKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICAgICAgaWYgKHByb2Nlc3NlZCAmIEZvbnROYW1lKQogICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKQEAgLTI2MywyMiArMjYzLDIyIEBAIFJlZjxJbmJhbmRHZW5lcmljQ3VlPiBJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQ3VlQXR0cmlidXRlcyhDRkF0dHJpYnV0CiAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChDRlN0cmluZ0NvbXBhcmUoa2V5LCBrQ01UZXh0
TWFya3VwQXR0cmlidXRlX0ZvcmVncm91bmRDb2xvckFSR0IsIDApID09IGtDRkNvbXBhcmVFcXVh
bFRvKSB7Ci0gICAgICAgICAgICAgICAgQ0ZBcnJheVJlZiBhcnJheVZhbHVlID0gc3RhdGljX2Nh
c3Q8Q0ZBcnJheVJlZj4odmFsdWUpOwotICAgICAgICAgICAgICAgIGlmIChDRkdldFR5cGVJRChh
cnJheVZhbHVlKSAhPSBDRkFycmF5R2V0VHlwZUlEKCkpCisgICAgICAgICAgICAgICAgYXV0byBh
cnJheVZhbHVlID0gZHluYW1pY19jZl9jYXN0PENGQXJyYXlSZWY+KHZhbHVlKTsKKyAgICAgICAg
ICAgICAgICBpZiAoIWFycmF5VmFsdWUpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICAgICAgICAgIAorCiAgICAgICAgICAgICAgICAgYXV0byBjb2xvciA9IG1ha2VTaW1w
bGVDb2xvckZyb21BUkdCQ0ZBcnJheShhcnJheVZhbHVlKTsKICAgICAgICAgICAgICAgICBpZiAo
IWNvbG9yKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBj
dWVEYXRhLT5zZXRGb3JlZ3JvdW5kQ29sb3IoKmNvbG9yKTsKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBpZiAoQ0ZT
dHJpbmdDb21wYXJlKGtleSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9CYWNrZ3JvdW5kQ29sb3JB
UkdCLCAwKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykgewotICAgICAgICAgICAgICAgIENGQXJyYXlS
ZWYgYXJyYXlWYWx1ZSA9IHN0YXRpY19jYXN0PENGQXJyYXlSZWY+KHZhbHVlKTsKLSAgICAgICAg
ICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQoYXJyYXlWYWx1ZSkgIT0gQ0ZBcnJheUdldFR5cGVJRCgp
KQorICAgICAgICAgICAgICAgIGF1dG8gYXJyYXlWYWx1ZSA9IGR5bmFtaWNfY2ZfY2FzdDxDRkFy
cmF5UmVmPih2YWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKCFhcnJheVZhbHVlKQogICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAg
ICAgIGF1dG8gY29sb3IgPSBtYWtlU2ltcGxlQ29sb3JGcm9tQVJHQkNGQXJyYXkoYXJyYXlWYWx1
ZSk7CiAgICAgICAgICAgICAgICAgaWYgKCFjb2xvcikKICAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7CkBAIC0yODcsMTAgKzI4NywxMCBAQCBSZWY8SW5iYW5kR2VuZXJpY0N1ZT4gSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0N1ZUF0dHJpYnV0ZXMoQ0ZBdHRyaWJ1dAogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKGtleSwga0NNVGV4
dE1hcmt1cEF0dHJpYnV0ZV9DaGFyYWN0ZXJCYWNrZ3JvdW5kQ29sb3JBUkdCLCAwKSA9PSBrQ0ZD
b21wYXJlRXF1YWxUbykgewotICAgICAgICAgICAgICAgIENGQXJyYXlSZWYgYXJyYXlWYWx1ZSA9
IHN0YXRpY19jYXN0PENGQXJyYXlSZWY+KHZhbHVlKTsKLSAgICAgICAgICAgICAgICBpZiAoQ0ZH
ZXRUeXBlSUQoYXJyYXlWYWx1ZSkgIT0gQ0ZBcnJheUdldFR5cGVJRCgpKQorICAgICAgICAgICAg
ICAgIGF1dG8gYXJyYXlWYWx1ZSA9IGR5bmFtaWNfY2ZfY2FzdDxDRkFycmF5UmVmPih2YWx1ZSk7
CisgICAgICAgICAgICAgICAgaWYgKCFhcnJheVZhbHVlKQogICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgICAgIGF1dG8gY29sb3Ig
PSBtYWtlU2ltcGxlQ29sb3JGcm9tQVJHQkNGQXJyYXkoYXJyYXlWYWx1ZSk7CiAgICAgICAgICAg
ICAgICAgaWYgKCFjb2xvcikKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQppbmRl
eCAyYzhiMmUyNjYxODM5MTU1YzNmNTdlOWJjMTFhMzA5ZTJmOTllNjZhLi5hZjJhMmU2YzA0YWY1
M2I2MmEzNWJiMDc5MWI2Y2M1ODkwMDllMWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZP
YmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAgLTQ4LDYgKzQ4LDcgQEAKICNp
bXBvcnQgPHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+CiAjaW1wb3J0
IDxwYWwvc3BpL2NvY29hL0FWRm91bmRhdGlvblNQSS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrT2Jq
Q0V4Y2VwdGlvbnMuaD4KKyNpbXBvcnQgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgogCiAjaW1wb3J0
IDxwYWwvY2YvQ29yZU1lZGlhU29mdExpbmsuaD4KICNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5k
YXRpb25Tb2Z0TGluay5oPgpAQCAtMTY5LDkgKzE3MCw4IEBAIHByaXZhdGU6CiAgICAgICAgIGlm
IChkZXNjcmlwdGlvbikgewogICAgICAgICAgICAgbV9vcmlnaW5hbENvZGVjID0gUEFMOjpzb2Z0
TGlua19Db3JlTWVkaWFfQ01Gb3JtYXREZXNjcmlwdGlvbkdldE1lZGlhU3ViVHlwZShkZXNjcmlw
dGlvbik7CiAgICAgICAgICAgICBDRlN0cmluZ1JlZiBvcmlnaW5hbEZvcm1hdEtleSA9IFBBTDo6
Y2FuTG9hZF9Db3JlTWVkaWFfa0NNRm9ybWF0RGVzY3JpcHRpb25FeHRlbnNpb25fUHJvdGVjdGVk
Q29udGVudE9yaWdpbmFsRm9ybWF0KCkgPyBQQUw6OmdldF9Db3JlTWVkaWFfa0NNRm9ybWF0RGVz
Y3JpcHRpb25FeHRlbnNpb25fUHJvdGVjdGVkQ29udGVudE9yaWdpbmFsRm9ybWF0KCkgOiBDRlNU
UigiQ29tbW9uRW5jcnlwdGlvbk9yaWdpbmFsRm9ybWF0Iik7Ci0gICAgICAgICAgICBDRlR5cGVS
ZWYgb3JpZ2luYWxGb3JtYXQgPSBDTUZvcm1hdERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9uKGRlc2Ny
aXB0aW9uLCBvcmlnaW5hbEZvcm1hdEtleSk7Ci0gICAgICAgICAgICBpZiAob3JpZ2luYWxGb3Jt
YXQgJiYgQ0ZHZXRUeXBlSUQob3JpZ2luYWxGb3JtYXQpID09IENGTnVtYmVyR2V0VHlwZUlEKCkp
Ci0gICAgICAgICAgICAgICAgQ0ZOdW1iZXJHZXRWYWx1ZSgoQ0ZOdW1iZXJSZWYpb3JpZ2luYWxG
b3JtYXQsIGtDRk51bWJlclNJbnQzMlR5cGUsICZtX29yaWdpbmFsQ29kZWMpOworICAgICAgICAg
ICAgaWYgKGF1dG8gb3JpZ2luYWxGb3JtYXQgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZOdW1iZXJSZWY+
KENNRm9ybWF0RGVzY3JpcHRpb25HZXRFeHRlbnNpb24oZGVzY3JpcHRpb24sIG9yaWdpbmFsRm9y
bWF0S2V5KSkpCisgICAgICAgICAgICAgICAgQ0ZOdW1iZXJHZXRWYWx1ZShvcmlnaW5hbEZvcm1h
dCwga0NGTnVtYmVyU0ludDMyVHlwZSwgJm1fb3JpZ2luYWxDb2RlYyk7CiAgICAgICAgIH0KICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L0ZvbnRDYWNoZUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcAppbmRleCBiZWRlNTQ1NmQ3ZmQ1ZDJlODAyZWI4
ZWU3ODE2NTNiZjI0MDZhNmFmLi44NTIwMzEzMGUxMmVkYzRmNTI5YjBmOTAwYzBhZjQ5ZDk5ZmQ1
Y2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9G
b250Q2FjaGVDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCkBAIC0zMiwxNSArMzIsMTQgQEAKICNpbmNs
dWRlICJSZW5kZXJUaGVtZUNvY29hLmgiCiAjaW5jbHVkZSAiU3lzdGVtRm9udERhdGFiYXNlQ29y
ZVRleHQuaCIKICNpbmNsdWRlICJWZXJzaW9uQ2hlY2tzLmgiCi0jaW5jbHVkZSA8cGFsL3NwaS9j
Zi9Db3JlVGV4dFNQSS5oPgotCiAjaW5jbHVkZSA8Q29yZVRleHQvU0ZOVExheW91dFR5cGVzLmg+
Ci0KKyNpbmNsdWRlIDxwYWwvc3BpL2NmL0NvcmVUZXh0U1BJLmg+CiAjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFk
Lmg+CiAjaW5jbHVkZSA8d3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0
Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgogCiAv
LyBGSVhNRTogVGhpcyBzZWVtcyBsaWtlIGl0IHNob3VsZCBiZSBpbiBQbGF0Zm9ybUhhdmUuaC4K
IC8vIEZJWE1FOiBMaWtlbHkgd2UgY2FuIHJlbW92ZSB0aGlzIHNwZWNpYWwgY2FzZSBmb3Igd2F0
Y2hPUyBhbmQgdHZPUy4KQEAgLTY5Nyw4ICs2OTYsOCBAQCBWZWN0b3I8U3RyaW5nPiBGb250Q2Fj
aGU6OnN5c3RlbUZvbnRGYW1pbGllcygpCiAgICAgYXV0byBhdmFpbGFibGVGb250RmFtaWxpZXMg
PSBhZG9wdENGKENURm9udE1hbmFnZXJDb3B5QXZhaWxhYmxlRm9udEZhbWlseU5hbWVzKCkpOwog
ICAgIENGSW5kZXggY291bnQgPSBDRkFycmF5R2V0Q291bnQoYXZhaWxhYmxlRm9udEZhbWlsaWVz
LmdldCgpKTsKICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7Ci0gICAg
ICAgIENGU3RyaW5nUmVmIGZvbnROYW1lID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQXJy
YXlHZXRWYWx1ZUF0SW5kZXgoYXZhaWxhYmxlRm9udEZhbWlsaWVzLmdldCgpLCBpKSk7Ci0gICAg
ICAgIGlmIChDRkdldFR5cGVJRChmb250TmFtZSkgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkgewor
ICAgICAgICBhdXRvIGZvbnROYW1lID0gZHluYW1pY19jZl9jYXN0PENGU3RyaW5nUmVmPihDRkFy
cmF5R2V0VmFsdWVBdEluZGV4KGF2YWlsYWJsZUZvbnRGYW1pbGllcy5nZXQoKSwgaSkpOworICAg
ICAgICBpZiAoIWZvbnROYW1lKSB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CkBAIC0xMzQ3LDggKzEzNDYsNyBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgaXNBcmFiaWNDaGFyYWN0ZXIoVUNoYXIgY2hhcmFjdGVyKQogI2lm
IEFTU0VSVF9FTkFCTEVECiBzdGF0aWMgYm9vbCBpc1VzZXJJbnN0YWxsZWRGb250KENURm9udFJl
ZiBmb250KQogewotICAgIGF1dG8gYXR0cmlidXRlID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDRkJv
b2xlYW5SZWY+KENURm9udENvcHlBdHRyaWJ1dGUoZm9udCwga0NURm9udFVzZXJJbnN0YWxsZWRB
dHRyaWJ1dGUpKSk7Ci0gICAgcmV0dXJuIGF0dHJpYnV0ZSAmJiBDRkJvb2xlYW5HZXRWYWx1ZShh
dHRyaWJ1dGUuZ2V0KCkpOworICAgIHJldHVybiBhZG9wdENGKENURm9udENvcHlBdHRyaWJ1dGUo
Zm9udCwga0NURm9udFVzZXJJbnN0YWxsZWRBdHRyaWJ1dGUpKSA9PSBrQ0ZCb29sZWFuVHJ1ZTsK
IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29jb2EubW0KaW5kZXggZWFjZGY3MDEzNTIwMGRh
ODQyNzk3YzQwYzYyNTFiOWVjNzU1NTBhNi4uZjA4MmNjMWNlMGFkN2U0MTVjZmQ0NjdjMWEwNmJl
MDUwMzhhNTEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvY29hL0hFVkNVdGlsaXRpZXNDb2NvYS5tbQpAQCAtMzEsNiArMzEsNyBAQAog
I2ltcG9ydCAiRm91ckNDLmgiCiAjaW1wb3J0ICJIRVZDVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJN
ZWRpYUNhcGFiaWxpdGllc0luZm8uaCIKKyNpbXBvcnQgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgog
I2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5oPgogCiAjaW1wb3J0
ICJWaWRlb1Rvb2xib3hTb2Z0TGluay5oIgpAQCAtNzYsOCArNzcsOCBAQCBzdGQ6Om9wdGlvbmFs
PE1lZGlhQ2FwYWJpbGl0aWVzSW5mbz4gdmFsaWRhdGVIRVZDUGFyYW1ldGVycyhjb25zdCBIRVZD
UGFyYW1ldGVycwogICAgIGlmICghY2FwYWJpbGl0aWVzKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgYXV0byBzdXBwb3J0ZWRQcm9maWxlcyA9IChDRkFycmF5UmVmKUNGRGlj
dGlvbmFyeUdldFZhbHVlKGNhcGFiaWxpdGllcy5nZXQoKSwga1ZUSEVWQ0RlY29kZXJDYXBhYmls
aXR5X1N1cHBvcnRlZFByb2ZpbGVzKTsKLSAgICBpZiAoIXN1cHBvcnRlZFByb2ZpbGVzIHx8IENG
R2V0VHlwZUlEKHN1cHBvcnRlZFByb2ZpbGVzKSAhPSBDRkFycmF5R2V0VHlwZUlEKCkpCisgICAg
YXV0byBzdXBwb3J0ZWRQcm9maWxlcyA9IGR5bmFtaWNfY2ZfY2FzdDxDRkFycmF5UmVmPihDRkRp
Y3Rpb25hcnlHZXRWYWx1ZShjYXBhYmlsaXRpZXMuZ2V0KCksIGtWVEhFVkNEZWNvZGVyQ2FwYWJp
bGl0eV9TdXBwb3J0ZWRQcm9maWxlcykpOworICAgIGlmICghc3VwcG9ydGVkUHJvZmlsZXMpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpbnQxNl90IGdlbmVyYWxQcm9maWxl
SURDID0gcGFyYW1ldGVycy5nZW5lcmFsUHJvZmlsZUlEQzsKQEAgLTg2LDI1ICs4NywyMiBAQCBz
dGQ6Om9wdGlvbmFsPE1lZGlhQ2FwYWJpbGl0aWVzSW5mbz4gdmFsaWRhdGVIRVZDUGFyYW1ldGVy
cyhjb25zdCBIRVZDUGFyYW1ldGVycwogICAgIGlmICghQ0ZBcnJheUNvbnRhaW5zVmFsdWUoc3Vw
cG9ydGVkUHJvZmlsZXMsIHNlYXJjaFJhbmdlLCBjZkdlbmVyYWxQcm9maWxlSURDLmdldCgpKSkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIGF1dG8gcGVyUHJvZmlsZVN1cHBv
cnQgPSAoQ0ZEaWN0aW9uYXJ5UmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGNhcGFiaWxpdGllcy5n
ZXQoKSwga1ZUSEVWQ0RlY29kZXJDYXBhYmlsaXR5X1BlclByb2ZpbGVTdXBwb3J0KTsKLSAgICBp
ZiAoIXBlclByb2ZpbGVTdXBwb3J0IHx8IENGR2V0VHlwZUlEKHBlclByb2ZpbGVTdXBwb3J0KSAh
PSBDRkRpY3Rpb25hcnlHZXRUeXBlSUQoKSkKKyAgICBhdXRvIHBlclByb2ZpbGVTdXBwb3J0ID0g
ZHluYW1pY19jZl9jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoY2Fw
YWJpbGl0aWVzLmdldCgpLCBrVlRIRVZDRGVjb2RlckNhcGFiaWxpdHlfUGVyUHJvZmlsZVN1cHBv
cnQpKTsKKyAgICBpZiAoIXBlclByb2ZpbGVTdXBwb3J0KQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgYXV0byBnZW5lcmFsUHJvZmlsZUlEQ1N0cmluZyA9IFN0cmluZzo6bnVt
YmVyKGdlbmVyYWxQcm9maWxlSURDKS5jcmVhdGVDRlN0cmluZygpOwotICAgIGF1dG8gcHJvZmls
ZVN1cHBvcnQgPSAoQ0ZEaWN0aW9uYXJ5UmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKHBlclByb2Zp
bGVTdXBwb3J0LCBnZW5lcmFsUHJvZmlsZUlEQ1N0cmluZy5nZXQoKSk7Ci0gICAgaWYgKCFwcm9m
aWxlU3VwcG9ydCB8fCBDRkdldFR5cGVJRChwcm9maWxlU3VwcG9ydCkgIT0gQ0ZEaWN0aW9uYXJ5
R2V0VHlwZUlEKCkpCisgICAgYXV0byBwcm9maWxlU3VwcG9ydCA9IGR5bmFtaWNfY2ZfY2FzdDxD
RkRpY3Rpb25hcnlSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKHBlclByb2ZpbGVTdXBwb3J0LCBn
ZW5lcmFsUHJvZmlsZUlEQ1N0cmluZy5nZXQoKSkpOworICAgIGlmICghcHJvZmlsZVN1cHBvcnQp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBNZWRpYUNhcGFiaWxpdGllc0lu
Zm8gaW5mbzsKIAogICAgIGluZm8uc3VwcG9ydGVkID0gdHJ1ZTsKIAotICAgIGF1dG8gaXNIYXJk
d2FyZUFjY2VsZXJhdGVkID0gKENGQm9vbGVhblJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9m
aWxlU3VwcG9ydCwga1ZUSEVWQ0RlY29kZXJQcm9maWxlQ2FwYWJpbGl0eV9Jc0hhcmR3YXJlQWNj
ZWxlcmF0ZWQpOwotICAgIGlmIChpc0hhcmR3YXJlQWNjZWxlcmF0ZWQgJiYgQ0ZHZXRUeXBlSUQo
aXNIYXJkd2FyZUFjY2VsZXJhdGVkKSA9PSBDRkJvb2xlYW5HZXRUeXBlSUQoKSkKLSAgICAgICAg
aW5mby5wb3dlckVmZmljaWVudCA9IENGQm9vbGVhbkdldFZhbHVlKGlzSGFyZHdhcmVBY2NlbGVy
YXRlZCk7CisgICAgaW5mby5wb3dlckVmZmljaWVudCA9IENGRGljdGlvbmFyeUdldFZhbHVlKHBy
b2ZpbGVTdXBwb3J0LCBrVlRIRVZDRGVjb2RlclByb2ZpbGVDYXBhYmlsaXR5X0lzSGFyZHdhcmVB
Y2NlbGVyYXRlZCkgPT0ga0NGQm9vbGVhblRydWU7CiAKLSAgICBhdXRvIGNmTWF4RGVjb2RlTGV2
ZWwgPSAoQ0ZOdW1iZXJSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvZmlsZVN1cHBvcnQsIGtW
VEhFVkNEZWNvZGVyUHJvZmlsZUNhcGFiaWxpdHlfTWF4RGVjb2RlTGV2ZWwpOwotICAgIGlmIChj
Zk1heERlY29kZUxldmVsICYmIENGR2V0VHlwZUlEKGNmTWF4RGVjb2RlTGV2ZWwpID09IENGTnVt
YmVyR2V0VHlwZUlEKCkpIHsKKyAgICBpZiAoYXV0byBjZk1heERlY29kZUxldmVsID0gZHluYW1p
Y19jZl9jYXN0PENGTnVtYmVyUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9maWxlU3VwcG9y
dCwga1ZUSEVWQ0RlY29kZXJQcm9maWxlQ2FwYWJpbGl0eV9NYXhEZWNvZGVMZXZlbCkpKSB7CiAg
ICAgICAgIGludDE2X3QgbWF4RGVjb2RlTGV2ZWwgPSAwOwogICAgICAgICBpZiAoIUNGTnVtYmVy
R2V0VmFsdWUoY2ZNYXhEZWNvZGVMZXZlbCwga0NGTnVtYmVyU0ludDE2VHlwZSwgJm1heERlY29k
ZUxldmVsKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC0xMTMsOCArMTEx
LDcgQEAgc3RkOjpvcHRpb25hbDxNZWRpYUNhcGFiaWxpdGllc0luZm8+IHZhbGlkYXRlSEVWQ1Bh
cmFtZXRlcnMoY29uc3QgSEVWQ1BhcmFtZXRlcnMKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgfQogCi0gICAgYXV0byBjZk1heFBsYXliYWNrTGV2ZWwgPSAoQ0ZOdW1iZXJS
ZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvZmlsZVN1cHBvcnQsIGtWVEhFVkNEZWNvZGVyUHJv
ZmlsZUNhcGFiaWxpdHlfTWF4UGxheWJhY2tMZXZlbCk7Ci0gICAgaWYgKGNmTWF4UGxheWJhY2tM
ZXZlbCAmJiBDRkdldFR5cGVJRChjZk1heFBsYXliYWNrTGV2ZWwpID09IENGTnVtYmVyR2V0VHlw
ZUlEKCkpIHsKKyAgICBpZiAoYXV0byBjZk1heFBsYXliYWNrTGV2ZWwgPSBkeW5hbWljX2NmX2Nh
c3Q8Q0ZOdW1iZXJSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKHByb2ZpbGVTdXBwb3J0LCBrVlRI
RVZDRGVjb2RlclByb2ZpbGVDYXBhYmlsaXR5X01heFBsYXliYWNrTGV2ZWwpKSkgewogICAgICAg
ICBpbnQxNl90IG1heFBsYXliYWNrTGV2ZWwgPSAwOwogICAgICAgICBpZiAoIUNGTnVtYmVyR2V0
VmFsdWUoY2ZNYXhQbGF5YmFja0xldmVsLCBrQ0ZOdW1iZXJTSW50MTZUeXBlLCAmbWF4UGxheWJh
Y2tMZXZlbCkpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTk2LDEwICsx
OTMsNyBAQCBzdGQ6Om9wdGlvbmFsPE1lZGlhQ2FwYWJpbGl0aWVzSW5mbz4gdmFsaWRhdGVEb1Zp
UGFyYW1ldGVycyhjb25zdCBEb1ZpUGFyYW1ldGVycwogICAgIGlmICghc3VwcG9ydGVkTGV2ZWxz
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgYXV0byBpc0hhcmR3YXJlQWNj
ZWxlcmF0ZWRDRiA9IChDRkJvb2xlYW5SZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoY2FwYWJpbGl0
aWVzLmdldCgpLCBrVlREb2xieVZpc2lvbkRlY29kZXJDYXBhYmlsaXR5X0lzSGFyZHdhcmVBY2Nl
bGVyYXRlZCk7Ci0gICAgaWYgKCFpc0hhcmR3YXJlQWNjZWxlcmF0ZWRDRiB8fCBDRkdldFR5cGVJ
RChpc0hhcmR3YXJlQWNjZWxlcmF0ZWRDRikgIT0gQ0ZCb29sZWFuR2V0VHlwZUlEKCkpCi0gICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgYm9vbCBpc0hhcmR3YXJlQWNjZWxlcmF0ZWQg
PSBDRkJvb2xlYW5HZXRWYWx1ZShpc0hhcmR3YXJlQWNjZWxlcmF0ZWRDRik7CisgICAgYm9vbCBp
c0hhcmR3YXJlQWNjZWxlcmF0ZWQgPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShjYXBhYmlsaXRpZXMu
Z2V0KCksIGtWVERvbGJ5VmlzaW9uRGVjb2RlckNhcGFiaWxpdHlfSXNIYXJkd2FyZUFjY2VsZXJh
dGVkKSA9PSBrQ0ZCb29sZWFuVHJ1ZTsKIAogICAgIGlmICghc3VwcG9ydGVkUHJvZmlsZXMudmFs
dWUoKS5jb250YWlucyhwYXJhbWV0ZXJzLmJpdHN0cmVhbVByb2ZpbGVJRCkgfHwgIXN1cHBvcnRl
ZExldmVscy52YWx1ZSgpLmNvbnRhaW5zKHBhcmFtZXRlcnMuYml0c3RyZWFtTGV2ZWxJRCkpCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24ubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVzc2lv
blNlc3Npb24ubW0KaW5kZXggZDFjODQ0ODgzNjc0MGZkYjc1YzQwYWM5M2Y3ZGQwOWQ3OGYwMzAw
MC4uYjVmYTU4ZWM0Mjk2YzZmMzZhMWRmNzEzMzQwMGEyNTQzMDZlMjU2ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29tcHJlc3Np
b25TZXNzaW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5tbQpAQCAtMTk0LDggKzE5NCw3IEBAIGJvb2wg
V2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOjpzaG91bGREZWNvZGVTYW1wbGUoQ01TYW1wbGVC
dWZmZXJSZWYgc2FtcGxlLCBiCiAKICAgICBmb3IgKENGSW5kZXggaW5kZXggPSAwLCBjb3VudCA9
IENGQXJyYXlHZXRDb3VudChhdHRhY2htZW50cyk7IGluZGV4IDwgY291bnQ7ICsraW5kZXgpIHsK
ICAgICAgICAgQ0ZEaWN0aW9uYXJ5UmVmIGF0dGFjaG1lbnREaWN0ID0gKENGRGljdGlvbmFyeVJl
ZilDRkFycmF5R2V0VmFsdWVBdEluZGV4KGF0dGFjaG1lbnRzLCBpbmRleCk7Ci0gICAgICAgIENG
Qm9vbGVhblJlZiBkZXBlbmRlZE9uID0gKENGQm9vbGVhblJlZilDRkRpY3Rpb25hcnlHZXRWYWx1
ZShhdHRhY2htZW50RGljdCwgUEFMOjprQ01TYW1wbGVBdHRhY2htZW50S2V5X0lzRGVwZW5kZWRP
bkJ5T3RoZXJzKTsKLSAgICAgICAgaWYgKGRlcGVuZGVkT24gJiYgIUNGQm9vbGVhbkdldFZhbHVl
KGRlcGVuZGVkT24pKQorICAgICAgICBpZiAoQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoYXR0YWNobWVu
dERpY3QsIFBBTDo6a0NNU2FtcGxlQXR0YWNobWVudEtleV9Jc0RlcGVuZGVkT25CeU90aGVycykg
PT0ga0NGQm9vbGVhbkZhbHNlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9u
dFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKaW5kZXggNjE0YzgwMmVk
ZDQ4YjVjZDlmYTQ3ZmEzZjhmZmRiOTgzMzczNjYwOC4uYjg5MTk5YzVkM2RkY2RiYzA0YWMzYmU5
OTA3MDhhMzRjNTZlOTM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRl
eHQuY3BwCkBAIC0xNDEsOSArMTQxLDkgQEAgUmV0YWluUHRyPENGVHlwZVJlZj4gRm9udFBsYXRm
b3JtRGF0YTo6b2JqZWN0Rm9yRXF1YWxpdHlDaGVjayhDVEZvbnRSZWYgY3RGb250KQogICAgIGF1
dG8gZm9udERlc2NyaXB0b3IgPSBhZG9wdENGKENURm9udENvcHlGb250RGVzY3JpcHRvcihjdEZv
bnQpKTsKICAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEzODY4MyBUaGlzIGlzIGEgc2hhbGxvdyBwb2ludGVyIGNvbXBhcmUgZm9yIHdlYiBmb250
cwogICAgIC8vIGJlY2F1c2UgdGhlIFVSTCBjb250YWlucyB0aGUgYWRkcmVzcyBvZiB0aGUgZm9u
dC4gVGhpcyBtZWFucyB3ZSBtaWdodCBlcnJvbmVvdXNseSBnZXQgZmFsc2UgbmVnYXRpdmVzLgot
ICAgIFJldGFpblB0cjxDRlVSTFJlZj4gdXJsID0gYWRvcHRDRihzdGF0aWNfY2FzdDxDRlVSTFJl
Zj4oQ1RGb250RGVzY3JpcHRvckNvcHlBdHRyaWJ1dGUoZm9udERlc2NyaXB0b3IuZ2V0KCksIGtD
VEZvbnRSZWZlcmVuY2VVUkxBdHRyaWJ1dGUpKSk7Ci0gICAgQVNTRVJUKCF1cmwgfHwgQ0ZHZXRU
eXBlSUQodXJsLmdldCgpKSA9PSBDRlVSTEdldFR5cGVJRCgpKTsKLSAgICByZXR1cm4gdXJsOwor
ICAgIGF1dG8gb2JqZWN0ID0gYWRvcHRDRihDVEZvbnREZXNjcmlwdG9yQ29weUF0dHJpYnV0ZShm
b250RGVzY3JpcHRvci5nZXQoKSwga0NURm9udFJlZmVyZW5jZVVSTEF0dHJpYnV0ZSkpOworICAg
IEFTU0VSVCghb2JqZWN0IHx8IENGR2V0VHlwZUlEKG9iamVjdC5nZXQoKSkgPT0gQ0ZVUkxHZXRU
eXBlSUQoKSk7CisgICAgcmV0dXJuIG9iamVjdDsKIH0KIAogUmV0YWluUHRyPENGVHlwZVJlZj4g
Rm9udFBsYXRmb3JtRGF0YTo6b2JqZWN0Rm9yRXF1YWxpdHlDaGVjaygpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRH
TENWQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhp
Y3NDb250ZXh0R0xDVkFOR0xFLmNwcAppbmRleCA2MDQ2MzllYjk1ZmE0NWI0YWZiNTk2YzFkZDVi
YmRkZDRiZjJkYTAxLi43ODAxYmU0OTYwMTRmMzQ3M2Q0NDUyNWU0NDgxNTI2NDI4YWE2ZGQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0Nv
bnRleHRHTENWQU5HTEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHAKQEAgLTI5LDE1ICsyOSwxNyBAQAogI2lm
IEVOQUJMRShXRUJHTCkgJiYgRU5BQkxFKFZJREVPKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogCiAj
aW5jbHVkZSAiQU5HTEVIZWFkZXJzLmgiCi0jaW5jbHVkZSAiQ29yZVZpZGVvU29mdExpbmsuaCIK
ICNpbmNsdWRlICJGb3VyQ0MuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSA8cGFs
L3NwaS9jZi9Db3JlVmlkZW9TUEkuaD4KICNpbmNsdWRlIDxwYWwvc3BpL2NvY29hL0lPU3VyZmFj
ZVNQSS5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9T
dGRNYXAuaD4KKyNpbmNsdWRlIDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKKyNpbmNsdWRlICJDb3JlVmlkZW9Tb2Z0TGluay5oIgor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdGV4cHIgYXV0byBzX3l1dlZlcnRl
eFNoYWRlclRleHR1cmUyRCB7CkBAIC0xNTgsNyArMTYwLDcgQEAgc3RhdGljIFBpeGVsUmFuZ2Ug
cGl4ZWxSYW5nZUZyb21QaXhlbEZvcm1hdChPU1R5cGUgcGl4ZWxGb3JtYXQpCiAKIHN0YXRpYyBU
cmFuc2ZlckZ1bmN0aW9uQ1YgdHJhbnNmZXJGdW5jdGlvbkZyb21TdHJpbmcoQ0ZTdHJpbmdSZWYg
c3RyaW5nKQogewotICAgIGlmICghc3RyaW5nIHx8IENGR2V0VHlwZUlEKHN0cmluZykgIT0gQ0ZT
dHJpbmdHZXRUeXBlSUQoKSkKKyAgICBpZiAoIXN0cmluZykKICAgICAgICAgcmV0dXJuIFRyYW5z
ZmVyRnVuY3Rpb25DVjo6VW5rbm93bjsKICAgICBpZiAoQ0ZFcXVhbChzdHJpbmcsIGtDVkltYWdl
QnVmZmVyWUNiQ3JNYXRyaXhfSVRVX1JfNzA5XzIpKQogICAgICAgICByZXR1cm4gVHJhbnNmZXJG
dW5jdGlvbkNWOjprSVRVX1JfNzA5XzI7CkBAIC02OTksNyArNzAxLDcgQEAgYm9vbCBHcmFwaGlj
c0NvbnRleHRHTENWQU5HTEU6OmNvcHlQaXhlbEJ1ZmZlclRvVGV4dHVyZShDVlBpeGVsQnVmZmVy
UmVmIGltYWdlLAogICAgIG1fY29udGV4dC0+dW5pZm9ybTJmKG1fdXZUZXh0dXJlU2l6ZVVuaWZv
cm1Mb2NhdGlvbiwgdXZQbGFuZVdpZHRoLCB1dlBsYW5lSGVpZ2h0KTsKIAogICAgIGF1dG8gcmFu
Z2UgPSBwaXhlbFJhbmdlRnJvbVBpeGVsRm9ybWF0KHBpeGVsRm9ybWF0KTsKLSAgICBhdXRvIHRy
YW5zZmVyRnVuY3Rpb24gPSB0cmFuc2ZlckZ1bmN0aW9uRnJvbVN0cmluZygoQ0ZTdHJpbmdSZWYp
Q1ZCdWZmZXJHZXRBdHRhY2htZW50KGltYWdlLCBrQ1ZJbWFnZUJ1ZmZlcllDYkNyTWF0cml4S2V5
LCBuaWwpKTsKKyAgICBhdXRvIHRyYW5zZmVyRnVuY3Rpb24gPSB0cmFuc2ZlckZ1bmN0aW9uRnJv
bVN0cmluZyhkeW5hbWljX2NmX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENWQnVmZmVyR2V0QXR0YWNobWVu
dChpbWFnZSwga0NWSW1hZ2VCdWZmZXJZQ2JDck1hdHJpeEtleSwgbmlsKSkpOwogICAgIGF1dG8g
Y29sb3JNYXRyaXggPSBZQ2JDclRvUkdCTWF0cml4Rm9yUmFuZ2VBbmRUcmFuc2ZlckZ1bmN0aW9u
KHJhbmdlLCB0cmFuc2ZlckZ1bmN0aW9uKTsKICAgICBtX2NvbnRleHQtPnVuaWZvcm1NYXRyaXg0
ZnYobV9jb2xvck1hdHJpeFVuaWZvcm1Mb2NhdGlvbiwgR0xfRkFMU0UsIGNvbG9yTWF0cml4KTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0KaW5kZXggM2I2
ZGUxZWMwZjNmYzVkMTQyZGNlYzZhNWFhNmQzMWNjOGQ4MGU1NS4uNjAxMWZhMmM5YWM3NjczYWM5
MTUxZDVmZjM1MmM3ZTVlNGFlZTIzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1VzZXJBZ2VudElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
VXNlckFnZW50SU9TLm1tCkBAIC0zMCwxMCArMzAsMTIgQEAKIAogI2ltcG9ydCAiRGV2aWNlLmgi
CiAjaW1wb3J0ICJTeXN0ZW1WZXJzaW9uLmgiCi0jaW1wb3J0IDxwYWwvaW9zL1VJS2l0U29mdExp
bmsuaD4KICNpbXBvcnQgPHBhbC9zcGkvaW9zL01vYmlsZUdlc3RhbHRTUEkuaD4KICNpbXBvcnQg
PHBhbC9zcGkvaW9zL1VJS2l0U1BJLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1w
b3J0IDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4KKworI2ltcG9ydCA8cGFsL2lvcy9VSUtpdFNvZnRM
aW5rLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTksMTIgKzYxLDEyIEBAIFN0cmlu
ZyBvc05hbWVGb3JVc2VyQWdlbnQoKQogICAgIHJldHVybiAiaVBob25lIE9TIjsKIH0KIAotc3Rh
dGljIGlubGluZSBTdHJpbmcgZGV2aWNlTmFtZUZvclVzZXJBZ2VudCgpCitzdGF0aWMgU3RyaW5n
VmlldyBkZXZpY2VOYW1lRm9yVXNlckFnZW50KCkKIHsKICAgICBpZiAoaXNDbGFzc2ljKCkpIHsK
ICAgICAgICAgaWYgKGlzQ2xhc3NpY1BhZCgpKQotICAgICAgICAgICAgcmV0dXJuICJpUGFkIl9z
OwotICAgICAgICByZXR1cm4gImlQaG9uZSJfczsKKyAgICAgICAgICAgIHJldHVybiAiaVBhZCI7
CisgICAgICAgIHJldHVybiAiaVBob25lIjsKICAgICB9CiAKICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8U3RyaW5nPiBuYW1lID0gW10gewpAQCAtNzYsMjkgKzc4LDIxIEBAIHN0YXRpYyBpbmxp
bmUgU3RyaW5nIGRldmljZU5hbWVGb3JVc2VyQWdlbnQoKQogI2VuZGlmCiAgICAgICAgIHJldHVy
biBuYW1lOwogICAgIH0oKTsKLSAgICByZXR1cm4gbmFtZTsKKyAgICByZXR1cm4gbmFtZS5nZXQo
KTsKIH0KIAogU3RyaW5nIHN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZShjb25z
dCBTdHJpbmcmIGFwcGxpY2F0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnRPU1ZlcnNp
b24sIFVzZXJBZ2VudFR5cGUgdHlwZSkKIHsKLSAgICBpZiAodHlwZSA9PSBVc2VyQWdlbnRUeXBl
OjpEZXNrdG9wKSB7Ci0gICAgICAgIFN0cmluZyBhcHBOYW1lU3VmZml4ID0gYXBwbGljYXRpb25O
YW1lLmlzRW1wdHkoKSA/ICIiIDogbWFrZVN0cmluZygiICIsIGFwcGxpY2F0aW9uTmFtZSk7Ci0g
ICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBJbnRlbCBN
YWMgT1MgWCAxMF8xNV82KSBBcHBsZVdlYktpdC82MDUuMS4xNSAoS0hUTUwsIGxpa2UgR2Vja28p
IiwgYXBwTmFtZVN1ZmZpeCk7Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBkZXBy
ZWNhdGUgYW5kIGV2ZW50dWFsbHkgcmVtb3ZlIHRoaXMgb2Jzb2xldGUgVUEgb3ZlcnJpZGU7Ci0g
ICAgLy8gc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc5Mjcg
Zm9yIGRldGFpbHMuCi0gICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoZXJlIGlzIGEgdXNlciBhZ2Vu
dCBvdmVycmlkZSBmb3IgYWxsIFdlYktpdCBjbGllbnRzLgotICAgIGF1dG8gb3ZlcnJpZGUgPSBh
ZG9wdENGKENGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWUoQ0ZTVFIoIlVzZXJBZ2VudCIpLCBDRlNU
UigiY29tLmFwcGxlLldlYkZvdW5kYXRpb24iKSkpOwotICAgIGlmIChvdmVycmlkZSkgewotICAg
ICAgICBpZiAoQ0ZHZXRUeXBlSUQob3ZlcnJpZGUuZ2V0KCkpID09IENGU3RyaW5nR2V0VHlwZUlE
KCkpCi0gICAgICAgICAgICByZXR1cm4gKF9fYnJpZGdlIE5TU3RyaW5nICopb3ZlcnJpZGUuZ2V0
KCk7Ci0gICAgfQorICAgIGF1dG8gc2VwYXJhdG9yID0gYXBwbGljYXRpb25OYW1lLmlzRW1wdHko
KSA/ICIiIDogIiAiOworICAgIGlmICh0eXBlID09IFVzZXJBZ2VudFR5cGU6OkRlc2t0b3ApCisg
ICAgICAgIHJldHVybiBtYWtlU3RyaW5nKCJNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBJbnRlbCBN
YWMgT1MgWCAxMF8xNV82KSBBcHBsZVdlYktpdC82MDUuMS4xNSAoS0hUTUwsIGxpa2UgR2Vja28p
Iiwgc2VwYXJhdG9yLCBhcHBsaWNhdGlvbk5hbWUpOwogCi0gICAgU3RyaW5nIG9zVmVyc2lvbiA9
IHVzZXJBZ2VudE9TVmVyc2lvbi5pc0VtcHR5KCkgID8gc3lzdGVtTWFya2V0aW5nVmVyc2lvbkZv
clVzZXJBZ2VudFN0cmluZygpIDogdXNlckFnZW50T1NWZXJzaW9uOwotICAgIFN0cmluZyBhcHBO
YW1lU3VmZml4ID0gYXBwbGljYXRpb25OYW1lLmlzRW1wdHkoKSA/ICIiIDogbWFrZVN0cmluZygi
ICIsIGFwcGxpY2F0aW9uTmFtZSk7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBkZXByZWNhdGUg
YW5kIHJlbW92ZSB0aGlzIG92ZXJyaWRlOyBzZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNzkyNyBmb3IgZGV0YWlscy4KKyAgICBpZiAoYXV0byBvdmVycmlkZSA9
IGR5bmFtaWNfY2ZfY2FzdDxDRlN0cmluZ1JlZj4oYWRvcHRDRihDRlByZWZlcmVuY2VzQ29weUFw
cFZhbHVlKENGU1RSKCJVc2VyQWdlbnQiKSwgQ0ZTVFIoImNvbS5hcHBsZS5XZWJGb3VuZGF0aW9u
IikpKSkpCisgICAgICAgIHJldHVybiBvdmVycmlkZS5nZXQoKTsKIAotICAgIHJldHVybiBtYWtl
U3RyaW5nKCJNb3ppbGxhLzUuMCAoIiwgZGV2aWNlTmFtZUZvclVzZXJBZ2VudCgpLCAiOyBDUFUg
Iiwgb3NOYW1lRm9yVXNlckFnZW50KCksICIgIiwgb3NWZXJzaW9uLCAiIGxpa2UgTWFjIE9TIFgp
IEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykiLCBhcHBOYW1lU3VmZml4
KTsKKyAgICBhdXRvIG9zVmVyc2lvbiA9IHVzZXJBZ2VudE9TVmVyc2lvbi5pc0VtcHR5KCkgPyBz
eXN0ZW1NYXJrZXRpbmdWZXJzaW9uRm9yVXNlckFnZW50U3RyaW5nKCkgOiB1c2VyQWdlbnRPU1Zl
cnNpb247CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoIk1vemlsbGEvNS4wICgiLCBkZXZpY2VOYW1l
Rm9yVXNlckFnZW50KCksICI7IENQVSAiLCBvc05hbWVGb3JVc2VyQWdlbnQoKSwgIiAiLCBvc1Zl
cnNpb24sICIgbGlrZSBNYWMgT1MgWCkgQXBwbGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtl
IEdlY2tvKSIsIHNlcGFyYXRvciwgYXBwbGljYXRpb25OYW1lKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL21hYy9XaW5kb3dEaXNwbGF5Q2FwdHVyZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2luZG93RGlzcGxheUNhcHR1cmVyTWFjLm1tCmluZGV4IGYw
MmNlOGZkZjBmMGM1OGY0MDcwZDRiNGI3ODFlZGI1ZjFlYzIxZGIuLmIyZTY0NzM5MjRhZmVmOTQ5
YmM5OThjNjg4NDc2NmExOWE5ZWNhZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9XaW5kb3dEaXNwbGF5Q2FwdHVyZXJNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dpbmRvd0Rpc3BsYXlDYXB0dXJl
ck1hYy5tbQpAQCAtNzEsOCArNzEsNyBAQCBzdGF0aWMgYm9vbCBhbnlPZkNHV2luZG93KGNvbnN0
IEZ1bmN0aW9uPGJvb2woQ0ZEaWN0aW9uYXJ5UmVmIGluZm8sIHVuc2lnbmVkIGlkLAogICAgICAg
ICBpZiAod2luZG93TGF5ZXIpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBhdXRv
IG9uU2NyZWVuID0gY2hlY2tlZF9jZl9jYXN0PENGQm9vbGVhblJlZj4oQ0ZEaWN0aW9uYXJ5R2V0
VmFsdWUod2luZG93SW5mbywga0NHV2luZG93SXNPbnNjcmVlbikpOwotICAgICAgICBpZiAoIUNG
Qm9vbGVhbkdldFZhbHVlKG9uU2NyZWVuKSkKKyAgICAgICAgaWYgKENGRGljdGlvbmFyeUdldFZh
bHVlKHdpbmRvd0luZm8sIGtDR1dpbmRvd0lzT25zY3JlZW4pID09IGtDRkJvb2xlYW5GYWxzZSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGF1dG8gd2luZG93SURSZWYgPSBjaGVj
a2VkX2NmX2Nhc3Q8Q0ZOdW1iZXJSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKHdpbmRvd0luZm8s
IGtDR1dpbmRvd051bWJlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUHJveHlTZXJ2ZXJDRk5ldC5jcHAKaW5kZXggNjRjZmM5YmVjZGIyNmNiNTNk
MGUxNDEwNGVjNGUxZGZjNjliMmY0MC4uNTkxYzMzMGQ3YjkxZGIwNGJhZWYyOGZlZWMwMTEyYTkz
MDA2MWNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Q
cm94eVNlcnZlckNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Byb3h5U2VydmVyQ0ZOZXQuY3BwCkBAIC03Niw4ICs3Niw4IEBAIHN0YXRpYyB2b2lkIHBy
b2Nlc3NQcm94eVNlcnZlcnMoVmVjdG9yPFByb3h5U2VydmVyPiYgcHJveHlTZXJ2ZXJzLCBDRkFy
cmF5UmVmIHByCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgcmVzdHJ1Y3R1cmUgdG8gYWxsb3cgdGhpcyB0byBoYXBwZW4gYXN5bmNo
cm9ub3VzbHkuCi0gICAgICAgICAgICBDRlVSTFJlZiBzY3JpcHRVUkwgPSBzdGF0aWNfY2FzdDxD
RlVSTFJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJveHlEaWN0aW9uYXJ5LCBrQ0ZQcm94eUF1
dG9Db25maWd1cmF0aW9uVVJMS2V5KSk7Ci0gICAgICAgICAgICBpZiAoIXNjcmlwdFVSTCB8fCBD
RkdldFR5cGVJRChzY3JpcHRVUkwpICE9IENGVVJMR2V0VHlwZUlEKCkpCisgICAgICAgICAgICBh
dXRvIHNjcmlwdFVSTCA9IGR5bmFtaWNfY2ZfY2FzdDxDRlVSTFJlZj4oQ0ZEaWN0aW9uYXJ5R2V0
VmFsdWUocHJveHlEaWN0aW9uYXJ5LCBrQ0ZQcm94eUF1dG9Db25maWd1cmF0aW9uVVJMS2V5KSk7
CisgICAgICAgICAgICBpZiAoIXNjcmlwdFVSTCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
IAogICAgICAgICAgICAgQ0ZTdHJlYW1DbGllbnRDb250ZXh0IGNvbnRleHQgPSB7IDAsICh2b2lk
KikmcHJveHlTZXJ2ZXJzLCAwLCAwLCAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCmluZGV4IGVl
MWFkZDAzNzRjM2Q2MTk0MjVhYjU3MTI1NzM3ZDJlNGVlNjhhMzMuLjEzYWY5MTZjZWVmOTc5OGQx
NGMyNTIxZTJmODMxNmQxOTMzODdmNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCkBAIC00OCw4
ICs0OCw2IEBACiAjaW5jbHVkZSA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KICNlbmRpZgog
Ci1XVEZfREVDTEFSRV9DRl9UWVBFX1RSQUlUKENGVVJMKTsKLQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAvLyBGSVhNRTogTWFrZSB0aGlzIGEgTmV0d29ya2luZ0NvbnRleHQgcHJvcGVydHkuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVh
bUhhbmRsZUltcGxDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAKaW5kZXggNTViOWYxZWQ0YTBkMzI1YTZi
MTZhMTE0Mzg5ZjM5YzdkZWQzNmNhNi4uODUwZmNhMTdhMjFkOTcxYTllMjAyNzlhMjMxMmUyZGEy
NzkwMDQyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9T
b2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcApAQCAtMjQ5LDEy
ICsyNDksOSBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNob29zZVByb3h5RnJvbUFy
cmF5KENGQXJyYXlSZWYgcHJveHlBcnJheSkKIAogICAgIC8vIFBBQyBpcyBhbHdheXMgdGhlIGZp
cnN0IGVudHJ5LCBpZiBwcmVzZW50LgogICAgIGlmIChwcm94eUFycmF5Q291bnQpIHsKLSAgICAg
ICAgQ0ZEaWN0aW9uYXJ5UmVmIHByb3h5SW5mbyA9IHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJl
Zj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChwcm94eUFycmF5LCAwKSk7Ci0gICAgICAgIENGVHlw
ZVJlZiBwcm94eVR5cGUgPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm94eUluZm8sIGtDRlByb3h5
VHlwZUtleSk7Ci0gICAgICAgIGlmIChwcm94eVR5cGUgJiYgQ0ZHZXRUeXBlSUQocHJveHlUeXBl
KSA9PSBDRlN0cmluZ0dldFR5cGVJRCgpKSB7Ci0gICAgICAgICAgICBpZiAoQ0ZFcXVhbChwcm94
eVR5cGUsIGtDRlByb3h5VHlwZUF1dG9Db25maWd1cmF0aW9uVVJMKSkgewotICAgICAgICAgICAg
ICAgIENGVHlwZVJlZiBwYWNGaWxlVVJMID0gQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJveHlJbmZv
LCBrQ0ZQcm94eUF1dG9Db25maWd1cmF0aW9uVVJMS2V5KTsKLSAgICAgICAgICAgICAgICBpZiAo
cGFjRmlsZVVSTCAmJiBDRkdldFR5cGVJRChwYWNGaWxlVVJMKSA9PSBDRlVSTEdldFR5cGVJRCgp
KSB7CisgICAgICAgIGlmIChhdXRvIHByb3h5SW5mbyA9IGR5bmFtaWNfY2ZfY2FzdDxDRkRpY3Rp
b25hcnlSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgocHJveHlBcnJheSwgMCkpKSB7CisgICAg
ICAgICAgICBpZiAoYXV0byBwcm94eVR5cGUgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZTdHJpbmdSZWY+
KENGRGljdGlvbmFyeUdldFZhbHVlKHByb3h5SW5mbywga0NGUHJveHlUeXBlS2V5KSk7IHByb3h5
VHlwZSAmJiBDRkVxdWFsKHByb3h5VHlwZSwga0NGUHJveHlUeXBlQXV0b0NvbmZpZ3VyYXRpb25V
UkwpKSB7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8gcGFjRmlsZVVSTCA9IGR5bmFtaWNfY2Zf
Y2FzdDxDRlVSTFJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJveHlJbmZvLCBrQ0ZQcm94eUF1
dG9Db25maWd1cmF0aW9uVVJMS2V5KSkpIHsKICAgICAgICAgICAgICAgICAgICAgZXhlY3V0ZVBB
Q0ZpbGVVUkwoc3RhdGljX2Nhc3Q8Q0ZVUkxSZWY+KHBhY0ZpbGVVUkwpKTsKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KQEAgLTI2MiwyMCArMjU5LDIwIEBA
IHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y2hvb3NlUHJveHlGcm9tQXJyYXkoQ0ZBcnJh
eVJlZiBwcm94eUFycmF5KQogICAgICAgICB9CiAgICAgfQogCi0gICAgQ0ZEaWN0aW9uYXJ5UmVm
IGNob3NlblByb3h5ID0gMDsKKyAgICBDRkRpY3Rpb25hcnlSZWYgY2hvc2VuUHJveHkgPSBudWxs
cHRyOwogICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IHByb3h5QXJyYXlDb3VudDsgKytpKSB7
Ci0gICAgICAgIENGRGljdGlvbmFyeVJlZiBwcm94eUluZm8gPSBzdGF0aWNfY2FzdDxDRkRpY3Rp
b25hcnlSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgocHJveHlBcnJheSwgaSkpOwotICAgICAg
ICBDRlR5cGVSZWYgcHJveHlUeXBlID0gQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJveHlJbmZvLCBr
Q0ZQcm94eVR5cGVLZXkpOwotICAgICAgICBpZiAocHJveHlUeXBlICYmIENGR2V0VHlwZUlEKHBy
b3h5VHlwZSkgPT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkgewotICAgICAgICAgICAgaWYgKENGRXF1
YWwocHJveHlUeXBlLCBrQ0ZQcm94eVR5cGVTT0NLUykpIHsKLSAgICAgICAgICAgICAgICBtX2Nv
bm5lY3Rpb25UeXBlID0gU09DS1NQcm94eTsKLSAgICAgICAgICAgICAgICBjaG9zZW5Qcm94eSA9
IHByb3h5SW5mbzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGlmIChDRkVxdWFsKHByb3h5VHlwZSwga0NGUHJveHlUeXBlSFRUUFMpKSB7Ci0gICAg
ICAgICAgICAgICAgbV9jb25uZWN0aW9uVHlwZSA9IENPTk5FQ1RQcm94eTsKLSAgICAgICAgICAg
ICAgICBjaG9zZW5Qcm94eSA9IHByb3h5SW5mbzsKLSAgICAgICAgICAgICAgICAvLyBLZWVwIGxv
b2tpbmcgZm9yIHByb3hpZXMsIGFzIGEgU09DS1Mgb25lIGlzIHByZWZlcmFibGUuCisgICAgICAg
IGlmIChhdXRvIHByb3h5SW5mbyA9IGR5bmFtaWNfY2ZfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENG
QXJyYXlHZXRWYWx1ZUF0SW5kZXgocHJveHlBcnJheSwgaSkpKSB7CisgICAgICAgICAgICBpZiAo
YXV0byBwcm94eVR5cGUgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFy
eUdldFZhbHVlKHByb3h5SW5mbywga0NGUHJveHlUeXBlS2V5KSkpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoQ0ZFcXVhbChwcm94eVR5cGUsIGtDRlByb3h5VHlwZVNPQ0tTKSkgeworICAgICAgICAg
ICAgICAgICAgICBtX2Nvbm5lY3Rpb25UeXBlID0gU09DS1NQcm94eTsKKyAgICAgICAgICAgICAg
ICAgICAgY2hvc2VuUHJveHkgPSBwcm94eUluZm87CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoQ0ZFcXVhbChwcm94eVR5
cGUsIGtDRlByb3h5VHlwZUhUVFBTKSkgeworICAgICAgICAgICAgICAgICAgICBtX2Nvbm5lY3Rp
b25UeXBlID0gQ09OTkVDVFByb3h5OworICAgICAgICAgICAgICAgICAgICBjaG9zZW5Qcm94eSA9
IHByb3h5SW5mbzsKKyAgICAgICAgICAgICAgICAgICAgLy8gS2VlcCBsb29raW5nIGZvciBwcm94
aWVzLCBhcyBhIFNPQ0tTIG9uZSBpcyBwcmVmZXJhYmxlLgorICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTI4NCwxMiArMjgxLDEyIEBAIHZvaWQg
U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y2hvb3NlUHJveHlGcm9tQXJyYXkoQ0ZBcnJheVJlZiBw
cm94eUFycmF5KQogICAgICAgICBBU1NFUlQobV9jb25uZWN0aW9uVHlwZSAhPSBVbmtub3duKTsK
ICAgICAgICAgQVNTRVJUKG1fY29ubmVjdGlvblR5cGUgIT0gRGlyZWN0KTsKIAotICAgICAgICBD
RlR5cGVSZWYgcHJveHlIb3N0ID0gQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoY2hvc2VuUHJveHksIGtD
RlByb3h5SG9zdE5hbWVLZXkpOwotICAgICAgICBDRlR5cGVSZWYgcHJveHlQb3J0ID0gQ0ZEaWN0
aW9uYXJ5R2V0VmFsdWUoY2hvc2VuUHJveHksIGtDRlByb3h5UG9ydE51bWJlcktleSk7CisgICAg
ICAgIGF1dG8gcHJveHlIb3N0ID0gZHluYW1pY19jZl9jYXN0PENGU3RyaW5nUmVmPihDRkRpY3Rp
b25hcnlHZXRWYWx1ZShjaG9zZW5Qcm94eSwga0NGUHJveHlIb3N0TmFtZUtleSkpOworICAgICAg
ICBhdXRvIHByb3h5UG9ydCA9IGR5bmFtaWNfY2ZfY2FzdDxDRk51bWJlclJlZj4oQ0ZEaWN0aW9u
YXJ5R2V0VmFsdWUoY2hvc2VuUHJveHksIGtDRlByb3h5UG9ydE51bWJlcktleSkpOwogCi0gICAg
ICAgIGlmIChwcm94eUhvc3QgJiYgQ0ZHZXRUeXBlSUQocHJveHlIb3N0KSA9PSBDRlN0cmluZ0dl
dFR5cGVJRCgpICYmIHByb3h5UG9ydCAmJiBDRkdldFR5cGVJRChwcm94eVBvcnQpID09IENGTnVt
YmVyR2V0VHlwZUlEKCkpIHsKLSAgICAgICAgICAgIG1fcHJveHlIb3N0ID0gc3RhdGljX2Nhc3Q8
Q0ZTdHJpbmdSZWY+KHByb3h5SG9zdCk7Ci0gICAgICAgICAgICBtX3Byb3h5UG9ydCA9IHN0YXRp
Y19jYXN0PENGTnVtYmVyUmVmPihwcm94eVBvcnQpOworICAgICAgICBpZiAocHJveHlIb3N0ICYm
IHByb3h5UG9ydCkgeworICAgICAgICAgICAgbV9wcm94eUhvc3QgPSBwcm94eUhvc3Q7CisgICAg
ICAgICAgICBtX3Byb3h5UG9ydCA9IHByb3h5UG9ydDsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvaW9zL1dlYkNvcmVVUkxSZXNwb25zZUlPUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9pb3MvV2ViQ29yZVVSTFJlc3BvbnNlSU9TLmgKaW5kZXggOGQzYzdjYjFmYjI1YjM3
OGExNDgxNjk1ZjczMjE0YWJiZTZkZjMwZC4uZjMwMjg3ODAyYWUyNDA2OWY1YmEyMjgyMzUwNjk5
ZTkwMzYyMDhhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9p
b3MvV2ViQ29yZVVSTFJlc3BvbnNlSU9TLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9pb3MvV2ViQ29yZVVSTFJlc3BvbnNlSU9TLmgKQEAgLTMwLDE4ICszMCwxNSBAQAog
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAotI2lmZGVmIF9fT0JKQ19fCi0jaW5jbHVkZSAi
V2ViQ29yZVVSTFJlc3BvbnNlLmgiCi0jZW5kaWYKLQogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0
cnkuaCIKKyNpbmNsdWRlICJXZWJDb3JlVVJMUmVzcG9uc2UuaCIKICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIFdlYkNvcmUgewotCiAjaWYgVVNFKFFVSUNLX0xP
T0spCiAgICAgCi1pbmxpbmUgYm9vbCBzaG91bGRVc2VRdWlja0xvb2tGb3JNSU1FVHlwZShjb25z
dCBXVEY6OlN0cmluZyYgbWltZVR5cGUpCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2lubGluZSBi
b29sIHNob3VsZFVzZVF1aWNrTG9va0Zvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUp
CiB7CiAgICAgaWYgKCghTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWROb25JbWFnZU1JTUVU
eXBlKG1pbWVUeXBlKSAgICAgICAvLyBpZ25vcmUgc3VwcG9ydGVkIG5vbi1pbWFnZSBNSU1FIHR5
cGVzCiAgICAgICAgICAmJiAhTUlNRVR5cGVSZWdpc3RyeTo6aXNTdXBwb3J0ZWRJbWFnZU1JTUVU
eXBlKG1pbWVUeXBlKSAgICAgICAvLyBpZ25vcmUgc3VwcG9ydGVkIGltYWdlIE1JTUUgdHlwZXMK
QEAgLTU3LDggKzU0LDggQEAgaW5saW5lIGJvb2wgc2hvdWxkVXNlUXVpY2tMb29rRm9yTUlNRVR5
cGUoY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
I2VuZGlmIC8vIFVTRShRVUlDS19MT09LKQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKKyNl
bmRpZiAvLyBVU0UoUVVJQ0tfTE9PSykKKwogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9XZWJDb3Jl
VVJMUmVzcG9uc2VJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9X
ZWJDb3JlVVJMUmVzcG9uc2VJT1MubW0KaW5kZXggMzU3NzQwZjIyNTZmOTg5MGJhNzFhMzYzOGVm
NTcwN2U3MWE5ZDliMS4uYzlkNzc5Mzc2NGQ2NGYwZjQwMGM3NzhmOGUzNDUwOTIwYTc2ZDdlMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvV2ViQ29yZVVS
TFJlc3BvbnNlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9z
L1dlYkNvcmVVUkxSZXNwb25zZUlPUy5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA5LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMiw3OSArMzIsNDEgQEAKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogCiAjaW1wb3J0ICJRdWlja0xvb2suaCIKLSNpbXBvcnQgIlVUSVV0aWxpdGll
cy5oIgogI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNlcy5oPgor
CiAjaW1wb3J0IDxwYWwvaW9zL1F1aWNrTG9va1NvZnRMaW5rLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotLy8gPHJkYXI6Ly9wcm9ibGVtLzQ2MzMyODkzPiBSZWdpc3RlciAubWpzIGZpbGVz
IGFzIHdoYXRldmVyIFVUSSBpbmRpY2F0ZXMgSmF2YVNjcmlwdAotc3RhdGljIFJldGFpblB0cjxD
RkRpY3Rpb25hcnlSZWY+IGNyZWF0ZUV4dGVuc2lvblRvTUlNRVR5cGVNYXAoKQordm9pZCBhZGp1
c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KENGVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UsIGJvb2wgaXNN
YWluUmVzb3VyY2VMb2FkKQogewotICAgIENGU3RyaW5nUmVmIGtleXNbXSA9IHsKLSAgICAgICAg
Q0ZTVFIoIm1qcyIpCi0gICAgfTsKLQotICAgIENGU3RyaW5nUmVmIHZhbHVlc1tdID0gewotICAg
ICAgICBDRlNUUigidGV4dC9qYXZhc2NyaXB0IikKLSAgICB9OwotCi0gICAgQVNTRVJUKHNpemVv
ZihrZXlzKSA9PSBzaXplb2YodmFsdWVzKSk7Ci0gICAgcmV0dXJuIGFkb3B0Q0YoQ0ZEaWN0aW9u
YXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCB2b2lkKiopJmtleXMsIChjb25z
dCB2b2lkKiopJnZhbHVlcywgc2l6ZW9mKGtleXMpIC8gc2l6ZW9mKENGU3RyaW5nUmVmKSwgJmtD
RlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxC
YWNrcykpOwotfQotCi12b2lkIGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoQ0ZVUkxSZXNwb25z
ZVJlZiBjZlJlc3BvbnNlLCBib29sIGlzTWFpblJlc291cmNlTG9hZCkKLXsKLSAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IG1pbWVUeXBlID0gQ0ZVUkxSZXNwb25zZUdldE1JTUVUeXBlKGNmUmVz
cG9uc2UpOwotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXBkYXRlZE1JTUVUeXBlID0gbWlt
ZVR5cGU7Ci0gICAgaWYgKCF1cGRhdGVkTUlNRVR5cGUpCi0gICAgICAgIHVwZGF0ZWRNSU1FVHlw
ZSA9IGRlZmF1bHRNSU1FVHlwZSgpLmNyZWF0ZUNGU3RyaW5nKCk7Ci0KLSAgICAvLyA8cmRhcjov
L3Byb2JsZW0vNDYzMzI4OTM+IFJlZ2lzdGVyIC5tanMgZmlsZXMgYXMgd2hhdGV2ZXIgVVRJIGlu
ZGljYXRlcyBKYXZhU2NyaXB0Ci0gICAgaWYgKCFtaW1lVHlwZSkgewotICAgICAgICBhdXRvIHVy
bCA9IENGVVJMUmVzcG9uc2VHZXRVUkwoY2ZSZXNwb25zZSk7Ci0gICAgICAgIGlmIChbKF9fYnJp
ZGdlIE5TVVJMICopdXJsIGlzRmlsZVVSTF0pIHsKLSAgICAgICAgICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gZXh0ZW5zaW9uID0gYWRvcHRDRihDRlVSTENvcHlQYXRoRXh0ZW5zaW9uKHVybCkp
OwotICAgICAgICAgICAgaWYgKGV4dGVuc2lvbikgewotICAgICAgICAgICAgICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPj4gZXh0ZW5zaW9uTWFwID0g
Y3JlYXRlRXh0ZW5zaW9uVG9NSU1FVHlwZU1hcCgpOwotICAgICAgICAgICAgICAgIGF1dG8gbXV0
YWJsZUV4dGVuc2lvbiA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxv
Y2F0b3JEZWZhdWx0LCAwLCBleHRlbnNpb24uZ2V0KCkpKTsKLSAgICAgICAgICAgICAgICBDRlN0
cmluZ0xvd2VyY2FzZShtdXRhYmxlRXh0ZW5zaW9uLmdldCgpLCBOVUxMKTsKLSAgICAgICAgICAg
ICAgICBleHRlbnNpb24gPSBXVEZNb3ZlKG11dGFibGVFeHRlbnNpb24pOwotICAgICAgICAgICAg
ICAgIGlmIChhdXRvIG5ld01JTUVUeXBlID0gKENGU3RyaW5nUmVmKUNGRGljdGlvbmFyeUdldFZh
bHVlKGV4dGVuc2lvbk1hcC5nZXQoKS5nZXQoKSwgZXh0ZW5zaW9uLmdldCgpKSkKLSAgICAgICAg
ICAgICAgICAgICAgdXBkYXRlZE1JTUVUeXBlID0gbmV3TUlNRVR5cGU7Ci0gICAgICAgICAgICB9
CisgICAgYXV0byB0eXBlID0gQ0ZVUkxSZXNwb25zZUdldE1JTUVUeXBlKHJlc3BvbnNlKTsKKyAg
ICBpZiAoIXR5cGUpIHsKKyAgICAgICAgLy8gRklYTUU6IDxyZGFyOi8vcHJvYmxlbS80NjMzMjg5
Mz4gaXMgZml4ZWQsIGJ1dCBmb3Igc29tZSByZWFzb24sIHRoaXMgc3BlY2lhbCBjYXNlIGlzIHN0
aWxsIG5lZWRlZDsgc2hvdWxkIHJlc29sdmUgdGhhdCBpc3N1ZSBhbmQgcmVtb3ZlIHRoaXMuCisg
ICAgICAgIGlmIChDRlN0cmluZ0NvbXBhcmUoZmlsZVBhdGhFeHRlbnNpb24ocmVzcG9uc2UpLmdl
dCgpLCBDRlNUUigibWpzIiksIGtDRkNvbXBhcmVDYXNlSW5zZW5zaXRpdmUpID09IGtDRkNvbXBh
cmVFcXVhbFRvKSB7CisgICAgICAgICAgICBDRlVSTFJlc3BvbnNlU2V0TUlNRVR5cGUocmVzcG9u
c2UsIENGU1RSKCJ0ZXh0L2phdmFzY3JpcHQiKSk7CisgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KKyAgICAgICAgQ0ZVUkxSZXNwb25zZVNldE1JTUVUeXBlKHJlc3BvbnNlLCBDRlNUUigi
YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIikpOworICAgICAgICByZXR1cm47CiAgICAgfQogCi0j
aWYgVVNFKFFVSUNLX0xPT0spCi0gICAgLy8gV2UgbXVzdCBlbnN1cmUgdGhhdCB0aGUgTUlNRSB0
eXBlIGlzIGNvcnJlY3QsIHNvIHRoYXQgUXVpY2tMb29rJ3Mgd2ViIHBsdWdpbiBpcyBjYWxsZWQg
d2hlbiBuZWVkZWQuCi0gICAgLy8gV2UgZmlsdGVyIHRoZSBiYXNpYyBNSU1FIHR5cGVzIHNvIHRo
YXQgd2UgZG9uJ3QgZG8gdW5uZWNlc3Nhcnkgd29yayBpbiBzdGFuZGFyZCBicm93c2luZyBzaXR1
YXRpb25zLgotICAgIGlmIChpc01haW5SZXNvdXJjZUxvYWQgJiYgc2hvdWxkVXNlUXVpY2tMb29r
Rm9yTUlNRVR5cGUoKE5TU3RyaW5nICopdXBkYXRlZE1JTUVUeXBlLmdldCgpKSkgewotICAgICAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHN1Z2dlc3RlZEZpbGVuYW1lID0gYWRvcHRDRihDRlVS
TFJlc3BvbnNlQ29weVN1Z2dlc3RlZEZpbGVuYW1lKGNmUmVzcG9uc2UpKTsKLSAgICAgICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBxdWlja0xvb2tNSU1FVHlwZSA9IGFkb3B0Q0YoKENGU3RyaW5n
UmVmKVBBTDo6c29mdExpbmtfUXVpY2tMb29rX1FMVHlwZUNvcHlCZXN0TWltZVR5cGVGb3JGaWxl
TmFtZUFuZE1pbWVUeXBlKChOU1N0cmluZyAqKXN1Z2dlc3RlZEZpbGVuYW1lLmdldCgpLCAoTlNT
dHJpbmcgKiltaW1lVHlwZS5nZXQoKSkpOwotICAgICAgICBpZiAoIXF1aWNrTG9va01JTUVUeXBl
KSB7Ci0gICAgICAgICAgICBhdXRvIHVybCA9IENGVVJMUmVzcG9uc2VHZXRVUkwoY2ZSZXNwb25z
ZSk7Ci0gICAgICAgICAgICBpZiAoWyhOU1VSTCAqKXVybCBpc0ZpbGVVUkxdKSB7Ci0gICAgICAg
ICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBleHRlbnNpb24gPSBhZG9wdENGKENGVVJM
Q29weVBhdGhFeHRlbnNpb24odXJsKSk7Ci0gICAgICAgICAgICAgICAgaWYgKGV4dGVuc2lvbikg
ewotQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICAgICAgICAgICAgICAg
ICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1dGkgPSBhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZl
cnJlZElkZW50aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NGaWxlbmFtZUV4dGVuc2lvbiwgZXh0ZW5z
aW9uLmdldCgpLCBudWxscHRyKSk7Ci1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQK
LSAgICAgICAgICAgICAgICAgICAgU3RyaW5nIE1JTUVUeXBlID0gTUlNRVR5cGVGcm9tVVRJVHJl
ZSh1dGkuZ2V0KCkpOwotICAgICAgICAgICAgICAgICAgICBpZiAoIU1JTUVUeXBlLmlzRW1wdHko
KSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHF1aWNrTG9va01JTUVUeXBlID0gTUlNRVR5cGUu
Y3JlYXRlQ0ZTdHJpbmcoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLQotICAgICAgICBpZiAocXVpY2tMb29rTUlNRVR5cGUpCi0gICAgICAgICAgICB1cGRh
dGVkTUlNRVR5cGUgPSBxdWlja0xvb2tNSU1FVHlwZTsKLSAgICB9Ci0jZWxzZQorI2lmICFVU0Uo
UVVJQ0tfTE9PSykKICAgICBVTlVTRURfUEFSQU0oaXNNYWluUmVzb3VyY2VMb2FkKTsKKyNlbHNl
CisgICAgLy8gRW5zdXJlIHRoYXQgdGhlIE1JTUUgdHlwZSBpcyBjb3JyZWN0IHNvIHRoYXQgUXVp
Y2tMb29rJ3Mgd2ViIHBsdWctaW4gaXMgY2FsbGVkIHdoZW4gbmVlZGVkLgorICAgIC8vIFRoZSBz
aG91bGRVc2VRdWlja0xvb2tGb3JNSU1FVHlwZSBmdW5jdGlvbiBmaWx0ZXJzIG91dCB0aGUgY29t
bW9uIE1JTUUgdHlwZXMgc28gd2UgZG9uJ3QgZG8gdW5uZWNlc3Nhcnkgd29yayBpbiB0aG9zZSBj
YXNlcy4KKyAgICBpZiAoaXNNYWluUmVzb3VyY2VMb2FkICYmIHNob3VsZFVzZVF1aWNrTG9va0Zv
ck1JTUVUeXBlKChfX2JyaWRnZSBOU1N0cmluZyAqKXR5cGUpKSB7CisgICAgICAgIFJldGFpblB0
cjxDRlN0cmluZ1JlZj4gdXBkYXRlZFR5cGU7CisgICAgICAgIGF1dG8gc3VnZ2VzdGVkRmlsZW5h
bWUgPSBhZG9wdENGKENGVVJMUmVzcG9uc2VDb3B5U3VnZ2VzdGVkRmlsZW5hbWUocmVzcG9uc2Up
KTsKKyAgICAgICAgaWYgKGF1dG8gcXVpY2tMb29rVHlwZSA9IGFkb3B0TlMoUEFMOjpzb2Z0TGlu
a19RdWlja0xvb2tfUUxUeXBlQ29weUJlc3RNaW1lVHlwZUZvckZpbGVOYW1lQW5kTWltZVR5cGUo
KF9fYnJpZGdlIE5TU3RyaW5nICopc3VnZ2VzdGVkRmlsZW5hbWUuZ2V0KCksIChfX2JyaWRnZSBO
U1N0cmluZyAqKXR5cGUpKSkKKyAgICAgICAgICAgIHVwZGF0ZWRUeXBlID0gKF9fYnJpZGdlIENG
U3RyaW5nUmVmKXF1aWNrTG9va1R5cGUuZ2V0KCk7CisgICAgICAgIGVsc2UgaWYgKGF1dG8gZXh0
ZW5zaW9uID0gZmlsZVBhdGhFeHRlbnNpb24ocmVzcG9uc2UpKQorICAgICAgICAgICAgdXBkYXRl
ZFR5cGUgPSBwcmVmZXJyZWRNSU1FVHlwZUZvckZpbGVFeHRlbnNpb25Gcm9tVVRUeXBlKGV4dGVu
c2lvbi5nZXQoKSk7CisgICAgICAgIGlmICh1cGRhdGVkVHlwZSAmJiAoIXR5cGUgfHwgQ0ZTdHJp
bmdDb21wYXJlKHR5cGUsIHVwZGF0ZWRUeXBlLmdldCgpLCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0
aXZlKSAhPSBrQ0ZDb21wYXJlRXF1YWxUbykpCisgICAgICAgICAgICBDRlVSTFJlc3BvbnNlU2V0
TUlNRVR5cGUocmVzcG9uc2UsIHVwZGF0ZWRUeXBlLmdldCgpKTsKKyAgICB9CiAjZW5kaWYgLy8g
VVNFKFFVSUNLX0xPT0spCi0gICAgaWYgKCFtaW1lVHlwZSB8fCBDRlN0cmluZ0NvbXBhcmUobWlt
ZVR5cGUuZ2V0KCksIHVwZGF0ZWRNSU1FVHlwZS5nZXQoKSwga0NGQ29tcGFyZUNhc2VJbnNlbnNp
dGl2ZSkgIT0ga0NGQ29tcGFyZUVxdWFsVG8pCi0gICAgICAgIENGVVJMUmVzcG9uc2VTZXRNSU1F
VHlwZShjZlJlc3BvbnNlLCB1cGRhdGVkTUlNRVR5cGUuZ2V0KCkpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9OZXR3b3JrU3RhdGVOb3RpZmllck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL21hYy9OZXR3b3JrU3RhdGVOb3RpZmllck1hYy5jcHAKaW5kZXggODZjNzkyOWI4
NzBmNGRlOWMzZTE2MTViMTVhMmZlYjRmNDM5MGQwZS4uZGQ5N2NlYTRkODljZDdkYjAwYjY0NDA0
MDVjMWUwM2VjNzg4ZDI4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvTmV0d29ya1N0YXRlTm90aWZpZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL05ldHdvcmtTdGF0ZU5vdGlmaWVyTWFjLmNwcApAQCAtMjks
MjMgKzI5LDI0IEBACiAjaWYgUExBVEZPUk0oTUFDKQogCiAjaW5jbHVkZSA8U3lzdGVtQ29uZmln
dXJhdGlvbi9TeXN0ZW1Db25maWd1cmF0aW9uLmg+CisjaW5jbHVkZSA8d3RmL2NmL1R5cGVDYXN0
c0NGLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBOZXR3b3JrU3RhdGVOb3RpZmll
cjo6dXBkYXRlU3RhdGVXaXRob3V0Tm90aWZ5aW5nKCkKIHsKICAgICBhdXRvIGtleSA9IGFkb3B0
Q0YoU0NEeW5hbWljU3RvcmVLZXlDcmVhdGVOZXR3b3JrSW50ZXJmYWNlKDAsIGtTQ0R5bmFtaWNT
dG9yZURvbWFpblN0YXRlKSk7Ci0gICAgYXV0byBwcm9wZXJ0eUxpc3QgPSBhZG9wdENGKFNDRHlu
YW1pY1N0b3JlQ29weVZhbHVlKG1fc3RvcmUuZ2V0KCksIGtleS5nZXQoKSkpOwotICAgIGlmICgh
cHJvcGVydHlMaXN0IHx8IENGR2V0VHlwZUlEKHByb3BlcnR5TGlzdC5nZXQoKSkgIT0gQ0ZEaWN0
aW9uYXJ5R2V0VHlwZUlEKCkpCisgICAgYXV0byBwcm9wZXJ0eUxpc3QgPSBkeW5hbWljX2NmX2Nh
c3Q8Q0ZEaWN0aW9uYXJ5UmVmPihhZG9wdENGKFNDRHluYW1pY1N0b3JlQ29weVZhbHVlKG1fc3Rv
cmUuZ2V0KCksIGtleS5nZXQoKSkpKTsKKyAgICBpZiAoIXByb3BlcnR5TGlzdCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgYXV0byBuZXRJbnRlcmZhY2VzID0gQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUo
KENGRGljdGlvbmFyeVJlZilwcm9wZXJ0eUxpc3QuZ2V0KCksIGtTQ0R5bmFtaWNTdG9yZVByb3BO
ZXRJbnRlcmZhY2VzKTsKLSAgICBpZiAoIW5ldEludGVyZmFjZXMgfHwgQ0ZHZXRUeXBlSUQobmV0
SW50ZXJmYWNlcykgIT0gQ0ZBcnJheUdldFR5cGVJRCgpKQorICAgIGF1dG8gbmV0SW50ZXJmYWNl
cyA9IGR5bmFtaWNfY2ZfY2FzdDxDRkFycmF5UmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9w
ZXJ0eUxpc3QuZ2V0KCksIGtTQ0R5bmFtaWNTdG9yZVByb3BOZXRJbnRlcmZhY2VzKSk7CisgICAg
aWYgKCFuZXRJbnRlcmZhY2VzKQogICAgICAgICByZXR1cm47CiAKLSAgICBmb3IgKENGSW5kZXgg
aSA9IDA7IGkgPCBDRkFycmF5R2V0Q291bnQoKENGQXJyYXlSZWYpbmV0SW50ZXJmYWNlcyk7IGkr
KykgewotICAgICAgICBhdXRvIGludGVyZmFjZU5hbWUgPSAoQ0ZTdHJpbmdSZWYpQ0ZBcnJheUdl
dFZhbHVlQXRJbmRleCgoQ0ZBcnJheVJlZiluZXRJbnRlcmZhY2VzLCBpKTsKLSAgICAgICAgaWYg
KENGR2V0VHlwZUlEKGludGVyZmFjZU5hbWUpICE9IENGU3RyaW5nR2V0VHlwZUlEKCkpCisgICAg
Zm9yIChDRkluZGV4IGkgPSAwOyBpIDwgQ0ZBcnJheUdldENvdW50KG5ldEludGVyZmFjZXMpOyBp
KyspIHsKKyAgICAgICAgYXV0byBpbnRlcmZhY2VOYW1lID0gZHluYW1pY19jZl9jYXN0PENGU3Ry
aW5nUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KG5ldEludGVyZmFjZXMsIGkpKTsKKyAgICAg
ICAgaWYgKCFpbnRlcmZhY2VOYW1lKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAg
Ly8gSWdub3JlIHRoZSBsb29wYmFjayBpbnRlcmZhY2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5oCmluZGV4IDVkMTg5NWYzMzVjYTgz
NDE3N2E5MjJhYWVhNDZjYzY3ZjdmMGU1NGUuLjgyNTE3YjdlYjNhOWY4MzQ3ZjQwYTc0NDY4ZTdm
MTEyMjhmMmU3NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1VUSVV0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1VUSVV0aWxpdGllcy5oCkBAIC0zMCw3ICszMCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBNSU1FVHlwZUZyb21VVEkoY29uc3QgU3RyaW5nJik7
Ci1TdHJpbmcgTUlNRVR5cGVGcm9tVVRJVHJlZShjb25zdCBTdHJpbmcmKTsKK1JldGFpblB0cjxD
RlN0cmluZ1JlZj4gbWltZVR5cGVGcm9tVVRJVHJlZShDRlN0cmluZ1JlZik7CiBXRUJDT1JFX0VY
UE9SVCBTdHJpbmcgVVRJRnJvbU1JTUVUeXBlKGNvbnN0IFN0cmluZyYpOwogYm9vbCBpc0RlY2xh
cmVkVVRJKGNvbnN0IFN0cmluZyYpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIFVUSUZyb21UYWco
Y29uc3QgU3RyaW5nJiB0YWdDbGFzcywgY29uc3QgU3RyaW5nJiB0YWcsIGNvbnN0IFN0cmluZyYg
Y29uZm9ybWluZ1RvVVRJKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL1VUSVV0aWxpdGllcy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1VUSVV0aWxpdGllcy5tbQppbmRleCBjZWJiY2E1YjI0Y2JmOGQwYzBlMThmZGIyNDg0
ZTA4MjQ4Y2IzNjAxLi40MjA0YTQxY2RhZDk2ZmRiZTFjY2JiYzFjZGEzODA4MDI4YTE2MTRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRp
ZXMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0
aWVzLm1tCkBAIC00NSw0NCArNDUsMzcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNf
QkVHSU4KIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogfQogCi1TdHJpbmcgTUlN
RVR5cGVGcm9tVVRJVHJlZShjb25zdCBTdHJpbmcmIHV0aSkKK1JldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gbWltZVR5cGVGcm9tVVRJVHJlZShDRlN0cmluZ1JlZiB1dGkpCiB7Ci0gICAgYXV0byB1dGlD
RiA9IHV0aS5jcmVhdGVDRlN0cmluZygpOwotCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19CRUdJTgogICAgIC8vIENoZWNrIGlmIHRoaXMgVVRJIGhhcyBhIE1JTUUgdHlwZS4KLSAgICBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IG1pbWVUeXBlID0gYWRvcHRDRihVVFR5cGVDb3B5UHJlZmVy
cmVkVGFnV2l0aENsYXNzKHV0aUNGLmdldCgpLCBrVVRUYWdDbGFzc01JTUVUeXBlKSk7Ci0gICAg
aWYgKG1pbWVUeXBlKQotICAgICAgICByZXR1cm4gbWltZVR5cGUuZ2V0KCk7CisgICAgaWYgKGF1
dG8gdHlwZSA9IGFkb3B0Q0YoVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh1dGksIGtV
VFRhZ0NsYXNzTUlNRVR5cGUpKSkKKyAgICAgICAgcmV0dXJuIHR5cGU7CiAKICAgICAvLyBJZiBu
b3QsIHdhbGsgdGhlIGFuY2VzdG9yeSBvZiB0aGlzIFVUSSB2aWEgaXRzICJDb25mb3Jtc1RvIiB0
YWdzIGFuZCByZXR1cm4gdGhlIGZpcnN0IE1JTUUgdHlwZSB3ZSBmaW5kLgotICAgIFJldGFpblB0
cjxDRkRpY3Rpb25hcnlSZWY+IGRlY2wgPSBhZG9wdENGKFVUVHlwZUNvcHlEZWNsYXJhdGlvbih1
dGlDRi5nZXQoKSkpOwotICAgIGlmICghZGVjbCkKLSAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5n
KCk7Ci0gICAgQ0ZUeXBlUmVmIHZhbHVlID0gQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGVjbC5nZXQo
KSwga1VUVHlwZUNvbmZvcm1zVG9LZXkpOworICAgIGF1dG8gZGVjbGFyYXRpb24gPSBhZG9wdENG
KFVUVHlwZUNvcHlEZWNsYXJhdGlvbih1dGkpKTsKKyAgICBpZiAoIWRlY2xhcmF0aW9uKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gdmFsdWUgPSBDRkRpY3Rpb25hcnlHZXRW
YWx1ZShkZWNsYXJhdGlvbi5nZXQoKSwga1VUVHlwZUNvbmZvcm1zVG9LZXkpOwogQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7Ci0gICAgQ0ZUeXBlSUQgdHlwZUlEID0gQ0ZHZXRUeXBlSUQodmFsdWUp
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGlmICh0eXBlSUQgPT0gQ0ZTdHJpbmdH
ZXRUeXBlSUQoKSkKLSAgICAgICAgcmV0dXJuIE1JTUVUeXBlRnJvbVVUSVRyZWUoKENGU3RyaW5n
UmVmKXZhbHVlKTsKKyAgICBpZiAoYXV0byBzdHJpbmcgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZTdHJp
bmdSZWY+KHZhbHVlKSkKKyAgICAgICAgcmV0dXJuIG1pbWVUeXBlRnJvbVVUSVRyZWUoc3RyaW5n
KTsKIAotICAgIGlmICh0eXBlSUQgPT0gQ0ZBcnJheUdldFR5cGVJRCgpKSB7Ci0gICAgICAgIENG
QXJyYXlSZWYgbmV3VHlwZXMgPSAoQ0ZBcnJheVJlZil2YWx1ZTsKLSAgICAgICAgQ0ZJbmRleCBj
b3VudCA9IENGQXJyYXlHZXRDb3VudChuZXdUeXBlcyk7CisgICAgaWYgKGF1dG8gYXJyYXkgPSBk
eW5hbWljX2NmX2Nhc3Q8Q0ZBcnJheVJlZj4odmFsdWUpKSB7CisgICAgICAgIENGSW5kZXggY291
bnQgPSBDRkFycmF5R2V0Q291bnQoYXJyYXkpOwogICAgICAgICBmb3IgKENGSW5kZXggaSA9IDA7
IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAgICAgICBDRlR5cGVSZWYgb2JqZWN0ID0gQ0ZBcnJh
eUdldFZhbHVlQXRJbmRleChuZXdUeXBlcywgaSk7Ci0gICAgICAgICAgICBpZiAoQ0ZHZXRUeXBl
SUQob2JqZWN0KSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpKQotICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotCi0gICAgICAgICAgICBTdHJpbmcgbWltZVR5cGUgPSBNSU1FVHlwZUZyb21VVElUcmVl
KChDRlN0cmluZ1JlZilvYmplY3QpOwotICAgICAgICAgICAgaWYgKCFtaW1lVHlwZS5pc0VtcHR5
KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1pbWVUeXBlOworICAgICAgICAgICAgaWYgKGF1
dG8gc3RyaW5nID0gZHluYW1pY19jZl9jYXN0PENGU3RyaW5nUmVmPihDRkFycmF5R2V0VmFsdWVB
dEluZGV4KGFycmF5LCBpKSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byB0eXBlID0gbWlt
ZVR5cGVGcm9tVVRJVHJlZShzdHJpbmcpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHlw
ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBlbXB0eVN0
cmluZygpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBzdGF0aWMgQ0ZTdHJpbmdSZWYgVVRJ
RnJvbVVua25vd25NSU1FVHlwZShTdHJpbmdWaWV3IG1pbWVUeXBlKQpAQCAtMTM3LDcgKzEzMCw3
IEBAIFN0cmluZyBVVElGcm9tVGFnKGNvbnN0IFN0cmluZyYgdGFnQ2xhc3MsIGNvbnN0IFN0cmlu
ZyYgdGFnLCBjb25zdCBTdHJpbmcmIGNvbmZvCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9O
U19CRUdJTgogICAgIGF1dG8gdSA9IGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRp
ZmllckZvclRhZyh0YWdDbGFzcy5jcmVhdGVDRlN0cmluZygpLmdldCgpLCB0YWcuY3JlYXRlQ0ZT
dHJpbmcoKS5nZXQoKSwgY29uZm9ybWluZ1RvVVRJLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsK
IEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotICAgIHJldHVybiBTdHJpbmcodS5n
ZXQoKSk7CisgICAgcmV0dXJuIHUuZ2V0KCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLmgKaW5kZXgg
ZTYxODdiOTc3Yjk4MmNhNTQyOTM5ZjY4YjlhMTI1NzkzMWMxMWM2Ni4uZDJiNGQ1ZTI1MmY0NDYw
NTJkMTUxYjQ5ZWE4Mjk1YTZkYWFhNWU0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw0ICsz
OCw3IEBAIFdFQkNPUkVfRVhQT1JUIE5TVVJMUmVzcG9uc2UgKnN5bnRoZXNpemVSZWRpcmVjdFJl
c3BvbnNlSWZOZWNlc3NhcnkoTlNVUkxSZXF1ZXN0CiAKIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRq
dXN0TUlNRVR5cGVJZk5lY2Vzc2FyeShDRlVSTFJlc3BvbnNlUmVmLCBib29sIGlzTWFpblJlc291
cmNlTG9hZCk7CiAKK1JldGFpblB0cjxDRlN0cmluZ1JlZj4gZmlsZVBhdGhFeHRlbnNpb24oQ0ZV
UkxSZXNwb25zZVJlZik7CitSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHByZWZlcnJlZE1JTUVUeXBl
Rm9yRmlsZUV4dGVuc2lvbkZyb21VVFR5cGUoQ0ZTdHJpbmdSZWYgZXh0ZW5zaW9uKTsKKwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVS
TFJlc3BvbnNlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29y
ZVVSTFJlc3BvbnNlLm1tCmluZGV4IDRmYTUwZTQ2YjA5NDk2Y2RlZTA3Mzk2NDVjODRmMWQ3YTQ2
OWZmY2QuLmRlM2JiNmE3MDc2OGRjOGFlNThkMGNkZWJhMGE0ODBhZThiZmJlZjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25z
ZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJM
UmVzcG9uc2UubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAy
MDA5LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwOC0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksMjk5ICszOSwxNDggQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogI2lmIFBMQVRGT1JNKE1BQykKLS8vIDxyZGFyOi8vcHJvYmxlbS83MDA3Mzg5PiBD
b3JlVHlwZXMgVVRJIG1hcCBpcyBtaXNzaW5nIDEwMCsgZmlsZSBleHRlbnNpb25zIHRoYXQgR2F0
ZUtlZXBlciBrbmV3IGFib3V0Ci0vLyBXaGVuIHdlIGRpc2FibGVkIGNvbnRlbnQgc25pZmZpbmcg
Zm9yIGZpbGUgVVJMcyB3ZSBjYXVzZWQgcHJvYmxlbXMgd2l0aCB0aGVzZSAxMDArIGV4dGVuc2lv
bnMgdGhhdCBDb3JlVHlwZXMKLS8vIGRvZXNuJ3Qga25vdyBhYm91dC4KLS8vIElmIENvcmVUeXBl
cyBpcyBldmVyIGJyb3VnaHQgdXAgdG8gc3BlZWQgd2UgY2FuIHJlbW92ZSB0aGlzIHRhYmxlIGFu
ZCBhc3NvY2lhdGVkIGNvZGUuCi1zdGF0aWMgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gY3Jl
YXRlRXh0ZW5zaW9uVG9NSU1FVHlwZU1hcCgpCi17Ci0gICAgQ0ZTdHJpbmdSZWYga2V5c1tdID0g
ewotICAgICAgICBDRlNUUigiYWkiKSwKLSAgICAgICAgQ0ZTVFIoImFzYyIpLAotICAgICAgICBD
RlNUUigiYmNwaW8iKSwKLSAgICAgICAgQ0ZTVFIoImJtcCIpLAotICAgICAgICBDRlNUUigiY2Rm
IiksCi0gICAgICAgIENGU1RSKCJjbGFzcyIpLAotICAgICAgICBDRlNUUigiY3BneiIpLAotICAg
ICAgICBDRlNUUigiY3BpbyIpLAotICAgICAgICBDRlNUUigiY3B0IiksCi0gICAgICAgIENGU1RS
KCJjc2giKSwKLSAgICAgICAgQ0ZTVFIoImNzcyIpLAotICAgICAgICBDRlNUUigiZGNyIiksCi0g
ICAgICAgIENGU1RSKCJkaXIiKSwKLSAgICAgICAgQ0ZTVFIoImRtZyIpLAotICAgICAgICBDRlNU
UigiZG1zIiksCi0gICAgICAgIENGU1RSKCJkdmkiKSwKLSAgICAgICAgQ0ZTVFIoImR4ciIpLAot
ICAgICAgICBDRlNUUigiZXBzIiksCi0gICAgICAgIENGU1RSKCJldHgiKSwKLSAgICAgICAgQ0ZT
VFIoImV6IiksCi0gICAgICAgIENGU1RSKCJmZGYiKSwKLSAgICAgICAgQ0ZTVFIoImZsYSIpLAot
ICAgICAgICBDRlNUUigiZnAiKSwKLSAgICAgICAgQ0ZTVFIoImZwMiIpLAotICAgICAgICBDRlNU
UigiZnAzIiksCi0gICAgICAgIENGU1RSKCJmcDQiKSwKLSAgICAgICAgQ0ZTVFIoImZwNSIpLAot
ICAgICAgICBDRlNUUigiZnA2IiksCi0gICAgICAgIENGU1RSKCJoZGYiKSwKLSAgICAgICAgQ0ZT
VFIoImljZSIpLAotICAgICAgICBDRlNUUigiaWNvIiksCi0gICAgICAgIENGU1RSKCJpY3MiKSwK
LSAgICAgICAgQ0ZTVFIoImllZiIpLAotICAgICAgICBDRlNUUigiaWdlcyIpLAotICAgICAgICBD
RlNUUigiaWdzIiksCi0gICAgICAgIENGU1RSKCJpc28iKSwKLSAgICAgICAgQ0ZTVFIoImpodG1s
IiksCi0gICAgICAgIENGU1RSKCJsYXRleCIpLAotICAgICAgICBDRlNUUigibGhhIiksCi0gICAg
ICAgIENGU1RSKCJsemgiKSwKLSAgICAgICAgQ0ZTVFIoIm0zdSIpLAotICAgICAgICBDRlNUUigi
bTRwIiksCi0gICAgICAgIENGU1RSKCJtYWMiKSwKLSAgICAgICAgQ0ZTVFIoIm1hbiIpLAotICAg
ICAgICBDRlNUUigibWUiKSwKLSAgICAgICAgQ0ZTVFIoIm1lc2giKSwKLSAgICAgICAgQ0ZTVFIo
Im1pZiIpLAotICAgICAgICBDRlNUUigibWpzIiksCi0gICAgICAgIENGU1RSKCJtb3ZpZSIpLAot
ICAgICAgICBDRlNUUigibXAyIiksCi0gICAgICAgIENGU1RSKCJtcGdhIiksCi0gICAgICAgIENG
U1RSKCJtcyIpLAotICAgICAgICBDRlNUUigibXNoIiksCi0gICAgICAgIENGU1RSKCJteHUiKSwK
LSAgICAgICAgQ0ZTVFIoIm5jIiksCi0gICAgICAgIENGU1RSKCJvZGEiKSwKLSAgICAgICAgQ0ZT
VFIoInBibSIpLAotICAgICAgICBDRlNUUigicGN4IiksCi0gICAgICAgIENGU1RSKCJwZGIiKSwK
LSAgICAgICAgQ0ZTVFIoInBnbSIpLAotICAgICAgICBDRlNUUigicGduIiksCi0gICAgICAgIENG
U1RSKCJwbHMiKSwKLSAgICAgICAgQ0ZTVFIoInBubSIpLAotICAgICAgICBDRlNUUigicG50Iiks
Ci0gICAgICAgIENGU1RSKCJwbnRnIiksCi0gICAgICAgIENGU1RSKCJwcG0iKSwKLSAgICAgICAg
Q0ZTVFIoInJhcyIpLAotICAgICAgICBDRlNUUigicmdiIiksCi0gICAgICAgIENGU1RSKCJyb2Zm
IiksCi0gICAgICAgIENGU1RSKCJycG0iKSwKLSAgICAgICAgQ0ZTVFIoInJ0eCIpLAotICAgICAg
ICBDRlNUUigic2dtIiksCi0gICAgICAgIENGU1RSKCJzZ21sIiksCi0gICAgICAgIENGU1RSKCJz
aCIpLAotICAgICAgICBDRlNUUigic2hhciIpLAotICAgICAgICBDRlNUUigic2lsbyIpLAotICAg
ICAgICBDRlNUUigic2tkIiksCi0gICAgICAgIENGU1RSKCJza20iKSwKLSAgICAgICAgQ0ZTVFIo
InNrcCIpLAotICAgICAgICBDRlNUUigic2t0IiksCi0gICAgICAgIENGU1RSKCJzbWkiKSwKLSAg
ICAgICAgQ0ZTVFIoInNvIiksCi0gICAgICAgIENGU1RSKCJzcGwiKSwKLSAgICAgICAgQ0ZTVFIo
InNyYyIpLAotICAgICAgICBDRlNUUigic3Y0Y3BpbyIpLAotICAgICAgICBDRlNUUigic3Y0Y3Jj
IiksCi0gICAgICAgIENGU1RSKCJzd2YiKSwKLSAgICAgICAgQ0ZTVFIoInQiKSwKLSAgICAgICAg
Q0ZTVFIoInRhcmdhIiksCi0gICAgICAgIENGU1RSKCJ0Y2wiKSwKLSAgICAgICAgQ0ZTVFIoInRl
eCIpLAotICAgICAgICBDRlNUUigidGV4aSIpLAotICAgICAgICBDRlNUUigidGV4aW5mbyIpLAot
ICAgICAgICBDRlNUUigidGd6IiksCi0gICAgICAgIENGU1RSKCJ0b3JyZW50IiksCi0gICAgICAg
IENGU1RSKCJ0ciIpLAotICAgICAgICBDRlNUUigidHN2IiksCi0gICAgICAgIENGU1RSKCJ1c3Rh
ciIpLAotICAgICAgICBDRlNUUigidmNkIiksCi0gICAgICAgIENGU1RSKCJ2cm1sIiksCi0gICAg
ICAgIENGU1RSKCJ3Ym1wIiksCi0gICAgICAgIENGU1RSKCJ3YnhtbCIpLAotICAgICAgICBDRlNU
Uigid2ViYXJjaGl2ZSIpLAotICAgICAgICBDRlNUUigid2VibSIpLAotICAgICAgICBDRlNUUigi
d21kIiksCi0gICAgICAgIENGU1RSKCJ3bWwiKSwKLSAgICAgICAgQ0ZTVFIoIndtbGMiKSwKLSAg
ICAgICAgQ0ZTVFIoIndtbHMiKSwKLSAgICAgICAgQ0ZTVFIoIndtbHNjIiksCi0gICAgICAgIENG
U1RSKCJ3cmwiKSwKLSAgICAgICAgQ0ZTVFIoInhkcCIpLAotICAgICAgICBDRlNUUigieGZkIiks
Ci0gICAgICAgIENGU1RSKCJ4ZmRmIiksCi0gICAgICAgIENGU1RSKCJ4cG0iKSwKLSAgICAgICAg
Q0ZTVFIoInhzbCIpLAotICAgICAgICBDRlNUUigieHdkIiksCi0gICAgICAgIENGU1RSKCJ4eXoi
KSwKLSAgICAgICAgQ0ZTVFIoInoiKQotICAgIH07Ci0KLSAgICBDRlN0cmluZ1JlZiB2YWx1ZXNb
XSA9IHsKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3Bvc3RzY3JpcHQiKSwKLSAgICAgICAg
Q0ZTVFIoInRleHQvcGxhaW4iKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gtYmNwaW8i
KSwKLSAgICAgICAgQ0ZTVFIoImltYWdlL2JtcCIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRp
b24veC1uZXRjZGYiKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIp
LAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC1nemlwIiksCi0gICAgICAgIENGU1RSKCJh
cHBsaWNhdGlvbi94LWNwaW8iKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL21hYy1jb21w
YWN0cHJvIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LWNzaCIpLAotICAgICAgICBD
RlNUUigidGV4dC9jc3MiKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gtZGlyZWN0b3Ii
KSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gtZGlyZWN0b3IiKSwKLSAgICAgICAgQ0ZT
VFIoImFwcGxpY2F0aW9uL3gtZGlza2NvcHkiKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9u
L29jdGV0LXN0cmVhbSIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC1kdmkiKSwKLSAg
ICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gtZGlyZWN0b3IiKSwKLSAgICAgICAgQ0ZTVFIoImFw
cGxpY2F0aW9uL3Bvc3RzY3JpcHQiKSwKLSAgICAgICAgQ0ZTVFIoInRleHQveC1zZXRleHQiKSwK
LSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL2FuZHJldy1pbnNldCIpLAotICAgICAgICBDRlNU
UigiYXBwbGljYXRpb24vdm5kLmZkZiIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24vb2N0
ZXQtc3RyZWFtIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LWZpbGVtYWtlciIpLAot
ICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC1maWxlbWFrZXIiKSwKLSAgICAgICAgQ0ZTVFIo
ImFwcGxpY2F0aW9uL3gtZmlsZW1ha2VyIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi94
LWZpbGVtYWtlciIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC1maWxlbWFrZXIiKSwK
LSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gtZmlsZW1ha2VyIiksCi0gICAgICAgIENGU1RS
KCJhcHBsaWNhdGlvbi94LWhkZiIpLAotICAgICAgICBDRlNUUigieC1jb25mZXJlbmNlL3gtY29v
bHRhbGsiKSwKLSAgICAgICAgQ0ZTVFIoImltYWdlL3gtaWNvbiIpLAotICAgICAgICBDRlNUUigi
dGV4dC9jYWxlbmRhciIpLAotICAgICAgICBDRlNUUigiaW1hZ2UvaWVmIiksCi0gICAgICAgIENG
U1RSKCJtb2RlbC9pZ2VzIiksCi0gICAgICAgIENGU1RSKCJtb2RlbC9pZ2VzIiksCi0gICAgICAg
IENGU1RSKCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iKSwKLSAgICAgICAgQ0ZTVFIoInRleHQv
aHRtbCIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC1sYXRleCIpLAotICAgICAgICBD
RlNUUigiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNh
dGlvbi9vY3RldC1zdHJlYW0iKSwKLSAgICAgICAgQ0ZTVFIoImF1ZGlvL3gtbXBlZ3VybCIpLAot
ICAgICAgICBDRlNUUigiYXVkaW8veC1tNHAiKSwKLSAgICAgICAgQ0ZTVFIoImltYWdlL3gtbWFj
cGFpbnQiKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gtdHJvZmYtbWFuIiksCi0gICAg
ICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LXRyb2ZmLW1lIiksCi0gICAgICAgIENGU1RSKCJtb2Rl
bC9tZXNoIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi92bmQubWlmIiksCi0gICAgICAg
IENGU1RSKCJ0ZXh0L2phdmFzY3JpcHQiKSwKLSAgICAgICAgQ0ZTVFIoInZpZGVvL3gtc2dpLW1v
dmllIiksCi0gICAgICAgIENGU1RSKCJhdWRpby9tcGVnIiksCi0gICAgICAgIENGU1RSKCJhdWRp
by9tcGVnIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LXRyb2ZmLW1zIiksCi0gICAg
ICAgIENGU1RSKCJtb2RlbC9tZXNoIiksCi0gICAgICAgIENGU1RSKCJ2aWRlby92bmQubXBlZ3Vy
bCIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC1uZXRjZGYiKSwKLSAgICAgICAgQ0ZT
VFIoImFwcGxpY2F0aW9uL29kYSIpLAotICAgICAgICBDRlNUUigiaW1hZ2UveC1wb3J0YWJsZS1i
aXRtYXAiKSwKLSAgICAgICAgQ0ZTVFIoImltYWdlL3gtcGN4IiksCi0gICAgICAgIENGU1RSKCJj
aGVtaWNhbC94LXBkYiIpLAotICAgICAgICBDRlNUUigiaW1hZ2UveC1wb3J0YWJsZS1ncmF5bWFw
IiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LWNoZXNzLXBnbiIpLAotICAgICAgICBD
RlNUUigiYXVkaW8vc2NwbHMiKSwKLSAgICAgICAgQ0ZTVFIoImltYWdlL3gtcG9ydGFibGUtYW55
bWFwIiksCi0gICAgICAgIENGU1RSKCJpbWFnZS94LW1hY3BhaW50IiksCi0gICAgICAgIENGU1RS
KCJpbWFnZS94LW1hY3BhaW50IiksCi0gICAgICAgIENGU1RSKCJpbWFnZS94LXBvcnRhYmxlLXBp
eG1hcCIpLAotICAgICAgICBDRlNUUigiaW1hZ2UveC1jbXUtcmFzdGVyIiksCi0gICAgICAgIENG
U1RSKCJpbWFnZS94LXJnYiIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC10cm9mZiIp
LAotICAgICAgICBDRlNUUigiYXVkaW8veC1wbi1yZWFsYXVkaW8tcGx1Z2luIiksCi0gICAgICAg
IENGU1RSKCJ0ZXh0L3JpY2h0ZXh0IiksCi0gICAgICAgIENGU1RSKCJ0ZXh0L3NnbWwiKSwKLSAg
ICAgICAgQ0ZTVFIoInRleHQvc2dtbCIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC1z
aCIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC1zaGFyIiksCi0gICAgICAgIENGU1RS
KCJtb2RlbC9tZXNoIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LWtvYW4iKSwKLSAg
ICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gta29hbiIpLAotICAgICAgICBDRlNUUigiYXBwbGlj
YXRpb24veC1rb2FuIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LWtvYW4iKSwKLSAg
ICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gtZGlza2NvcHkiKSwKLSAgICAgICAgQ0ZTVFIoImFw
cGxpY2F0aW9uL29jdGV0LXN0cmVhbSIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC1m
dXR1cmVzcGxhc2giKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gtd2Fpcy1zb3VyY2Ui
KSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gtc3Y0Y3BpbyIpLAotICAgICAgICBDRlNU
UigiYXBwbGljYXRpb24veC1zdjRjcmMiKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gt
c2hvY2t3YXZlLWZsYXNoIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LXRyb2ZmIiks
Ci0gICAgICAgIENGU1RSKCJpbWFnZS94LXRhcmdhIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNh
dGlvbi94LXRjbCIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC10ZXgiKSwKLSAgICAg
ICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gtdGV4aW5mbyIpLAotICAgICAgICBDRlNUUigiYXBwbGlj
YXRpb24veC10ZXhpbmZvIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LWd6aXAiKSwK
LSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gtYml0dG9ycmVudCIpLAotICAgICAgICBDRlNU
UigiYXBwbGljYXRpb24veC10cm9mZiIpLAotICAgICAgICBDRlNUUigidGV4dC90YWItc2VwYXJh
dGVkLXZhbHVlcyIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC11c3RhciIpLAotICAg
ICAgICBDRlNUUigiYXBwbGljYXRpb24veC1jZGxpbmsiKSwKLSAgICAgICAgQ0ZTVFIoIm1vZGVs
L3ZybWwiKSwKLSAgICAgICAgQ0ZTVFIoImltYWdlL3ZuZC53YXAud2JtcCIpLAotICAgICAgICBD
RlNUUigiYXBwbGljYXRpb24vdm5kLndhcC53YnhtbCIpLAotICAgICAgICBDRlNUUigiYXBwbGlj
YXRpb24veC13ZWJhcmNoaXZlIiksCi0gICAgICAgIENGU1RSKCJ2aWRlby93ZWJtIiksCi0gICAg
ICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LW1zLXdtZCIpLAotICAgICAgICBDRlNUUigidGV4dC92
bmQud2FwLndtbCIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24vdm5kLndhcC53bWxjIiks
Ci0gICAgICAgIENGU1RSKCJ0ZXh0L3ZuZC53YXAud21sc2NyaXB0IiksCi0gICAgICAgIENGU1RS
KCJhcHBsaWNhdGlvbi92bmQud2FwLndtbHNjcmlwdGMiKSwKLSAgICAgICAgQ0ZTVFIoIm1vZGVs
L3ZybWwiKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3ZuZC5hZG9iZS54ZHAreG1sIiks
Ci0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi92bmQuYWRvYmUueGZkK3htbCIpLAotICAgICAg
ICBDRlNUUigiYXBwbGljYXRpb24vdm5kLmFkb2JlLnhmZGYiKSwKLSAgICAgICAgQ0ZTVFIoImlt
YWdlL3gteHBpeG1hcCIpLAotICAgICAgICBDRlNUUigidGV4dC94bWwiKSwKLSAgICAgICAgQ0ZT
VFIoImltYWdlL3gteHdpbmRvd2R1bXAiKSwKLSAgICAgICAgQ0ZTVFIoImNoZW1pY2FsL3gteHl6
IiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LWNvbXByZXNzIikKLSAgICB9OwogCi0g
ICAgQVNTRVJUKHNpemVvZihrZXlzKSA9PSBzaXplb2YodmFsdWVzKSk7Ci0gICAgcmV0dXJuIGFk
b3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCB2b2lk
KiopJmtleXMsIChjb25zdCB2b2lkKiopJnZhbHVlcywgc2l6ZW9mKGtleXMpIC8gc2l6ZW9mKENG
U3RyaW5nUmVmKSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rp
b25hcnlWYWx1ZUNhbGxCYWNrcykpOwotfQotCi12b2lkIGFkanVzdE1JTUVUeXBlSWZOZWNlc3Nh
cnkoQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlLCBib29sIGlzTWFpblJlc291cmNlTG9hZCkK
K3ZvaWQgYWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeShDRlVSTFJlc3BvbnNlUmVmIHJlc3BvbnNl
LCBib29sIC8qaXNNYWluUmVzb3VyY2VMb2FkKi8pCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGlzTWFp
blJlc291cmNlTG9hZCk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiByZXN1bHQgPSBDRlVS
TFJlc3BvbnNlR2V0TUlNRVR5cGUoY2ZSZXNwb25zZSk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5n
UmVmPiBvcmlnaW5hbFJlc3VsdCA9IHJlc3VsdDsKKyAgICBpZiAoQ0ZVUkxSZXNwb25zZUdldE1J
TUVUeXBlKHJlc3BvbnNlKSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFyZXN1bHQpIHsK
LSAgICAgICAgYXV0byB1cmwgPSBDRlVSTFJlc3BvbnNlR2V0VVJMKGNmUmVzcG9uc2UpOwotICAg
ICAgICBpZiAoWyhfX2JyaWRnZSBOU1VSTCAqKXVybCBpc0ZpbGVVUkxdKSB7Ci0gICAgICAgICAg
ICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGV4dGVuc2lvbiA9IGFkb3B0Q0YoQ0ZVUkxDb3B5UGF0
aEV4dGVuc2lvbih1cmwpKTsKLSAgICAgICAgICAgIGlmIChleHRlbnNpb24pIHsKLSAgICAgICAg
ICAgICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNzAwNzM4OT4gQ29yZVR5cGVzIFVUSSBtYXAgaXMg
bWlzc2luZyAxMDArIGZpbGUgZXh0ZW5zaW9ucyB0aGF0IEdhdGVLZWVwZXIga25ldyBhYm91dAot
ICAgICAgICAgICAgICAgIC8vIFdoZW4gdGhpcyByYWRhciBpcyByZXNvbHZlZCwgd2UgY2FuIHJl
bW92ZSB0aGlzIGZpbGU6Ly8gdXJsIHNwZWNpZmljIGNvZGUuCi0gICAgICAgICAgICAgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+PiBleHRlbnNpb25N
YXAgPSBjcmVhdGVFeHRlbnNpb25Ub01JTUVUeXBlTWFwKCk7Ci0gICAgICAgICAgICAgICAgYXV0
byBtdXRhYmxlRXh0ZW5zaW9uID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZU11dGFibGVDb3B5KGtD
RkFsbG9jYXRvckRlZmF1bHQsIDAsIGV4dGVuc2lvbi5nZXQoKSkpOwotICAgICAgICAgICAgICAg
IENGU3RyaW5nTG93ZXJjYXNlKG11dGFibGVFeHRlbnNpb24uZ2V0KCksIE5VTEwpOwotICAgICAg
ICAgICAgICAgIGV4dGVuc2lvbiA9IFdURk1vdmUobXV0YWJsZUV4dGVuc2lvbik7Ci0gICAgICAg
ICAgICAgICAgcmVzdWx0ID0gKENGU3RyaW5nUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGV4dGVu
c2lvbk1hcC5nZXQoKS5nZXQoKSwgZXh0ZW5zaW9uLmdldCgpKTsKLSAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICAgICAgICAgICAgICAvLyBJ
ZiB0aGUgR2F0ZWtlZXBlci1iYXNlZCBtYXAgZG9lc24ndCBoYXZlIGEgTUlNRSB0eXBlLCB3ZSds
bCB0cnkgdG8gZmlndXJlIG91dCB3aGF0IGl0IHNob3VsZCBiZSBieQotICAgICAgICAgICAgICAg
ICAgICAvLyBsb29raW5nIHVwIHRoZSBmaWxlIGV4dGVuc2lvbiBpbiB0aGUgVVRJIG1hcHMuCi1B
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgICAgICAgICAgICAgICAgICBS
ZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aSA9IGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVk
SWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc0ZpbGVuYW1lRXh0ZW5zaW9uLCBleHRlbnNpb24u
Z2V0KCksIDApKTsKLUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotICAgICAgICAg
ICAgICAgICAgICBTdHJpbmcgTUlNRVR5cGUgPSBNSU1FVHlwZUZyb21VVElUcmVlKHV0aS5nZXQo
KSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghTUlNRVR5cGUuaXNFbXB0eSgpKQotICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gTUlNRVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0g
ICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAgc3RhdGljIENGU3RyaW5nUmVmIGRlZmF1bHRNSU1F
VHlwZVN0cmluZyA9IFdlYkNvcmU6OmRlZmF1bHRNSU1FVHlwZSgpLmNyZWF0ZUNGU3RyaW5nKCku
bGVha1JlZigpOwotICAgICAgICByZXN1bHQgPSBkZWZhdWx0TUlNRVR5cGVTdHJpbmc7CisgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiB0eXBlOworCisgICAgaWYgKGF1dG8gZXh0ZW5zaW9uID0g
ZmlsZVBhdGhFeHRlbnNpb24ocmVzcG9uc2UpKSB7CisgICAgICAgIC8vIDxyZGFyOi8vcHJvYmxl
bS83MDA3Mzg5PiBDb3JlVHlwZXMgVVRJIG1hcCBpcyBtaXNzaW5nIDEwMCsgZmlsZSBleHRlbnNp
b25zIHRoYXQgR2F0ZUtlZXBlciBrbmV3IGFib3V0CisgICAgICAgIC8vIE9uY2UgVVRUeXBlIG1h
dGNoZXMgb25lIG9mIHRoZXNlIG1hcHBpbmdzIG9uIGFsbCB2ZXJzaW9ucyBvZiBtYWNPUyB3ZSBz
dXBwb3J0LCB3ZSBjYW4gcmVtb3ZlIHRoYXQgcGFpci4KKyAgICAgICAgLy8gQWx0ZXJuYXRpdmVs
eSwgd2UgY291bGQgcmVtb3ZlIGFueSBwYWlycyB0aGF0IHdlIGRldGVybWluZSB3ZSBubyBsb25n
ZXIgbmVlZC4KKyAgICAgICAgLy8gQW5kIHRoZW4gcmVtb3ZlIHRoaXMgY29kZSBlbnRpcmVseSBv
bmNlIHRoZXkgYXJlIGFsbCBnb25lLgorICAgICAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6cGFp
cjxDb21wYXJhYmxlTGV0dGVyc0xpdGVyYWwsIE5TU3RyaW5nICo+IGV4dGVuc2lvblBhaXJzW10g
PSB7CisgICAgICAgICAgICB7ICJhaSIsIEAiYXBwbGljYXRpb24vcG9zdHNjcmlwdCIgfSwKKyAg
ICAgICAgICAgIHsgImFzYyIsIEAidGV4dC9wbGFpbiIgfSwKKyAgICAgICAgICAgIHsgImJjcGlv
IiwgQCJhcHBsaWNhdGlvbi94LWJjcGlvIiB9LAorICAgICAgICAgICAgeyAiYm1wIiwgQCJpbWFn
ZS9ibXAiIH0sCisgICAgICAgICAgICB7ICJjZGYiLCBAImFwcGxpY2F0aW9uL3gtbmV0Y2RmIiB9
LAorICAgICAgICAgICAgeyAiY2xhc3MiLCBAImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIgfSwK
KyAgICAgICAgICAgIHsgImNwZ3oiLCBAImFwcGxpY2F0aW9uL3gtZ3ppcCIgfSwKKyAgICAgICAg
ICAgIHsgImNwaW8iLCBAImFwcGxpY2F0aW9uL3gtY3BpbyIgfSwKKyAgICAgICAgICAgIHsgImNw
dCIsIEAiYXBwbGljYXRpb24vbWFjLWNvbXBhY3Rwcm8iIH0sCisgICAgICAgICAgICB7ICJjc2gi
LCBAImFwcGxpY2F0aW9uL3gtY3NoIiB9LAorICAgICAgICAgICAgeyAiY3NzIiwgQCJ0ZXh0L2Nz
cyIgfSwKKyAgICAgICAgICAgIHsgImRjciIsIEAiYXBwbGljYXRpb24veC1kaXJlY3RvciIgfSwK
KyAgICAgICAgICAgIHsgImRpciIsIEAiYXBwbGljYXRpb24veC1kaXJlY3RvciIgfSwKKyAgICAg
ICAgICAgIHsgImRtZyIsIEAiYXBwbGljYXRpb24veC1kaXNrY29weSIgfSwKKyAgICAgICAgICAg
IHsgImRtcyIsIEAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiB9LAorICAgICAgICAgICAgeyAi
ZHZpIiwgQCJhcHBsaWNhdGlvbi94LWR2aSIgfSwKKyAgICAgICAgICAgIHsgImR4ciIsIEAiYXBw
bGljYXRpb24veC1kaXJlY3RvciIgfSwKKyAgICAgICAgICAgIHsgImVwcyIsIEAiYXBwbGljYXRp
b24vcG9zdHNjcmlwdCIgfSwKKyAgICAgICAgICAgIHsgImV0eCIsIEAidGV4dC94LXNldGV4dCIg
fSwKKyAgICAgICAgICAgIHsgImV6IiwgQCJhcHBsaWNhdGlvbi9hbmRyZXctaW5zZXQiIH0sCisg
ICAgICAgICAgICB7ICJmZGYiLCBAImFwcGxpY2F0aW9uL3ZuZC5mZGYiIH0sCisgICAgICAgICAg
ICB7ICJmbGEiLCBAImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIgfSwKKyAgICAgICAgICAgIHsg
ImZwIiwgQCJhcHBsaWNhdGlvbi94LWZpbGVtYWtlciIgfSwKKyAgICAgICAgICAgIHsgImZwMiIs
IEAiYXBwbGljYXRpb24veC1maWxlbWFrZXIiIH0sCisgICAgICAgICAgICB7ICJmcDMiLCBAImFw
cGxpY2F0aW9uL3gtZmlsZW1ha2VyIiB9LAorICAgICAgICAgICAgeyAiZnA0IiwgQCJhcHBsaWNh
dGlvbi94LWZpbGVtYWtlciIgfSwKKyAgICAgICAgICAgIHsgImZwNSIsIEAiYXBwbGljYXRpb24v
eC1maWxlbWFrZXIiIH0sCisgICAgICAgICAgICB7ICJmcDYiLCBAImFwcGxpY2F0aW9uL3gtZmls
ZW1ha2VyIiB9LAorICAgICAgICAgICAgeyAiaGRmIiwgQCJhcHBsaWNhdGlvbi94LWhkZiIgfSwK
KyAgICAgICAgICAgIHsgImljZSIsIEAieC1jb25mZXJlbmNlL3gtY29vbHRhbGsiIH0sCisgICAg
ICAgICAgICB7ICJpY28iLCBAImltYWdlL3gtaWNvbiIgfSwKKyAgICAgICAgICAgIHsgImljcyIs
IEAidGV4dC9jYWxlbmRhciIgfSwKKyAgICAgICAgICAgIHsgImllZiIsIEAiaW1hZ2UvaWVmIiB9
LAorICAgICAgICAgICAgeyAiaWdlcyIsIEAibW9kZWwvaWdlcyIgfSwKKyAgICAgICAgICAgIHsg
ImlncyIsIEAibW9kZWwvaWdlcyIgfSwKKyAgICAgICAgICAgIHsgImlzbyIsIEAiYXBwbGljYXRp
b24vb2N0ZXQtc3RyZWFtIiB9LAorICAgICAgICAgICAgeyAiamh0bWwiLCBAInRleHQvaHRtbCIg
fSwKKyAgICAgICAgICAgIHsgImxhdGV4IiwgQCJhcHBsaWNhdGlvbi94LWxhdGV4IiB9LAorICAg
ICAgICAgICAgeyAibGhhIiwgQCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iIH0sCisgICAgICAg
ICAgICB7ICJsemgiLCBAImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIgfSwKKyAgICAgICAgICAg
IHsgIm0zdSIsIEAiYXVkaW8veC1tcGVndXJsIiB9LAorICAgICAgICAgICAgeyAibTRwIiwgQCJh
dWRpby94LW00cCIgfSwKKyAgICAgICAgICAgIHsgIm1hYyIsIEAiaW1hZ2UveC1tYWNwYWludCIg
fSwKKyAgICAgICAgICAgIHsgIm1hbiIsIEAiYXBwbGljYXRpb24veC10cm9mZi1tYW4iIH0sCisg
ICAgICAgICAgICB7ICJtZSIsIEAiYXBwbGljYXRpb24veC10cm9mZi1tZSIgfSwKKyAgICAgICAg
ICAgIHsgIm1lc2giLCBAIm1vZGVsL21lc2giIH0sCisgICAgICAgICAgICB7ICJtaWYiLCBAImFw
cGxpY2F0aW9uL3ZuZC5taWYiIH0sCisgICAgICAgICAgICB7ICJtanMiLCBAInRleHQvamF2YXNj
cmlwdCIgfSwKKyAgICAgICAgICAgIHsgIm1vdmllIiwgQCJ2aWRlby94LXNnaS1tb3ZpZSIgfSwK
KyAgICAgICAgICAgIHsgIm1wMiIsIEAiYXVkaW8vbXBlZyIgfSwKKyAgICAgICAgICAgIHsgIm1w
Z2EiLCBAImF1ZGlvL21wZWciIH0sCisgICAgICAgICAgICB7ICJtcyIsIEAiYXBwbGljYXRpb24v
eC10cm9mZi1tcyIgfSwKKyAgICAgICAgICAgIHsgIm1zaCIsIEAibW9kZWwvbWVzaCIgfSwKKyAg
ICAgICAgICAgIHsgIm14dSIsIEAidmlkZW8vdm5kLm1wZWd1cmwiIH0sCisgICAgICAgICAgICB7
ICJuYyIsIEAiYXBwbGljYXRpb24veC1uZXRjZGYiIH0sCisgICAgICAgICAgICB7ICJvZGEiLCBA
ImFwcGxpY2F0aW9uL29kYSIgfSwKKyAgICAgICAgICAgIHsgInBibSIsIEAiaW1hZ2UveC1wb3J0
YWJsZS1iaXRtYXAiIH0sCisgICAgICAgICAgICB7ICJwY3giLCBAImltYWdlL3gtcGN4IiB9LAor
ICAgICAgICAgICAgeyAicGRiIiwgQCJjaGVtaWNhbC94LXBkYiIgfSwKKyAgICAgICAgICAgIHsg
InBnbSIsIEAiaW1hZ2UveC1wb3J0YWJsZS1ncmF5bWFwIiB9LAorICAgICAgICAgICAgeyAicGdu
IiwgQCJhcHBsaWNhdGlvbi94LWNoZXNzLXBnbiIgfSwKKyAgICAgICAgICAgIHsgInBscyIsIEAi
YXVkaW8vc2NwbHMiIH0sCisgICAgICAgICAgICB7ICJwbm0iLCBAImltYWdlL3gtcG9ydGFibGUt
YW55bWFwIiB9LAorICAgICAgICAgICAgeyAicG50IiwgQCJpbWFnZS94LW1hY3BhaW50IiB9LAor
ICAgICAgICAgICAgeyAicG50ZyIsIEAiaW1hZ2UveC1tYWNwYWludCIgfSwKKyAgICAgICAgICAg
IHsgInBwbSIsIEAiaW1hZ2UveC1wb3J0YWJsZS1waXhtYXAiIH0sCisgICAgICAgICAgICB7ICJy
YXMiLCBAImltYWdlL3gtY211LXJhc3RlciIgfSwKKyAgICAgICAgICAgIHsgInJnYiIsIEAiaW1h
Z2UveC1yZ2IiIH0sCisgICAgICAgICAgICB7ICJyb2ZmIiwgQCJhcHBsaWNhdGlvbi94LXRyb2Zm
IiB9LAorICAgICAgICAgICAgeyAicnBtIiwgQCJhdWRpby94LXBuLXJlYWxhdWRpby1wbHVnaW4i
IH0sCisgICAgICAgICAgICB7ICJydHgiLCBAInRleHQvcmljaHRleHQiIH0sCisgICAgICAgICAg
ICB7ICJzZ20iLCBAInRleHQvc2dtbCIgfSwKKyAgICAgICAgICAgIHsgInNnbWwiLCBAInRleHQv
c2dtbCIgfSwKKyAgICAgICAgICAgIHsgInNoIiwgQCJhcHBsaWNhdGlvbi94LXNoIiB9LAorICAg
ICAgICAgICAgeyAic2hhciIsIEAiYXBwbGljYXRpb24veC1zaGFyIiB9LAorICAgICAgICAgICAg
eyAic2lsbyIsIEAibW9kZWwvbWVzaCIgfSwKKyAgICAgICAgICAgIHsgInNrZCIsIEAiYXBwbGlj
YXRpb24veC1rb2FuIiB9LAorICAgICAgICAgICAgeyAic2ttIiwgQCJhcHBsaWNhdGlvbi94LWtv
YW4iIH0sCisgICAgICAgICAgICB7ICJza3AiLCBAImFwcGxpY2F0aW9uL3gta29hbiIgfSwKKyAg
ICAgICAgICAgIHsgInNrdCIsIEAiYXBwbGljYXRpb24veC1rb2FuIiB9LAorICAgICAgICAgICAg
eyAic21pIiwgQCJhcHBsaWNhdGlvbi94LWRpc2tjb3B5IiB9LAorICAgICAgICAgICAgeyAic28i
LCBAImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIgfSwKKyAgICAgICAgICAgIHsgInNwbCIsIEAi
YXBwbGljYXRpb24veC1mdXR1cmVzcGxhc2giIH0sCisgICAgICAgICAgICB7ICJzcmMiLCBAImFw
cGxpY2F0aW9uL3gtd2Fpcy1zb3VyY2UiIH0sCisgICAgICAgICAgICB7ICJzdjRjcGlvIiwgQCJh
cHBsaWNhdGlvbi94LXN2NGNwaW8iIH0sCisgICAgICAgICAgICB7ICJzdjRjcmMiLCBAImFwcGxp
Y2F0aW9uL3gtc3Y0Y3JjIiB9LAorICAgICAgICAgICAgeyAic3dmIiwgQCJhcHBsaWNhdGlvbi94
LXNob2Nrd2F2ZS1mbGFzaCIgfSwKKyAgICAgICAgICAgIHsgInQiLCBAImFwcGxpY2F0aW9uL3gt
dHJvZmYiIH0sCisgICAgICAgICAgICB7ICJ0YXJnYSIsIEAiaW1hZ2UveC10YXJnYSIgfSwKKyAg
ICAgICAgICAgIHsgInRjbCIsIEAiYXBwbGljYXRpb24veC10Y2wiIH0sCisgICAgICAgICAgICB7
ICJ0ZXgiLCBAImFwcGxpY2F0aW9uL3gtdGV4IiB9LAorICAgICAgICAgICAgeyAidGV4aSIsIEAi
YXBwbGljYXRpb24veC10ZXhpbmZvIiB9LAorICAgICAgICAgICAgeyAidGV4aW5mbyIsIEAiYXBw
bGljYXRpb24veC10ZXhpbmZvIiB9LAorICAgICAgICAgICAgeyAidGd6IiwgQCJhcHBsaWNhdGlv
bi94LWd6aXAiIH0sCisgICAgICAgICAgICB7ICJ0b3JyZW50IiwgQCJhcHBsaWNhdGlvbi94LWJp
dHRvcnJlbnQiIH0sCisgICAgICAgICAgICB7ICJ0ciIsIEAiYXBwbGljYXRpb24veC10cm9mZiIg
fSwKKyAgICAgICAgICAgIHsgInRzdiIsIEAidGV4dC90YWItc2VwYXJhdGVkLXZhbHVlcyIgfSwK
KyAgICAgICAgICAgIHsgInVzdGFyIiwgQCJhcHBsaWNhdGlvbi94LXVzdGFyIiB9LAorICAgICAg
ICAgICAgeyAidmNkIiwgQCJhcHBsaWNhdGlvbi94LWNkbGluayIgfSwKKyAgICAgICAgICAgIHsg
InZybWwiLCBAIm1vZGVsL3ZybWwiIH0sCisgICAgICAgICAgICB7ICJ3Ym1wIiwgQCJpbWFnZS92
bmQud2FwLndibXAiIH0sCisgICAgICAgICAgICB7ICJ3YnhtbCIsIEAiYXBwbGljYXRpb24vdm5k
LndhcC53YnhtbCIgfSwKKyAgICAgICAgICAgIHsgIndlYmFyY2hpdmUiLCBAImFwcGxpY2F0aW9u
L3gtd2ViYXJjaGl2ZSIgfSwKKyAgICAgICAgICAgIHsgIndlYm0iLCBAInZpZGVvL3dlYm0iIH0s
CisgICAgICAgICAgICB7ICJ3bWQiLCBAImFwcGxpY2F0aW9uL3gtbXMtd21kIiB9LAorICAgICAg
ICAgICAgeyAid21sIiwgQCJ0ZXh0L3ZuZC53YXAud21sIiB9LAorICAgICAgICAgICAgeyAid21s
YyIsIEAiYXBwbGljYXRpb24vdm5kLndhcC53bWxjIiB9LAorICAgICAgICAgICAgeyAid21scyIs
IEAidGV4dC92bmQud2FwLndtbHNjcmlwdCIgfSwKKyAgICAgICAgICAgIHsgIndtbHNjIiwgQCJh
cHBsaWNhdGlvbi92bmQud2FwLndtbHNjcmlwdGMiIH0sCisgICAgICAgICAgICB7ICJ3cmwiLCBA
Im1vZGVsL3ZybWwiIH0sCisgICAgICAgICAgICB7ICJ4ZHAiLCBAImFwcGxpY2F0aW9uL3ZuZC5h
ZG9iZS54ZHAreG1sIiB9LAorICAgICAgICAgICAgeyAieGZkIiwgQCJhcHBsaWNhdGlvbi92bmQu
YWRvYmUueGZkK3htbCIgfSwKKyAgICAgICAgICAgIHsgInhmZGYiLCBAImFwcGxpY2F0aW9uL3Zu
ZC5hZG9iZS54ZmRmIiB9LAorICAgICAgICAgICAgeyAieHBtIiwgQCJpbWFnZS94LXhwaXhtYXAi
IH0sCisgICAgICAgICAgICB7ICJ4c2wiLCBAInRleHQveG1sIiB9LAorICAgICAgICAgICAgeyAi
eHdkIiwgQCJpbWFnZS94LXh3aW5kb3dkdW1wIiB9LAorICAgICAgICAgICAgeyAieHl6IiwgQCJj
aGVtaWNhbC94LXh5eiIgfSwKKyAgICAgICAgICAgIHsgInoiLCBAImFwcGxpY2F0aW9uL3gtY29t
cHJlc3MiIH0sCisgICAgICAgIH07CisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgU29ydGVkQXJy
YXlNYXAgZXh0ZW5zaW9uTWFwIHsgZXh0ZW5zaW9uUGFpcnMgfTsKKyAgICAgICAgdHlwZSA9IChf
X2JyaWRnZSBDRlN0cmluZ1JlZilleHRlbnNpb25NYXAuZ2V0KFN0cmluZyB7IGV4dGVuc2lvbi5n
ZXQoKSB9KTsKKyAgICAgICAgaWYgKCF0eXBlKQorICAgICAgICAgICAgdHlwZSA9IHByZWZlcnJl
ZE1JTUVUeXBlRm9yRmlsZUV4dGVuc2lvbkZyb21VVFR5cGUoZXh0ZW5zaW9uLmdldCgpKTsKICAg
ICB9CiAKLSAgICBpZiAocmVzdWx0ICE9IG9yaWdpbmFsUmVzdWx0KQotICAgICAgICBDRlVSTFJl
c3BvbnNlU2V0TUlNRVR5cGUoY2ZSZXNwb25zZSwgcmVzdWx0LmdldCgpKTsKKyAgICBDRlVSTFJl
c3BvbnNlU2V0TUlNRVR5cGUocmVzcG9uc2UsIHR5cGUgPyB0eXBlLmdldCgpIDogQ0ZTVFIoImFw
cGxpY2F0aW9uL29jdGV0LXN0cmVhbSIpKTsKIH0KKwogI2VuZGlmCiAKIE5TVVJMUmVzcG9uc2Ug
KnN5bnRoZXNpemVSZWRpcmVjdFJlc3BvbnNlSWZOZWNlc3NhcnkoTlNVUkxSZXF1ZXN0ICpjdXJy
ZW50UmVxdWVzdCwgTlNVUkxSZXF1ZXN0ICpuZXdSZXF1ZXN0LCBOU1VSTFJlc3BvbnNlICpyZWRp
cmVjdFJlc3BvbnNlKQpAQCAtMzQ1LDQgKzE5NCwxOSBAQCBOU1VSTFJlc3BvbnNlICpzeW50aGVz
aXplUmVkaXJlY3RSZXNwb25zZUlmTmVjZXNzYXJ5KE5TVVJMUmVxdWVzdCAqY3VycmVudFJlcXVl
cwogICAgIHJldHVybiByZXRhaW5QdHIoUmVzb3VyY2VSZXNwb25zZTo6c3ludGhldGljUmVkaXJl
Y3RSZXNwb25zZShVUkwoW2N1cnJlbnRSZXF1ZXN0IFVSTF0pLCBVUkwoW25ld1JlcXVlc3QgVVJM
XSkpLm5zVVJMUmVzcG9uc2UoKSkuYXV0b3JlbGVhc2UoKTsKIH0KIAorUmV0YWluUHRyPENGU3Ry
aW5nUmVmPiBmaWxlUGF0aEV4dGVuc2lvbihDRlVSTFJlc3BvbnNlUmVmIHJlc3BvbnNlKQorewor
ICAgIGF1dG8gcmVzcG9uc2VVUkwgPSBDRlVSTFJlc3BvbnNlR2V0VVJMKHJlc3BvbnNlKTsKKyAg
ICBpZiAoIVsoX19icmlkZ2UgTlNVUkwgKilyZXNwb25zZVVSTCBpc0ZpbGVVUkxdKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gYWRvcHRDRihDRlVSTENvcHlQYXRoRXh0ZW5z
aW9uKHJlc3BvbnNlVVJMKSk7Cit9CisKK1JldGFpblB0cjxDRlN0cmluZ1JlZj4gcHJlZmVycmVk
TUlNRVR5cGVGb3JGaWxlRXh0ZW5zaW9uRnJvbVVUVHlwZShDRlN0cmluZ1JlZiBleHRlbnNpb24p
Cit7CitBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgorICAgIHJldHVybiBtaW1l
VHlwZUZyb21VVElUcmVlKGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZv
clRhZyhrVVRUYWdDbGFzc0ZpbGVuYW1lRXh0ZW5zaW9uLCBleHRlbnNpb24sIG51bGxwdHIpKS5n
ZXQoKSk7CitBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKK30KKwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQu
bW0gYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2NvY29hL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5t
bQppbmRleCA1YTliYmM3MTVjOWU1Yzg0M2FhZjJiOTE1ZGQ4OGY3MmVmYTE5ZWUxLi5iYTJmMjk1
NWJkNjE1ZGZkNWUxNDNmNzY0OGYyZTAwZWRiZTlhOWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL2NvY29hL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL2NvY29hL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5tbQpAQCAtMTUyLDQw
ICsxNTIsNDAgQEAgc3RhdGljIHZvaWQgbm9ybWFsaXplV2ViUmVzb3VyY2VVUkwoQ0ZNdXRhYmxl
U3RyaW5nUmVmIHdlYlJlc291cmNlVVJMKQogCiBzdGF0aWMgdm9pZCBjb252ZXJ0V2ViUmVzb3Vy
Y2VSZXNwb25zZVRvRGljdGlvbmFyeShDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHByb3BlcnR5TGlz
dCkKIHsKLSAgICBDRkRhdGFSZWYgcmVzcG9uc2VEYXRhID0gc3RhdGljX2Nhc3Q8Q0ZEYXRhUmVm
PihDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9wZXJ0eUxpc3QsIENGU1RSKCJXZWJSZXNvdXJjZVJl
c3BvbnNlIikpKTsgLy8gV2ViUmVzb3VyY2VSZXNwb25zZUtleSBpbiBXZWJSZXNvdXJjZS5tCi0g
ICAgaWYgKENGR2V0VHlwZUlEKHJlc3BvbnNlRGF0YSkgIT0gQ0ZEYXRhR2V0VHlwZUlEKCkpCisg
ICAgYXV0byByZXNwb25zZURhdGEgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZEYXRhUmVmPihDRkRpY3Rp
b25hcnlHZXRWYWx1ZShwcm9wZXJ0eUxpc3QsIENGU1RSKCJXZWJSZXNvdXJjZVJlc3BvbnNlIikp
KTsgLy8gV2ViUmVzb3VyY2VSZXNwb25zZUtleSBpbiBXZWJSZXNvdXJjZS5tCisgICAgaWYgKCFy
ZXNwb25zZURhdGEpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gcmVzcG9uc2UgPSBjcmVh
dGVDRlVSTFJlc3BvbnNlRnJvbVJlc3BvbnNlRGF0YShyZXNwb25zZURhdGEpOwogICAgIGlmICgh
cmVzcG9uc2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0
aW9uYXJ5UmVmPiByZXNwb25zZURpY3Rpb25hcnkgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0
ZU11dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2Fs
bEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOworICAgIGF1dG8gcmVz
cG9uc2VEaWN0aW9uYXJ5ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5
cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpKTsKIAotICAgIFJldGFpblB0cjxDRk11dGFibGVT
dHJpbmdSZWY+IHVybFN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVNdXRhYmxlQ29weShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBDRlVSTEdldFN0cmluZyhDRlVSTFJlc3BvbnNlR2V0VVJM
KHJlc3BvbnNlLmdldCgpKSkpKTsKKyAgICBhdXRvIHVybFN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJp
bmdDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBDRlVSTEdldFN0cmlu
ZyhDRlVSTFJlc3BvbnNlR2V0VVJMKHJlc3BvbnNlLmdldCgpKSkpKTsKICAgICBub3JtYWxpemVX
ZWJSZXNvdXJjZVVSTCh1cmxTdHJpbmcuZ2V0KCkpOwogICAgIENGRGljdGlvbmFyeVNldFZhbHVl
KHJlc3BvbnNlRGljdGlvbmFyeS5nZXQoKSwgQ0ZTVFIoIlVSTCIpLCB1cmxTdHJpbmcuZ2V0KCkp
OwogCi0gICAgUmV0YWluUHRyPENGTXV0YWJsZVN0cmluZ1JlZj4gbWltZVR5cGVTdHJpbmcgPSBh
ZG9wdENGKENGU3RyaW5nQ3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwg
Q0ZVUkxSZXNwb25zZUdldE1JTUVUeXBlKHJlc3BvbnNlLmdldCgpKSkpOworICAgIGF1dG8gbWlt
ZVR5cGVTdHJpbmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgMCwgQ0ZVUkxSZXNwb25zZUdldE1JTUVUeXBlKHJlc3BvbnNlLmdldCgpKSkp
OwogICAgIGNvbnZlcnRNSU1FVHlwZShtaW1lVHlwZVN0cmluZy5nZXQoKSk7CiAgICAgQ0ZEaWN0
aW9uYXJ5U2V0VmFsdWUocmVzcG9uc2VEaWN0aW9uYXJ5LmdldCgpLCBDRlNUUigiTUlNRVR5cGUi
KSwgbWltZVR5cGVTdHJpbmcuZ2V0KCkpOwogCi0gICAgQ0ZTdHJpbmdSZWYgdGV4dEVuY29kaW5n
TmFtZSA9IENGVVJMUmVzcG9uc2VHZXRUZXh0RW5jb2RpbmdOYW1lKHJlc3BvbnNlLmdldCgpKTsK
KyAgICBhdXRvIHRleHRFbmNvZGluZ05hbWUgPSBDRlVSTFJlc3BvbnNlR2V0VGV4dEVuY29kaW5n
TmFtZShyZXNwb25zZS5nZXQoKSk7CiAgICAgaWYgKHRleHRFbmNvZGluZ05hbWUpCiAgICAgICAg
IENGRGljdGlvbmFyeVNldFZhbHVlKHJlc3BvbnNlRGljdGlvbmFyeS5nZXQoKSwgQ0ZTVFIoInRl
eHRFbmNvZGluZ05hbWUiKSwgdGV4dEVuY29kaW5nTmFtZSk7CiAKICAgICBTSW50NjQgZXhwZWN0
ZWRDb250ZW50TGVuZ3RoID0gQ0ZVUkxSZXNwb25zZUdldEV4cGVjdGVkQ29udGVudExlbmd0aChy
ZXNwb25zZS5nZXQoKSk7Ci0gICAgUmV0YWluUHRyPENGTnVtYmVyUmVmPiBleHBlY3RlZENvbnRl
bnRMZW5ndGhOdW1iZXIgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIGtDRk51bWJlclNJbnQ2NFR5cGUsICZleHBlY3RlZENvbnRlbnRMZW5ndGgpKTsKKyAgICBh
dXRvIGV4cGVjdGVkQ29udGVudExlbmd0aE51bWJlciA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVyU0ludDY0VHlwZSwgJmV4cGVjdGVkQ29udGVu
dExlbmd0aCkpOwogICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHJlc3BvbnNlRGljdGlvbmFyeS5n
ZXQoKSwgQ0ZTVFIoImV4cGVjdGVkQ29udGVudExlbmd0aCIpLCBleHBlY3RlZENvbnRlbnRMZW5n
dGhOdW1iZXIuZ2V0KCkpOwogCiAgICAgaWYgKENGSFRUUE1lc3NhZ2VSZWYgaHR0cE1lc3NhZ2Ug
PSBDRlVSTFJlc3BvbnNlR2V0SFRUUFJlc3BvbnNlKHJlc3BvbnNlLmdldCgpKSkgewotICAgICAg
ICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBhbGxIZWFkZXJzID0gYWRvcHRDRihDRkhUVFBN
ZXNzYWdlQ29weUFsbEhlYWRlckZpZWxkcyhodHRwTWVzc2FnZSkpOwotICAgICAgICBSZXRhaW5Q
dHI8Q0ZNdXRhYmxlRGljdGlvbmFyeVJlZj4gYWxsSGVhZGVyRmllbGRzID0gYWRvcHRDRihDRkRp
Y3Rpb25hcnlDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBhbGxIZWFk
ZXJzLmdldCgpKSk7CisgICAgICAgIGF1dG8gYWxsSGVhZGVycyA9IGFkb3B0Q0YoQ0ZIVFRQTWVz
c2FnZUNvcHlBbGxIZWFkZXJGaWVsZHMoaHR0cE1lc3NhZ2UpKTsKKyAgICAgICAgYXV0byBhbGxI
ZWFkZXJGaWVsZHMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGVDb3B5KGtDRkFs
bG9jYXRvckRlZmF1bHQsIDAsIGFsbEhlYWRlcnMuZ2V0KCkpKTsKICAgICAgICAgbm9ybWFsaXpl
SFRUUFJlc3BvbnNlSGVhZGVyRmllbGRzKGFsbEhlYWRlckZpZWxkcy5nZXQoKSk7CiAgICAgICAg
IENGRGljdGlvbmFyeVNldFZhbHVlKHJlc3BvbnNlRGljdGlvbmFyeS5nZXQoKSwgQ0ZTVFIoImFs
bEhlYWRlckZpZWxkcyIpLCBhbGxIZWFkZXJGaWVsZHMuZ2V0KCkpOwogCiAgICAgICAgIENGSW5k
ZXggc3RhdHVzQ29kZSA9IENGSFRUUE1lc3NhZ2VHZXRSZXNwb25zZVN0YXR1c0NvZGUoaHR0cE1l
c3NhZ2UpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IHN0YXR1c0NvZGVOdW1iZXIg
PSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckNG
SW5kZXhUeXBlLCAmc3RhdHVzQ29kZSkpOworICAgICAgICBhdXRvIHN0YXR1c0NvZGVOdW1iZXIg
PSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckNG
SW5kZXhUeXBlLCAmc3RhdHVzQ29kZSkpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShy
ZXNwb25zZURpY3Rpb25hcnkuZ2V0KCksIENGU1RSKCJzdGF0dXNDb2RlIiksIHN0YXR1c0NvZGVO
dW1iZXIuZ2V0KCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
UGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW0gYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1vZHVsZU1h
Yy5tbQppbmRleCBiM2VhZTI4YTZhYWRkMDE5MDYyMGE0MWE0NDkwMzg3ZDQ0MTNhM2Q5Li5mYzNh
MTdlYTk5Njk5Y2MyN2YxMDFjZDdlNzM1MGE2OTkyNjMzZDk5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1vZHVsZU1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRz
Y2FwZVBsdWdpbk1vZHVsZU1hYy5tbQpAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCAiUGx1Z2lu
U2FuZGJveFByb2ZpbGUuaCIKICNpbXBvcnQgPHd0Zi9IYXNoU2V0Lmg+CiAjaW1wb3J0IDx3dGYv
TWFpblRocmVhZC5oPgorI2ltcG9ydCA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+CiAjaW1wb3J0IDx3
dGYvc3BpL2NmL0NGQnVuZGxlU1BJLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdUb0ludGVn
ZXJDb252ZXJzaW9uLmg+CiAKQEAgLTY3LDc4ICs2OCw2OCBAQCBzdGF0aWMgYm9vbCBnZXRQbHVn
aW5BcmNoaXRlY3R1cmUoQ0ZCdW5kbGVSZWYgYnVuZGxlLCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVn
aW4pCiAKIHN0YXRpYyBib29sIGdldFBsdWdpbkluZm9Gcm9tUHJvcGVydHlMaXN0cyhDRkJ1bmRs
ZVJlZiBidW5kbGUsIFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbikKIHsKLSAgICBSZXRhaW5QdHI8
Q0ZEaWN0aW9uYXJ5UmVmPiBtaW1lVHlwZXMgPSBzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+
KENGQnVuZGxlR2V0VmFsdWVGb3JJbmZvRGljdGlvbmFyeUtleShidW5kbGUsIENGU1RSKCJXZWJQ
bHVnaW5NSU1FVHlwZXMiKSkpOwotICAgIGlmICghbWltZVR5cGVzIHx8IENGR2V0VHlwZUlEKG1p
bWVUeXBlcy5nZXQoKSkgIT0gQ0ZEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpCisgICAgUmV0YWluUHRy
IG1pbWVUeXBlcyA9IGR5bmFtaWNfY2ZfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGQnVuZGxlR2V0
VmFsdWVGb3JJbmZvRGljdGlvbmFyeUtleShidW5kbGUsIENGU1RSKCJXZWJQbHVnaW5NSU1FVHlw
ZXMiKSkpOworICAgIGlmICghbWltZVR5cGVzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICAvLyBHZXQgdGhlIHBsdWctaW4gbmFtZS4KLSAgICBDRlN0cmluZ1JlZiBwbHVnaW5OYW1lID0g
c3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQnVuZGxlR2V0VmFsdWVGb3JJbmZvRGljdGlvbmFy
eUtleShidW5kbGUsIENGU1RSKCJXZWJQbHVnaW5OYW1lIikpKTsKLSAgICBpZiAocGx1Z2luTmFt
ZSAmJiBDRkdldFR5cGVJRChwbHVnaW5OYW1lKSA9PSBDRlN0cmluZ0dldFR5cGVJRCgpKQorICAg
IGF1dG8gcGx1Z2luTmFtZSA9IGR5bmFtaWNfY2ZfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZCdW5kbGVH
ZXRWYWx1ZUZvckluZm9EaWN0aW9uYXJ5S2V5KGJ1bmRsZSwgQ0ZTVFIoIldlYlBsdWdpbk5hbWUi
KSkpOworICAgIGlmIChwbHVnaW5OYW1lKQogICAgICAgICBwbHVnaW4uaW5mby5uYW1lID0gcGx1
Z2luTmFtZTsKICAgICAKICAgICAvLyBHZXQgdGhlIHBsdWctaW4gZGVzY3JpcHRpb24uCi0gICAg
Q0ZTdHJpbmdSZWYgcGx1Z2luRGVzY3JpcHRpb24gPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4o
Q0ZCdW5kbGVHZXRWYWx1ZUZvckluZm9EaWN0aW9uYXJ5S2V5KGJ1bmRsZSwgQ0ZTVFIoIldlYlBs
dWdpbkRlc2NyaXB0aW9uIikpKTsKLSAgICBpZiAocGx1Z2luRGVzY3JpcHRpb24gJiYgQ0ZHZXRU
eXBlSUQocGx1Z2luRGVzY3JpcHRpb24pID09IENGU3RyaW5nR2V0VHlwZUlEKCkpCisgICAgYXV0
byBwbHVnaW5EZXNjcmlwdGlvbiA9IGR5bmFtaWNfY2ZfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZCdW5k
bGVHZXRWYWx1ZUZvckluZm9EaWN0aW9uYXJ5S2V5KGJ1bmRsZSwgQ0ZTVFIoIldlYlBsdWdpbkRl
c2NyaXB0aW9uIikpKTsKKyAgICBpZiAocGx1Z2luRGVzY3JpcHRpb24pCiAgICAgICAgIHBsdWdp
bi5pbmZvLmRlc2MgPSBwbHVnaW5EZXNjcmlwdGlvbjsKICAgICAKICAgICAvLyBHZXQgdGhlIE1J
TUUgdHlwZSBtYXBwaW5nIGRpY3Rpb25hcnkuCiAgICAgQ0ZJbmRleCBudW1NaW1lVHlwZXMgPSBD
RkRpY3Rpb25hcnlHZXRDb3VudChtaW1lVHlwZXMuZ2V0KCkpOyAgICAgICAgICAKLSAgICBWZWN0
b3I8Q0ZTdHJpbmdSZWY+IG1pbWVUeXBlc1ZlY3RvcihudW1NaW1lVHlwZXMpOwotICAgIFZlY3Rv
cjxDRkRpY3Rpb25hcnlSZWY+IG1pbWVUeXBlSW5mb1ZlY3RvcihudW1NaW1lVHlwZXMpOwotICAg
IENGRGljdGlvbmFyeUdldEtleXNBbmRWYWx1ZXMobWltZVR5cGVzLmdldCgpLCByZWludGVycHJl
dF9jYXN0PGNvbnN0IHZvaWQqKj4obWltZVR5cGVzVmVjdG9yLmRhdGEoKSksIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3Qgdm9pZCoqPihtaW1lVHlwZUluZm9WZWN0b3IuZGF0YSgpKSk7CisgICAgVmVj
dG9yPENGVHlwZVJlZj4gbWltZVR5cGVzVmVjdG9yKG51bU1pbWVUeXBlcyk7CisgICAgVmVjdG9y
PENGVHlwZVJlZj4gbWltZVR5cGVJbmZvVmVjdG9yKG51bU1pbWVUeXBlcyk7CisgICAgQ0ZEaWN0
aW9uYXJ5R2V0S2V5c0FuZFZhbHVlcyhtaW1lVHlwZXMuZ2V0KCksIG1pbWVUeXBlc1ZlY3Rvci5k
YXRhKCksIG1pbWVUeXBlSW5mb1ZlY3Rvci5kYXRhKCkpOwogICAgIAogICAgIGZvciAoQ0ZJbmRl
eCBpID0gMDsgaSA8IG51bU1pbWVUeXBlczsgKytpKSB7CiAgICAgICAgIFdlYkNvcmU6Ok1pbWVD
bGFzc0luZm8gbWltZUNsYXNzSW5mbzsKICAgICAgICAgCiAgICAgICAgIC8vIElmIHRoaXMgTUlN
RSB0eXBlIGlzIGludmFsaWQsIGlnbm9yZSBpdC4KLSAgICAgICAgQ0ZTdHJpbmdSZWYgbWltZVR5
cGUgPSBtaW1lVHlwZXNWZWN0b3JbaV07Ci0gICAgICAgIGlmICghbWltZVR5cGUgfHwgQ0ZHZXRU
eXBlSUQobWltZVR5cGUpICE9IENGU3RyaW5nR2V0VHlwZUlEKCkgfHwgQ0ZTdHJpbmdHZXRMZW5n
dGgobWltZVR5cGUpID09IDApCisgICAgICAgIGF1dG8gbWltZVR5cGUgPSBkeW5hbWljX2NmX2Nh
c3Q8Q0ZTdHJpbmdSZWY+KG1pbWVUeXBlc1ZlY3RvcltpXSk7CisgICAgICAgIGlmICghbWltZVR5
cGUgfHwgIUNGU3RyaW5nR2V0TGVuZ3RoKG1pbWVUeXBlKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCiAgICAgICAgIC8vIElmIHRoaXMgTUlNRSB0eXBlIGRvZXNuJ3QgaGF2ZSBhIHZhbGlkIGlu
Zm8gZGljdGlvbmFyeSwgaWdub3JlIGl0LgotICAgICAgICBDRkRpY3Rpb25hcnlSZWYgbWltZVR5
cGVJbmZvID0gbWltZVR5cGVJbmZvVmVjdG9yW2ldOwotICAgICAgICBpZiAoIW1pbWVUeXBlSW5m
byB8fCBDRkdldFR5cGVJRChtaW1lVHlwZUluZm8pICE9IENGRGljdGlvbmFyeUdldFR5cGVJRCgp
KQorICAgICAgICBhdXRvIG1pbWVUeXBlSW5mbyA9IGR5bmFtaWNfY2ZfY2FzdDxDRkRpY3Rpb25h
cnlSZWY+KG1pbWVUeXBlSW5mb1ZlY3RvcltpXSk7CisgICAgICAgIGlmICghbWltZVR5cGVJbmZv
KQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgLy8gRklYTUU6IENvbnNpZGVyIHN0
b3JpbmcgZGlzYWJsZWQgTUlNRSB0eXBlcy4KLSAgICAgICAgQ0ZUeXBlUmVmIGlzRW5hYmxlZCA9
IENGRGljdGlvbmFyeUdldFZhbHVlKG1pbWVUeXBlSW5mbywgQ0ZTVFIoIldlYlBsdWdpblR5cGVF
bmFibGVkIikpOworICAgICAgICBhdXRvIGlzRW5hYmxlZCA9IENGRGljdGlvbmFyeUdldFZhbHVl
KG1pbWVUeXBlSW5mbywgQ0ZTVFIoIldlYlBsdWdpblR5cGVFbmFibGVkIikpOwogICAgICAgICBp
ZiAoaXNFbmFibGVkKSB7Ci0gICAgICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQoaXNFbmFibGVkKSA9
PSBDRk51bWJlckdldFR5cGVJRCgpKSB7CisgICAgICAgICAgICBpZiAoYXV0byBudW1iZXIgPSBk
eW5hbWljX2NmX2Nhc3Q8Q0ZOdW1iZXJSZWY+KGlzRW5hYmxlZCkpIHsKICAgICAgICAgICAgICAg
ICBpbnQgdmFsdWU7Ci0gICAgICAgICAgICAgICAgaWYgKCFDRk51bWJlckdldFZhbHVlKHN0YXRp
Y19jYXN0PENGTnVtYmVyUmVmPihpc0VuYWJsZWQpLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmdmFsdWUp
IHx8ICF2YWx1ZSkKKyAgICAgICAgICAgICAgICBpZiAoIUNGTnVtYmVyR2V0VmFsdWUobnVtYmVy
LCBrQ0ZOdW1iZXJJbnRUeXBlLCAmdmFsdWUpIHx8ICF2YWx1ZSkKICAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKENGR2V0VHlwZUlEKGlzRW5hYmxl
ZCkgPT0gQ0ZCb29sZWFuR2V0VHlwZUlEKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoIUNGQm9v
bGVhbkdldFZhbHVlKHN0YXRpY19jYXN0PENGQm9vbGVhblJlZj4oaXNFbmFibGVkKSkpCi0gICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICB9IGVsc2UgaWYgKGlzRW5hYmxlZCAhPSBrQ0ZCb29sZWFuVHJ1ZSkKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIEdldCB0aGUgTUlNRSB0eXBlIGRl
c2NyaXB0aW9uLgotICAgICAgICBDRlN0cmluZ1JlZiBtaW1lVHlwZURlc2NyaXB0aW9uID0gc3Rh
dGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKG1pbWVUeXBlSW5mbywg
Q0ZTVFIoIldlYlBsdWdpblR5cGVEZXNjcmlwdGlvbiIpKSk7Ci0gICAgICAgIGlmIChtaW1lVHlw
ZURlc2NyaXB0aW9uICYmIENGR2V0VHlwZUlEKG1pbWVUeXBlRGVzY3JpcHRpb24pICE9IENGU3Ry
aW5nR2V0VHlwZUlEKCkpCi0gICAgICAgICAgICBtaW1lVHlwZURlc2NyaXB0aW9uID0gMDsKLQog
ICAgICAgICBtaW1lQ2xhc3NJbmZvLnR5cGUgPSBTdHJpbmcobWltZVR5cGUpLmNvbnZlcnRUb0FT
Q0lJTG93ZXJjYXNlKCk7Ci0gICAgICAgIG1pbWVDbGFzc0luZm8uZGVzYyA9IG1pbWVUeXBlRGVz
Y3JpcHRpb247CisgICAgICAgIG1pbWVDbGFzc0luZm8uZGVzYyA9IGR5bmFtaWNfY2ZfY2FzdDxD
RlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUobWltZVR5cGVJbmZvLCBDRlNUUigiV2Vi
UGx1Z2luVHlwZURlc2NyaXB0aW9uIikpKTsKIAogICAgICAgICAvLyBOb3cgZ2V0IHRoZSBleHRl
bnNpb25zIGZvciB0aGlzIE1JTUUgdHlwZS4KICAgICAgICAgQ0ZJbmRleCBudW1FeHRlbnNpb25z
ID0gMDsKLSAgICAgICAgQ0ZBcnJheVJlZiBleHRlbnNpb25zQXJyYXkgPSBzdGF0aWNfY2FzdDxD
RkFycmF5UmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShtaW1lVHlwZUluZm8sIENGU1RSKCJXZWJQ
bHVnaW5FeHRlbnNpb25zIikpKTsKLSAgICAgICAgaWYgKGV4dGVuc2lvbnNBcnJheSAmJiBDRkdl
dFR5cGVJRChleHRlbnNpb25zQXJyYXkpID09IENGQXJyYXlHZXRUeXBlSUQoKSkKKyAgICAgICAg
YXV0byBleHRlbnNpb25zQXJyYXkgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZBcnJheVJlZj4oQ0ZEaWN0
aW9uYXJ5R2V0VmFsdWUobWltZVR5cGVJbmZvLCBDRlNUUigiV2ViUGx1Z2luRXh0ZW5zaW9ucyIp
KSk7CisgICAgICAgIGlmIChleHRlbnNpb25zQXJyYXkpCiAgICAgICAgICAgICBudW1FeHRlbnNp
b25zID0gQ0ZBcnJheUdldENvdW50KGV4dGVuc2lvbnNBcnJheSk7CiAKICAgICAgICAgZm9yIChD
RkluZGV4IGkgPSAwOyBpIDwgbnVtRXh0ZW5zaW9uczsgKytpKSB7Ci0gICAgICAgICAgICBDRlN0
cmluZ1JlZiBleHRlbnNpb24gPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZBcnJheUdldFZh
bHVlQXRJbmRleChleHRlbnNpb25zQXJyYXksIGkpKTsKLSAgICAgICAgICAgIGlmICghZXh0ZW5z
aW9uIHx8IENGR2V0VHlwZUlEKGV4dGVuc2lvbikgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkKKyAg
ICAgICAgICAgIGF1dG8gZXh0ZW5zaW9uID0gZHluYW1pY19jZl9jYXN0PENGU3RyaW5nUmVmPihD
RkFycmF5R2V0VmFsdWVBdEluZGV4KGV4dGVuc2lvbnNBcnJheSwgaSkpOworICAgICAgICAgICAg
aWYgKCFleHRlbnNpb24pCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAg
IC8vIFRoZSBEaXZYIHBsdWctaW4gbGlzdHMgbXVsdGlwbGUgZXh0ZW5zaW9ucyBpbiBhIGNvbW1h
IHNlcGFyYXRlZCBzdHJpbmcgaW5zdGVhZCBvZiB1c2luZwogICAgICAgICAgICAgLy8gbXVsdGlw
bGUgYXJyYXkgZWxlbWVudHMgaW4gdGhlIHByb3BlcnR5IGxpc3QuIFdvcmsgYXJvdW5kIHRoaXMg
aGVyZSBieSBzcGxpdHRpbmcgdGhlCiAgICAgICAgICAgICAvLyBleHRlbnNpb24gc3RyaW5nIGlu
dG8gY29tcG9uZW50cy4KLSAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGV4dGVuc2lvbkNvbXBv
bmVudHMgPSBTdHJpbmcoZXh0ZW5zaW9uKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpLnNwbGl0
KCcsJyk7Ci0KLSAgICAgICAgICAgIGZvciAoYXV0byYgY29tcG9uZW50IDogZXh0ZW5zaW9uQ29t
cG9uZW50cykKKyAgICAgICAgICAgIGZvciAoYXV0byYgY29tcG9uZW50IDogU3RyaW5nKGV4dGVu
c2lvbikuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKS5zcGxpdCgnLCcpKQogICAgICAgICAgICAg
ICAgIG1pbWVDbGFzc0luZm8uZXh0ZW5zaW9ucy5hcHBlbmQoY29tcG9uZW50KTsKICAgICAgICAg
fQogCkBAIC0xNTEsMTAgKzE0MiwxMCBAQCBzdGF0aWMgYm9vbCBnZXRQbHVnaW5JbmZvRnJvbVBy
b3BlcnR5TGlzdHMoQ0ZCdW5kbGVSZWYgYnVuZGxlLCBQbHVnaW5Nb2R1bGVJbmZvJgogCiBib29s
IE5ldHNjYXBlUGx1Z2luTW9kdWxlOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1Z2lu
UGF0aCwgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luKQogewotICAgIFJldGFpblB0cjxDRlVSTFJl
Zj4gYnVuZGxlVVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aChrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBwbHVnaW5QYXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlVS
TFBPU0lYUGF0aFN0eWxlLCBmYWxzZSkpOworICAgIGF1dG8gYnVuZGxlVVJMID0gYWRvcHRDRihD
RlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwbHVnaW5Q
YXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBmYWxzZSkp
OwogICAgIAogICAgIC8vIFRyeSB0byBpbml0aWFsaXplIHRoZSBidW5kbGUuCi0gICAgUmV0YWlu
UHRyPENGQnVuZGxlUmVmPiBidW5kbGUgPSBhZG9wdENGKF9DRkJ1bmRsZUNyZWF0ZVVuaXF1ZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCBidW5kbGVVUkwuZ2V0KCkpKTsKKyAgICBhdXRvIGJ1bmRsZSA9
IGFkb3B0Q0YoX0NGQnVuZGxlQ3JlYXRlVW5pcXVlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1bmRs
ZVVSTC5nZXQoKSkpOwogICAgIGlmICghYnVuZGxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgCkBAIC0xNzAsMTUgKzE2MSw4IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBs
dWdpbkluZm8oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQbHVnaW5Nb2R1bGVJCiAKICAgICBw
bHVnaW4ucGF0aCA9IHBsdWdpblBhdGg7CiAgICAgcGx1Z2luLmJ1bmRsZUlkZW50aWZpZXIgPSBD
RkJ1bmRsZUdldElkZW50aWZpZXIoYnVuZGxlLmdldCgpKTsKLSAgICBpZiAoQ0ZUeXBlUmVmIHZl
cnNpb25UeXBlUmVmID0gQ0ZCdW5kbGVHZXRWYWx1ZUZvckluZm9EaWN0aW9uYXJ5S2V5KGJ1bmRs
ZS5nZXQoKSwga0NGQnVuZGxlVmVyc2lvbktleSkpIHsKLSAgICAgICAgaWYgKENGR2V0VHlwZUlE
KHZlcnNpb25UeXBlUmVmKSA9PSBDRlN0cmluZ0dldFR5cGVJRCgpKQotICAgICAgICAgICAgcGx1
Z2luLnZlcnNpb25TdHJpbmcgPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4odmVyc2lvblR5cGVS
ZWYpOwotICAgIH0KLQotICAgIGlmIChDRlR5cGVSZWYgc2hvcnRWZXJzaW9uVHlwZVJlZiA9IENG
QnVuZGxlR2V0VmFsdWVGb3JJbmZvRGljdGlvbmFyeUtleShidW5kbGUuZ2V0KCksIENGU1RSKCJD
RkJ1bmRsZVNob3J0VmVyc2lvblN0cmluZyIpKSkgewotICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQo
c2hvcnRWZXJzaW9uVHlwZVJlZikgPT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkKLSAgICAgICAgICAg
IHBsdWdpbi5zaG9ydFZlcnNpb25TdHJpbmcgPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oc2hv
cnRWZXJzaW9uVHlwZVJlZik7Ci0gICAgfQorICAgIHBsdWdpbi52ZXJzaW9uU3RyaW5nID0gZHlu
YW1pY19jZl9jYXN0PENGU3RyaW5nUmVmPihDRkJ1bmRsZUdldFZhbHVlRm9ySW5mb0RpY3Rpb25h
cnlLZXkoYnVuZGxlLmdldCgpLCBrQ0ZCdW5kbGVWZXJzaW9uS2V5KSk7CisgICAgcGx1Z2luLnNo
b3J0VmVyc2lvblN0cmluZyA9IGR5bmFtaWNfY2ZfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZCdW5kbGVH
ZXRWYWx1ZUZvckluZm9EaWN0aW9uYXJ5S2V5KGJ1bmRsZS5nZXQoKSwgQ0ZTVFIoIkNGQnVuZGxl
U2hvcnRWZXJzaW9uU3RyaW5nIikpKTsKIAogICAgIGlmICghZ2V0UGx1Z2luSW5mb0Zyb21Qcm9w
ZXJ0eUxpc3RzKGJ1bmRsZS5nZXQoKSwgcGx1Z2luKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnRDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAppbmRleCAxNmRjMTQ0ZGNjOThlMjU2YzA1MzI2N2Y1
MmQxZDNlNGU0ODk1ODNkLi5jNmJkZWE2OGM1ZTZjNTBmYWUwOWJlZTBhNzY3MWY1NTBhMmFiNDY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudENGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA4LTIwMjEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MSw0NyArNDEsMzYgQEAKICNlbmRpZgog
I2VuZGlmCiAKLS8vIE5PVEU6IFRoZXNlIG5lZWQgdG8gYXBwZWFyIHVwIHRvcCwgYXMgdGhleSBk
ZWNsYXJlIG1hY3JvcwotLy8gdXNlZCBpbiB0aGUgSlMgYW5kIFdURiBoZWFkZXJzLgorLy8gTk9U
RTogVGhlc2UgbmVlZCB0byBhcHBlYXIgdXAgdG9wLCBhcyB0aGV5IGRlY2xhcmUgbWFjcm9zIHVz
ZWQgaW4gdGhlIEpTIGFuZCBXVEYgaGVhZGVycy4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9K
U0V4cG9ydE1hY3Jvcy5oPgogI2luY2x1ZGUgPHd0Zi9FeHBvcnRNYWNyb3MuaD4KIAogI2luY2x1
ZGUgIldlYkluc3BlY3RvckNsaWVudC5oIgogCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29y
ZUZvdW5kYXRpb24uaD4KLQogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1BhZ2UuaD4KLQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLXN0YXRpYyBjb25z
dCBjaGFyKiBpbnNwZWN0b3JTdGFydHNBdHRhY2hlZFNldHRpbmcgPSAiaW5zcGVjdG9yU3RhcnRz
QXR0YWNoZWQiOwotc3RhdGljIGNvbnN0IGNoYXIqIGluc3BlY3RvckF0dGFjaERpc2FibGVkU2V0
dGluZyA9ICJpbnNwZWN0b3JBdHRhY2hEaXNhYmxlZCI7CitzdGF0aWMgY29uc3RleHByIGNvbnN0
IGNoYXIqIGluc3BlY3RvclN0YXJ0c0F0dGFjaGVkU2V0dGluZyA9ICJpbnNwZWN0b3JTdGFydHNB
dHRhY2hlZCI7CitzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIGluc3BlY3RvckF0dGFjaERp
c2FibGVkU2V0dGluZyA9ICJpbnNwZWN0b3JBdHRhY2hEaXNhYmxlZCI7CiAKLXN0YXRpYyBpbmxp
bmUgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjcmVhdGVLZXlGb3JQcmVmZXJlbmNlcyhjb25zdCBT
dHJpbmcmIGtleSkKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGNyZWF0ZUtleUZvclBy
ZWZlcmVuY2VzKGNvbnN0IFN0cmluZyYga2V5KQogewogICAgIHJldHVybiBhZG9wdENGKENGU3Ry
aW5nQ3JlYXRlV2l0aEZvcm1hdCgwLCAwLCBDRlNUUigiV2ViS2l0IFdlYiBJbnNwZWN0b3IgU2V0
dGluZyAtICVAIiksIGtleS5jcmVhdGVDRlN0cmluZygpLmdldCgpKSk7CiB9CiAKLXN0YXRpYyB2
b2lkIHBvcHVsYXRlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwgU3RyaW5nKiBzZXR0aW5nKQor
c3RhdGljIFN0cmluZyBsb2FkU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSkKIHsKLSAgICBSZXRh
aW5QdHI8Q0ZTdHJpbmdSZWY+IHByZWZlcmVuY2VzS2V5ID0gY3JlYXRlS2V5Rm9yUHJlZmVyZW5j
ZXMoa2V5KTsKLSAgICBSZXRhaW5QdHI8Q0ZQcm9wZXJ0eUxpc3RSZWY+IHZhbHVlID0gYWRvcHRD
RihDRlByZWZlcmVuY2VzQ29weUFwcFZhbHVlKHByZWZlcmVuY2VzS2V5LmdldCgpLCBrQ0ZQcmVm
ZXJlbmNlc0N1cnJlbnRBcHBsaWNhdGlvbikpOwotCi0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgQ0ZUeXBlSUQgdHlwZSA9IENGR2V0VHlwZUlEKHZhbHVlLmdldCgpKTsK
LSAgICBpZiAodHlwZSA9PSBDRlN0cmluZ0dldFR5cGVJRCgpKQotICAgICAgICAqc2V0dGluZyA9
IHN0YXRpY19jYXN0PFN0cmluZz4oc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KHZhbHVlLmdldCgp
KSk7Ci0gICAgZWxzZSBpZiAodHlwZSA9PSBDRkJvb2xlYW5HZXRUeXBlSUQoKSkKLSAgICAgICAg
KnNldHRpbmcgPSBzdGF0aWNfY2FzdDxib29sPihDRkJvb2xlYW5HZXRWYWx1ZShzdGF0aWNfY2Fz
dDxDRkJvb2xlYW5SZWY+KHZhbHVlLmdldCgpKSkpID8gInRydWUiIDogImZhbHNlIjsKLSAgICBl
bHNlCi0gICAgICAgICpzZXR0aW5nID0gZW1wdHlTdHJpbmcoKTsKKyAgICBhdXRvIHZhbHVlID0g
YWRvcHRDRihDRlByZWZlcmVuY2VzQ29weUFwcFZhbHVlKGNyZWF0ZUtleUZvclByZWZlcmVuY2Vz
KGtleSkuZ2V0KCksIGtDRlByZWZlcmVuY2VzQ3VycmVudEFwcGxpY2F0aW9uKSk7CisgICAgaWYg
KGF1dG8gc3RyaW5nID0gZHluYW1pY19jZl9jYXN0PENGU3RyaW5nUmVmPih2YWx1ZS5nZXQoKSkp
CisgICAgICAgIHJldHVybiBzdHJpbmc7CisgICAgaWYgKHZhbHVlID09IGtDRkJvb2xlYW5UcnVl
KQorICAgICAgICByZXR1cm4gInRydWUiX3M7CisgICAgaWYgKHZhbHVlID09IGtDRkJvb2xlYW5G
YWxzZSkKKyAgICAgICAgcmV0dXJuICJmYWxzZSJfczsKKyAgICByZXR1cm4geyB9OwogfQogCiBz
dGF0aWMgdm9pZCBzdG9yZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYg
c2V0dGluZykKQEAgLTEwMSwxMSArOTAsNyBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6c2Vu
ZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIAogYm9vbCBXZWJJbnNw
ZWN0b3JDbGllbnQ6Omluc3BlY3RvckF0dGFjaERpc2FibGVkKCkKIHsKLSAgICBTdHJpbmcgdmFs
dWU7Ci0gICAgcG9wdWxhdGVTZXR0aW5nKGluc3BlY3RvckF0dGFjaERpc2FibGVkU2V0dGluZywg
JnZhbHVlKTsKLSAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgcmV0dXJuIHZhbHVlID09ICJ0cnVlIjsKKyAgICByZXR1cm4gbG9hZFNldHRpbmcoaW5z
cGVjdG9yQXR0YWNoRGlzYWJsZWRTZXR0aW5nKSA9PSAidHJ1ZSI7CiB9CiAKIHZvaWQgV2ViSW5z
cGVjdG9yQ2xpZW50OjpzZXRJbnNwZWN0b3JBdHRhY2hEaXNhYmxlZChib29sIGRpc2FibGVkKQpA
QCAtMTIwLDExICsxMDUsNyBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6ZGVsZXRlSW5zcGVj
dG9yU3RhcnRzQXR0YWNoZWQoKQogCiBib29sIFdlYkluc3BlY3RvckNsaWVudDo6aW5zcGVjdG9y
U3RhcnRzQXR0YWNoZWQoKQogewotICAgIFN0cmluZyB2YWx1ZTsKLSAgICBwb3B1bGF0ZVNldHRp
bmcoaW5zcGVjdG9yU3RhcnRzQXR0YWNoZWRTZXR0aW5nLCAmdmFsdWUpOwotICAgIGlmICh2YWx1
ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiB2YWx1ZSA9PSAi
dHJ1ZSI7CisgICAgcmV0dXJuIGxvYWRTZXR0aW5nKGluc3BlY3RvclN0YXJ0c0F0dGFjaGVkU2V0
dGluZykgPT0gInRydWUiOwogfQogCiB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6c2V0SW5zcGVj
dG9yU3RhcnRzQXR0YWNoZWQoYm9vbCBhdHRhY2hlZCkKQEAgLTE0MCwyNCArMTIxLDEwIEBAIHZv
aWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpkZWxldGVJbnNwZWN0b3JBdHRhY2hEaXNhYmxlZCgpCiBz
dGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6U2V0
dGluZ3M+IFdlYkluc3BlY3RvckNsaWVudDo6Y3JlYXRlRnJvbnRlbmRTZXR0aW5ncygpCiB7CiAg
ICAgY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRTZXR0aW5nc0NGIDogcHVibGljIFdlYkNvcmU6Oklu
c3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OlNldHRpbmdzIHsKLSAgICBwdWJsaWM6Ci0gICAg
ICAgIHZpcnR1YWwgfkluc3BlY3RvckZyb250ZW5kU2V0dGluZ3NDRigpIHsgfQotICAgICAgICB2
aXJ0dWFsIFN0cmluZyBnZXRQcm9wZXJ0eShjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIFN0cmluZyB2YWx1ZTsKLSAgICAgICAgICAgIHBvcHVsYXRlU2V0dGluZyhu
YW1lLCAmdmFsdWUpOwotICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgICAgICB9Ci0KLSAg
ICAgICAgdmlydHVhbCB2b2lkIHNldFByb3BlcnR5KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKLSAgICAgICAgewotICAgICAgICAgICAgc3RvcmVTZXR0aW5nKG5hbWUs
IHZhbHVlKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZpcnR1YWwgdm9pZCBkZWxldGVQcm9wZXJ0
eShjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGRlbGV0ZVNldHRp
bmcobmFtZSk7Ci0gICAgICAgIH0KKyAgICBwcml2YXRlOgorICAgICAgICBTdHJpbmcgZ2V0UHJv
cGVydHkoY29uc3QgU3RyaW5nJiBuYW1lKSBmaW5hbCB7IHJldHVybiBsb2FkU2V0dGluZyhuYW1l
KTsgfQorICAgICAgICB2b2lkIHNldFByb3BlcnR5KGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSkgZmluYWwgeyBzdG9yZVNldHRpbmcobmFtZSwgdmFsdWUpOyB9CisgICAg
ICAgIHZvaWQgZGVsZXRlUHJvcGVydHkoY29uc3QgU3RyaW5nJiBuYW1lKSBmaW5hbCB7IGRlbGV0
ZVNldHRpbmcobmFtZSk7IH0KICAgICB9OwogICAgIHJldHVybiBtYWtlVW5pcXVlPEluc3BlY3Rv
ckZyb250ZW5kU2V0dGluZ3NDRj4oKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1BsdWdpbnMvV2ViQmFzZVBsdWdpblBhY2thZ2UubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9QbHVnaW5zL1dlYkJhc2VQbHVnaW5QYWNrYWdlLm1tCmluZGV4IDgwYTNiNGY0YTgy
NzQyNGVlZGRlZjk3N2Y3ZTYxODU5NjQ3ZDE2YWQuLmQ5OWVmMjgxOTM4YmRjZTM5OWVhMDJiMmFi
MTBmOTc4YTZmYTMzMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdp
bnMvV2ViQmFzZVBsdWdpblBhY2thZ2UubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
UGx1Z2lucy9XZWJCYXNlUGx1Z2luUGFja2FnZS5tbQpAQCAtMzc3LDE1ICszNzcsMTEgQEAgLSAo
U3RyaW5nKWJ1bmRsZUlkZW50aWZpZXIKIAogLSAoU3RyaW5nKWJ1bmRsZVZlcnNpb24KIHsKLSAg
ICBDRkRpY3Rpb25hcnlSZWYgaW5mb0RpY3Rpb25hcnkgPSBDRkJ1bmRsZUdldEluZm9EaWN0aW9u
YXJ5KGNmQnVuZGxlLmdldCgpKTsKKyAgICBhdXRvIGluZm9EaWN0aW9uYXJ5ID0gQ0ZCdW5kbGVH
ZXRJbmZvRGljdGlvbmFyeShjZkJ1bmRsZS5nZXQoKSk7CiAgICAgaWYgKCFpbmZvRGljdGlvbmFy
eSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgQ0ZUeXBlUmVmIGJ1bmRsZVZlcnNp
b25TdHJpbmcgPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShpbmZvRGljdGlvbmFyeSwga0NGQnVuZGxl
VmVyc2lvbktleSk7Ci0gICAgaWYgKCFidW5kbGVWZXJzaW9uU3RyaW5nIHx8IENGR2V0VHlwZUlE
KGJ1bmRsZVZlcnNpb25TdHJpbmcpICE9IENGU3RyaW5nR2V0VHlwZUlEKCkpCi0gICAgICAgIHJl
dHVybiBTdHJpbmcoKTsKLQotICAgIHJldHVybiByZWludGVycHJldF9jYXN0PENGU3RyaW5nUmVm
PihidW5kbGVWZXJzaW9uU3RyaW5nKTsKKyAgICByZXR1cm4gZHluYW1pY19jZl9jYXN0PENGU3Ry
aW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShpbmZvRGljdGlvbmFyeSwga0NGQnVuZGxlVmVy
c2lvbktleSkpOwogfQogCiBAZW5kCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436549</attachid>
            <date>2021-08-26 12:35:46 -0700</date>
            <delta_ts>2021-08-26 18:42:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229414-20210826123545.patch</filename>
            <type>text/plain</type>
            <size>105775</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNjQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ZGY4YTVhYWQyMGRjYzk2ZmZhNTNiMGUwY2YzOGE5NjcwOTMyMjQwLi45NWVhM2M0MmJlYzhiYWQx
MzdlNjMwODA1MWJmZDk0MzU0MmY4ZGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAyMS0wOC0yNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgQ3V0IGRvd24gb24gdXNlIG9mIENGR2V0VHlwZUlELCB1c2luZyBkeW5hbWljX2Nm
X2Nhc3QgaW5zdGVhZDsgcmVsYXRlZCBzdHJlYW1saW5pbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTQxNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1v
dGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJ
bnNwZWN0b3JYUENDb25uZWN0aW9uOjpkZXNlcmlhbGl6ZU1lc3NhZ2UpOiBVc2UKKyAgICAgICAg
ZHluYW1pY19jZl9jYXN0IHRvIGNoZWNrIHR5cGUgaW5zdGVhZCBvZiBDRkdldFR5cGVJRC4gQWxz
byBkbyB0aGUKKyAgICAgICAgY2hlY2sgYXQgcnVudGltZSByYXRoZXIgdGhhbiBhc3NlcnRpbmcu
IE5vdCByZWFsbHkgc3VmZmljaWVudCB0bworICAgICAgICBhc3NlcnQgY29ycmVjdCB0eXBlIGZv
ciBzb21ldGhpbmcgdGhhdCBjb21lcyBvdmVyIGFuIFhQQyBjb25uZWN0aW9uLgorCiAyMDIxLTA4
LTI2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10g
U2VnZmF1bHQgaW4gc3RyZXNzL3R5cGVkYXJyYXktZXZlcnkuanMgKDMyYml0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA4YWU4
NzUzYjZiZmZjYjVhMzM1N2I5NWJkYjE0YTcyZWI4ZTY4ZDBhLi40NGE4MjkwMzQ1OWQzZDdkMjg3
NmEzZTBlN2Y0Mzc3MmJiMWM5N2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIxLTA4LTI2ICBE
YXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBDdXQgZG93biBvbiB1c2Ug
b2YgQ0ZHZXRUeXBlSUQsIHVzaW5nIGR5bmFtaWNfY2ZfY2FzdCBpbnN0ZWFkOyByZWxhdGVkIHN0
cmVhbWxpbmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI5NDE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiB3dGYvY2YvVHlwZUNhc3RzQ0YuaDogQWRkZWQgV1RGX0RFQ0xBUkVfQ0ZfVFlQRV9UUkFJ
VChDRlVSTCkuIEFkZGVkIGEKKyAgICAgICAgZHluYW1pY19jZl9jYXN0IG92ZXJsb2FkIHRoYXQg
Y29udmVydHMgZnJvbSBvbmUgUmV0YWluUHRyIHR5cGUgdG8gYW5vdGhlcgorICAgICAgICBhbmQg
YXZvaWRzIHJlZmVyZW5jZSBjb3VudCBjaHVybi4gVHdlYWtlZCBjb21tZW50cy4KKworICAgICAg
ICAqIHd0Zi9jb2NvYS9FbnRpdGxlbWVudHMubW06CisgICAgICAgIChXVEY6Omhhc0VudGl0bGVt
ZW50KTogVXNlIGtDRkJvb2xlYW5UcnVlIGluc3RlYWQgb2YgQ0ZCb29sZWFuR2V0VmFsdWUuCisK
KyAgICAgICAgKiB3dGYvdGV4dC9jb2NvYS9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVQ29j
b2EuY3BwOgorICAgICAgICAoV1RGOjp0ZXh0QnJlYWtMb2NhbGVQcmVmZXJlbmNlKTogVXNlIGR5
bmFtaWNfY2ZfY2FzdC4KKwogMjAyMS0wOC0yNiAgUmlzdWwgSXNsYW0gIDxyaXN1bF9pc2xhbUBh
cHBsZS5jb20+CiAKICAgICAgICAgQWRkIG5ldyBleHBlcmltZW50YWwgZmVhdHVyZSBmbGFnIGZv
ciBzYW5pdGl6aW5nIGxpbmtzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjMxZjViMTA0YWIwZThjMWUyMmM2NzEz
Y2U4NThjZjcxMzVhMjYxZi4uNTAwNmJiNmMzMzg4MzgyZjg3NWJkYTJlNDU1MWRkNmNmMTc3YTk5
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOSBAQAorMjAyMS0wOC0yNiAgRGFyaW4gQWRsZXIg
IDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgQ3V0IGRvd24gb24gdXNlIG9mIENGR2V0VHlw
ZUlELCB1c2luZyBkeW5hbWljX2NmX2Nhc3QgaW5zdGVhZDsgcmVsYXRlZCBzdHJlYW1saW5pbmcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTQxNAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6bWFrZVNpbXBsZUNvbG9yRnJvbUFSR0JDRkFycmF5KTogVXNlIGR5
YW5hbWljX2NmX2Nhc3QuCisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRUZXh0VHJhY2tQcml2YXRl
QVZGOjpwcm9jZXNzQ3VlQXR0cmlidXRlcyk6IERpdHRvLgorICAgICAgICBBbHNvIHJlbW92ZWQg
dW5uZWNlc3NhcnkgdHlwZSBjYXN0cyB3aGVuIGNvbXBhcmluZyB3aXRoIGtDRkJvb2xlYW5UcnVl
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNl
QnVmZmVyUGFyc2VyQVZGT2JqQy5tbToKKyAgICAgICAgVXNlIGR5bmFtaWNfY2ZfY2FzdC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OnN5c3RlbUZvbnRGYW1pbGllcyk6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6aXNVc2VySW5zdGFsbGVkRm9udCk6IFVzZSBrQ0ZCb29sZWFuVHJ1
ZS4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29jb2Eu
bW06CisgICAgICAgIChXZWJDb3JlOjp2YWxpZGF0ZUhFVkNQYXJhbWV0ZXJzKTogVXNlIGR5bmFt
aWNfY2ZfY2FzdCBhbmQga0NGQm9vbGVhblRydWUuCisgICAgICAgIChXZWJDb3JlOjp2YWxpZGF0
ZURvVmlQYXJhbWV0ZXJzKTogRGl0dG8uCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24ubW06CisgICAgICAgIChXZWJDb3JlOjpX
ZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb246OnNob3VsZERlY29kZVNhbXBsZSk6CisgICAgICAg
IFVzZSBrQ0ZCb29sZWFuRmFsc2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3Jl
dGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dFBsYXRmb3JtRGF0YTo6b2JqZWN0Rm9yRXF1YWxpdHlDaGVjayk6IFVzZSBhdXRvLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnRyYW5zZmVyRnVuY3Rpb25Gcm9tU3RyaW5nKTogUmVtb3ZlZCB0
eXBlIGNoZWNrLCB3aGljaCBjYWxsZXIKKyAgICAgICAgc2hvdWxkIGRvIHNpbmNlIHRoZSBhZ3Vt
ZW50IHR5cGUgaXMgQ0ZTdHJpbmdSZWYuCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHRHTENWQU5HTEU6OmNvcHlQaXhlbEJ1ZmZlclRvVGV4dHVyZSk6IFVzZQorICAgICAgICBkeW5h
bWljX2NmX2Nhc3QgaW5zdGVhZCBvZiBhbiB1bmNoZWNrZWQgc3RhdGljX2Nhc3QuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tOgorICAgICAgICAoV2ViQ29yZTo6ZGV2
aWNlTmFtZUZvclVzZXJBZ2VudCk6IEltcHJvdmVkIGVmZmljaWVuY3kgYnkgcmV0dXJuaW5nCisg
ICAgICAgIGEgU3RyaW5nVmlldyBpbnN0ZWFkIG9mIGEgU3RyaW5nLCBubyBuZWVkIHRvIGNyZWF0
ZSBhbmQgZGVzdHJveSBhIHN0cmluZworICAgICAgICBvciBjaHVybiB0aGUgcmVmZXJlbmNlIGNv
dW50IGVhY2ggdGltZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZC4KKyAgICAgICAgKFdlYkNvcmU6
OnN0YW5kYXJkVXNlckFnZW50V2l0aEFwcGxpY2F0aW9uTmFtZSk6IEltcHJvdmVkIGVmZmljaWVu
Y3kKKyAgICAgICAgYnkgdXNpbmcgYSBiZXR0ZXIgaWRpb20gZm9yIHRoZSBzcGFjZSBiZWZvcmUg
dGhlIGFwcGxpY2F0aW9uIG5hbWUuCisgICAgICAgIFVzZSBkeW5hbWljX2NmX2Nhc3QuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2luZG93RGlzcGxheUNhcHR1cmVyTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6YW55T2ZDR1dpbmRvdyk6IFVzZSBrQ0ZCb29sZWFuRmFs
c2UuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3h5U2VydmVyQ0ZOZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6cHJvY2Vzc1Byb3h5U2VydmVycyk6IFVzZSBkeW5hbWljX2Nm
X2Nhc3QuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENG
TmV0LmNwcDogTW92ZQorICAgICAgICBXVEZfREVDTEFSRV9DRl9UWVBFX1RSQUlUIGZvciBDRlVS
TFJlZiBvdXQgb2YgaGVyZS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0
U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVh
bUhhbmRsZUltcGw6OmNob29zZVByb3h5RnJvbUFycmF5KTogRGl0dG8uCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL2lvcy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MuaDogVHdlYWtlZCBhIGJp
dC4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvaW9zL1dlYkNvcmVVUkxSZXNwb25zZUlP
Uy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUV4dGVuc2lvblRvTUlNRVR5cGVNYXApOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6YWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeSk6IFNp
bXBsaWZpZWQgdGhlIGNvZGUgdGhhdCBtYXBzICIubWpzIgorICAgICAgICB0byAidGV4dC9qYXZh
c2NyaXB0IiB0byBtYWtlIGl0IG11Y2ggbW9yZSBlZmZpY2llbnQgYW5kIG5vdCB1c2UgYSBkaWN0
aW9uYXJ5LgorICAgICAgICBSZWZhY3RvcmVkIHRvIHNoYXJlIGNvZGUgd2l0aCB0aGUgTWFjLCB2
aWEgdGhlIFdlYkNvcmVVUkxSZXNwb25zZS5oL21tCisgICAgICAgIGZpbGVzLCB3aGljaCBhcmUg
bm90IG1hY09TLXNwZWNpZmljIGV2ZW4gdGhvdWdoIHRoZXkgYXJlIGluIGEgZGlyZWN0b3J5Cisg
ICAgICAgIG5hbWVkICJtYWMiLiBGaXhlZCBvbmUgcGxhY2Ugd2hlcmUgd2UgZGlkIGFkb3B0Q0Yg
d2hlcmUgaXQgc2hvdWxkIGJlIGFkb3B0TlMuCisgICAgICAgIFVzZSBDRlNUUigiYXBwbGljYXRp
b24vb2N0ZXQtc3RyZWFtIikgZGlyZWN0bHkgaW5zdGVhZCBvZiB1c2luZworICAgICAgICBXZWJD
b3JlOjpkZWZhdWx0TUlNRVR5cGUoKS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFj
L05ldHdvcmtTdGF0ZU5vdGlmaWVyTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtT
dGF0ZU5vdGlmaWVyOjp1cGRhdGVTdGF0ZVdpdGhvdXROb3RpZnlpbmcpOiBVc2UKKyAgICAgICAg
ZHluYW1pY19jZl9jYXN0LgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRp
bGl0aWVzLmg6IFJlbmFtZWQgTUlNRVR5cGVGcm9tVVRJVHJlZQorICAgICAgICB0byBtaW1lVHlw
ZUZyb21VVElUcmVlIHRvIG1ha2UgdGhlIHN0eWxlIHJvYm90IGhhcHB5LiBDaGFuZ2VkIHRoZQor
ICAgICAgICBhcmd1bWVudCBhbmQgcmV0dXJuIHR5cGUgdG8gQ0ZTdHJpbmdSZWYgc2luY2UgdGhh
dCdzIHdoYXQgdGhlIGNhbGxlcnMKKyAgICAgICAgYWxsIHdhbnQsIGFuZCB3aGF0IHRoZSBpbXBs
ZW1lbnRhdGlvbiB1c2VzLCBhbmQgdGhlcmUgaXMgbm8gcmVhc29uIHRvCisgICAgICAgIGNvbnZl
cnQgYmFjayBhbmQgZm9ydGggdG8gV1RGOjpTdHJpbmcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL21hYy9VVElVdGlsaXRpZXMubW06CisgICAgICAgIChXZWJDb3JlOjptaW1lVHlwZUZy
b21VVElUcmVlKTogVXNlIG51bGxwdHIsIG5vdCBlbXB0eVN0cmluZygpLCBmb3IgdGhlCisgICAg
ICAgIHZhbHVlIHdoZW4gdGhlcmUgaXMgbm8gTUlNRSB0eXBlIGZvdW5kLiBVc2UgYXV0by4gVXNl
IGR5bmFtaWNfY2ZfY2FzdC4KKyAgICAgICAgTWFrZSByZWN1cnNpb24gbW9yZSBlZmZpY2llbnQg
c2luY2Ugd2UgZG9uJ3Qga2VlcCBjb252ZXJ0aW5nIGJhY2sgYW5kCisgICAgICAgIGZvcnRoIGJl
dHdlZW4gQ0ZTdHJpbmdSZWYgYW5kIFdURjo6U3RyaW5nLgorICAgICAgICAoV2ViQ29yZTo6VVRJ
RnJvbVRhZyk6IFJlbW92ZWQgdW5uZWVkZWQgZXhwbGljaXQgY29udmVyc3Rpb24gdG8gV1RGOjpT
dHJpbmcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9u
c2UuaDogQWRkZWQgaGVscGVyIGZ1bmN0aW9ucworICAgICAgICB0byB0aGUgaGVhZGVyLCBzaGFy
ZWQgYnkgV2ViQ29yZVVSTFJlc3BvbnNlLm1tIGFuZCBXZWJDb3JlVVJMUmVzcG9uc2VJT1MubW0u
CisgICAgICAgIFVzZSBDRlNUUigiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIikgZGlyZWN0bHkg
aW5zdGVhZCBvZiB1c2luZworICAgICAgICBXZWJDb3JlOjpkZWZhdWx0TUlNRVR5cGUoKS42Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlRXh0ZW5zaW9uVG9NSU1FVHlwZU1hcCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjphZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KTogUmVmYWN0b3JlZCB0
byB1c2UgYSBTb3J0ZWRBcnJheU1hcAorICAgICAgICBpbnN0ZWFkIG9mIGEgQ0ZEaWN0aW9uYXJ5
LCBlbGltaW5hdGluZyB2YXJpb3VzIHR5cGUgY2FzdHMgYW5kIGNvbnZlcnNpb25zLgorICAgICAg
ICBSZWZhY3RvcmVkIHRvIHVzZSB0aGUgbmV3IGZ1bmN0aW9ucyBiZWxvdy4gVXNlIG1ha2VOZXZl
ckRlc3Ryb3llZCB0bworICAgICAgICBpbnN0ZWFkIG9mIFJldGFpblB0cjo6bGVha1JlZi4gUmVt
b3ZlZCB1bm5lY2Vzc2FyeSBjaGVjayBmb3IgZXF1YWxpdHkKKyAgICAgICAgc2luY2UgdGhpcyBm
dW5jdGlvbiBvbmx5IGRvZXMgd29yayB3aGVuIENGVVJMUmVzcG9uc2VHZXRNSU1FVHlwZSBpcyBu
dWxscHRyLgorICAgICAgICAoV2ViQ29yZTo6ZmlsZVBhdGhFeHRlbnNpb24pOiBBZGRlZC4gUmVm
YWN0b3JlZCB0aGUgY29kZSB0byBnZXQgYSBwYXRoIGV4dGVuc2lvbgorICAgICAgICBmcm9tIGEg
Q0ZVUkxSZXNwb25zZVJlZiBpbnRvIGEgZnVuY3Rpb24gc2luY2UgaXQncyB1c2VkIGluIHR3byBw
bGFjZXMuCisgICAgICAgIChXZWJDb3JlOjpwcmVmZXJyZWRNSU1FVHlwZUZvckZpbGVFeHRlbnNp
b25Gcm9tVVRUeXBlKTogQWRkZWQuIFJlZmFjdG9yZWQKKyAgICAgICAgdGhpcyBsb2dpY2FsIG9w
ZXJhdGlvbiwgbWFwcGluZyBhIGZpbGUgZXh0ZW5zaW9uIHRvIGEgTUlNRSB0eXBlLCBpbnRvIGEg
ZnVuY3Rpb24uCisgICAgICAgIFRoaXMgaXMgdXNlZCBpbiB0d28gcGxhY2VzLiBBbHNvIHB1dHMg
QUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4vRU5ECisgICAgICAgIHBhaXIgaW50
byBhIHNpbmdsZSBwbGFjZSwgYW5kIHRoaXMgaXMgd2hlcmUgd2UnbGwgc3dpdGNoIHRvIHVzZSBu
ZXdlciBVVFR5cGUKKyAgICAgICAgbWFjaGluZXJ5IGxhdGVyIG9uLgorCisgICAgICAgICogdGVz
dGluZy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQubW06CisgICAgICAgIChXZWJDb3JlVGVz
dFN1cHBvcnQ6OmNvbnZlcnRXZWJSZXNvdXJjZVJlc3BvbnNlVG9EaWN0aW9uYXJ5KTogVXNlIGF1
dG8gYW5kCisgICAgICAgIGR5bmFtaWNfY2ZfY2FzdC4KKwogMjAyMS0wOC0yNiAgQWxhbiBCdWp0
YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0lGQ10gVXNlIHRoZSBpbmxpbmUgcnVu
IGxpc3QgaW4gc2hvd1JlbmRlclRyZWUgdG8gcHJpbnQgaW5saW5lIGxldmVsIGJveCBpbmZvcm1h
dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9DaGFuZ2VMb2cKaW5kZXggYzIzMTU0YTRmYTk0MmRlZWMwMjJlZTE5NDYzNWI3
OGQzZWJhMDc2Mi4uMDhhMzA0YTlkM2Q2OTA0NjcwNTllZTNlNTZmNDI4MDkxNjg0ZmFhOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QQUwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDgtMjYgIERhcmluIEFkbGVy
ICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIEN1dCBkb3duIG9uIHVzZSBvZiBDRkdldFR5
cGVJRCwgdXNpbmcgZHluYW1pY19jZl9jYXN0IGluc3RlYWQ7IHJlbGF0ZWQgc3RyZWFtbGluaW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk0MTQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBhbC9z
eXN0ZW0vbWFjL0RlZmF1bHRTZWFyY2hQcm92aWRlci5jcHA6CisgICAgICAgIChQQUw6OmRlZmF1
bHRTZWFyY2hQcm92aWRlckRpc3BsYXlOYW1lKTogVXNlIGR5bmFtaWNfY2ZfY2FzdCBhbmQgcmVt
b3ZlZCBhbiB1bm5lZWRlZCBjYWxsIHRvCisgICAgICAgIENGU3RyaW5nQ3JlYXRlQ29weSwgc2lu
Y2UgdGhlIGNhbGxlcnMgZG9uJ3QgbmVlZCBhbiBpc29sYXRlZCBjb3B5LgorCiAyMDIxLTA4LTI1
ICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAgICAgICAgIFdl
YkNyeXB0byB1c2VzIGRlcHJlY2F0ZWQgQ0NLZXlEZXJpdmF0aW9uSE1hYwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAw
ZjQ5NDdiNThjMjgxNjY4MTY2MDExODRjNjhmYjhhMzIwOTg2NWQ2Li4yMGMzZjllZGRlNDNmMjky
ZTg2MWRkYzhmMjMzNWNhYjA0NDI2ZTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIx
LTA4LTI2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBDdXQgZG93
biBvbiB1c2Ugb2YgQ0ZHZXRUeXBlSUQsIHVzaW5nIGR5bmFtaWNfY2ZfY2FzdCBpbnN0ZWFkOyBy
ZWxhdGVkIHN0cmVhbWxpbmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjI5NDE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5N
b2R1bGVNYWMubW06CisgICAgICAgIChXZWJLaXQ6OmdldFBsdWdpbkluZm9Gcm9tUHJvcGVydHlM
aXN0cyk6IFVzZSBkeW5hbWljX2NmX2Nhc3QuCisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1
Z2luTW9kdWxlOjpnZXRQbHVnaW5JbmZvKTogRGl0dG8uCisKIDIwMjEtMDgtMjYgIEFkaXR5YSBL
ZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIFBob3RvIHBpY2tl
ciBhcHBlYXJzIGF0IGluY29ycmVjdCBsb2NhdGlvbnMgd2hlbiBvcGVuZWQgdXNpbmcgYSB0cmFj
a3BhZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9jZi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L2NmL0NoYW5nZUxvZwppbmRleCBlNzcxMTM2N2JkMDBjM2Q1OWY4YWUw
MmNhYWQ2MjZhNWIyOTg4ZmExLi5kMzg4MjBjODJjMTA2MGE3MWUyM2VkZWE0MmU0MzdlMzFlZDQ4
MTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0TGVnYWN5L2NmL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTA4
LTI2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBDdXQgZG93biBv
biB1c2Ugb2YgQ0ZHZXRUeXBlSUQsIHVzaW5nIGR5bmFtaWNfY2ZfY2FzdCBpbnN0ZWFkOyByZWxh
dGVkIHN0cmVhbWxpbmluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI5NDE0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHA6CisgICAg
ICAgIChsb2FkU2V0dGluZyk6IFJlbmFtZSBmcm9tIHBvcHVsYXRlU2V0dGluZy4gVXNlIGR5YW5t
aWNfY2ZfY2FzdCwga0NGQm9vbGVhblRydWUsIGFuZAorICAgICAgICBrQ0ZCb29sZWFuRmFsc2Us
IGFsc28gY2hhbmdlIHRvIHJldHVybiB2YWx1ZSBpbnN0ZWFkIG9mIGEgcG9pbnRlci1iYXNlZCBv
dXQgYXJndW1lbnQuCisgICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RvckF0dGFj
aERpc2FibGVkKTogVXBkYXRlIGZvciBjaGFuZ2UgdG8gbG9hZFNldHRpbmcuCisgICAgICAgIChX
ZWJJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RvclN0YXJ0c0F0dGFjaGVkKTogRGl0dG8uCisgICAg
ICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6OmNyZWF0ZUZyb250ZW5kU2V0dGluZ3MpOiBEaXR0by4g
QWxzbyB1c2UgZmluYWwgaW5zdGVhZCBvZiB2aXJ0dWFsLgorCiAyMDIwLTEwLTMwICBCcmlhbiBC
dXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IG1vdmUgSW5z
cGVjdG9yRnJvbnRlbmRBUElEaXNwYXRjaGVyIHRvIFdlYkNvcmUsIGNsZWFuIHVwIHVzZXMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCA0NWE1NDg2ZTA1ODA1ZDk3YmMxZTQ4YjQ0Zjkz
ZGEzMDMyOGE2YTFkLi40MTRmMmY4YWFiMjFkOGEzNjBkZTI0NzE0ZGI0ODBhYWVmZGUyZGQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMDgtMjYg
IERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIEN1dCBkb3duIG9uIHVz
ZSBvZiBDRkdldFR5cGVJRCwgdXNpbmcgZHluYW1pY19jZl9jYXN0IGluc3RlYWQ7IHJlbGF0ZWQg
c3RyZWFtbGluaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjk0MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFBsdWdpbnMvV2ViQmFzZVBsdWdpblBhY2thZ2UubW06CisgICAgICAgICgtW1dlYkJh
c2VQbHVnaW5QYWNrYWdlIGJ1bmRsZVZlcnNpb25dKTogVXNlIGR5bmFtaWNfY2ZfY2FzdC4KKwog
MjAyMS0wOC0yNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtX
SzJdIEltcGxlbWVudCBwcm9jZXNzLXN3YXBwaW5nIGJhc2VkIG9uIENyb3NzLU9yaWdpbi1PcGVu
ZXItUG9saWN5IEhUVFAgaGVhZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVj
dG9yWFBDQ29ubmVjdGlvbi5tbQppbmRleCA0M2RmMjcwYWM4MjJmNGJmOWNkNjVkOWQ1MDBmODcz
ZTJhYjFhZDNkLi4yNjU4NTVmZjdhMjc0MmUwMWM2MjE3NWU4MDA2NWVhZjEwY2JhNGNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1v
dGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvcmVtb3RlL2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0KQEAg
LTM0LDYgKzM0LDcgQEAKICNpbXBvcnQgPHd0Zi9Mb2NrLmg+CiAjaW1wb3J0IDx3dGYvUmVmLmg+
CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvY2YvVHlwZUNhc3RzQ0Yu
aD4KICNpbXBvcnQgPHd0Zi9jb2NvYS9FbnRpdGxlbWVudHMuaD4KICNpbXBvcnQgPHd0Zi9zcGkv
Y29jb2EvQ0ZYUENCcmlkZ2VTUEkuaD4KICNpbXBvcnQgPHd0Zi9zcGkvY29jb2EvU2VjdXJpdHlT
UEkuaD4KQEAgLTExMCw5ICsxMTEsOCBAQCBOU0RpY3Rpb25hcnkgKlJlbW90ZUluc3BlY3RvclhQ
Q0Nvbm5lY3Rpb246OmRlc2VyaWFsaXplTWVzc2FnZSh4cGNfb2JqZWN0X3Qgb2JqZQogICAgICAg
ICByZXR1cm4gbmlsOwogICAgIH0KIAotICAgIGF1dG8gZGljdGlvbmFyeSA9IGFkb3B0Q0YoX0NG
WFBDQ3JlYXRlQ0ZPYmplY3RGcm9tWFBDTWVzc2FnZSh4cGNEaWN0aW9uYXJ5KSk7CisgICAgYXV0
byBkaWN0aW9uYXJ5ID0gZHluYW1pY19jZl9jYXN0PENGRGljdGlvbmFyeVJlZj4oYWRvcHRDRihf
Q0ZYUENDcmVhdGVDRk9iamVjdEZyb21YUENNZXNzYWdlKHhwY0RpY3Rpb25hcnkpKSk7CiAgICAg
QVNTRVJUX1dJVEhfTUVTU0FHRShkaWN0aW9uYXJ5LCAiVW5hYmxlIHRvIGRlc2VyaWFsaXplIHhw
YyBtZXNzYWdlIik7Ci0gICAgQVNTRVJUKENGR2V0VHlwZUlEKGRpY3Rpb25hcnkuZ2V0KCkpID09
IENGRGljdGlvbmFyeUdldFR5cGVJRCgpKTsKICAgICByZXR1cm4gZGljdGlvbmFyeS5icmlkZ2lu
Z0F1dG9yZWxlYXNlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NmL1R5cGVD
YXN0c0NGLmggYi9Tb3VyY2UvV1RGL3d0Zi9jZi9UeXBlQ2FzdHNDRi5oCmluZGV4IGUwOTIwZjZj
NDZjMDIxZmE2M2JmNmQ5NjBjNWM3MWU4ZTI2OGNhYzUuLjgzNmY1NzAwMmQ1NWZjODkxNGNkOTlj
ZGM3NWE2MTQzZDc1ZGZhZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2NmL1R5cGVDYXN0
c0NGLmgKKysrIGIvU291cmNlL1dURi93dGYvY2YvVHlwZUNhc3RzQ0YuaApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ4LDYgKzQ4
LDcgQEAgV1RGX0RFQ0xBUkVfQ0ZfVFlQRV9UUkFJVChDRkRhdGEpOwogV1RGX0RFQ0xBUkVfQ0Zf
VFlQRV9UUkFJVChDRkRpY3Rpb25hcnkpOwogV1RGX0RFQ0xBUkVfQ0ZfVFlQRV9UUkFJVChDRk51
bWJlcik7CiBXVEZfREVDTEFSRV9DRl9UWVBFX1RSQUlUKENGU3RyaW5nKTsKK1dURl9ERUNMQVJF
X0NGX1RZUEVfVFJBSVQoQ0ZVUkwpOwogCiAjZGVmaW5lIFdURl9ERUNMQVJFX0NGX01VVEFCTEVf
VFlQRV9UUkFJVChDbGFzc05hbWUsIE11dGFibGVDbGFzc05hbWUpIFwKIHRlbXBsYXRlIDw+IFwK
QEAgLTYyLDggKzYzLDkgQEAgV1RGX0RFQ0xBUkVfQ0ZfTVVUQUJMRV9UWVBFX1RSQUlUKENGU3Ry
aW5nLCBDRk11dGFibGVTdHJpbmcpOwogCiAjdW5kZWYgV1RGX0RFQ0xBUkVfQ0ZfTVVUQUJMRV9U
WVBFX1RSQUlUCiAKLS8vIFVzZSB0aGlzIGluc3RlYWQgb2YgY2hlY2tlZF9jZl9jYXN0PD4gd2hl
biBhY3RpdmVseSBjaGVja2luZyBDRiB0eXBlcywKKy8vIFVzZSBkeW5hbWljX2NmX2Nhc3Q8PiBp
bnN0ZWFkIG9mIGNoZWNrZWRfY2ZfY2FzdDw+IHdoZW4gYWN0aXZlbHkgY2hlY2tpbmcgQ0YgdHlw
ZXMsCiAvLyBzaW1pbGFyIHRvIGR5bmFtaWNfY2FzdDw+IGluIEMrKy4gQmUgc3VyZSB0byBpbmNs
dWRlIGEgbnVsbHB0ciBjaGVjay4KKwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBkeW5hbWljX2Nm
X2Nhc3QoQ0ZUeXBlUmVmIG9iamVjdCkKIHsKICAgICBpZiAoIW9iamVjdCkKQEAgLTc1LDcgKzc3
LDE5IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgZHluYW1pY19jZl9jYXN0KENGVHlwZVJlZiBv
YmplY3QpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+KGNvbnN0X2Nhc3Q8Q0ZfQlJJREdFRF9U
WVBFKGlkKSB2b2lkKj4ob2JqZWN0KSk7CiB9CiAKLS8vIFVzZSB0aGlzIGluc3RlYWQgb2YgZHlu
YW1pY19jZl9jYXN0PD4gd2hlbiBhIHNwZWNpZmMgQ0YgdHlwZSBpcyByZXF1aXJlZC4KK3RlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IFJldGFpblB0cjxUPiBkeW5hbWljX2NmX2Nhc3Qo
UmV0YWluUHRyPFU+JiYgb2JqZWN0KQoreworICAgIGlmICghb2JqZWN0KQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIGlmIChDRkdldFR5cGVJRChvYmplY3QuZ2V0KCkpICE9IENGVHlw
ZVRyYWl0PFQ+Ojp0eXBlSUQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1
cm4gYWRvcHRDRihzdGF0aWNfY2FzdDxUPihjb25zdF9jYXN0PENGX0JSSURHRURfVFlQRShpZCkg
dm9pZCo+KG9iamVjdC5sZWFrUmVmKCkpKSk7Cit9CisKKy8vIFVzZSBjaGVja2VkX2NmX2Nhc3Q8
PiBpbnN0ZWFkIG9mIGR5bmFtaWNfY2ZfY2FzdDw+IHdoZW4gYSBzcGVjaWZpYyBDRiB0eXBlIGlz
IHJlcXVpcmVkLgorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGNoZWNrZWRfY2ZfY2FzdChDRlR5
cGVSZWYgb2JqZWN0KQogewogICAgIGlmICghb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvY29jb2EvRW50aXRsZW1lbnRzLm1tIGIvU291cmNlL1dURi93dGYvY29jb2EvRW50aXRs
ZW1lbnRzLm1tCmluZGV4IGMzOTQ3YTgxNjMwMDNlODVmOTlmYjY2ZjgwNDk3MDg5MWVkOTMxODQu
LjlkOTQ2YWQwZGYxMGM4YzZjODkxMmVhOTM2MTY1Y2Y4ZmU1MTU0OTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL2NvY29hL0VudGl0bGVtZW50cy5tbQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9j
b2NvYS9FbnRpdGxlbWVudHMubW0KQEAgLTM5LDggKzM5LDcgQEAgc3RhdGljIGJvb2wgaGFzRW50
aXRsZW1lbnQoU2VjVGFza1JlZiB0YXNrLCBjb25zdCBjaGFyKiBlbnRpdGxlbWVudCkKICAgICBp
ZiAoIXRhc2spCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBhdXRvIHN0cmluZyA9IGFkb3B0
Q0YoQ0ZTdHJpbmdDcmVhdGVXaXRoQ1N0cmluZ05vQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBl
bnRpdGxlbWVudCwga0NGU3RyaW5nRW5jb2RpbmdBU0NJSSwga0NGQWxsb2NhdG9yTnVsbCkpOwot
ICAgIGF1dG8gdmFsdWUgPSBhZG9wdENGKFNlY1Rhc2tDb3B5VmFsdWVGb3JFbnRpdGxlbWVudCh0
YXNrLCBzdHJpbmcuZ2V0KCksIG51bGxwdHIpKTsKLSAgICByZXR1cm4gdmFsdWUgJiYgQ0ZHZXRU
eXBlSUQodmFsdWUuZ2V0KCkpID09IENGQm9vbGVhbkdldFR5cGVJRCgpICYmIENGQm9vbGVhbkdl
dFZhbHVlKHN0YXRpY19jYXN0PENGQm9vbGVhblJlZj4odmFsdWUuZ2V0KCkpKTsKKyAgICByZXR1
cm4gYWRvcHRDRihTZWNUYXNrQ29weVZhbHVlRm9yRW50aXRsZW1lbnQodGFzaywgc3RyaW5nLmdl
dCgpLCBudWxscHRyKSkgPT0ga0NGQm9vbGVhblRydWU7CiB9CiAKIGJvb2wgaGFzRW50aXRsZW1l
bnQoYXVkaXRfdG9rZW5fdCB0b2tlbiwgY29uc3QgY2hhciogZW50aXRsZW1lbnQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NvY29hL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJ
Q1VDb2NvYS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L2NvY29hL1RleHRCcmVha0l0ZXJhdG9y
SW50ZXJuYWxJQ1VDb2NvYS5jcHAKaW5kZXggYTQwMDlhZDlkY2VkZjZlNmJiNGQwNmNhZmI3NGQw
ZmQ3ZTA2ZTU0Mi4uMjVkMDZiMmE1OTRkM2MwMmQzOGMzZjk5YjRmZDgxNTdmMzEwYTA1MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9jb2NvYS9UZXh0QnJlYWtJdGVyYXRvckludGVy
bmFsSUNVQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvY29jb2EvVGV4dEJyZWFr
SXRlcmF0b3JJbnRlcm5hbElDVUNvY29hLmNwcApAQCAtMjMsNiArMjMsNyBAQAogCiAjaW5jbHVk
ZSA8YXJyYXk+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9jZi9U
eXBlQ2FzdHNDRi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAK
IG5hbWVzcGFjZSBXVEYgewpAQCAtNTEsMTEgKzUyLDggQEAgVGV4dEJyZWFrSXRlcmF0b3I6OlRl
eHRCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcgc3RyaW5nLCBNb2RlIG1vZGUsIGNvbnN0IEF0b21T
dHIKIAogc3RhdGljIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdGV4dEJyZWFrTG9jYWxlUHJlZmVy
ZW5jZSgpCiB7Ci0gICAgYXV0byBsb2NhbGUgPSBhZG9wdENGKENGUHJlZmVyZW5jZXNDb3B5VmFs
dWUoQ0ZTVFIoIkFwcGxlVGV4dEJyZWFrTG9jYWxlIiksCi0gICAgICAgIGtDRlByZWZlcmVuY2Vz
QW55QXBwbGljYXRpb24sIGtDRlByZWZlcmVuY2VzQ3VycmVudFVzZXIsIGtDRlByZWZlcmVuY2Vz
QW55SG9zdCkpOwotICAgIGlmICghbG9jYWxlIHx8IENGR2V0VHlwZUlEKGxvY2FsZS5nZXQoKSkg
IT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0
dXJuIHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihsb2NhbGUuZ2V0KCkpOworICAgIHJldHVybiBk
eW5hbWljX2NmX2Nhc3Q8Q0ZTdHJpbmdSZWY+KGFkb3B0Q0YoQ0ZQcmVmZXJlbmNlc0NvcHlWYWx1
ZShDRlNUUigiQXBwbGVUZXh0QnJlYWtMb2NhbGUiKSwKKyAgICAgICAga0NGUHJlZmVyZW5jZXNB
bnlBcHBsaWNhdGlvbiwga0NGUHJlZmVyZW5jZXNDdXJyZW50VXNlciwga0NGUHJlZmVyZW5jZXNB
bnlIb3N0KSkpOwogfQogCiBzdGF0aWMgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB0b3BMYW5ndWFn
ZVByZWZlcmVuY2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0v
bWFjL0RlZmF1bHRTZWFyY2hQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5
c3RlbS9tYWMvRGVmYXVsdFNlYXJjaFByb3ZpZGVyLmNwcAppbmRleCA5NTE2ZDZhYmJiYjM1YWU4
N2MyZDllYWJhMTY5YzcyNGI1ZDNkZTZlLi4zNmU4ODViNGZkMzk0NDI0YzQ2YjBjMTEwZDc4ZDhm
ZjQyOWY1ODEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9tYWMv
RGVmYXVsdFNlYXJjaFByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5
c3RlbS9tYWMvRGVmYXVsdFNlYXJjaFByb3ZpZGVyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAj
aW5jbHVkZSAiQ0ZVdGlsaXRpZXNTUEkuaCIKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3Jl
Rm91bmRhdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgogCiBuYW1lc3Bh
Y2UgUEFMIHsKIApAQCAtMzksMTIgKzQwLDExIEBAIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZGVm
YXVsdFNlYXJjaFByb3ZpZGVyRGlzcGxheU5hbWUoKQogICAgIGlmICghcHJvdmlkZXJJbmZvKQog
ICAgICAgICByZXR1cm4gQ0ZTVFIoIkdvb2dsZSIpOwogCi0gICAgQ0ZUeXBlUmVmIGRpc3BsYXlO
YW1lID0gQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvdmlkZXJJbmZvLmdldCgpLCBrQ0ZXZWJTZXJ2
aWNlc1Byb3ZpZGVyRGVmYXVsdERpc3BsYXlOYW1lS2V5KTsKKyAgICBhdXRvIGRpc3BsYXlOYW1l
ID0gZHluYW1pY19jZl9jYXN0PENGU3RyaW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm92
aWRlckluZm8uZ2V0KCksIGtDRldlYlNlcnZpY2VzUHJvdmlkZXJEZWZhdWx0RGlzcGxheU5hbWVL
ZXkpKTsKICAgICBpZiAoIWRpc3BsYXlOYW1lKQogICAgICAgICByZXR1cm4gQ0ZTVFIoIkdvb2ds
ZSIpOwogCi0gICAgQVNTRVJUKENGR2V0VHlwZUlEKGRpc3BsYXlOYW1lKSA9PSBDRlN0cmluZ0dl
dFR5cGVJRCgpKTsKLSAgICByZXR1cm4gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZUNvcHkoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgKENGU3RyaW5nUmVmKWRpc3BsYXlOYW1lKSk7CisgICAgcmV0dXJuIGRp
c3BsYXlOYW1lOwogfQogCiB9IC8vIG5hbWVzcGFjZSBQQUwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAppbmRleCBhMzYxNDBhZDQxZGQ5MGRkN2U1
NGZhYTlmZTU5ZjJjOTM5NzJhNjVhLi44NGUwODZhMTg0YmFjZTRmZDI5MWVmM2E1OTAzMjcyNjAz
ODcwOTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVB
VkYuY3BwCkBAIC0zNiwxNCArMzYsMTYgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9EYXRh
Vmlldy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0ludDhBcnJheS5oPgogI2luY2x1ZGUg
PHBhbC9hdmZvdW5kYXRpb24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+Ci0jaW5jbHVkZSA8cGFs
L2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CiAjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgorI2luY2x1ZGUgPHd0Zi9jZi9UeXBlQ2Fz
dHNDRi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAjaW5j
bHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIAorI2luY2x1ZGUgPHBhbC9jZi9D
b3JlTWVkaWFTb2Z0TGluay5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEFWRkluYmFuZFRy
YWNrUGFyZW50Ojp+QVZGSW5iYW5kVHJhY2tQYXJlbnQoKSA9IGRlZmF1bHQ7CkBAIC03MSw4ICs3
Myw4IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBtYWtlU2ltcGxlQ29s
b3JGcm9tQVJHQkNGQXJyYXkoQ0ZBcnJheVJlZiBjCiAKICAgICBmbG9hdCBjb21wb25lbnRBcnJh
eVs0XTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykgewotICAgICAgICBDRk51bWJl
clJlZiB2YWx1ZSA9IHN0YXRpY19jYXN0PENGTnVtYmVyUmVmPihDRkFycmF5R2V0VmFsdWVBdElu
ZGV4KGNvbG9yQXJyYXksIGkpKTsKLSAgICAgICAgaWYgKENGR2V0VHlwZUlEKHZhbHVlKSAhPSBD
Rk51bWJlckdldFR5cGVJRCgpKQorICAgICAgICBhdXRvIHZhbHVlID0gZHluYW1pY19jZl9jYXN0
PENGTnVtYmVyUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGNvbG9yQXJyYXksIGkpKTsKKyAg
ICAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAg
ICAgICAgZmxvYXQgY29tcG9uZW50OwpAQCAtMTA1LDcgKzEwNyw2IEBAIFJlZjxJbmJhbmRHZW5l
cmljQ3VlPiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQ3VlQXR0cmlidXRlcyhD
RkF0dHJpYnV0CiAgICAgaWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBjdWVEYXRhOwogCi0K
ICAgICBDRlJhbmdlIGVmZmVjdGl2ZVJhbmdlID0gQ0ZSYW5nZU1ha2UoMCwgMCk7CiAgICAgd2hp
bGUgKChlZmZlY3RpdmVSYW5nZS5sb2NhdGlvbiArIGVmZmVjdGl2ZVJhbmdlLmxlbmd0aCkgPCBs
ZW5ndGgpIHsKIApAQCAtMTE0LDcgKzExNSw2IEBAIFJlZjxJbmJhbmRHZW5lcmljQ3VlPiBJbmJh
bmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQ3VlQXR0cmlidXRlcyhDRkF0dHJpYnV0CiAg
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBTdHJpbmdCdWlsZGVyIHRhZ1N0YXJ0Owot
ICAgICAgICBDRlN0cmluZ1JlZiB2YWx1ZVN0cmluZzsKICAgICAgICAgU3RyaW5nIHRhZ0VuZDsK
ICAgICAgICAgQ0ZJbmRleCBhdHRyaWJ1dGVDb3VudCA9IENGRGljdGlvbmFyeUdldENvdW50KGF0
dHJpYnV0ZXMpOwogICAgICAgICBWZWN0b3I8Y29uc3Qgdm9pZCo+IGtleXMoYXR0cmlidXRlQ291
bnQpOwpAQCAtMTIyLDE0ICsxMjIsMTQgQEAgUmVmPEluYmFuZEdlbmVyaWNDdWU+IEluYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWVBdHRyaWJ1dGVzKENGQXR0cmlidXQKICAgICAg
ICAgQ0ZEaWN0aW9uYXJ5R2V0S2V5c0FuZFZhbHVlcyhhdHRyaWJ1dGVzLCBrZXlzLmRhdGEoKSwg
dmFsdWVzLmRhdGEoKSk7CiAKICAgICAgICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwgYXR0cmli
dXRlQ291bnQ7ICsraSkgewotICAgICAgICAgICAgQ0ZTdHJpbmdSZWYga2V5ID0gc3RhdGljX2Nh
c3Q8Q0ZTdHJpbmdSZWY+KGtleXNbaV0pOworICAgICAgICAgICAgYXV0byBrZXkgPSBkeW5hbWlj
X2NmX2Nhc3Q8Q0ZTdHJpbmdSZWY+KGtleXNbaV0pOwogICAgICAgICAgICAgQ0ZUeXBlUmVmIHZh
bHVlID0gdmFsdWVzW2ldOwotICAgICAgICAgICAgaWYgKENGR2V0VHlwZUlEKGtleSkgIT0gQ0ZT
dHJpbmdHZXRUeXBlSUQoKSB8fCAhQ0ZTdHJpbmdHZXRMZW5ndGgoa2V5KSkKKyAgICAgICAgICAg
IGlmICgha2V5IHx8ICFDRlN0cmluZ0dldExlbmd0aChrZXkpKQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogCiAgICAgICAgICAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKGtleSwga0NNVGV4dE1h
cmt1cEF0dHJpYnV0ZV9BbGlnbm1lbnQsIDApID09IGtDRkNvbXBhcmVFcXVhbFRvKSB7Ci0gICAg
ICAgICAgICAgICAgdmFsdWVTdHJpbmcgPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4odmFsdWUp
OwotICAgICAgICAgICAgICAgIGlmIChDRkdldFR5cGVJRCh2YWx1ZVN0cmluZykgIT0gQ0ZTdHJp
bmdHZXRUeXBlSUQoKSB8fCAhQ0ZTdHJpbmdHZXRMZW5ndGgodmFsdWVTdHJpbmcpKQorICAgICAg
ICAgICAgICAgIGF1dG8gdmFsdWVTdHJpbmcgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZTdHJpbmdSZWY+
KHZhbHVlKTsKKyAgICAgICAgICAgICAgICBpZiAoIXZhbHVlU3RyaW5nIHx8ICFDRlN0cmluZ0dl
dExlbmd0aCh2YWx1ZVN0cmluZykpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgICAgIGlmIChwcm9jZXNzZWQgJiBBbGlnbikKICAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CkBAIC0xNDgsNyArMTQ4LDcgQEAgUmVmPEluYmFuZEdlbmVyaWNDdWU+IEluYmFu
ZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWVBdHRyaWJ1dGVzKENGQXR0cmlidXQKICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKENGU3RyaW5nQ29tcGFyZShrZXksIGtDTVRl
eHRNYXJrdXBBdHRyaWJ1dGVfQm9sZFN0eWxlLCAwKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykgewot
ICAgICAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxDRkJvb2xlYW5SZWY+KHZhbHVlKSAhPSBr
Q0ZCb29sZWFuVHJ1ZSkKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUgIT0ga0NGQm9vbGVhblRy
dWUpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICAgICAgdGFn
U3RhcnQuYXBwZW5kKCI8Yj4iKTsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBSZWY8SW5iYW5kR2VuZXJp
Y0N1ZT4gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0N1ZUF0dHJpYnV0ZXMoQ0ZB
dHRyaWJ1dAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoQ0ZTdHJpbmdDb21wYXJl
KGtleSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9JdGFsaWNTdHlsZSwgMCkgPT0ga0NGQ29tcGFy
ZUVxdWFsVG8pIHsKLSAgICAgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8Q0ZCb29sZWFuUmVm
Pih2YWx1ZSkgIT0ga0NGQm9vbGVhblRydWUpCisgICAgICAgICAgICAgICAgaWYgKHZhbHVlICE9
IGtDRkJvb2xlYW5UcnVlKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAg
ICAgICAgICAgIHRhZ1N0YXJ0LmFwcGVuZCgiPGk+Iik7CkBAIC0xNjYsNyArMTY2LDcgQEAgUmVm
PEluYmFuZEdlbmVyaWNDdWU+IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWVB
dHRyaWJ1dGVzKENGQXR0cmlidXQKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKENG
U3RyaW5nQ29tcGFyZShrZXksIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfVW5kZXJsaW5lU3R5bGUs
IDApID09IGtDRkNvbXBhcmVFcXVhbFRvKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHN0YXRpY19j
YXN0PENGQm9vbGVhblJlZj4odmFsdWUpICE9IGtDRkJvb2xlYW5UcnVlKQorICAgICAgICAgICAg
ICAgIGlmICh2YWx1ZSAhPSBrQ0ZCb29sZWFuVHJ1ZSkKICAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAKICAgICAgICAgICAgICAgICB0YWdTdGFydC5hcHBlbmQoIjx1PiIpOwpAQCAtMTc1
LDEzICsxNzUsMTMgQEAgUmVmPEluYmFuZEdlbmVyaWNDdWU+IEluYmFuZFRleHRUcmFja1ByaXZh
dGVBVkY6OnByb2Nlc3NDdWVBdHRyaWJ1dGVzKENGQXR0cmlidXQKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgaWYgKENGU3RyaW5nQ29tcGFyZShrZXksIGtDTVRleHRNYXJrdXBBdHRyaWJ1
dGVfT3J0aG9nb25hbExpbmVQb3NpdGlvblBlcmNlbnRhZ2VSZWxhdGl2ZVRvV3JpdGluZ0RpcmVj
dGlvbiwgMCkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pIHsKLSAgICAgICAgICAgICAgICBpZiAoQ0ZH
ZXRUeXBlSUQodmFsdWUpICE9IENGTnVtYmVyR2V0VHlwZUlEKCkpCisgICAgICAgICAgICAgICAg
YXV0byB2YWx1ZU51bWJlciA9IGR5bmFtaWNfY2ZfY2FzdDxDRk51bWJlclJlZj4odmFsdWUpOwor
ICAgICAgICAgICAgICAgIGlmICghdmFsdWVOdW1iZXIpCiAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzZWQgJiBMaW5lKQogICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBwcm9jZXNzZWQgfD0gTGluZTsK
IAotICAgICAgICAgICAgICAgIENGTnVtYmVyUmVmIHZhbHVlTnVtYmVyID0gc3RhdGljX2Nhc3Q8
Q0ZOdW1iZXJSZWY+KHZhbHVlKTsKICAgICAgICAgICAgICAgICBkb3VibGUgbGluZTsKICAgICAg
ICAgICAgICAgICBDRk51bWJlckdldFZhbHVlKHZhbHVlTnVtYmVyLCBrQ0ZOdW1iZXJGbG9hdDY0
VHlwZSwgJmxpbmUpOwogICAgICAgICAgICAgICAgIGN1ZURhdGEtPnNldExpbmUobGluZSk7CkBA
IC0xODksMTMgKzE4OSwxMyBAQCBSZWY8SW5iYW5kR2VuZXJpY0N1ZT4gSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUFWRjo6cHJvY2Vzc0N1ZUF0dHJpYnV0ZXMoQ0ZBdHRyaWJ1dAogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKGtleSwga0NNVGV4dE1hcmt1cEF0
dHJpYnV0ZV9UZXh0UG9zaXRpb25QZXJjZW50YWdlUmVsYXRpdmVUb1dyaXRpbmdEaXJlY3Rpb24s
IDApID09IGtDRkNvbXBhcmVFcXVhbFRvKSB7Ci0gICAgICAgICAgICAgICAgaWYgKENGR2V0VHlw
ZUlEKHZhbHVlKSAhPSBDRk51bWJlckdldFR5cGVJRCgpKQorICAgICAgICAgICAgICAgIGF1dG8g
dmFsdWVOdW1iZXIgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZOdW1iZXJSZWY+KHZhbHVlKTsKKyAgICAg
ICAgICAgICAgICBpZiAoIXZhbHVlTnVtYmVyKQogICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgICAgICBpZiAocHJvY2Vzc2VkICYgUG9zaXRpb24pCiAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIHByb2Nlc3NlZCB8PSBQb3NpdGlv
bjsKIAotICAgICAgICAgICAgICAgIENGTnVtYmVyUmVmIHZhbHVlTnVtYmVyID0gc3RhdGljX2Nh
c3Q8Q0ZOdW1iZXJSZWY+KHZhbHVlKTsKICAgICAgICAgICAgICAgICBkb3VibGUgcG9zaXRpb247
CiAgICAgICAgICAgICAgICAgQ0ZOdW1iZXJHZXRWYWx1ZSh2YWx1ZU51bWJlciwga0NGTnVtYmVy
RmxvYXQ2NFR5cGUsICZwb3NpdGlvbik7CiAgICAgICAgICAgICAgICAgY3VlRGF0YS0+c2V0UG9z
aXRpb24ocG9zaXRpb24pOwpAQCAtMjAzLDEzICsyMDMsMTMgQEAgUmVmPEluYmFuZEdlbmVyaWND
dWU+IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWVBdHRyaWJ1dGVzKENGQXR0
cmlidXQKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKENGU3RyaW5nQ29tcGFyZShr
ZXksIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfV3JpdGluZ0RpcmVjdGlvblNpemVQZXJjZW50YWdl
LCAwKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykgewotICAgICAgICAgICAgICAgIGlmIChDRkdldFR5
cGVJRCh2YWx1ZSkgIT0gQ0ZOdW1iZXJHZXRUeXBlSUQoKSkKKyAgICAgICAgICAgICAgICBhdXRv
IHZhbHVlTnVtYmVyID0gZHluYW1pY19jZl9jYXN0PENGTnVtYmVyUmVmPih2YWx1ZSk7CisgICAg
ICAgICAgICAgICAgaWYgKCF2YWx1ZU51bWJlcikKICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICAgICAgaWYgKHByb2Nlc3NlZCAmIFNpemUpCiAgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIHByb2Nlc3NlZCB8PSBTaXplOwogCi0g
ICAgICAgICAgICAgICAgQ0ZOdW1iZXJSZWYgdmFsdWVOdW1iZXIgPSBzdGF0aWNfY2FzdDxDRk51
bWJlclJlZj4odmFsdWUpOwogICAgICAgICAgICAgICAgIGRvdWJsZSBzaXplOwogICAgICAgICAg
ICAgICAgIENGTnVtYmVyR2V0VmFsdWUodmFsdWVOdW1iZXIsIGtDRk51bWJlckZsb2F0NjRUeXBl
LCAmc2l6ZSk7CiAgICAgICAgICAgICAgICAgY3VlRGF0YS0+c2V0U2l6ZShzaXplKTsKQEAgLTIx
Nyw4ICsyMTcsOCBAQCBSZWY8SW5iYW5kR2VuZXJpY0N1ZT4gSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUFWRjo6cHJvY2Vzc0N1ZUF0dHJpYnV0ZXMoQ0ZBdHRyaWJ1dAogICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKGtleSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0
ZV9WZXJ0aWNhbExheW91dCwgMCkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pIHsKLSAgICAgICAgICAg
ICAgICB2YWx1ZVN0cmluZyA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPih2YWx1ZSk7Ci0gICAg
ICAgICAgICAgICAgaWYgKENGR2V0VHlwZUlEKHZhbHVlU3RyaW5nKSAhPSBDRlN0cmluZ0dldFR5
cGVJRCgpIHx8ICFDRlN0cmluZ0dldExlbmd0aCh2YWx1ZVN0cmluZykpCisgICAgICAgICAgICAg
ICAgYXV0byB2YWx1ZVN0cmluZyA9IGR5bmFtaWNfY2ZfY2FzdDxDRlN0cmluZ1JlZj4odmFsdWUp
OworICAgICAgICAgICAgICAgIGlmICghdmFsdWVTdHJpbmcgfHwgIUNGU3RyaW5nR2V0TGVuZ3Ro
KHZhbHVlU3RyaW5nKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKENGU3RyaW5nQ29tcGFyZSh2YWx1ZVN0cmluZywg
a0NNVGV4dFZlcnRpY2FsTGF5b3V0X0xlZnRUb1JpZ2h0LCAwKSA9PSBrQ0ZDb21wYXJlRXF1YWxU
bykKQEAgLTIyOSwxMCArMjI5LDEwIEBAIFJlZjxJbmJhbmRHZW5lcmljQ3VlPiBJbmJhbmRUZXh0
VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQ3VlQXR0cmlidXRlcyhDRkF0dHJpYnV0CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGlmIChDRlN0cmluZ0NvbXBhcmUoa2V5LCBrQ01UZXh0TWFy
a3VwQXR0cmlidXRlX0Jhc2VGb250U2l6ZVBlcmNlbnRhZ2VSZWxhdGl2ZVRvVmlkZW9IZWlnaHQs
IDApID09IGtDRkNvbXBhcmVFcXVhbFRvKSB7Ci0gICAgICAgICAgICAgICAgaWYgKENGR2V0VHlw
ZUlEKHZhbHVlKSAhPSBDRk51bWJlckdldFR5cGVJRCgpKQorICAgICAgICAgICAgICAgIGF1dG8g
dmFsdWVOdW1iZXIgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZOdW1iZXJSZWY+KHZhbHVlKTsKKyAgICAg
ICAgICAgICAgICBpZiAoIXZhbHVlTnVtYmVyKQogICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBDRk51bWJlclJlZiB2YWx1ZU51
bWJlciA9IHN0YXRpY19jYXN0PENGTnVtYmVyUmVmPih2YWx1ZSk7CisKICAgICAgICAgICAgICAg
ICBkb3VibGUgYmFzZUZvbnRTaXplOwogICAgICAgICAgICAgICAgIENGTnVtYmVyR2V0VmFsdWUo
dmFsdWVOdW1iZXIsIGtDRk51bWJlckZsb2F0NjRUeXBlLCAmYmFzZUZvbnRTaXplKTsKICAgICAg
ICAgICAgICAgICBjdWVEYXRhLT5zZXRCYXNlRm9udFNpemUoYmFzZUZvbnRTaXplKTsKQEAgLTI0
MCwxMCArMjQwLDEwIEBAIFJlZjxJbmJhbmRHZW5lcmljQ3VlPiBJbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGOjpwcm9jZXNzQ3VlQXR0cmlidXRlcyhDRkF0dHJpYnV0CiAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIGlmIChDRlN0cmluZ0NvbXBhcmUoa2V5LCBrQ01UZXh0TWFya3VwQXR0cmli
dXRlX1JlbGF0aXZlRm9udFNpemUsIDApID09IGtDRkNvbXBhcmVFcXVhbFRvKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKENGR2V0VHlwZUlEKHZhbHVlKSAhPSBDRk51bWJlckdldFR5cGVJRCgpKQor
ICAgICAgICAgICAgICAgIGF1dG8gdmFsdWVOdW1iZXIgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZOdW1i
ZXJSZWY+KHZhbHVlKTsKKyAgICAgICAgICAgICAgICBpZiAoIXZhbHVlTnVtYmVyKQogICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICBDRk51bWJlclJlZiB2YWx1ZU51bWJlciA9IHN0YXRpY19jYXN0PENGTnVtYmVyUmVmPih2YWx1
ZSk7CisKICAgICAgICAgICAgICAgICBkb3VibGUgcmVsYXRpdmVGb250U2l6ZTsKICAgICAgICAg
ICAgICAgICBDRk51bWJlckdldFZhbHVlKHZhbHVlTnVtYmVyLCBrQ0ZOdW1iZXJGbG9hdDY0VHlw
ZSwgJnJlbGF0aXZlRm9udFNpemUpOwogICAgICAgICAgICAgICAgIGN1ZURhdGEtPnNldFJlbGF0
aXZlRm9udFNpemUocmVsYXRpdmVGb250U2l6ZSk7CkBAIC0yNTEsOCArMjUxLDggQEAgUmVmPElu
YmFuZEdlbmVyaWNDdWU+IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWVBdHRy
aWJ1dGVzKENGQXR0cmlidXQKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKENGU3Ry
aW5nQ29tcGFyZShrZXksIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfRm9udEZhbWlseU5hbWUsIDAp
ID09IGtDRkNvbXBhcmVFcXVhbFRvKSB7Ci0gICAgICAgICAgICAgICAgdmFsdWVTdHJpbmcgPSBz
dGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4odmFsdWUpOwotICAgICAgICAgICAgICAgIGlmIChDRkdl
dFR5cGVJRCh2YWx1ZVN0cmluZykgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSB8fCAhQ0ZTdHJpbmdH
ZXRMZW5ndGgodmFsdWVTdHJpbmcpKQorICAgICAgICAgICAgICAgIGF1dG8gdmFsdWVTdHJpbmcg
PSBkeW5hbWljX2NmX2Nhc3Q8Q0ZTdHJpbmdSZWY+KHZhbHVlKTsKKyAgICAgICAgICAgICAgICBp
ZiAoIXZhbHVlU3RyaW5nIHx8ICFDRlN0cmluZ0dldExlbmd0aCh2YWx1ZVN0cmluZykpCiAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzZWQg
JiBGb250TmFtZSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0yNjMsMjIgKzI2
MywyMiBAQCBSZWY8SW5iYW5kR2VuZXJpY0N1ZT4gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6
cHJvY2Vzc0N1ZUF0dHJpYnV0ZXMoQ0ZBdHRyaWJ1dAogICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKGtleSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9Gb3Jl
Z3JvdW5kQ29sb3JBUkdCLCAwKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykgewotICAgICAgICAgICAg
ICAgIENGQXJyYXlSZWYgYXJyYXlWYWx1ZSA9IHN0YXRpY19jYXN0PENGQXJyYXlSZWY+KHZhbHVl
KTsKLSAgICAgICAgICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQoYXJyYXlWYWx1ZSkgIT0gQ0ZBcnJh
eUdldFR5cGVJRCgpKQorICAgICAgICAgICAgICAgIGF1dG8gYXJyYXlWYWx1ZSA9IGR5bmFtaWNf
Y2ZfY2FzdDxDRkFycmF5UmVmPih2YWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKCFhcnJheVZh
bHVlKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAKKwog
ICAgICAgICAgICAgICAgIGF1dG8gY29sb3IgPSBtYWtlU2ltcGxlQ29sb3JGcm9tQVJHQkNGQXJy
YXkoYXJyYXlWYWx1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKCFjb2xvcikKICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgY3VlRGF0YS0+c2V0Rm9yZWdyb3Vu
ZENvbG9yKCpjb2xvcik7CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgaWYgKENGU3RyaW5nQ29tcGFyZShrZXksIGtD
TVRleHRNYXJrdXBBdHRyaWJ1dGVfQmFja2dyb3VuZENvbG9yQVJHQiwgMCkgPT0ga0NGQ29tcGFy
ZUVxdWFsVG8pIHsKLSAgICAgICAgICAgICAgICBDRkFycmF5UmVmIGFycmF5VmFsdWUgPSBzdGF0
aWNfY2FzdDxDRkFycmF5UmVmPih2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgaWYgKENGR2V0VHlw
ZUlEKGFycmF5VmFsdWUpICE9IENGQXJyYXlHZXRUeXBlSUQoKSkKKyAgICAgICAgICAgICAgICBh
dXRvIGFycmF5VmFsdWUgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZBcnJheVJlZj4odmFsdWUpOworICAg
ICAgICAgICAgICAgIGlmICghYXJyYXlWYWx1ZSkKICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICAgICAgCisKICAgICAgICAgICAgICAgICBhdXRvIGNvbG9yID0gbWFr
ZVNpbXBsZUNvbG9yRnJvbUFSR0JDRkFycmF5KGFycmF5VmFsdWUpOwogICAgICAgICAgICAgICAg
IGlmICghY29sb3IpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjg3LDEwICsy
ODcsMTAgQEAgUmVmPEluYmFuZEdlbmVyaWNDdWU+IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6
OnByb2Nlc3NDdWVBdHRyaWJ1dGVzKENGQXR0cmlidXQKICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgaWYgKENGU3RyaW5nQ29tcGFyZShrZXksIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfQ2hh
cmFjdGVyQmFja2dyb3VuZENvbG9yQVJHQiwgMCkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pIHsKLSAg
ICAgICAgICAgICAgICBDRkFycmF5UmVmIGFycmF5VmFsdWUgPSBzdGF0aWNfY2FzdDxDRkFycmF5
UmVmPih2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgaWYgKENGR2V0VHlwZUlEKGFycmF5VmFsdWUp
ICE9IENGQXJyYXlHZXRUeXBlSUQoKSkKKyAgICAgICAgICAgICAgICBhdXRvIGFycmF5VmFsdWUg
PSBkeW5hbWljX2NmX2Nhc3Q8Q0ZBcnJheVJlZj4odmFsdWUpOworICAgICAgICAgICAgICAgIGlm
ICghYXJyYXlWYWx1ZSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAg
ICAgICAgCisKICAgICAgICAgICAgICAgICBhdXRvIGNvbG9yID0gbWFrZVNpbXBsZUNvbG9yRnJv
bUFSR0JDRkFycmF5KGFycmF5VmFsdWUpOwogICAgICAgICAgICAgICAgIGlmICghY29sb3IpCiAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KaW5kZXggMmM4YjJlMjY2MTgzOTE1NWMz
ZjU3ZTliYzExYTMwOWUyZjk5ZTY2YS4uYWYyYTJlNmMwNGFmNTNiNjJhMzViYjA3OTFiNmNjNTg5
MDA5ZTFhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDLm1tCkBAIC00OCw2ICs0OCw3IEBACiAjaW1wb3J0IDxwYWwvYXZmb3VuZGF0
aW9uL01lZGlhVGltZUFWRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9BVkZv
dW5kYXRpb25TUEkuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CisjaW1w
b3J0IDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4KIAogI2ltcG9ydCA8cGFsL2NmL0NvcmVNZWRpYVNv
ZnRMaW5rLmg+CiAjaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KQEAg
LTE2OSw5ICsxNzAsOCBAQCBwcml2YXRlOgogICAgICAgICBpZiAoZGVzY3JpcHRpb24pIHsKICAg
ICAgICAgICAgIG1fb3JpZ2luYWxDb2RlYyA9IFBBTDo6c29mdExpbmtfQ29yZU1lZGlhX0NNRm9y
bWF0RGVzY3JpcHRpb25HZXRNZWRpYVN1YlR5cGUoZGVzY3JpcHRpb24pOwogICAgICAgICAgICAg
Q0ZTdHJpbmdSZWYgb3JpZ2luYWxGb3JtYXRLZXkgPSBQQUw6OmNhbkxvYWRfQ29yZU1lZGlhX2tD
TUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX1Byb3RlY3RlZENvbnRlbnRPcmlnaW5hbEZvcm1h
dCgpID8gUEFMOjpnZXRfQ29yZU1lZGlhX2tDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX1By
b3RlY3RlZENvbnRlbnRPcmlnaW5hbEZvcm1hdCgpIDogQ0ZTVFIoIkNvbW1vbkVuY3J5cHRpb25P
cmlnaW5hbEZvcm1hdCIpOwotICAgICAgICAgICAgQ0ZUeXBlUmVmIG9yaWdpbmFsRm9ybWF0ID0g
Q01Gb3JtYXREZXNjcmlwdGlvbkdldEV4dGVuc2lvbihkZXNjcmlwdGlvbiwgb3JpZ2luYWxGb3Jt
YXRLZXkpOwotICAgICAgICAgICAgaWYgKG9yaWdpbmFsRm9ybWF0ICYmIENGR2V0VHlwZUlEKG9y
aWdpbmFsRm9ybWF0KSA9PSBDRk51bWJlckdldFR5cGVJRCgpKQotICAgICAgICAgICAgICAgIENG
TnVtYmVyR2V0VmFsdWUoKENGTnVtYmVyUmVmKW9yaWdpbmFsRm9ybWF0LCBrQ0ZOdW1iZXJTSW50
MzJUeXBlLCAmbV9vcmlnaW5hbENvZGVjKTsKKyAgICAgICAgICAgIGlmIChhdXRvIG9yaWdpbmFs
Rm9ybWF0ID0gZHluYW1pY19jZl9jYXN0PENGTnVtYmVyUmVmPihDTUZvcm1hdERlc2NyaXB0aW9u
R2V0RXh0ZW5zaW9uKGRlc2NyaXB0aW9uLCBvcmlnaW5hbEZvcm1hdEtleSkpKQorICAgICAgICAg
ICAgICAgIENGTnVtYmVyR2V0VmFsdWUob3JpZ2luYWxGb3JtYXQsIGtDRk51bWJlclNJbnQzMlR5
cGUsICZtX29yaWdpbmFsQ29kZWMpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3Jl
VGV4dC5jcHAKaW5kZXggYmVkZTU0NTZkN2ZkNWQyZTgwMmViOGVlNzgxNjUzYmYyNDA2YTZhZi4u
ODUyMDMxMzBlMTJlZGM0ZjUyOWIwZjkwMGMwYWY0OWQ5OWZkNWNiMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNv
cmVUZXh0LmNwcApAQCAtMzIsMTUgKzMyLDE0IEBACiAjaW5jbHVkZSAiUmVuZGVyVGhlbWVDb2Nv
YS5oIgogI2luY2x1ZGUgIlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmgiCiAjaW5jbHVkZSAi
VmVyc2lvbkNoZWNrcy5oIgotI2luY2x1ZGUgPHBhbC9zcGkvY2YvQ29yZVRleHRTUEkuaD4KLQog
I2luY2x1ZGUgPENvcmVUZXh0L1NGTlRMYXlvdXRUeXBlcy5oPgotCisjaW5jbHVkZSA8cGFsL3Nw
aS9jZi9Db3JlVGV4dFNQSS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8
d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9N
ZW1vcnlQcmVzc3VyZUhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4KIAogLy8gRklYTUU6IFRoaXMgc2VlbXMg
bGlrZSBpdCBzaG91bGQgYmUgaW4gUGxhdGZvcm1IYXZlLmguCiAvLyBGSVhNRTogTGlrZWx5IHdl
IGNhbiByZW1vdmUgdGhpcyBzcGVjaWFsIGNhc2UgZm9yIHdhdGNoT1MgYW5kIHR2T1MuCkBAIC02
OTcsOCArNjk2LDggQEAgVmVjdG9yPFN0cmluZz4gRm9udENhY2hlOjpzeXN0ZW1Gb250RmFtaWxp
ZXMoKQogICAgIGF1dG8gYXZhaWxhYmxlRm9udEZhbWlsaWVzID0gYWRvcHRDRihDVEZvbnRNYW5h
Z2VyQ29weUF2YWlsYWJsZUZvbnRGYW1pbHlOYW1lcygpKTsKICAgICBDRkluZGV4IGNvdW50ID0g
Q0ZBcnJheUdldENvdW50KGF2YWlsYWJsZUZvbnRGYW1pbGllcy5nZXQoKSk7CiAgICAgZm9yIChD
RkluZGV4IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICBDRlN0cmluZ1JlZiBmb250
TmFtZSA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGF2
YWlsYWJsZUZvbnRGYW1pbGllcy5nZXQoKSwgaSkpOwotICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQo
Zm9udE5hbWUpICE9IENGU3RyaW5nR2V0VHlwZUlEKCkpIHsKKyAgICAgICAgYXV0byBmb250TmFt
ZSA9IGR5bmFtaWNfY2ZfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChh
dmFpbGFibGVGb250RmFtaWxpZXMuZ2V0KCksIGkpKTsKKyAgICAgICAgaWYgKCFmb250TmFtZSkg
ewogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgfQpAQCAtMTM0Nyw4ICsxMzQ2LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlz
QXJhYmljQ2hhcmFjdGVyKFVDaGFyIGNoYXJhY3RlcikKICNpZiBBU1NFUlRfRU5BQkxFRAogc3Rh
dGljIGJvb2wgaXNVc2VySW5zdGFsbGVkRm9udChDVEZvbnRSZWYgZm9udCkKIHsKLSAgICBhdXRv
IGF0dHJpYnV0ZSA9IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0ZCb29sZWFuUmVmPihDVEZvbnRDb3B5
QXR0cmlidXRlKGZvbnQsIGtDVEZvbnRVc2VySW5zdGFsbGVkQXR0cmlidXRlKSkpOwotICAgIHJl
dHVybiBhdHRyaWJ1dGUgJiYgQ0ZCb29sZWFuR2V0VmFsdWUoYXR0cmlidXRlLmdldCgpKTsKKyAg
ICByZXR1cm4gYWRvcHRDRihDVEZvbnRDb3B5QXR0cmlidXRlKGZvbnQsIGtDVEZvbnRVc2VySW5z
dGFsbGVkQXR0cmlidXRlKSkgPT0ga0NGQm9vbGVhblRydWU7CiB9CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSEVWQ1V0aWxpdGll
c0NvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSEVWQ1V0
aWxpdGllc0NvY29hLm1tCmluZGV4IGVhY2RmNzAxMzUyMDBkYTg0Mjc5N2M0MGM2MjUxYjllYzc1
NTUwYTYuLmYwODJjYzFjZTBhZDdlNDE1Y2ZkNDY3YzFhMDZiZTA1MDM4YTUxMDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0hFVkNVdGlsaXRpZXND
b2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9IRVZD
VXRpbGl0aWVzQ29jb2EubW0KQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgIkZvdXJDQy5oIgog
I2ltcG9ydCAiSEVWQ1V0aWxpdGllcy5oIgogI2ltcG9ydCAiTWVkaWFDYXBhYmlsaXRpZXNJbmZv
LmgiCisjaW1wb3J0IDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0
cmluZ1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIAogI2ltcG9ydCAiVmlkZW9Ub29sYm94U29mdExp
bmsuaCIKQEAgLTc2LDggKzc3LDggQEAgc3RkOjpvcHRpb25hbDxNZWRpYUNhcGFiaWxpdGllc0lu
Zm8+IHZhbGlkYXRlSEVWQ1BhcmFtZXRlcnMoY29uc3QgSEVWQ1BhcmFtZXRlcnMKICAgICBpZiAo
IWNhcGFiaWxpdGllcykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIGF1dG8g
c3VwcG9ydGVkUHJvZmlsZXMgPSAoQ0ZBcnJheVJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShjYXBh
YmlsaXRpZXMuZ2V0KCksIGtWVEhFVkNEZWNvZGVyQ2FwYWJpbGl0eV9TdXBwb3J0ZWRQcm9maWxl
cyk7Ci0gICAgaWYgKCFzdXBwb3J0ZWRQcm9maWxlcyB8fCBDRkdldFR5cGVJRChzdXBwb3J0ZWRQ
cm9maWxlcykgIT0gQ0ZBcnJheUdldFR5cGVJRCgpKQorICAgIGF1dG8gc3VwcG9ydGVkUHJvZmls
ZXMgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZBcnJheVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoY2Fw
YWJpbGl0aWVzLmdldCgpLCBrVlRIRVZDRGVjb2RlckNhcGFiaWxpdHlfU3VwcG9ydGVkUHJvZmls
ZXMpKTsKKyAgICBpZiAoIXN1cHBvcnRlZFByb2ZpbGVzKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCiAgICAgaW50MTZfdCBnZW5lcmFsUHJvZmlsZUlEQyA9IHBhcmFtZXRlcnMuZ2Vu
ZXJhbFByb2ZpbGVJREM7CkBAIC04NiwyNSArODcsMjIgQEAgc3RkOjpvcHRpb25hbDxNZWRpYUNh
cGFiaWxpdGllc0luZm8+IHZhbGlkYXRlSEVWQ1BhcmFtZXRlcnMoY29uc3QgSEVWQ1BhcmFtZXRl
cnMKICAgICBpZiAoIUNGQXJyYXlDb250YWluc1ZhbHVlKHN1cHBvcnRlZFByb2ZpbGVzLCBzZWFy
Y2hSYW5nZSwgY2ZHZW5lcmFsUHJvZmlsZUlEQy5nZXQoKSkpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKLSAgICBhdXRvIHBlclByb2ZpbGVTdXBwb3J0ID0gKENGRGljdGlvbmFyeVJl
ZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShjYXBhYmlsaXRpZXMuZ2V0KCksIGtWVEhFVkNEZWNvZGVy
Q2FwYWJpbGl0eV9QZXJQcm9maWxlU3VwcG9ydCk7Ci0gICAgaWYgKCFwZXJQcm9maWxlU3VwcG9y
dCB8fCBDRkdldFR5cGVJRChwZXJQcm9maWxlU3VwcG9ydCkgIT0gQ0ZEaWN0aW9uYXJ5R2V0VHlw
ZUlEKCkpCisgICAgYXV0byBwZXJQcm9maWxlU3VwcG9ydCA9IGR5bmFtaWNfY2ZfY2FzdDxDRkRp
Y3Rpb25hcnlSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKGNhcGFiaWxpdGllcy5nZXQoKSwga1ZU
SEVWQ0RlY29kZXJDYXBhYmlsaXR5X1BlclByb2ZpbGVTdXBwb3J0KSk7CisgICAgaWYgKCFwZXJQ
cm9maWxlU3VwcG9ydCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8g
Z2VuZXJhbFByb2ZpbGVJRENTdHJpbmcgPSBTdHJpbmc6Om51bWJlcihnZW5lcmFsUHJvZmlsZUlE
QykuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAgICBhdXRvIHByb2ZpbGVTdXBwb3J0ID0gKENGRGljdGlv
bmFyeVJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShwZXJQcm9maWxlU3VwcG9ydCwgZ2VuZXJhbFBy
b2ZpbGVJRENTdHJpbmcuZ2V0KCkpOwotICAgIGlmICghcHJvZmlsZVN1cHBvcnQgfHwgQ0ZHZXRU
eXBlSUQocHJvZmlsZVN1cHBvcnQpICE9IENGRGljdGlvbmFyeUdldFR5cGVJRCgpKQorICAgIGF1
dG8gcHJvZmlsZVN1cHBvcnQgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkRp
Y3Rpb25hcnlHZXRWYWx1ZShwZXJQcm9maWxlU3VwcG9ydCwgZ2VuZXJhbFByb2ZpbGVJRENTdHJp
bmcuZ2V0KCkpKTsKKyAgICBpZiAoIXByb2ZpbGVTdXBwb3J0KQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgTWVkaWFDYXBhYmlsaXRpZXNJbmZvIGluZm87CiAKICAgICBpbmZv
LnN1cHBvcnRlZCA9IHRydWU7CiAKLSAgICBhdXRvIGlzSGFyZHdhcmVBY2NlbGVyYXRlZCA9IChD
RkJvb2xlYW5SZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvZmlsZVN1cHBvcnQsIGtWVEhFVkNE
ZWNvZGVyUHJvZmlsZUNhcGFiaWxpdHlfSXNIYXJkd2FyZUFjY2VsZXJhdGVkKTsKLSAgICBpZiAo
aXNIYXJkd2FyZUFjY2VsZXJhdGVkICYmIENGR2V0VHlwZUlEKGlzSGFyZHdhcmVBY2NlbGVyYXRl
ZCkgPT0gQ0ZCb29sZWFuR2V0VHlwZUlEKCkpCi0gICAgICAgIGluZm8ucG93ZXJFZmZpY2llbnQg
PSBDRkJvb2xlYW5HZXRWYWx1ZShpc0hhcmR3YXJlQWNjZWxlcmF0ZWQpOworICAgIGluZm8ucG93
ZXJFZmZpY2llbnQgPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9maWxlU3VwcG9ydCwga1ZUSEVW
Q0RlY29kZXJQcm9maWxlQ2FwYWJpbGl0eV9Jc0hhcmR3YXJlQWNjZWxlcmF0ZWQpID09IGtDRkJv
b2xlYW5UcnVlOwogCi0gICAgYXV0byBjZk1heERlY29kZUxldmVsID0gKENGTnVtYmVyUmVmKUNG
RGljdGlvbmFyeUdldFZhbHVlKHByb2ZpbGVTdXBwb3J0LCBrVlRIRVZDRGVjb2RlclByb2ZpbGVD
YXBhYmlsaXR5X01heERlY29kZUxldmVsKTsKLSAgICBpZiAoY2ZNYXhEZWNvZGVMZXZlbCAmJiBD
RkdldFR5cGVJRChjZk1heERlY29kZUxldmVsKSA9PSBDRk51bWJlckdldFR5cGVJRCgpKSB7Cisg
ICAgaWYgKGF1dG8gY2ZNYXhEZWNvZGVMZXZlbCA9IGR5bmFtaWNfY2ZfY2FzdDxDRk51bWJlclJl
Zj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJvZmlsZVN1cHBvcnQsIGtWVEhFVkNEZWNvZGVyUHJv
ZmlsZUNhcGFiaWxpdHlfTWF4RGVjb2RlTGV2ZWwpKSkgewogICAgICAgICBpbnQxNl90IG1heERl
Y29kZUxldmVsID0gMDsKICAgICAgICAgaWYgKCFDRk51bWJlckdldFZhbHVlKGNmTWF4RGVjb2Rl
TGV2ZWwsIGtDRk51bWJlclNJbnQxNlR5cGUsICZtYXhEZWNvZGVMZXZlbCkpCiAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtMTEzLDggKzExMSw3IEBAIHN0ZDo6b3B0aW9uYWw8
TWVkaWFDYXBhYmlsaXRpZXNJbmZvPiB2YWxpZGF0ZUhFVkNQYXJhbWV0ZXJzKGNvbnN0IEhFVkNQ
YXJhbWV0ZXJzCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAotICAg
IGF1dG8gY2ZNYXhQbGF5YmFja0xldmVsID0gKENGTnVtYmVyUmVmKUNGRGljdGlvbmFyeUdldFZh
bHVlKHByb2ZpbGVTdXBwb3J0LCBrVlRIRVZDRGVjb2RlclByb2ZpbGVDYXBhYmlsaXR5X01heFBs
YXliYWNrTGV2ZWwpOwotICAgIGlmIChjZk1heFBsYXliYWNrTGV2ZWwgJiYgQ0ZHZXRUeXBlSUQo
Y2ZNYXhQbGF5YmFja0xldmVsKSA9PSBDRk51bWJlckdldFR5cGVJRCgpKSB7CisgICAgaWYgKGF1
dG8gY2ZNYXhQbGF5YmFja0xldmVsID0gZHluYW1pY19jZl9jYXN0PENGTnVtYmVyUmVmPihDRkRp
Y3Rpb25hcnlHZXRWYWx1ZShwcm9maWxlU3VwcG9ydCwga1ZUSEVWQ0RlY29kZXJQcm9maWxlQ2Fw
YWJpbGl0eV9NYXhQbGF5YmFja0xldmVsKSkpIHsKICAgICAgICAgaW50MTZfdCBtYXhQbGF5YmFj
a0xldmVsID0gMDsKICAgICAgICAgaWYgKCFDRk51bWJlckdldFZhbHVlKGNmTWF4UGxheWJhY2tM
ZXZlbCwga0NGTnVtYmVyU0ludDE2VHlwZSwgJm1heFBsYXliYWNrTGV2ZWwpKQogICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAgLTE5NiwxMCArMTkzLDcgQEAgc3RkOjpvcHRpb25h
bDxNZWRpYUNhcGFiaWxpdGllc0luZm8+IHZhbGlkYXRlRG9WaVBhcmFtZXRlcnMoY29uc3QgRG9W
aVBhcmFtZXRlcnMKICAgICBpZiAoIXN1cHBvcnRlZExldmVscykKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgIGF1dG8gaXNIYXJkd2FyZUFjY2VsZXJhdGVkQ0YgPSAoQ0ZCb29s
ZWFuUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGNhcGFiaWxpdGllcy5nZXQoKSwga1ZURG9sYnlW
aXNpb25EZWNvZGVyQ2FwYWJpbGl0eV9Jc0hhcmR3YXJlQWNjZWxlcmF0ZWQpOwotICAgIGlmICgh
aXNIYXJkd2FyZUFjY2VsZXJhdGVkQ0YgfHwgQ0ZHZXRUeXBlSUQoaXNIYXJkd2FyZUFjY2VsZXJh
dGVkQ0YpICE9IENGQm9vbGVhbkdldFR5cGVJRCgpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwotICAgIGJvb2wgaXNIYXJkd2FyZUFjY2VsZXJhdGVkID0gQ0ZCb29sZWFuR2V0VmFsdWUo
aXNIYXJkd2FyZUFjY2VsZXJhdGVkQ0YpOworICAgIGJvb2wgaXNIYXJkd2FyZUFjY2VsZXJhdGVk
ID0gQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoY2FwYWJpbGl0aWVzLmdldCgpLCBrVlREb2xieVZpc2lv
bkRlY29kZXJDYXBhYmlsaXR5X0lzSGFyZHdhcmVBY2NlbGVyYXRlZCkgPT0ga0NGQm9vbGVhblRy
dWU7CiAKICAgICBpZiAoIXN1cHBvcnRlZFByb2ZpbGVzLnZhbHVlKCkuY29udGFpbnMocGFyYW1l
dGVycy5iaXRzdHJlYW1Qcm9maWxlSUQpIHx8ICFzdXBwb3J0ZWRMZXZlbHMudmFsdWUoKS5jb250
YWlucyhwYXJhbWV0ZXJzLmJpdHN0cmVhbUxldmVsSUQpKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCmluZGV4IGQx
Yzg0NDg4MzY3NDBmZGI3NWM0MGFjOTNmN2RkMDlkNzhmMDMwMDAuLmI1ZmE1OGVjNDI5NmM2ZjM2
YTFkZjcxMzM0MDBhMjU0MzA2ZTI1NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVzc2lv
blNlc3Npb24ubW0KQEAgLTE5NCw4ICsxOTQsNyBAQCBib29sIFdlYkNvcmVEZWNvbXByZXNzaW9u
U2Vzc2lvbjo6c2hvdWxkRGVjb2RlU2FtcGxlKENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZSwgYgog
CiAgICAgZm9yIChDRkluZGV4IGluZGV4ID0gMCwgY291bnQgPSBDRkFycmF5R2V0Q291bnQoYXR0
YWNobWVudHMpOyBpbmRleCA8IGNvdW50OyArK2luZGV4KSB7CiAgICAgICAgIENGRGljdGlvbmFy
eVJlZiBhdHRhY2htZW50RGljdCA9IChDRkRpY3Rpb25hcnlSZWYpQ0ZBcnJheUdldFZhbHVlQXRJ
bmRleChhdHRhY2htZW50cywgaW5kZXgpOwotICAgICAgICBDRkJvb2xlYW5SZWYgZGVwZW5kZWRP
biA9IChDRkJvb2xlYW5SZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoYXR0YWNobWVudERpY3QsIFBB
TDo6a0NNU2FtcGxlQXR0YWNobWVudEtleV9Jc0RlcGVuZGVkT25CeU90aGVycyk7Ci0gICAgICAg
IGlmIChkZXBlbmRlZE9uICYmICFDRkJvb2xlYW5HZXRWYWx1ZShkZXBlbmRlZE9uKSkKKyAgICAg
ICAgaWYgKENGRGljdGlvbmFyeUdldFZhbHVlKGF0dGFjaG1lbnREaWN0LCBQQUw6OmtDTVNhbXBs
ZUF0dGFjaG1lbnRLZXlfSXNEZXBlbmRlZE9uQnlPdGhlcnMpID09IGtDRkJvb2xlYW5GYWxzZSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxh
dGZvcm1EYXRhQ29yZVRleHQuY3BwCmluZGV4IDYxNGM4MDJlZGQ0OGI1Y2Q5ZmE0N2ZhM2Y4ZmZk
Yjk4MzM3MzY2MDguLmI4OTE5OWM1ZDNkZGNkYmMwNGFjM2JlOTkwNzA4YTM0YzU2ZTkzNjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQ
bGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcApAQCAtMTQxLDkgKzE0
MSw5IEBAIFJldGFpblB0cjxDRlR5cGVSZWY+IEZvbnRQbGF0Zm9ybURhdGE6Om9iamVjdEZvckVx
dWFsaXR5Q2hlY2soQ1RGb250UmVmIGN0Rm9udCkKICAgICBhdXRvIGZvbnREZXNjcmlwdG9yID0g
YWRvcHRDRihDVEZvbnRDb3B5Rm9udERlc2NyaXB0b3IoY3RGb250KSk7CiAgICAgLy8gRklYTUU6
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzg2ODMgVGhpcyBpcyBh
IHNoYWxsb3cgcG9pbnRlciBjb21wYXJlIGZvciB3ZWIgZm9udHMKICAgICAvLyBiZWNhdXNlIHRo
ZSBVUkwgY29udGFpbnMgdGhlIGFkZHJlc3Mgb2YgdGhlIGZvbnQuIFRoaXMgbWVhbnMgd2UgbWln
aHQgZXJyb25lb3VzbHkgZ2V0IGZhbHNlIG5lZ2F0aXZlcy4KLSAgICBSZXRhaW5QdHI8Q0ZVUkxS
ZWY+IHVybCA9IGFkb3B0Q0Yoc3RhdGljX2Nhc3Q8Q0ZVUkxSZWY+KENURm9udERlc2NyaXB0b3JD
b3B5QXR0cmlidXRlKGZvbnREZXNjcmlwdG9yLmdldCgpLCBrQ1RGb250UmVmZXJlbmNlVVJMQXR0
cmlidXRlKSkpOwotICAgIEFTU0VSVCghdXJsIHx8IENGR2V0VHlwZUlEKHVybC5nZXQoKSkgPT0g
Q0ZVUkxHZXRUeXBlSUQoKSk7Ci0gICAgcmV0dXJuIHVybDsKKyAgICBhdXRvIG9iamVjdCA9IGFk
b3B0Q0YoQ1RGb250RGVzY3JpcHRvckNvcHlBdHRyaWJ1dGUoZm9udERlc2NyaXB0b3IuZ2V0KCks
IGtDVEZvbnRSZWZlcmVuY2VVUkxBdHRyaWJ1dGUpKTsKKyAgICBBU1NFUlQoIW9iamVjdCB8fCBD
RkdldFR5cGVJRChvYmplY3QuZ2V0KCkpID09IENGVVJMR2V0VHlwZUlEKCkpOworICAgIHJldHVy
biBvYmplY3Q7CiB9CiAKIFJldGFpblB0cjxDRlR5cGVSZWY+IEZvbnRQbGF0Zm9ybURhdGE6Om9i
amVjdEZvckVxdWFsaXR5Q2hlY2soKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5j
cHAKaW5kZXggNjA0NjM5ZWI5NWZhNDViNGFmYjU5NmMxZGQ1YmJkZGQ0YmYyZGEwMS4uNzgwMWJl
NDk2MDE0ZjM0NzNkNDQ1MjVlNDQ4MTUyNjQyOGFhNmRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRH
TENWQU5HTEUuY3BwCkBAIC0yOSwxNSArMjksMTcgQEAKICNpZiBFTkFCTEUoV0VCR0wpICYmIEVO
QUJMRShWSURFTykgJiYgVVNFKEFWRk9VTkRBVElPTikKIAogI2luY2x1ZGUgIkFOR0xFSGVhZGVy
cy5oIgotI2luY2x1ZGUgIkNvcmVWaWRlb1NvZnRMaW5rLmgiCiAjaW5jbHVkZSAiRm91ckNDLmgi
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgPHBhbC9zcGkvY2YvQ29yZVZpZGVvU1BJ
Lmg+CiAjaW5jbHVkZSA8cGFsL3NwaS9jb2NvYS9JT1N1cmZhY2VTUEkuaD4KICNpbmNsdWRlIDx3
dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTWFwLmg+CisjaW5jbHVkZSA8
d3RmL2NmL1R5cGVDYXN0c0NGLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5o
PgogCisjaW5jbHVkZSAiQ29yZVZpZGVvU29mdExpbmsuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdGF0aWMgY29uc3RleHByIGF1dG8gc195dXZWZXJ0ZXhTaGFkZXJUZXh0dXJlMkQgewpA
QCAtMTU4LDcgKzE2MCw3IEBAIHN0YXRpYyBQaXhlbFJhbmdlIHBpeGVsUmFuZ2VGcm9tUGl4ZWxG
b3JtYXQoT1NUeXBlIHBpeGVsRm9ybWF0KQogCiBzdGF0aWMgVHJhbnNmZXJGdW5jdGlvbkNWIHRy
YW5zZmVyRnVuY3Rpb25Gcm9tU3RyaW5nKENGU3RyaW5nUmVmIHN0cmluZykKIHsKLSAgICBpZiAo
IXN0cmluZyB8fCBDRkdldFR5cGVJRChzdHJpbmcpICE9IENGU3RyaW5nR2V0VHlwZUlEKCkpCisg
ICAgaWYgKCFzdHJpbmcpCiAgICAgICAgIHJldHVybiBUcmFuc2ZlckZ1bmN0aW9uQ1Y6OlVua25v
d247CiAgICAgaWYgKENGRXF1YWwoc3RyaW5nLCBrQ1ZJbWFnZUJ1ZmZlcllDYkNyTWF0cml4X0lU
VV9SXzcwOV8yKSkKICAgICAgICAgcmV0dXJuIFRyYW5zZmVyRnVuY3Rpb25DVjo6a0lUVV9SXzcw
OV8yOwpAQCAtNjk5LDcgKzcwMSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOjpj
b3B5UGl4ZWxCdWZmZXJUb1RleHR1cmUoQ1ZQaXhlbEJ1ZmZlclJlZiBpbWFnZSwKICAgICBtX2Nv
bnRleHQtPnVuaWZvcm0yZihtX3V2VGV4dHVyZVNpemVVbmlmb3JtTG9jYXRpb24sIHV2UGxhbmVX
aWR0aCwgdXZQbGFuZUhlaWdodCk7CiAKICAgICBhdXRvIHJhbmdlID0gcGl4ZWxSYW5nZUZyb21Q
aXhlbEZvcm1hdChwaXhlbEZvcm1hdCk7Ci0gICAgYXV0byB0cmFuc2ZlckZ1bmN0aW9uID0gdHJh
bnNmZXJGdW5jdGlvbkZyb21TdHJpbmcoKENGU3RyaW5nUmVmKUNWQnVmZmVyR2V0QXR0YWNobWVu
dChpbWFnZSwga0NWSW1hZ2VCdWZmZXJZQ2JDck1hdHJpeEtleSwgbmlsKSk7CisgICAgYXV0byB0
cmFuc2ZlckZ1bmN0aW9uID0gdHJhbnNmZXJGdW5jdGlvbkZyb21TdHJpbmcoZHluYW1pY19jZl9j
YXN0PENGU3RyaW5nUmVmPihDVkJ1ZmZlckdldEF0dGFjaG1lbnQoaW1hZ2UsIGtDVkltYWdlQnVm
ZmVyWUNiQ3JNYXRyaXhLZXksIG5pbCkpKTsKICAgICBhdXRvIGNvbG9yTWF0cml4ID0gWUNiQ3JU
b1JHQk1hdHJpeEZvclJhbmdlQW5kVHJhbnNmZXJGdW5jdGlvbihyYW5nZSwgdHJhbnNmZXJGdW5j
dGlvbik7CiAgICAgbV9jb250ZXh0LT51bmlmb3JtTWF0cml4NGZ2KG1fY29sb3JNYXRyaXhVbmlm
b3JtTG9jYXRpb24sIEdMX0ZBTFNFLCBjb2xvck1hdHJpeCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tCmluZGV4IDNiNmRlMWVjMGYzZmM1ZDE0MmRjZWM2
YTVhYTZkMzFjYzhkODBlNTUuLjYwMTFmYTJjOWFjNzY3M2FjOTE1MWQ1ZmYzNTJjN2U1ZTRhZWUy
MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1Mu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQpAQCAt
MzAsMTAgKzMwLDEyIEBACiAKICNpbXBvcnQgIkRldmljZS5oIgogI2ltcG9ydCAiU3lzdGVtVmVy
c2lvbi5oIgotI2ltcG9ydCA8cGFsL2lvcy9VSUtpdFNvZnRMaW5rLmg+CiAjaW1wb3J0IDxwYWwv
c3BpL2lvcy9Nb2JpbGVHZXN0YWx0U1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2lvcy9VSUtpdFNQ
SS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL2NmL1R5cGVDYXN0
c0NGLmg+CisKKyNpbXBvcnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTU5LDEyICs2MSwxMiBAQCBTdHJpbmcgb3NOYW1lRm9yVXNlckFnZW50
KCkKICAgICByZXR1cm4gImlQaG9uZSBPUyI7CiB9CiAKLXN0YXRpYyBpbmxpbmUgU3RyaW5nIGRl
dmljZU5hbWVGb3JVc2VyQWdlbnQoKQorc3RhdGljIFN0cmluZ1ZpZXcgZGV2aWNlTmFtZUZvclVz
ZXJBZ2VudCgpCiB7CiAgICAgaWYgKGlzQ2xhc3NpYygpKSB7CiAgICAgICAgIGlmIChpc0NsYXNz
aWNQYWQoKSkKLSAgICAgICAgICAgIHJldHVybiAiaVBhZCJfczsKLSAgICAgICAgcmV0dXJuICJp
UGhvbmUiX3M7CisgICAgICAgICAgICByZXR1cm4gImlQYWQiOworICAgICAgICByZXR1cm4gImlQ
aG9uZSI7CiAgICAgfQogCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gbmFtZSA9
IFtdIHsKQEAgLTc2LDI5ICs3OCwyMSBAQCBzdGF0aWMgaW5saW5lIFN0cmluZyBkZXZpY2VOYW1l
Rm9yVXNlckFnZW50KCkKICNlbmRpZgogICAgICAgICByZXR1cm4gbmFtZTsKICAgICB9KCk7Ci0g
ICAgcmV0dXJuIG5hbWU7CisgICAgcmV0dXJuIG5hbWUuZ2V0KCk7CiB9CiAKIFN0cmluZyBzdGFu
ZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlv
bk5hbWUsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50T1NWZXJzaW9uLCBVc2VyQWdlbnRUeXBlIHR5
cGUpCiB7Ci0gICAgaWYgKHR5cGUgPT0gVXNlckFnZW50VHlwZTo6RGVza3RvcCkgewotICAgICAg
ICBTdHJpbmcgYXBwTmFtZVN1ZmZpeCA9IGFwcGxpY2F0aW9uTmFtZS5pc0VtcHR5KCkgPyAiIiA6
IG1ha2VTdHJpbmcoIiAiLCBhcHBsaWNhdGlvbk5hbWUpOwotICAgICAgICByZXR1cm4gbWFrZVN0
cmluZygiTW96aWxsYS81LjAgKE1hY2ludG9zaDsgSW50ZWwgTWFjIE9TIFggMTBfMTVfNikgQXBw
bGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSIsIGFwcE5hbWVTdWZmaXgpOwot
ICAgIH0KLQotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZGVwcmVjYXRlIGFuZCBldmVudHVhbGx5
IHJlbW92ZSB0aGlzIG9ic29sZXRlIFVBIG92ZXJyaWRlOwotICAgIC8vIHNlZSBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3OTI3IGZvciBkZXRhaWxzLgotICAgIC8v
IENoZWNrIHRvIHNlZSBpZiB0aGVyZSBpcyBhIHVzZXIgYWdlbnQgb3ZlcnJpZGUgZm9yIGFsbCBX
ZWJLaXQgY2xpZW50cy4KLSAgICBhdXRvIG92ZXJyaWRlID0gYWRvcHRDRihDRlByZWZlcmVuY2Vz
Q29weUFwcFZhbHVlKENGU1RSKCJVc2VyQWdlbnQiKSwgQ0ZTVFIoImNvbS5hcHBsZS5XZWJGb3Vu
ZGF0aW9uIikpKTsKLSAgICBpZiAob3ZlcnJpZGUpIHsKLSAgICAgICAgaWYgKENGR2V0VHlwZUlE
KG92ZXJyaWRlLmdldCgpKSA9PSBDRlN0cmluZ0dldFR5cGVJRCgpKQotICAgICAgICAgICAgcmV0
dXJuIChfX2JyaWRnZSBOU1N0cmluZyAqKW92ZXJyaWRlLmdldCgpOwotICAgIH0KKyAgICBhdXRv
IHNlcGFyYXRvciA9IGFwcGxpY2F0aW9uTmFtZS5pc0VtcHR5KCkgPyAiIiA6ICIgIjsKKyAgICBp
ZiAodHlwZSA9PSBVc2VyQWdlbnRUeXBlOjpEZXNrdG9wKQorICAgICAgICByZXR1cm4gbWFrZVN0
cmluZygiTW96aWxsYS81LjAgKE1hY2ludG9zaDsgSW50ZWwgTWFjIE9TIFggMTBfMTVfNikgQXBw
bGVXZWJLaXQvNjA1LjEuMTUgKEtIVE1MLCBsaWtlIEdlY2tvKSIsIHNlcGFyYXRvciwgYXBwbGlj
YXRpb25OYW1lKTsKIAotICAgIFN0cmluZyBvc1ZlcnNpb24gPSB1c2VyQWdlbnRPU1ZlcnNpb24u
aXNFbXB0eSgpICA/IHN5c3RlbU1hcmtldGluZ1ZlcnNpb25Gb3JVc2VyQWdlbnRTdHJpbmcoKSA6
IHVzZXJBZ2VudE9TVmVyc2lvbjsKLSAgICBTdHJpbmcgYXBwTmFtZVN1ZmZpeCA9IGFwcGxpY2F0
aW9uTmFtZS5pc0VtcHR5KCkgPyAiIiA6IG1ha2VTdHJpbmcoIiAiLCBhcHBsaWNhdGlvbk5hbWUp
OworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZGVwcmVjYXRlIGFuZCByZW1vdmUgdGhpcyBvdmVy
cmlkZTsgc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc5Mjcg
Zm9yIGRldGFpbHMuCisgICAgaWYgKGF1dG8gb3ZlcnJpZGUgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZT
dHJpbmdSZWY+KGFkb3B0Q0YoQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZShDRlNUUigiVXNlckFn
ZW50IiksIENGU1RSKCJjb20uYXBwbGUuV2ViRm91bmRhdGlvbiIpKSkpKQorICAgICAgICByZXR1
cm4gb3ZlcnJpZGUuZ2V0KCk7CiAKLSAgICByZXR1cm4gbWFrZVN0cmluZygiTW96aWxsYS81LjAg
KCIsIGRldmljZU5hbWVGb3JVc2VyQWdlbnQoKSwgIjsgQ1BVICIsIG9zTmFtZUZvclVzZXJBZ2Vu
dCgpLCAiICIsIG9zVmVyc2lvbiwgIiBsaWtlIE1hYyBPUyBYKSBBcHBsZVdlYktpdC82MDUuMS4x
NSAoS0hUTUwsIGxpa2UgR2Vja28pIiwgYXBwTmFtZVN1ZmZpeCk7CisgICAgYXV0byBvc1ZlcnNp
b24gPSB1c2VyQWdlbnRPU1ZlcnNpb24uaXNFbXB0eSgpID8gc3lzdGVtTWFya2V0aW5nVmVyc2lv
bkZvclVzZXJBZ2VudFN0cmluZygpIDogdXNlckFnZW50T1NWZXJzaW9uOworICAgIHJldHVybiBt
YWtlU3RyaW5nKCJNb3ppbGxhLzUuMCAoIiwgZGV2aWNlTmFtZUZvclVzZXJBZ2VudCgpLCAiOyBD
UFUgIiwgb3NOYW1lRm9yVXNlckFnZW50KCksICIgIiwgb3NWZXJzaW9uLCAiIGxpa2UgTWFjIE9T
IFgpIEFwcGxlV2ViS2l0LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykiLCBzZXBhcmF0b3Is
IGFwcGxpY2F0aW9uTmFtZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2luZG93RGlzcGxh
eUNhcHR1cmVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L1dpbmRvd0Rpc3BsYXlDYXB0dXJlck1hYy5tbQppbmRleCBmMDJjZThmZGYwZjBjNThmNDA3MGQ0
YjRiNzgxZWRiNWYxZWMyMWRiLi5iMmU2NDczOTI0YWZlZjk0OWJjOTk4YzY4ODQ3NjZhMTlhOWVj
YWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
V2luZG93RGlzcGxheUNhcHR1cmVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9XaW5kb3dEaXNwbGF5Q2FwdHVyZXJNYWMubW0KQEAgLTcxLDggKzcx
LDcgQEAgc3RhdGljIGJvb2wgYW55T2ZDR1dpbmRvdyhjb25zdCBGdW5jdGlvbjxib29sKENGRGlj
dGlvbmFyeVJlZiBpbmZvLCB1bnNpZ25lZCBpZCwKICAgICAgICAgaWYgKHdpbmRvd0xheWVyKQog
ICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYXV0byBvblNjcmVlbiA9IGNoZWNrZWRf
Y2ZfY2FzdDxDRkJvb2xlYW5SZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKHdpbmRvd0luZm8sIGtD
R1dpbmRvd0lzT25zY3JlZW4pKTsKLSAgICAgICAgaWYgKCFDRkJvb2xlYW5HZXRWYWx1ZShvblNj
cmVlbikpCisgICAgICAgIGlmIChDRkRpY3Rpb25hcnlHZXRWYWx1ZSh3aW5kb3dJbmZvLCBrQ0dX
aW5kb3dJc09uc2NyZWVuKSA9PSBrQ0ZCb29sZWFuRmFsc2UpCiAgICAgICAgICAgICBjb250aW51
ZTsKIAogICAgICAgICBhdXRvIHdpbmRvd0lEUmVmID0gY2hlY2tlZF9jZl9jYXN0PENGTnVtYmVy
UmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZSh3aW5kb3dJbmZvLCBrQ0dXaW5kb3dOdW1iZXIpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJveHlTZXJ2
ZXJDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3h5U2Vy
dmVyQ0ZOZXQuY3BwCmluZGV4IDY0Y2ZjOWJlY2RiMjZjYjUzZDBlMTQxMDRlYzRlMWRmYzY5YjJm
NDAuLjhiMTllNzk0NzlmMzQyZjRkNTYyZDI2NjNjMGE2ZGZhYmNhNWY0NGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJveHlTZXJ2ZXJDRk5ldC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0
LmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJM
b2dnaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9jZi9U
eXBlQ2FzdHNDRi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpIHx8IFBMQVRGT1JNKFdJTikKQEAgLTc2LDggKzc3LDggQEAgc3RhdGlj
IHZvaWQgcHJvY2Vzc1Byb3h5U2VydmVycyhWZWN0b3I8UHJveHlTZXJ2ZXI+JiBwcm94eVNlcnZl
cnMsIENGQXJyYXlSZWYgcHIKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCByZXN0cnVjdHVyZSB0byBhbGxvdyB0aGlzIHRvIGhhcHBl
biBhc3luY2hyb25vdXNseS4KLSAgICAgICAgICAgIENGVVJMUmVmIHNjcmlwdFVSTCA9IHN0YXRp
Y19jYXN0PENGVVJMUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm94eURpY3Rpb25hcnksIGtD
RlByb3h5QXV0b0NvbmZpZ3VyYXRpb25VUkxLZXkpKTsKLSAgICAgICAgICAgIGlmICghc2NyaXB0
VVJMIHx8IENGR2V0VHlwZUlEKHNjcmlwdFVSTCkgIT0gQ0ZVUkxHZXRUeXBlSUQoKSkKKyAgICAg
ICAgICAgIGF1dG8gc2NyaXB0VVJMID0gZHluYW1pY19jZl9jYXN0PENGVVJMUmVmPihDRkRpY3Rp
b25hcnlHZXRWYWx1ZShwcm94eURpY3Rpb25hcnksIGtDRlByb3h5QXV0b0NvbmZpZ3VyYXRpb25V
UkxLZXkpKTsKKyAgICAgICAgICAgIGlmICghc2NyaXB0VVJMKQogICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogCiAgICAgICAgICAgICBDRlN0cmVhbUNsaWVudENvbnRleHQgY29udGV4dCA9IHsg
MCwgKHZvaWQqKSZwcm94eVNlcnZlcnMsIDAsIDAsIDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAK
aW5kZXggZWUxYWRkMDM3NGMzZDYxOTQyNWFiNTcxMjU3MzdkMmU0ZWU2OGEzMy4uMTNhZjkxNmNl
ZWY5Nzk4ZDE0YzI1MjFlMmY4MzE2ZDE5MzM4N2Y3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAK
QEAgLTQ4LDggKzQ4LDYgQEAKICNpbmNsdWRlIDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgog
I2VuZGlmCiAKLVdURl9ERUNMQVJFX0NGX1RZUEVfVFJBSVQoQ0ZVUkwpOwotCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIC8vIEZJWE1FOiBNYWtlIHRoaXMgYSBOZXR3b3JraW5nQ29udGV4dCBwcm9w
ZXJ0eS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29j
a2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcAppbmRleCA1NWI5ZjFlZDRh
MGQzMjVhNmIxNmExMTQzODlmMzljN2RlZDM2Y2E2Li44NTBmY2ExN2EyMWQ5NzFhOWUyMDI3OWEy
MzEyZTJkYTI3OTAwNDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCkBA
IC0yNDksMTIgKzI0OSw5IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y2hvb3NlUHJv
eHlGcm9tQXJyYXkoQ0ZBcnJheVJlZiBwcm94eUFycmF5KQogCiAgICAgLy8gUEFDIGlzIGFsd2F5
cyB0aGUgZmlyc3QgZW50cnksIGlmIHByZXNlbnQuCiAgICAgaWYgKHByb3h5QXJyYXlDb3VudCkg
ewotICAgICAgICBDRkRpY3Rpb25hcnlSZWYgcHJveHlJbmZvID0gc3RhdGljX2Nhc3Q8Q0ZEaWN0
aW9uYXJ5UmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KHByb3h5QXJyYXksIDApKTsKLSAgICAg
ICAgQ0ZUeXBlUmVmIHByb3h5VHlwZSA9IENGRGljdGlvbmFyeUdldFZhbHVlKHByb3h5SW5mbywg
a0NGUHJveHlUeXBlS2V5KTsKLSAgICAgICAgaWYgKHByb3h5VHlwZSAmJiBDRkdldFR5cGVJRChw
cm94eVR5cGUpID09IENGU3RyaW5nR2V0VHlwZUlEKCkpIHsKLSAgICAgICAgICAgIGlmIChDRkVx
dWFsKHByb3h5VHlwZSwga0NGUHJveHlUeXBlQXV0b0NvbmZpZ3VyYXRpb25VUkwpKSB7Ci0gICAg
ICAgICAgICAgICAgQ0ZUeXBlUmVmIHBhY0ZpbGVVUkwgPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShw
cm94eUluZm8sIGtDRlByb3h5QXV0b0NvbmZpZ3VyYXRpb25VUkxLZXkpOwotICAgICAgICAgICAg
ICAgIGlmIChwYWNGaWxlVVJMICYmIENGR2V0VHlwZUlEKHBhY0ZpbGVVUkwpID09IENGVVJMR2V0
VHlwZUlEKCkpIHsKKyAgICAgICAgaWYgKGF1dG8gcHJveHlJbmZvID0gZHluYW1pY19jZl9jYXN0
PENGRGljdGlvbmFyeVJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChwcm94eUFycmF5LCAwKSkp
IHsKKyAgICAgICAgICAgIGlmIChhdXRvIHByb3h5VHlwZSA9IGR5bmFtaWNfY2ZfY2FzdDxDRlN0
cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUocHJveHlJbmZvLCBrQ0ZQcm94eVR5cGVLZXkp
KTsgcHJveHlUeXBlICYmIENGRXF1YWwocHJveHlUeXBlLCBrQ0ZQcm94eVR5cGVBdXRvQ29uZmln
dXJhdGlvblVSTCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byBwYWNGaWxlVVJMID0gZHlu
YW1pY19jZl9jYXN0PENGVVJMUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm94eUluZm8sIGtD
RlByb3h5QXV0b0NvbmZpZ3VyYXRpb25VUkxLZXkpKSkgewogICAgICAgICAgICAgICAgICAgICBl
eGVjdXRlUEFDRmlsZVVSTChzdGF0aWNfY2FzdDxDRlVSTFJlZj4ocGFjRmlsZVVSTCkpOwogICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQpAQCAtMjYyLDIwICsy
NTksMjAgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjaG9vc2VQcm94eUZyb21BcnJh
eShDRkFycmF5UmVmIHByb3h5QXJyYXkpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBDRkRpY3Rp
b25hcnlSZWYgY2hvc2VuUHJveHkgPSAwOworICAgIENGRGljdGlvbmFyeVJlZiBjaG9zZW5Qcm94
eSA9IG51bGxwdHI7CiAgICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwgcHJveHlBcnJheUNvdW50
OyArK2kpIHsKLSAgICAgICAgQ0ZEaWN0aW9uYXJ5UmVmIHByb3h5SW5mbyA9IHN0YXRpY19jYXN0
PENGRGljdGlvbmFyeVJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChwcm94eUFycmF5LCBpKSk7
Ci0gICAgICAgIENGVHlwZVJlZiBwcm94eVR5cGUgPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm94
eUluZm8sIGtDRlByb3h5VHlwZUtleSk7Ci0gICAgICAgIGlmIChwcm94eVR5cGUgJiYgQ0ZHZXRU
eXBlSUQocHJveHlUeXBlKSA9PSBDRlN0cmluZ0dldFR5cGVJRCgpKSB7Ci0gICAgICAgICAgICBp
ZiAoQ0ZFcXVhbChwcm94eVR5cGUsIGtDRlByb3h5VHlwZVNPQ0tTKSkgewotICAgICAgICAgICAg
ICAgIG1fY29ubmVjdGlvblR5cGUgPSBTT0NLU1Byb3h5OwotICAgICAgICAgICAgICAgIGNob3Nl
blByb3h5ID0gcHJveHlJbmZvOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgaWYgKENGRXF1YWwocHJveHlUeXBlLCBrQ0ZQcm94eVR5cGVIVFRQUykp
IHsKLSAgICAgICAgICAgICAgICBtX2Nvbm5lY3Rpb25UeXBlID0gQ09OTkVDVFByb3h5OwotICAg
ICAgICAgICAgICAgIGNob3NlblByb3h5ID0gcHJveHlJbmZvOwotICAgICAgICAgICAgICAgIC8v
IEtlZXAgbG9va2luZyBmb3IgcHJveGllcywgYXMgYSBTT0NLUyBvbmUgaXMgcHJlZmVyYWJsZS4K
KyAgICAgICAgaWYgKGF1dG8gcHJveHlJbmZvID0gZHluYW1pY19jZl9jYXN0PENGRGljdGlvbmFy
eVJlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChwcm94eUFycmF5LCBpKSkpIHsKKyAgICAgICAg
ICAgIGlmIChhdXRvIHByb3h5VHlwZSA9IGR5bmFtaWNfY2ZfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZE
aWN0aW9uYXJ5R2V0VmFsdWUocHJveHlJbmZvLCBrQ0ZQcm94eVR5cGVLZXkpKSkgeworICAgICAg
ICAgICAgICAgIGlmIChDRkVxdWFsKHByb3h5VHlwZSwga0NGUHJveHlUeXBlU09DS1MpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIG1fY29ubmVjdGlvblR5cGUgPSBTT0NLU1Byb3h5OworICAgICAg
ICAgICAgICAgICAgICBjaG9zZW5Qcm94eSA9IHByb3h5SW5mbzsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChDRkVxdWFs
KHByb3h5VHlwZSwga0NGUHJveHlUeXBlSFRUUFMpKSB7CisgICAgICAgICAgICAgICAgICAgIG1f
Y29ubmVjdGlvblR5cGUgPSBDT05ORUNUUHJveHk7CisgICAgICAgICAgICAgICAgICAgIGNob3Nl
blByb3h5ID0gcHJveHlJbmZvOworICAgICAgICAgICAgICAgICAgICAvLyBLZWVwIGxvb2tpbmcg
Zm9yIHByb3hpZXMsIGFzIGEgU09DS1Mgb25lIGlzIHByZWZlcmFibGUuCisgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMjg0LDEyICsyODEsMTIg
QEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjaG9vc2VQcm94eUZyb21BcnJheShDRkFy
cmF5UmVmIHByb3h5QXJyYXkpCiAgICAgICAgIEFTU0VSVChtX2Nvbm5lY3Rpb25UeXBlICE9IFVu
a25vd24pOwogICAgICAgICBBU1NFUlQobV9jb25uZWN0aW9uVHlwZSAhPSBEaXJlY3QpOwogCi0g
ICAgICAgIENGVHlwZVJlZiBwcm94eUhvc3QgPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShjaG9zZW5Q
cm94eSwga0NGUHJveHlIb3N0TmFtZUtleSk7Ci0gICAgICAgIENGVHlwZVJlZiBwcm94eVBvcnQg
PSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShjaG9zZW5Qcm94eSwga0NGUHJveHlQb3J0TnVtYmVyS2V5
KTsKKyAgICAgICAgYXV0byBwcm94eUhvc3QgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZTdHJpbmdSZWY+
KENGRGljdGlvbmFyeUdldFZhbHVlKGNob3NlblByb3h5LCBrQ0ZQcm94eUhvc3ROYW1lS2V5KSk7
CisgICAgICAgIGF1dG8gcHJveHlQb3J0ID0gZHluYW1pY19jZl9jYXN0PENGTnVtYmVyUmVmPihD
RkRpY3Rpb25hcnlHZXRWYWx1ZShjaG9zZW5Qcm94eSwga0NGUHJveHlQb3J0TnVtYmVyS2V5KSk7
CiAKLSAgICAgICAgaWYgKHByb3h5SG9zdCAmJiBDRkdldFR5cGVJRChwcm94eUhvc3QpID09IENG
U3RyaW5nR2V0VHlwZUlEKCkgJiYgcHJveHlQb3J0ICYmIENGR2V0VHlwZUlEKHByb3h5UG9ydCkg
PT0gQ0ZOdW1iZXJHZXRUeXBlSUQoKSkgewotICAgICAgICAgICAgbV9wcm94eUhvc3QgPSBzdGF0
aWNfY2FzdDxDRlN0cmluZ1JlZj4ocHJveHlIb3N0KTsKLSAgICAgICAgICAgIG1fcHJveHlQb3J0
ID0gc3RhdGljX2Nhc3Q8Q0ZOdW1iZXJSZWY+KHByb3h5UG9ydCk7CisgICAgICAgIGlmIChwcm94
eUhvc3QgJiYgcHJveHlQb3J0KSB7CisgICAgICAgICAgICBtX3Byb3h5SG9zdCA9IHByb3h5SG9z
dDsKKyAgICAgICAgICAgIG1fcHJveHlQb3J0ID0gcHJveHlQb3J0OwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9pb3MvV2ViQ29yZVVSTFJlc3BvbnNlSU9TLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2lvcy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MuaAppbmRleCA4ZDNjN2Ni
MWZiMjViMzc4YTE0ODE2OTVmNzMyMTRhYmJlNmRmMzBkLi5mMzAyODc4MDJhZTI0MDY5ZjViYTIy
ODIzNTA2OTllOTAzNjIwOGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2lvcy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2lvcy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MuaApAQCAtMzAsMTggKzMw
LDE1IEBACiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCi0jaWZkZWYgX19PQkpDX18KLSNp
bmNsdWRlICJXZWJDb3JlVVJMUmVzcG9uc2UuaCIKLSNlbmRpZgotCiAjaW5jbHVkZSAiTUlNRVR5
cGVSZWdpc3RyeS5oIgorI2luY2x1ZGUgIldlYkNvcmVVUkxSZXNwb25zZS5oIgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KICNpZiBVU0Uo
UVVJQ0tfTE9PSykKICAgICAKLWlubGluZSBib29sIHNob3VsZFVzZVF1aWNrTG9va0Zvck1JTUVU
eXBlKGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSkKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
aW5saW5lIGJvb2wgc2hvdWxkVXNlUXVpY2tMb29rRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBt
aW1lVHlwZSkKIHsKICAgICBpZiAoKCFNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZE5vbklt
YWdlTUlNRVR5cGUobWltZVR5cGUpICAgICAgIC8vIGlnbm9yZSBzdXBwb3J0ZWQgbm9uLWltYWdl
IE1JTUUgdHlwZXMKICAgICAgICAgICYmICFNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZElt
YWdlTUlNRVR5cGUobWltZVR5cGUpICAgICAgIC8vIGlnbm9yZSBzdXBwb3J0ZWQgaW1hZ2UgTUlN
RSB0eXBlcwpAQCAtNTcsOCArNTQsOCBAQCBpbmxpbmUgYm9vbCBzaG91bGRVc2VRdWlja0xvb2tG
b3JNSU1FVHlwZShjb25zdCBXVEY6OlN0cmluZyYgbWltZVR5cGUpCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi0jZW5kaWYgLy8gVVNFKFFVSUNLX0xPT0spCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAorI2VuZGlmIC8vIFVTRShRVUlDS19MT09LKQorCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9T
X0ZBTUlMWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9z
L1dlYkNvcmVVUkxSZXNwb25zZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvaW9zL1dlYkNvcmVVUkxSZXNwb25zZUlPUy5tbQppbmRleCAzNTc3NDBmMjI1NmY5ODkwYmE3
MWEzNjM4ZWY1NzA3ZTcxYTlkOWIxLi5jOWQ3NzkzNzY0ZDY0ZjBmNDAwYzc3OGY4ZTM0NTA5MjBh
NzZkN2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9X
ZWJDb3JlVVJMUmVzcG9uc2VJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9pb3MvV2ViQ29yZVVSTFJlc3BvbnNlSU9TLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDc5ICszMiw0MSBAQAogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAKICNpbXBvcnQgIlF1aWNrTG9vay5oIgotI2ltcG9ydCAiVVRJ
VXRpbGl0aWVzLmgiCiAjaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZp
Y2VzLmg+CisKICNpbXBvcnQgPHBhbC9pb3MvUXVpY2tMb29rU29mdExpbmsuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi0vLyA8cmRhcjovL3Byb2JsZW0vNDYzMzI4OTM+IFJlZ2lzdGVyIC5t
anMgZmlsZXMgYXMgd2hhdGV2ZXIgVVRJIGluZGljYXRlcyBKYXZhU2NyaXB0Ci1zdGF0aWMgUmV0
YWluUHRyPENGRGljdGlvbmFyeVJlZj4gY3JlYXRlRXh0ZW5zaW9uVG9NSU1FVHlwZU1hcCgpCit2
b2lkIGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoQ0ZVUkxSZXNwb25zZVJlZiByZXNwb25zZSwg
Ym9vbCBpc01haW5SZXNvdXJjZUxvYWQpCiB7Ci0gICAgQ0ZTdHJpbmdSZWYga2V5c1tdID0gewot
ICAgICAgICBDRlNUUigibWpzIikKLSAgICB9OwotCi0gICAgQ0ZTdHJpbmdSZWYgdmFsdWVzW10g
PSB7Ci0gICAgICAgIENGU1RSKCJ0ZXh0L2phdmFzY3JpcHQiKQotICAgIH07Ci0KLSAgICBBU1NF
UlQoc2l6ZW9mKGtleXMpID09IHNpemVvZih2YWx1ZXMpKTsKLSAgICByZXR1cm4gYWRvcHRDRihD
RkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IHZvaWQqKikma2V5
cywgKGNvbnN0IHZvaWQqKikmdmFsdWVzLCBzaXplb2Yoa2V5cykgLyBzaXplb2YoQ0ZTdHJpbmdS
ZWYpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZh
bHVlQ2FsbEJhY2tzKSk7Ci19Ci0KLXZvaWQgYWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeShDRlVS
TFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UsIGJvb2wgaXNNYWluUmVzb3VyY2VMb2FkKQotewotICAg
IFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZVR5cGUgPSBDRlVSTFJlc3BvbnNlR2V0TUlNRVR5
cGUoY2ZSZXNwb25zZSk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1cGRhdGVkTUlNRVR5
cGUgPSBtaW1lVHlwZTsKLSAgICBpZiAoIXVwZGF0ZWRNSU1FVHlwZSkKLSAgICAgICAgdXBkYXRl
ZE1JTUVUeXBlID0gZGVmYXVsdE1JTUVUeXBlKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKLQotICAgIC8v
IDxyZGFyOi8vcHJvYmxlbS80NjMzMjg5Mz4gUmVnaXN0ZXIgLm1qcyBmaWxlcyBhcyB3aGF0ZXZl
ciBVVEkgaW5kaWNhdGVzIEphdmFTY3JpcHQKLSAgICBpZiAoIW1pbWVUeXBlKSB7Ci0gICAgICAg
IGF1dG8gdXJsID0gQ0ZVUkxSZXNwb25zZUdldFVSTChjZlJlc3BvbnNlKTsKLSAgICAgICAgaWYg
KFsoX19icmlkZ2UgTlNVUkwgKil1cmwgaXNGaWxlVVJMXSkgewotICAgICAgICAgICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBleHRlbnNpb24gPSBhZG9wdENGKENGVVJMQ29weVBhdGhFeHRlbnNp
b24odXJsKSk7Ci0gICAgICAgICAgICBpZiAoZXh0ZW5zaW9uKSB7Ci0gICAgICAgICAgICAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+PiBleHRlbnNp
b25NYXAgPSBjcmVhdGVFeHRlbnNpb25Ub01JTUVUeXBlTWFwKCk7Ci0gICAgICAgICAgICAgICAg
YXV0byBtdXRhYmxlRXh0ZW5zaW9uID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZU11dGFibGVDb3B5
KGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIGV4dGVuc2lvbi5nZXQoKSkpOwotICAgICAgICAgICAg
ICAgIENGU3RyaW5nTG93ZXJjYXNlKG11dGFibGVFeHRlbnNpb24uZ2V0KCksIE5VTEwpOwotICAg
ICAgICAgICAgICAgIGV4dGVuc2lvbiA9IFdURk1vdmUobXV0YWJsZUV4dGVuc2lvbik7Ci0gICAg
ICAgICAgICAgICAgaWYgKGF1dG8gbmV3TUlNRVR5cGUgPSAoQ0ZTdHJpbmdSZWYpQ0ZEaWN0aW9u
YXJ5R2V0VmFsdWUoZXh0ZW5zaW9uTWFwLmdldCgpLmdldCgpLCBleHRlbnNpb24uZ2V0KCkpKQot
ICAgICAgICAgICAgICAgICAgICB1cGRhdGVkTUlNRVR5cGUgPSBuZXdNSU1FVHlwZTsKLSAgICAg
ICAgICAgIH0KKyAgICBhdXRvIHR5cGUgPSBDRlVSTFJlc3BvbnNlR2V0TUlNRVR5cGUocmVzcG9u
c2UpOworICAgIGlmICghdHlwZSkgeworICAgICAgICAvLyBGSVhNRTogPHJkYXI6Ly9wcm9ibGVt
LzQ2MzMyODkzPiBpcyBmaXhlZCwgYnV0IGZvciBzb21lIHJlYXNvbiwgdGhpcyBzcGVjaWFsIGNh
c2UgaXMgc3RpbGwgbmVlZGVkOyBzaG91bGQgcmVzb2x2ZSB0aGF0IGlzc3VlIGFuZCByZW1vdmUg
dGhpcy4KKyAgICAgICAgaWYgKENGU3RyaW5nQ29tcGFyZShmaWxlUGF0aEV4dGVuc2lvbihyZXNw
b25zZSkuZ2V0KCksIENGU1RSKCJtanMiKSwga0NGQ29tcGFyZUNhc2VJbnNlbnNpdGl2ZSkgPT0g
a0NGQ29tcGFyZUVxdWFsVG8pIHsKKyAgICAgICAgICAgIENGVVJMUmVzcG9uc2VTZXRNSU1FVHlw
ZShyZXNwb25zZSwgQ0ZTVFIoInRleHQvamF2YXNjcmlwdCIpKTsKKyAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQorICAgICAgICBDRlVSTFJlc3BvbnNlU2V0TUlNRVR5cGUocmVzcG9uc2Us
IENGU1RSKCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iKSk7CisgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSNpZiBVU0UoUVVJQ0tfTE9PSykKLSAgICAvLyBXZSBtdXN0IGVuc3VyZSB0aGF0IHRo
ZSBNSU1FIHR5cGUgaXMgY29ycmVjdCwgc28gdGhhdCBRdWlja0xvb2sncyB3ZWIgcGx1Z2luIGlz
IGNhbGxlZCB3aGVuIG5lZWRlZC4KLSAgICAvLyBXZSBmaWx0ZXIgdGhlIGJhc2ljIE1JTUUgdHlw
ZXMgc28gdGhhdCB3ZSBkb24ndCBkbyB1bm5lY2Vzc2FyeSB3b3JrIGluIHN0YW5kYXJkIGJyb3dz
aW5nIHNpdHVhdGlvbnMuCi0gICAgaWYgKGlzTWFpblJlc291cmNlTG9hZCAmJiBzaG91bGRVc2VR
dWlja0xvb2tGb3JNSU1FVHlwZSgoTlNTdHJpbmcgKil1cGRhdGVkTUlNRVR5cGUuZ2V0KCkpKSB7
Ci0gICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gc3VnZ2VzdGVkRmlsZW5hbWUgPSBhZG9w
dENGKENGVVJMUmVzcG9uc2VDb3B5U3VnZ2VzdGVkRmlsZW5hbWUoY2ZSZXNwb25zZSkpOwotICAg
ICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHF1aWNrTG9va01JTUVUeXBlID0gYWRvcHRDRigo
Q0ZTdHJpbmdSZWYpUEFMOjpzb2Z0TGlua19RdWlja0xvb2tfUUxUeXBlQ29weUJlc3RNaW1lVHlw
ZUZvckZpbGVOYW1lQW5kTWltZVR5cGUoKE5TU3RyaW5nICopc3VnZ2VzdGVkRmlsZW5hbWUuZ2V0
KCksIChOU1N0cmluZyAqKW1pbWVUeXBlLmdldCgpKSk7Ci0gICAgICAgIGlmICghcXVpY2tMb29r
TUlNRVR5cGUpIHsKLSAgICAgICAgICAgIGF1dG8gdXJsID0gQ0ZVUkxSZXNwb25zZUdldFVSTChj
ZlJlc3BvbnNlKTsKLSAgICAgICAgICAgIGlmIChbKE5TVVJMICopdXJsIGlzRmlsZVVSTF0pIHsK
LSAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGV4dGVuc2lvbiA9IGFkb3B0
Q0YoQ0ZVUkxDb3B5UGF0aEV4dGVuc2lvbih1cmwpKTsKLSAgICAgICAgICAgICAgICBpZiAoZXh0
ZW5zaW9uKSB7Ci1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgICAgICAg
ICAgICAgICAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHV0aSA9IGFkb3B0Q0YoVVRUeXBlQ3Jl
YXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRUYWdDbGFzc0ZpbGVuYW1lRXh0ZW5zaW9u
LCBleHRlbnNpb24uZ2V0KCksIG51bGxwdHIpKTsKLUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJ
T05TX0VORAotICAgICAgICAgICAgICAgICAgICBTdHJpbmcgTUlNRVR5cGUgPSBNSU1FVHlwZUZy
b21VVElUcmVlKHV0aS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghTUlNRVR5cGUu
aXNFbXB0eSgpKQotICAgICAgICAgICAgICAgICAgICAgICAgcXVpY2tMb29rTUlNRVR5cGUgPSBN
SU1FVHlwZS5jcmVhdGVDRlN0cmluZygpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmIChxdWlja0xvb2tNSU1FVHlwZSkKLSAgICAgICAg
ICAgIHVwZGF0ZWRNSU1FVHlwZSA9IHF1aWNrTG9va01JTUVUeXBlOwotICAgIH0KLSNlbHNlCisj
aWYgIVVTRShRVUlDS19MT09LKQogICAgIFVOVVNFRF9QQVJBTShpc01haW5SZXNvdXJjZUxvYWQp
OworI2Vsc2UKKyAgICAvLyBFbnN1cmUgdGhhdCB0aGUgTUlNRSB0eXBlIGlzIGNvcnJlY3Qgc28g
dGhhdCBRdWlja0xvb2sncyB3ZWIgcGx1Zy1pbiBpcyBjYWxsZWQgd2hlbiBuZWVkZWQuCisgICAg
Ly8gVGhlIHNob3VsZFVzZVF1aWNrTG9va0Zvck1JTUVUeXBlIGZ1bmN0aW9uIGZpbHRlcnMgb3V0
IHRoZSBjb21tb24gTUlNRSB0eXBlcyBzbyB3ZSBkb24ndCBkbyB1bm5lY2Vzc2FyeSB3b3JrIGlu
IHRob3NlIGNhc2VzLgorICAgIGlmIChpc01haW5SZXNvdXJjZUxvYWQgJiYgc2hvdWxkVXNlUXVp
Y2tMb29rRm9yTUlNRVR5cGUoKF9fYnJpZGdlIE5TU3RyaW5nICopdHlwZSkpIHsKKyAgICAgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiB1cGRhdGVkVHlwZTsKKyAgICAgICAgYXV0byBzdWdnZXN0
ZWRGaWxlbmFtZSA9IGFkb3B0Q0YoQ0ZVUkxSZXNwb25zZUNvcHlTdWdnZXN0ZWRGaWxlbmFtZShy
ZXNwb25zZSkpOworICAgICAgICBpZiAoYXV0byBxdWlja0xvb2tUeXBlID0gYWRvcHROUyhQQUw6
OnNvZnRMaW5rX1F1aWNrTG9va19RTFR5cGVDb3B5QmVzdE1pbWVUeXBlRm9yRmlsZU5hbWVBbmRN
aW1lVHlwZSgoX19icmlkZ2UgTlNTdHJpbmcgKilzdWdnZXN0ZWRGaWxlbmFtZS5nZXQoKSwgKF9f
YnJpZGdlIE5TU3RyaW5nICopdHlwZSkpKQorICAgICAgICAgICAgdXBkYXRlZFR5cGUgPSAoX19i
cmlkZ2UgQ0ZTdHJpbmdSZWYpcXVpY2tMb29rVHlwZS5nZXQoKTsKKyAgICAgICAgZWxzZSBpZiAo
YXV0byBleHRlbnNpb24gPSBmaWxlUGF0aEV4dGVuc2lvbihyZXNwb25zZSkpCisgICAgICAgICAg
ICB1cGRhdGVkVHlwZSA9IHByZWZlcnJlZE1JTUVUeXBlRm9yRmlsZUV4dGVuc2lvbkZyb21VVFR5
cGUoZXh0ZW5zaW9uLmdldCgpKTsKKyAgICAgICAgaWYgKHVwZGF0ZWRUeXBlICYmICghdHlwZSB8
fCBDRlN0cmluZ0NvbXBhcmUodHlwZSwgdXBkYXRlZFR5cGUuZ2V0KCksIGtDRkNvbXBhcmVDYXNl
SW5zZW5zaXRpdmUpICE9IGtDRkNvbXBhcmVFcXVhbFRvKSkKKyAgICAgICAgICAgIENGVVJMUmVz
cG9uc2VTZXRNSU1FVHlwZShyZXNwb25zZSwgdXBkYXRlZFR5cGUuZ2V0KCkpOworICAgIH0KICNl
bmRpZiAvLyBVU0UoUVVJQ0tfTE9PSykKLSAgICBpZiAoIW1pbWVUeXBlIHx8IENGU3RyaW5nQ29t
cGFyZShtaW1lVHlwZS5nZXQoKSwgdXBkYXRlZE1JTUVUeXBlLmdldCgpLCBrQ0ZDb21wYXJlQ2Fz
ZUluc2Vuc2l0aXZlKSAhPSBrQ0ZDb21wYXJlRXF1YWxUbykKLSAgICAgICAgQ0ZVUkxSZXNwb25z
ZVNldE1JTUVUeXBlKGNmUmVzcG9uc2UsIHVwZGF0ZWRNSU1FVHlwZS5nZXQoKSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL05ldHdvcmtTdGF0ZU5vdGlmaWVyTWFjLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL05ldHdvcmtTdGF0ZU5vdGlmaWVyTWFjLmNwcAppbmRleCA4
NmM3OTI5Yjg3MGY0ZGU5YzNlMTYxNWIxNWEyZmViNGY0MzkwZDBlLi5kZDk3Y2VhNGQ4OWNkN2Ri
MDBiNjQ0MDQwNWMxZTAzZWM3ODhkMjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9OZXR3b3JrU3RhdGVOb3RpZmllck1hYy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvTmV0d29ya1N0YXRlTm90aWZpZXJNYWMuY3Bw
CkBAIC0yOSwyMyArMjksMjQgQEAKICNpZiBQTEFURk9STShNQUMpCiAKICNpbmNsdWRlIDxTeXN0
ZW1Db25maWd1cmF0aW9uL1N5c3RlbUNvbmZpZ3VyYXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvY2Yv
VHlwZUNhc3RzQ0YuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIE5ldHdvcmtTdGF0
ZU5vdGlmaWVyOjp1cGRhdGVTdGF0ZVdpdGhvdXROb3RpZnlpbmcoKQogewogICAgIGF1dG8ga2V5
ID0gYWRvcHRDRihTQ0R5bmFtaWNTdG9yZUtleUNyZWF0ZU5ldHdvcmtJbnRlcmZhY2UoMCwga1ND
RHluYW1pY1N0b3JlRG9tYWluU3RhdGUpKTsKLSAgICBhdXRvIHByb3BlcnR5TGlzdCA9IGFkb3B0
Q0YoU0NEeW5hbWljU3RvcmVDb3B5VmFsdWUobV9zdG9yZS5nZXQoKSwga2V5LmdldCgpKSk7Ci0g
ICAgaWYgKCFwcm9wZXJ0eUxpc3QgfHwgQ0ZHZXRUeXBlSUQocHJvcGVydHlMaXN0LmdldCgpKSAh
PSBDRkRpY3Rpb25hcnlHZXRUeXBlSUQoKSkKKyAgICBhdXRvIHByb3BlcnR5TGlzdCA9IGR5bmFt
aWNfY2ZfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KGFkb3B0Q0YoU0NEeW5hbWljU3RvcmVDb3B5VmFs
dWUobV9zdG9yZS5nZXQoKSwga2V5LmdldCgpKSkpOworICAgIGlmICghcHJvcGVydHlMaXN0KQog
ICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIG5ldEludGVyZmFjZXMgPSBDRkRpY3Rpb25hcnlH
ZXRWYWx1ZSgoQ0ZEaWN0aW9uYXJ5UmVmKXByb3BlcnR5TGlzdC5nZXQoKSwga1NDRHluYW1pY1N0
b3JlUHJvcE5ldEludGVyZmFjZXMpOwotICAgIGlmICghbmV0SW50ZXJmYWNlcyB8fCBDRkdldFR5
cGVJRChuZXRJbnRlcmZhY2VzKSAhPSBDRkFycmF5R2V0VHlwZUlEKCkpCisgICAgYXV0byBuZXRJ
bnRlcmZhY2VzID0gZHluYW1pY19jZl9jYXN0PENGQXJyYXlSZWY+KENGRGljdGlvbmFyeUdldFZh
bHVlKHByb3BlcnR5TGlzdC5nZXQoKSwga1NDRHluYW1pY1N0b3JlUHJvcE5ldEludGVyZmFjZXMp
KTsKKyAgICBpZiAoIW5ldEludGVyZmFjZXMpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZvciAo
Q0ZJbmRleCBpID0gMDsgaSA8IENGQXJyYXlHZXRDb3VudCgoQ0ZBcnJheVJlZiluZXRJbnRlcmZh
Y2VzKTsgaSsrKSB7Ci0gICAgICAgIGF1dG8gaW50ZXJmYWNlTmFtZSA9IChDRlN0cmluZ1JlZilD
RkFycmF5R2V0VmFsdWVBdEluZGV4KChDRkFycmF5UmVmKW5ldEludGVyZmFjZXMsIGkpOwotICAg
ICAgICBpZiAoQ0ZHZXRUeXBlSUQoaW50ZXJmYWNlTmFtZSkgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQo
KSkKKyAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBDRkFycmF5R2V0Q291bnQobmV0SW50ZXJm
YWNlcyk7IGkrKykgeworICAgICAgICBhdXRvIGludGVyZmFjZU5hbWUgPSBkeW5hbWljX2NmX2Nh
c3Q8Q0ZTdHJpbmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgobmV0SW50ZXJmYWNlcywgaSkp
OworICAgICAgICBpZiAoIWludGVyZmFjZU5hbWUpCiAgICAgICAgICAgICBjb250aW51ZTsKIAog
ICAgICAgICAvLyBJZ25vcmUgdGhlIGxvb3BiYWNrIGludGVyZmFjZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLmgKaW5kZXggNWQxODk1
ZjMzNWNhODM0MTc3YTkyMmFhZWE0NmNjNjdmN2YwZTU0ZS4uODI1MTdiN2ViM2E5ZjgzNDdmNDBh
NzQ0NjhlN2YxMTIyOGYyZTc0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLmgKQEAgLTMwLDcgKzMwLDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIE1JTUVUeXBlRnJvbVVUSShjb25zdCBT
dHJpbmcmKTsKLVN0cmluZyBNSU1FVHlwZUZyb21VVElUcmVlKGNvbnN0IFN0cmluZyYpOworUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBtaW1lVHlwZUZyb21VVElUcmVlKENGU3RyaW5nUmVmKTsKIFdF
QkNPUkVfRVhQT1JUIFN0cmluZyBVVElGcm9tTUlNRVR5cGUoY29uc3QgU3RyaW5nJik7CiBib29s
IGlzRGVjbGFyZWRVVEkoY29uc3QgU3RyaW5nJik7CiBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgVVRJ
RnJvbVRhZyhjb25zdCBTdHJpbmcmIHRhZ0NsYXNzLCBjb25zdCBTdHJpbmcmIHRhZywgY29uc3Qg
U3RyaW5nJiBjb25mb3JtaW5nVG9VVEkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLm1tCmluZGV4IGNlYmJjYTViMjRjYmY4ZDBjMGUx
OGZkYjI0ODRlMDgyNDhjYjM2MDEuLjQyMDRhNDFjZGFkOTZmZGJlMWNjYmJjMWNkYTM4MDgwMjhh
MTYxNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1VU
SVV0aWxpdGllcy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9V
VElVdGlsaXRpZXMubW0KQEAgLTQ1LDQ0ICs0NSwzNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19CRUdJTgogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECiB9CiAKLVN0
cmluZyBNSU1FVHlwZUZyb21VVElUcmVlKGNvbnN0IFN0cmluZyYgdXRpKQorUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBtaW1lVHlwZUZyb21VVElUcmVlKENGU3RyaW5nUmVmIHV0aSkKIHsKLSAgICBh
dXRvIHV0aUNGID0gdXRpLmNyZWF0ZUNGU3RyaW5nKCk7Ci0KIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0JFR0lOCiAgICAgLy8gQ2hlY2sgaWYgdGhpcyBVVEkgaGFzIGEgTUlNRSB0eXBl
LgotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZVR5cGUgPSBhZG9wdENGKFVUVHlwZUNv
cHlQcmVmZXJyZWRUYWdXaXRoQ2xhc3ModXRpQ0YuZ2V0KCksIGtVVFRhZ0NsYXNzTUlNRVR5cGUp
KTsKLSAgICBpZiAobWltZVR5cGUpCi0gICAgICAgIHJldHVybiBtaW1lVHlwZS5nZXQoKTsKKyAg
ICBpZiAoYXV0byB0eXBlID0gYWRvcHRDRihVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNz
KHV0aSwga1VUVGFnQ2xhc3NNSU1FVHlwZSkpKQorICAgICAgICByZXR1cm4gdHlwZTsKIAogICAg
IC8vIElmIG5vdCwgd2FsayB0aGUgYW5jZXN0b3J5IG9mIHRoaXMgVVRJIHZpYSBpdHMgIkNvbmZv
cm1zVG8iIHRhZ3MgYW5kIHJldHVybiB0aGUgZmlyc3QgTUlNRSB0eXBlIHdlIGZpbmQuCi0gICAg
UmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gZGVjbCA9IGFkb3B0Q0YoVVRUeXBlQ29weURlY2xh
cmF0aW9uKHV0aUNGLmdldCgpKSk7Ci0gICAgaWYgKCFkZWNsKQotICAgICAgICByZXR1cm4gZW1w
dHlTdHJpbmcoKTsKLSAgICBDRlR5cGVSZWYgdmFsdWUgPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShk
ZWNsLmdldCgpLCBrVVRUeXBlQ29uZm9ybXNUb0tleSk7CisgICAgYXV0byBkZWNsYXJhdGlvbiA9
IGFkb3B0Q0YoVVRUeXBlQ29weURlY2xhcmF0aW9uKHV0aSkpOworICAgIGlmICghZGVjbGFyYXRp
b24pCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byB2YWx1ZSA9IENGRGljdGlv
bmFyeUdldFZhbHVlKGRlY2xhcmF0aW9uLmdldCgpLCBrVVRUeXBlQ29uZm9ybXNUb0tleSk7CiBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICBpZiAoIXZhbHVlKQotICAgICAg
ICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKLSAgICBDRlR5cGVJRCB0eXBlSUQgPSBDRkdldFR5cGVJ
RCh2YWx1ZSk7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgaWYgKHR5cGVJRCA9PSBD
RlN0cmluZ0dldFR5cGVJRCgpKQotICAgICAgICByZXR1cm4gTUlNRVR5cGVGcm9tVVRJVHJlZSgo
Q0ZTdHJpbmdSZWYpdmFsdWUpOworICAgIGlmIChhdXRvIHN0cmluZyA9IGR5bmFtaWNfY2ZfY2Fz
dDxDRlN0cmluZ1JlZj4odmFsdWUpKQorICAgICAgICByZXR1cm4gbWltZVR5cGVGcm9tVVRJVHJl
ZShzdHJpbmcpOwogCi0gICAgaWYgKHR5cGVJRCA9PSBDRkFycmF5R2V0VHlwZUlEKCkpIHsKLSAg
ICAgICAgQ0ZBcnJheVJlZiBuZXdUeXBlcyA9IChDRkFycmF5UmVmKXZhbHVlOwotICAgICAgICBD
RkluZGV4IGNvdW50ID0gQ0ZBcnJheUdldENvdW50KG5ld1R5cGVzKTsKKyAgICBpZiAoYXV0byBh
cnJheSA9IGR5bmFtaWNfY2ZfY2FzdDxDRkFycmF5UmVmPih2YWx1ZSkpIHsKKyAgICAgICAgQ0ZJ
bmRleCBjb3VudCA9IENGQXJyYXlHZXRDb3VudChhcnJheSk7CiAgICAgICAgIGZvciAoQ0ZJbmRl
eCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKLSAgICAgICAgICAgIENGVHlwZVJlZiBvYmplY3Qg
PSBDRkFycmF5R2V0VmFsdWVBdEluZGV4KG5ld1R5cGVzLCBpKTsKLSAgICAgICAgICAgIGlmIChD
RkdldFR5cGVJRChvYmplY3QpICE9IENGU3RyaW5nR2V0VHlwZUlEKCkpCi0gICAgICAgICAgICAg
ICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIFN0cmluZyBtaW1lVHlwZSA9IE1JTUVUeXBlRnJv
bVVUSVRyZWUoKENGU3RyaW5nUmVmKW9iamVjdCk7Ci0gICAgICAgICAgICBpZiAoIW1pbWVUeXBl
LmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gbWltZVR5cGU7CisgICAgICAgICAg
ICBpZiAoYXV0byBzdHJpbmcgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQXJyYXlH
ZXRWYWx1ZUF0SW5kZXgoYXJyYXksIGkpKSkgeworICAgICAgICAgICAgICAgIGlmIChhdXRvIHR5
cGUgPSBtaW1lVHlwZUZyb21VVElUcmVlKHN0cmluZykpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0eXBlOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJu
IGVtcHR5U3RyaW5nKCk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHN0YXRpYyBDRlN0cmlu
Z1JlZiBVVElGcm9tVW5rbm93bk1JTUVUeXBlKFN0cmluZ1ZpZXcgbWltZVR5cGUpCkBAIC0xMzcs
NyArMTMwLDcgQEAgU3RyaW5nIFVUSUZyb21UYWcoY29uc3QgU3RyaW5nJiB0YWdDbGFzcywgY29u
c3QgU3RyaW5nJiB0YWcsIGNvbnN0IFN0cmluZyYgY29uZm8KIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0JFR0lOCiAgICAgYXV0byB1ID0gYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJy
ZWRJZGVudGlmaWVyRm9yVGFnKHRhZ0NsYXNzLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIHRhZy5j
cmVhdGVDRlN0cmluZygpLmdldCgpLCBjb25mb3JtaW5nVG9VVEkuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSkpOwogQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi0gICAgcmV0dXJuIFN0
cmluZyh1LmdldCgpKTsKKyAgICByZXR1cm4gdS5nZXQoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2Uu
aAppbmRleCBlNjE4N2I5NzdiOTgyY2E1NDI5MzlmNjhiOWExMjU3OTMxYzExYzY2Li5kMmI0ZDVl
MjUyZjQ0NjA1MmQxNTFiNDllYTgyOTVhNmRhYWE1ZTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTM4LDQgKzM4LDcgQEAgV0VCQ09SRV9FWFBPUlQgTlNVUkxSZXNwb25zZSAqc3ludGhlc2l6ZVJl
ZGlyZWN0UmVzcG9uc2VJZk5lY2Vzc2FyeShOU1VSTFJlcXVlc3QKIAogV0VCQ09SRV9FWFBPUlQg
dm9pZCBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KENGVVJMUmVzcG9uc2VSZWYsIGJvb2wgaXNN
YWluUmVzb3VyY2VMb2FkKTsKIAorUmV0YWluUHRyPENGU3RyaW5nUmVmPiBmaWxlUGF0aEV4dGVu
c2lvbihDRlVSTFJlc3BvbnNlUmVmKTsKK1JldGFpblB0cjxDRlN0cmluZ1JlZj4gcHJlZmVycmVk
TUlNRVR5cGVGb3JGaWxlRXh0ZW5zaW9uRnJvbVVUVHlwZShDRlN0cmluZ1JlZiBleHRlbnNpb24p
OworCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9X
ZWJDb3JlVVJMUmVzcG9uc2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21h
Yy9XZWJDb3JlVVJMUmVzcG9uc2UubW0KaW5kZXggNGZhNTBlNDZiMDk0OTZjZGVlMDczOTY0NWM4
NGYxZDdhNDY5ZmZjZC4uZGUzYmI2YTcwNzY4ZGM4YWU1OGQwY2RlYmEwYTQ4MGFlOGJmYmVmNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVS
TFJlc3BvbnNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dl
YkNvcmVVUkxSZXNwb25zZS5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDgsIDIwMDksIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDA4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSwyOTkgKzM5LDE0OCBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAjaWYgUExBVEZPUk0oTUFDKQotLy8gPHJkYXI6Ly9wcm9ibGVtLzcw
MDczODk+IENvcmVUeXBlcyBVVEkgbWFwIGlzIG1pc3NpbmcgMTAwKyBmaWxlIGV4dGVuc2lvbnMg
dGhhdCBHYXRlS2VlcGVyIGtuZXcgYWJvdXQKLS8vIFdoZW4gd2UgZGlzYWJsZWQgY29udGVudCBz
bmlmZmluZyBmb3IgZmlsZSBVUkxzIHdlIGNhdXNlZCBwcm9ibGVtcyB3aXRoIHRoZXNlIDEwMCsg
ZXh0ZW5zaW9ucyB0aGF0IENvcmVUeXBlcwotLy8gZG9lc24ndCBrbm93IGFib3V0LgotLy8gSWYg
Q29yZVR5cGVzIGlzIGV2ZXIgYnJvdWdodCB1cCB0byBzcGVlZCB3ZSBjYW4gcmVtb3ZlIHRoaXMg
dGFibGUgYW5kIGFzc29jaWF0ZWQgY29kZS4KLXN0YXRpYyBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5
UmVmPiBjcmVhdGVFeHRlbnNpb25Ub01JTUVUeXBlTWFwKCkKLXsKLSAgICBDRlN0cmluZ1JlZiBr
ZXlzW10gPSB7Ci0gICAgICAgIENGU1RSKCJhaSIpLAotICAgICAgICBDRlNUUigiYXNjIiksCi0g
ICAgICAgIENGU1RSKCJiY3BpbyIpLAotICAgICAgICBDRlNUUigiYm1wIiksCi0gICAgICAgIENG
U1RSKCJjZGYiKSwKLSAgICAgICAgQ0ZTVFIoImNsYXNzIiksCi0gICAgICAgIENGU1RSKCJjcGd6
IiksCi0gICAgICAgIENGU1RSKCJjcGlvIiksCi0gICAgICAgIENGU1RSKCJjcHQiKSwKLSAgICAg
ICAgQ0ZTVFIoImNzaCIpLAotICAgICAgICBDRlNUUigiY3NzIiksCi0gICAgICAgIENGU1RSKCJk
Y3IiKSwKLSAgICAgICAgQ0ZTVFIoImRpciIpLAotICAgICAgICBDRlNUUigiZG1nIiksCi0gICAg
ICAgIENGU1RSKCJkbXMiKSwKLSAgICAgICAgQ0ZTVFIoImR2aSIpLAotICAgICAgICBDRlNUUigi
ZHhyIiksCi0gICAgICAgIENGU1RSKCJlcHMiKSwKLSAgICAgICAgQ0ZTVFIoImV0eCIpLAotICAg
ICAgICBDRlNUUigiZXoiKSwKLSAgICAgICAgQ0ZTVFIoImZkZiIpLAotICAgICAgICBDRlNUUigi
ZmxhIiksCi0gICAgICAgIENGU1RSKCJmcCIpLAotICAgICAgICBDRlNUUigiZnAyIiksCi0gICAg
ICAgIENGU1RSKCJmcDMiKSwKLSAgICAgICAgQ0ZTVFIoImZwNCIpLAotICAgICAgICBDRlNUUigi
ZnA1IiksCi0gICAgICAgIENGU1RSKCJmcDYiKSwKLSAgICAgICAgQ0ZTVFIoImhkZiIpLAotICAg
ICAgICBDRlNUUigiaWNlIiksCi0gICAgICAgIENGU1RSKCJpY28iKSwKLSAgICAgICAgQ0ZTVFIo
ImljcyIpLAotICAgICAgICBDRlNUUigiaWVmIiksCi0gICAgICAgIENGU1RSKCJpZ2VzIiksCi0g
ICAgICAgIENGU1RSKCJpZ3MiKSwKLSAgICAgICAgQ0ZTVFIoImlzbyIpLAotICAgICAgICBDRlNU
Uigiamh0bWwiKSwKLSAgICAgICAgQ0ZTVFIoImxhdGV4IiksCi0gICAgICAgIENGU1RSKCJsaGEi
KSwKLSAgICAgICAgQ0ZTVFIoImx6aCIpLAotICAgICAgICBDRlNUUigibTN1IiksCi0gICAgICAg
IENGU1RSKCJtNHAiKSwKLSAgICAgICAgQ0ZTVFIoIm1hYyIpLAotICAgICAgICBDRlNUUigibWFu
IiksCi0gICAgICAgIENGU1RSKCJtZSIpLAotICAgICAgICBDRlNUUigibWVzaCIpLAotICAgICAg
ICBDRlNUUigibWlmIiksCi0gICAgICAgIENGU1RSKCJtanMiKSwKLSAgICAgICAgQ0ZTVFIoIm1v
dmllIiksCi0gICAgICAgIENGU1RSKCJtcDIiKSwKLSAgICAgICAgQ0ZTVFIoIm1wZ2EiKSwKLSAg
ICAgICAgQ0ZTVFIoIm1zIiksCi0gICAgICAgIENGU1RSKCJtc2giKSwKLSAgICAgICAgQ0ZTVFIo
Im14dSIpLAotICAgICAgICBDRlNUUigibmMiKSwKLSAgICAgICAgQ0ZTVFIoIm9kYSIpLAotICAg
ICAgICBDRlNUUigicGJtIiksCi0gICAgICAgIENGU1RSKCJwY3giKSwKLSAgICAgICAgQ0ZTVFIo
InBkYiIpLAotICAgICAgICBDRlNUUigicGdtIiksCi0gICAgICAgIENGU1RSKCJwZ24iKSwKLSAg
ICAgICAgQ0ZTVFIoInBscyIpLAotICAgICAgICBDRlNUUigicG5tIiksCi0gICAgICAgIENGU1RS
KCJwbnQiKSwKLSAgICAgICAgQ0ZTVFIoInBudGciKSwKLSAgICAgICAgQ0ZTVFIoInBwbSIpLAot
ICAgICAgICBDRlNUUigicmFzIiksCi0gICAgICAgIENGU1RSKCJyZ2IiKSwKLSAgICAgICAgQ0ZT
VFIoInJvZmYiKSwKLSAgICAgICAgQ0ZTVFIoInJwbSIpLAotICAgICAgICBDRlNUUigicnR4Iiks
Ci0gICAgICAgIENGU1RSKCJzZ20iKSwKLSAgICAgICAgQ0ZTVFIoInNnbWwiKSwKLSAgICAgICAg
Q0ZTVFIoInNoIiksCi0gICAgICAgIENGU1RSKCJzaGFyIiksCi0gICAgICAgIENGU1RSKCJzaWxv
IiksCi0gICAgICAgIENGU1RSKCJza2QiKSwKLSAgICAgICAgQ0ZTVFIoInNrbSIpLAotICAgICAg
ICBDRlNUUigic2twIiksCi0gICAgICAgIENGU1RSKCJza3QiKSwKLSAgICAgICAgQ0ZTVFIoInNt
aSIpLAotICAgICAgICBDRlNUUigic28iKSwKLSAgICAgICAgQ0ZTVFIoInNwbCIpLAotICAgICAg
ICBDRlNUUigic3JjIiksCi0gICAgICAgIENGU1RSKCJzdjRjcGlvIiksCi0gICAgICAgIENGU1RS
KCJzdjRjcmMiKSwKLSAgICAgICAgQ0ZTVFIoInN3ZiIpLAotICAgICAgICBDRlNUUigidCIpLAot
ICAgICAgICBDRlNUUigidGFyZ2EiKSwKLSAgICAgICAgQ0ZTVFIoInRjbCIpLAotICAgICAgICBD
RlNUUigidGV4IiksCi0gICAgICAgIENGU1RSKCJ0ZXhpIiksCi0gICAgICAgIENGU1RSKCJ0ZXhp
bmZvIiksCi0gICAgICAgIENGU1RSKCJ0Z3oiKSwKLSAgICAgICAgQ0ZTVFIoInRvcnJlbnQiKSwK
LSAgICAgICAgQ0ZTVFIoInRyIiksCi0gICAgICAgIENGU1RSKCJ0c3YiKSwKLSAgICAgICAgQ0ZT
VFIoInVzdGFyIiksCi0gICAgICAgIENGU1RSKCJ2Y2QiKSwKLSAgICAgICAgQ0ZTVFIoInZybWwi
KSwKLSAgICAgICAgQ0ZTVFIoIndibXAiKSwKLSAgICAgICAgQ0ZTVFIoIndieG1sIiksCi0gICAg
ICAgIENGU1RSKCJ3ZWJhcmNoaXZlIiksCi0gICAgICAgIENGU1RSKCJ3ZWJtIiksCi0gICAgICAg
IENGU1RSKCJ3bWQiKSwKLSAgICAgICAgQ0ZTVFIoIndtbCIpLAotICAgICAgICBDRlNUUigid21s
YyIpLAotICAgICAgICBDRlNUUigid21scyIpLAotICAgICAgICBDRlNUUigid21sc2MiKSwKLSAg
ICAgICAgQ0ZTVFIoIndybCIpLAotICAgICAgICBDRlNUUigieGRwIiksCi0gICAgICAgIENGU1RS
KCJ4ZmQiKSwKLSAgICAgICAgQ0ZTVFIoInhmZGYiKSwKLSAgICAgICAgQ0ZTVFIoInhwbSIpLAot
ICAgICAgICBDRlNUUigieHNsIiksCi0gICAgICAgIENGU1RSKCJ4d2QiKSwKLSAgICAgICAgQ0ZT
VFIoInh5eiIpLAotICAgICAgICBDRlNUUigieiIpCi0gICAgfTsKLQotICAgIENGU3RyaW5nUmVm
IHZhbHVlc1tdID0gewotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24vcG9zdHNjcmlwdCIpLAot
ICAgICAgICBDRlNUUigidGV4dC9wbGFpbiIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24v
eC1iY3BpbyIpLAotICAgICAgICBDRlNUUigiaW1hZ2UvYm1wIiksCi0gICAgICAgIENGU1RSKCJh
cHBsaWNhdGlvbi94LW5ldGNkZiIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24vb2N0ZXQt
c3RyZWFtIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LWd6aXAiKSwKLSAgICAgICAg
Q0ZTVFIoImFwcGxpY2F0aW9uL3gtY3BpbyIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24v
bWFjLWNvbXBhY3Rwcm8iKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gtY3NoIiksCi0g
ICAgICAgIENGU1RSKCJ0ZXh0L2NzcyIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC1k
aXJlY3RvciIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC1kaXJlY3RvciIpLAotICAg
ICAgICBDRlNUUigiYXBwbGljYXRpb24veC1kaXNrY29weSIpLAotICAgICAgICBDRlNUUigiYXBw
bGljYXRpb24vb2N0ZXQtc3RyZWFtIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LWR2
aSIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC1kaXJlY3RvciIpLAotICAgICAgICBD
RlNUUigiYXBwbGljYXRpb24vcG9zdHNjcmlwdCIpLAotICAgICAgICBDRlNUUigidGV4dC94LXNl
dGV4dCIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24vYW5kcmV3LWluc2V0IiksCi0gICAg
ICAgIENGU1RSKCJhcHBsaWNhdGlvbi92bmQuZmRmIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNh
dGlvbi9vY3RldC1zdHJlYW0iKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gtZmlsZW1h
a2VyIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LWZpbGVtYWtlciIpLAotICAgICAg
ICBDRlNUUigiYXBwbGljYXRpb24veC1maWxlbWFrZXIiKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxp
Y2F0aW9uL3gtZmlsZW1ha2VyIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LWZpbGVt
YWtlciIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC1maWxlbWFrZXIiKSwKLSAgICAg
ICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gtaGRmIiksCi0gICAgICAgIENGU1RSKCJ4LWNvbmZlcmVu
Y2UveC1jb29sdGFsayIpLAotICAgICAgICBDRlNUUigiaW1hZ2UveC1pY29uIiksCi0gICAgICAg
IENGU1RSKCJ0ZXh0L2NhbGVuZGFyIiksCi0gICAgICAgIENGU1RSKCJpbWFnZS9pZWYiKSwKLSAg
ICAgICAgQ0ZTVFIoIm1vZGVsL2lnZXMiKSwKLSAgICAgICAgQ0ZTVFIoIm1vZGVsL2lnZXMiKSwK
LSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIpLAotICAgICAgICBDRlNU
UigidGV4dC9odG1sIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LWxhdGV4IiksCi0g
ICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iKSwKLSAgICAgICAgQ0ZTVFIo
ImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIpLAotICAgICAgICBDRlNUUigiYXVkaW8veC1tcGVn
dXJsIiksCi0gICAgICAgIENGU1RSKCJhdWRpby94LW00cCIpLAotICAgICAgICBDRlNUUigiaW1h
Z2UveC1tYWNwYWludCIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC10cm9mZi1tYW4i
KSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gtdHJvZmYtbWUiKSwKLSAgICAgICAgQ0ZT
VFIoIm1vZGVsL21lc2giKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3ZuZC5taWYiKSwK
LSAgICAgICAgQ0ZTVFIoInRleHQvamF2YXNjcmlwdCIpLAotICAgICAgICBDRlNUUigidmlkZW8v
eC1zZ2ktbW92aWUiKSwKLSAgICAgICAgQ0ZTVFIoImF1ZGlvL21wZWciKSwKLSAgICAgICAgQ0ZT
VFIoImF1ZGlvL21wZWciKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gtdHJvZmYtbXMi
KSwKLSAgICAgICAgQ0ZTVFIoIm1vZGVsL21lc2giKSwKLSAgICAgICAgQ0ZTVFIoInZpZGVvL3Zu
ZC5tcGVndXJsIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LW5ldGNkZiIpLAotICAg
ICAgICBDRlNUUigiYXBwbGljYXRpb24vb2RhIiksCi0gICAgICAgIENGU1RSKCJpbWFnZS94LXBv
cnRhYmxlLWJpdG1hcCIpLAotICAgICAgICBDRlNUUigiaW1hZ2UveC1wY3giKSwKLSAgICAgICAg
Q0ZTVFIoImNoZW1pY2FsL3gtcGRiIiksCi0gICAgICAgIENGU1RSKCJpbWFnZS94LXBvcnRhYmxl
LWdyYXltYXAiKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gtY2hlc3MtcGduIiksCi0g
ICAgICAgIENGU1RSKCJhdWRpby9zY3BscyIpLAotICAgICAgICBDRlNUUigiaW1hZ2UveC1wb3J0
YWJsZS1hbnltYXAiKSwKLSAgICAgICAgQ0ZTVFIoImltYWdlL3gtbWFjcGFpbnQiKSwKLSAgICAg
ICAgQ0ZTVFIoImltYWdlL3gtbWFjcGFpbnQiKSwKLSAgICAgICAgQ0ZTVFIoImltYWdlL3gtcG9y
dGFibGUtcGl4bWFwIiksCi0gICAgICAgIENGU1RSKCJpbWFnZS94LWNtdS1yYXN0ZXIiKSwKLSAg
ICAgICAgQ0ZTVFIoImltYWdlL3gtcmdiIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi94
LXRyb2ZmIiksCi0gICAgICAgIENGU1RSKCJhdWRpby94LXBuLXJlYWxhdWRpby1wbHVnaW4iKSwK
LSAgICAgICAgQ0ZTVFIoInRleHQvcmljaHRleHQiKSwKLSAgICAgICAgQ0ZTVFIoInRleHQvc2dt
bCIpLAotICAgICAgICBDRlNUUigidGV4dC9zZ21sIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNh
dGlvbi94LXNoIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LXNoYXIiKSwKLSAgICAg
ICAgQ0ZTVFIoIm1vZGVsL21lc2giKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gta29h
biIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC1rb2FuIiksCi0gICAgICAgIENGU1RS
KCJhcHBsaWNhdGlvbi94LWtvYW4iKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gta29h
biIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC1kaXNrY29weSIpLAotICAgICAgICBD
RlNUUigiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNh
dGlvbi94LWZ1dHVyZXNwbGFzaCIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC13YWlz
LXNvdXJjZSIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC1zdjRjcGlvIiksCi0gICAg
ICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LXN2NGNyYyIpLAotICAgICAgICBDRlNUUigiYXBwbGlj
YXRpb24veC1zaG9ja3dhdmUtZmxhc2giKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gt
dHJvZmYiKSwKLSAgICAgICAgQ0ZTVFIoImltYWdlL3gtdGFyZ2EiKSwKLSAgICAgICAgQ0ZTVFIo
ImFwcGxpY2F0aW9uL3gtdGNsIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LXRleCIp
LAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC10ZXhpbmZvIiksCi0gICAgICAgIENGU1RS
KCJhcHBsaWNhdGlvbi94LXRleGluZm8iKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gt
Z3ppcCIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC1iaXR0b3JyZW50IiksCi0gICAg
ICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LXRyb2ZmIiksCi0gICAgICAgIENGU1RSKCJ0ZXh0L3Rh
Yi1zZXBhcmF0ZWQtdmFsdWVzIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LXVzdGFy
IiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LWNkbGluayIpLAotICAgICAgICBDRlNU
UigibW9kZWwvdnJtbCIpLAotICAgICAgICBDRlNUUigiaW1hZ2Uvdm5kLndhcC53Ym1wIiksCi0g
ICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi92bmQud2FwLndieG1sIiksCi0gICAgICAgIENGU1RS
KCJhcHBsaWNhdGlvbi94LXdlYmFyY2hpdmUiKSwKLSAgICAgICAgQ0ZTVFIoInZpZGVvL3dlYm0i
KSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gtbXMtd21kIiksCi0gICAgICAgIENGU1RS
KCJ0ZXh0L3ZuZC53YXAud21sIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi92bmQud2Fw
LndtbGMiKSwKLSAgICAgICAgQ0ZTVFIoInRleHQvdm5kLndhcC53bWxzY3JpcHQiKSwKLSAgICAg
ICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3ZuZC53YXAud21sc2NyaXB0YyIpLAotICAgICAgICBDRlNU
UigibW9kZWwvdnJtbCIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24vdm5kLmFkb2JlLnhk
cCt4bWwiKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3ZuZC5hZG9iZS54ZmQreG1sIiks
Ci0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi92bmQuYWRvYmUueGZkZiIpLAotICAgICAgICBD
RlNUUigiaW1hZ2UveC14cGl4bWFwIiksCi0gICAgICAgIENGU1RSKCJ0ZXh0L3htbCIpLAotICAg
ICAgICBDRlNUUigiaW1hZ2UveC14d2luZG93ZHVtcCIpLAotICAgICAgICBDRlNUUigiY2hlbWlj
YWwveC14eXoiKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gtY29tcHJlc3MiKQotICAg
IH07CiAKLSAgICBBU1NFUlQoc2l6ZW9mKGtleXMpID09IHNpemVvZih2YWx1ZXMpKTsKLSAgICBy
ZXR1cm4gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNv
bnN0IHZvaWQqKikma2V5cywgKGNvbnN0IHZvaWQqKikmdmFsdWVzLCBzaXplb2Yoa2V5cykgLyBz
aXplb2YoQ0ZTdHJpbmdSZWYpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZU
eXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7Ci19Ci0KLXZvaWQgYWRqdXN0TUlNRVR5cGVJ
Zk5lY2Vzc2FyeShDRlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UsIGJvb2wgaXNNYWluUmVzb3Vy
Y2VMb2FkKQordm9pZCBhZGp1c3RNSU1FVHlwZUlmTmVjZXNzYXJ5KENGVVJMUmVzcG9uc2VSZWYg
cmVzcG9uc2UsIGJvb2wgLyppc01haW5SZXNvdXJjZUxvYWQqLykKIHsKLSAgICBVTlVTRURfUEFS
QU0oaXNNYWluUmVzb3VyY2VMb2FkKTsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHJlc3Vs
dCA9IENGVVJMUmVzcG9uc2VHZXRNSU1FVHlwZShjZlJlc3BvbnNlKTsKLSAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IG9yaWdpbmFsUmVzdWx0ID0gcmVzdWx0OworICAgIGlmIChDRlVSTFJlc3Bv
bnNlR2V0TUlNRVR5cGUocmVzcG9uc2UpKQorICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIXJl
c3VsdCkgewotICAgICAgICBhdXRvIHVybCA9IENGVVJMUmVzcG9uc2VHZXRVUkwoY2ZSZXNwb25z
ZSk7Ci0gICAgICAgIGlmIChbKF9fYnJpZGdlIE5TVVJMICopdXJsIGlzRmlsZVVSTF0pIHsKLSAg
ICAgICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZXh0ZW5zaW9uID0gYWRvcHRDRihDRlVS
TENvcHlQYXRoRXh0ZW5zaW9uKHVybCkpOwotICAgICAgICAgICAgaWYgKGV4dGVuc2lvbikgewot
ICAgICAgICAgICAgICAgIC8vIDxyZGFyOi8vcHJvYmxlbS83MDA3Mzg5PiBDb3JlVHlwZXMgVVRJ
IG1hcCBpcyBtaXNzaW5nIDEwMCsgZmlsZSBleHRlbnNpb25zIHRoYXQgR2F0ZUtlZXBlciBrbmV3
IGFib3V0Ci0gICAgICAgICAgICAgICAgLy8gV2hlbiB0aGlzIHJhZGFyIGlzIHJlc29sdmVkLCB3
ZSBjYW4gcmVtb3ZlIHRoaXMgZmlsZTovLyB1cmwgc3BlY2lmaWMgY29kZS4KLSAgICAgICAgICAg
ICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4+IGV4
dGVuc2lvbk1hcCA9IGNyZWF0ZUV4dGVuc2lvblRvTUlNRVR5cGVNYXAoKTsKLSAgICAgICAgICAg
ICAgICBhdXRvIG11dGFibGVFeHRlbnNpb24gPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlTXV0YWJs
ZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgZXh0ZW5zaW9uLmdldCgpKSk7Ci0gICAgICAg
ICAgICAgICAgQ0ZTdHJpbmdMb3dlcmNhc2UobXV0YWJsZUV4dGVuc2lvbi5nZXQoKSwgTlVMTCk7
Ci0gICAgICAgICAgICAgICAgZXh0ZW5zaW9uID0gV1RGTW92ZShtdXRhYmxlRXh0ZW5zaW9uKTsK
LSAgICAgICAgICAgICAgICByZXN1bHQgPSAoQ0ZTdHJpbmdSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFs
dWUoZXh0ZW5zaW9uTWFwLmdldCgpLmdldCgpLCBleHRlbnNpb24uZ2V0KCkpOwotICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgIGlmICghcmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAg
ICAgIC8vIElmIHRoZSBHYXRla2VlcGVyLWJhc2VkIG1hcCBkb2Vzbid0IGhhdmUgYSBNSU1FIHR5
cGUsIHdlJ2xsIHRyeSB0byBmaWd1cmUgb3V0IHdoYXQgaXQgc2hvdWxkIGJlIGJ5Ci0gICAgICAg
ICAgICAgICAgICAgIC8vIGxvb2tpbmcgdXAgdGhlIGZpbGUgZXh0ZW5zaW9uIGluIHRoZSBVVEkg
bWFwcy4KLUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCi0gICAgICAgICAgICAg
ICAgICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gdXRpID0gYWRvcHRDRihVVFR5cGVDcmVhdGVQ
cmVmZXJyZWRJZGVudGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzRmlsZW5hbWVFeHRlbnNpb24sIGV4
dGVuc2lvbi5nZXQoKSwgMCkpOwotQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfRU5ECi0g
ICAgICAgICAgICAgICAgICAgIFN0cmluZyBNSU1FVHlwZSA9IE1JTUVUeXBlRnJvbVVUSVRyZWUo
dXRpLmdldCgpKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFNSU1FVHlwZS5pc0VtcHR5KCkp
Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBNSU1FVHlwZS5jcmVhdGVDRlN0cmlu
ZygpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0K
LSAgICAKLSAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICBzdGF0aWMgQ0ZTdHJpbmdSZWYgZGVm
YXVsdE1JTUVUeXBlU3RyaW5nID0gV2ViQ29yZTo6ZGVmYXVsdE1JTUVUeXBlKCkuY3JlYXRlQ0ZT
dHJpbmcoKS5sZWFrUmVmKCk7Ci0gICAgICAgIHJlc3VsdCA9IGRlZmF1bHRNSU1FVHlwZVN0cmlu
ZzsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHR5cGU7CisKKyAgICBpZiAoYXV0byBleHRl
bnNpb24gPSBmaWxlUGF0aEV4dGVuc2lvbihyZXNwb25zZSkpIHsKKyAgICAgICAgLy8gPHJkYXI6
Ly9wcm9ibGVtLzcwMDczODk+IENvcmVUeXBlcyBVVEkgbWFwIGlzIG1pc3NpbmcgMTAwKyBmaWxl
IGV4dGVuc2lvbnMgdGhhdCBHYXRlS2VlcGVyIGtuZXcgYWJvdXQKKyAgICAgICAgLy8gT25jZSBV
VFR5cGUgbWF0Y2hlcyBvbmUgb2YgdGhlc2UgbWFwcGluZ3Mgb24gYWxsIHZlcnNpb25zIG9mIG1h
Y09TIHdlIHN1cHBvcnQsIHdlIGNhbiByZW1vdmUgdGhhdCBwYWlyLgorICAgICAgICAvLyBBbHRl
cm5hdGl2ZWx5LCB3ZSBjb3VsZCByZW1vdmUgYW55IHBhaXJzIHRoYXQgd2UgZGV0ZXJtaW5lIHdl
IG5vIGxvbmdlciBuZWVkLgorICAgICAgICAvLyBBbmQgdGhlbiByZW1vdmUgdGhpcyBjb2RlIGVu
dGlyZWx5IG9uY2UgdGhleSBhcmUgYWxsIGdvbmUuCisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIg
c3RkOjpwYWlyPENvbXBhcmFibGVMZXR0ZXJzTGl0ZXJhbCwgTlNTdHJpbmcgKj4gZXh0ZW5zaW9u
UGFpcnNbXSA9IHsKKyAgICAgICAgICAgIHsgImFpIiwgQCJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0
IiB9LAorICAgICAgICAgICAgeyAiYXNjIiwgQCJ0ZXh0L3BsYWluIiB9LAorICAgICAgICAgICAg
eyAiYmNwaW8iLCBAImFwcGxpY2F0aW9uL3gtYmNwaW8iIH0sCisgICAgICAgICAgICB7ICJibXAi
LCBAImltYWdlL2JtcCIgfSwKKyAgICAgICAgICAgIHsgImNkZiIsIEAiYXBwbGljYXRpb24veC1u
ZXRjZGYiIH0sCisgICAgICAgICAgICB7ICJjbGFzcyIsIEAiYXBwbGljYXRpb24vb2N0ZXQtc3Ry
ZWFtIiB9LAorICAgICAgICAgICAgeyAiY3BneiIsIEAiYXBwbGljYXRpb24veC1nemlwIiB9LAor
ICAgICAgICAgICAgeyAiY3BpbyIsIEAiYXBwbGljYXRpb24veC1jcGlvIiB9LAorICAgICAgICAg
ICAgeyAiY3B0IiwgQCJhcHBsaWNhdGlvbi9tYWMtY29tcGFjdHBybyIgfSwKKyAgICAgICAgICAg
IHsgImNzaCIsIEAiYXBwbGljYXRpb24veC1jc2giIH0sCisgICAgICAgICAgICB7ICJjc3MiLCBA
InRleHQvY3NzIiB9LAorICAgICAgICAgICAgeyAiZGNyIiwgQCJhcHBsaWNhdGlvbi94LWRpcmVj
dG9yIiB9LAorICAgICAgICAgICAgeyAiZGlyIiwgQCJhcHBsaWNhdGlvbi94LWRpcmVjdG9yIiB9
LAorICAgICAgICAgICAgeyAiZG1nIiwgQCJhcHBsaWNhdGlvbi94LWRpc2tjb3B5IiB9LAorICAg
ICAgICAgICAgeyAiZG1zIiwgQCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iIH0sCisgICAgICAg
ICAgICB7ICJkdmkiLCBAImFwcGxpY2F0aW9uL3gtZHZpIiB9LAorICAgICAgICAgICAgeyAiZHhy
IiwgQCJhcHBsaWNhdGlvbi94LWRpcmVjdG9yIiB9LAorICAgICAgICAgICAgeyAiZXBzIiwgQCJh
cHBsaWNhdGlvbi9wb3N0c2NyaXB0IiB9LAorICAgICAgICAgICAgeyAiZXR4IiwgQCJ0ZXh0L3gt
c2V0ZXh0IiB9LAorICAgICAgICAgICAgeyAiZXoiLCBAImFwcGxpY2F0aW9uL2FuZHJldy1pbnNl
dCIgfSwKKyAgICAgICAgICAgIHsgImZkZiIsIEAiYXBwbGljYXRpb24vdm5kLmZkZiIgfSwKKyAg
ICAgICAgICAgIHsgImZsYSIsIEAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiB9LAorICAgICAg
ICAgICAgeyAiZnAiLCBAImFwcGxpY2F0aW9uL3gtZmlsZW1ha2VyIiB9LAorICAgICAgICAgICAg
eyAiZnAyIiwgQCJhcHBsaWNhdGlvbi94LWZpbGVtYWtlciIgfSwKKyAgICAgICAgICAgIHsgImZw
MyIsIEAiYXBwbGljYXRpb24veC1maWxlbWFrZXIiIH0sCisgICAgICAgICAgICB7ICJmcDQiLCBA
ImFwcGxpY2F0aW9uL3gtZmlsZW1ha2VyIiB9LAorICAgICAgICAgICAgeyAiZnA1IiwgQCJhcHBs
aWNhdGlvbi94LWZpbGVtYWtlciIgfSwKKyAgICAgICAgICAgIHsgImZwNiIsIEAiYXBwbGljYXRp
b24veC1maWxlbWFrZXIiIH0sCisgICAgICAgICAgICB7ICJoZGYiLCBAImFwcGxpY2F0aW9uL3gt
aGRmIiB9LAorICAgICAgICAgICAgeyAiaWNlIiwgQCJ4LWNvbmZlcmVuY2UveC1jb29sdGFsayIg
fSwKKyAgICAgICAgICAgIHsgImljbyIsIEAiaW1hZ2UveC1pY29uIiB9LAorICAgICAgICAgICAg
eyAiaWNzIiwgQCJ0ZXh0L2NhbGVuZGFyIiB9LAorICAgICAgICAgICAgeyAiaWVmIiwgQCJpbWFn
ZS9pZWYiIH0sCisgICAgICAgICAgICB7ICJpZ2VzIiwgQCJtb2RlbC9pZ2VzIiB9LAorICAgICAg
ICAgICAgeyAiaWdzIiwgQCJtb2RlbC9pZ2VzIiB9LAorICAgICAgICAgICAgeyAiaXNvIiwgQCJh
cHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iIH0sCisgICAgICAgICAgICB7ICJqaHRtbCIsIEAidGV4
dC9odG1sIiB9LAorICAgICAgICAgICAgeyAibGF0ZXgiLCBAImFwcGxpY2F0aW9uL3gtbGF0ZXgi
IH0sCisgICAgICAgICAgICB7ICJsaGEiLCBAImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIgfSwK
KyAgICAgICAgICAgIHsgImx6aCIsIEAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiB9LAorICAg
ICAgICAgICAgeyAibTN1IiwgQCJhdWRpby94LW1wZWd1cmwiIH0sCisgICAgICAgICAgICB7ICJt
NHAiLCBAImF1ZGlvL3gtbTRwIiB9LAorICAgICAgICAgICAgeyAibWFjIiwgQCJpbWFnZS94LW1h
Y3BhaW50IiB9LAorICAgICAgICAgICAgeyAibWFuIiwgQCJhcHBsaWNhdGlvbi94LXRyb2ZmLW1h
biIgfSwKKyAgICAgICAgICAgIHsgIm1lIiwgQCJhcHBsaWNhdGlvbi94LXRyb2ZmLW1lIiB9LAor
ICAgICAgICAgICAgeyAibWVzaCIsIEAibW9kZWwvbWVzaCIgfSwKKyAgICAgICAgICAgIHsgIm1p
ZiIsIEAiYXBwbGljYXRpb24vdm5kLm1pZiIgfSwKKyAgICAgICAgICAgIHsgIm1qcyIsIEAidGV4
dC9qYXZhc2NyaXB0IiB9LAorICAgICAgICAgICAgeyAibW92aWUiLCBAInZpZGVvL3gtc2dpLW1v
dmllIiB9LAorICAgICAgICAgICAgeyAibXAyIiwgQCJhdWRpby9tcGVnIiB9LAorICAgICAgICAg
ICAgeyAibXBnYSIsIEAiYXVkaW8vbXBlZyIgfSwKKyAgICAgICAgICAgIHsgIm1zIiwgQCJhcHBs
aWNhdGlvbi94LXRyb2ZmLW1zIiB9LAorICAgICAgICAgICAgeyAibXNoIiwgQCJtb2RlbC9tZXNo
IiB9LAorICAgICAgICAgICAgeyAibXh1IiwgQCJ2aWRlby92bmQubXBlZ3VybCIgfSwKKyAgICAg
ICAgICAgIHsgIm5jIiwgQCJhcHBsaWNhdGlvbi94LW5ldGNkZiIgfSwKKyAgICAgICAgICAgIHsg
Im9kYSIsIEAiYXBwbGljYXRpb24vb2RhIiB9LAorICAgICAgICAgICAgeyAicGJtIiwgQCJpbWFn
ZS94LXBvcnRhYmxlLWJpdG1hcCIgfSwKKyAgICAgICAgICAgIHsgInBjeCIsIEAiaW1hZ2UveC1w
Y3giIH0sCisgICAgICAgICAgICB7ICJwZGIiLCBAImNoZW1pY2FsL3gtcGRiIiB9LAorICAgICAg
ICAgICAgeyAicGdtIiwgQCJpbWFnZS94LXBvcnRhYmxlLWdyYXltYXAiIH0sCisgICAgICAgICAg
ICB7ICJwZ24iLCBAImFwcGxpY2F0aW9uL3gtY2hlc3MtcGduIiB9LAorICAgICAgICAgICAgeyAi
cGxzIiwgQCJhdWRpby9zY3BscyIgfSwKKyAgICAgICAgICAgIHsgInBubSIsIEAiaW1hZ2UveC1w
b3J0YWJsZS1hbnltYXAiIH0sCisgICAgICAgICAgICB7ICJwbnQiLCBAImltYWdlL3gtbWFjcGFp
bnQiIH0sCisgICAgICAgICAgICB7ICJwbnRnIiwgQCJpbWFnZS94LW1hY3BhaW50IiB9LAorICAg
ICAgICAgICAgeyAicHBtIiwgQCJpbWFnZS94LXBvcnRhYmxlLXBpeG1hcCIgfSwKKyAgICAgICAg
ICAgIHsgInJhcyIsIEAiaW1hZ2UveC1jbXUtcmFzdGVyIiB9LAorICAgICAgICAgICAgeyAicmdi
IiwgQCJpbWFnZS94LXJnYiIgfSwKKyAgICAgICAgICAgIHsgInJvZmYiLCBAImFwcGxpY2F0aW9u
L3gtdHJvZmYiIH0sCisgICAgICAgICAgICB7ICJycG0iLCBAImF1ZGlvL3gtcG4tcmVhbGF1ZGlv
LXBsdWdpbiIgfSwKKyAgICAgICAgICAgIHsgInJ0eCIsIEAidGV4dC9yaWNodGV4dCIgfSwKKyAg
ICAgICAgICAgIHsgInNnbSIsIEAidGV4dC9zZ21sIiB9LAorICAgICAgICAgICAgeyAic2dtbCIs
IEAidGV4dC9zZ21sIiB9LAorICAgICAgICAgICAgeyAic2giLCBAImFwcGxpY2F0aW9uL3gtc2gi
IH0sCisgICAgICAgICAgICB7ICJzaGFyIiwgQCJhcHBsaWNhdGlvbi94LXNoYXIiIH0sCisgICAg
ICAgICAgICB7ICJzaWxvIiwgQCJtb2RlbC9tZXNoIiB9LAorICAgICAgICAgICAgeyAic2tkIiwg
QCJhcHBsaWNhdGlvbi94LWtvYW4iIH0sCisgICAgICAgICAgICB7ICJza20iLCBAImFwcGxpY2F0
aW9uL3gta29hbiIgfSwKKyAgICAgICAgICAgIHsgInNrcCIsIEAiYXBwbGljYXRpb24veC1rb2Fu
IiB9LAorICAgICAgICAgICAgeyAic2t0IiwgQCJhcHBsaWNhdGlvbi94LWtvYW4iIH0sCisgICAg
ICAgICAgICB7ICJzbWkiLCBAImFwcGxpY2F0aW9uL3gtZGlza2NvcHkiIH0sCisgICAgICAgICAg
ICB7ICJzbyIsIEAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiB9LAorICAgICAgICAgICAgeyAi
c3BsIiwgQCJhcHBsaWNhdGlvbi94LWZ1dHVyZXNwbGFzaCIgfSwKKyAgICAgICAgICAgIHsgInNy
YyIsIEAiYXBwbGljYXRpb24veC13YWlzLXNvdXJjZSIgfSwKKyAgICAgICAgICAgIHsgInN2NGNw
aW8iLCBAImFwcGxpY2F0aW9uL3gtc3Y0Y3BpbyIgfSwKKyAgICAgICAgICAgIHsgInN2NGNyYyIs
IEAiYXBwbGljYXRpb24veC1zdjRjcmMiIH0sCisgICAgICAgICAgICB7ICJzd2YiLCBAImFwcGxp
Y2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoIiB9LAorICAgICAgICAgICAgeyAidCIsIEAiYXBwbGlj
YXRpb24veC10cm9mZiIgfSwKKyAgICAgICAgICAgIHsgInRhcmdhIiwgQCJpbWFnZS94LXRhcmdh
IiB9LAorICAgICAgICAgICAgeyAidGNsIiwgQCJhcHBsaWNhdGlvbi94LXRjbCIgfSwKKyAgICAg
ICAgICAgIHsgInRleCIsIEAiYXBwbGljYXRpb24veC10ZXgiIH0sCisgICAgICAgICAgICB7ICJ0
ZXhpIiwgQCJhcHBsaWNhdGlvbi94LXRleGluZm8iIH0sCisgICAgICAgICAgICB7ICJ0ZXhpbmZv
IiwgQCJhcHBsaWNhdGlvbi94LXRleGluZm8iIH0sCisgICAgICAgICAgICB7ICJ0Z3oiLCBAImFw
cGxpY2F0aW9uL3gtZ3ppcCIgfSwKKyAgICAgICAgICAgIHsgInRvcnJlbnQiLCBAImFwcGxpY2F0
aW9uL3gtYml0dG9ycmVudCIgfSwKKyAgICAgICAgICAgIHsgInRyIiwgQCJhcHBsaWNhdGlvbi94
LXRyb2ZmIiB9LAorICAgICAgICAgICAgeyAidHN2IiwgQCJ0ZXh0L3RhYi1zZXBhcmF0ZWQtdmFs
dWVzIiB9LAorICAgICAgICAgICAgeyAidXN0YXIiLCBAImFwcGxpY2F0aW9uL3gtdXN0YXIiIH0s
CisgICAgICAgICAgICB7ICJ2Y2QiLCBAImFwcGxpY2F0aW9uL3gtY2RsaW5rIiB9LAorICAgICAg
ICAgICAgeyAidnJtbCIsIEAibW9kZWwvdnJtbCIgfSwKKyAgICAgICAgICAgIHsgIndibXAiLCBA
ImltYWdlL3ZuZC53YXAud2JtcCIgfSwKKyAgICAgICAgICAgIHsgIndieG1sIiwgQCJhcHBsaWNh
dGlvbi92bmQud2FwLndieG1sIiB9LAorICAgICAgICAgICAgeyAid2ViYXJjaGl2ZSIsIEAiYXBw
bGljYXRpb24veC13ZWJhcmNoaXZlIiB9LAorICAgICAgICAgICAgeyAid2VibSIsIEAidmlkZW8v
d2VibSIgfSwKKyAgICAgICAgICAgIHsgIndtZCIsIEAiYXBwbGljYXRpb24veC1tcy13bWQiIH0s
CisgICAgICAgICAgICB7ICJ3bWwiLCBAInRleHQvdm5kLndhcC53bWwiIH0sCisgICAgICAgICAg
ICB7ICJ3bWxjIiwgQCJhcHBsaWNhdGlvbi92bmQud2FwLndtbGMiIH0sCisgICAgICAgICAgICB7
ICJ3bWxzIiwgQCJ0ZXh0L3ZuZC53YXAud21sc2NyaXB0IiB9LAorICAgICAgICAgICAgeyAid21s
c2MiLCBAImFwcGxpY2F0aW9uL3ZuZC53YXAud21sc2NyaXB0YyIgfSwKKyAgICAgICAgICAgIHsg
IndybCIsIEAibW9kZWwvdnJtbCIgfSwKKyAgICAgICAgICAgIHsgInhkcCIsIEAiYXBwbGljYXRp
b24vdm5kLmFkb2JlLnhkcCt4bWwiIH0sCisgICAgICAgICAgICB7ICJ4ZmQiLCBAImFwcGxpY2F0
aW9uL3ZuZC5hZG9iZS54ZmQreG1sIiB9LAorICAgICAgICAgICAgeyAieGZkZiIsIEAiYXBwbGlj
YXRpb24vdm5kLmFkb2JlLnhmZGYiIH0sCisgICAgICAgICAgICB7ICJ4cG0iLCBAImltYWdlL3gt
eHBpeG1hcCIgfSwKKyAgICAgICAgICAgIHsgInhzbCIsIEAidGV4dC94bWwiIH0sCisgICAgICAg
ICAgICB7ICJ4d2QiLCBAImltYWdlL3gteHdpbmRvd2R1bXAiIH0sCisgICAgICAgICAgICB7ICJ4
eXoiLCBAImNoZW1pY2FsL3gteHl6IiB9LAorICAgICAgICAgICAgeyAieiIsIEAiYXBwbGljYXRp
b24veC1jb21wcmVzcyIgfSwKKyAgICAgICAgfTsKKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBT
b3J0ZWRBcnJheU1hcCBleHRlbnNpb25NYXAgeyBleHRlbnNpb25QYWlycyB9OworICAgICAgICB0
eXBlID0gKF9fYnJpZGdlIENGU3RyaW5nUmVmKWV4dGVuc2lvbk1hcC5nZXQoU3RyaW5nIHsgZXh0
ZW5zaW9uLmdldCgpIH0pOworICAgICAgICBpZiAoIXR5cGUpCisgICAgICAgICAgICB0eXBlID0g
cHJlZmVycmVkTUlNRVR5cGVGb3JGaWxlRXh0ZW5zaW9uRnJvbVVUVHlwZShleHRlbnNpb24uZ2V0
KCkpOwogICAgIH0KIAotICAgIGlmIChyZXN1bHQgIT0gb3JpZ2luYWxSZXN1bHQpCi0gICAgICAg
IENGVVJMUmVzcG9uc2VTZXRNSU1FVHlwZShjZlJlc3BvbnNlLCByZXN1bHQuZ2V0KCkpOworICAg
IENGVVJMUmVzcG9uc2VTZXRNSU1FVHlwZShyZXNwb25zZSwgdHlwZSA/IHR5cGUuZ2V0KCkgOiBD
RlNUUigiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIikpOwogfQorCiAjZW5kaWYKIAogTlNVUkxS
ZXNwb25zZSAqc3ludGhlc2l6ZVJlZGlyZWN0UmVzcG9uc2VJZk5lY2Vzc2FyeShOU1VSTFJlcXVl
c3QgKmN1cnJlbnRSZXF1ZXN0LCBOU1VSTFJlcXVlc3QgKm5ld1JlcXVlc3QsIE5TVVJMUmVzcG9u
c2UgKnJlZGlyZWN0UmVzcG9uc2UpCkBAIC0zNDUsNCArMTk0LDE5IEBAIE5TVVJMUmVzcG9uc2Ug
KnN5bnRoZXNpemVSZWRpcmVjdFJlc3BvbnNlSWZOZWNlc3NhcnkoTlNVUkxSZXF1ZXN0ICpjdXJy
ZW50UmVxdWVzCiAgICAgcmV0dXJuIHJldGFpblB0cihSZXNvdXJjZVJlc3BvbnNlOjpzeW50aGV0
aWNSZWRpcmVjdFJlc3BvbnNlKFVSTChbY3VycmVudFJlcXVlc3QgVVJMXSksIFVSTChbbmV3UmVx
dWVzdCBVUkxdKSkubnNVUkxSZXNwb25zZSgpKS5hdXRvcmVsZWFzZSgpOwogfQogCitSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IGZpbGVQYXRoRXh0ZW5zaW9uKENGVVJMUmVzcG9uc2VSZWYgcmVzcG9u
c2UpCit7CisgICAgYXV0byByZXNwb25zZVVSTCA9IENGVVJMUmVzcG9uc2VHZXRVUkwocmVzcG9u
c2UpOworICAgIGlmICghWyhfX2JyaWRnZSBOU1VSTCAqKXJlc3BvbnNlVVJMIGlzRmlsZVVSTF0p
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBhZG9wdENGKENGVVJMQ29weVBh
dGhFeHRlbnNpb24ocmVzcG9uc2VVUkwpKTsKK30KKworUmV0YWluUHRyPENGU3RyaW5nUmVmPiBw
cmVmZXJyZWRNSU1FVHlwZUZvckZpbGVFeHRlbnNpb25Gcm9tVVRUeXBlKENGU3RyaW5nUmVmIGV4
dGVuc2lvbikKK3sKK0FMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOCisgICAgcmV0
dXJuIG1pbWVUeXBlRnJvbVVUSVRyZWUoYWRvcHRDRihVVFR5cGVDcmVhdGVQcmVmZXJyZWRJZGVu
dGlmaWVyRm9yVGFnKGtVVFRhZ0NsYXNzRmlsZW5hbWVFeHRlbnNpb24sIGV4dGVuc2lvbiwgbnVs
bHB0cikpLmdldCgpKTsKK0FMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAorfQorCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL2NvY29hL1dlYkFyY2hpdmVEdW1w
U3VwcG9ydC5tbSBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBT
dXBwb3J0Lm1tCmluZGV4IDVhOWJiYzcxNWM5ZTVjODQzYWFmMmI5MTVkZDg4ZjcyZWZhMTllZTEu
LmJhMmYyOTU1YmQ2MTVkZmQ1ZTE0M2Y3NjQ4ZjJlMDBlZGJlOWE5YWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tCkBA
IC0xNTIsNDAgKzE1Miw0MCBAQCBzdGF0aWMgdm9pZCBub3JtYWxpemVXZWJSZXNvdXJjZVVSTChD
Rk11dGFibGVTdHJpbmdSZWYgd2ViUmVzb3VyY2VVUkwpCiAKIHN0YXRpYyB2b2lkIGNvbnZlcnRX
ZWJSZXNvdXJjZVJlc3BvbnNlVG9EaWN0aW9uYXJ5KENGTXV0YWJsZURpY3Rpb25hcnlSZWYgcHJv
cGVydHlMaXN0KQogewotICAgIENGRGF0YVJlZiByZXNwb25zZURhdGEgPSBzdGF0aWNfY2FzdDxD
RkRhdGFSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKHByb3BlcnR5TGlzdCwgQ0ZTVFIoIldlYlJl
c291cmNlUmVzcG9uc2UiKSkpOyAvLyBXZWJSZXNvdXJjZVJlc3BvbnNlS2V5IGluIFdlYlJlc291
cmNlLm0KLSAgICBpZiAoQ0ZHZXRUeXBlSUQocmVzcG9uc2VEYXRhKSAhPSBDRkRhdGFHZXRUeXBl
SUQoKSkKKyAgICBhdXRvIHJlc3BvbnNlRGF0YSA9IGR5bmFtaWNfY2ZfY2FzdDxDRkRhdGFSZWY+
KENGRGljdGlvbmFyeUdldFZhbHVlKHByb3BlcnR5TGlzdCwgQ0ZTVFIoIldlYlJlc291cmNlUmVz
cG9uc2UiKSkpOyAvLyBXZWJSZXNvdXJjZVJlc3BvbnNlS2V5IGluIFdlYlJlc291cmNlLm0KKyAg
ICBpZiAoIXJlc3BvbnNlRGF0YSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYXV0byByZXNwb25z
ZSA9IGNyZWF0ZUNGVVJMUmVzcG9uc2VGcm9tUmVzcG9uc2VEYXRhKHJlc3BvbnNlRGF0YSk7CiAg
ICAgaWYgKCFyZXNwb25zZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmV0YWluUHRyPENGTXV0
YWJsZURpY3Rpb25hcnlSZWY+IHJlc3BvbnNlRGljdGlvbmFyeSA9IGFkb3B0Q0YoQ0ZEaWN0aW9u
YXJ5Q3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCAma0NGVHlwZURpY3Rpb25h
cnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CisgICAg
YXV0byByZXNwb25zZURpY3Rpb25hcnkgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFi
bGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tz
LCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogCi0gICAgUmV0YWluUHRyPENG
TXV0YWJsZVN0cmluZ1JlZj4gdXJsU3RyaW5nID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZU11dGFi
bGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIENGVVJMR2V0U3RyaW5nKENGVVJMUmVzcG9u
c2VHZXRVUkwocmVzcG9uc2UuZ2V0KCkpKSkpOworICAgIGF1dG8gdXJsU3RyaW5nID0gYWRvcHRD
RihDRlN0cmluZ0NyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIENGVVJM
R2V0U3RyaW5nKENGVVJMUmVzcG9uc2VHZXRVUkwocmVzcG9uc2UuZ2V0KCkpKSkpOwogICAgIG5v
cm1hbGl6ZVdlYlJlc291cmNlVVJMKHVybFN0cmluZy5nZXQoKSk7CiAgICAgQ0ZEaWN0aW9uYXJ5
U2V0VmFsdWUocmVzcG9uc2VEaWN0aW9uYXJ5LmdldCgpLCBDRlNUUigiVVJMIiksIHVybFN0cmlu
Zy5nZXQoKSk7CiAKLSAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlU3RyaW5nUmVmPiBtaW1lVHlwZVN0
cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZh
dWx0LCAwLCBDRlVSTFJlc3BvbnNlR2V0TUlNRVR5cGUocmVzcG9uc2UuZ2V0KCkpKSk7CisgICAg
YXV0byBtaW1lVHlwZVN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVNdXRhYmxlQ29weShr
Q0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBDRlVSTFJlc3BvbnNlR2V0TUlNRVR5cGUocmVzcG9uc2Uu
Z2V0KCkpKSk7CiAgICAgY29udmVydE1JTUVUeXBlKG1pbWVUeXBlU3RyaW5nLmdldCgpKTsKICAg
ICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShyZXNwb25zZURpY3Rpb25hcnkuZ2V0KCksIENGU1RSKCJN
SU1FVHlwZSIpLCBtaW1lVHlwZVN0cmluZy5nZXQoKSk7CiAKLSAgICBDRlN0cmluZ1JlZiB0ZXh0
RW5jb2RpbmdOYW1lID0gQ0ZVUkxSZXNwb25zZUdldFRleHRFbmNvZGluZ05hbWUocmVzcG9uc2Uu
Z2V0KCkpOworICAgIGF1dG8gdGV4dEVuY29kaW5nTmFtZSA9IENGVVJMUmVzcG9uc2VHZXRUZXh0
RW5jb2RpbmdOYW1lKHJlc3BvbnNlLmdldCgpKTsKICAgICBpZiAodGV4dEVuY29kaW5nTmFtZSkK
ICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocmVzcG9uc2VEaWN0aW9uYXJ5LmdldCgpLCBD
RlNUUigidGV4dEVuY29kaW5nTmFtZSIpLCB0ZXh0RW5jb2RpbmdOYW1lKTsKIAogICAgIFNJbnQ2
NCBleHBlY3RlZENvbnRlbnRMZW5ndGggPSBDRlVSTFJlc3BvbnNlR2V0RXhwZWN0ZWRDb250ZW50
TGVuZ3RoKHJlc3BvbnNlLmdldCgpKTsKLSAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IGV4cGVj
dGVkQ29udGVudExlbmd0aE51bWJlciA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwga0NGTnVtYmVyU0ludDY0VHlwZSwgJmV4cGVjdGVkQ29udGVudExlbmd0aCkp
OworICAgIGF1dG8gZXhwZWN0ZWRDb250ZW50TGVuZ3RoTnVtYmVyID0gYWRvcHRDRihDRk51bWJl
ckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJTSW50NjRUeXBlLCAmZXhwZWN0
ZWRDb250ZW50TGVuZ3RoKSk7CiAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocmVzcG9uc2VEaWN0
aW9uYXJ5LmdldCgpLCBDRlNUUigiZXhwZWN0ZWRDb250ZW50TGVuZ3RoIiksIGV4cGVjdGVkQ29u
dGVudExlbmd0aE51bWJlci5nZXQoKSk7CiAKICAgICBpZiAoQ0ZIVFRQTWVzc2FnZVJlZiBodHRw
TWVzc2FnZSA9IENGVVJMUmVzcG9uc2VHZXRIVFRQUmVzcG9uc2UocmVzcG9uc2UuZ2V0KCkpKSB7
Ci0gICAgICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGFsbEhlYWRlcnMgPSBhZG9wdENG
KENGSFRUUE1lc3NhZ2VDb3B5QWxsSGVhZGVyRmllbGRzKGh0dHBNZXNzYWdlKSk7Ci0gICAgICAg
IFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVmPiBhbGxIZWFkZXJGaWVsZHMgPSBhZG9w
dENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIDAs
IGFsbEhlYWRlcnMuZ2V0KCkpKTsKKyAgICAgICAgYXV0byBhbGxIZWFkZXJzID0gYWRvcHRDRihD
RkhUVFBNZXNzYWdlQ29weUFsbEhlYWRlckZpZWxkcyhodHRwTWVzc2FnZSkpOworICAgICAgICBh
dXRvIGFsbEhlYWRlckZpZWxkcyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZUNv
cHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgYWxsSGVhZGVycy5nZXQoKSkpOwogICAgICAgICBu
b3JtYWxpemVIVFRQUmVzcG9uc2VIZWFkZXJGaWVsZHMoYWxsSGVhZGVyRmllbGRzLmdldCgpKTsK
ICAgICAgICAgQ0ZEaWN0aW9uYXJ5U2V0VmFsdWUocmVzcG9uc2VEaWN0aW9uYXJ5LmdldCgpLCBD
RlNUUigiYWxsSGVhZGVyRmllbGRzIiksIGFsbEhlYWRlckZpZWxkcy5nZXQoKSk7CiAKICAgICAg
ICAgQ0ZJbmRleCBzdGF0dXNDb2RlID0gQ0ZIVFRQTWVzc2FnZUdldFJlc3BvbnNlU3RhdHVzQ29k
ZShodHRwTWVzc2FnZSk7Ci0gICAgICAgIFJldGFpblB0cjxDRk51bWJlclJlZj4gc3RhdHVzQ29k
ZU51bWJlciA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NG
TnVtYmVyQ0ZJbmRleFR5cGUsICZzdGF0dXNDb2RlKSk7CisgICAgICAgIGF1dG8gc3RhdHVzQ29k
ZU51bWJlciA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NG
TnVtYmVyQ0ZJbmRleFR5cGUsICZzdGF0dXNDb2RlKSk7CiAgICAgICAgIENGRGljdGlvbmFyeVNl
dFZhbHVlKHJlc3BvbnNlRGljdGlvbmFyeS5nZXQoKSwgQ0ZTVFIoInN0YXR1c0NvZGUiKSwgc3Rh
dHVzQ29kZU51bWJlci5nZXQoKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1vZHVsZU1hYy5tbSBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2lu
TW9kdWxlTWFjLm1tCmluZGV4IGIzZWFlMjhhNmFhZGQwMTkwNjIwYTQxYTQ0OTAzODdkNDQxM2Ez
ZDkuLmZjM2ExN2VhOTk2OTljYzI3ZjEwMWNkN2U3MzUwYTY5OTI2MzNkOTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvbWFjL05ldHNjYXBlUGx1Z2lu
TW9kdWxlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUv
bWFjL05ldHNjYXBlUGx1Z2luTW9kdWxlTWFjLm1tCkBAIC0zMiw2ICszMiw3IEBACiAjaW1wb3J0
ICJQbHVnaW5TYW5kYm94UHJvZmlsZS5oIgogI2ltcG9ydCA8d3RmL0hhc2hTZXQuaD4KICNpbXBv
cnQgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW1wb3J0IDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4KICNp
bXBvcnQgPHd0Zi9zcGkvY2YvQ0ZCdW5kbGVTUEkuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmlu
Z1RvSW50ZWdlckNvbnZlcnNpb24uaD4KIApAQCAtNjcsNzggKzY4LDY4IEBAIHN0YXRpYyBib29s
IGdldFBsdWdpbkFyY2hpdGVjdHVyZShDRkJ1bmRsZVJlZiBidW5kbGUsIFBsdWdpbk1vZHVsZUlu
Zm8mIHBsdWdpbikKIAogc3RhdGljIGJvb2wgZ2V0UGx1Z2luSW5mb0Zyb21Qcm9wZXJ0eUxpc3Rz
KENGQnVuZGxlUmVmIGJ1bmRsZSwgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luKQogewotICAgIFJl
dGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IG1pbWVUeXBlcyA9IHN0YXRpY19jYXN0PENGRGljdGlv
bmFyeVJlZj4oQ0ZCdW5kbGVHZXRWYWx1ZUZvckluZm9EaWN0aW9uYXJ5S2V5KGJ1bmRsZSwgQ0ZT
VFIoIldlYlBsdWdpbk1JTUVUeXBlcyIpKSk7Ci0gICAgaWYgKCFtaW1lVHlwZXMgfHwgQ0ZHZXRU
eXBlSUQobWltZVR5cGVzLmdldCgpKSAhPSBDRkRpY3Rpb25hcnlHZXRUeXBlSUQoKSkKKyAgICBS
ZXRhaW5QdHIgbWltZVR5cGVzID0gZHluYW1pY19jZl9jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZC
dW5kbGVHZXRWYWx1ZUZvckluZm9EaWN0aW9uYXJ5S2V5KGJ1bmRsZSwgQ0ZTVFIoIldlYlBsdWdp
bk1JTUVUeXBlcyIpKSk7CisgICAgaWYgKCFtaW1lVHlwZXMpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIC8vIEdldCB0aGUgcGx1Zy1pbiBuYW1lLgotICAgIENGU3RyaW5nUmVmIHBsdWdp
bk5hbWUgPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZCdW5kbGVHZXRWYWx1ZUZvckluZm9E
aWN0aW9uYXJ5S2V5KGJ1bmRsZSwgQ0ZTVFIoIldlYlBsdWdpbk5hbWUiKSkpOwotICAgIGlmIChw
bHVnaW5OYW1lICYmIENGR2V0VHlwZUlEKHBsdWdpbk5hbWUpID09IENGU3RyaW5nR2V0VHlwZUlE
KCkpCisgICAgYXV0byBwbHVnaW5OYW1lID0gZHluYW1pY19jZl9jYXN0PENGU3RyaW5nUmVmPihD
RkJ1bmRsZUdldFZhbHVlRm9ySW5mb0RpY3Rpb25hcnlLZXkoYnVuZGxlLCBDRlNUUigiV2ViUGx1
Z2luTmFtZSIpKSk7CisgICAgaWYgKHBsdWdpbk5hbWUpCiAgICAgICAgIHBsdWdpbi5pbmZvLm5h
bWUgPSBwbHVnaW5OYW1lOwogICAgIAogICAgIC8vIEdldCB0aGUgcGx1Zy1pbiBkZXNjcmlwdGlv
bi4KLSAgICBDRlN0cmluZ1JlZiBwbHVnaW5EZXNjcmlwdGlvbiA9IHN0YXRpY19jYXN0PENGU3Ry
aW5nUmVmPihDRkJ1bmRsZUdldFZhbHVlRm9ySW5mb0RpY3Rpb25hcnlLZXkoYnVuZGxlLCBDRlNU
UigiV2ViUGx1Z2luRGVzY3JpcHRpb24iKSkpOwotICAgIGlmIChwbHVnaW5EZXNjcmlwdGlvbiAm
JiBDRkdldFR5cGVJRChwbHVnaW5EZXNjcmlwdGlvbikgPT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkK
KyAgICBhdXRvIHBsdWdpbkRlc2NyaXB0aW9uID0gZHluYW1pY19jZl9jYXN0PENGU3RyaW5nUmVm
PihDRkJ1bmRsZUdldFZhbHVlRm9ySW5mb0RpY3Rpb25hcnlLZXkoYnVuZGxlLCBDRlNUUigiV2Vi
UGx1Z2luRGVzY3JpcHRpb24iKSkpOworICAgIGlmIChwbHVnaW5EZXNjcmlwdGlvbikKICAgICAg
ICAgcGx1Z2luLmluZm8uZGVzYyA9IHBsdWdpbkRlc2NyaXB0aW9uOwogICAgIAogICAgIC8vIEdl
dCB0aGUgTUlNRSB0eXBlIG1hcHBpbmcgZGljdGlvbmFyeS4KICAgICBDRkluZGV4IG51bU1pbWVU
eXBlcyA9IENGRGljdGlvbmFyeUdldENvdW50KG1pbWVUeXBlcy5nZXQoKSk7ICAgICAgICAgIAot
ICAgIFZlY3RvcjxDRlN0cmluZ1JlZj4gbWltZVR5cGVzVmVjdG9yKG51bU1pbWVUeXBlcyk7Ci0g
ICAgVmVjdG9yPENGRGljdGlvbmFyeVJlZj4gbWltZVR5cGVJbmZvVmVjdG9yKG51bU1pbWVUeXBl
cyk7Ci0gICAgQ0ZEaWN0aW9uYXJ5R2V0S2V5c0FuZFZhbHVlcyhtaW1lVHlwZXMuZ2V0KCksIHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgdm9pZCoqPihtaW1lVHlwZXNWZWN0b3IuZGF0YSgpKSwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCB2b2lkKio+KG1pbWVUeXBlSW5mb1ZlY3Rvci5kYXRhKCkpKTsK
KyAgICBWZWN0b3I8Q0ZUeXBlUmVmPiBtaW1lVHlwZXNWZWN0b3IobnVtTWltZVR5cGVzKTsKKyAg
ICBWZWN0b3I8Q0ZUeXBlUmVmPiBtaW1lVHlwZUluZm9WZWN0b3IobnVtTWltZVR5cGVzKTsKKyAg
ICBDRkRpY3Rpb25hcnlHZXRLZXlzQW5kVmFsdWVzKG1pbWVUeXBlcy5nZXQoKSwgbWltZVR5cGVz
VmVjdG9yLmRhdGEoKSwgbWltZVR5cGVJbmZvVmVjdG9yLmRhdGEoKSk7CiAgICAgCiAgICAgZm9y
IChDRkluZGV4IGkgPSAwOyBpIDwgbnVtTWltZVR5cGVzOyArK2kpIHsKICAgICAgICAgV2ViQ29y
ZTo6TWltZUNsYXNzSW5mbyBtaW1lQ2xhc3NJbmZvOwogICAgICAgICAKICAgICAgICAgLy8gSWYg
dGhpcyBNSU1FIHR5cGUgaXMgaW52YWxpZCwgaWdub3JlIGl0LgotICAgICAgICBDRlN0cmluZ1Jl
ZiBtaW1lVHlwZSA9IG1pbWVUeXBlc1ZlY3RvcltpXTsKLSAgICAgICAgaWYgKCFtaW1lVHlwZSB8
fCBDRkdldFR5cGVJRChtaW1lVHlwZSkgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSB8fCBDRlN0cmlu
Z0dldExlbmd0aChtaW1lVHlwZSkgPT0gMCkKKyAgICAgICAgYXV0byBtaW1lVHlwZSA9IGR5bmFt
aWNfY2ZfY2FzdDxDRlN0cmluZ1JlZj4obWltZVR5cGVzVmVjdG9yW2ldKTsKKyAgICAgICAgaWYg
KCFtaW1lVHlwZSB8fCAhQ0ZTdHJpbmdHZXRMZW5ndGgobWltZVR5cGUpKQogICAgICAgICAgICAg
Y29udGludWU7CiAKICAgICAgICAgLy8gSWYgdGhpcyBNSU1FIHR5cGUgZG9lc24ndCBoYXZlIGEg
dmFsaWQgaW5mbyBkaWN0aW9uYXJ5LCBpZ25vcmUgaXQuCi0gICAgICAgIENGRGljdGlvbmFyeVJl
ZiBtaW1lVHlwZUluZm8gPSBtaW1lVHlwZUluZm9WZWN0b3JbaV07Ci0gICAgICAgIGlmICghbWlt
ZVR5cGVJbmZvIHx8IENGR2V0VHlwZUlEKG1pbWVUeXBlSW5mbykgIT0gQ0ZEaWN0aW9uYXJ5R2V0
VHlwZUlEKCkpCisgICAgICAgIGF1dG8gbWltZVR5cGVJbmZvID0gZHluYW1pY19jZl9jYXN0PENG
RGljdGlvbmFyeVJlZj4obWltZVR5cGVJbmZvVmVjdG9yW2ldKTsKKyAgICAgICAgaWYgKCFtaW1l
VHlwZUluZm8pCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAvLyBGSVhNRTogQ29u
c2lkZXIgc3RvcmluZyBkaXNhYmxlZCBNSU1FIHR5cGVzLgotICAgICAgICBDRlR5cGVSZWYgaXNF
bmFibGVkID0gQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUobWltZVR5cGVJbmZvLCBDRlNUUigiV2ViUGx1
Z2luVHlwZUVuYWJsZWQiKSk7CisgICAgICAgIGF1dG8gaXNFbmFibGVkID0gQ0ZEaWN0aW9uYXJ5
R2V0VmFsdWUobWltZVR5cGVJbmZvLCBDRlNUUigiV2ViUGx1Z2luVHlwZUVuYWJsZWQiKSk7CiAg
ICAgICAgIGlmIChpc0VuYWJsZWQpIHsKLSAgICAgICAgICAgIGlmIChDRkdldFR5cGVJRChpc0Vu
YWJsZWQpID09IENGTnVtYmVyR2V0VHlwZUlEKCkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIG51
bWJlciA9IGR5bmFtaWNfY2ZfY2FzdDxDRk51bWJlclJlZj4oaXNFbmFibGVkKSkgewogICAgICAg
ICAgICAgICAgIGludCB2YWx1ZTsKLSAgICAgICAgICAgICAgICBpZiAoIUNGTnVtYmVyR2V0VmFs
dWUoc3RhdGljX2Nhc3Q8Q0ZOdW1iZXJSZWY+KGlzRW5hYmxlZCksIGtDRk51bWJlckludFR5cGUs
ICZ2YWx1ZSkgfHwgIXZhbHVlKQorICAgICAgICAgICAgICAgIGlmICghQ0ZOdW1iZXJHZXRWYWx1
ZShudW1iZXIsIGtDRk51bWJlckludFR5cGUsICZ2YWx1ZSkgfHwgIXZhbHVlKQogICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoQ0ZHZXRUeXBlSUQo
aXNFbmFibGVkKSA9PSBDRkJvb2xlYW5HZXRUeXBlSUQoKSkgewotICAgICAgICAgICAgICAgIGlm
ICghQ0ZCb29sZWFuR2V0VmFsdWUoc3RhdGljX2Nhc3Q8Q0ZCb29sZWFuUmVmPihpc0VuYWJsZWQp
KSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgIH0gZWxzZSBpZiAoaXNFbmFibGVkICE9IGtDRkJvb2xlYW5UcnVlKQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gR2V0IHRoZSBNSU1F
IHR5cGUgZGVzY3JpcHRpb24uCi0gICAgICAgIENGU3RyaW5nUmVmIG1pbWVUeXBlRGVzY3JpcHRp
b24gPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUobWltZVR5
cGVJbmZvLCBDRlNUUigiV2ViUGx1Z2luVHlwZURlc2NyaXB0aW9uIikpKTsKLSAgICAgICAgaWYg
KG1pbWVUeXBlRGVzY3JpcHRpb24gJiYgQ0ZHZXRUeXBlSUQobWltZVR5cGVEZXNjcmlwdGlvbikg
IT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkKLSAgICAgICAgICAgIG1pbWVUeXBlRGVzY3JpcHRpb24g
PSAwOwotCiAgICAgICAgIG1pbWVDbGFzc0luZm8udHlwZSA9IFN0cmluZyhtaW1lVHlwZSkuY29u
dmVydFRvQVNDSUlMb3dlcmNhc2UoKTsKLSAgICAgICAgbWltZUNsYXNzSW5mby5kZXNjID0gbWlt
ZVR5cGVEZXNjcmlwdGlvbjsKKyAgICAgICAgbWltZUNsYXNzSW5mby5kZXNjID0gZHluYW1pY19j
Zl9jYXN0PENGU3RyaW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShtaW1lVHlwZUluZm8sIENG
U1RSKCJXZWJQbHVnaW5UeXBlRGVzY3JpcHRpb24iKSkpOwogCiAgICAgICAgIC8vIE5vdyBnZXQg
dGhlIGV4dGVuc2lvbnMgZm9yIHRoaXMgTUlNRSB0eXBlLgogICAgICAgICBDRkluZGV4IG51bUV4
dGVuc2lvbnMgPSAwOwotICAgICAgICBDRkFycmF5UmVmIGV4dGVuc2lvbnNBcnJheSA9IHN0YXRp
Y19jYXN0PENGQXJyYXlSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKG1pbWVUeXBlSW5mbywgQ0ZT
VFIoIldlYlBsdWdpbkV4dGVuc2lvbnMiKSkpOwotICAgICAgICBpZiAoZXh0ZW5zaW9uc0FycmF5
ICYmIENGR2V0VHlwZUlEKGV4dGVuc2lvbnNBcnJheSkgPT0gQ0ZBcnJheUdldFR5cGVJRCgpKQor
ICAgICAgICBhdXRvIGV4dGVuc2lvbnNBcnJheSA9IGR5bmFtaWNfY2ZfY2FzdDxDRkFycmF5UmVm
PihDRkRpY3Rpb25hcnlHZXRWYWx1ZShtaW1lVHlwZUluZm8sIENGU1RSKCJXZWJQbHVnaW5FeHRl
bnNpb25zIikpKTsKKyAgICAgICAgaWYgKGV4dGVuc2lvbnNBcnJheSkKICAgICAgICAgICAgIG51
bUV4dGVuc2lvbnMgPSBDRkFycmF5R2V0Q291bnQoZXh0ZW5zaW9uc0FycmF5KTsKIAogICAgICAg
ICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBudW1FeHRlbnNpb25zOyArK2kpIHsKLSAgICAgICAg
ICAgIENGU3RyaW5nUmVmIGV4dGVuc2lvbiA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkFy
cmF5R2V0VmFsdWVBdEluZGV4KGV4dGVuc2lvbnNBcnJheSwgaSkpOwotICAgICAgICAgICAgaWYg
KCFleHRlbnNpb24gfHwgQ0ZHZXRUeXBlSUQoZXh0ZW5zaW9uKSAhPSBDRlN0cmluZ0dldFR5cGVJ
RCgpKQorICAgICAgICAgICAgYXV0byBleHRlbnNpb24gPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZTdHJp
bmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoZXh0ZW5zaW9uc0FycmF5LCBpKSk7CisgICAg
ICAgICAgICBpZiAoIWV4dGVuc2lvbikKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAg
ICAgICAgICAgLy8gVGhlIERpdlggcGx1Zy1pbiBsaXN0cyBtdWx0aXBsZSBleHRlbnNpb25zIGlu
IGEgY29tbWEgc2VwYXJhdGVkIHN0cmluZyBpbnN0ZWFkIG9mIHVzaW5nCiAgICAgICAgICAgICAv
LyBtdWx0aXBsZSBhcnJheSBlbGVtZW50cyBpbiB0aGUgcHJvcGVydHkgbGlzdC4gV29yayBhcm91
bmQgdGhpcyBoZXJlIGJ5IHNwbGl0dGluZyB0aGUKICAgICAgICAgICAgIC8vIGV4dGVuc2lvbiBz
dHJpbmcgaW50byBjb21wb25lbnRzLgotICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gZXh0ZW5z
aW9uQ29tcG9uZW50cyA9IFN0cmluZyhleHRlbnNpb24pLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNl
KCkuc3BsaXQoJywnKTsKLQotICAgICAgICAgICAgZm9yIChhdXRvJiBjb21wb25lbnQgOiBleHRl
bnNpb25Db21wb25lbnRzKQorICAgICAgICAgICAgZm9yIChhdXRvJiBjb21wb25lbnQgOiBTdHJp
bmcoZXh0ZW5zaW9uKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpLnNwbGl0KCcsJykpCiAgICAg
ICAgICAgICAgICAgbWltZUNsYXNzSW5mby5leHRlbnNpb25zLmFwcGVuZChjb21wb25lbnQpOwog
ICAgICAgICB9CiAKQEAgLTE1MSwxMCArMTQyLDEwIEBAIHN0YXRpYyBib29sIGdldFBsdWdpbklu
Zm9Gcm9tUHJvcGVydHlMaXN0cyhDRkJ1bmRsZVJlZiBidW5kbGUsIFBsdWdpbk1vZHVsZUluZm8m
CiAKIGJvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdpbkluZm8oY29uc3QgU3RyaW5n
JiBwbHVnaW5QYXRoLCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4pCiB7Ci0gICAgUmV0YWluUHRy
PENGVVJMUmVmPiBidW5kbGVVUkwgPSBhZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1Q
YXRoKGtDRkFsbG9jYXRvckRlZmF1bHQsIHBsdWdpblBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQo
KSwga0NGVVJMUE9TSVhQYXRoU3R5bGUsIGZhbHNlKSk7CisgICAgYXV0byBidW5kbGVVUkwgPSBh
ZG9wdENGKENGVVJMQ3JlYXRlV2l0aEZpbGVTeXN0ZW1QYXRoKGtDRkFsbG9jYXRvckRlZmF1bHQs
IHBsdWdpblBhdGguY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUs
IGZhbHNlKSk7CiAgICAgCiAgICAgLy8gVHJ5IHRvIGluaXRpYWxpemUgdGhlIGJ1bmRsZS4KLSAg
ICBSZXRhaW5QdHI8Q0ZCdW5kbGVSZWY+IGJ1bmRsZSA9IGFkb3B0Q0YoX0NGQnVuZGxlQ3JlYXRl
VW5pcXVlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1bmRsZVVSTC5nZXQoKSkpOworICAgIGF1dG8g
YnVuZGxlID0gYWRvcHRDRihfQ0ZCdW5kbGVDcmVhdGVVbmlxdWUoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgYnVuZGxlVVJMLmdldCgpKSk7CiAgICAgaWYgKCFidW5kbGUpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAKQEAgLTE3MCwxNSArMTYxLDggQEAgYm9vbCBOZXRzY2FwZVBsdWdpbk1vZHVs
ZTo6Z2V0UGx1Z2luSW5mbyhjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFBsdWdpbk1vZHVsZUkK
IAogICAgIHBsdWdpbi5wYXRoID0gcGx1Z2luUGF0aDsKICAgICBwbHVnaW4uYnVuZGxlSWRlbnRp
ZmllciA9IENGQnVuZGxlR2V0SWRlbnRpZmllcihidW5kbGUuZ2V0KCkpOwotICAgIGlmIChDRlR5
cGVSZWYgdmVyc2lvblR5cGVSZWYgPSBDRkJ1bmRsZUdldFZhbHVlRm9ySW5mb0RpY3Rpb25hcnlL
ZXkoYnVuZGxlLmdldCgpLCBrQ0ZCdW5kbGVWZXJzaW9uS2V5KSkgewotICAgICAgICBpZiAoQ0ZH
ZXRUeXBlSUQodmVyc2lvblR5cGVSZWYpID09IENGU3RyaW5nR2V0VHlwZUlEKCkpCi0gICAgICAg
ICAgICBwbHVnaW4udmVyc2lvblN0cmluZyA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPih2ZXJz
aW9uVHlwZVJlZik7Ci0gICAgfQotCi0gICAgaWYgKENGVHlwZVJlZiBzaG9ydFZlcnNpb25UeXBl
UmVmID0gQ0ZCdW5kbGVHZXRWYWx1ZUZvckluZm9EaWN0aW9uYXJ5S2V5KGJ1bmRsZS5nZXQoKSwg
Q0ZTVFIoIkNGQnVuZGxlU2hvcnRWZXJzaW9uU3RyaW5nIikpKSB7Ci0gICAgICAgIGlmIChDRkdl
dFR5cGVJRChzaG9ydFZlcnNpb25UeXBlUmVmKSA9PSBDRlN0cmluZ0dldFR5cGVJRCgpKQotICAg
ICAgICAgICAgcGx1Z2luLnNob3J0VmVyc2lvblN0cmluZyA9IHN0YXRpY19jYXN0PENGU3RyaW5n
UmVmPihzaG9ydFZlcnNpb25UeXBlUmVmKTsKLSAgICB9CisgICAgcGx1Z2luLnZlcnNpb25TdHJp
bmcgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQnVuZGxlR2V0VmFsdWVGb3JJbmZv
RGljdGlvbmFyeUtleShidW5kbGUuZ2V0KCksIGtDRkJ1bmRsZVZlcnNpb25LZXkpKTsKKyAgICBw
bHVnaW4uc2hvcnRWZXJzaW9uU3RyaW5nID0gZHluYW1pY19jZl9jYXN0PENGU3RyaW5nUmVmPihD
RkJ1bmRsZUdldFZhbHVlRm9ySW5mb0RpY3Rpb25hcnlLZXkoYnVuZGxlLmdldCgpLCBDRlNUUigi
Q0ZCdW5kbGVTaG9ydFZlcnNpb25TdHJpbmciKSkpOwogCiAgICAgaWYgKCFnZXRQbHVnaW5JbmZv
RnJvbVByb3BlcnR5TGlzdHMoYnVuZGxlLmdldCgpLCBwbHVnaW4pKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL1dlYkNvcmVTdXBwb3J0
L1dlYkluc3BlY3RvckNsaWVudENGLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvY2YvV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCmluZGV4IDE2ZGMxNDRkY2M5OGUyNTZj
MDUzMjY3ZjUyZDFkM2U0ZTQ4OTU4M2QuLjNlNTUyZGViOWE5ZTM0ZDAzODBmZGMzN2RmZDk0Zjk1
YTdhOWRkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvY2YvV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvY2Yv
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDYzICsyNSw1MSBAQAog
CiAvLyBGSVhNRTogT24gV2luZG93cywgd2UgcmVxdWlyZSBhbGwgV2ViS2l0IHNvdXJjZSBmaWxl
cyB0byBpbmNsdWRlIGNvbmZpZy5oCiAvLyBiZWZvcmUgaW5jbHVkaW5nIGFueSBvdGhlciBmaWxl
cy4gRmFpbGluZyB0byBpbmNsdWRlIGNvbmZpZy5oIHdpbGwgbGVhdmUKLS8vIFVTRV9DRiB1bmRl
ZmluZWQsIGNhdXNpbmcgYnVpbGQgZmFpbHVyZXMgaW4gdGhpcwotLy8gZmlsZS4gQnV0IE1hYyBk
b2Vzbid0IGhhdmUgYSBjb25maWcuaCBmb3IgV2ViS2l0LCBzbyB3ZSBjYW4ndCBpbmNsdWRlIHRo
ZQotLy8gV2luZG93cyBvbmUgaGVyZS4gRm9yIG5vdyB3ZSBjYW4ganVzdCBkZWZpbmUgVVNFX0NG
IG1hbnVhbGx5LAotLy8gYnV0IHdlIG5lZWQgYSBiZXR0ZXIgbG9uZy10ZXJtIHNvbHV0aW9uLgor
Ly8gVVNFX0NGIHVuZGVmaW5lZCwgY2F1c2luZyBidWlsZCBmYWlsdXJlcyBpbiB0aGlzIGZpbGUu
IEJ1dCBNYWMgZG9lc24ndCBoYXZlCisvLyBhIGNvbmZpZy5oIGZvciBXZWJLaXQsIHNvIHdlIGNh
bid0IGluY2x1ZGUgdGhlIFdpbmRvd3Mgb25lIGhlcmUuIEZvciBub3cgd2UKKy8vIGRlZmluZSBV
U0VfQ0YgbWFudWFsbHkgaGVyZSwgYnV0IGl0IHdvdWxkIGJlIGdvb2QgdG8gZmluZCBhIGJldHRl
ciBzb2x1dGlvbiwKKy8vIGxpa2VseSBieSBtYWtpbmcgImNvbmZpZy5oIiBhICJwcmVmaXggZmls
ZSIgaW4gdGhlIFdpbmRvd3MgYnVpbGQgY29uZmlndXJhdGlvbi4KICNpZm5kZWYgVVNFX0NGCiAj
ZGVmaW5lIFVTRV9DRiAxCiAjZW5kaWYKIAogI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogCi0j
aWYgUExBVEZPUk0oV0lOKQotI2lmbmRlZiBVU0VfQ0cKKyNpZiBQTEFURk9STShXSU4pICYmICFk
ZWZpbmVkKFVTRV9DRykKICNkZWZpbmUgVVNFX0NHIDEKICNlbmRpZgotI2VuZGlmCiAKLS8vIE5P
VEU6IFRoZXNlIG5lZWQgdG8gYXBwZWFyIHVwIHRvcCwgYXMgdGhleSBkZWNsYXJlIG1hY3Jvcwot
Ly8gdXNlZCBpbiB0aGUgSlMgYW5kIFdURiBoZWFkZXJzLgorLy8gTk9URTogVGhlc2UgbmVlZCB0
byBhcHBlYXIgdXAgdG9wLCBhcyB0aGV5IGRlY2xhcmUgbWFjcm9zIHVzZWQgaW4gdGhlIEpTIGFu
ZCBXVEYgaGVhZGVycy4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0V4cG9ydE1hY3Jvcy5o
PgogI2luY2x1ZGUgPHd0Zi9FeHBvcnRNYWNyb3MuaD4KIAogI2luY2x1ZGUgIldlYkluc3BlY3Rv
ckNsaWVudC5oIgogCiAjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4K
LQogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3Rv
ckZyb250ZW5kQ2xpZW50TG9jYWwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KLQogI2lu
Y2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
LQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisjaW5jbHVkZSA8d3RmL2NmL1R5cGVDYXN0c0NG
Lmg+CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBpbnNwZWN0b3JTdGFydHNBdHRhY2hlZFNldHRpbmcg
PSAiaW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQiOwotc3RhdGljIGNvbnN0IGNoYXIqIGluc3BlY3Rv
ckF0dGFjaERpc2FibGVkU2V0dGluZyA9ICJpbnNwZWN0b3JBdHRhY2hEaXNhYmxlZCI7CitzdGF0
aWMgY29uc3RleHByIGNvbnN0IGNoYXIqIGluc3BlY3RvclN0YXJ0c0F0dGFjaGVkU2V0dGluZyA9
ICJpbnNwZWN0b3JTdGFydHNBdHRhY2hlZCI7CitzdGF0aWMgY29uc3RleHByIGNvbnN0IGNoYXIq
IGluc3BlY3RvckF0dGFjaERpc2FibGVkU2V0dGluZyA9ICJpbnNwZWN0b3JBdHRhY2hEaXNhYmxl
ZCI7CiAKLXN0YXRpYyBpbmxpbmUgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjcmVhdGVLZXlGb3JQ
cmVmZXJlbmNlcyhjb25zdCBTdHJpbmcmIGtleSkKK3N0YXRpYyBSZXRhaW5QdHI8Q0ZTdHJpbmdS
ZWY+IGNyZWF0ZUtleUZvclByZWZlcmVuY2VzKGNvbnN0IFN0cmluZyYga2V5KQogewogICAgIHJl
dHVybiBhZG9wdENGKENGU3RyaW5nQ3JlYXRlV2l0aEZvcm1hdCgwLCAwLCBDRlNUUigiV2ViS2l0
IFdlYiBJbnNwZWN0b3IgU2V0dGluZyAtICVAIiksIGtleS5jcmVhdGVDRlN0cmluZygpLmdldCgp
KSk7CiB9CiAKLXN0YXRpYyB2b2lkIHBvcHVsYXRlU2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSwg
U3RyaW5nKiBzZXR0aW5nKQorc3RhdGljIFN0cmluZyBsb2FkU2V0dGluZyhjb25zdCBTdHJpbmcm
IGtleSkKIHsKLSAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHByZWZlcmVuY2VzS2V5ID0gY3Jl
YXRlS2V5Rm9yUHJlZmVyZW5jZXMoa2V5KTsKLSAgICBSZXRhaW5QdHI8Q0ZQcm9wZXJ0eUxpc3RS
ZWY+IHZhbHVlID0gYWRvcHRDRihDRlByZWZlcmVuY2VzQ29weUFwcFZhbHVlKHByZWZlcmVuY2Vz
S2V5LmdldCgpLCBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRBcHBsaWNhdGlvbikpOwotCi0gICAgaWYg
KCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ0ZUeXBlSUQgdHlwZSA9IENGR2V0VHlw
ZUlEKHZhbHVlLmdldCgpKTsKLSAgICBpZiAodHlwZSA9PSBDRlN0cmluZ0dldFR5cGVJRCgpKQot
ICAgICAgICAqc2V0dGluZyA9IHN0YXRpY19jYXN0PFN0cmluZz4oc3RhdGljX2Nhc3Q8Q0ZTdHJp
bmdSZWY+KHZhbHVlLmdldCgpKSk7Ci0gICAgZWxzZSBpZiAodHlwZSA9PSBDRkJvb2xlYW5HZXRU
eXBlSUQoKSkKLSAgICAgICAgKnNldHRpbmcgPSBzdGF0aWNfY2FzdDxib29sPihDRkJvb2xlYW5H
ZXRWYWx1ZShzdGF0aWNfY2FzdDxDRkJvb2xlYW5SZWY+KHZhbHVlLmdldCgpKSkpID8gInRydWUi
IDogImZhbHNlIjsKLSAgICBlbHNlCi0gICAgICAgICpzZXR0aW5nID0gZW1wdHlTdHJpbmcoKTsK
KyAgICBhdXRvIHZhbHVlID0gYWRvcHRDRihDRlByZWZlcmVuY2VzQ29weUFwcFZhbHVlKGNyZWF0
ZUtleUZvclByZWZlcmVuY2VzKGtleSkuZ2V0KCksIGtDRlByZWZlcmVuY2VzQ3VycmVudEFwcGxp
Y2F0aW9uKSk7CisgICAgaWYgKGF1dG8gc3RyaW5nID0gZHluYW1pY19jZl9jYXN0PENGU3RyaW5n
UmVmPih2YWx1ZS5nZXQoKSkpCisgICAgICAgIHJldHVybiBzdHJpbmc7CisgICAgaWYgKHZhbHVl
ID09IGtDRkJvb2xlYW5UcnVlKQorICAgICAgICByZXR1cm4gInRydWUiX3M7CisgICAgaWYgKHZh
bHVlID09IGtDRkJvb2xlYW5GYWxzZSkKKyAgICAgICAgcmV0dXJuICJmYWxzZSJfczsKKyAgICBy
ZXR1cm4geyB9OwogfQogCiBzdGF0aWMgdm9pZCBzdG9yZVNldHRpbmcoY29uc3QgU3RyaW5nJiBr
ZXksIGNvbnN0IFN0cmluZyYgc2V0dGluZykKQEAgLTEwMSwxMSArODksNyBAQCB2b2lkIFdlYklu
c3BlY3RvckNsaWVudDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkKIAogYm9vbCBXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RvckF0dGFjaERpc2FibGVkKCkK
IHsKLSAgICBTdHJpbmcgdmFsdWU7Ci0gICAgcG9wdWxhdGVTZXR0aW5nKGluc3BlY3RvckF0dGFj
aERpc2FibGVkU2V0dGluZywgJnZhbHVlKTsKLSAgICBpZiAodmFsdWUuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIHZhbHVlID09ICJ0cnVlIjsKKyAgICByZXR1
cm4gbG9hZFNldHRpbmcoaW5zcGVjdG9yQXR0YWNoRGlzYWJsZWRTZXR0aW5nKSA9PSAidHJ1ZSI7
CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpzZXRJbnNwZWN0b3JBdHRhY2hEaXNhYmxl
ZChib29sIGRpc2FibGVkKQpAQCAtMTIwLDExICsxMDQsNyBAQCB2b2lkIFdlYkluc3BlY3RvckNs
aWVudDo6ZGVsZXRlSW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQoKQogCiBib29sIFdlYkluc3BlY3Rv
ckNsaWVudDo6aW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQoKQogewotICAgIFN0cmluZyB2YWx1ZTsK
LSAgICBwb3B1bGF0ZVNldHRpbmcoaW5zcGVjdG9yU3RhcnRzQXR0YWNoZWRTZXR0aW5nLCAmdmFs
dWUpOwotICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IHJldHVybiB2YWx1ZSA9PSAidHJ1ZSI7CisgICAgcmV0dXJuIGxvYWRTZXR0aW5nKGluc3BlY3Rv
clN0YXJ0c0F0dGFjaGVkU2V0dGluZykgPT0gInRydWUiOwogfQogCiB2b2lkIFdlYkluc3BlY3Rv
ckNsaWVudDo6c2V0SW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQoYm9vbCBhdHRhY2hlZCkKQEAgLTE0
MCwyNCArMTIwLDEwIEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpkZWxldGVJbnNwZWN0b3JB
dHRhY2hEaXNhYmxlZCgpCiBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbDo6U2V0dGluZ3M+IFdlYkluc3BlY3RvckNsaWVudDo6Y3JlYXRlRnJvbnRl
bmRTZXR0aW5ncygpCiB7CiAgICAgY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRTZXR0aW5nc0NGIDog
cHVibGljIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OlNldHRpbmdzIHsK
LSAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgfkluc3BlY3RvckZyb250ZW5kU2V0dGluZ3ND
RigpIHsgfQotICAgICAgICB2aXJ0dWFsIFN0cmluZyBnZXRQcm9wZXJ0eShjb25zdCBTdHJpbmcm
IG5hbWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIFN0cmluZyB2YWx1ZTsKLSAgICAgICAgICAg
IHBvcHVsYXRlU2V0dGluZyhuYW1lLCAmdmFsdWUpOwotICAgICAgICAgICAgcmV0dXJuIHZhbHVl
OwotICAgICAgICB9Ci0KLSAgICAgICAgdmlydHVhbCB2b2lkIHNldFByb3BlcnR5KGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKLSAgICAgICAgewotICAgICAgICAgICAg
c3RvcmVTZXR0aW5nKG5hbWUsIHZhbHVlKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZpcnR1YWwg
dm9pZCBkZWxldGVQcm9wZXJ0eShjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGRlbGV0ZVNldHRpbmcobmFtZSk7Ci0gICAgICAgIH0KKyAgICBwcml2YXRlOgorICAg
ICAgICBTdHJpbmcgZ2V0UHJvcGVydHkoY29uc3QgU3RyaW5nJiBuYW1lKSBmaW5hbCB7IHJldHVy
biBsb2FkU2V0dGluZyhuYW1lKTsgfQorICAgICAgICB2b2lkIHNldFByb3BlcnR5KGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgZmluYWwgeyBzdG9yZVNldHRpbmcobmFt
ZSwgdmFsdWUpOyB9CisgICAgICAgIHZvaWQgZGVsZXRlUHJvcGVydHkoY29uc3QgU3RyaW5nJiBu
YW1lKSBmaW5hbCB7IGRlbGV0ZVNldHRpbmcobmFtZSk7IH0KICAgICB9OwogICAgIHJldHVybiBt
YWtlVW5pcXVlPEluc3BlY3RvckZyb250ZW5kU2V0dGluZ3NDRj4oKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZVBsdWdpblBhY2thZ2UubW0g
Yi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVnaW5zL1dlYkJhc2VQbHVnaW5QYWNrYWdlLm1t
CmluZGV4IDgwYTNiNGY0YTgyNzQyNGVlZGRlZjk3N2Y3ZTYxODU5NjQ3ZDE2YWQuLmQ5OWVmMjgx
OTM4YmRjZTM5OWVhMDJiMmFiMTBmOTc4YTZmYTMzMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL1BsdWdpbnMvV2ViQmFzZVBsdWdpblBhY2thZ2UubW0KKysrIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvUGx1Z2lucy9XZWJCYXNlUGx1Z2luUGFja2FnZS5tbQpAQCAtMzc3
LDE1ICszNzcsMTEgQEAgLSAoU3RyaW5nKWJ1bmRsZUlkZW50aWZpZXIKIAogLSAoU3RyaW5nKWJ1
bmRsZVZlcnNpb24KIHsKLSAgICBDRkRpY3Rpb25hcnlSZWYgaW5mb0RpY3Rpb25hcnkgPSBDRkJ1
bmRsZUdldEluZm9EaWN0aW9uYXJ5KGNmQnVuZGxlLmdldCgpKTsKKyAgICBhdXRvIGluZm9EaWN0
aW9uYXJ5ID0gQ0ZCdW5kbGVHZXRJbmZvRGljdGlvbmFyeShjZkJ1bmRsZS5nZXQoKSk7CiAgICAg
aWYgKCFpbmZvRGljdGlvbmFyeSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgQ0ZU
eXBlUmVmIGJ1bmRsZVZlcnNpb25TdHJpbmcgPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShpbmZvRGlj
dGlvbmFyeSwga0NGQnVuZGxlVmVyc2lvbktleSk7Ci0gICAgaWYgKCFidW5kbGVWZXJzaW9uU3Ry
aW5nIHx8IENGR2V0VHlwZUlEKGJ1bmRsZVZlcnNpb25TdHJpbmcpICE9IENGU3RyaW5nR2V0VHlw
ZUlEKCkpCi0gICAgICAgIHJldHVybiBTdHJpbmcoKTsKLQotICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PENGU3RyaW5nUmVmPihidW5kbGVWZXJzaW9uU3RyaW5nKTsKKyAgICByZXR1cm4gZHlu
YW1pY19jZl9jYXN0PENGU3RyaW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShpbmZvRGljdGlv
bmFyeSwga0NGQnVuZGxlVmVyc2lvbktleSkpOwogfQogCiBAZW5kCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>436600</attachid>
            <date>2021-08-26 18:42:29 -0700</date>
            <delta_ts>2021-08-30 18:59:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229414-20210826184228.patch</filename>
            <type>text/plain</type>
            <size>105872</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxNjc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MDYzYjVlNTMwNzNiYmEzOTUzMWZmN2YyOGFjNmJiZDA0YmVjYmRlLi5mYWEwMTU5YWZhZTVkYmNl
MzIwMGE5MjNiZWVmMDk2NjY4ZjhhNTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAyMS0wOC0yNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgQ3V0IGRvd24gb24gdXNlIG9mIENGR2V0VHlwZUlELCB1c2luZyBkeW5hbWljX2Nm
X2Nhc3QgaW5zdGVhZDsgcmVsYXRlZCBzdHJlYW1saW5pbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTQxNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1v
dGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tOgorICAgICAgICAoSW5zcGVjdG9yOjpSZW1vdGVJ
bnNwZWN0b3JYUENDb25uZWN0aW9uOjpkZXNlcmlhbGl6ZU1lc3NhZ2UpOiBVc2UKKyAgICAgICAg
ZHluYW1pY19jZl9jYXN0IHRvIGNoZWNrIHR5cGUgaW5zdGVhZCBvZiBDRkdldFR5cGVJRC4gQWxz
byBkbyB0aGUKKyAgICAgICAgY2hlY2sgYXQgcnVudGltZSByYXRoZXIgdGhhbiBhc3NlcnRpbmcu
IE5vdCByZWFsbHkgc3VmZmljaWVudCB0bworICAgICAgICBhc3NlcnQgY29ycmVjdCB0eXBlIGZv
ciBzb21ldGhpbmcgdGhhdCBjb21lcyBvdmVyIGFuIFhQQyBjb25uZWN0aW9uLgorCiAyMDIxLTA4
LTI2ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIHIyODE0ODUg
d2FzIG5vdCBzdWZmaWNpZW50IGluIHdoZXJlIGl0IGNhbGxlZCBkaXNhYmxlUGVlcGhvbGVPcHRp
bWl6YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKaW5kZXggOGFlODc1M2I2YmZmY2I1YTMzNTdiOTViZGIxNGE3MmViOGU2OGQwYS4u
NDRhODI5MDM0NTlkM2Q3ZDI4NzZhM2UwZTdmNDM3NzJiYjFjOTdhMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MCBAQAorMjAyMS0wOC0yNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgQ3V0IGRvd24gb24gdXNlIG9mIENGR2V0VHlwZUlELCB1c2luZyBkeW5hbWljX2NmX2Nhc3Qg
aW5zdGVhZDsgcmVsYXRlZCBzdHJlYW1saW5pbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTQxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogd3RmL2NmL1R5cGVDYXN0c0NGLmg6IEFkZGVkIFdURl9E
RUNMQVJFX0NGX1RZUEVfVFJBSVQoQ0ZVUkwpLiBBZGRlZCBhCisgICAgICAgIGR5bmFtaWNfY2Zf
Y2FzdCBvdmVybG9hZCB0aGF0IGNvbnZlcnRzIGZyb20gb25lIFJldGFpblB0ciB0eXBlIHRvIGFu
b3RoZXIKKyAgICAgICAgYW5kIGF2b2lkcyByZWZlcmVuY2UgY291bnQgY2h1cm4uIFR3ZWFrZWQg
Y29tbWVudHMuCisKKyAgICAgICAgKiB3dGYvY29jb2EvRW50aXRsZW1lbnRzLm1tOgorICAgICAg
ICAoV1RGOjpoYXNFbnRpdGxlbWVudCk6IFVzZSBrQ0ZCb29sZWFuVHJ1ZSBpbnN0ZWFkIG9mIENG
Qm9vbGVhbkdldFZhbHVlLgorCisgICAgICAgICogd3RmL3RleHQvY29jb2EvVGV4dEJyZWFrSXRl
cmF0b3JJbnRlcm5hbElDVUNvY29hLmNwcDoKKyAgICAgICAgKFdURjo6dGV4dEJyZWFrTG9jYWxl
UHJlZmVyZW5jZSk6IFVzZSBkeW5hbWljX2NmX2Nhc3QuCisKIDIwMjEtMDgtMjYgIFJpc3VsIElz
bGFtICA8cmlzdWxfaXNsYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBuZXcgZXhwZXJpbWVu
dGFsIGZlYXR1cmUgZmxhZyBmb3Igc2FuaXRpemluZyBsaW5rcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDg3ZGRj
YTE5NzBlODFjNDVjZDA2NThjYWMwZjZhODFiZjU1MGRmZGQuLjdlYzc0MTZlMWFhZGExZDZkYzFk
ZDJjYWRkNGQ5Yzc4NmU0YTg3M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMDkgQEAKKzIwMjEt
MDgtMjYgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIEN1dCBkb3du
IG9uIHVzZSBvZiBDRkdldFR5cGVJRCwgdXNpbmcgZHluYW1pY19jZl9jYXN0IGluc3RlYWQ7IHJl
bGF0ZWQgc3RyZWFtbGluaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjk0MTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om1ha2VTaW1wbGVDb2xvckZyb21B
UkdCQ0ZBcnJheSk6IFVzZSBkeWFuYW1pY19jZl9jYXN0LgorICAgICAgICAoV2ViQ29yZTo6SW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0N1ZUF0dHJpYnV0ZXMpOiBEaXR0by4KKyAg
ICAgICAgQWxzbyByZW1vdmVkIHVubmVjZXNzYXJ5IHR5cGUgY2FzdHMgd2hlbiBjb21wYXJpbmcg
d2l0aCBrQ0ZCb29sZWFuVHJ1ZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW06CisgICAgICAgIFVzZSBk
eW5hbWljX2NmX2Nhc3QuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENh
Y2hlQ29yZVRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpzeXN0ZW1Gb250
RmFtaWxpZXMpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OmlzVXNlckluc3RhbGxlZEZvbnQp
OiBVc2Uga0NGQm9vbGVhblRydWUuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
SEVWQ1V0aWxpdGllc0NvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6dmFsaWRhdGVIRVZDUGFy
YW1ldGVycyk6IFVzZSBkeW5hbWljX2NmX2Nhc3QgYW5kIGtDRkJvb2xlYW5UcnVlLgorICAgICAg
ICAoV2ViQ29yZTo6dmFsaWRhdGVEb1ZpUGFyYW1ldGVycyk6IERpdHRvLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uOjpzaG91bGREZWNv
ZGVTYW1wbGUpOgorICAgICAgICBVc2Uga0NGQm9vbGVhbkZhbHNlLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY29yZXRleHQvRm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZvbnRQbGF0Zm9ybURhdGE6Om9iamVjdEZvckVxdWFsaXR5Q2hlY2sp
OiBVc2UgYXV0by4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29u
dGV4dEdMQ1ZBTkdMRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cmFuc2ZlckZ1bmN0aW9uRnJv
bVN0cmluZyk6IFJlbW92ZWQgdHlwZSBjaGVjaywgd2hpY2ggY2FsbGVyCisgICAgICAgIHNob3Vs
ZCBkbyBzaW5jZSB0aGUgYWd1bWVudCB0eXBlIGlzIENGU3RyaW5nUmVmLgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOjpjb3B5UGl4ZWxCdWZmZXJUb1RleHR1cmUp
OiBVc2UKKyAgICAgICAgZHluYW1pY19jZl9jYXN0IGluc3RlYWQgb2YgYW4gdW5jaGVja2VkIHN0
YXRpY19jYXN0LgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbToKKyAg
ICAgICAgKFdlYkNvcmU6OmRldmljZU5hbWVGb3JVc2VyQWdlbnQpOiBJbXByb3ZlZCBlZmZpY2ll
bmN5IGJ5IHJldHVybmluZworICAgICAgICBhIFN0cmluZ1ZpZXcgaW5zdGVhZCBvZiBhIFN0cmlu
Zywgbm8gbmVlZCB0byBjcmVhdGUgYW5kIGRlc3Ryb3kgYSBzdHJpbmcKKyAgICAgICAgb3IgY2h1
cm4gdGhlIHJlZmVyZW5jZSBjb3VudCBlYWNoIHRpbWUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQu
CisgICAgICAgIChXZWJDb3JlOjpzdGFuZGFyZFVzZXJBZ2VudFdpdGhBcHBsaWNhdGlvbk5hbWUp
OiBJbXByb3ZlZCBlZmZpY2llbmN5CisgICAgICAgIGJ5IHVzaW5nIGEgYmV0dGVyIGlkaW9tIGZv
ciB0aGUgc3BhY2UgYmVmb3JlIHRoZSBhcHBsaWNhdGlvbiBuYW1lLgorICAgICAgICBVc2UgZHlu
YW1pY19jZl9jYXN0LgorCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dpbmRv
d0Rpc3BsYXlDYXB0dXJlck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OmFueU9mQ0dXaW5kb3cp
OiBVc2Uga0NGQm9vbGVhbkZhbHNlLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Q
cm94eVNlcnZlckNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnByb2Nlc3NQcm94eVNlcnZl
cnMpOiBVc2UgZHluYW1pY19jZl9jYXN0LgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHA6IE1vdmUKKyAgICAgICAgV1RGX0RFQ0xBUkVfQ0Zf
VFlQRV9UUkFJVCBmb3IgQ0ZVUkxSZWYgb3V0IG9mIGhlcmUuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjaG9vc2VQcm94eUZyb21BcnJheSk6IERp
dHRvLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9pb3MvV2ViQ29yZVVSTFJlc3BvbnNl
SU9TLmg6IFR3ZWFrZWQgYSBiaXQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2lvcy9X
ZWJDb3JlVVJMUmVzcG9uc2VJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVFeHRlbnNp
b25Ub01JTUVUeXBlTWFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmFkanVzdE1JTUVU
eXBlSWZOZWNlc3NhcnkpOiBTaW1wbGlmaWVkIHRoZSBjb2RlIHRoYXQgbWFwcyAiLm1qcyIKKyAg
ICAgICAgdG8gInRleHQvamF2YXNjcmlwdCIgdG8gbWFrZSBpdCBtdWNoIG1vcmUgZWZmaWNpZW50
IGFuZCBub3QgdXNlIGEgZGljdGlvbmFyeS4KKyAgICAgICAgUmVmYWN0b3JlZCB0byBzaGFyZSBj
b2RlIHdpdGggdGhlIE1hYywgdmlhIHRoZSBXZWJDb3JlVVJMUmVzcG9uc2UuaC9tbQorICAgICAg
ICBmaWxlcywgd2hpY2ggYXJlIG5vdCBtYWNPUy1zcGVjaWZpYyBldmVuIHRob3VnaCB0aGV5IGFy
ZSBpbiBhIGRpcmVjdG9yeQorICAgICAgICBuYW1lZCAibWFjIi4gRml4ZWQgb25lIHBsYWNlIHdo
ZXJlIHdlIGRpZCBhZG9wdENGIHdoZXJlIGl0IHNob3VsZCBiZSBhZG9wdE5TLgorICAgICAgICBV
c2UgQ0ZTVFIoImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIpIGRpcmVjdGx5IGluc3RlYWQgb2Yg
dXNpbmcKKyAgICAgICAgV2ViQ29yZTo6ZGVmYXVsdE1JTUVUeXBlKCkuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL21hYy9OZXR3b3JrU3RhdGVOb3RpZmllck1hYy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpOZXR3b3JrU3RhdGVOb3RpZmllcjo6dXBkYXRlU3RhdGVXaXRob3V0Tm90aWZ5
aW5nKTogVXNlCisgICAgICAgIGR5bmFtaWNfY2ZfY2FzdC4KKworICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5oOiBSZW5hbWVkIE1JTUVUeXBlRnJvbVVUSVRyZWUK
KyAgICAgICAgdG8gbWltZVR5cGVGcm9tVVRJVHJlZSB0byBtYWtlIHRoZSBzdHlsZSByb2JvdCBo
YXBweS4gQ2hhbmdlZCB0aGUKKyAgICAgICAgYXJndW1lbnQgYW5kIHJldHVybiB0eXBlIHRvIENG
U3RyaW5nUmVmIHNpbmNlIHRoYXQncyB3aGF0IHRoZSBjYWxsZXJzCisgICAgICAgIGFsbCB3YW50
LCBhbmQgd2hhdCB0aGUgaW1wbGVtZW50YXRpb24gdXNlcywgYW5kIHRoZXJlIGlzIG5vIHJlYXNv
biB0bworICAgICAgICBjb252ZXJ0IGJhY2sgYW5kIGZvcnRoIHRvIFdURjo6U3RyaW5nLgorCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLm1tOgorICAgICAgICAo
V2ViQ29yZTo6bWltZVR5cGVGcm9tVVRJVHJlZSk6IFVzZSBudWxscHRyLCBub3QgZW1wdHlTdHJp
bmcoKSwgZm9yIHRoZQorICAgICAgICB2YWx1ZSB3aGVuIHRoZXJlIGlzIG5vIE1JTUUgdHlwZSBm
b3VuZC4gVXNlIGF1dG8uIFVzZSBkeW5hbWljX2NmX2Nhc3QuCisgICAgICAgIE1ha2UgcmVjdXJz
aW9uIG1vcmUgZWZmaWNpZW50IHNpbmNlIHdlIGRvbid0IGtlZXAgY29udmVydGluZyBiYWNrIGFu
ZAorICAgICAgICBmb3J0aCBiZXR3ZWVuIENGU3RyaW5nUmVmIGFuZCBXVEY6OlN0cmluZy4KKyAg
ICAgICAgKFdlYkNvcmU6OlVUSUZyb21UYWcpOiBSZW1vdmVkIHVubmVlZGVkIGV4cGxpY2l0IGNv
bnZlcnN0aW9uIHRvIFdURjo6U3RyaW5nLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9t
YWMvV2ViQ29yZVVSTFJlc3BvbnNlLmg6IEFkZGVkIGhlbHBlciBmdW5jdGlvbnMKKyAgICAgICAg
dG8gdGhlIGhlYWRlciwgc2hhcmVkIGJ5IFdlYkNvcmVVUkxSZXNwb25zZS5tbSBhbmQgV2ViQ29y
ZVVSTFJlc3BvbnNlSU9TLm1tLgorICAgICAgICBVc2UgQ0ZTVFIoImFwcGxpY2F0aW9uL29jdGV0
LXN0cmVhbSIpIGRpcmVjdGx5IGluc3RlYWQgb2YgdXNpbmcKKyAgICAgICAgV2ViQ29yZTo6ZGVm
YXVsdE1JTUVUeXBlKCkuNgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVV
UkxSZXNwb25zZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUV4dGVuc2lvblRvTUlNRVR5
cGVNYXApOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6YWRqdXN0TUlNRVR5cGVJZk5lY2Vz
c2FyeSk6IFJlZmFjdG9yZWQgdG8gdXNlIGEgU29ydGVkQXJyYXlNYXAKKyAgICAgICAgaW5zdGVh
ZCBvZiBhIENGRGljdGlvbmFyeSwgZWxpbWluYXRpbmcgdmFyaW91cyB0eXBlIGNhc3RzIGFuZCBj
b252ZXJzaW9ucy4KKyAgICAgICAgUmVmYWN0b3JlZCB0byB1c2UgdGhlIG5ldyBmdW5jdGlvbnMg
YmVsb3cuIFVzZSBtYWtlTmV2ZXJEZXN0cm95ZWQgdG8KKyAgICAgICAgaW5zdGVhZCBvZiBSZXRh
aW5QdHI6OmxlYWtSZWYuIFJlbW92ZWQgdW5uZWNlc3NhcnkgY2hlY2sgZm9yIGVxdWFsaXR5Cisg
ICAgICAgIHNpbmNlIHRoaXMgZnVuY3Rpb24gb25seSBkb2VzIHdvcmsgd2hlbiBDRlVSTFJlc3Bv
bnNlR2V0TUlNRVR5cGUgaXMgbnVsbHB0ci4KKyAgICAgICAgKFdlYkNvcmU6OmZpbGVQYXRoRXh0
ZW5zaW9uKTogQWRkZWQuIFJlZmFjdG9yZWQgdGhlIGNvZGUgdG8gZ2V0IGEgcGF0aCBleHRlbnNp
b24KKyAgICAgICAgZnJvbSBhIENGVVJMUmVzcG9uc2VSZWYgaW50byBhIGZ1bmN0aW9uIHNpbmNl
IGl0J3MgdXNlZCBpbiB0d28gcGxhY2VzLgorICAgICAgICAoV2ViQ29yZTo6cHJlZmVycmVkTUlN
RVR5cGVGb3JGaWxlRXh0ZW5zaW9uRnJvbVVUVHlwZSk6IEFkZGVkLiBSZWZhY3RvcmVkCisgICAg
ICAgIHRoaXMgbG9naWNhbCBvcGVyYXRpb24sIG1hcHBpbmcgYSBmaWxlIGV4dGVuc2lvbiB0byBh
IE1JTUUgdHlwZSwgaW50byBhIGZ1bmN0aW9uLgorICAgICAgICBUaGlzIGlzIHVzZWQgaW4gdHdv
IHBsYWNlcy4gQWxzbyBwdXRzIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0JFR0lOL0VO
RAorICAgICAgICBwYWlyIGludG8gYSBzaW5nbGUgcGxhY2UsIGFuZCB0aGlzIGlzIHdoZXJlIHdl
J2xsIHN3aXRjaCB0byB1c2UgbmV3ZXIgVVRUeXBlCisgICAgICAgIG1hY2hpbmVyeSBsYXRlciBv
bi4KKworICAgICAgICAqIHRlc3RpbmcvY29jb2EvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lm1tOgor
ICAgICAgICAoV2ViQ29yZVRlc3RTdXBwb3J0Ojpjb252ZXJ0V2ViUmVzb3VyY2VSZXNwb25zZVRv
RGljdGlvbmFyeSk6IFVzZSBhdXRvIGFuZAorICAgICAgICBkeW5hbWljX2NmX2Nhc3QuCisKIDIw
MjEtMDgtMjYgIEFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JF
U1NJT04ocjI3NTc1NCk6IFVzaW5nIE1hcmtPbmx5VGhpcyB0byBtYWtlIHRoZSBwcmVmZXJyZWQg
d2lkdGggZGlydHkgaW50cm9kdWNlcyB1bmV4cGVjdGVkIHN0YXRlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwpp
bmRleCBjMjMxNTRhNGZhOTQyZGVlYzAyMmVlMTk0NjM1Yjc4ZDNlYmEwNzYyLi4wOGEzMDRhOWQz
ZDY5MDQ2NzA1OWVlM2U1NmY0MjgwOTE2ODRmYWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9QQUwvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAyMS0wOC0yNiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgQ3V0IGRvd24gb24gdXNlIG9mIENGR2V0VHlwZUlELCB1c2luZyBkeW5hbWljX2Nm
X2Nhc3QgaW5zdGVhZDsgcmVsYXRlZCBzdHJlYW1saW5pbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTQxNAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGFsL3N5c3RlbS9tYWMvRGVmYXVsdFNlYXJj
aFByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFBBTDo6ZGVmYXVsdFNlYXJjaFByb3ZpZGVyRGlzcGxh
eU5hbWUpOiBVc2UgZHluYW1pY19jZl9jYXN0IGFuZCByZW1vdmVkIGFuIHVubmVlZGVkIGNhbGwg
dG8KKyAgICAgICAgQ0ZTdHJpbmdDcmVhdGVDb3B5LCBzaW5jZSB0aGUgY2FsbGVycyBkb24ndCBu
ZWVkIGFuIGlzb2xhdGVkIGNvcHkuCisKIDIwMjEtMDgtMjUgIEthdGUgQ2hlbmV5ICA8a2F0aGVy
aW5lX2NoZW5leUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViQ3J5cHRvIHVzZXMgZGVwcmVjYXRl
ZCBDQ0tleURlcml2YXRpb25ITWFjCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGUyMDI4MzRhYjhhZmU5NGJkMWJhMWEz
ZDBmYzk3NmUzNzhlMDBlZWIuLmVmMGU3OTVkZDRlMDhmMDVkNTdhNjM0YmIyN2U3NTc1MGYxYWRj
NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMDgtMjYgIERhcmluIEFkbGVyICA8
ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIEN1dCBkb3duIG9uIHVzZSBvZiBDRkdldFR5cGVJ
RCwgdXNpbmcgZHluYW1pY19jZl9jYXN0IGluc3RlYWQ7IHJlbGF0ZWQgc3RyZWFtbGluaW5nCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk0MTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9Q
bHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1vZHVsZU1hYy5tbToKKyAgICAgICAg
KFdlYktpdDo6Z2V0UGx1Z2luSW5mb0Zyb21Qcm9wZXJ0eUxpc3RzKTogVXNlIGR5bmFtaWNfY2Zf
Y2FzdC4KKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdpbklu
Zm8pOiBEaXR0by4KKwogMjAyMS0wOC0yNiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGQgdHlwZS1zYWZlIHRyYW5zYWN0aW9uIGlkZW50aWZpZXJz
IGZvciBFZGl0b3JTdGF0ZSBhbmQgRm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9jZi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5
L2NmL0NoYW5nZUxvZwppbmRleCBlNzcxMTM2N2JkMDBjM2Q1OWY4YWUwMmNhYWQ2MjZhNWIyOTg4
ZmExLi5kMzg4MjBjODJjMTA2MGE3MWUyM2VkZWE0MmU0MzdlMzFlZDQ4MTVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L2NmL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIxLTA4LTI2ICBEYXJpbiBBZGxl
ciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBDdXQgZG93biBvbiB1c2Ugb2YgQ0ZHZXRU
eXBlSUQsIHVzaW5nIGR5bmFtaWNfY2ZfY2FzdCBpbnN0ZWFkOyByZWxhdGVkIHN0cmVhbWxpbmlu
ZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5NDE0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHA6CisgICAgICAgIChsb2FkU2V0dGlu
Zyk6IFJlbmFtZSBmcm9tIHBvcHVsYXRlU2V0dGluZy4gVXNlIGR5YW5taWNfY2ZfY2FzdCwga0NG
Qm9vbGVhblRydWUsIGFuZAorICAgICAgICBrQ0ZCb29sZWFuRmFsc2UsIGFsc28gY2hhbmdlIHRv
IHJldHVybiB2YWx1ZSBpbnN0ZWFkIG9mIGEgcG9pbnRlci1iYXNlZCBvdXQgYXJndW1lbnQuCisg
ICAgICAgIChXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3RvckF0dGFjaERpc2FibGVkKTogVXBk
YXRlIGZvciBjaGFuZ2UgdG8gbG9hZFNldHRpbmcuCisgICAgICAgIChXZWJJbnNwZWN0b3JDbGll
bnQ6Omluc3BlY3RvclN0YXJ0c0F0dGFjaGVkKTogRGl0dG8uCisgICAgICAgIChXZWJJbnNwZWN0
b3JDbGllbnQ6OmNyZWF0ZUZyb250ZW5kU2V0dGluZ3MpOiBEaXR0by4gQWxzbyB1c2UgZmluYWwg
aW5zdGVhZCBvZiB2aXJ0dWFsLgorCiAyMDIwLTEwLTMwICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBw
bGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IG1vdmUgSW5zcGVjdG9yRnJvbnRlbmRB
UElEaXNwYXRjaGVyIHRvIFdlYkNvcmUsIGNsZWFuIHVwIHVzZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0No
YW5nZUxvZwppbmRleCA0NWE1NDg2ZTA1ODA1ZDk3YmMxZTQ4YjQ0ZjkzZGEzMDMyOGE2YTFkLi40
MTRmMmY4YWFiMjFkOGEzNjBkZTI0NzE0ZGI0ODBhYWVmZGUyZGQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMDgtMjYgIERhcmluIEFkbGVyICA8
ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIEN1dCBkb3duIG9uIHVzZSBvZiBDRkdldFR5cGVJ
RCwgdXNpbmcgZHluYW1pY19jZl9jYXN0IGluc3RlYWQ7IHJlbGF0ZWQgc3RyZWFtbGluaW5nCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk0MTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsdWdpbnMv
V2ViQmFzZVBsdWdpblBhY2thZ2UubW06CisgICAgICAgICgtW1dlYkJhc2VQbHVnaW5QYWNrYWdl
IGJ1bmRsZVZlcnNpb25dKTogVXNlIGR5bmFtaWNfY2ZfY2FzdC4KKwogMjAyMS0wOC0yNCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtXSzJdIEltcGxlbWVudCBw
cm9jZXNzLXN3YXBwaW5nIGJhc2VkIG9uIENyb3NzLU9yaWdpbi1PcGVuZXItUG9saWN5IEhUVFAg
aGVhZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90
ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUENDb25uZWN0aW9uLm1tIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9yZW1vdGUvY29jb2EvUmVtb3RlSW5zcGVjdG9yWFBDQ29ubmVjdGlv
bi5tbQppbmRleCA0M2RmMjcwYWM4MjJmNGJmOWNkNjVkOWQ1MDBmODczZTJhYjFhZDNkLi4yNjU4
NTVmZjdhMjc0MmUwMWM2MjE3NWU4MDA2NWVhZjEwY2JhNGNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3JlbW90ZS9jb2NvYS9SZW1vdGVJbnNwZWN0b3JYUEND
b25uZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcmVtb3Rl
L2NvY29hL1JlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb24ubW0KQEAgLTM0LDYgKzM0LDcgQEAK
ICNpbXBvcnQgPHd0Zi9Mb2NrLmg+CiAjaW1wb3J0IDx3dGYvUmVmLmg+CiAjaW1wb3J0IDx3dGYv
UmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4KICNpbXBvcnQgPHd0
Zi9jb2NvYS9FbnRpdGxlbWVudHMuaD4KICNpbXBvcnQgPHd0Zi9zcGkvY29jb2EvQ0ZYUENCcmlk
Z2VTUEkuaD4KICNpbXBvcnQgPHd0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEkuaD4KQEAgLTExMCw5
ICsxMTEsOCBAQCBOU0RpY3Rpb25hcnkgKlJlbW90ZUluc3BlY3RvclhQQ0Nvbm5lY3Rpb246OmRl
c2VyaWFsaXplTWVzc2FnZSh4cGNfb2JqZWN0X3Qgb2JqZQogICAgICAgICByZXR1cm4gbmlsOwog
ICAgIH0KIAotICAgIGF1dG8gZGljdGlvbmFyeSA9IGFkb3B0Q0YoX0NGWFBDQ3JlYXRlQ0ZPYmpl
Y3RGcm9tWFBDTWVzc2FnZSh4cGNEaWN0aW9uYXJ5KSk7CisgICAgYXV0byBkaWN0aW9uYXJ5ID0g
ZHluYW1pY19jZl9jYXN0PENGRGljdGlvbmFyeVJlZj4oYWRvcHRDRihfQ0ZYUENDcmVhdGVDRk9i
amVjdEZyb21YUENNZXNzYWdlKHhwY0RpY3Rpb25hcnkpKSk7CiAgICAgQVNTRVJUX1dJVEhfTUVT
U0FHRShkaWN0aW9uYXJ5LCAiVW5hYmxlIHRvIGRlc2VyaWFsaXplIHhwYyBtZXNzYWdlIik7Ci0g
ICAgQVNTRVJUKENGR2V0VHlwZUlEKGRpY3Rpb25hcnkuZ2V0KCkpID09IENGRGljdGlvbmFyeUdl
dFR5cGVJRCgpKTsKICAgICByZXR1cm4gZGljdGlvbmFyeS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL2NmL1R5cGVDYXN0c0NGLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi9jZi9UeXBlQ2FzdHNDRi5oCmluZGV4IGUwOTIwZjZjNDZjMDIxZmE2M2JmNmQ5
NjBjNWM3MWU4ZTI2OGNhYzUuLjgzNmY1NzAwMmQ1NWZjODkxNGNkOTljZGM3NWE2MTQzZDc1ZGZh
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2NmL1R5cGVDYXN0c0NGLmgKKysrIGIvU291
cmNlL1dURi93dGYvY2YvVHlwZUNhc3RzQ0YuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTQtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTQtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ4LDYgKzQ4LDcgQEAgV1RGX0RFQ0xB
UkVfQ0ZfVFlQRV9UUkFJVChDRkRhdGEpOwogV1RGX0RFQ0xBUkVfQ0ZfVFlQRV9UUkFJVChDRkRp
Y3Rpb25hcnkpOwogV1RGX0RFQ0xBUkVfQ0ZfVFlQRV9UUkFJVChDRk51bWJlcik7CiBXVEZfREVD
TEFSRV9DRl9UWVBFX1RSQUlUKENGU3RyaW5nKTsKK1dURl9ERUNMQVJFX0NGX1RZUEVfVFJBSVQo
Q0ZVUkwpOwogCiAjZGVmaW5lIFdURl9ERUNMQVJFX0NGX01VVEFCTEVfVFlQRV9UUkFJVChDbGFz
c05hbWUsIE11dGFibGVDbGFzc05hbWUpIFwKIHRlbXBsYXRlIDw+IFwKQEAgLTYyLDggKzYzLDkg
QEAgV1RGX0RFQ0xBUkVfQ0ZfTVVUQUJMRV9UWVBFX1RSQUlUKENGU3RyaW5nLCBDRk11dGFibGVT
dHJpbmcpOwogCiAjdW5kZWYgV1RGX0RFQ0xBUkVfQ0ZfTVVUQUJMRV9UWVBFX1RSQUlUCiAKLS8v
IFVzZSB0aGlzIGluc3RlYWQgb2YgY2hlY2tlZF9jZl9jYXN0PD4gd2hlbiBhY3RpdmVseSBjaGVj
a2luZyBDRiB0eXBlcywKKy8vIFVzZSBkeW5hbWljX2NmX2Nhc3Q8PiBpbnN0ZWFkIG9mIGNoZWNr
ZWRfY2ZfY2FzdDw+IHdoZW4gYWN0aXZlbHkgY2hlY2tpbmcgQ0YgdHlwZXMsCiAvLyBzaW1pbGFy
IHRvIGR5bmFtaWNfY2FzdDw+IGluIEMrKy4gQmUgc3VyZSB0byBpbmNsdWRlIGEgbnVsbHB0ciBj
aGVjay4KKwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBkeW5hbWljX2NmX2Nhc3QoQ0ZUeXBlUmVm
IG9iamVjdCkKIHsKICAgICBpZiAoIW9iamVjdCkKQEAgLTc1LDcgKzc3LDE5IEBAIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+IFQgZHluYW1pY19jZl9jYXN0KENGVHlwZVJlZiBvYmplY3QpCiAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PFQ+KGNvbnN0X2Nhc3Q8Q0ZfQlJJREdFRF9UWVBFKGlkKSB2b2lkKj4o
b2JqZWN0KSk7CiB9CiAKLS8vIFVzZSB0aGlzIGluc3RlYWQgb2YgZHluYW1pY19jZl9jYXN0PD4g
d2hlbiBhIHNwZWNpZmMgQ0YgdHlwZSBpcyByZXF1aXJlZC4KK3RlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFU+IFJldGFpblB0cjxUPiBkeW5hbWljX2NmX2Nhc3QoUmV0YWluUHRyPFU+JiYg
b2JqZWN0KQoreworICAgIGlmICghb2JqZWN0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIGlmIChDRkdldFR5cGVJRChvYmplY3QuZ2V0KCkpICE9IENGVHlwZVRyYWl0PFQ+Ojp0eXBl
SUQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gYWRvcHRDRihzdGF0
aWNfY2FzdDxUPihjb25zdF9jYXN0PENGX0JSSURHRURfVFlQRShpZCkgdm9pZCo+KG9iamVjdC5s
ZWFrUmVmKCkpKSk7Cit9CisKKy8vIFVzZSBjaGVja2VkX2NmX2Nhc3Q8PiBpbnN0ZWFkIG9mIGR5
bmFtaWNfY2ZfY2FzdDw+IHdoZW4gYSBzcGVjaWZpYyBDRiB0eXBlIGlzIHJlcXVpcmVkLgorCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGNoZWNrZWRfY2ZfY2FzdChDRlR5cGVSZWYgb2JqZWN0KQog
ewogICAgIGlmICghb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY29jb2EvRW50
aXRsZW1lbnRzLm1tIGIvU291cmNlL1dURi93dGYvY29jb2EvRW50aXRsZW1lbnRzLm1tCmluZGV4
IGMzOTQ3YTgxNjMwMDNlODVmOTlmYjY2ZjgwNDk3MDg5MWVkOTMxODQuLjlkOTQ2YWQwZGYxMGM4
YzZjODkxMmVhOTM2MTY1Y2Y4ZmU1MTU0OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2Nv
Y29hL0VudGl0bGVtZW50cy5tbQorKysgYi9Tb3VyY2UvV1RGL3d0Zi9jb2NvYS9FbnRpdGxlbWVu
dHMubW0KQEAgLTM5LDggKzM5LDcgQEAgc3RhdGljIGJvb2wgaGFzRW50aXRsZW1lbnQoU2VjVGFz
a1JlZiB0YXNrLCBjb25zdCBjaGFyKiBlbnRpdGxlbWVudCkKICAgICBpZiAoIXRhc2spCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICBhdXRvIHN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVh
dGVXaXRoQ1N0cmluZ05vQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBlbnRpdGxlbWVudCwga0NG
U3RyaW5nRW5jb2RpbmdBU0NJSSwga0NGQWxsb2NhdG9yTnVsbCkpOwotICAgIGF1dG8gdmFsdWUg
PSBhZG9wdENGKFNlY1Rhc2tDb3B5VmFsdWVGb3JFbnRpdGxlbWVudCh0YXNrLCBzdHJpbmcuZ2V0
KCksIG51bGxwdHIpKTsKLSAgICByZXR1cm4gdmFsdWUgJiYgQ0ZHZXRUeXBlSUQodmFsdWUuZ2V0
KCkpID09IENGQm9vbGVhbkdldFR5cGVJRCgpICYmIENGQm9vbGVhbkdldFZhbHVlKHN0YXRpY19j
YXN0PENGQm9vbGVhblJlZj4odmFsdWUuZ2V0KCkpKTsKKyAgICByZXR1cm4gYWRvcHRDRihTZWNU
YXNrQ29weVZhbHVlRm9yRW50aXRsZW1lbnQodGFzaywgc3RyaW5nLmdldCgpLCBudWxscHRyKSkg
PT0ga0NGQm9vbGVhblRydWU7CiB9CiAKIGJvb2wgaGFzRW50aXRsZW1lbnQoYXVkaXRfdG9rZW5f
dCB0b2tlbiwgY29uc3QgY2hhciogZW50aXRsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L2NvY29hL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VDb2NvYS5jcHAgYi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L2NvY29hL1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1VDb2Nv
YS5jcHAKaW5kZXggYTQwMDlhZDlkY2VkZjZlNmJiNGQwNmNhZmI3NGQwZmQ3ZTA2ZTU0Mi4uMjVk
MDZiMmE1OTRkM2MwMmQzOGMzZjk5YjRmZDgxNTdmMzEwYTA1MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdGV4dC9jb2NvYS9UZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVQ29jb2EuY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvY29jb2EvVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5h
bElDVUNvY29hLmNwcApAQCAtMjMsNiArMjMsNyBAQAogCiAjaW5jbHVkZSA8YXJyYXk+CiAjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRCcmVha0l0ZXJhdG9yLmg+CiAKIG5hbWVzcGFjZSBXVEYg
ewpAQCAtNTEsMTEgKzUyLDggQEAgVGV4dEJyZWFrSXRlcmF0b3I6OlRleHRCcmVha0l0ZXJhdG9y
KFN0cmluZ1ZpZXcgc3RyaW5nLCBNb2RlIG1vZGUsIGNvbnN0IEF0b21TdHIKIAogc3RhdGljIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gdGV4dEJyZWFrTG9jYWxlUHJlZmVyZW5jZSgpCiB7Ci0gICAg
YXV0byBsb2NhbGUgPSBhZG9wdENGKENGUHJlZmVyZW5jZXNDb3B5VmFsdWUoQ0ZTVFIoIkFwcGxl
VGV4dEJyZWFrTG9jYWxlIiksCi0gICAgICAgIGtDRlByZWZlcmVuY2VzQW55QXBwbGljYXRpb24s
IGtDRlByZWZlcmVuY2VzQ3VycmVudFVzZXIsIGtDRlByZWZlcmVuY2VzQW55SG9zdCkpOwotICAg
IGlmICghbG9jYWxlIHx8IENGR2V0VHlwZUlEKGxvY2FsZS5nZXQoKSkgIT0gQ0ZTdHJpbmdHZXRU
eXBlSUQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0
PENGU3RyaW5nUmVmPihsb2NhbGUuZ2V0KCkpOworICAgIHJldHVybiBkeW5hbWljX2NmX2Nhc3Q8
Q0ZTdHJpbmdSZWY+KGFkb3B0Q0YoQ0ZQcmVmZXJlbmNlc0NvcHlWYWx1ZShDRlNUUigiQXBwbGVU
ZXh0QnJlYWtMb2NhbGUiKSwKKyAgICAgICAga0NGUHJlZmVyZW5jZXNBbnlBcHBsaWNhdGlvbiwg
a0NGUHJlZmVyZW5jZXNDdXJyZW50VXNlciwga0NGUHJlZmVyZW5jZXNBbnlIb3N0KSkpOwogfQog
CiBzdGF0aWMgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB0b3BMYW5ndWFnZVByZWZlcmVuY2UoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zeXN0ZW0vbWFjL0RlZmF1bHRTZWFy
Y2hQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9tYWMvRGVmYXVs
dFNlYXJjaFByb3ZpZGVyLmNwcAppbmRleCA5NTE2ZDZhYmJiYjM1YWU4N2MyZDllYWJhMTY5Yzcy
NGI1ZDNkZTZlLi4zNmU4ODViNGZkMzk0NDI0YzQ2YjBjMTEwZDc4ZDhmZjQyOWY1ODEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9tYWMvRGVmYXVsdFNlYXJjaFBy
b3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3N5c3RlbS9tYWMvRGVmYXVs
dFNlYXJjaFByb3ZpZGVyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQ0ZVdGls
aXRpZXNTUEkuaCIKICNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgor
I2luY2x1ZGUgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgogCiBuYW1lc3BhY2UgUEFMIHsKIApAQCAt
MzksMTIgKzQwLDExIEBAIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZGVmYXVsdFNlYXJjaFByb3Zp
ZGVyRGlzcGxheU5hbWUoKQogICAgIGlmICghcHJvdmlkZXJJbmZvKQogICAgICAgICByZXR1cm4g
Q0ZTVFIoIkdvb2dsZSIpOwogCi0gICAgQ0ZUeXBlUmVmIGRpc3BsYXlOYW1lID0gQ0ZEaWN0aW9u
YXJ5R2V0VmFsdWUocHJvdmlkZXJJbmZvLmdldCgpLCBrQ0ZXZWJTZXJ2aWNlc1Byb3ZpZGVyRGVm
YXVsdERpc3BsYXlOYW1lS2V5KTsKKyAgICBhdXRvIGRpc3BsYXlOYW1lID0gZHluYW1pY19jZl9j
YXN0PENGU3RyaW5nUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm92aWRlckluZm8uZ2V0KCks
IGtDRldlYlNlcnZpY2VzUHJvdmlkZXJEZWZhdWx0RGlzcGxheU5hbWVLZXkpKTsKICAgICBpZiAo
IWRpc3BsYXlOYW1lKQogICAgICAgICByZXR1cm4gQ0ZTVFIoIkdvb2dsZSIpOwogCi0gICAgQVNT
RVJUKENGR2V0VHlwZUlEKGRpc3BsYXlOYW1lKSA9PSBDRlN0cmluZ0dldFR5cGVJRCgpKTsKLSAg
ICByZXR1cm4gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
KENGU3RyaW5nUmVmKWRpc3BsYXlOYW1lKSk7CisgICAgcmV0dXJuIGRpc3BsYXlOYW1lOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBQQUwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRUZXh0VHJh
Y2tQcml2YXRlQVZGLmNwcAppbmRleCBhMzYxNDBhZDQxZGQ5MGRkN2U1NGZhYTlmZTU5ZjJjOTM5
NzJhNjVhLi44NGUwODZhMTg0YmFjZTRmZDI5MWVmM2E1OTAzMjcyNjAzODcwOTA3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuY3BwCkBAIC0zNiwx
NCArMzYsMTYgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9EYXRhVmlldy5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0ludDhBcnJheS5oPgogI2luY2x1ZGUgPHBhbC9hdmZvdW5kYXRp
b24vTWVkaWFUaW1lQVZGb3VuZGF0aW9uLmg+Ci0jaW5jbHVkZSA8cGFsL2NmL0NvcmVNZWRpYVNv
ZnRMaW5rLmg+CiAjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9TdHJp
bmdQcmludFN0cmVhbS5oPgorI2luY2x1ZGUgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNv
ZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIAorI2luY2x1ZGUgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGlu
ay5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEFWRkluYmFuZFRyYWNrUGFyZW50Ojp+QVZG
SW5iYW5kVHJhY2tQYXJlbnQoKSA9IGRlZmF1bHQ7CkBAIC03MSw4ICs3Myw4IEBAIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPFNSR0JBPHVpbnQ4X3Q+PiBtYWtlU2ltcGxlQ29sb3JGcm9tQVJHQkNGQXJy
YXkoQ0ZBcnJheVJlZiBjCiAKICAgICBmbG9hdCBjb21wb25lbnRBcnJheVs0XTsKICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IDQ7IGkrKykgewotICAgICAgICBDRk51bWJlclJlZiB2YWx1ZSA9IHN0
YXRpY19jYXN0PENGTnVtYmVyUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGNvbG9yQXJyYXks
IGkpKTsKLSAgICAgICAgaWYgKENGR2V0VHlwZUlEKHZhbHVlKSAhPSBDRk51bWJlckdldFR5cGVJ
RCgpKQorICAgICAgICBhdXRvIHZhbHVlID0gZHluYW1pY19jZl9jYXN0PENGTnVtYmVyUmVmPihD
RkFycmF5R2V0VmFsdWVBdEluZGV4KGNvbG9yQXJyYXksIGkpKTsKKyAgICAgICAgaWYgKCF2YWx1
ZSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAgICAgZmxvYXQgY29t
cG9uZW50OwpAQCAtMTA1LDcgKzEwNyw2IEBAIFJlZjxJbmJhbmRHZW5lcmljQ3VlPiBJbmJhbmRU
ZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNzQ3VlQXR0cmlidXRlcyhDRkF0dHJpYnV0CiAgICAg
aWYgKCFsZW5ndGgpCiAgICAgICAgIHJldHVybiBjdWVEYXRhOwogCi0KICAgICBDRlJhbmdlIGVm
ZmVjdGl2ZVJhbmdlID0gQ0ZSYW5nZU1ha2UoMCwgMCk7CiAgICAgd2hpbGUgKChlZmZlY3RpdmVS
YW5nZS5sb2NhdGlvbiArIGVmZmVjdGl2ZVJhbmdlLmxlbmd0aCkgPCBsZW5ndGgpIHsKIApAQCAt
MTE0LDcgKzExNSw2IEBAIFJlZjxJbmJhbmRHZW5lcmljQ3VlPiBJbmJhbmRUZXh0VHJhY2tQcml2
YXRlQVZGOjpwcm9jZXNzQ3VlQXR0cmlidXRlcyhDRkF0dHJpYnV0CiAgICAgICAgICAgICBjb250
aW51ZTsKIAogICAgICAgICBTdHJpbmdCdWlsZGVyIHRhZ1N0YXJ0OwotICAgICAgICBDRlN0cmlu
Z1JlZiB2YWx1ZVN0cmluZzsKICAgICAgICAgU3RyaW5nIHRhZ0VuZDsKICAgICAgICAgQ0ZJbmRl
eCBhdHRyaWJ1dGVDb3VudCA9IENGRGljdGlvbmFyeUdldENvdW50KGF0dHJpYnV0ZXMpOwogICAg
ICAgICBWZWN0b3I8Y29uc3Qgdm9pZCo+IGtleXMoYXR0cmlidXRlQ291bnQpOwpAQCAtMTIyLDE0
ICsxMjIsMTQgQEAgUmVmPEluYmFuZEdlbmVyaWNDdWU+IEluYmFuZFRleHRUcmFja1ByaXZhdGVB
VkY6OnByb2Nlc3NDdWVBdHRyaWJ1dGVzKENGQXR0cmlidXQKICAgICAgICAgQ0ZEaWN0aW9uYXJ5
R2V0S2V5c0FuZFZhbHVlcyhhdHRyaWJ1dGVzLCBrZXlzLmRhdGEoKSwgdmFsdWVzLmRhdGEoKSk7
CiAKICAgICAgICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwgYXR0cmlidXRlQ291bnQ7ICsraSkg
ewotICAgICAgICAgICAgQ0ZTdHJpbmdSZWYga2V5ID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+
KGtleXNbaV0pOworICAgICAgICAgICAgYXV0byBrZXkgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZTdHJp
bmdSZWY+KGtleXNbaV0pOwogICAgICAgICAgICAgQ0ZUeXBlUmVmIHZhbHVlID0gdmFsdWVzW2ld
OwotICAgICAgICAgICAgaWYgKENGR2V0VHlwZUlEKGtleSkgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQo
KSB8fCAhQ0ZTdHJpbmdHZXRMZW5ndGgoa2V5KSkKKyAgICAgICAgICAgIGlmICgha2V5IHx8ICFD
RlN0cmluZ0dldExlbmd0aChrZXkpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAg
ICAgICAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKGtleSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9B
bGlnbm1lbnQsIDApID09IGtDRkNvbXBhcmVFcXVhbFRvKSB7Ci0gICAgICAgICAgICAgICAgdmFs
dWVTdHJpbmcgPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4odmFsdWUpOwotICAgICAgICAgICAg
ICAgIGlmIChDRkdldFR5cGVJRCh2YWx1ZVN0cmluZykgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSB8
fCAhQ0ZTdHJpbmdHZXRMZW5ndGgodmFsdWVTdHJpbmcpKQorICAgICAgICAgICAgICAgIGF1dG8g
dmFsdWVTdHJpbmcgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZTdHJpbmdSZWY+KHZhbHVlKTsKKyAgICAg
ICAgICAgICAgICBpZiAoIXZhbHVlU3RyaW5nIHx8ICFDRlN0cmluZ0dldExlbmd0aCh2YWx1ZVN0
cmluZykpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGlm
IChwcm9jZXNzZWQgJiBBbGlnbikKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0x
NDgsNyArMTQ4LDcgQEAgUmVmPEluYmFuZEdlbmVyaWNDdWU+IEluYmFuZFRleHRUcmFja1ByaXZh
dGVBVkY6OnByb2Nlc3NDdWVBdHRyaWJ1dGVzKENGQXR0cmlidXQKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgaWYgKENGU3RyaW5nQ29tcGFyZShrZXksIGtDTVRleHRNYXJrdXBBdHRyaWJ1
dGVfQm9sZFN0eWxlLCAwKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykgewotICAgICAgICAgICAgICAg
IGlmIChzdGF0aWNfY2FzdDxDRkJvb2xlYW5SZWY+KHZhbHVlKSAhPSBrQ0ZCb29sZWFuVHJ1ZSkK
KyAgICAgICAgICAgICAgICBpZiAodmFsdWUgIT0ga0NGQm9vbGVhblRydWUpCiAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICAgICAgdGFnU3RhcnQuYXBwZW5kKCI8
Yj4iKTsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBSZWY8SW5iYW5kR2VuZXJpY0N1ZT4gSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0N1ZUF0dHJpYnV0ZXMoQ0ZBdHRyaWJ1dAogICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICBpZiAoQ0ZTdHJpbmdDb21wYXJlKGtleSwga0NNVGV4dE1h
cmt1cEF0dHJpYnV0ZV9JdGFsaWNTdHlsZSwgMCkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pIHsKLSAg
ICAgICAgICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8Q0ZCb29sZWFuUmVmPih2YWx1ZSkgIT0ga0NG
Qm9vbGVhblRydWUpCisgICAgICAgICAgICAgICAgaWYgKHZhbHVlICE9IGtDRkJvb2xlYW5UcnVl
KQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgICAgIHRhZ1N0
YXJ0LmFwcGVuZCgiPGk+Iik7CkBAIC0xNjYsNyArMTY2LDcgQEAgUmVmPEluYmFuZEdlbmVyaWND
dWU+IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWVBdHRyaWJ1dGVzKENGQXR0
cmlidXQKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKENGU3RyaW5nQ29tcGFyZShr
ZXksIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfVW5kZXJsaW5lU3R5bGUsIDApID09IGtDRkNvbXBh
cmVFcXVhbFRvKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PENGQm9vbGVhblJl
Zj4odmFsdWUpICE9IGtDRkJvb2xlYW5UcnVlKQorICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAh
PSBrQ0ZCb29sZWFuVHJ1ZSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAg
ICAgICAgICAgICB0YWdTdGFydC5hcHBlbmQoIjx1PiIpOwpAQCAtMTc1LDEzICsxNzUsMTMgQEAg
UmVmPEluYmFuZEdlbmVyaWNDdWU+IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3ND
dWVBdHRyaWJ1dGVzKENGQXR0cmlidXQKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYg
KENGU3RyaW5nQ29tcGFyZShrZXksIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfT3J0aG9nb25hbExp
bmVQb3NpdGlvblBlcmNlbnRhZ2VSZWxhdGl2ZVRvV3JpdGluZ0RpcmVjdGlvbiwgMCkgPT0ga0NG
Q29tcGFyZUVxdWFsVG8pIHsKLSAgICAgICAgICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQodmFsdWUp
ICE9IENGTnVtYmVyR2V0VHlwZUlEKCkpCisgICAgICAgICAgICAgICAgYXV0byB2YWx1ZU51bWJl
ciA9IGR5bmFtaWNfY2ZfY2FzdDxDRk51bWJlclJlZj4odmFsdWUpOworICAgICAgICAgICAgICAg
IGlmICghdmFsdWVOdW1iZXIpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgICAgIGlmIChwcm9jZXNzZWQgJiBMaW5lKQogICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgICAgICBwcm9jZXNzZWQgfD0gTGluZTsKIAotICAgICAgICAgICAg
ICAgIENGTnVtYmVyUmVmIHZhbHVlTnVtYmVyID0gc3RhdGljX2Nhc3Q8Q0ZOdW1iZXJSZWY+KHZh
bHVlKTsKICAgICAgICAgICAgICAgICBkb3VibGUgbGluZTsKICAgICAgICAgICAgICAgICBDRk51
bWJlckdldFZhbHVlKHZhbHVlTnVtYmVyLCBrQ0ZOdW1iZXJGbG9hdDY0VHlwZSwgJmxpbmUpOwog
ICAgICAgICAgICAgICAgIGN1ZURhdGEtPnNldExpbmUobGluZSk7CkBAIC0xODksMTMgKzE4OSwx
MyBAQCBSZWY8SW5iYW5kR2VuZXJpY0N1ZT4gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJv
Y2Vzc0N1ZUF0dHJpYnV0ZXMoQ0ZBdHRyaWJ1dAogICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICBpZiAoQ0ZTdHJpbmdDb21wYXJlKGtleSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9UZXh0UG9z
aXRpb25QZXJjZW50YWdlUmVsYXRpdmVUb1dyaXRpbmdEaXJlY3Rpb24sIDApID09IGtDRkNvbXBh
cmVFcXVhbFRvKSB7Ci0gICAgICAgICAgICAgICAgaWYgKENGR2V0VHlwZUlEKHZhbHVlKSAhPSBD
Rk51bWJlckdldFR5cGVJRCgpKQorICAgICAgICAgICAgICAgIGF1dG8gdmFsdWVOdW1iZXIgPSBk
eW5hbWljX2NmX2Nhc3Q8Q0ZOdW1iZXJSZWY+KHZhbHVlKTsKKyAgICAgICAgICAgICAgICBpZiAo
IXZhbHVlTnVtYmVyKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAg
ICAgICBpZiAocHJvY2Vzc2VkICYgUG9zaXRpb24pCiAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgICAgIHByb2Nlc3NlZCB8PSBQb3NpdGlvbjsKIAotICAgICAgICAg
ICAgICAgIENGTnVtYmVyUmVmIHZhbHVlTnVtYmVyID0gc3RhdGljX2Nhc3Q8Q0ZOdW1iZXJSZWY+
KHZhbHVlKTsKICAgICAgICAgICAgICAgICBkb3VibGUgcG9zaXRpb247CiAgICAgICAgICAgICAg
ICAgQ0ZOdW1iZXJHZXRWYWx1ZSh2YWx1ZU51bWJlciwga0NGTnVtYmVyRmxvYXQ2NFR5cGUsICZw
b3NpdGlvbik7CiAgICAgICAgICAgICAgICAgY3VlRGF0YS0+c2V0UG9zaXRpb24ocG9zaXRpb24p
OwpAQCAtMjAzLDEzICsyMDMsMTMgQEAgUmVmPEluYmFuZEdlbmVyaWNDdWU+IEluYmFuZFRleHRU
cmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWVBdHRyaWJ1dGVzKENGQXR0cmlidXQKICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgaWYgKENGU3RyaW5nQ29tcGFyZShrZXksIGtDTVRleHRNYXJr
dXBBdHRyaWJ1dGVfV3JpdGluZ0RpcmVjdGlvblNpemVQZXJjZW50YWdlLCAwKSA9PSBrQ0ZDb21w
YXJlRXF1YWxUbykgewotICAgICAgICAgICAgICAgIGlmIChDRkdldFR5cGVJRCh2YWx1ZSkgIT0g
Q0ZOdW1iZXJHZXRUeXBlSUQoKSkKKyAgICAgICAgICAgICAgICBhdXRvIHZhbHVlTnVtYmVyID0g
ZHluYW1pY19jZl9jYXN0PENGTnVtYmVyUmVmPih2YWx1ZSk7CisgICAgICAgICAgICAgICAgaWYg
KCF2YWx1ZU51bWJlcikKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICAgICAgaWYgKHByb2Nlc3NlZCAmIFNpemUpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgICAgIHByb2Nlc3NlZCB8PSBTaXplOwogCi0gICAgICAgICAgICAgICAg
Q0ZOdW1iZXJSZWYgdmFsdWVOdW1iZXIgPSBzdGF0aWNfY2FzdDxDRk51bWJlclJlZj4odmFsdWUp
OwogICAgICAgICAgICAgICAgIGRvdWJsZSBzaXplOwogICAgICAgICAgICAgICAgIENGTnVtYmVy
R2V0VmFsdWUodmFsdWVOdW1iZXIsIGtDRk51bWJlckZsb2F0NjRUeXBlLCAmc2l6ZSk7CiAgICAg
ICAgICAgICAgICAgY3VlRGF0YS0+c2V0U2l6ZShzaXplKTsKQEAgLTIxNyw4ICsyMTcsOCBAQCBS
ZWY8SW5iYW5kR2VuZXJpY0N1ZT4gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0N1
ZUF0dHJpYnV0ZXMoQ0ZBdHRyaWJ1dAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAo
Q0ZTdHJpbmdDb21wYXJlKGtleSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9WZXJ0aWNhbExheW91
dCwgMCkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pIHsKLSAgICAgICAgICAgICAgICB2YWx1ZVN0cmlu
ZyA9IHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPih2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgaWYg
KENGR2V0VHlwZUlEKHZhbHVlU3RyaW5nKSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpIHx8ICFDRlN0
cmluZ0dldExlbmd0aCh2YWx1ZVN0cmluZykpCisgICAgICAgICAgICAgICAgYXV0byB2YWx1ZVN0
cmluZyA9IGR5bmFtaWNfY2ZfY2FzdDxDRlN0cmluZ1JlZj4odmFsdWUpOworICAgICAgICAgICAg
ICAgIGlmICghdmFsdWVTdHJpbmcgfHwgIUNGU3RyaW5nR2V0TGVuZ3RoKHZhbHVlU3RyaW5nKSkK
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgaWYgKENGU3RyaW5nQ29tcGFyZSh2YWx1ZVN0cmluZywga0NNVGV4dFZlcnRpY2Fs
TGF5b3V0X0xlZnRUb1JpZ2h0LCAwKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykKQEAgLTIyOSwxMCAr
MjI5LDEwIEBAIFJlZjxJbmJhbmRHZW5lcmljQ3VlPiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZG
Ojpwcm9jZXNzQ3VlQXR0cmlidXRlcyhDRkF0dHJpYnV0CiAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgIGlmIChDRlN0cmluZ0NvbXBhcmUoa2V5LCBrQ01UZXh0TWFya3VwQXR0cmlidXRlX0Jh
c2VGb250U2l6ZVBlcmNlbnRhZ2VSZWxhdGl2ZVRvVmlkZW9IZWlnaHQsIDApID09IGtDRkNvbXBh
cmVFcXVhbFRvKSB7Ci0gICAgICAgICAgICAgICAgaWYgKENGR2V0VHlwZUlEKHZhbHVlKSAhPSBD
Rk51bWJlckdldFR5cGVJRCgpKQorICAgICAgICAgICAgICAgIGF1dG8gdmFsdWVOdW1iZXIgPSBk
eW5hbWljX2NmX2Nhc3Q8Q0ZOdW1iZXJSZWY+KHZhbHVlKTsKKyAgICAgICAgICAgICAgICBpZiAo
IXZhbHVlTnVtYmVyKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICBDRk51bWJlclJlZiB2YWx1ZU51bWJlciA9IHN0YXRpY19j
YXN0PENGTnVtYmVyUmVmPih2YWx1ZSk7CisKICAgICAgICAgICAgICAgICBkb3VibGUgYmFzZUZv
bnRTaXplOwogICAgICAgICAgICAgICAgIENGTnVtYmVyR2V0VmFsdWUodmFsdWVOdW1iZXIsIGtD
Rk51bWJlckZsb2F0NjRUeXBlLCAmYmFzZUZvbnRTaXplKTsKICAgICAgICAgICAgICAgICBjdWVE
YXRhLT5zZXRCYXNlRm9udFNpemUoYmFzZUZvbnRTaXplKTsKQEAgLTI0MCwxMCArMjQwLDEwIEBA
IFJlZjxJbmJhbmRHZW5lcmljQ3VlPiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGOjpwcm9jZXNz
Q3VlQXR0cmlidXRlcyhDRkF0dHJpYnV0CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlm
IChDRlN0cmluZ0NvbXBhcmUoa2V5LCBrQ01UZXh0TWFya3VwQXR0cmlidXRlX1JlbGF0aXZlRm9u
dFNpemUsIDApID09IGtDRkNvbXBhcmVFcXVhbFRvKSB7Ci0gICAgICAgICAgICAgICAgaWYgKENG
R2V0VHlwZUlEKHZhbHVlKSAhPSBDRk51bWJlckdldFR5cGVJRCgpKQorICAgICAgICAgICAgICAg
IGF1dG8gdmFsdWVOdW1iZXIgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZOdW1iZXJSZWY+KHZhbHVlKTsK
KyAgICAgICAgICAgICAgICBpZiAoIXZhbHVlTnVtYmVyKQogICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBDRk51bWJlclJlZiB2
YWx1ZU51bWJlciA9IHN0YXRpY19jYXN0PENGTnVtYmVyUmVmPih2YWx1ZSk7CisKICAgICAgICAg
ICAgICAgICBkb3VibGUgcmVsYXRpdmVGb250U2l6ZTsKICAgICAgICAgICAgICAgICBDRk51bWJl
ckdldFZhbHVlKHZhbHVlTnVtYmVyLCBrQ0ZOdW1iZXJGbG9hdDY0VHlwZSwgJnJlbGF0aXZlRm9u
dFNpemUpOwogICAgICAgICAgICAgICAgIGN1ZURhdGEtPnNldFJlbGF0aXZlRm9udFNpemUocmVs
YXRpdmVGb250U2l6ZSk7CkBAIC0yNTEsOCArMjUxLDggQEAgUmVmPEluYmFuZEdlbmVyaWNDdWU+
IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWVBdHRyaWJ1dGVzKENGQXR0cmli
dXQKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKENGU3RyaW5nQ29tcGFyZShrZXks
IGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfRm9udEZhbWlseU5hbWUsIDApID09IGtDRkNvbXBhcmVF
cXVhbFRvKSB7Ci0gICAgICAgICAgICAgICAgdmFsdWVTdHJpbmcgPSBzdGF0aWNfY2FzdDxDRlN0
cmluZ1JlZj4odmFsdWUpOwotICAgICAgICAgICAgICAgIGlmIChDRkdldFR5cGVJRCh2YWx1ZVN0
cmluZykgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSB8fCAhQ0ZTdHJpbmdHZXRMZW5ndGgodmFsdWVT
dHJpbmcpKQorICAgICAgICAgICAgICAgIGF1dG8gdmFsdWVTdHJpbmcgPSBkeW5hbWljX2NmX2Nh
c3Q8Q0ZTdHJpbmdSZWY+KHZhbHVlKTsKKyAgICAgICAgICAgICAgICBpZiAoIXZhbHVlU3RyaW5n
IHx8ICFDRlN0cmluZ0dldExlbmd0aCh2YWx1ZVN0cmluZykpCiAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzZWQgJiBGb250TmFtZSkKICAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0yNjMsMjIgKzI2MywyMiBAQCBSZWY8SW5i
YW5kR2VuZXJpY0N1ZT4gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRjo6cHJvY2Vzc0N1ZUF0dHJp
YnV0ZXMoQ0ZBdHRyaWJ1dAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoQ0ZTdHJp
bmdDb21wYXJlKGtleSwga0NNVGV4dE1hcmt1cEF0dHJpYnV0ZV9Gb3JlZ3JvdW5kQ29sb3JBUkdC
LCAwKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykgewotICAgICAgICAgICAgICAgIENGQXJyYXlSZWYg
YXJyYXlWYWx1ZSA9IHN0YXRpY19jYXN0PENGQXJyYXlSZWY+KHZhbHVlKTsKLSAgICAgICAgICAg
ICAgICBpZiAoQ0ZHZXRUeXBlSUQoYXJyYXlWYWx1ZSkgIT0gQ0ZBcnJheUdldFR5cGVJRCgpKQor
ICAgICAgICAgICAgICAgIGF1dG8gYXJyYXlWYWx1ZSA9IGR5bmFtaWNfY2ZfY2FzdDxDRkFycmF5
UmVmPih2YWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKCFhcnJheVZhbHVlKQogICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgICAg
IGF1dG8gY29sb3IgPSBtYWtlU2ltcGxlQ29sb3JGcm9tQVJHQkNGQXJyYXkoYXJyYXlWYWx1ZSk7
CiAgICAgICAgICAgICAgICAgaWYgKCFjb2xvcikKICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICAgICAgY3VlRGF0YS0+c2V0Rm9yZWdyb3VuZENvbG9yKCpjb2xvcik7
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAK
KwogICAgICAgICAgICAgaWYgKENGU3RyaW5nQ29tcGFyZShrZXksIGtDTVRleHRNYXJrdXBBdHRy
aWJ1dGVfQmFja2dyb3VuZENvbG9yQVJHQiwgMCkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pIHsKLSAg
ICAgICAgICAgICAgICBDRkFycmF5UmVmIGFycmF5VmFsdWUgPSBzdGF0aWNfY2FzdDxDRkFycmF5
UmVmPih2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgaWYgKENGR2V0VHlwZUlEKGFycmF5VmFsdWUp
ICE9IENGQXJyYXlHZXRUeXBlSUQoKSkKKyAgICAgICAgICAgICAgICBhdXRvIGFycmF5VmFsdWUg
PSBkeW5hbWljX2NmX2Nhc3Q8Q0ZBcnJheVJlZj4odmFsdWUpOworICAgICAgICAgICAgICAgIGlm
ICghYXJyYXlWYWx1ZSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAg
ICAgICAgCisKICAgICAgICAgICAgICAgICBhdXRvIGNvbG9yID0gbWFrZVNpbXBsZUNvbG9yRnJv
bUFSR0JDRkFycmF5KGFycmF5VmFsdWUpOwogICAgICAgICAgICAgICAgIGlmICghY29sb3IpCiAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjg3LDEwICsyODcsMTAgQEAgUmVmPElu
YmFuZEdlbmVyaWNDdWU+IEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkY6OnByb2Nlc3NDdWVBdHRy
aWJ1dGVzKENGQXR0cmlidXQKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKENGU3Ry
aW5nQ29tcGFyZShrZXksIGtDTVRleHRNYXJrdXBBdHRyaWJ1dGVfQ2hhcmFjdGVyQmFja2dyb3Vu
ZENvbG9yQVJHQiwgMCkgPT0ga0NGQ29tcGFyZUVxdWFsVG8pIHsKLSAgICAgICAgICAgICAgICBD
RkFycmF5UmVmIGFycmF5VmFsdWUgPSBzdGF0aWNfY2FzdDxDRkFycmF5UmVmPih2YWx1ZSk7Ci0g
ICAgICAgICAgICAgICAgaWYgKENGR2V0VHlwZUlEKGFycmF5VmFsdWUpICE9IENGQXJyYXlHZXRU
eXBlSUQoKSkKKyAgICAgICAgICAgICAgICBhdXRvIGFycmF5VmFsdWUgPSBkeW5hbWljX2NmX2Nh
c3Q8Q0ZBcnJheVJlZj4odmFsdWUpOworICAgICAgICAgICAgICAgIGlmICghYXJyYXlWYWx1ZSkK
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgCisKICAgICAg
ICAgICAgICAgICBhdXRvIGNvbG9yID0gbWFrZVNpbXBsZUNvbG9yRnJvbUFSR0JDRkFycmF5KGFy
cmF5VmFsdWUpOwogICAgICAgICAgICAgICAgIGlmICghY29sb3IpCiAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clBhcnNlckFWRk9iakMubW0KaW5kZXggMmM4YjJlMjY2MTgzOTE1NWMzZjU3ZTliYzExYTMwOWUy
Zjk5ZTY2YS4uYWYyYTJlNmMwNGFmNTNiNjJhMzViYjA3OTFiNmNjNTg5MDA5ZTFhNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1t
CkBAIC00OCw2ICs0OCw3IEBACiAjaW1wb3J0IDxwYWwvYXZmb3VuZGF0aW9uL01lZGlhVGltZUFW
Rm91bmRhdGlvbi5oPgogI2ltcG9ydCA8cGFsL3NwaS9jb2NvYS9BVkZvdW5kYXRpb25TUEkuaD4K
ICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CisjaW1wb3J0IDx3dGYvY2YvVHlw
ZUNhc3RzQ0YuaD4KIAogI2ltcG9ydCA8cGFsL2NmL0NvcmVNZWRpYVNvZnRMaW5rLmg+CiAjaW1w
b3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KQEAgLTE2OSw5ICsxNzAsOCBA
QCBwcml2YXRlOgogICAgICAgICBpZiAoZGVzY3JpcHRpb24pIHsKICAgICAgICAgICAgIG1fb3Jp
Z2luYWxDb2RlYyA9IFBBTDo6c29mdExpbmtfQ29yZU1lZGlhX0NNRm9ybWF0RGVzY3JpcHRpb25H
ZXRNZWRpYVN1YlR5cGUoZGVzY3JpcHRpb24pOwogICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgb3Jp
Z2luYWxGb3JtYXRLZXkgPSBQQUw6OmNhbkxvYWRfQ29yZU1lZGlhX2tDTUZvcm1hdERlc2NyaXB0
aW9uRXh0ZW5zaW9uX1Byb3RlY3RlZENvbnRlbnRPcmlnaW5hbEZvcm1hdCgpID8gUEFMOjpnZXRf
Q29yZU1lZGlhX2tDTUZvcm1hdERlc2NyaXB0aW9uRXh0ZW5zaW9uX1Byb3RlY3RlZENvbnRlbnRP
cmlnaW5hbEZvcm1hdCgpIDogQ0ZTVFIoIkNvbW1vbkVuY3J5cHRpb25PcmlnaW5hbEZvcm1hdCIp
OwotICAgICAgICAgICAgQ0ZUeXBlUmVmIG9yaWdpbmFsRm9ybWF0ID0gQ01Gb3JtYXREZXNjcmlw
dGlvbkdldEV4dGVuc2lvbihkZXNjcmlwdGlvbiwgb3JpZ2luYWxGb3JtYXRLZXkpOwotICAgICAg
ICAgICAgaWYgKG9yaWdpbmFsRm9ybWF0ICYmIENGR2V0VHlwZUlEKG9yaWdpbmFsRm9ybWF0KSA9
PSBDRk51bWJlckdldFR5cGVJRCgpKQotICAgICAgICAgICAgICAgIENGTnVtYmVyR2V0VmFsdWUo
KENGTnVtYmVyUmVmKW9yaWdpbmFsRm9ybWF0LCBrQ0ZOdW1iZXJTSW50MzJUeXBlLCAmbV9vcmln
aW5hbENvZGVjKTsKKyAgICAgICAgICAgIGlmIChhdXRvIG9yaWdpbmFsRm9ybWF0ID0gZHluYW1p
Y19jZl9jYXN0PENGTnVtYmVyUmVmPihDTUZvcm1hdERlc2NyaXB0aW9uR2V0RXh0ZW5zaW9uKGRl
c2NyaXB0aW9uLCBvcmlnaW5hbEZvcm1hdEtleSkpKQorICAgICAgICAgICAgICAgIENGTnVtYmVy
R2V0VmFsdWUob3JpZ2luYWxGb3JtYXQsIGtDRk51bWJlclNJbnQzMlR5cGUsICZtX29yaWdpbmFs
Q29kZWMpOwogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FjaGVDb3JlVGV4dC5jcHAKaW5kZXgg
YmVkZTU0NTZkN2ZkNWQyZTgwMmViOGVlNzgxNjUzYmYyNDA2YTZhZi4uODUyMDMxMzBlMTJlZGM0
ZjUyOWIwZjkwMGMwYWY0OWQ5OWZkNWNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhY2hlQ29yZVRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYWNoZUNvcmVUZXh0LmNwcApAQCAt
MzIsMTUgKzMyLDE0IEBACiAjaW5jbHVkZSAiUmVuZGVyVGhlbWVDb2NvYS5oIgogI2luY2x1ZGUg
IlN5c3RlbUZvbnREYXRhYmFzZUNvcmVUZXh0LmgiCiAjaW5jbHVkZSAiVmVyc2lvbkNoZWNrcy5o
IgotI2luY2x1ZGUgPHBhbC9zcGkvY2YvQ29yZVRleHRTUEkuaD4KLQogI2luY2x1ZGUgPENvcmVU
ZXh0L1NGTlRMYXlvdXRUeXBlcy5oPgotCisjaW5jbHVkZSA8cGFsL3NwaS9jZi9Db3JlVGV4dFNQ
SS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNp
bmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlQcmVzc3VyZUhh
bmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRlIDx3dGYv
Y2YvVHlwZUNhc3RzQ0YuaD4KIAogLy8gRklYTUU6IFRoaXMgc2VlbXMgbGlrZSBpdCBzaG91bGQg
YmUgaW4gUGxhdGZvcm1IYXZlLmguCiAvLyBGSVhNRTogTGlrZWx5IHdlIGNhbiByZW1vdmUgdGhp
cyBzcGVjaWFsIGNhc2UgZm9yIHdhdGNoT1MgYW5kIHR2T1MuCkBAIC02OTcsOCArNjk2LDggQEAg
VmVjdG9yPFN0cmluZz4gRm9udENhY2hlOjpzeXN0ZW1Gb250RmFtaWxpZXMoKQogICAgIGF1dG8g
YXZhaWxhYmxlRm9udEZhbWlsaWVzID0gYWRvcHRDRihDVEZvbnRNYW5hZ2VyQ29weUF2YWlsYWJs
ZUZvbnRGYW1pbHlOYW1lcygpKTsKICAgICBDRkluZGV4IGNvdW50ID0gQ0ZBcnJheUdldENvdW50
KGF2YWlsYWJsZUZvbnRGYW1pbGllcy5nZXQoKSk7CiAgICAgZm9yIChDRkluZGV4IGkgPSAwOyBp
IDwgY291bnQ7ICsraSkgewotICAgICAgICBDRlN0cmluZ1JlZiBmb250TmFtZSA9IHN0YXRpY19j
YXN0PENGU3RyaW5nUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGF2YWlsYWJsZUZvbnRGYW1p
bGllcy5nZXQoKSwgaSkpOwotICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQoZm9udE5hbWUpICE9IENG
U3RyaW5nR2V0VHlwZUlEKCkpIHsKKyAgICAgICAgYXV0byBmb250TmFtZSA9IGR5bmFtaWNfY2Zf
Y2FzdDxDRlN0cmluZ1JlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChhdmFpbGFibGVGb250RmFt
aWxpZXMuZ2V0KCksIGkpKTsKKyAgICAgICAgaWYgKCFmb250TmFtZSkgewogICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQpA
QCAtMTM0Nyw4ICsxMzQ2LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzQXJhYmljQ2hhcmFjdGVy
KFVDaGFyIGNoYXJhY3RlcikKICNpZiBBU1NFUlRfRU5BQkxFRAogc3RhdGljIGJvb2wgaXNVc2Vy
SW5zdGFsbGVkRm9udChDVEZvbnRSZWYgZm9udCkKIHsKLSAgICBhdXRvIGF0dHJpYnV0ZSA9IGFk
b3B0Q0Yoc3RhdGljX2Nhc3Q8Q0ZCb29sZWFuUmVmPihDVEZvbnRDb3B5QXR0cmlidXRlKGZvbnQs
IGtDVEZvbnRVc2VySW5zdGFsbGVkQXR0cmlidXRlKSkpOwotICAgIHJldHVybiBhdHRyaWJ1dGUg
JiYgQ0ZCb29sZWFuR2V0VmFsdWUoYXR0cmlidXRlLmdldCgpKTsKKyAgICByZXR1cm4gYWRvcHRD
RihDVEZvbnRDb3B5QXR0cmlidXRlKGZvbnQsIGtDVEZvbnRVc2VySW5zdGFsbGVkQXR0cmlidXRl
KSkgPT0ga0NGQm9vbGVhblRydWU7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLm1tIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvSEVWQ1V0aWxpdGllc0NvY29hLm1t
CmluZGV4IGVhY2RmNzAxMzUyMDBkYTg0Mjc5N2M0MGM2MjUxYjllYzc1NTUwYTYuLmYwODJjYzFj
ZTBhZDdlNDE1Y2ZkNDY3YzFhMDZiZTA1MDM4YTUxMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0hFVkNVdGlsaXRpZXNDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9IRVZDVXRpbGl0aWVzQ29jb2Eu
bW0KQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgIkZvdXJDQy5oIgogI2ltcG9ydCAiSEVWQ1V0
aWxpdGllcy5oIgogI2ltcG9ydCAiTWVkaWFDYXBhYmlsaXRpZXNJbmZvLmgiCisjaW1wb3J0IDx3
dGYvY2YvVHlwZUNhc3RzQ0YuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ1RvSW50ZWdlckNv
bnZlcnNpb24uaD4KIAogI2ltcG9ydCAiVmlkZW9Ub29sYm94U29mdExpbmsuaCIKQEAgLTc2LDgg
Kzc3LDggQEAgc3RkOjpvcHRpb25hbDxNZWRpYUNhcGFiaWxpdGllc0luZm8+IHZhbGlkYXRlSEVW
Q1BhcmFtZXRlcnMoY29uc3QgSEVWQ1BhcmFtZXRlcnMKICAgICBpZiAoIWNhcGFiaWxpdGllcykK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIGF1dG8gc3VwcG9ydGVkUHJvZmls
ZXMgPSAoQ0ZBcnJheVJlZilDRkRpY3Rpb25hcnlHZXRWYWx1ZShjYXBhYmlsaXRpZXMuZ2V0KCks
IGtWVEhFVkNEZWNvZGVyQ2FwYWJpbGl0eV9TdXBwb3J0ZWRQcm9maWxlcyk7Ci0gICAgaWYgKCFz
dXBwb3J0ZWRQcm9maWxlcyB8fCBDRkdldFR5cGVJRChzdXBwb3J0ZWRQcm9maWxlcykgIT0gQ0ZB
cnJheUdldFR5cGVJRCgpKQorICAgIGF1dG8gc3VwcG9ydGVkUHJvZmlsZXMgPSBkeW5hbWljX2Nm
X2Nhc3Q8Q0ZBcnJheVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoY2FwYWJpbGl0aWVzLmdldCgp
LCBrVlRIRVZDRGVjb2RlckNhcGFiaWxpdHlfU3VwcG9ydGVkUHJvZmlsZXMpKTsKKyAgICBpZiAo
IXN1cHBvcnRlZFByb2ZpbGVzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
aW50MTZfdCBnZW5lcmFsUHJvZmlsZUlEQyA9IHBhcmFtZXRlcnMuZ2VuZXJhbFByb2ZpbGVJREM7
CkBAIC04NiwyNSArODcsMjIgQEAgc3RkOjpvcHRpb25hbDxNZWRpYUNhcGFiaWxpdGllc0luZm8+
IHZhbGlkYXRlSEVWQ1BhcmFtZXRlcnMoY29uc3QgSEVWQ1BhcmFtZXRlcnMKICAgICBpZiAoIUNG
QXJyYXlDb250YWluc1ZhbHVlKHN1cHBvcnRlZFByb2ZpbGVzLCBzZWFyY2hSYW5nZSwgY2ZHZW5l
cmFsUHJvZmlsZUlEQy5nZXQoKSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICBhdXRvIHBlclByb2ZpbGVTdXBwb3J0ID0gKENGRGljdGlvbmFyeVJlZilDRkRpY3Rpb25hcnlH
ZXRWYWx1ZShjYXBhYmlsaXRpZXMuZ2V0KCksIGtWVEhFVkNEZWNvZGVyQ2FwYWJpbGl0eV9QZXJQ
cm9maWxlU3VwcG9ydCk7Ci0gICAgaWYgKCFwZXJQcm9maWxlU3VwcG9ydCB8fCBDRkdldFR5cGVJ
RChwZXJQcm9maWxlU3VwcG9ydCkgIT0gQ0ZEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpCisgICAgYXV0
byBwZXJQcm9maWxlU3VwcG9ydCA9IGR5bmFtaWNfY2ZfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENG
RGljdGlvbmFyeUdldFZhbHVlKGNhcGFiaWxpdGllcy5nZXQoKSwga1ZUSEVWQ0RlY29kZXJDYXBh
YmlsaXR5X1BlclByb2ZpbGVTdXBwb3J0KSk7CisgICAgaWYgKCFwZXJQcm9maWxlU3VwcG9ydCkK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGF1dG8gZ2VuZXJhbFByb2ZpbGVJ
RENTdHJpbmcgPSBTdHJpbmc6Om51bWJlcihnZW5lcmFsUHJvZmlsZUlEQykuY3JlYXRlQ0ZTdHJp
bmcoKTsKLSAgICBhdXRvIHByb2ZpbGVTdXBwb3J0ID0gKENGRGljdGlvbmFyeVJlZilDRkRpY3Rp
b25hcnlHZXRWYWx1ZShwZXJQcm9maWxlU3VwcG9ydCwgZ2VuZXJhbFByb2ZpbGVJRENTdHJpbmcu
Z2V0KCkpOwotICAgIGlmICghcHJvZmlsZVN1cHBvcnQgfHwgQ0ZHZXRUeXBlSUQocHJvZmlsZVN1
cHBvcnQpICE9IENGRGljdGlvbmFyeUdldFR5cGVJRCgpKQorICAgIGF1dG8gcHJvZmlsZVN1cHBv
cnQgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1
ZShwZXJQcm9maWxlU3VwcG9ydCwgZ2VuZXJhbFByb2ZpbGVJRENTdHJpbmcuZ2V0KCkpKTsKKyAg
ICBpZiAoIXByb2ZpbGVTdXBwb3J0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgTWVkaWFDYXBhYmlsaXRpZXNJbmZvIGluZm87CiAKICAgICBpbmZvLnN1cHBvcnRlZCA9IHRy
dWU7CiAKLSAgICBhdXRvIGlzSGFyZHdhcmVBY2NlbGVyYXRlZCA9IChDRkJvb2xlYW5SZWYpQ0ZE
aWN0aW9uYXJ5R2V0VmFsdWUocHJvZmlsZVN1cHBvcnQsIGtWVEhFVkNEZWNvZGVyUHJvZmlsZUNh
cGFiaWxpdHlfSXNIYXJkd2FyZUFjY2VsZXJhdGVkKTsKLSAgICBpZiAoaXNIYXJkd2FyZUFjY2Vs
ZXJhdGVkICYmIENGR2V0VHlwZUlEKGlzSGFyZHdhcmVBY2NlbGVyYXRlZCkgPT0gQ0ZCb29sZWFu
R2V0VHlwZUlEKCkpCi0gICAgICAgIGluZm8ucG93ZXJFZmZpY2llbnQgPSBDRkJvb2xlYW5HZXRW
YWx1ZShpc0hhcmR3YXJlQWNjZWxlcmF0ZWQpOworICAgIGluZm8ucG93ZXJFZmZpY2llbnQgPSBD
RkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9maWxlU3VwcG9ydCwga1ZUSEVWQ0RlY29kZXJQcm9maWxl
Q2FwYWJpbGl0eV9Jc0hhcmR3YXJlQWNjZWxlcmF0ZWQpID09IGtDRkJvb2xlYW5UcnVlOwogCi0g
ICAgYXV0byBjZk1heERlY29kZUxldmVsID0gKENGTnVtYmVyUmVmKUNGRGljdGlvbmFyeUdldFZh
bHVlKHByb2ZpbGVTdXBwb3J0LCBrVlRIRVZDRGVjb2RlclByb2ZpbGVDYXBhYmlsaXR5X01heERl
Y29kZUxldmVsKTsKLSAgICBpZiAoY2ZNYXhEZWNvZGVMZXZlbCAmJiBDRkdldFR5cGVJRChjZk1h
eERlY29kZUxldmVsKSA9PSBDRk51bWJlckdldFR5cGVJRCgpKSB7CisgICAgaWYgKGF1dG8gY2ZN
YXhEZWNvZGVMZXZlbCA9IGR5bmFtaWNfY2ZfY2FzdDxDRk51bWJlclJlZj4oQ0ZEaWN0aW9uYXJ5
R2V0VmFsdWUocHJvZmlsZVN1cHBvcnQsIGtWVEhFVkNEZWNvZGVyUHJvZmlsZUNhcGFiaWxpdHlf
TWF4RGVjb2RlTGV2ZWwpKSkgewogICAgICAgICBpbnQxNl90IG1heERlY29kZUxldmVsID0gMDsK
ICAgICAgICAgaWYgKCFDRk51bWJlckdldFZhbHVlKGNmTWF4RGVjb2RlTGV2ZWwsIGtDRk51bWJl
clNJbnQxNlR5cGUsICZtYXhEZWNvZGVMZXZlbCkpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwpAQCAtMTEzLDggKzExMSw3IEBAIHN0ZDo6b3B0aW9uYWw8TWVkaWFDYXBhYmlsaXRp
ZXNJbmZvPiB2YWxpZGF0ZUhFVkNQYXJhbWV0ZXJzKGNvbnN0IEhFVkNQYXJhbWV0ZXJzCiAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAotICAgIGF1dG8gY2ZNYXhQbGF5
YmFja0xldmVsID0gKENGTnVtYmVyUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKHByb2ZpbGVTdXBw
b3J0LCBrVlRIRVZDRGVjb2RlclByb2ZpbGVDYXBhYmlsaXR5X01heFBsYXliYWNrTGV2ZWwpOwot
ICAgIGlmIChjZk1heFBsYXliYWNrTGV2ZWwgJiYgQ0ZHZXRUeXBlSUQoY2ZNYXhQbGF5YmFja0xl
dmVsKSA9PSBDRk51bWJlckdldFR5cGVJRCgpKSB7CisgICAgaWYgKGF1dG8gY2ZNYXhQbGF5YmFj
a0xldmVsID0gZHluYW1pY19jZl9jYXN0PENGTnVtYmVyUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1
ZShwcm9maWxlU3VwcG9ydCwga1ZUSEVWQ0RlY29kZXJQcm9maWxlQ2FwYWJpbGl0eV9NYXhQbGF5
YmFja0xldmVsKSkpIHsKICAgICAgICAgaW50MTZfdCBtYXhQbGF5YmFja0xldmVsID0gMDsKICAg
ICAgICAgaWYgKCFDRk51bWJlckdldFZhbHVlKGNmTWF4UGxheWJhY2tMZXZlbCwga0NGTnVtYmVy
U0ludDE2VHlwZSwgJm1heFBsYXliYWNrTGV2ZWwpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKQEAgLTE5NiwxMCArMTkzLDcgQEAgc3RkOjpvcHRpb25hbDxNZWRpYUNhcGFiaWxp
dGllc0luZm8+IHZhbGlkYXRlRG9WaVBhcmFtZXRlcnMoY29uc3QgRG9WaVBhcmFtZXRlcnMKICAg
ICBpZiAoIXN1cHBvcnRlZExldmVscykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgIGF1dG8gaXNIYXJkd2FyZUFjY2VsZXJhdGVkQ0YgPSAoQ0ZCb29sZWFuUmVmKUNGRGljdGlv
bmFyeUdldFZhbHVlKGNhcGFiaWxpdGllcy5nZXQoKSwga1ZURG9sYnlWaXNpb25EZWNvZGVyQ2Fw
YWJpbGl0eV9Jc0hhcmR3YXJlQWNjZWxlcmF0ZWQpOwotICAgIGlmICghaXNIYXJkd2FyZUFjY2Vs
ZXJhdGVkQ0YgfHwgQ0ZHZXRUeXBlSUQoaXNIYXJkd2FyZUFjY2VsZXJhdGVkQ0YpICE9IENGQm9v
bGVhbkdldFR5cGVJRCgpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGJvb2wg
aXNIYXJkd2FyZUFjY2VsZXJhdGVkID0gQ0ZCb29sZWFuR2V0VmFsdWUoaXNIYXJkd2FyZUFjY2Vs
ZXJhdGVkQ0YpOworICAgIGJvb2wgaXNIYXJkd2FyZUFjY2VsZXJhdGVkID0gQ0ZEaWN0aW9uYXJ5
R2V0VmFsdWUoY2FwYWJpbGl0aWVzLmdldCgpLCBrVlREb2xieVZpc2lvbkRlY29kZXJDYXBhYmls
aXR5X0lzSGFyZHdhcmVBY2NlbGVyYXRlZCkgPT0ga0NGQm9vbGVhblRydWU7CiAKICAgICBpZiAo
IXN1cHBvcnRlZFByb2ZpbGVzLnZhbHVlKCkuY29udGFpbnMocGFyYW1ldGVycy5iaXRzdHJlYW1Q
cm9maWxlSUQpIHx8ICFzdXBwb3J0ZWRMZXZlbHMudmFsdWUoKS5jb250YWlucyhwYXJhbWV0ZXJz
LmJpdHN0cmVhbUxldmVsSUQpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvV2ViQ29yZURlY29t
cHJlc3Npb25TZXNzaW9uLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvV2ViQ29yZURlY29tcHJlc3Npb25TZXNzaW9uLm1tCmluZGV4IGQxYzg0NDg4MzY3NDBmZGI3
NWM0MGFjOTNmN2RkMDlkNzhmMDMwMDAuLmI1ZmE1OGVjNDI5NmM2ZjM2YTFkZjcxMzM0MDBhMjU0
MzA2ZTI1NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1dlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9XZWJDb3JlRGVjb21wcmVzc2lvblNlc3Npb24ubW0KQEAg
LTE5NCw4ICsxOTQsNyBAQCBib29sIFdlYkNvcmVEZWNvbXByZXNzaW9uU2Vzc2lvbjo6c2hvdWxk
RGVjb2RlU2FtcGxlKENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZSwgYgogCiAgICAgZm9yIChDRklu
ZGV4IGluZGV4ID0gMCwgY291bnQgPSBDRkFycmF5R2V0Q291bnQoYXR0YWNobWVudHMpOyBpbmRl
eCA8IGNvdW50OyArK2luZGV4KSB7CiAgICAgICAgIENGRGljdGlvbmFyeVJlZiBhdHRhY2htZW50
RGljdCA9IChDRkRpY3Rpb25hcnlSZWYpQ0ZBcnJheUdldFZhbHVlQXRJbmRleChhdHRhY2htZW50
cywgaW5kZXgpOwotICAgICAgICBDRkJvb2xlYW5SZWYgZGVwZW5kZWRPbiA9IChDRkJvb2xlYW5S
ZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoYXR0YWNobWVudERpY3QsIFBBTDo6a0NNU2FtcGxlQXR0
YWNobWVudEtleV9Jc0RlcGVuZGVkT25CeU90aGVycyk7Ci0gICAgICAgIGlmIChkZXBlbmRlZE9u
ICYmICFDRkJvb2xlYW5HZXRWYWx1ZShkZXBlbmRlZE9uKSkKKyAgICAgICAgaWYgKENGRGljdGlv
bmFyeUdldFZhbHVlKGF0dGFjaG1lbnREaWN0LCBQQUw6OmtDTVNhbXBsZUF0dGFjaG1lbnRLZXlf
SXNEZXBlbmRlZE9uQnlPdGhlcnMpID09IGtDRkJvb2xlYW5GYWxzZSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3JlVGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JldGV4dC9Gb250UGxhdGZvcm1EYXRhQ29yZVRl
eHQuY3BwCmluZGV4IGQyMDA0NTY0OTAyODBkNjMxYWYyNjFmNjVlNzc1NDUzYzY5OTU4ZjYuLjU5
ZDIxNjY3OWQyZmU0YzgwYzY5YWFhNzFmMzkyMWQ2MjU3YWFjOWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmV0ZXh0L0ZvbnRQbGF0Zm9ybURhdGFDb3Jl
VGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZXRleHQv
Rm9udFBsYXRmb3JtRGF0YUNvcmVUZXh0LmNwcApAQCAtMTQxLDkgKzE0MSw5IEBAIFJldGFpblB0
cjxDRlR5cGVSZWY+IEZvbnRQbGF0Zm9ybURhdGE6Om9iamVjdEZvckVxdWFsaXR5Q2hlY2soQ1RG
b250UmVmIGN0Rm9udCkKICAgICBhdXRvIGZvbnREZXNjcmlwdG9yID0gYWRvcHRDRihDVEZvbnRD
b3B5Rm9udERlc2NyaXB0b3IoY3RGb250KSk7CiAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzg2ODMgVGhpcyBpcyBhIHNoYWxsb3cgcG9pbnRl
ciBjb21wYXJlIGZvciB3ZWIgZm9udHMKICAgICAvLyBiZWNhdXNlIHRoZSBVUkwgY29udGFpbnMg
dGhlIGFkZHJlc3Mgb2YgdGhlIGZvbnQuIFRoaXMgbWVhbnMgd2UgbWlnaHQgZXJyb25lb3VzbHkg
Z2V0IGZhbHNlIG5lZ2F0aXZlcy4KLSAgICBSZXRhaW5QdHI8Q0ZVUkxSZWY+IHVybCA9IGFkb3B0
Q0Yoc3RhdGljX2Nhc3Q8Q0ZVUkxSZWY+KENURm9udERlc2NyaXB0b3JDb3B5QXR0cmlidXRlKGZv
bnREZXNjcmlwdG9yLmdldCgpLCBrQ1RGb250UmVmZXJlbmNlVVJMQXR0cmlidXRlKSkpOwotICAg
IEFTU0VSVCghdXJsIHx8IENGR2V0VHlwZUlEKHVybC5nZXQoKSkgPT0gQ0ZVUkxHZXRUeXBlSUQo
KSk7Ci0gICAgcmV0dXJuIHVybDsKKyAgICBhdXRvIG9iamVjdCA9IGFkb3B0Q0YoQ1RGb250RGVz
Y3JpcHRvckNvcHlBdHRyaWJ1dGUoZm9udERlc2NyaXB0b3IuZ2V0KCksIGtDVEZvbnRSZWZlcmVu
Y2VVUkxBdHRyaWJ1dGUpKTsKKyAgICBBU1NFUlQoIW9iamVjdCB8fCBDRkdldFR5cGVJRChvYmpl
Y3QuZ2V0KCkpID09IENGVVJMR2V0VHlwZUlEKCkpOworICAgIHJldHVybiBvYmplY3Q7CiB9CiAK
IFJldGFpblB0cjxDRlR5cGVSZWY+IEZvbnRQbGF0Zm9ybURhdGE6Om9iamVjdEZvckVxdWFsaXR5
Q2hlY2soKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2N2L0dyYXBoaWNzQ29udGV4dEdMQ1ZBTkdMRS5jcHAKaW5kZXggNjA0NjM5
ZWI5NWZhNDViNGFmYjU5NmMxZGQ1YmJkZGQ0YmYyZGEwMS4uNzgwMWJlNDk2MDE0ZjM0NzNkNDQ1
MjVlNDQ4MTUyNjQyOGFhNmRkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY3YvR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jdi9HcmFwaGljc0NvbnRleHRHTENWQU5HTEUuY3BwCkBA
IC0yOSwxNSArMjksMTcgQEAKICNpZiBFTkFCTEUoV0VCR0wpICYmIEVOQUJMRShWSURFTykgJiYg
VVNFKEFWRk9VTkRBVElPTikKIAogI2luY2x1ZGUgIkFOR0xFSGVhZGVycy5oIgotI2luY2x1ZGUg
IkNvcmVWaWRlb1NvZnRMaW5rLmgiCiAjaW5jbHVkZSAiRm91ckNDLmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgogI2luY2x1ZGUgPHBhbC9zcGkvY2YvQ29yZVZpZGVvU1BJLmg+CiAjaW5jbHVkZSA8
cGFsL3NwaS9jb2NvYS9JT1N1cmZhY2VTUEkuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95
ZWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTWFwLmg+CisjaW5jbHVkZSA8d3RmL2NmL1R5cGVDYXN0
c0NGLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCisjaW5jbHVkZSAi
Q29yZVZpZGVvU29mdExpbmsuaCIKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29u
c3RleHByIGF1dG8gc195dXZWZXJ0ZXhTaGFkZXJUZXh0dXJlMkQgewpAQCAtMTU4LDcgKzE2MCw3
IEBAIHN0YXRpYyBQaXhlbFJhbmdlIHBpeGVsUmFuZ2VGcm9tUGl4ZWxGb3JtYXQoT1NUeXBlIHBp
eGVsRm9ybWF0KQogCiBzdGF0aWMgVHJhbnNmZXJGdW5jdGlvbkNWIHRyYW5zZmVyRnVuY3Rpb25G
cm9tU3RyaW5nKENGU3RyaW5nUmVmIHN0cmluZykKIHsKLSAgICBpZiAoIXN0cmluZyB8fCBDRkdl
dFR5cGVJRChzdHJpbmcpICE9IENGU3RyaW5nR2V0VHlwZUlEKCkpCisgICAgaWYgKCFzdHJpbmcp
CiAgICAgICAgIHJldHVybiBUcmFuc2ZlckZ1bmN0aW9uQ1Y6OlVua25vd247CiAgICAgaWYgKENG
RXF1YWwoc3RyaW5nLCBrQ1ZJbWFnZUJ1ZmZlcllDYkNyTWF0cml4X0lUVV9SXzcwOV8yKSkKICAg
ICAgICAgcmV0dXJuIFRyYW5zZmVyRnVuY3Rpb25DVjo6a0lUVV9SXzcwOV8yOwpAQCAtNjk5LDcg
KzcwMSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xDVkFOR0xFOjpjb3B5UGl4ZWxCdWZmZXJU
b1RleHR1cmUoQ1ZQaXhlbEJ1ZmZlclJlZiBpbWFnZSwKICAgICBtX2NvbnRleHQtPnVuaWZvcm0y
ZihtX3V2VGV4dHVyZVNpemVVbmlmb3JtTG9jYXRpb24sIHV2UGxhbmVXaWR0aCwgdXZQbGFuZUhl
aWdodCk7CiAKICAgICBhdXRvIHJhbmdlID0gcGl4ZWxSYW5nZUZyb21QaXhlbEZvcm1hdChwaXhl
bEZvcm1hdCk7Ci0gICAgYXV0byB0cmFuc2ZlckZ1bmN0aW9uID0gdHJhbnNmZXJGdW5jdGlvbkZy
b21TdHJpbmcoKENGU3RyaW5nUmVmKUNWQnVmZmVyR2V0QXR0YWNobWVudChpbWFnZSwga0NWSW1h
Z2VCdWZmZXJZQ2JDck1hdHJpeEtleSwgbmlsKSk7CisgICAgYXV0byB0cmFuc2ZlckZ1bmN0aW9u
ID0gdHJhbnNmZXJGdW5jdGlvbkZyb21TdHJpbmcoZHluYW1pY19jZl9jYXN0PENGU3RyaW5nUmVm
PihDVkJ1ZmZlckdldEF0dGFjaG1lbnQoaW1hZ2UsIGtDVkltYWdlQnVmZmVyWUNiQ3JNYXRyaXhL
ZXksIG5pbCkpKTsKICAgICBhdXRvIGNvbG9yTWF0cml4ID0gWUNiQ3JUb1JHQk1hdHJpeEZvclJh
bmdlQW5kVHJhbnNmZXJGdW5jdGlvbihyYW5nZSwgdHJhbnNmZXJGdW5jdGlvbik7CiAgICAgbV9j
b250ZXh0LT51bmlmb3JtTWF0cml4NGZ2KG1fY29sb3JNYXRyaXhVbmlmb3JtTG9jYXRpb24sIEdM
X0ZBTFNFLCBjb2xvck1hdHJpeCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNl
ckFnZW50SU9TLm1tCmluZGV4IDNiNmRlMWVjMGYzZmM1ZDE0MmRjZWM2YTVhYTZkMzFjYzhkODBl
NTUuLjYwMTFmYTJjOWFjNzY3M2FjOTE1MWQ1ZmYzNTJjN2U1ZTRhZWUyMzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQpAQCAtMzAsMTAgKzMwLDEyIEBA
CiAKICNpbXBvcnQgIkRldmljZS5oIgogI2ltcG9ydCAiU3lzdGVtVmVyc2lvbi5oIgotI2ltcG9y
dCA8cGFsL2lvcy9VSUtpdFNvZnRMaW5rLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2lvcy9Nb2JpbGVH
ZXN0YWx0U1BJLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2lvcy9VSUtpdFNQSS5oPgogI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+CisKKyNpbXBv
cnQgPHBhbC9pb3MvVUlLaXRTb2Z0TGluay5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTU5LDEyICs2MSwxMiBAQCBTdHJpbmcgb3NOYW1lRm9yVXNlckFnZW50KCkKICAgICByZXR1cm4g
ImlQaG9uZSBPUyI7CiB9CiAKLXN0YXRpYyBpbmxpbmUgU3RyaW5nIGRldmljZU5hbWVGb3JVc2Vy
QWdlbnQoKQorc3RhdGljIFN0cmluZ1ZpZXcgZGV2aWNlTmFtZUZvclVzZXJBZ2VudCgpCiB7CiAg
ICAgaWYgKGlzQ2xhc3NpYygpKSB7CiAgICAgICAgIGlmIChpc0NsYXNzaWNQYWQoKSkKLSAgICAg
ICAgICAgIHJldHVybiAiaVBhZCJfczsKLSAgICAgICAgcmV0dXJuICJpUGhvbmUiX3M7CisgICAg
ICAgICAgICByZXR1cm4gImlQYWQiOworICAgICAgICByZXR1cm4gImlQaG9uZSI7CiAgICAgfQog
CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gbmFtZSA9IFtdIHsKQEAgLTc2LDI5
ICs3OCwyMSBAQCBzdGF0aWMgaW5saW5lIFN0cmluZyBkZXZpY2VOYW1lRm9yVXNlckFnZW50KCkK
ICNlbmRpZgogICAgICAgICByZXR1cm4gbmFtZTsKICAgICB9KCk7Ci0gICAgcmV0dXJuIG5hbWU7
CisgICAgcmV0dXJuIG5hbWUuZ2V0KCk7CiB9CiAKIFN0cmluZyBzdGFuZGFyZFVzZXJBZ2VudFdp
dGhBcHBsaWNhdGlvbk5hbWUoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWUsIGNvbnN0IFN0
cmluZyYgdXNlckFnZW50T1NWZXJzaW9uLCBVc2VyQWdlbnRUeXBlIHR5cGUpCiB7Ci0gICAgaWYg
KHR5cGUgPT0gVXNlckFnZW50VHlwZTo6RGVza3RvcCkgewotICAgICAgICBTdHJpbmcgYXBwTmFt
ZVN1ZmZpeCA9IGFwcGxpY2F0aW9uTmFtZS5pc0VtcHR5KCkgPyAiIiA6IG1ha2VTdHJpbmcoIiAi
LCBhcHBsaWNhdGlvbk5hbWUpOwotICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiTW96aWxsYS81
LjAgKE1hY2ludG9zaDsgSW50ZWwgTWFjIE9TIFggMTBfMTVfNikgQXBwbGVXZWJLaXQvNjA1LjEu
MTUgKEtIVE1MLCBsaWtlIEdlY2tvKSIsIGFwcE5hbWVTdWZmaXgpOwotICAgIH0KLQotICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgZGVwcmVjYXRlIGFuZCBldmVudHVhbGx5IHJlbW92ZSB0aGlzIG9i
c29sZXRlIFVBIG92ZXJyaWRlOwotICAgIC8vIHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE3OTI3IGZvciBkZXRhaWxzLgotICAgIC8vIENoZWNrIHRvIHNlZSBp
ZiB0aGVyZSBpcyBhIHVzZXIgYWdlbnQgb3ZlcnJpZGUgZm9yIGFsbCBXZWJLaXQgY2xpZW50cy4K
LSAgICBhdXRvIG92ZXJyaWRlID0gYWRvcHRDRihDRlByZWZlcmVuY2VzQ29weUFwcFZhbHVlKENG
U1RSKCJVc2VyQWdlbnQiKSwgQ0ZTVFIoImNvbS5hcHBsZS5XZWJGb3VuZGF0aW9uIikpKTsKLSAg
ICBpZiAob3ZlcnJpZGUpIHsKLSAgICAgICAgaWYgKENGR2V0VHlwZUlEKG92ZXJyaWRlLmdldCgp
KSA9PSBDRlN0cmluZ0dldFR5cGVJRCgpKQotICAgICAgICAgICAgcmV0dXJuIChfX2JyaWRnZSBO
U1N0cmluZyAqKW92ZXJyaWRlLmdldCgpOwotICAgIH0KKyAgICBhdXRvIHNlcGFyYXRvciA9IGFw
cGxpY2F0aW9uTmFtZS5pc0VtcHR5KCkgPyAiIiA6ICIgIjsKKyAgICBpZiAodHlwZSA9PSBVc2Vy
QWdlbnRUeXBlOjpEZXNrdG9wKQorICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiTW96aWxsYS81
LjAgKE1hY2ludG9zaDsgSW50ZWwgTWFjIE9TIFggMTBfMTVfNikgQXBwbGVXZWJLaXQvNjA1LjEu
MTUgKEtIVE1MLCBsaWtlIEdlY2tvKSIsIHNlcGFyYXRvciwgYXBwbGljYXRpb25OYW1lKTsKIAot
ICAgIFN0cmluZyBvc1ZlcnNpb24gPSB1c2VyQWdlbnRPU1ZlcnNpb24uaXNFbXB0eSgpICA/IHN5
c3RlbU1hcmtldGluZ1ZlcnNpb25Gb3JVc2VyQWdlbnRTdHJpbmcoKSA6IHVzZXJBZ2VudE9TVmVy
c2lvbjsKLSAgICBTdHJpbmcgYXBwTmFtZVN1ZmZpeCA9IGFwcGxpY2F0aW9uTmFtZS5pc0VtcHR5
KCkgPyAiIiA6IG1ha2VTdHJpbmcoIiAiLCBhcHBsaWNhdGlvbk5hbWUpOworICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgZGVwcmVjYXRlIGFuZCByZW1vdmUgdGhpcyBvdmVycmlkZTsgc2VlIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc5MjcgZm9yIGRldGFpbHMuCisg
ICAgaWYgKGF1dG8gb3ZlcnJpZGUgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZTdHJpbmdSZWY+KGFkb3B0
Q0YoQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZShDRlNUUigiVXNlckFnZW50IiksIENGU1RSKCJj
b20uYXBwbGUuV2ViRm91bmRhdGlvbiIpKSkpKQorICAgICAgICByZXR1cm4gb3ZlcnJpZGUuZ2V0
KCk7CiAKLSAgICByZXR1cm4gbWFrZVN0cmluZygiTW96aWxsYS81LjAgKCIsIGRldmljZU5hbWVG
b3JVc2VyQWdlbnQoKSwgIjsgQ1BVICIsIG9zTmFtZUZvclVzZXJBZ2VudCgpLCAiICIsIG9zVmVy
c2lvbiwgIiBsaWtlIE1hYyBPUyBYKSBBcHBsZVdlYktpdC82MDUuMS4xNSAoS0hUTUwsIGxpa2Ug
R2Vja28pIiwgYXBwTmFtZVN1ZmZpeCk7CisgICAgYXV0byBvc1ZlcnNpb24gPSB1c2VyQWdlbnRP
U1ZlcnNpb24uaXNFbXB0eSgpID8gc3lzdGVtTWFya2V0aW5nVmVyc2lvbkZvclVzZXJBZ2VudFN0
cmluZygpIDogdXNlckFnZW50T1NWZXJzaW9uOworICAgIHJldHVybiBtYWtlU3RyaW5nKCJNb3pp
bGxhLzUuMCAoIiwgZGV2aWNlTmFtZUZvclVzZXJBZ2VudCgpLCAiOyBDUFUgIiwgb3NOYW1lRm9y
VXNlckFnZW50KCksICIgIiwgb3NWZXJzaW9uLCAiIGxpa2UgTWFjIE9TIFgpIEFwcGxlV2ViS2l0
LzYwNS4xLjE1IChLSFRNTCwgbGlrZSBHZWNrbykiLCBzZXBhcmF0b3IsIGFwcGxpY2F0aW9uTmFt
ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2luZG93RGlzcGxheUNhcHR1cmVyTWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dpbmRvd0Rpc3BsYXlD
YXB0dXJlck1hYy5tbQppbmRleCBmMDJjZThmZGYwZjBjNThmNDA3MGQ0YjRiNzgxZWRiNWYxZWMy
MWRiLi5iMmU2NDczOTI0YWZlZjk0OWJjOTk4YzY4ODQ3NjZhMTlhOWVjYWQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2luZG93RGlzcGxheUNh
cHR1cmVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9XaW5kb3dEaXNwbGF5Q2FwdHVyZXJNYWMubW0KQEAgLTcxLDggKzcxLDcgQEAgc3RhdGljIGJv
b2wgYW55T2ZDR1dpbmRvdyhjb25zdCBGdW5jdGlvbjxib29sKENGRGljdGlvbmFyeVJlZiBpbmZv
LCB1bnNpZ25lZCBpZCwKICAgICAgICAgaWYgKHdpbmRvd0xheWVyKQogICAgICAgICAgICAgY29u
dGludWU7CiAKLSAgICAgICAgYXV0byBvblNjcmVlbiA9IGNoZWNrZWRfY2ZfY2FzdDxDRkJvb2xl
YW5SZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKHdpbmRvd0luZm8sIGtDR1dpbmRvd0lzT25zY3Jl
ZW4pKTsKLSAgICAgICAgaWYgKCFDRkJvb2xlYW5HZXRWYWx1ZShvblNjcmVlbikpCisgICAgICAg
IGlmIChDRkRpY3Rpb25hcnlHZXRWYWx1ZSh3aW5kb3dJbmZvLCBrQ0dXaW5kb3dJc09uc2NyZWVu
KSA9PSBrQ0ZCb29sZWFuRmFsc2UpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBh
dXRvIHdpbmRvd0lEUmVmID0gY2hlY2tlZF9jZl9jYXN0PENGTnVtYmVyUmVmPihDRkRpY3Rpb25h
cnlHZXRWYWx1ZSh3aW5kb3dJbmZvLCBrQ0dXaW5kb3dOdW1iZXIpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUHJveHlTZXJ2ZXJDRk5ldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Byb3h5U2VydmVyQ0ZOZXQuY3BwCmlu
ZGV4IDY0Y2ZjOWJlY2RiMjZjYjUzZDBlMTQxMDRlYzRlMWRmYzY5YjJmNDAuLjhiMTllNzk0Nzlm
MzQyZjRkNTYyZDI2NjNjMGE2ZGZhYmNhNWY0NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUHJveHlTZXJ2ZXJDRk5ldC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Qcm94eVNlcnZlckNGTmV0LmNwcApAQCAtMjksNiAr
MjksNyBAQAogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
IHx8IFBMQVRGT1JNKFdJTikKQEAgLTc2LDggKzc3LDggQEAgc3RhdGljIHZvaWQgcHJvY2Vzc1By
b3h5U2VydmVycyhWZWN0b3I8UHJveHlTZXJ2ZXI+JiBwcm94eVNlcnZlcnMsIENGQXJyYXlSZWYg
cHIKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgLy8gRklYTUU6IFdl
IHNob3VsZCByZXN0cnVjdHVyZSB0byBhbGxvdyB0aGlzIHRvIGhhcHBlbiBhc3luY2hyb25vdXNs
eS4KLSAgICAgICAgICAgIENGVVJMUmVmIHNjcmlwdFVSTCA9IHN0YXRpY19jYXN0PENGVVJMUmVm
PihDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm94eURpY3Rpb25hcnksIGtDRlByb3h5QXV0b0NvbmZp
Z3VyYXRpb25VUkxLZXkpKTsKLSAgICAgICAgICAgIGlmICghc2NyaXB0VVJMIHx8IENGR2V0VHlw
ZUlEKHNjcmlwdFVSTCkgIT0gQ0ZVUkxHZXRUeXBlSUQoKSkKKyAgICAgICAgICAgIGF1dG8gc2Ny
aXB0VVJMID0gZHluYW1pY19jZl9jYXN0PENGVVJMUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShw
cm94eURpY3Rpb25hcnksIGtDRlByb3h5QXV0b0NvbmZpZ3VyYXRpb25VUkxLZXkpKTsKKyAgICAg
ICAgICAgIGlmICghc2NyaXB0VVJMKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAg
ICAgICAgICBDRlN0cmVhbUNsaWVudENvbnRleHQgY29udGV4dCA9IHsgMCwgKHZvaWQqKSZwcm94
eVNlcnZlcnMsIDAsIDAsIDAgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKaW5kZXggZWUxYWRkMDM3
NGMzZDYxOTQyNWFiNTcxMjU3MzdkMmU0ZWU2OGEzMy4uMTNhZjkxNmNlZWY5Nzk4ZDE0YzI1MjFl
MmY4MzE2ZDE5MzM4N2Y3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHAKQEAgLTQ4LDggKzQ4LDYg
QEAKICNpbmNsdWRlIDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgogI2VuZGlmCiAKLVdURl9E
RUNMQVJFX0NGX1RZUEVfVFJBSVQoQ0ZVUkwpOwotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8v
IEZJWE1FOiBNYWtlIHRoaXMgYSBOZXR3b3JraW5nQ29udGV4dCBwcm9wZXJ0eS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxl
SW1wbENGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0
U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcAppbmRleCA1NWI5ZjFlZDRhMGQzMjVhNmIxNmExMTQz
ODlmMzljN2RlZDM2Y2E2Li44NTBmY2ExN2EyMWQ5NzFhOWUyMDI3OWEyMzEyZTJkYTI3OTAwNDJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0
cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwCkBAIC0yNDksMTIgKzI0OSw5
IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y2hvb3NlUHJveHlGcm9tQXJyYXkoQ0ZB
cnJheVJlZiBwcm94eUFycmF5KQogCiAgICAgLy8gUEFDIGlzIGFsd2F5cyB0aGUgZmlyc3QgZW50
cnksIGlmIHByZXNlbnQuCiAgICAgaWYgKHByb3h5QXJyYXlDb3VudCkgewotICAgICAgICBDRkRp
Y3Rpb25hcnlSZWYgcHJveHlJbmZvID0gc3RhdGljX2Nhc3Q8Q0ZEaWN0aW9uYXJ5UmVmPihDRkFy
cmF5R2V0VmFsdWVBdEluZGV4KHByb3h5QXJyYXksIDApKTsKLSAgICAgICAgQ0ZUeXBlUmVmIHBy
b3h5VHlwZSA9IENGRGljdGlvbmFyeUdldFZhbHVlKHByb3h5SW5mbywga0NGUHJveHlUeXBlS2V5
KTsKLSAgICAgICAgaWYgKHByb3h5VHlwZSAmJiBDRkdldFR5cGVJRChwcm94eVR5cGUpID09IENG
U3RyaW5nR2V0VHlwZUlEKCkpIHsKLSAgICAgICAgICAgIGlmIChDRkVxdWFsKHByb3h5VHlwZSwg
a0NGUHJveHlUeXBlQXV0b0NvbmZpZ3VyYXRpb25VUkwpKSB7Ci0gICAgICAgICAgICAgICAgQ0ZU
eXBlUmVmIHBhY0ZpbGVVUkwgPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm94eUluZm8sIGtDRlBy
b3h5QXV0b0NvbmZpZ3VyYXRpb25VUkxLZXkpOwotICAgICAgICAgICAgICAgIGlmIChwYWNGaWxl
VVJMICYmIENGR2V0VHlwZUlEKHBhY0ZpbGVVUkwpID09IENGVVJMR2V0VHlwZUlEKCkpIHsKKyAg
ICAgICAgaWYgKGF1dG8gcHJveHlJbmZvID0gZHluYW1pY19jZl9jYXN0PENGRGljdGlvbmFyeVJl
Zj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChwcm94eUFycmF5LCAwKSkpIHsKKyAgICAgICAgICAg
IGlmIChhdXRvIHByb3h5VHlwZSA9IGR5bmFtaWNfY2ZfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0
aW9uYXJ5R2V0VmFsdWUocHJveHlJbmZvLCBrQ0ZQcm94eVR5cGVLZXkpKTsgcHJveHlUeXBlICYm
IENGRXF1YWwocHJveHlUeXBlLCBrQ0ZQcm94eVR5cGVBdXRvQ29uZmlndXJhdGlvblVSTCkpIHsK
KyAgICAgICAgICAgICAgICBpZiAoYXV0byBwYWNGaWxlVVJMID0gZHluYW1pY19jZl9jYXN0PENG
VVJMUmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm94eUluZm8sIGtDRlByb3h5QXV0b0NvbmZp
Z3VyYXRpb25VUkxLZXkpKSkgewogICAgICAgICAgICAgICAgICAgICBleGVjdXRlUEFDRmlsZVVS
TChzdGF0aWNfY2FzdDxDRlVSTFJlZj4ocGFjRmlsZVVSTCkpOwogICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQpAQCAtMjYyLDIwICsyNTksMjAgQEAgdm9pZCBT
b2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpjaG9vc2VQcm94eUZyb21BcnJheShDRkFycmF5UmVmIHBy
b3h5QXJyYXkpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBDRkRpY3Rpb25hcnlSZWYgY2hvc2Vu
UHJveHkgPSAwOworICAgIENGRGljdGlvbmFyeVJlZiBjaG9zZW5Qcm94eSA9IG51bGxwdHI7CiAg
ICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwgcHJveHlBcnJheUNvdW50OyArK2kpIHsKLSAgICAg
ICAgQ0ZEaWN0aW9uYXJ5UmVmIHByb3h5SW5mbyA9IHN0YXRpY19jYXN0PENGRGljdGlvbmFyeVJl
Zj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChwcm94eUFycmF5LCBpKSk7Ci0gICAgICAgIENGVHlw
ZVJlZiBwcm94eVR5cGUgPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm94eUluZm8sIGtDRlByb3h5
VHlwZUtleSk7Ci0gICAgICAgIGlmIChwcm94eVR5cGUgJiYgQ0ZHZXRUeXBlSUQocHJveHlUeXBl
KSA9PSBDRlN0cmluZ0dldFR5cGVJRCgpKSB7Ci0gICAgICAgICAgICBpZiAoQ0ZFcXVhbChwcm94
eVR5cGUsIGtDRlByb3h5VHlwZVNPQ0tTKSkgewotICAgICAgICAgICAgICAgIG1fY29ubmVjdGlv
blR5cGUgPSBTT0NLU1Byb3h5OwotICAgICAgICAgICAgICAgIGNob3NlblByb3h5ID0gcHJveHlJ
bmZvOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
aWYgKENGRXF1YWwocHJveHlUeXBlLCBrQ0ZQcm94eVR5cGVIVFRQUykpIHsKLSAgICAgICAgICAg
ICAgICBtX2Nvbm5lY3Rpb25UeXBlID0gQ09OTkVDVFByb3h5OwotICAgICAgICAgICAgICAgIGNo
b3NlblByb3h5ID0gcHJveHlJbmZvOwotICAgICAgICAgICAgICAgIC8vIEtlZXAgbG9va2luZyBm
b3IgcHJveGllcywgYXMgYSBTT0NLUyBvbmUgaXMgcHJlZmVyYWJsZS4KKyAgICAgICAgaWYgKGF1
dG8gcHJveHlJbmZvID0gZHluYW1pY19jZl9jYXN0PENGRGljdGlvbmFyeVJlZj4oQ0ZBcnJheUdl
dFZhbHVlQXRJbmRleChwcm94eUFycmF5LCBpKSkpIHsKKyAgICAgICAgICAgIGlmIChhdXRvIHBy
b3h5VHlwZSA9IGR5bmFtaWNfY2ZfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFs
dWUocHJveHlJbmZvLCBrQ0ZQcm94eVR5cGVLZXkpKSkgeworICAgICAgICAgICAgICAgIGlmIChD
RkVxdWFsKHByb3h5VHlwZSwga0NGUHJveHlUeXBlU09DS1MpKSB7CisgICAgICAgICAgICAgICAg
ICAgIG1fY29ubmVjdGlvblR5cGUgPSBTT0NLU1Byb3h5OworICAgICAgICAgICAgICAgICAgICBj
aG9zZW5Qcm94eSA9IHByb3h5SW5mbzsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChDRkVxdWFsKHByb3h5VHlwZSwga0NG
UHJveHlUeXBlSFRUUFMpKSB7CisgICAgICAgICAgICAgICAgICAgIG1fY29ubmVjdGlvblR5cGUg
PSBDT05ORUNUUHJveHk7CisgICAgICAgICAgICAgICAgICAgIGNob3NlblByb3h5ID0gcHJveHlJ
bmZvOworICAgICAgICAgICAgICAgICAgICAvLyBLZWVwIGxvb2tpbmcgZm9yIHByb3hpZXMsIGFz
IGEgU09DS1Mgb25lIGlzIHByZWZlcmFibGUuCisgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMjg0LDEyICsyODEsMTIgQEAgdm9pZCBTb2NrZXRT
dHJlYW1IYW5kbGVJbXBsOjpjaG9vc2VQcm94eUZyb21BcnJheShDRkFycmF5UmVmIHByb3h5QXJy
YXkpCiAgICAgICAgIEFTU0VSVChtX2Nvbm5lY3Rpb25UeXBlICE9IFVua25vd24pOwogICAgICAg
ICBBU1NFUlQobV9jb25uZWN0aW9uVHlwZSAhPSBEaXJlY3QpOwogCi0gICAgICAgIENGVHlwZVJl
ZiBwcm94eUhvc3QgPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShjaG9zZW5Qcm94eSwga0NGUHJveHlI
b3N0TmFtZUtleSk7Ci0gICAgICAgIENGVHlwZVJlZiBwcm94eVBvcnQgPSBDRkRpY3Rpb25hcnlH
ZXRWYWx1ZShjaG9zZW5Qcm94eSwga0NGUHJveHlQb3J0TnVtYmVyS2V5KTsKKyAgICAgICAgYXV0
byBwcm94eUhvc3QgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFyeUdl
dFZhbHVlKGNob3NlblByb3h5LCBrQ0ZQcm94eUhvc3ROYW1lS2V5KSk7CisgICAgICAgIGF1dG8g
cHJveHlQb3J0ID0gZHluYW1pY19jZl9jYXN0PENGTnVtYmVyUmVmPihDRkRpY3Rpb25hcnlHZXRW
YWx1ZShjaG9zZW5Qcm94eSwga0NGUHJveHlQb3J0TnVtYmVyS2V5KSk7CiAKLSAgICAgICAgaWYg
KHByb3h5SG9zdCAmJiBDRkdldFR5cGVJRChwcm94eUhvc3QpID09IENGU3RyaW5nR2V0VHlwZUlE
KCkgJiYgcHJveHlQb3J0ICYmIENGR2V0VHlwZUlEKHByb3h5UG9ydCkgPT0gQ0ZOdW1iZXJHZXRU
eXBlSUQoKSkgewotICAgICAgICAgICAgbV9wcm94eUhvc3QgPSBzdGF0aWNfY2FzdDxDRlN0cmlu
Z1JlZj4ocHJveHlIb3N0KTsKLSAgICAgICAgICAgIG1fcHJveHlQb3J0ID0gc3RhdGljX2Nhc3Q8
Q0ZOdW1iZXJSZWY+KHByb3h5UG9ydCk7CisgICAgICAgIGlmIChwcm94eUhvc3QgJiYgcHJveHlQ
b3J0KSB7CisgICAgICAgICAgICBtX3Byb3h5SG9zdCA9IHByb3h5SG9zdDsKKyAgICAgICAgICAg
IG1fcHJveHlQb3J0ID0gcHJveHlQb3J0OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3Mv
V2ViQ29yZVVSTFJlc3BvbnNlSU9TLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2lvcy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MuaAppbmRleCA4ZDNjN2NiMWZiMjViMzc4YTE0ODE2
OTVmNzMyMTRhYmJlNmRmMzBkLi5mMzAyODc4MDJhZTI0MDY5ZjViYTIyODIzNTA2OTllOTAzNjIw
OGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9XZWJD
b3JlVVJMUmVzcG9uc2VJT1MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2lvcy9XZWJDb3JlVVJMUmVzcG9uc2VJT1MuaApAQCAtMzAsMTggKzMwLDE1IEBACiAKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQogCi0jaWZkZWYgX19PQkpDX18KLSNpbmNsdWRlICJXZWJDb3Jl
VVJMUmVzcG9uc2UuaCIKLSNlbmRpZgotCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgor
I2luY2x1ZGUgIldlYkNvcmVVUkxSZXNwb25zZS5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KICNpZiBVU0UoUVVJQ0tfTE9PSykKICAg
ICAKLWlubGluZSBib29sIHNob3VsZFVzZVF1aWNrTG9va0Zvck1JTUVUeXBlKGNvbnN0IFdURjo6
U3RyaW5nJiBtaW1lVHlwZSkKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworaW5saW5lIGJvb2wgc2hv
dWxkVXNlUXVpY2tMb29rRm9yTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKIHsKICAg
ICBpZiAoKCFNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZE5vbkltYWdlTUlNRVR5cGUobWlt
ZVR5cGUpICAgICAgIC8vIGlnbm9yZSBzdXBwb3J0ZWQgbm9uLWltYWdlIE1JTUUgdHlwZXMKICAg
ICAgICAgICYmICFNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEltYWdlTUlNRVR5cGUobWlt
ZVR5cGUpICAgICAgIC8vIGlnbm9yZSBzdXBwb3J0ZWQgaW1hZ2UgTUlNRSB0eXBlcwpAQCAtNTcs
OCArNTQsOCBAQCBpbmxpbmUgYm9vbCBzaG91bGRVc2VRdWlja0xvb2tGb3JNSU1FVHlwZShjb25z
dCBXVEY6OlN0cmluZyYgbWltZVR5cGUpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi0jZW5kaWYg
Ly8gVVNFKFFVSUNLX0xPT0spCi0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorI2VuZGlmIC8v
IFVTRShRVUlDS19MT09LKQorCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1dlYkNvcmVVUkxSZXNw
b25zZUlPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvaW9zL1dlYkNvcmVV
UkxSZXNwb25zZUlPUy5tbQppbmRleCAzNTc3NDBmMjI1NmY5ODkwYmE3MWEzNjM4ZWY1NzA3ZTcx
YTlkOWIxLi5jMmFjZmQxODExYTBmMmIyM2ViYzRmMmU3ZWMwNDM0NDkxMjIzZWZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2lvcy9XZWJDb3JlVVJMUmVzcG9u
c2VJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9pb3MvV2ViQ29y
ZVVSTFJlc3BvbnNlSU9TLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDktMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDc5ICszMiw0MyBAQAogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAKICNpbXBvcnQgIlF1aWNrTG9vay5oIgotI2ltcG9ydCAiVVRJVXRpbGl0aWVzLmgiCiAj
aW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CisKICNpbXBv
cnQgPHBhbC9pb3MvUXVpY2tMb29rU29mdExpbmsuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci0vLyA8cmRhcjovL3Byb2JsZW0vNDYzMzI4OTM+IFJlZ2lzdGVyIC5tanMgZmlsZXMgYXMgd2hh
dGV2ZXIgVVRJIGluZGljYXRlcyBKYXZhU2NyaXB0Ci1zdGF0aWMgUmV0YWluUHRyPENGRGljdGlv
bmFyeVJlZj4gY3JlYXRlRXh0ZW5zaW9uVG9NSU1FVHlwZU1hcCgpCit2b2lkIGFkanVzdE1JTUVU
eXBlSWZOZWNlc3NhcnkoQ0ZVUkxSZXNwb25zZVJlZiByZXNwb25zZSwgYm9vbCBpc01haW5SZXNv
dXJjZUxvYWQpCiB7Ci0gICAgQ0ZTdHJpbmdSZWYga2V5c1tdID0gewotICAgICAgICBDRlNUUigi
bWpzIikKLSAgICB9OwotCi0gICAgQ0ZTdHJpbmdSZWYgdmFsdWVzW10gPSB7Ci0gICAgICAgIENG
U1RSKCJ0ZXh0L2phdmFzY3JpcHQiKQotICAgIH07Ci0KLSAgICBBU1NFUlQoc2l6ZW9mKGtleXMp
ID09IHNpemVvZih2YWx1ZXMpKTsKLSAgICByZXR1cm4gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVh
dGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IHZvaWQqKikma2V5cywgKGNvbnN0IHZvaWQq
KikmdmFsdWVzLCBzaXplb2Yoa2V5cykgLyBzaXplb2YoQ0ZTdHJpbmdSZWYpLCAma0NGVHlwZURp
Y3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7
Ci19Ci0KLXZvaWQgYWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeShDRlVSTFJlc3BvbnNlUmVmIGNm
UmVzcG9uc2UsIGJvb2wgaXNNYWluUmVzb3VyY2VMb2FkKQotewotICAgIFJldGFpblB0cjxDRlN0
cmluZ1JlZj4gbWltZVR5cGUgPSBDRlVSTFJlc3BvbnNlR2V0TUlNRVR5cGUoY2ZSZXNwb25zZSk7
Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiB1cGRhdGVkTUlNRVR5cGUgPSBtaW1lVHlwZTsK
LSAgICBpZiAoIXVwZGF0ZWRNSU1FVHlwZSkKLSAgICAgICAgdXBkYXRlZE1JTUVUeXBlID0gZGVm
YXVsdE1JTUVUeXBlKCkuY3JlYXRlQ0ZTdHJpbmcoKTsKLQotICAgIC8vIDxyZGFyOi8vcHJvYmxl
bS80NjMzMjg5Mz4gUmVnaXN0ZXIgLm1qcyBmaWxlcyBhcyB3aGF0ZXZlciBVVEkgaW5kaWNhdGVz
IEphdmFTY3JpcHQKLSAgICBpZiAoIW1pbWVUeXBlKSB7Ci0gICAgICAgIGF1dG8gdXJsID0gQ0ZV
UkxSZXNwb25zZUdldFVSTChjZlJlc3BvbnNlKTsKLSAgICAgICAgaWYgKFsoX19icmlkZ2UgTlNV
UkwgKil1cmwgaXNGaWxlVVJMXSkgewotICAgICAgICAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVm
PiBleHRlbnNpb24gPSBhZG9wdENGKENGVVJMQ29weVBhdGhFeHRlbnNpb24odXJsKSk7Ci0gICAg
ICAgICAgICBpZiAoZXh0ZW5zaW9uKSB7Ci0gICAgICAgICAgICAgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+PiBleHRlbnNpb25NYXAgPSBjcmVhdGVF
eHRlbnNpb25Ub01JTUVUeXBlTWFwKCk7Ci0gICAgICAgICAgICAgICAgYXV0byBtdXRhYmxlRXh0
ZW5zaW9uID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRl
ZmF1bHQsIDAsIGV4dGVuc2lvbi5nZXQoKSkpOwotICAgICAgICAgICAgICAgIENGU3RyaW5nTG93
ZXJjYXNlKG11dGFibGVFeHRlbnNpb24uZ2V0KCksIE5VTEwpOwotICAgICAgICAgICAgICAgIGV4
dGVuc2lvbiA9IFdURk1vdmUobXV0YWJsZUV4dGVuc2lvbik7Ci0gICAgICAgICAgICAgICAgaWYg
KGF1dG8gbmV3TUlNRVR5cGUgPSAoQ0ZTdHJpbmdSZWYpQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZXh0
ZW5zaW9uTWFwLmdldCgpLmdldCgpLCBleHRlbnNpb24uZ2V0KCkpKQotICAgICAgICAgICAgICAg
ICAgICB1cGRhdGVkTUlNRVR5cGUgPSBuZXdNSU1FVHlwZTsKKyAgICBhdXRvIHR5cGUgPSBDRlVS
TFJlc3BvbnNlR2V0TUlNRVR5cGUocmVzcG9uc2UpOworICAgIGlmICghdHlwZSkgeworICAgICAg
ICAvLyBGSVhNRTogPHJkYXI6Ly9wcm9ibGVtLzQ2MzMyODkzPiBpcyBmaXhlZCwgYnV0IGZvciBz
b21lIHJlYXNvbiwgdGhpcyBzcGVjaWFsIGNhc2UgaXMgc3RpbGwgbmVlZGVkOyBzaG91bGQgcmVz
b2x2ZSB0aGF0IGlzc3VlIGFuZCByZW1vdmUgdGhpcy4KKyAgICAgICAgaWYgKGF1dG8gZXh0ZW5z
aW9uID0gZmlsZVBhdGhFeHRlbnNpb24ocmVzcG9uc2UpKSB7CisgICAgICAgICAgICBpZiAoQ0ZT
dHJpbmdDb21wYXJlKGV4dGVuc2lvbi5nZXQoKSwgQ0ZTVFIoIm1qcyIpLCBrQ0ZDb21wYXJlQ2Fz
ZUluc2Vuc2l0aXZlKSA9PSBrQ0ZDb21wYXJlRXF1YWxUbykgeworICAgICAgICAgICAgICAgIENG
VVJMUmVzcG9uc2VTZXRNSU1FVHlwZShyZXNwb25zZSwgQ0ZTVFIoInRleHQvamF2YXNjcmlwdCIp
KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAg
ICAgICAgQ0ZVUkxSZXNwb25zZVNldE1JTUVUeXBlKHJlc3BvbnNlLCBDRlNUUigiYXBwbGljYXRp
b24vb2N0ZXQtc3RyZWFtIikpOworICAgICAgICByZXR1cm47CiAgICAgfQogCi0jaWYgVVNFKFFV
SUNLX0xPT0spCi0gICAgLy8gV2UgbXVzdCBlbnN1cmUgdGhhdCB0aGUgTUlNRSB0eXBlIGlzIGNv
cnJlY3QsIHNvIHRoYXQgUXVpY2tMb29rJ3Mgd2ViIHBsdWdpbiBpcyBjYWxsZWQgd2hlbiBuZWVk
ZWQuCi0gICAgLy8gV2UgZmlsdGVyIHRoZSBiYXNpYyBNSU1FIHR5cGVzIHNvIHRoYXQgd2UgZG9u
J3QgZG8gdW5uZWNlc3Nhcnkgd29yayBpbiBzdGFuZGFyZCBicm93c2luZyBzaXR1YXRpb25zLgot
ICAgIGlmIChpc01haW5SZXNvdXJjZUxvYWQgJiYgc2hvdWxkVXNlUXVpY2tMb29rRm9yTUlNRVR5
cGUoKE5TU3RyaW5nICopdXBkYXRlZE1JTUVUeXBlLmdldCgpKSkgewotICAgICAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IHN1Z2dlc3RlZEZpbGVuYW1lID0gYWRvcHRDRihDRlVSTFJlc3BvbnNl
Q29weVN1Z2dlc3RlZEZpbGVuYW1lKGNmUmVzcG9uc2UpKTsKLSAgICAgICAgUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBxdWlja0xvb2tNSU1FVHlwZSA9IGFkb3B0Q0YoKENGU3RyaW5nUmVmKVBBTDo6
c29mdExpbmtfUXVpY2tMb29rX1FMVHlwZUNvcHlCZXN0TWltZVR5cGVGb3JGaWxlTmFtZUFuZE1p
bWVUeXBlKChOU1N0cmluZyAqKXN1Z2dlc3RlZEZpbGVuYW1lLmdldCgpLCAoTlNTdHJpbmcgKilt
aW1lVHlwZS5nZXQoKSkpOwotICAgICAgICBpZiAoIXF1aWNrTG9va01JTUVUeXBlKSB7Ci0gICAg
ICAgICAgICBhdXRvIHVybCA9IENGVVJMUmVzcG9uc2VHZXRVUkwoY2ZSZXNwb25zZSk7Ci0gICAg
ICAgICAgICBpZiAoWyhOU1VSTCAqKXVybCBpc0ZpbGVVUkxdKSB7Ci0gICAgICAgICAgICAgICAg
UmV0YWluUHRyPENGU3RyaW5nUmVmPiBleHRlbnNpb24gPSBhZG9wdENGKENGVVJMQ29weVBhdGhF
eHRlbnNpb24odXJsKSk7Ci0gICAgICAgICAgICAgICAgaWYgKGV4dGVuc2lvbikgewotQUxMT1df
REVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KLSAgICAgICAgICAgICAgICAgICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiB1dGkgPSBhZG9wdENGKFVUVHlwZUNyZWF0ZVByZWZlcnJlZElkZW50
aWZpZXJGb3JUYWcoa1VUVGFnQ2xhc3NGaWxlbmFtZUV4dGVuc2lvbiwgZXh0ZW5zaW9uLmdldCgp
LCBudWxscHRyKSk7Ci1BTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKLSAgICAgICAg
ICAgICAgICAgICAgU3RyaW5nIE1JTUVUeXBlID0gTUlNRVR5cGVGcm9tVVRJVHJlZSh1dGkuZ2V0
KCkpOwotICAgICAgICAgICAgICAgICAgICBpZiAoIU1JTUVUeXBlLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHF1aWNrTG9va01JTUVUeXBlID0gTUlNRVR5cGUuY3JlYXRlQ0ZT
dHJpbmcoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQot
ICAgICAgICBpZiAocXVpY2tMb29rTUlNRVR5cGUpCi0gICAgICAgICAgICB1cGRhdGVkTUlNRVR5
cGUgPSBxdWlja0xvb2tNSU1FVHlwZTsKLSAgICB9Ci0jZWxzZQorI2lmICFVU0UoUVVJQ0tfTE9P
SykKICAgICBVTlVTRURfUEFSQU0oaXNNYWluUmVzb3VyY2VMb2FkKTsKKyNlbHNlCisgICAgLy8g
RW5zdXJlIHRoYXQgdGhlIE1JTUUgdHlwZSBpcyBjb3JyZWN0IHNvIHRoYXQgUXVpY2tMb29rJ3Mg
d2ViIHBsdWctaW4gaXMgY2FsbGVkIHdoZW4gbmVlZGVkLgorICAgIC8vIFRoZSBzaG91bGRVc2VR
dWlja0xvb2tGb3JNSU1FVHlwZSBmdW5jdGlvbiBmaWx0ZXJzIG91dCB0aGUgY29tbW9uIE1JTUUg
dHlwZXMgc28gd2UgZG9uJ3QgZG8gdW5uZWNlc3Nhcnkgd29yayBpbiB0aG9zZSBjYXNlcy4KKyAg
ICBpZiAoaXNNYWluUmVzb3VyY2VMb2FkICYmIHNob3VsZFVzZVF1aWNrTG9va0Zvck1JTUVUeXBl
KChfX2JyaWRnZSBOU1N0cmluZyAqKXR5cGUpKSB7CisgICAgICAgIFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gdXBkYXRlZFR5cGU7CisgICAgICAgIGF1dG8gc3VnZ2VzdGVkRmlsZW5hbWUgPSBhZG9w
dENGKENGVVJMUmVzcG9uc2VDb3B5U3VnZ2VzdGVkRmlsZW5hbWUocmVzcG9uc2UpKTsKKyAgICAg
ICAgaWYgKGF1dG8gcXVpY2tMb29rVHlwZSA9IGFkb3B0TlMoUEFMOjpzb2Z0TGlua19RdWlja0xv
b2tfUUxUeXBlQ29weUJlc3RNaW1lVHlwZUZvckZpbGVOYW1lQW5kTWltZVR5cGUoKF9fYnJpZGdl
IE5TU3RyaW5nICopc3VnZ2VzdGVkRmlsZW5hbWUuZ2V0KCksIChfX2JyaWRnZSBOU1N0cmluZyAq
KXR5cGUpKSkKKyAgICAgICAgICAgIHVwZGF0ZWRUeXBlID0gKF9fYnJpZGdlIENGU3RyaW5nUmVm
KXF1aWNrTG9va1R5cGUuZ2V0KCk7CisgICAgICAgIGVsc2UgaWYgKGF1dG8gZXh0ZW5zaW9uID0g
ZmlsZVBhdGhFeHRlbnNpb24ocmVzcG9uc2UpKQorICAgICAgICAgICAgdXBkYXRlZFR5cGUgPSBw
cmVmZXJyZWRNSU1FVHlwZUZvckZpbGVFeHRlbnNpb25Gcm9tVVRUeXBlKGV4dGVuc2lvbi5nZXQo
KSk7CisgICAgICAgIGlmICh1cGRhdGVkVHlwZSAmJiAoIXR5cGUgfHwgQ0ZTdHJpbmdDb21wYXJl
KHR5cGUsIHVwZGF0ZWRUeXBlLmdldCgpLCBrQ0ZDb21wYXJlQ2FzZUluc2Vuc2l0aXZlKSAhPSBr
Q0ZDb21wYXJlRXF1YWxUbykpCisgICAgICAgICAgICBDRlVSTFJlc3BvbnNlU2V0TUlNRVR5cGUo
cmVzcG9uc2UsIHVwZGF0ZWRUeXBlLmdldCgpKTsKKyAgICB9CiAjZW5kaWYgLy8gVVNFKFFVSUNL
X0xPT0spCi0gICAgaWYgKCFtaW1lVHlwZSB8fCBDRlN0cmluZ0NvbXBhcmUobWltZVR5cGUuZ2V0
KCksIHVwZGF0ZWRNSU1FVHlwZS5nZXQoKSwga0NGQ29tcGFyZUNhc2VJbnNlbnNpdGl2ZSkgIT0g
a0NGQ29tcGFyZUVxdWFsVG8pCi0gICAgICAgIENGVVJMUmVzcG9uc2VTZXRNSU1FVHlwZShjZlJl
c3BvbnNlLCB1cGRhdGVkTUlNRVR5cGUuZ2V0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9OZXR3
b3JrU3RhdGVOb3RpZmllck1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9OZXR3b3JrU3RhdGVOb3RpZmllck1hYy5jcHAKaW5kZXggODZjNzkyOWI4NzBmNGRlOWMz
ZTE2MTViMTVhMmZlYjRmNDM5MGQwZS4uZGQ5N2NlYTRkODljZDdkYjAwYjY0NDA0MDVjMWUwM2Vj
Nzg4ZDI4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
TmV0d29ya1N0YXRlTm90aWZpZXJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL05ldHdvcmtTdGF0ZU5vdGlmaWVyTWFjLmNwcApAQCAtMjksMjMgKzI5LDI0
IEBACiAjaWYgUExBVEZPUk0oTUFDKQogCiAjaW5jbHVkZSA8U3lzdGVtQ29uZmlndXJhdGlvbi9T
eXN0ZW1Db25maWd1cmF0aW9uLmg+CisjaW5jbHVkZSA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBOZXR3b3JrU3RhdGVOb3RpZmllcjo6dXBkYXRl
U3RhdGVXaXRob3V0Tm90aWZ5aW5nKCkKIHsKICAgICBhdXRvIGtleSA9IGFkb3B0Q0YoU0NEeW5h
bWljU3RvcmVLZXlDcmVhdGVOZXR3b3JrSW50ZXJmYWNlKDAsIGtTQ0R5bmFtaWNTdG9yZURvbWFp
blN0YXRlKSk7Ci0gICAgYXV0byBwcm9wZXJ0eUxpc3QgPSBhZG9wdENGKFNDRHluYW1pY1N0b3Jl
Q29weVZhbHVlKG1fc3RvcmUuZ2V0KCksIGtleS5nZXQoKSkpOwotICAgIGlmICghcHJvcGVydHlM
aXN0IHx8IENGR2V0VHlwZUlEKHByb3BlcnR5TGlzdC5nZXQoKSkgIT0gQ0ZEaWN0aW9uYXJ5R2V0
VHlwZUlEKCkpCisgICAgYXV0byBwcm9wZXJ0eUxpc3QgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZEaWN0
aW9uYXJ5UmVmPihhZG9wdENGKFNDRHluYW1pY1N0b3JlQ29weVZhbHVlKG1fc3RvcmUuZ2V0KCks
IGtleS5nZXQoKSkpKTsKKyAgICBpZiAoIXByb3BlcnR5TGlzdCkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgYXV0byBuZXRJbnRlcmZhY2VzID0gQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoKENGRGljdGlv
bmFyeVJlZilwcm9wZXJ0eUxpc3QuZ2V0KCksIGtTQ0R5bmFtaWNTdG9yZVByb3BOZXRJbnRlcmZh
Y2VzKTsKLSAgICBpZiAoIW5ldEludGVyZmFjZXMgfHwgQ0ZHZXRUeXBlSUQobmV0SW50ZXJmYWNl
cykgIT0gQ0ZBcnJheUdldFR5cGVJRCgpKQorICAgIGF1dG8gbmV0SW50ZXJmYWNlcyA9IGR5bmFt
aWNfY2ZfY2FzdDxDRkFycmF5UmVmPihDRkRpY3Rpb25hcnlHZXRWYWx1ZShwcm9wZXJ0eUxpc3Qu
Z2V0KCksIGtTQ0R5bmFtaWNTdG9yZVByb3BOZXRJbnRlcmZhY2VzKSk7CisgICAgaWYgKCFuZXRJ
bnRlcmZhY2VzKQogICAgICAgICByZXR1cm47CiAKLSAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkg
PCBDRkFycmF5R2V0Q291bnQoKENGQXJyYXlSZWYpbmV0SW50ZXJmYWNlcyk7IGkrKykgewotICAg
ICAgICBhdXRvIGludGVyZmFjZU5hbWUgPSAoQ0ZTdHJpbmdSZWYpQ0ZBcnJheUdldFZhbHVlQXRJ
bmRleCgoQ0ZBcnJheVJlZiluZXRJbnRlcmZhY2VzLCBpKTsKLSAgICAgICAgaWYgKENGR2V0VHlw
ZUlEKGludGVyZmFjZU5hbWUpICE9IENGU3RyaW5nR2V0VHlwZUlEKCkpCisgICAgZm9yIChDRklu
ZGV4IGkgPSAwOyBpIDwgQ0ZBcnJheUdldENvdW50KG5ldEludGVyZmFjZXMpOyBpKyspIHsKKyAg
ICAgICAgYXV0byBpbnRlcmZhY2VOYW1lID0gZHluYW1pY19jZl9jYXN0PENGU3RyaW5nUmVmPihD
RkFycmF5R2V0VmFsdWVBdEluZGV4KG5ldEludGVyZmFjZXMsIGkpKTsKKyAgICAgICAgaWYgKCFp
bnRlcmZhY2VOYW1lKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgLy8gSWdub3Jl
IHRoZSBsb29wYmFjayBpbnRlcmZhY2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5oCmluZGV4IDVkMTg5NWYzMzVjYTgzNDE3N2E5MjJh
YWVhNDZjYzY3ZjdmMGU1NGUuLjgyNTE3YjdlYjNhOWY4MzQ3ZjQwYTc0NDY4ZTdmMTEyMjhmMmU3
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0
aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0
aWxpdGllcy5oCkBAIC0zMCw3ICszMCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdFQkNP
UkVfRVhQT1JUIFN0cmluZyBNSU1FVHlwZUZyb21VVEkoY29uc3QgU3RyaW5nJik7Ci1TdHJpbmcg
TUlNRVR5cGVGcm9tVVRJVHJlZShjb25zdCBTdHJpbmcmKTsKK1JldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gbWltZVR5cGVGcm9tVVRJVHJlZShDRlN0cmluZ1JlZik7CiBXRUJDT1JFX0VYUE9SVCBTdHJp
bmcgVVRJRnJvbU1JTUVUeXBlKGNvbnN0IFN0cmluZyYpOwogYm9vbCBpc0RlY2xhcmVkVVRJKGNv
bnN0IFN0cmluZyYpOwogV0VCQ09SRV9FWFBPUlQgU3RyaW5nIFVUSUZyb21UYWcoY29uc3QgU3Ry
aW5nJiB0YWdDbGFzcywgY29uc3QgU3RyaW5nJiB0YWcsIGNvbnN0IFN0cmluZyYgY29uZm9ybWlu
Z1RvVVRJKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFj
L1VUSVV0aWxpdGllcy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1VU
SVV0aWxpdGllcy5tbQppbmRleCBjZWJiY2E1YjI0Y2JmOGQwYzBlMThmZGIyNDg0ZTA4MjQ4Y2Iz
NjAxLi40MjA0YTQxY2RhZDk2ZmRiZTFjY2JiYzFjZGEzODA4MDI4YTE2MTRmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLm1tCkBA
IC00NSw0NCArNDUsMzcgQEAgQUxMT1dfREVQUkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KIEFM
TE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogfQogCi1TdHJpbmcgTUlNRVR5cGVGcm9t
VVRJVHJlZShjb25zdCBTdHJpbmcmIHV0aSkKK1JldGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZVR5
cGVGcm9tVVRJVHJlZShDRlN0cmluZ1JlZiB1dGkpCiB7Ci0gICAgYXV0byB1dGlDRiA9IHV0aS5j
cmVhdGVDRlN0cmluZygpOwotCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgog
ICAgIC8vIENoZWNrIGlmIHRoaXMgVVRJIGhhcyBhIE1JTUUgdHlwZS4KLSAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IG1pbWVUeXBlID0gYWRvcHRDRihVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0
aENsYXNzKHV0aUNGLmdldCgpLCBrVVRUYWdDbGFzc01JTUVUeXBlKSk7Ci0gICAgaWYgKG1pbWVU
eXBlKQotICAgICAgICByZXR1cm4gbWltZVR5cGUuZ2V0KCk7CisgICAgaWYgKGF1dG8gdHlwZSA9
IGFkb3B0Q0YoVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh1dGksIGtVVFRhZ0NsYXNz
TUlNRVR5cGUpKSkKKyAgICAgICAgcmV0dXJuIHR5cGU7CiAKICAgICAvLyBJZiBub3QsIHdhbGsg
dGhlIGFuY2VzdG9yeSBvZiB0aGlzIFVUSSB2aWEgaXRzICJDb25mb3Jtc1RvIiB0YWdzIGFuZCBy
ZXR1cm4gdGhlIGZpcnN0IE1JTUUgdHlwZSB3ZSBmaW5kLgotICAgIFJldGFpblB0cjxDRkRpY3Rp
b25hcnlSZWY+IGRlY2wgPSBhZG9wdENGKFVUVHlwZUNvcHlEZWNsYXJhdGlvbih1dGlDRi5nZXQo
KSkpOwotICAgIGlmICghZGVjbCkKLSAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0gICAg
Q0ZUeXBlUmVmIHZhbHVlID0gQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGVjbC5nZXQoKSwga1VUVHlw
ZUNvbmZvcm1zVG9LZXkpOworICAgIGF1dG8gZGVjbGFyYXRpb24gPSBhZG9wdENGKFVUVHlwZUNv
cHlEZWNsYXJhdGlvbih1dGkpKTsKKyAgICBpZiAoIWRlY2xhcmF0aW9uKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIGF1dG8gdmFsdWUgPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShkZWNs
YXJhdGlvbi5nZXQoKSwga1VUVHlwZUNvbmZvcm1zVG9LZXkpOwogQUxMT1dfREVQUkVDQVRFRF9E
RUNMQVJBVElPTlNfRU5ECiAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIGVtcHR5U3Ry
aW5nKCk7Ci0gICAgQ0ZUeXBlSUQgdHlwZUlEID0gQ0ZHZXRUeXBlSUQodmFsdWUpOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGlmICh0eXBlSUQgPT0gQ0ZTdHJpbmdHZXRUeXBlSUQo
KSkKLSAgICAgICAgcmV0dXJuIE1JTUVUeXBlRnJvbVVUSVRyZWUoKENGU3RyaW5nUmVmKXZhbHVl
KTsKKyAgICBpZiAoYXV0byBzdHJpbmcgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZTdHJpbmdSZWY+KHZh
bHVlKSkKKyAgICAgICAgcmV0dXJuIG1pbWVUeXBlRnJvbVVUSVRyZWUoc3RyaW5nKTsKIAotICAg
IGlmICh0eXBlSUQgPT0gQ0ZBcnJheUdldFR5cGVJRCgpKSB7Ci0gICAgICAgIENGQXJyYXlSZWYg
bmV3VHlwZXMgPSAoQ0ZBcnJheVJlZil2YWx1ZTsKLSAgICAgICAgQ0ZJbmRleCBjb3VudCA9IENG
QXJyYXlHZXRDb3VudChuZXdUeXBlcyk7CisgICAgaWYgKGF1dG8gYXJyYXkgPSBkeW5hbWljX2Nm
X2Nhc3Q8Q0ZBcnJheVJlZj4odmFsdWUpKSB7CisgICAgICAgIENGSW5kZXggY291bnQgPSBDRkFy
cmF5R2V0Q291bnQoYXJyYXkpOwogICAgICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBjb3Vu
dDsgKytpKSB7Ci0gICAgICAgICAgICBDRlR5cGVSZWYgb2JqZWN0ID0gQ0ZBcnJheUdldFZhbHVl
QXRJbmRleChuZXdUeXBlcywgaSk7Ci0gICAgICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQob2JqZWN0
KSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0g
ICAgICAgICAgICBTdHJpbmcgbWltZVR5cGUgPSBNSU1FVHlwZUZyb21VVElUcmVlKChDRlN0cmlu
Z1JlZilvYmplY3QpOwotICAgICAgICAgICAgaWYgKCFtaW1lVHlwZS5pc0VtcHR5KCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIG1pbWVUeXBlOworICAgICAgICAgICAgaWYgKGF1dG8gc3RyaW5n
ID0gZHluYW1pY19jZl9jYXN0PENGU3RyaW5nUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGFy
cmF5LCBpKSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byB0eXBlID0gbWltZVR5cGVGcm9t
VVRJVHJlZShzdHJpbmcpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHlwZTsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBlbXB0eVN0cmluZygpOwor
ICAgIHJldHVybiBudWxscHRyOwogfQogCiBzdGF0aWMgQ0ZTdHJpbmdSZWYgVVRJRnJvbVVua25v
d25NSU1FVHlwZShTdHJpbmdWaWV3IG1pbWVUeXBlKQpAQCAtMTM3LDcgKzEzMCw3IEBAIFN0cmlu
ZyBVVElGcm9tVGFnKGNvbnN0IFN0cmluZyYgdGFnQ2xhc3MsIGNvbnN0IFN0cmluZyYgdGFnLCBj
b25zdCBTdHJpbmcmIGNvbmZvCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgog
ICAgIGF1dG8gdSA9IGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRh
Zyh0YWdDbGFzcy5jcmVhdGVDRlN0cmluZygpLmdldCgpLCB0YWcuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSwgY29uZm9ybWluZ1RvVVRJLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpKTsKIEFMTE9XX0RF
UFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotICAgIHJldHVybiBTdHJpbmcodS5nZXQoKSk7Cisg
ICAgcmV0dXJuIHUuZ2V0KCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLmgKaW5kZXggZTYxODdiOTc3
Yjk4MmNhNTQyOTM5ZjY4YjlhMTI1NzkzMWMxMWM2Ni4uZDJiNGQ1ZTI1MmY0NDYwNTJkMTUxYjQ5
ZWE4Mjk1YTZkYWFhNWU0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLmgKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw0ICszOCw3IEBAIFdF
QkNPUkVfRVhQT1JUIE5TVVJMUmVzcG9uc2UgKnN5bnRoZXNpemVSZWRpcmVjdFJlc3BvbnNlSWZO
ZWNlc3NhcnkoTlNVUkxSZXF1ZXN0CiAKIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRqdXN0TUlNRVR5
cGVJZk5lY2Vzc2FyeShDRlVSTFJlc3BvbnNlUmVmLCBib29sIGlzTWFpblJlc291cmNlTG9hZCk7
CiAKK1JldGFpblB0cjxDRlN0cmluZ1JlZj4gZmlsZVBhdGhFeHRlbnNpb24oQ0ZVUkxSZXNwb25z
ZVJlZik7CitSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IHByZWZlcnJlZE1JTUVUeXBlRm9yRmlsZUV4
dGVuc2lvbkZyb21VVFR5cGUoQ0ZTdHJpbmdSZWYgZXh0ZW5zaW9uKTsKKwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNl
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3Bv
bnNlLm1tCmluZGV4IDRmYTUwZTQ2YjA5NDk2Y2RlZTA3Mzk2NDVjODRmMWQ3YTQ2OWZmY2QuLmRl
M2JiNmE3MDc2OGRjOGFlNThkMGNkZWJhMGE0ODBhZThiZmJlZjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2Uu
bW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOC0y
MDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzksMjk5ICszOSwxNDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
I2lmIFBMQVRGT1JNKE1BQykKLS8vIDxyZGFyOi8vcHJvYmxlbS83MDA3Mzg5PiBDb3JlVHlwZXMg
VVRJIG1hcCBpcyBtaXNzaW5nIDEwMCsgZmlsZSBleHRlbnNpb25zIHRoYXQgR2F0ZUtlZXBlciBr
bmV3IGFib3V0Ci0vLyBXaGVuIHdlIGRpc2FibGVkIGNvbnRlbnQgc25pZmZpbmcgZm9yIGZpbGUg
VVJMcyB3ZSBjYXVzZWQgcHJvYmxlbXMgd2l0aCB0aGVzZSAxMDArIGV4dGVuc2lvbnMgdGhhdCBD
b3JlVHlwZXMKLS8vIGRvZXNuJ3Qga25vdyBhYm91dC4KLS8vIElmIENvcmVUeXBlcyBpcyBldmVy
IGJyb3VnaHQgdXAgdG8gc3BlZWQgd2UgY2FuIHJlbW92ZSB0aGlzIHRhYmxlIGFuZCBhc3NvY2lh
dGVkIGNvZGUuCi1zdGF0aWMgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gY3JlYXRlRXh0ZW5z
aW9uVG9NSU1FVHlwZU1hcCgpCi17Ci0gICAgQ0ZTdHJpbmdSZWYga2V5c1tdID0gewotICAgICAg
ICBDRlNUUigiYWkiKSwKLSAgICAgICAgQ0ZTVFIoImFzYyIpLAotICAgICAgICBDRlNUUigiYmNw
aW8iKSwKLSAgICAgICAgQ0ZTVFIoImJtcCIpLAotICAgICAgICBDRlNUUigiY2RmIiksCi0gICAg
ICAgIENGU1RSKCJjbGFzcyIpLAotICAgICAgICBDRlNUUigiY3BneiIpLAotICAgICAgICBDRlNU
UigiY3BpbyIpLAotICAgICAgICBDRlNUUigiY3B0IiksCi0gICAgICAgIENGU1RSKCJjc2giKSwK
LSAgICAgICAgQ0ZTVFIoImNzcyIpLAotICAgICAgICBDRlNUUigiZGNyIiksCi0gICAgICAgIENG
U1RSKCJkaXIiKSwKLSAgICAgICAgQ0ZTVFIoImRtZyIpLAotICAgICAgICBDRlNUUigiZG1zIiks
Ci0gICAgICAgIENGU1RSKCJkdmkiKSwKLSAgICAgICAgQ0ZTVFIoImR4ciIpLAotICAgICAgICBD
RlNUUigiZXBzIiksCi0gICAgICAgIENGU1RSKCJldHgiKSwKLSAgICAgICAgQ0ZTVFIoImV6Iiks
Ci0gICAgICAgIENGU1RSKCJmZGYiKSwKLSAgICAgICAgQ0ZTVFIoImZsYSIpLAotICAgICAgICBD
RlNUUigiZnAiKSwKLSAgICAgICAgQ0ZTVFIoImZwMiIpLAotICAgICAgICBDRlNUUigiZnAzIiks
Ci0gICAgICAgIENGU1RSKCJmcDQiKSwKLSAgICAgICAgQ0ZTVFIoImZwNSIpLAotICAgICAgICBD
RlNUUigiZnA2IiksCi0gICAgICAgIENGU1RSKCJoZGYiKSwKLSAgICAgICAgQ0ZTVFIoImljZSIp
LAotICAgICAgICBDRlNUUigiaWNvIiksCi0gICAgICAgIENGU1RSKCJpY3MiKSwKLSAgICAgICAg
Q0ZTVFIoImllZiIpLAotICAgICAgICBDRlNUUigiaWdlcyIpLAotICAgICAgICBDRlNUUigiaWdz
IiksCi0gICAgICAgIENGU1RSKCJpc28iKSwKLSAgICAgICAgQ0ZTVFIoImpodG1sIiksCi0gICAg
ICAgIENGU1RSKCJsYXRleCIpLAotICAgICAgICBDRlNUUigibGhhIiksCi0gICAgICAgIENGU1RS
KCJsemgiKSwKLSAgICAgICAgQ0ZTVFIoIm0zdSIpLAotICAgICAgICBDRlNUUigibTRwIiksCi0g
ICAgICAgIENGU1RSKCJtYWMiKSwKLSAgICAgICAgQ0ZTVFIoIm1hbiIpLAotICAgICAgICBDRlNU
UigibWUiKSwKLSAgICAgICAgQ0ZTVFIoIm1lc2giKSwKLSAgICAgICAgQ0ZTVFIoIm1pZiIpLAot
ICAgICAgICBDRlNUUigibWpzIiksCi0gICAgICAgIENGU1RSKCJtb3ZpZSIpLAotICAgICAgICBD
RlNUUigibXAyIiksCi0gICAgICAgIENGU1RSKCJtcGdhIiksCi0gICAgICAgIENGU1RSKCJtcyIp
LAotICAgICAgICBDRlNUUigibXNoIiksCi0gICAgICAgIENGU1RSKCJteHUiKSwKLSAgICAgICAg
Q0ZTVFIoIm5jIiksCi0gICAgICAgIENGU1RSKCJvZGEiKSwKLSAgICAgICAgQ0ZTVFIoInBibSIp
LAotICAgICAgICBDRlNUUigicGN4IiksCi0gICAgICAgIENGU1RSKCJwZGIiKSwKLSAgICAgICAg
Q0ZTVFIoInBnbSIpLAotICAgICAgICBDRlNUUigicGduIiksCi0gICAgICAgIENGU1RSKCJwbHMi
KSwKLSAgICAgICAgQ0ZTVFIoInBubSIpLAotICAgICAgICBDRlNUUigicG50IiksCi0gICAgICAg
IENGU1RSKCJwbnRnIiksCi0gICAgICAgIENGU1RSKCJwcG0iKSwKLSAgICAgICAgQ0ZTVFIoInJh
cyIpLAotICAgICAgICBDRlNUUigicmdiIiksCi0gICAgICAgIENGU1RSKCJyb2ZmIiksCi0gICAg
ICAgIENGU1RSKCJycG0iKSwKLSAgICAgICAgQ0ZTVFIoInJ0eCIpLAotICAgICAgICBDRlNUUigi
c2dtIiksCi0gICAgICAgIENGU1RSKCJzZ21sIiksCi0gICAgICAgIENGU1RSKCJzaCIpLAotICAg
ICAgICBDRlNUUigic2hhciIpLAotICAgICAgICBDRlNUUigic2lsbyIpLAotICAgICAgICBDRlNU
Uigic2tkIiksCi0gICAgICAgIENGU1RSKCJza20iKSwKLSAgICAgICAgQ0ZTVFIoInNrcCIpLAot
ICAgICAgICBDRlNUUigic2t0IiksCi0gICAgICAgIENGU1RSKCJzbWkiKSwKLSAgICAgICAgQ0ZT
VFIoInNvIiksCi0gICAgICAgIENGU1RSKCJzcGwiKSwKLSAgICAgICAgQ0ZTVFIoInNyYyIpLAot
ICAgICAgICBDRlNUUigic3Y0Y3BpbyIpLAotICAgICAgICBDRlNUUigic3Y0Y3JjIiksCi0gICAg
ICAgIENGU1RSKCJzd2YiKSwKLSAgICAgICAgQ0ZTVFIoInQiKSwKLSAgICAgICAgQ0ZTVFIoInRh
cmdhIiksCi0gICAgICAgIENGU1RSKCJ0Y2wiKSwKLSAgICAgICAgQ0ZTVFIoInRleCIpLAotICAg
ICAgICBDRlNUUigidGV4aSIpLAotICAgICAgICBDRlNUUigidGV4aW5mbyIpLAotICAgICAgICBD
RlNUUigidGd6IiksCi0gICAgICAgIENGU1RSKCJ0b3JyZW50IiksCi0gICAgICAgIENGU1RSKCJ0
ciIpLAotICAgICAgICBDRlNUUigidHN2IiksCi0gICAgICAgIENGU1RSKCJ1c3RhciIpLAotICAg
ICAgICBDRlNUUigidmNkIiksCi0gICAgICAgIENGU1RSKCJ2cm1sIiksCi0gICAgICAgIENGU1RS
KCJ3Ym1wIiksCi0gICAgICAgIENGU1RSKCJ3YnhtbCIpLAotICAgICAgICBDRlNUUigid2ViYXJj
aGl2ZSIpLAotICAgICAgICBDRlNUUigid2VibSIpLAotICAgICAgICBDRlNUUigid21kIiksCi0g
ICAgICAgIENGU1RSKCJ3bWwiKSwKLSAgICAgICAgQ0ZTVFIoIndtbGMiKSwKLSAgICAgICAgQ0ZT
VFIoIndtbHMiKSwKLSAgICAgICAgQ0ZTVFIoIndtbHNjIiksCi0gICAgICAgIENGU1RSKCJ3cmwi
KSwKLSAgICAgICAgQ0ZTVFIoInhkcCIpLAotICAgICAgICBDRlNUUigieGZkIiksCi0gICAgICAg
IENGU1RSKCJ4ZmRmIiksCi0gICAgICAgIENGU1RSKCJ4cG0iKSwKLSAgICAgICAgQ0ZTVFIoInhz
bCIpLAotICAgICAgICBDRlNUUigieHdkIiksCi0gICAgICAgIENGU1RSKCJ4eXoiKSwKLSAgICAg
ICAgQ0ZTVFIoInoiKQotICAgIH07Ci0KLSAgICBDRlN0cmluZ1JlZiB2YWx1ZXNbXSA9IHsKLSAg
ICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3Bvc3RzY3JpcHQiKSwKLSAgICAgICAgQ0ZTVFIoInRl
eHQvcGxhaW4iKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gtYmNwaW8iKSwKLSAgICAg
ICAgQ0ZTVFIoImltYWdlL2JtcCIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC1uZXRj
ZGYiKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIpLAotICAgICAg
ICBDRlNUUigiYXBwbGljYXRpb24veC1nemlwIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlv
bi94LWNwaW8iKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL21hYy1jb21wYWN0cHJvIiks
Ci0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LWNzaCIpLAotICAgICAgICBDRlNUUigidGV4
dC9jc3MiKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gtZGlyZWN0b3IiKSwKLSAgICAg
ICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gtZGlyZWN0b3IiKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxp
Y2F0aW9uL3gtZGlza2NvcHkiKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL29jdGV0LXN0
cmVhbSIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC1kdmkiKSwKLSAgICAgICAgQ0ZT
VFIoImFwcGxpY2F0aW9uL3gtZGlyZWN0b3IiKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9u
L3Bvc3RzY3JpcHQiKSwKLSAgICAgICAgQ0ZTVFIoInRleHQveC1zZXRleHQiKSwKLSAgICAgICAg
Q0ZTVFIoImFwcGxpY2F0aW9uL2FuZHJldy1pbnNldCIpLAotICAgICAgICBDRlNUUigiYXBwbGlj
YXRpb24vdm5kLmZkZiIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFt
IiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LWZpbGVtYWtlciIpLAotICAgICAgICBD
RlNUUigiYXBwbGljYXRpb24veC1maWxlbWFrZXIiKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0
aW9uL3gtZmlsZW1ha2VyIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LWZpbGVtYWtl
ciIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC1maWxlbWFrZXIiKSwKLSAgICAgICAg
Q0ZTVFIoImFwcGxpY2F0aW9uL3gtZmlsZW1ha2VyIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNh
dGlvbi94LWhkZiIpLAotICAgICAgICBDRlNUUigieC1jb25mZXJlbmNlL3gtY29vbHRhbGsiKSwK
LSAgICAgICAgQ0ZTVFIoImltYWdlL3gtaWNvbiIpLAotICAgICAgICBDRlNUUigidGV4dC9jYWxl
bmRhciIpLAotICAgICAgICBDRlNUUigiaW1hZ2UvaWVmIiksCi0gICAgICAgIENGU1RSKCJtb2Rl
bC9pZ2VzIiksCi0gICAgICAgIENGU1RSKCJtb2RlbC9pZ2VzIiksCi0gICAgICAgIENGU1RSKCJh
cHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iKSwKLSAgICAgICAgQ0ZTVFIoInRleHQvaHRtbCIpLAot
ICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC1sYXRleCIpLAotICAgICAgICBDRlNUUigiYXBw
bGljYXRpb24vb2N0ZXQtc3RyZWFtIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi9vY3Rl
dC1zdHJlYW0iKSwKLSAgICAgICAgQ0ZTVFIoImF1ZGlvL3gtbXBlZ3VybCIpLAotICAgICAgICBD
RlNUUigiYXVkaW8veC1tNHAiKSwKLSAgICAgICAgQ0ZTVFIoImltYWdlL3gtbWFjcGFpbnQiKSwK
LSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gtdHJvZmYtbWFuIiksCi0gICAgICAgIENGU1RS
KCJhcHBsaWNhdGlvbi94LXRyb2ZmLW1lIiksCi0gICAgICAgIENGU1RSKCJtb2RlbC9tZXNoIiks
Ci0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi92bmQubWlmIiksCi0gICAgICAgIENGU1RSKCJ0
ZXh0L2phdmFzY3JpcHQiKSwKLSAgICAgICAgQ0ZTVFIoInZpZGVvL3gtc2dpLW1vdmllIiksCi0g
ICAgICAgIENGU1RSKCJhdWRpby9tcGVnIiksCi0gICAgICAgIENGU1RSKCJhdWRpby9tcGVnIiks
Ci0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LXRyb2ZmLW1zIiksCi0gICAgICAgIENGU1RS
KCJtb2RlbC9tZXNoIiksCi0gICAgICAgIENGU1RSKCJ2aWRlby92bmQubXBlZ3VybCIpLAotICAg
ICAgICBDRlNUUigiYXBwbGljYXRpb24veC1uZXRjZGYiKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxp
Y2F0aW9uL29kYSIpLAotICAgICAgICBDRlNUUigiaW1hZ2UveC1wb3J0YWJsZS1iaXRtYXAiKSwK
LSAgICAgICAgQ0ZTVFIoImltYWdlL3gtcGN4IiksCi0gICAgICAgIENGU1RSKCJjaGVtaWNhbC94
LXBkYiIpLAotICAgICAgICBDRlNUUigiaW1hZ2UveC1wb3J0YWJsZS1ncmF5bWFwIiksCi0gICAg
ICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LWNoZXNzLXBnbiIpLAotICAgICAgICBDRlNUUigiYXVk
aW8vc2NwbHMiKSwKLSAgICAgICAgQ0ZTVFIoImltYWdlL3gtcG9ydGFibGUtYW55bWFwIiksCi0g
ICAgICAgIENGU1RSKCJpbWFnZS94LW1hY3BhaW50IiksCi0gICAgICAgIENGU1RSKCJpbWFnZS94
LW1hY3BhaW50IiksCi0gICAgICAgIENGU1RSKCJpbWFnZS94LXBvcnRhYmxlLXBpeG1hcCIpLAot
ICAgICAgICBDRlNUUigiaW1hZ2UveC1jbXUtcmFzdGVyIiksCi0gICAgICAgIENGU1RSKCJpbWFn
ZS94LXJnYiIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC10cm9mZiIpLAotICAgICAg
ICBDRlNUUigiYXVkaW8veC1wbi1yZWFsYXVkaW8tcGx1Z2luIiksCi0gICAgICAgIENGU1RSKCJ0
ZXh0L3JpY2h0ZXh0IiksCi0gICAgICAgIENGU1RSKCJ0ZXh0L3NnbWwiKSwKLSAgICAgICAgQ0ZT
VFIoInRleHQvc2dtbCIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC1zaCIpLAotICAg
ICAgICBDRlNUUigiYXBwbGljYXRpb24veC1zaGFyIiksCi0gICAgICAgIENGU1RSKCJtb2RlbC9t
ZXNoIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LWtvYW4iKSwKLSAgICAgICAgQ0ZT
VFIoImFwcGxpY2F0aW9uL3gta29hbiIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC1r
b2FuIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LWtvYW4iKSwKLSAgICAgICAgQ0ZT
VFIoImFwcGxpY2F0aW9uL3gtZGlza2NvcHkiKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9u
L29jdGV0LXN0cmVhbSIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC1mdXR1cmVzcGxh
c2giKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gtd2Fpcy1zb3VyY2UiKSwKLSAgICAg
ICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gtc3Y0Y3BpbyIpLAotICAgICAgICBDRlNUUigiYXBwbGlj
YXRpb24veC1zdjRjcmMiKSwKLSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZl
LWZsYXNoIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LXRyb2ZmIiksCi0gICAgICAg
IENGU1RSKCJpbWFnZS94LXRhcmdhIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LXRj
bCIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC10ZXgiKSwKLSAgICAgICAgQ0ZTVFIo
ImFwcGxpY2F0aW9uL3gtdGV4aW5mbyIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC10
ZXhpbmZvIiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LWd6aXAiKSwKLSAgICAgICAg
Q0ZTVFIoImFwcGxpY2F0aW9uL3gtYml0dG9ycmVudCIpLAotICAgICAgICBDRlNUUigiYXBwbGlj
YXRpb24veC10cm9mZiIpLAotICAgICAgICBDRlNUUigidGV4dC90YWItc2VwYXJhdGVkLXZhbHVl
cyIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC11c3RhciIpLAotICAgICAgICBDRlNU
UigiYXBwbGljYXRpb24veC1jZGxpbmsiKSwKLSAgICAgICAgQ0ZTVFIoIm1vZGVsL3ZybWwiKSwK
LSAgICAgICAgQ0ZTVFIoImltYWdlL3ZuZC53YXAud2JtcCIpLAotICAgICAgICBDRlNUUigiYXBw
bGljYXRpb24vdm5kLndhcC53YnhtbCIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24veC13
ZWJhcmNoaXZlIiksCi0gICAgICAgIENGU1RSKCJ2aWRlby93ZWJtIiksCi0gICAgICAgIENGU1RS
KCJhcHBsaWNhdGlvbi94LW1zLXdtZCIpLAotICAgICAgICBDRlNUUigidGV4dC92bmQud2FwLndt
bCIpLAotICAgICAgICBDRlNUUigiYXBwbGljYXRpb24vdm5kLndhcC53bWxjIiksCi0gICAgICAg
IENGU1RSKCJ0ZXh0L3ZuZC53YXAud21sc2NyaXB0IiksCi0gICAgICAgIENGU1RSKCJhcHBsaWNh
dGlvbi92bmQud2FwLndtbHNjcmlwdGMiKSwKLSAgICAgICAgQ0ZTVFIoIm1vZGVsL3ZybWwiKSwK
LSAgICAgICAgQ0ZTVFIoImFwcGxpY2F0aW9uL3ZuZC5hZG9iZS54ZHAreG1sIiksCi0gICAgICAg
IENGU1RSKCJhcHBsaWNhdGlvbi92bmQuYWRvYmUueGZkK3htbCIpLAotICAgICAgICBDRlNUUigi
YXBwbGljYXRpb24vdm5kLmFkb2JlLnhmZGYiKSwKLSAgICAgICAgQ0ZTVFIoImltYWdlL3gteHBp
eG1hcCIpLAotICAgICAgICBDRlNUUigidGV4dC94bWwiKSwKLSAgICAgICAgQ0ZTVFIoImltYWdl
L3gteHdpbmRvd2R1bXAiKSwKLSAgICAgICAgQ0ZTVFIoImNoZW1pY2FsL3gteHl6IiksCi0gICAg
ICAgIENGU1RSKCJhcHBsaWNhdGlvbi94LWNvbXByZXNzIikKLSAgICB9OwogCi0gICAgQVNTRVJU
KHNpemVvZihrZXlzKSA9PSBzaXplb2YodmFsdWVzKSk7Ci0gICAgcmV0dXJuIGFkb3B0Q0YoQ0ZE
aWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCB2b2lkKiopJmtleXMs
IChjb25zdCB2b2lkKiopJnZhbHVlcywgc2l6ZW9mKGtleXMpIC8gc2l6ZW9mKENGU3RyaW5nUmVm
KSwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1
ZUNhbGxCYWNrcykpOwotfQotCi12b2lkIGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoQ0ZVUkxS
ZXNwb25zZVJlZiBjZlJlc3BvbnNlLCBib29sIGlzTWFpblJlc291cmNlTG9hZCkKK3ZvaWQgYWRq
dXN0TUlNRVR5cGVJZk5lY2Vzc2FyeShDRlVSTFJlc3BvbnNlUmVmIHJlc3BvbnNlLCBib29sIC8q
aXNNYWluUmVzb3VyY2VMb2FkKi8pCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGlzTWFpblJlc291cmNl
TG9hZCk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiByZXN1bHQgPSBDRlVSTFJlc3BvbnNl
R2V0TUlNRVR5cGUoY2ZSZXNwb25zZSk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBvcmln
aW5hbFJlc3VsdCA9IHJlc3VsdDsKKyAgICBpZiAoQ0ZVUkxSZXNwb25zZUdldE1JTUVUeXBlKHJl
c3BvbnNlKSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAg
YXV0byB1cmwgPSBDRlVSTFJlc3BvbnNlR2V0VVJMKGNmUmVzcG9uc2UpOwotICAgICAgICBpZiAo
WyhfX2JyaWRnZSBOU1VSTCAqKXVybCBpc0ZpbGVVUkxdKSB7Ci0gICAgICAgICAgICBSZXRhaW5Q
dHI8Q0ZTdHJpbmdSZWY+IGV4dGVuc2lvbiA9IGFkb3B0Q0YoQ0ZVUkxDb3B5UGF0aEV4dGVuc2lv
bih1cmwpKTsKLSAgICAgICAgICAgIGlmIChleHRlbnNpb24pIHsKLSAgICAgICAgICAgICAgICAv
LyA8cmRhcjovL3Byb2JsZW0vNzAwNzM4OT4gQ29yZVR5cGVzIFVUSSBtYXAgaXMgbWlzc2luZyAx
MDArIGZpbGUgZXh0ZW5zaW9ucyB0aGF0IEdhdGVLZWVwZXIga25ldyBhYm91dAotICAgICAgICAg
ICAgICAgIC8vIFdoZW4gdGhpcyByYWRhciBpcyByZXNvbHZlZCwgd2UgY2FuIHJlbW92ZSB0aGlz
IGZpbGU6Ly8gdXJsIHNwZWNpZmljIGNvZGUuCi0gICAgICAgICAgICAgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+PiBleHRlbnNpb25NYXAgPSBjcmVh
dGVFeHRlbnNpb25Ub01JTUVUeXBlTWFwKCk7Ci0gICAgICAgICAgICAgICAgYXV0byBtdXRhYmxl
RXh0ZW5zaW9uID0gYWRvcHRDRihDRlN0cmluZ0NyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRv
ckRlZmF1bHQsIDAsIGV4dGVuc2lvbi5nZXQoKSkpOwotICAgICAgICAgICAgICAgIENGU3RyaW5n
TG93ZXJjYXNlKG11dGFibGVFeHRlbnNpb24uZ2V0KCksIE5VTEwpOwotICAgICAgICAgICAgICAg
IGV4dGVuc2lvbiA9IFdURk1vdmUobXV0YWJsZUV4dGVuc2lvbik7Ci0gICAgICAgICAgICAgICAg
cmVzdWx0ID0gKENGU3RyaW5nUmVmKUNGRGljdGlvbmFyeUdldFZhbHVlKGV4dGVuc2lvbk1hcC5n
ZXQoKS5nZXQoKSwgZXh0ZW5zaW9uLmdldCgpKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgR2F0
ZWtlZXBlci1iYXNlZCBtYXAgZG9lc24ndCBoYXZlIGEgTUlNRSB0eXBlLCB3ZSdsbCB0cnkgdG8g
ZmlndXJlIG91dCB3aGF0IGl0IHNob3VsZCBiZSBieQotICAgICAgICAgICAgICAgICAgICAvLyBs
b29raW5nIHVwIHRoZSBmaWxlIGV4dGVuc2lvbiBpbiB0aGUgVVRJIG1hcHMuCi1BTExPV19ERVBS
RUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgotICAgICAgICAgICAgICAgICAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IHV0aSA9IGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmll
ckZvclRhZyhrVVRUYWdDbGFzc0ZpbGVuYW1lRXh0ZW5zaW9uLCBleHRlbnNpb24uZ2V0KCksIDAp
KTsKLUFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAotICAgICAgICAgICAgICAgICAg
ICBTdHJpbmcgTUlNRVR5cGUgPSBNSU1FVHlwZUZyb21VVElUcmVlKHV0aS5nZXQoKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmICghTUlNRVR5cGUuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0ID0gTUlNRVR5cGUuY3JlYXRlQ0ZTdHJpbmcoKTsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgaWYgKCFy
ZXN1bHQpIHsKLSAgICAgICAgc3RhdGljIENGU3RyaW5nUmVmIGRlZmF1bHRNSU1FVHlwZVN0cmlu
ZyA9IFdlYkNvcmU6OmRlZmF1bHRNSU1FVHlwZSgpLmNyZWF0ZUNGU3RyaW5nKCkubGVha1JlZigp
OwotICAgICAgICByZXN1bHQgPSBkZWZhdWx0TUlNRVR5cGVTdHJpbmc7CisgICAgUmV0YWluUHRy
PENGU3RyaW5nUmVmPiB0eXBlOworCisgICAgaWYgKGF1dG8gZXh0ZW5zaW9uID0gZmlsZVBhdGhF
eHRlbnNpb24ocmVzcG9uc2UpKSB7CisgICAgICAgIC8vIDxyZGFyOi8vcHJvYmxlbS83MDA3Mzg5
PiBDb3JlVHlwZXMgVVRJIG1hcCBpcyBtaXNzaW5nIDEwMCsgZmlsZSBleHRlbnNpb25zIHRoYXQg
R2F0ZUtlZXBlciBrbmV3IGFib3V0CisgICAgICAgIC8vIE9uY2UgVVRUeXBlIG1hdGNoZXMgb25l
IG9mIHRoZXNlIG1hcHBpbmdzIG9uIGFsbCB2ZXJzaW9ucyBvZiBtYWNPUyB3ZSBzdXBwb3J0LCB3
ZSBjYW4gcmVtb3ZlIHRoYXQgcGFpci4KKyAgICAgICAgLy8gQWx0ZXJuYXRpdmVseSwgd2UgY291
bGQgcmVtb3ZlIGFueSBwYWlycyB0aGF0IHdlIGRldGVybWluZSB3ZSBubyBsb25nZXIgbmVlZC4K
KyAgICAgICAgLy8gQW5kIHRoZW4gcmVtb3ZlIHRoaXMgY29kZSBlbnRpcmVseSBvbmNlIHRoZXkg
YXJlIGFsbCBnb25lLgorICAgICAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6cGFpcjxDb21wYXJh
YmxlTGV0dGVyc0xpdGVyYWwsIE5TU3RyaW5nICo+IGV4dGVuc2lvblBhaXJzW10gPSB7CisgICAg
ICAgICAgICB7ICJhaSIsIEAiYXBwbGljYXRpb24vcG9zdHNjcmlwdCIgfSwKKyAgICAgICAgICAg
IHsgImFzYyIsIEAidGV4dC9wbGFpbiIgfSwKKyAgICAgICAgICAgIHsgImJjcGlvIiwgQCJhcHBs
aWNhdGlvbi94LWJjcGlvIiB9LAorICAgICAgICAgICAgeyAiYm1wIiwgQCJpbWFnZS9ibXAiIH0s
CisgICAgICAgICAgICB7ICJjZGYiLCBAImFwcGxpY2F0aW9uL3gtbmV0Y2RmIiB9LAorICAgICAg
ICAgICAgeyAiY2xhc3MiLCBAImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIgfSwKKyAgICAgICAg
ICAgIHsgImNwZ3oiLCBAImFwcGxpY2F0aW9uL3gtZ3ppcCIgfSwKKyAgICAgICAgICAgIHsgImNw
aW8iLCBAImFwcGxpY2F0aW9uL3gtY3BpbyIgfSwKKyAgICAgICAgICAgIHsgImNwdCIsIEAiYXBw
bGljYXRpb24vbWFjLWNvbXBhY3Rwcm8iIH0sCisgICAgICAgICAgICB7ICJjc2giLCBAImFwcGxp
Y2F0aW9uL3gtY3NoIiB9LAorICAgICAgICAgICAgeyAiY3NzIiwgQCJ0ZXh0L2NzcyIgfSwKKyAg
ICAgICAgICAgIHsgImRjciIsIEAiYXBwbGljYXRpb24veC1kaXJlY3RvciIgfSwKKyAgICAgICAg
ICAgIHsgImRpciIsIEAiYXBwbGljYXRpb24veC1kaXJlY3RvciIgfSwKKyAgICAgICAgICAgIHsg
ImRtZyIsIEAiYXBwbGljYXRpb24veC1kaXNrY29weSIgfSwKKyAgICAgICAgICAgIHsgImRtcyIs
IEAiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIiB9LAorICAgICAgICAgICAgeyAiZHZpIiwgQCJh
cHBsaWNhdGlvbi94LWR2aSIgfSwKKyAgICAgICAgICAgIHsgImR4ciIsIEAiYXBwbGljYXRpb24v
eC1kaXJlY3RvciIgfSwKKyAgICAgICAgICAgIHsgImVwcyIsIEAiYXBwbGljYXRpb24vcG9zdHNj
cmlwdCIgfSwKKyAgICAgICAgICAgIHsgImV0eCIsIEAidGV4dC94LXNldGV4dCIgfSwKKyAgICAg
ICAgICAgIHsgImV6IiwgQCJhcHBsaWNhdGlvbi9hbmRyZXctaW5zZXQiIH0sCisgICAgICAgICAg
ICB7ICJmZGYiLCBAImFwcGxpY2F0aW9uL3ZuZC5mZGYiIH0sCisgICAgICAgICAgICB7ICJmbGEi
LCBAImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIgfSwKKyAgICAgICAgICAgIHsgImZwIiwgQCJh
cHBsaWNhdGlvbi94LWZpbGVtYWtlciIgfSwKKyAgICAgICAgICAgIHsgImZwMiIsIEAiYXBwbGlj
YXRpb24veC1maWxlbWFrZXIiIH0sCisgICAgICAgICAgICB7ICJmcDMiLCBAImFwcGxpY2F0aW9u
L3gtZmlsZW1ha2VyIiB9LAorICAgICAgICAgICAgeyAiZnA0IiwgQCJhcHBsaWNhdGlvbi94LWZp
bGVtYWtlciIgfSwKKyAgICAgICAgICAgIHsgImZwNSIsIEAiYXBwbGljYXRpb24veC1maWxlbWFr
ZXIiIH0sCisgICAgICAgICAgICB7ICJmcDYiLCBAImFwcGxpY2F0aW9uL3gtZmlsZW1ha2VyIiB9
LAorICAgICAgICAgICAgeyAiaGRmIiwgQCJhcHBsaWNhdGlvbi94LWhkZiIgfSwKKyAgICAgICAg
ICAgIHsgImljZSIsIEAieC1jb25mZXJlbmNlL3gtY29vbHRhbGsiIH0sCisgICAgICAgICAgICB7
ICJpY28iLCBAImltYWdlL3gtaWNvbiIgfSwKKyAgICAgICAgICAgIHsgImljcyIsIEAidGV4dC9j
YWxlbmRhciIgfSwKKyAgICAgICAgICAgIHsgImllZiIsIEAiaW1hZ2UvaWVmIiB9LAorICAgICAg
ICAgICAgeyAiaWdlcyIsIEAibW9kZWwvaWdlcyIgfSwKKyAgICAgICAgICAgIHsgImlncyIsIEAi
bW9kZWwvaWdlcyIgfSwKKyAgICAgICAgICAgIHsgImlzbyIsIEAiYXBwbGljYXRpb24vb2N0ZXQt
c3RyZWFtIiB9LAorICAgICAgICAgICAgeyAiamh0bWwiLCBAInRleHQvaHRtbCIgfSwKKyAgICAg
ICAgICAgIHsgImxhdGV4IiwgQCJhcHBsaWNhdGlvbi94LWxhdGV4IiB9LAorICAgICAgICAgICAg
eyAibGhhIiwgQCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iIH0sCisgICAgICAgICAgICB7ICJs
emgiLCBAImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIgfSwKKyAgICAgICAgICAgIHsgIm0zdSIs
IEAiYXVkaW8veC1tcGVndXJsIiB9LAorICAgICAgICAgICAgeyAibTRwIiwgQCJhdWRpby94LW00
cCIgfSwKKyAgICAgICAgICAgIHsgIm1hYyIsIEAiaW1hZ2UveC1tYWNwYWludCIgfSwKKyAgICAg
ICAgICAgIHsgIm1hbiIsIEAiYXBwbGljYXRpb24veC10cm9mZi1tYW4iIH0sCisgICAgICAgICAg
ICB7ICJtZSIsIEAiYXBwbGljYXRpb24veC10cm9mZi1tZSIgfSwKKyAgICAgICAgICAgIHsgIm1l
c2giLCBAIm1vZGVsL21lc2giIH0sCisgICAgICAgICAgICB7ICJtaWYiLCBAImFwcGxpY2F0aW9u
L3ZuZC5taWYiIH0sCisgICAgICAgICAgICB7ICJtanMiLCBAInRleHQvamF2YXNjcmlwdCIgfSwK
KyAgICAgICAgICAgIHsgIm1vdmllIiwgQCJ2aWRlby94LXNnaS1tb3ZpZSIgfSwKKyAgICAgICAg
ICAgIHsgIm1wMiIsIEAiYXVkaW8vbXBlZyIgfSwKKyAgICAgICAgICAgIHsgIm1wZ2EiLCBAImF1
ZGlvL21wZWciIH0sCisgICAgICAgICAgICB7ICJtcyIsIEAiYXBwbGljYXRpb24veC10cm9mZi1t
cyIgfSwKKyAgICAgICAgICAgIHsgIm1zaCIsIEAibW9kZWwvbWVzaCIgfSwKKyAgICAgICAgICAg
IHsgIm14dSIsIEAidmlkZW8vdm5kLm1wZWd1cmwiIH0sCisgICAgICAgICAgICB7ICJuYyIsIEAi
YXBwbGljYXRpb24veC1uZXRjZGYiIH0sCisgICAgICAgICAgICB7ICJvZGEiLCBAImFwcGxpY2F0
aW9uL29kYSIgfSwKKyAgICAgICAgICAgIHsgInBibSIsIEAiaW1hZ2UveC1wb3J0YWJsZS1iaXRt
YXAiIH0sCisgICAgICAgICAgICB7ICJwY3giLCBAImltYWdlL3gtcGN4IiB9LAorICAgICAgICAg
ICAgeyAicGRiIiwgQCJjaGVtaWNhbC94LXBkYiIgfSwKKyAgICAgICAgICAgIHsgInBnbSIsIEAi
aW1hZ2UveC1wb3J0YWJsZS1ncmF5bWFwIiB9LAorICAgICAgICAgICAgeyAicGduIiwgQCJhcHBs
aWNhdGlvbi94LWNoZXNzLXBnbiIgfSwKKyAgICAgICAgICAgIHsgInBscyIsIEAiYXVkaW8vc2Nw
bHMiIH0sCisgICAgICAgICAgICB7ICJwbm0iLCBAImltYWdlL3gtcG9ydGFibGUtYW55bWFwIiB9
LAorICAgICAgICAgICAgeyAicG50IiwgQCJpbWFnZS94LW1hY3BhaW50IiB9LAorICAgICAgICAg
ICAgeyAicG50ZyIsIEAiaW1hZ2UveC1tYWNwYWludCIgfSwKKyAgICAgICAgICAgIHsgInBwbSIs
IEAiaW1hZ2UveC1wb3J0YWJsZS1waXhtYXAiIH0sCisgICAgICAgICAgICB7ICJyYXMiLCBAImlt
YWdlL3gtY211LXJhc3RlciIgfSwKKyAgICAgICAgICAgIHsgInJnYiIsIEAiaW1hZ2UveC1yZ2Ii
IH0sCisgICAgICAgICAgICB7ICJyb2ZmIiwgQCJhcHBsaWNhdGlvbi94LXRyb2ZmIiB9LAorICAg
ICAgICAgICAgeyAicnBtIiwgQCJhdWRpby94LXBuLXJlYWxhdWRpby1wbHVnaW4iIH0sCisgICAg
ICAgICAgICB7ICJydHgiLCBAInRleHQvcmljaHRleHQiIH0sCisgICAgICAgICAgICB7ICJzZ20i
LCBAInRleHQvc2dtbCIgfSwKKyAgICAgICAgICAgIHsgInNnbWwiLCBAInRleHQvc2dtbCIgfSwK
KyAgICAgICAgICAgIHsgInNoIiwgQCJhcHBsaWNhdGlvbi94LXNoIiB9LAorICAgICAgICAgICAg
eyAic2hhciIsIEAiYXBwbGljYXRpb24veC1zaGFyIiB9LAorICAgICAgICAgICAgeyAic2lsbyIs
IEAibW9kZWwvbWVzaCIgfSwKKyAgICAgICAgICAgIHsgInNrZCIsIEAiYXBwbGljYXRpb24veC1r
b2FuIiB9LAorICAgICAgICAgICAgeyAic2ttIiwgQCJhcHBsaWNhdGlvbi94LWtvYW4iIH0sCisg
ICAgICAgICAgICB7ICJza3AiLCBAImFwcGxpY2F0aW9uL3gta29hbiIgfSwKKyAgICAgICAgICAg
IHsgInNrdCIsIEAiYXBwbGljYXRpb24veC1rb2FuIiB9LAorICAgICAgICAgICAgeyAic21pIiwg
QCJhcHBsaWNhdGlvbi94LWRpc2tjb3B5IiB9LAorICAgICAgICAgICAgeyAic28iLCBAImFwcGxp
Y2F0aW9uL29jdGV0LXN0cmVhbSIgfSwKKyAgICAgICAgICAgIHsgInNwbCIsIEAiYXBwbGljYXRp
b24veC1mdXR1cmVzcGxhc2giIH0sCisgICAgICAgICAgICB7ICJzcmMiLCBAImFwcGxpY2F0aW9u
L3gtd2Fpcy1zb3VyY2UiIH0sCisgICAgICAgICAgICB7ICJzdjRjcGlvIiwgQCJhcHBsaWNhdGlv
bi94LXN2NGNwaW8iIH0sCisgICAgICAgICAgICB7ICJzdjRjcmMiLCBAImFwcGxpY2F0aW9uL3gt
c3Y0Y3JjIiB9LAorICAgICAgICAgICAgeyAic3dmIiwgQCJhcHBsaWNhdGlvbi94LXNob2Nrd2F2
ZS1mbGFzaCIgfSwKKyAgICAgICAgICAgIHsgInQiLCBAImFwcGxpY2F0aW9uL3gtdHJvZmYiIH0s
CisgICAgICAgICAgICB7ICJ0YXJnYSIsIEAiaW1hZ2UveC10YXJnYSIgfSwKKyAgICAgICAgICAg
IHsgInRjbCIsIEAiYXBwbGljYXRpb24veC10Y2wiIH0sCisgICAgICAgICAgICB7ICJ0ZXgiLCBA
ImFwcGxpY2F0aW9uL3gtdGV4IiB9LAorICAgICAgICAgICAgeyAidGV4aSIsIEAiYXBwbGljYXRp
b24veC10ZXhpbmZvIiB9LAorICAgICAgICAgICAgeyAidGV4aW5mbyIsIEAiYXBwbGljYXRpb24v
eC10ZXhpbmZvIiB9LAorICAgICAgICAgICAgeyAidGd6IiwgQCJhcHBsaWNhdGlvbi94LWd6aXAi
IH0sCisgICAgICAgICAgICB7ICJ0b3JyZW50IiwgQCJhcHBsaWNhdGlvbi94LWJpdHRvcnJlbnQi
IH0sCisgICAgICAgICAgICB7ICJ0ciIsIEAiYXBwbGljYXRpb24veC10cm9mZiIgfSwKKyAgICAg
ICAgICAgIHsgInRzdiIsIEAidGV4dC90YWItc2VwYXJhdGVkLXZhbHVlcyIgfSwKKyAgICAgICAg
ICAgIHsgInVzdGFyIiwgQCJhcHBsaWNhdGlvbi94LXVzdGFyIiB9LAorICAgICAgICAgICAgeyAi
dmNkIiwgQCJhcHBsaWNhdGlvbi94LWNkbGluayIgfSwKKyAgICAgICAgICAgIHsgInZybWwiLCBA
Im1vZGVsL3ZybWwiIH0sCisgICAgICAgICAgICB7ICJ3Ym1wIiwgQCJpbWFnZS92bmQud2FwLndi
bXAiIH0sCisgICAgICAgICAgICB7ICJ3YnhtbCIsIEAiYXBwbGljYXRpb24vdm5kLndhcC53Ynht
bCIgfSwKKyAgICAgICAgICAgIHsgIndlYmFyY2hpdmUiLCBAImFwcGxpY2F0aW9uL3gtd2ViYXJj
aGl2ZSIgfSwKKyAgICAgICAgICAgIHsgIndlYm0iLCBAInZpZGVvL3dlYm0iIH0sCisgICAgICAg
ICAgICB7ICJ3bWQiLCBAImFwcGxpY2F0aW9uL3gtbXMtd21kIiB9LAorICAgICAgICAgICAgeyAi
d21sIiwgQCJ0ZXh0L3ZuZC53YXAud21sIiB9LAorICAgICAgICAgICAgeyAid21sYyIsIEAiYXBw
bGljYXRpb24vdm5kLndhcC53bWxjIiB9LAorICAgICAgICAgICAgeyAid21scyIsIEAidGV4dC92
bmQud2FwLndtbHNjcmlwdCIgfSwKKyAgICAgICAgICAgIHsgIndtbHNjIiwgQCJhcHBsaWNhdGlv
bi92bmQud2FwLndtbHNjcmlwdGMiIH0sCisgICAgICAgICAgICB7ICJ3cmwiLCBAIm1vZGVsL3Zy
bWwiIH0sCisgICAgICAgICAgICB7ICJ4ZHAiLCBAImFwcGxpY2F0aW9uL3ZuZC5hZG9iZS54ZHAr
eG1sIiB9LAorICAgICAgICAgICAgeyAieGZkIiwgQCJhcHBsaWNhdGlvbi92bmQuYWRvYmUueGZk
K3htbCIgfSwKKyAgICAgICAgICAgIHsgInhmZGYiLCBAImFwcGxpY2F0aW9uL3ZuZC5hZG9iZS54
ZmRmIiB9LAorICAgICAgICAgICAgeyAieHBtIiwgQCJpbWFnZS94LXhwaXhtYXAiIH0sCisgICAg
ICAgICAgICB7ICJ4c2wiLCBAInRleHQveG1sIiB9LAorICAgICAgICAgICAgeyAieHdkIiwgQCJp
bWFnZS94LXh3aW5kb3dkdW1wIiB9LAorICAgICAgICAgICAgeyAieHl6IiwgQCJjaGVtaWNhbC94
LXh5eiIgfSwKKyAgICAgICAgICAgIHsgInoiLCBAImFwcGxpY2F0aW9uL3gtY29tcHJlc3MiIH0s
CisgICAgICAgIH07CisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgU29ydGVkQXJyYXlNYXAgZXh0
ZW5zaW9uTWFwIHsgZXh0ZW5zaW9uUGFpcnMgfTsKKyAgICAgICAgdHlwZSA9IChfX2JyaWRnZSBD
RlN0cmluZ1JlZilleHRlbnNpb25NYXAuZ2V0KFN0cmluZyB7IGV4dGVuc2lvbi5nZXQoKSB9KTsK
KyAgICAgICAgaWYgKCF0eXBlKQorICAgICAgICAgICAgdHlwZSA9IHByZWZlcnJlZE1JTUVUeXBl
Rm9yRmlsZUV4dGVuc2lvbkZyb21VVFR5cGUoZXh0ZW5zaW9uLmdldCgpKTsKICAgICB9CiAKLSAg
ICBpZiAocmVzdWx0ICE9IG9yaWdpbmFsUmVzdWx0KQotICAgICAgICBDRlVSTFJlc3BvbnNlU2V0
TUlNRVR5cGUoY2ZSZXNwb25zZSwgcmVzdWx0LmdldCgpKTsKKyAgICBDRlVSTFJlc3BvbnNlU2V0
TUlNRVR5cGUocmVzcG9uc2UsIHR5cGUgPyB0eXBlLmdldCgpIDogQ0ZTVFIoImFwcGxpY2F0aW9u
L29jdGV0LXN0cmVhbSIpKTsKIH0KKwogI2VuZGlmCiAKIE5TVVJMUmVzcG9uc2UgKnN5bnRoZXNp
emVSZWRpcmVjdFJlc3BvbnNlSWZOZWNlc3NhcnkoTlNVUkxSZXF1ZXN0ICpjdXJyZW50UmVxdWVz
dCwgTlNVUkxSZXF1ZXN0ICpuZXdSZXF1ZXN0LCBOU1VSTFJlc3BvbnNlICpyZWRpcmVjdFJlc3Bv
bnNlKQpAQCAtMzQ1LDQgKzE5NCwxOSBAQCBOU1VSTFJlc3BvbnNlICpzeW50aGVzaXplUmVkaXJl
Y3RSZXNwb25zZUlmTmVjZXNzYXJ5KE5TVVJMUmVxdWVzdCAqY3VycmVudFJlcXVlcwogICAgIHJl
dHVybiByZXRhaW5QdHIoUmVzb3VyY2VSZXNwb25zZTo6c3ludGhldGljUmVkaXJlY3RSZXNwb25z
ZShVUkwoW2N1cnJlbnRSZXF1ZXN0IFVSTF0pLCBVUkwoW25ld1JlcXVlc3QgVVJMXSkpLm5zVVJM
UmVzcG9uc2UoKSkuYXV0b3JlbGVhc2UoKTsKIH0KIAorUmV0YWluUHRyPENGU3RyaW5nUmVmPiBm
aWxlUGF0aEV4dGVuc2lvbihDRlVSTFJlc3BvbnNlUmVmIHJlc3BvbnNlKQoreworICAgIGF1dG8g
cmVzcG9uc2VVUkwgPSBDRlVSTFJlc3BvbnNlR2V0VVJMKHJlc3BvbnNlKTsKKyAgICBpZiAoIVso
X19icmlkZ2UgTlNVUkwgKilyZXNwb25zZVVSTCBpc0ZpbGVVUkxdKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICByZXR1cm4gYWRvcHRDRihDRlVSTENvcHlQYXRoRXh0ZW5zaW9uKHJlc3Bv
bnNlVVJMKSk7Cit9CisKK1JldGFpblB0cjxDRlN0cmluZ1JlZj4gcHJlZmVycmVkTUlNRVR5cGVG
b3JGaWxlRXh0ZW5zaW9uRnJvbVVUVHlwZShDRlN0cmluZ1JlZiBleHRlbnNpb24pCit7CitBTExP
V19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgorICAgIHJldHVybiBtaW1lVHlwZUZyb21V
VElUcmVlKGFkb3B0Q0YoVVRUeXBlQ3JlYXRlUHJlZmVycmVkSWRlbnRpZmllckZvclRhZyhrVVRU
YWdDbGFzc0ZpbGVuYW1lRXh0ZW5zaW9uLCBleHRlbnNpb24sIG51bGxwdHIpKS5nZXQoKSk7CitB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9jb2NvYS9XZWJBcmNoaXZlRHVtcFN1cHBvcnQubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL2NvY29hL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5tbQppbmRleCA1
YTliYmM3MTVjOWU1Yzg0M2FhZjJiOTE1ZGQ4OGY3MmVmYTE5ZWUxLi5iYTJmMjk1NWJkNjE1ZGZk
NWUxNDNmNzY0OGYyZTAwZWRiZTlhOWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL2NvY29hL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL2NvY29hL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5tbQpAQCAtMTUyLDQwICsxNTIsNDAg
QEAgc3RhdGljIHZvaWQgbm9ybWFsaXplV2ViUmVzb3VyY2VVUkwoQ0ZNdXRhYmxlU3RyaW5nUmVm
IHdlYlJlc291cmNlVVJMKQogCiBzdGF0aWMgdm9pZCBjb252ZXJ0V2ViUmVzb3VyY2VSZXNwb25z
ZVRvRGljdGlvbmFyeShDRk11dGFibGVEaWN0aW9uYXJ5UmVmIHByb3BlcnR5TGlzdCkKIHsKLSAg
ICBDRkRhdGFSZWYgcmVzcG9uc2VEYXRhID0gc3RhdGljX2Nhc3Q8Q0ZEYXRhUmVmPihDRkRpY3Rp
b25hcnlHZXRWYWx1ZShwcm9wZXJ0eUxpc3QsIENGU1RSKCJXZWJSZXNvdXJjZVJlc3BvbnNlIikp
KTsgLy8gV2ViUmVzb3VyY2VSZXNwb25zZUtleSBpbiBXZWJSZXNvdXJjZS5tCi0gICAgaWYgKENG
R2V0VHlwZUlEKHJlc3BvbnNlRGF0YSkgIT0gQ0ZEYXRhR2V0VHlwZUlEKCkpCisgICAgYXV0byBy
ZXNwb25zZURhdGEgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZEYXRhUmVmPihDRkRpY3Rpb25hcnlHZXRW
YWx1ZShwcm9wZXJ0eUxpc3QsIENGU1RSKCJXZWJSZXNvdXJjZVJlc3BvbnNlIikpKTsgLy8gV2Vi
UmVzb3VyY2VSZXNwb25zZUtleSBpbiBXZWJSZXNvdXJjZS5tCisgICAgaWYgKCFyZXNwb25zZURh
dGEpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gcmVzcG9uc2UgPSBjcmVhdGVDRlVSTFJl
c3BvbnNlRnJvbVJlc3BvbnNlRGF0YShyZXNwb25zZURhdGEpOwogICAgIGlmICghcmVzcG9uc2Up
CiAgICAgICAgIHJldHVybjsKIAotICAgIFJldGFpblB0cjxDRk11dGFibGVEaWN0aW9uYXJ5UmVm
PiByZXNwb25zZURpY3Rpb25hcnkgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAm
a0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOworICAgIGF1dG8gcmVzcG9uc2VEaWN0
aW9uYXJ5ID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIDAsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9u
YXJ5VmFsdWVDYWxsQmFja3MpKTsKIAotICAgIFJldGFpblB0cjxDRk11dGFibGVTdHJpbmdSZWY+
IHVybFN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCAwLCBDRlVSTEdldFN0cmluZyhDRlVSTFJlc3BvbnNlR2V0VVJMKHJlc3BvbnNl
LmdldCgpKSkpKTsKKyAgICBhdXRvIHVybFN0cmluZyA9IGFkb3B0Q0YoQ0ZTdHJpbmdDcmVhdGVN
dXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBDRlVSTEdldFN0cmluZyhDRlVSTFJl
c3BvbnNlR2V0VVJMKHJlc3BvbnNlLmdldCgpKSkpKTsKICAgICBub3JtYWxpemVXZWJSZXNvdXJj
ZVVSTCh1cmxTdHJpbmcuZ2V0KCkpOwogICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHJlc3BvbnNl
RGljdGlvbmFyeS5nZXQoKSwgQ0ZTVFIoIlVSTCIpLCB1cmxTdHJpbmcuZ2V0KCkpOwogCi0gICAg
UmV0YWluUHRyPENGTXV0YWJsZVN0cmluZ1JlZj4gbWltZVR5cGVTdHJpbmcgPSBhZG9wdENGKENG
U3RyaW5nQ3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgQ0ZVUkxSZXNw
b25zZUdldE1JTUVUeXBlKHJlc3BvbnNlLmdldCgpKSkpOworICAgIGF1dG8gbWltZVR5cGVTdHJp
bmcgPSBhZG9wdENGKENGU3RyaW5nQ3JlYXRlTXV0YWJsZUNvcHkoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgMCwgQ0ZVUkxSZXNwb25zZUdldE1JTUVUeXBlKHJlc3BvbnNlLmdldCgpKSkpOwogICAgIGNv
bnZlcnRNSU1FVHlwZShtaW1lVHlwZVN0cmluZy5nZXQoKSk7CiAgICAgQ0ZEaWN0aW9uYXJ5U2V0
VmFsdWUocmVzcG9uc2VEaWN0aW9uYXJ5LmdldCgpLCBDRlNUUigiTUlNRVR5cGUiKSwgbWltZVR5
cGVTdHJpbmcuZ2V0KCkpOwogCi0gICAgQ0ZTdHJpbmdSZWYgdGV4dEVuY29kaW5nTmFtZSA9IENG
VVJMUmVzcG9uc2VHZXRUZXh0RW5jb2RpbmdOYW1lKHJlc3BvbnNlLmdldCgpKTsKKyAgICBhdXRv
IHRleHRFbmNvZGluZ05hbWUgPSBDRlVSTFJlc3BvbnNlR2V0VGV4dEVuY29kaW5nTmFtZShyZXNw
b25zZS5nZXQoKSk7CiAgICAgaWYgKHRleHRFbmNvZGluZ05hbWUpCiAgICAgICAgIENGRGljdGlv
bmFyeVNldFZhbHVlKHJlc3BvbnNlRGljdGlvbmFyeS5nZXQoKSwgQ0ZTVFIoInRleHRFbmNvZGlu
Z05hbWUiKSwgdGV4dEVuY29kaW5nTmFtZSk7CiAKICAgICBTSW50NjQgZXhwZWN0ZWRDb250ZW50
TGVuZ3RoID0gQ0ZVUkxSZXNwb25zZUdldEV4cGVjdGVkQ29udGVudExlbmd0aChyZXNwb25zZS5n
ZXQoKSk7Ci0gICAgUmV0YWluUHRyPENGTnVtYmVyUmVmPiBleHBlY3RlZENvbnRlbnRMZW5ndGhO
dW1iZXIgPSBhZG9wdENGKENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51
bWJlclNJbnQ2NFR5cGUsICZleHBlY3RlZENvbnRlbnRMZW5ndGgpKTsKKyAgICBhdXRvIGV4cGVj
dGVkQ29udGVudExlbmd0aE51bWJlciA9IGFkb3B0Q0YoQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwga0NGTnVtYmVyU0ludDY0VHlwZSwgJmV4cGVjdGVkQ29udGVudExlbmd0aCkp
OwogICAgIENGRGljdGlvbmFyeVNldFZhbHVlKHJlc3BvbnNlRGljdGlvbmFyeS5nZXQoKSwgQ0ZT
VFIoImV4cGVjdGVkQ29udGVudExlbmd0aCIpLCBleHBlY3RlZENvbnRlbnRMZW5ndGhOdW1iZXIu
Z2V0KCkpOwogCiAgICAgaWYgKENGSFRUUE1lc3NhZ2VSZWYgaHR0cE1lc3NhZ2UgPSBDRlVSTFJl
c3BvbnNlR2V0SFRUUFJlc3BvbnNlKHJlc3BvbnNlLmdldCgpKSkgewotICAgICAgICBSZXRhaW5Q
dHI8Q0ZEaWN0aW9uYXJ5UmVmPiBhbGxIZWFkZXJzID0gYWRvcHRDRihDRkhUVFBNZXNzYWdlQ29w
eUFsbEhlYWRlckZpZWxkcyhodHRwTWVzc2FnZSkpOwotICAgICAgICBSZXRhaW5QdHI8Q0ZNdXRh
YmxlRGljdGlvbmFyeVJlZj4gYWxsSGVhZGVyRmllbGRzID0gYWRvcHRDRihDRkRpY3Rpb25hcnlD
cmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBhbGxIZWFkZXJzLmdldCgp
KSk7CisgICAgICAgIGF1dG8gYWxsSGVhZGVycyA9IGFkb3B0Q0YoQ0ZIVFRQTWVzc2FnZUNvcHlB
bGxIZWFkZXJGaWVsZHMoaHR0cE1lc3NhZ2UpKTsKKyAgICAgICAgYXV0byBhbGxIZWFkZXJGaWVs
ZHMgPSBhZG9wdENGKENGRGljdGlvbmFyeUNyZWF0ZU11dGFibGVDb3B5KGtDRkFsbG9jYXRvckRl
ZmF1bHQsIDAsIGFsbEhlYWRlcnMuZ2V0KCkpKTsKICAgICAgICAgbm9ybWFsaXplSFRUUFJlc3Bv
bnNlSGVhZGVyRmllbGRzKGFsbEhlYWRlckZpZWxkcy5nZXQoKSk7CiAgICAgICAgIENGRGljdGlv
bmFyeVNldFZhbHVlKHJlc3BvbnNlRGljdGlvbmFyeS5nZXQoKSwgQ0ZTVFIoImFsbEhlYWRlckZp
ZWxkcyIpLCBhbGxIZWFkZXJGaWVsZHMuZ2V0KCkpOwogCiAgICAgICAgIENGSW5kZXggc3RhdHVz
Q29kZSA9IENGSFRUUE1lc3NhZ2VHZXRSZXNwb25zZVN0YXR1c0NvZGUoaHR0cE1lc3NhZ2UpOwot
ICAgICAgICBSZXRhaW5QdHI8Q0ZOdW1iZXJSZWY+IHN0YXR1c0NvZGVOdW1iZXIgPSBhZG9wdENG
KENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckNGSW5kZXhUeXBl
LCAmc3RhdHVzQ29kZSkpOworICAgICAgICBhdXRvIHN0YXR1c0NvZGVOdW1iZXIgPSBhZG9wdENG
KENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckNGSW5kZXhUeXBl
LCAmc3RhdHVzQ29kZSkpOwogICAgICAgICBDRkRpY3Rpb25hcnlTZXRWYWx1ZShyZXNwb25zZURp
Y3Rpb25hcnkuZ2V0KCksIENGU1RSKCJzdGF0dXNDb2RlIiksIHN0YXR1c0NvZGVOdW1iZXIuZ2V0
KCkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUGx1Z2lucy9O
ZXRzY2FwZS9tYWMvTmV0c2NhcGVQbHVnaW5Nb2R1bGVNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1vZHVsZU1hYy5tbQppbmRl
eCBiM2VhZTI4YTZhYWRkMDE5MDYyMGE0MWE0NDkwMzg3ZDQ0MTNhM2Q5Li5mYzNhMTdlYTk5Njk5
Y2MyN2YxMDFjZDdlNzM1MGE2OTkyNjMzZDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdpbk1vZHVsZU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlL21hYy9OZXRzY2FwZVBsdWdp
bk1vZHVsZU1hYy5tbQpAQCAtMzIsNiArMzIsNyBAQAogI2ltcG9ydCAiUGx1Z2luU2FuZGJveFBy
b2ZpbGUuaCIKICNpbXBvcnQgPHd0Zi9IYXNoU2V0Lmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVh
ZC5oPgorI2ltcG9ydCA8d3RmL2NmL1R5cGVDYXN0c0NGLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Nm
L0NGQnVuZGxlU1BJLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdUb0ludGVnZXJDb252ZXJz
aW9uLmg+CiAKQEAgLTY3LDc4ICs2OCw2OCBAQCBzdGF0aWMgYm9vbCBnZXRQbHVnaW5BcmNoaXRl
Y3R1cmUoQ0ZCdW5kbGVSZWYgYnVuZGxlLCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4pCiAKIHN0
YXRpYyBib29sIGdldFBsdWdpbkluZm9Gcm9tUHJvcGVydHlMaXN0cyhDRkJ1bmRsZVJlZiBidW5k
bGUsIFBsdWdpbk1vZHVsZUluZm8mIHBsdWdpbikKIHsKLSAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9u
YXJ5UmVmPiBtaW1lVHlwZXMgPSBzdGF0aWNfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGQnVuZGxl
R2V0VmFsdWVGb3JJbmZvRGljdGlvbmFyeUtleShidW5kbGUsIENGU1RSKCJXZWJQbHVnaW5NSU1F
VHlwZXMiKSkpOwotICAgIGlmICghbWltZVR5cGVzIHx8IENGR2V0VHlwZUlEKG1pbWVUeXBlcy5n
ZXQoKSkgIT0gQ0ZEaWN0aW9uYXJ5R2V0VHlwZUlEKCkpCisgICAgUmV0YWluUHRyIG1pbWVUeXBl
cyA9IGR5bmFtaWNfY2ZfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KENGQnVuZGxlR2V0VmFsdWVGb3JJ
bmZvRGljdGlvbmFyeUtleShidW5kbGUsIENGU1RSKCJXZWJQbHVnaW5NSU1FVHlwZXMiKSkpOwor
ICAgIGlmICghbWltZVR5cGVzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBHZXQg
dGhlIHBsdWctaW4gbmFtZS4KLSAgICBDRlN0cmluZ1JlZiBwbHVnaW5OYW1lID0gc3RhdGljX2Nh
c3Q8Q0ZTdHJpbmdSZWY+KENGQnVuZGxlR2V0VmFsdWVGb3JJbmZvRGljdGlvbmFyeUtleShidW5k
bGUsIENGU1RSKCJXZWJQbHVnaW5OYW1lIikpKTsKLSAgICBpZiAocGx1Z2luTmFtZSAmJiBDRkdl
dFR5cGVJRChwbHVnaW5OYW1lKSA9PSBDRlN0cmluZ0dldFR5cGVJRCgpKQorICAgIGF1dG8gcGx1
Z2luTmFtZSA9IGR5bmFtaWNfY2ZfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZCdW5kbGVHZXRWYWx1ZUZv
ckluZm9EaWN0aW9uYXJ5S2V5KGJ1bmRsZSwgQ0ZTVFIoIldlYlBsdWdpbk5hbWUiKSkpOworICAg
IGlmIChwbHVnaW5OYW1lKQogICAgICAgICBwbHVnaW4uaW5mby5uYW1lID0gcGx1Z2luTmFtZTsK
ICAgICAKICAgICAvLyBHZXQgdGhlIHBsdWctaW4gZGVzY3JpcHRpb24uCi0gICAgQ0ZTdHJpbmdS
ZWYgcGx1Z2luRGVzY3JpcHRpb24gPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZCdW5kbGVH
ZXRWYWx1ZUZvckluZm9EaWN0aW9uYXJ5S2V5KGJ1bmRsZSwgQ0ZTVFIoIldlYlBsdWdpbkRlc2Ny
aXB0aW9uIikpKTsKLSAgICBpZiAocGx1Z2luRGVzY3JpcHRpb24gJiYgQ0ZHZXRUeXBlSUQocGx1
Z2luRGVzY3JpcHRpb24pID09IENGU3RyaW5nR2V0VHlwZUlEKCkpCisgICAgYXV0byBwbHVnaW5E
ZXNjcmlwdGlvbiA9IGR5bmFtaWNfY2ZfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZCdW5kbGVHZXRWYWx1
ZUZvckluZm9EaWN0aW9uYXJ5S2V5KGJ1bmRsZSwgQ0ZTVFIoIldlYlBsdWdpbkRlc2NyaXB0aW9u
IikpKTsKKyAgICBpZiAocGx1Z2luRGVzY3JpcHRpb24pCiAgICAgICAgIHBsdWdpbi5pbmZvLmRl
c2MgPSBwbHVnaW5EZXNjcmlwdGlvbjsKICAgICAKICAgICAvLyBHZXQgdGhlIE1JTUUgdHlwZSBt
YXBwaW5nIGRpY3Rpb25hcnkuCiAgICAgQ0ZJbmRleCBudW1NaW1lVHlwZXMgPSBDRkRpY3Rpb25h
cnlHZXRDb3VudChtaW1lVHlwZXMuZ2V0KCkpOyAgICAgICAgICAKLSAgICBWZWN0b3I8Q0ZTdHJp
bmdSZWY+IG1pbWVUeXBlc1ZlY3RvcihudW1NaW1lVHlwZXMpOwotICAgIFZlY3RvcjxDRkRpY3Rp
b25hcnlSZWY+IG1pbWVUeXBlSW5mb1ZlY3RvcihudW1NaW1lVHlwZXMpOwotICAgIENGRGljdGlv
bmFyeUdldEtleXNBbmRWYWx1ZXMobWltZVR5cGVzLmdldCgpLCByZWludGVycHJldF9jYXN0PGNv
bnN0IHZvaWQqKj4obWltZVR5cGVzVmVjdG9yLmRhdGEoKSksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3Qgdm9pZCoqPihtaW1lVHlwZUluZm9WZWN0b3IuZGF0YSgpKSk7CisgICAgVmVjdG9yPENGVHlw
ZVJlZj4gbWltZVR5cGVzVmVjdG9yKG51bU1pbWVUeXBlcyk7CisgICAgVmVjdG9yPENGVHlwZVJl
Zj4gbWltZVR5cGVJbmZvVmVjdG9yKG51bU1pbWVUeXBlcyk7CisgICAgQ0ZEaWN0aW9uYXJ5R2V0
S2V5c0FuZFZhbHVlcyhtaW1lVHlwZXMuZ2V0KCksIG1pbWVUeXBlc1ZlY3Rvci5kYXRhKCksIG1p
bWVUeXBlSW5mb1ZlY3Rvci5kYXRhKCkpOwogICAgIAogICAgIGZvciAoQ0ZJbmRleCBpID0gMDsg
aSA8IG51bU1pbWVUeXBlczsgKytpKSB7CiAgICAgICAgIFdlYkNvcmU6Ok1pbWVDbGFzc0luZm8g
bWltZUNsYXNzSW5mbzsKICAgICAgICAgCiAgICAgICAgIC8vIElmIHRoaXMgTUlNRSB0eXBlIGlz
IGludmFsaWQsIGlnbm9yZSBpdC4KLSAgICAgICAgQ0ZTdHJpbmdSZWYgbWltZVR5cGUgPSBtaW1l
VHlwZXNWZWN0b3JbaV07Ci0gICAgICAgIGlmICghbWltZVR5cGUgfHwgQ0ZHZXRUeXBlSUQobWlt
ZVR5cGUpICE9IENGU3RyaW5nR2V0VHlwZUlEKCkgfHwgQ0ZTdHJpbmdHZXRMZW5ndGgobWltZVR5
cGUpID09IDApCisgICAgICAgIGF1dG8gbWltZVR5cGUgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZTdHJp
bmdSZWY+KG1pbWVUeXBlc1ZlY3RvcltpXSk7CisgICAgICAgIGlmICghbWltZVR5cGUgfHwgIUNG
U3RyaW5nR2V0TGVuZ3RoKG1pbWVUeXBlKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAg
ICAgIC8vIElmIHRoaXMgTUlNRSB0eXBlIGRvZXNuJ3QgaGF2ZSBhIHZhbGlkIGluZm8gZGljdGlv
bmFyeSwgaWdub3JlIGl0LgotICAgICAgICBDRkRpY3Rpb25hcnlSZWYgbWltZVR5cGVJbmZvID0g
bWltZVR5cGVJbmZvVmVjdG9yW2ldOwotICAgICAgICBpZiAoIW1pbWVUeXBlSW5mbyB8fCBDRkdl
dFR5cGVJRChtaW1lVHlwZUluZm8pICE9IENGRGljdGlvbmFyeUdldFR5cGVJRCgpKQorICAgICAg
ICBhdXRvIG1pbWVUeXBlSW5mbyA9IGR5bmFtaWNfY2ZfY2FzdDxDRkRpY3Rpb25hcnlSZWY+KG1p
bWVUeXBlSW5mb1ZlY3RvcltpXSk7CisgICAgICAgIGlmICghbWltZVR5cGVJbmZvKQogICAgICAg
ICAgICAgY29udGludWU7CiAKICAgICAgICAgLy8gRklYTUU6IENvbnNpZGVyIHN0b3JpbmcgZGlz
YWJsZWQgTUlNRSB0eXBlcy4KLSAgICAgICAgQ0ZUeXBlUmVmIGlzRW5hYmxlZCA9IENGRGljdGlv
bmFyeUdldFZhbHVlKG1pbWVUeXBlSW5mbywgQ0ZTVFIoIldlYlBsdWdpblR5cGVFbmFibGVkIikp
OworICAgICAgICBhdXRvIGlzRW5hYmxlZCA9IENGRGljdGlvbmFyeUdldFZhbHVlKG1pbWVUeXBl
SW5mbywgQ0ZTVFIoIldlYlBsdWdpblR5cGVFbmFibGVkIikpOwogICAgICAgICBpZiAoaXNFbmFi
bGVkKSB7Ci0gICAgICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQoaXNFbmFibGVkKSA9PSBDRk51bWJl
ckdldFR5cGVJRCgpKSB7CisgICAgICAgICAgICBpZiAoYXV0byBudW1iZXIgPSBkeW5hbWljX2Nm
X2Nhc3Q8Q0ZOdW1iZXJSZWY+KGlzRW5hYmxlZCkpIHsKICAgICAgICAgICAgICAgICBpbnQgdmFs
dWU7Ci0gICAgICAgICAgICAgICAgaWYgKCFDRk51bWJlckdldFZhbHVlKHN0YXRpY19jYXN0PENG
TnVtYmVyUmVmPihpc0VuYWJsZWQpLCBrQ0ZOdW1iZXJJbnRUeXBlLCAmdmFsdWUpIHx8ICF2YWx1
ZSkKKyAgICAgICAgICAgICAgICBpZiAoIUNGTnVtYmVyR2V0VmFsdWUobnVtYmVyLCBrQ0ZOdW1i
ZXJJbnRUeXBlLCAmdmFsdWUpIHx8ICF2YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKENGR2V0VHlwZUlEKGlzRW5hYmxlZCkgPT0gQ0ZC
b29sZWFuR2V0VHlwZUlEKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoIUNGQm9vbGVhbkdldFZh
bHVlKHN0YXRpY19jYXN0PENGQm9vbGVhblJlZj4oaXNFbmFibGVkKSkpCi0gICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB9IGVsc2Ug
aWYgKGlzRW5hYmxlZCAhPSBrQ0ZCb29sZWFuVHJ1ZSkKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIEdldCB0aGUgTUlNRSB0eXBlIGRlc2NyaXB0aW9u
LgotICAgICAgICBDRlN0cmluZ1JlZiBtaW1lVHlwZURlc2NyaXB0aW9uID0gc3RhdGljX2Nhc3Q8
Q0ZTdHJpbmdSZWY+KENGRGljdGlvbmFyeUdldFZhbHVlKG1pbWVUeXBlSW5mbywgQ0ZTVFIoIldl
YlBsdWdpblR5cGVEZXNjcmlwdGlvbiIpKSk7Ci0gICAgICAgIGlmIChtaW1lVHlwZURlc2NyaXB0
aW9uICYmIENGR2V0VHlwZUlEKG1pbWVUeXBlRGVzY3JpcHRpb24pICE9IENGU3RyaW5nR2V0VHlw
ZUlEKCkpCi0gICAgICAgICAgICBtaW1lVHlwZURlc2NyaXB0aW9uID0gMDsKLQogICAgICAgICBt
aW1lQ2xhc3NJbmZvLnR5cGUgPSBTdHJpbmcobWltZVR5cGUpLmNvbnZlcnRUb0FTQ0lJTG93ZXJj
YXNlKCk7Ci0gICAgICAgIG1pbWVDbGFzc0luZm8uZGVzYyA9IG1pbWVUeXBlRGVzY3JpcHRpb247
CisgICAgICAgIG1pbWVDbGFzc0luZm8uZGVzYyA9IGR5bmFtaWNfY2ZfY2FzdDxDRlN0cmluZ1Jl
Zj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUobWltZVR5cGVJbmZvLCBDRlNUUigiV2ViUGx1Z2luVHlw
ZURlc2NyaXB0aW9uIikpKTsKIAogICAgICAgICAvLyBOb3cgZ2V0IHRoZSBleHRlbnNpb25zIGZv
ciB0aGlzIE1JTUUgdHlwZS4KICAgICAgICAgQ0ZJbmRleCBudW1FeHRlbnNpb25zID0gMDsKLSAg
ICAgICAgQ0ZBcnJheVJlZiBleHRlbnNpb25zQXJyYXkgPSBzdGF0aWNfY2FzdDxDRkFycmF5UmVm
PihDRkRpY3Rpb25hcnlHZXRWYWx1ZShtaW1lVHlwZUluZm8sIENGU1RSKCJXZWJQbHVnaW5FeHRl
bnNpb25zIikpKTsKLSAgICAgICAgaWYgKGV4dGVuc2lvbnNBcnJheSAmJiBDRkdldFR5cGVJRChl
eHRlbnNpb25zQXJyYXkpID09IENGQXJyYXlHZXRUeXBlSUQoKSkKKyAgICAgICAgYXV0byBleHRl
bnNpb25zQXJyYXkgPSBkeW5hbWljX2NmX2Nhc3Q8Q0ZBcnJheVJlZj4oQ0ZEaWN0aW9uYXJ5R2V0
VmFsdWUobWltZVR5cGVJbmZvLCBDRlNUUigiV2ViUGx1Z2luRXh0ZW5zaW9ucyIpKSk7CisgICAg
ICAgIGlmIChleHRlbnNpb25zQXJyYXkpCiAgICAgICAgICAgICBudW1FeHRlbnNpb25zID0gQ0ZB
cnJheUdldENvdW50KGV4dGVuc2lvbnNBcnJheSk7CiAKICAgICAgICAgZm9yIChDRkluZGV4IGkg
PSAwOyBpIDwgbnVtRXh0ZW5zaW9uczsgKytpKSB7Ci0gICAgICAgICAgICBDRlN0cmluZ1JlZiBl
eHRlbnNpb24gPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRl
eChleHRlbnNpb25zQXJyYXksIGkpKTsKLSAgICAgICAgICAgIGlmICghZXh0ZW5zaW9uIHx8IENG
R2V0VHlwZUlEKGV4dGVuc2lvbikgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkKKyAgICAgICAgICAg
IGF1dG8gZXh0ZW5zaW9uID0gZHluYW1pY19jZl9jYXN0PENGU3RyaW5nUmVmPihDRkFycmF5R2V0
VmFsdWVBdEluZGV4KGV4dGVuc2lvbnNBcnJheSwgaSkpOworICAgICAgICAgICAgaWYgKCFleHRl
bnNpb24pCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIC8vIFRoZSBE
aXZYIHBsdWctaW4gbGlzdHMgbXVsdGlwbGUgZXh0ZW5zaW9ucyBpbiBhIGNvbW1hIHNlcGFyYXRl
ZCBzdHJpbmcgaW5zdGVhZCBvZiB1c2luZwogICAgICAgICAgICAgLy8gbXVsdGlwbGUgYXJyYXkg
ZWxlbWVudHMgaW4gdGhlIHByb3BlcnR5IGxpc3QuIFdvcmsgYXJvdW5kIHRoaXMgaGVyZSBieSBz
cGxpdHRpbmcgdGhlCiAgICAgICAgICAgICAvLyBleHRlbnNpb24gc3RyaW5nIGludG8gY29tcG9u
ZW50cy4KLSAgICAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGV4dGVuc2lvbkNvbXBvbmVudHMgPSBT
dHJpbmcoZXh0ZW5zaW9uKS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpLnNwbGl0KCcsJyk7Ci0K
LSAgICAgICAgICAgIGZvciAoYXV0byYgY29tcG9uZW50IDogZXh0ZW5zaW9uQ29tcG9uZW50cykK
KyAgICAgICAgICAgIGZvciAoYXV0byYgY29tcG9uZW50IDogU3RyaW5nKGV4dGVuc2lvbikuY29u
dmVydFRvQVNDSUlMb3dlcmNhc2UoKS5zcGxpdCgnLCcpKQogICAgICAgICAgICAgICAgIG1pbWVD
bGFzc0luZm8uZXh0ZW5zaW9ucy5hcHBlbmQoY29tcG9uZW50KTsKICAgICAgICAgfQogCkBAIC0x
NTEsMTAgKzE0MiwxMCBAQCBzdGF0aWMgYm9vbCBnZXRQbHVnaW5JbmZvRnJvbVByb3BlcnR5TGlz
dHMoQ0ZCdW5kbGVSZWYgYnVuZGxlLCBQbHVnaW5Nb2R1bGVJbmZvJgogCiBib29sIE5ldHNjYXBl
UGx1Z2luTW9kdWxlOjpnZXRQbHVnaW5JbmZvKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUGx1
Z2luTW9kdWxlSW5mbyYgcGx1Z2luKQogewotICAgIFJldGFpblB0cjxDRlVSTFJlZj4gYnVuZGxl
VVJMID0gYWRvcHRDRihDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aChrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBwbHVnaW5QYXRoLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlVSTFBPU0lYUGF0
aFN0eWxlLCBmYWxzZSkpOworICAgIGF1dG8gYnVuZGxlVVJMID0gYWRvcHRDRihDRlVSTENyZWF0
ZVdpdGhGaWxlU3lzdGVtUGF0aChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwbHVnaW5QYXRoLmNyZWF0
ZUNGU3RyaW5nKCkuZ2V0KCksIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBmYWxzZSkpOwogICAgIAog
ICAgIC8vIFRyeSB0byBpbml0aWFsaXplIHRoZSBidW5kbGUuCi0gICAgUmV0YWluUHRyPENGQnVu
ZGxlUmVmPiBidW5kbGUgPSBhZG9wdENGKF9DRkJ1bmRsZUNyZWF0ZVVuaXF1ZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCBidW5kbGVVUkwuZ2V0KCkpKTsKKyAgICBhdXRvIGJ1bmRsZSA9IGFkb3B0Q0Yo
X0NGQnVuZGxlQ3JlYXRlVW5pcXVlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGJ1bmRsZVVSTC5nZXQo
KSkpOwogICAgIGlmICghYnVuZGxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCkBAIC0x
NzAsMTUgKzE2MSw4IEBAIGJvb2wgTmV0c2NhcGVQbHVnaW5Nb2R1bGU6OmdldFBsdWdpbkluZm8o
Y29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBQbHVnaW5Nb2R1bGVJCiAKICAgICBwbHVnaW4ucGF0
aCA9IHBsdWdpblBhdGg7CiAgICAgcGx1Z2luLmJ1bmRsZUlkZW50aWZpZXIgPSBDRkJ1bmRsZUdl
dElkZW50aWZpZXIoYnVuZGxlLmdldCgpKTsKLSAgICBpZiAoQ0ZUeXBlUmVmIHZlcnNpb25UeXBl
UmVmID0gQ0ZCdW5kbGVHZXRWYWx1ZUZvckluZm9EaWN0aW9uYXJ5S2V5KGJ1bmRsZS5nZXQoKSwg
a0NGQnVuZGxlVmVyc2lvbktleSkpIHsKLSAgICAgICAgaWYgKENGR2V0VHlwZUlEKHZlcnNpb25U
eXBlUmVmKSA9PSBDRlN0cmluZ0dldFR5cGVJRCgpKQotICAgICAgICAgICAgcGx1Z2luLnZlcnNp
b25TdHJpbmcgPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4odmVyc2lvblR5cGVSZWYpOwotICAg
IH0KLQotICAgIGlmIChDRlR5cGVSZWYgc2hvcnRWZXJzaW9uVHlwZVJlZiA9IENGQnVuZGxlR2V0
VmFsdWVGb3JJbmZvRGljdGlvbmFyeUtleShidW5kbGUuZ2V0KCksIENGU1RSKCJDRkJ1bmRsZVNo
b3J0VmVyc2lvblN0cmluZyIpKSkgewotICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQoc2hvcnRWZXJz
aW9uVHlwZVJlZikgPT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkKLSAgICAgICAgICAgIHBsdWdpbi5z
aG9ydFZlcnNpb25TdHJpbmcgPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oc2hvcnRWZXJzaW9u
VHlwZVJlZik7Ci0gICAgfQorICAgIHBsdWdpbi52ZXJzaW9uU3RyaW5nID0gZHluYW1pY19jZl9j
YXN0PENGU3RyaW5nUmVmPihDRkJ1bmRsZUdldFZhbHVlRm9ySW5mb0RpY3Rpb25hcnlLZXkoYnVu
ZGxlLmdldCgpLCBrQ0ZCdW5kbGVWZXJzaW9uS2V5KSk7CisgICAgcGx1Z2luLnNob3J0VmVyc2lv
blN0cmluZyA9IGR5bmFtaWNfY2ZfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZCdW5kbGVHZXRWYWx1ZUZv
ckluZm9EaWN0aW9uYXJ5S2V5KGJ1bmRsZS5nZXQoKSwgQ0ZTVFIoIkNGQnVuZGxlU2hvcnRWZXJz
aW9uU3RyaW5nIikpKTsKIAogICAgIGlmICghZ2V0UGx1Z2luSW5mb0Zyb21Qcm9wZXJ0eUxpc3Rz
KGJ1bmRsZS5nZXQoKSwgcGx1Z2luKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnRDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudENGLmNwcAppbmRleCAxNmRjMTQ0ZGNjOThlMjU2YzA1MzI2N2Y1MmQxZDNlNGU0
ODk1ODNkLi4zZTU1MmRlYjlhOWUzNGQwMzgwZmRjMzdkZmQ5NGY5NWE3YTlkZDFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudENGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L2NmL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudENGLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA4LTIwMjEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSw2MyArMjUsNTEgQEAKIAogLy8gRklYTUU6IE9uIFdp
bmRvd3MsIHdlIHJlcXVpcmUgYWxsIFdlYktpdCBzb3VyY2UgZmlsZXMgdG8gaW5jbHVkZSBjb25m
aWcuaAogLy8gYmVmb3JlIGluY2x1ZGluZyBhbnkgb3RoZXIgZmlsZXMuIEZhaWxpbmcgdG8gaW5j
bHVkZSBjb25maWcuaCB3aWxsIGxlYXZlCi0vLyBVU0VfQ0YgdW5kZWZpbmVkLCBjYXVzaW5nIGJ1
aWxkIGZhaWx1cmVzIGluIHRoaXMKLS8vIGZpbGUuIEJ1dCBNYWMgZG9lc24ndCBoYXZlIGEgY29u
ZmlnLmggZm9yIFdlYktpdCwgc28gd2UgY2FuJ3QgaW5jbHVkZSB0aGUKLS8vIFdpbmRvd3Mgb25l
IGhlcmUuIEZvciBub3cgd2UgY2FuIGp1c3QgZGVmaW5lIFVTRV9DRiBtYW51YWxseSwKLS8vIGJ1
dCB3ZSBuZWVkIGEgYmV0dGVyIGxvbmctdGVybSBzb2x1dGlvbi4KKy8vIFVTRV9DRiB1bmRlZmlu
ZWQsIGNhdXNpbmcgYnVpbGQgZmFpbHVyZXMgaW4gdGhpcyBmaWxlLiBCdXQgTWFjIGRvZXNuJ3Qg
aGF2ZQorLy8gYSBjb25maWcuaCBmb3IgV2ViS2l0LCBzbyB3ZSBjYW4ndCBpbmNsdWRlIHRoZSBX
aW5kb3dzIG9uZSBoZXJlLiBGb3Igbm93IHdlCisvLyBkZWZpbmUgVVNFX0NGIG1hbnVhbGx5IGhl
cmUsIGJ1dCBpdCB3b3VsZCBiZSBnb29kIHRvIGZpbmQgYSBiZXR0ZXIgc29sdXRpb24sCisvLyBs
aWtlbHkgYnkgbWFraW5nICJjb25maWcuaCIgYSAicHJlZml4IGZpbGUiIGluIHRoZSBXaW5kb3dz
IGJ1aWxkIGNvbmZpZ3VyYXRpb24uCiAjaWZuZGVmIFVTRV9DRgogI2RlZmluZSBVU0VfQ0YgMQog
I2VuZGlmCiAKICNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KIAotI2lmIFBMQVRGT1JNKFdJTikK
LSNpZm5kZWYgVVNFX0NHCisjaWYgUExBVEZPUk0oV0lOKSAmJiAhZGVmaW5lZChVU0VfQ0cpCiAj
ZGVmaW5lIFVTRV9DRyAxCiAjZW5kaWYKLSNlbmRpZgogCi0vLyBOT1RFOiBUaGVzZSBuZWVkIHRv
IGFwcGVhciB1cCB0b3AsIGFzIHRoZXkgZGVjbGFyZSBtYWNyb3MKLS8vIHVzZWQgaW4gdGhlIEpT
IGFuZCBXVEYgaGVhZGVycy4KKy8vIE5PVEU6IFRoZXNlIG5lZWQgdG8gYXBwZWFyIHVwIHRvcCwg
YXMgdGhleSBkZWNsYXJlIG1hY3JvcyB1c2VkIGluIHRoZSBKUyBhbmQgV1RGIGhlYWRlcnMuCiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNFeHBvcnRNYWNyb3MuaD4KICNpbmNsdWRlIDx3dGYv
RXhwb3J0TWFjcm9zLmg+CiAKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JDbGllbnQuaCIKIAogI2lu
Y2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+Ci0KICNpbmNsdWRlIDxXZWJD
b3JlL0ZyYW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+Ci0KICNpbmNsdWRlIDx3dGYvUmV0YWlu
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLXVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOworI2luY2x1ZGUgPHd0Zi9jZi9UeXBlQ2FzdHNDRi5oPgogCi1zdGF0aWMgY29u
c3QgY2hhciogaW5zcGVjdG9yU3RhcnRzQXR0YWNoZWRTZXR0aW5nID0gImluc3BlY3RvclN0YXJ0
c0F0dGFjaGVkIjsKLXN0YXRpYyBjb25zdCBjaGFyKiBpbnNwZWN0b3JBdHRhY2hEaXNhYmxlZFNl
dHRpbmcgPSAiaW5zcGVjdG9yQXR0YWNoRGlzYWJsZWQiOworc3RhdGljIGNvbnN0ZXhwciBjb25z
dCBjaGFyKiBpbnNwZWN0b3JTdGFydHNBdHRhY2hlZFNldHRpbmcgPSAiaW5zcGVjdG9yU3RhcnRz
QXR0YWNoZWQiOworc3RhdGljIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBpbnNwZWN0b3JBdHRhY2hE
aXNhYmxlZFNldHRpbmcgPSAiaW5zcGVjdG9yQXR0YWNoRGlzYWJsZWQiOwogCi1zdGF0aWMgaW5s
aW5lIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gY3JlYXRlS2V5Rm9yUHJlZmVyZW5jZXMoY29uc3Qg
U3RyaW5nJiBrZXkpCitzdGF0aWMgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBjcmVhdGVLZXlGb3JQ
cmVmZXJlbmNlcyhjb25zdCBTdHJpbmcmIGtleSkKIHsKICAgICByZXR1cm4gYWRvcHRDRihDRlN0
cmluZ0NyZWF0ZVdpdGhGb3JtYXQoMCwgMCwgQ0ZTVFIoIldlYktpdCBXZWIgSW5zcGVjdG9yIFNl
dHRpbmcgLSAlQCIpLCBrZXkuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSkpOwogfQogCi1zdGF0aWMg
dm9pZCBwb3B1bGF0ZVNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIFN0cmluZyogc2V0dGluZykK
K3N0YXRpYyBTdHJpbmcgbG9hZFNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXkpCiB7Ci0gICAgUmV0
YWluUHRyPENGU3RyaW5nUmVmPiBwcmVmZXJlbmNlc0tleSA9IGNyZWF0ZUtleUZvclByZWZlcmVu
Y2VzKGtleSk7Ci0gICAgUmV0YWluUHRyPENGUHJvcGVydHlMaXN0UmVmPiB2YWx1ZSA9IGFkb3B0
Q0YoQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZShwcmVmZXJlbmNlc0tleS5nZXQoKSwga0NGUHJl
ZmVyZW5jZXNDdXJyZW50QXBwbGljYXRpb24pKTsKLQotICAgIGlmICghdmFsdWUpCi0gICAgICAg
IHJldHVybjsKLQotICAgIENGVHlwZUlEIHR5cGUgPSBDRkdldFR5cGVJRCh2YWx1ZS5nZXQoKSk7
Ci0gICAgaWYgKHR5cGUgPT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkKLSAgICAgICAgKnNldHRpbmcg
PSBzdGF0aWNfY2FzdDxTdHJpbmc+KHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPih2YWx1ZS5nZXQo
KSkpOwotICAgIGVsc2UgaWYgKHR5cGUgPT0gQ0ZCb29sZWFuR2V0VHlwZUlEKCkpCi0gICAgICAg
ICpzZXR0aW5nID0gc3RhdGljX2Nhc3Q8Ym9vbD4oQ0ZCb29sZWFuR2V0VmFsdWUoc3RhdGljX2Nh
c3Q8Q0ZCb29sZWFuUmVmPih2YWx1ZS5nZXQoKSkpKSA/ICJ0cnVlIiA6ICJmYWxzZSI7Ci0gICAg
ZWxzZQotICAgICAgICAqc2V0dGluZyA9IGVtcHR5U3RyaW5nKCk7CisgICAgYXV0byB2YWx1ZSA9
IGFkb3B0Q0YoQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZShjcmVhdGVLZXlGb3JQcmVmZXJlbmNl
cyhrZXkpLmdldCgpLCBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRBcHBsaWNhdGlvbikpOworICAgIGlm
IChhdXRvIHN0cmluZyA9IGR5bmFtaWNfY2ZfY2FzdDxDRlN0cmluZ1JlZj4odmFsdWUuZ2V0KCkp
KQorICAgICAgICByZXR1cm4gc3RyaW5nOworICAgIGlmICh2YWx1ZSA9PSBrQ0ZCb29sZWFuVHJ1
ZSkKKyAgICAgICAgcmV0dXJuICJ0cnVlIl9zOworICAgIGlmICh2YWx1ZSA9PSBrQ0ZCb29sZWFu
RmFsc2UpCisgICAgICAgIHJldHVybiAiZmFsc2UiX3M7CisgICAgcmV0dXJuIHsgfTsKIH0KIAog
c3RhdGljIHZvaWQgc3RvcmVTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcm
IHNldHRpbmcpCkBAIC0xMDEsMTEgKzg5LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnNl
bmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAKIGJvb2wgV2ViSW5z
cGVjdG9yQ2xpZW50OjppbnNwZWN0b3JBdHRhY2hEaXNhYmxlZCgpCiB7Ci0gICAgU3RyaW5nIHZh
bHVlOwotICAgIHBvcHVsYXRlU2V0dGluZyhpbnNwZWN0b3JBdHRhY2hEaXNhYmxlZFNldHRpbmcs
ICZ2YWx1ZSk7Ci0gICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIHJldHVybiB2YWx1ZSA9PSAidHJ1ZSI7CisgICAgcmV0dXJuIGxvYWRTZXR0aW5nKGlu
c3BlY3RvckF0dGFjaERpc2FibGVkU2V0dGluZykgPT0gInRydWUiOwogfQogCiB2b2lkIFdlYklu
c3BlY3RvckNsaWVudDo6c2V0SW5zcGVjdG9yQXR0YWNoRGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkK
QEAgLTEyMCwxMSArMTA0LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmRlbGV0ZUluc3Bl
Y3RvclN0YXJ0c0F0dGFjaGVkKCkKIAogYm9vbCBXZWJJbnNwZWN0b3JDbGllbnQ6Omluc3BlY3Rv
clN0YXJ0c0F0dGFjaGVkKCkKIHsKLSAgICBTdHJpbmcgdmFsdWU7Ci0gICAgcG9wdWxhdGVTZXR0
aW5nKGluc3BlY3RvclN0YXJ0c0F0dGFjaGVkU2V0dGluZywgJnZhbHVlKTsKLSAgICBpZiAodmFs
dWUuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gdmFsdWUgPT0g
InRydWUiOworICAgIHJldHVybiBsb2FkU2V0dGluZyhpbnNwZWN0b3JTdGFydHNBdHRhY2hlZFNl
dHRpbmcpID09ICJ0cnVlIjsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnNldEluc3Bl
Y3RvclN0YXJ0c0F0dGFjaGVkKGJvb2wgYXR0YWNoZWQpCkBAIC0xNDAsMjQgKzEyMCwxMCBAQCB2
b2lkIFdlYkluc3BlY3RvckNsaWVudDo6ZGVsZXRlSW5zcGVjdG9yQXR0YWNoRGlzYWJsZWQoKQog
c3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OlNl
dHRpbmdzPiBXZWJJbnNwZWN0b3JDbGllbnQ6OmNyZWF0ZUZyb250ZW5kU2V0dGluZ3MoKQogewog
ICAgIGNsYXNzIEluc3BlY3RvckZyb250ZW5kU2V0dGluZ3NDRiA6IHB1YmxpYyBXZWJDb3JlOjpJ
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpTZXR0aW5ncyB7Ci0gICAgcHVibGljOgotICAg
ICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JGcm9udGVuZFNldHRpbmdzQ0YoKSB7IH0KLSAgICAgICAg
dmlydHVhbCBTdHJpbmcgZ2V0UHJvcGVydHkoY29uc3QgU3RyaW5nJiBuYW1lKQotICAgICAgICB7
Ci0gICAgICAgICAgICBTdHJpbmcgdmFsdWU7Ci0gICAgICAgICAgICBwb3B1bGF0ZVNldHRpbmco
bmFtZSwgJnZhbHVlKTsKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9wZXJ0eShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYgdmFsdWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0b3JlU2V0dGluZyhuYW1l
LCB2YWx1ZSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlUHJvcGVy
dHkoY29uc3QgU3RyaW5nJiBuYW1lKQotICAgICAgICB7Ci0gICAgICAgICAgICBkZWxldGVTZXR0
aW5nKG5hbWUpOwotICAgICAgICB9CisgICAgcHJpdmF0ZToKKyAgICAgICAgU3RyaW5nIGdldFBy
b3BlcnR5KGNvbnN0IFN0cmluZyYgbmFtZSkgZmluYWwgeyByZXR1cm4gbG9hZFNldHRpbmcobmFt
ZSk7IH0KKyAgICAgICAgdm9pZCBzZXRQcm9wZXJ0eShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYgdmFsdWUpIGZpbmFsIHsgc3RvcmVTZXR0aW5nKG5hbWUsIHZhbHVlKTsgfQorICAg
ICAgICB2b2lkIGRlbGV0ZVByb3BlcnR5KGNvbnN0IFN0cmluZyYgbmFtZSkgZmluYWwgeyBkZWxl
dGVTZXR0aW5nKG5hbWUpOyB9CiAgICAgfTsKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxJbnNwZWN0
b3JGcm9udGVuZFNldHRpbmdzQ0Y+KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9QbHVnaW5zL1dlYkJhc2VQbHVnaW5QYWNrYWdlLm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvUGx1Z2lucy9XZWJCYXNlUGx1Z2luUGFja2FnZS5tbQppbmRleCA4MGEzYjRmNGE4
Mjc0MjRlZWRkZWY5NzdmN2U2MTg1OTY0N2QxNmFkLi5kOTllZjI4MTkzOGJkY2UzOTllYTAyYjJh
YjEwZjk3OGE2ZmEzMzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9QbHVn
aW5zL1dlYkJhc2VQbHVnaW5QYWNrYWdlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1BsdWdpbnMvV2ViQmFzZVBsdWdpblBhY2thZ2UubW0KQEAgLTM3NywxNSArMzc3LDExIEBAIC0g
KFN0cmluZylidW5kbGVJZGVudGlmaWVyCiAKIC0gKFN0cmluZylidW5kbGVWZXJzaW9uCiB7Ci0g
ICAgQ0ZEaWN0aW9uYXJ5UmVmIGluZm9EaWN0aW9uYXJ5ID0gQ0ZCdW5kbGVHZXRJbmZvRGljdGlv
bmFyeShjZkJ1bmRsZS5nZXQoKSk7CisgICAgYXV0byBpbmZvRGljdGlvbmFyeSA9IENGQnVuZGxl
R2V0SW5mb0RpY3Rpb25hcnkoY2ZCdW5kbGUuZ2V0KCkpOwogICAgIGlmICghaW5mb0RpY3Rpb25h
cnkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIENGVHlwZVJlZiBidW5kbGVWZXJz
aW9uU3RyaW5nID0gQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoaW5mb0RpY3Rpb25hcnksIGtDRkJ1bmRs
ZVZlcnNpb25LZXkpOwotICAgIGlmICghYnVuZGxlVmVyc2lvblN0cmluZyB8fCBDRkdldFR5cGVJ
RChidW5kbGVWZXJzaW9uU3RyaW5nKSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpKQotICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxDRlN0cmluZ1Jl
Zj4oYnVuZGxlVmVyc2lvblN0cmluZyk7CisgICAgcmV0dXJuIGR5bmFtaWNfY2ZfY2FzdDxDRlN0
cmluZ1JlZj4oQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoaW5mb0RpY3Rpb25hcnksIGtDRkJ1bmRsZVZl
cnNpb25LZXkpKTsKIH0KIAogQGVuZAo=
</data>
<flag name="review"
          id="459659"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>