<?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>237711</bug_id>
          
          <creation_ts>2022-03-10 05:58:21 -0800</creation_ts>
          <short_desc>[LBSE] Activate SVG transform support through layers</short_desc>
          <delta_ts>2022-04-25 06:46:44 -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>SVG</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>237553</dependson>
    
    <dependson>237554</dependson>
    
    <dependson>237590</dependson>
    
    <dependson>237701</dependson>
    
    <dependson>239060</dependson>
          <blocked>90738</blocked>
    
    <blocked>239717</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>changseok</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>fred.wang</cc>
    
    <cc>fujii</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>rbuis</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1850064</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-03-10 05:58:21 -0800</bug_when>
    <thetext>Finally activate SVG transform support for containers &amp; shapes in LBSE.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1850065</commentid>
    <comment_count>1</comment_count>
      <attachid>454350</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-03-10 06:02:07 -0800</bug_when>
    <thetext>Created attachment 454350
Patch, v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1850066</commentid>
    <comment_count>2</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-03-10 06:02:24 -0800</bug_when>
    <thetext>Delaying EWS submission until the dependency patches are landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1850068</commentid>
    <comment_count>3</comment_count>
      <attachid>454351</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-03-10 06:05:39 -0800</bug_when>
    <thetext>Created attachment 454351
Patch, v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1850277</commentid>
    <comment_count>4</comment_count>
      <attachid>454412</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-03-10 15:43:30 -0800</bug_when>
    <thetext>Created attachment 454412
Patch, v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1850777</commentid>
    <comment_count>5</comment_count>
      <attachid>454559</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-03-13 16:43:47 -0700</bug_when>
    <thetext>Created attachment 454559
Patch, v6

The latest iteration of the patch introduces FloatOrLayoutRect, which either holds a FloatRect or LayoutRect (realized via variant&lt;FloatRect, LayoutRect&gt;) -- this avoids all LayoutRect(fromFloatRect) hacks, present in previous iterations of the patch and guarantees type-safety again. As benefit it allows us to detect if we need to pixel snap or not (SVG stores FloatRects, no pixel snapping should occour), simplifying quite a few parts in RenderLayer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1850780</commentid>
    <comment_count>6</comment_count>
      <attachid>454562</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-03-13 16:49:13 -0700</bug_when>
    <thetext>Created attachment 454562
Patch, v4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1850781</commentid>
    <comment_count>7</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-03-13 16:50:18 -0700</bug_when>
    <thetext>(In reply to Nikolas Zimmermann from comment #5)
&gt; Created attachment 454559 [details]
&gt; Patch, v6
&gt; 
&gt; The latest iteration of the patch introduces FloatOrLayoutRect, which either
&gt; holds a FloatRect or LayoutRect (realized via variant&lt;FloatRect,
&gt; LayoutRect&gt;) -- this avoids all LayoutRect(fromFloatRect) hacks, present in
&gt; previous iterations of the patch and guarantees type-safety again. As
&gt; benefit it allows us to detect if we need to pixel snap or not (SVG stores
&gt; FloatRects, no pixel snapping should occour), simplifying quite a few parts
&gt; in RenderLayer
Please ignore this comment, this was supposed to go onto ticket 237554, not here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851717</commentid>
    <comment_count>8</comment_count>
      <attachid>454818</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-03-16 03:27:28 -0700</bug_when>
    <thetext>Created attachment 454818
Patch, v5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851741</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-16 05:38:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/90364832&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853139</commentid>
    <comment_count>10</comment_count>
      <attachid>455227</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-03-21 02:55:34 -0700</bug_when>
    <thetext>Created attachment 455227
Patch, v6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858028</commentid>
    <comment_count>11</comment_count>
      <attachid>456619</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-04-04 13:36:19 -0700</bug_when>
    <thetext>Created attachment 456619
Patch, v7</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1858604</commentid>
    <comment_count>12</comment_count>
      <attachid>456754</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-04-05 14:59:50 -0700</bug_when>
    <thetext>Created attachment 456754
Patch, v8</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859180</commentid>
    <comment_count>13</comment_count>
      <attachid>456902</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-04-07 03:31:31 -0700</bug_when>
    <thetext>Created attachment 456902
Patch, v9</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859182</commentid>
    <comment_count>14</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-04-07 03:33:04 -0700</bug_when>
    <thetext>Depends on 237701, hence the build failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859485</commentid>
    <comment_count>15</comment_count>
      <attachid>456979</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-04-07 15:59:43 -0700</bug_when>
    <thetext>Created attachment 456979
Patch, v10</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860155</commentid>
    <comment_count>16</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-04-10 15:45:39 -0700</bug_when>
    <thetext>The mac-wk1 / mac-wk2 failures are multicol related, not affected by this patch - tested on my machine. There appears to be general flakiness with respect to multicol layout at present?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860157</commentid>
    <comment_count>17</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-04-10 15:52:09 -0700</bug_when>
    <thetext>Committed r292690 (249482@trunk): &lt;https://commits.webkit.org/249482@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860193</commentid>
    <comment_count>18</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2022-04-10 21:13:33 -0700</bug_when>
    <thetext>The EWS result didn&apos;t seem false positive.
Some multicol tests are ramdomly failing since 249482@trunk.
See the history of the result.
https://build.webkit.org/results/Apple-Monterey-Debug-AppleSilicon-WK2-Tests/r292690%20(1670)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860197</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2022-04-10 21:19:57 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 239060</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860249</commentid>
    <comment_count>20</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-04-11 04:29:48 -0700</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #18)
&gt; The EWS result didn&apos;t seem false positive.
&gt; Some multicol tests are ramdomly failing since 249482@trunk.
&gt; See the history of the result.
&gt; https://build.webkit.org/results/Apple-Monterey-Debug-AppleSilicon-WK2-Tests/
&gt; r292690%20(1670)/results.html

Thanks for taking care Fujii - indeed I was misremembering two things: we do build with LBSE enabled by default on macOS, GTK &amp; WPE -- I thought that the changes in the #if ENABLE(LBSE)... blocks are unrelated to the EWS failures :-(

And indeed I saw the flakiness before, however not on results.webkit.org, but a private dashboard ... due to my patch:

A classic one -- uninitialized variable:

diff --git a/Source/WebCore/rendering/RenderObject.cpp b/Source/WebCore/rendering/RenderObject.cpp
index 8a4d80f2b642..a65a7517b56e 100644
--- a/Source/WebCore/rendering/RenderObject.cpp
+++ b/Source/WebCore/rendering/RenderObject.cpp
@@ -2030,6 +2030,9 @@ RenderObject::RenderObjectRareData::RenderObjectRareData()
     , m_isRenderFragmentedFlow(false)
     , m_hasOutlineAutoAncestor(false)
     , m_paintContainmentApplies(false)
+#if ENABLE(LAYER_BASED_SVG_ENGINE)
+    , m_hasSVGTransform(false)
+#endif
 {
 }
 
 That solves the mystery. Will add another patch, and ask Rob for another review.
Side note: We should get rid of ADD_BOOLEAN_BITFIELD() -- the code is dangerous, we have to define the bitfields in the header, and initialize them in the source file.

That leads to bugs like this one, which can be avoided with in-place initialization... I&apos;ll note this down for a rainy afternoon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860250</commentid>
    <comment_count>21</comment_count>
      <attachid>457243</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-04-11 04:30:11 -0700</bug_when>
    <thetext>Created attachment 457243
Patch, v11</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860263</commentid>
    <comment_count>22</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-04-11 05:54:11 -0700</bug_when>
    <thetext>Committed r292706 (249498@trunk): &lt;https://commits.webkit.org/249498@trunk&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454350</attachid>
            <date>2022-03-10 06:02:07 -0800</date>
            <delta_ts>2022-03-10 06:05:34 -0800</delta_ts>
            <desc>Patch, v1</desc>
            <filename>bug-237711-20220310060206.patch</filename>
            <type>text/plain</type>
            <size>25655</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNThlYTZmMzA0MzY2ZDc0
ZDAwMDM1MWJlMGI3NDhkMGQwMjJjZjZlNC4uZGFhNDBhYTdhYTYwMzIzZTBjZjM4YWZhNDUzNTA2
NzUxZTI2MTA4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDIyLTAzLTEwICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtMQlNF
XSBBY3RpdmF0ZSBTVkcgdHJhbnNmb3JtIHN1cHBvcnQgdGhyb3VnaCBsYXllcnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzcxMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFjdGl2YXRlIHRyYW5zZm9y
bXMgZm9yIFNWRyBsYXllcnMuCisKKyAgICAgICAgVXNlIHRoZSBmbGFnIHRvIGtlZXAgdHJhY2sg
b2YgdGhlIHByZXNlbmNlIG9mIFNWRyB0cmFuc2Zvcm1hdGlvbnMKKyAgICAgICAgb24gYSByZW5k
ZXJlci4gQ1NTL0hUTUwgcmVuZGVyZXJzIGNhbiByZWx5IG9ubHkgb24gdGhlIFJlbmRlclN0eWxl
CisgICAgICAgIHRvIGRldGVybWluZSBpZiB0cmFuc2Zvcm1hdGlvbnMgYXJlIGFwcGxpZWQsIHdo
ZXJlYXMgU1ZHIGhhcyB0bworICAgICAgICBjb25zdWx0IGFkZGl0aW9uYWwgc291cmNlcywgc3Vj
aCBhcyB0aGUgU1ZHICd0cmFuc2Zvcm0nIGF0dHJpYnV0ZS4KKworICAgICAgICBBIFNWRyByZW5k
ZXJlciB3aXRoIHRoZSAnSGFzU1ZHVHJhbnNmb3JtJyBmbGFnIHNldCBzaG91bGQgYmVoYXZlCisg
ICAgICAgIGxpa2UgYW55IFNWRy9IVE1MIHJlbmRlcmVyIHRoYXQgaGFzIENTUyB0cmFuc2Zvcm1h
dGlvbnMgYXBwbGllZC4KKworICAgICAgICBUT0RPOiBXcml0ZSBtb3JlIGFib3V0IHRoaXMuCisK
KyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cywgbm8gY2hhbmdlIGluIGJlaGF2aW91
ci4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94Ojp1cGRhdGVMYXllclRyYW5zZm9ybSk6IERlbGV0ZWQuCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckJveC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjYW5DcmVhdGVTdGFja2luZ0NvbnRleHQpOgorICAgICAg
ICAoV2ViQ29yZTo6dXBkYXRlVHJhbnNmb3JtRnJvbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckxheWVyOjpjdXJyZW50VHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllck1vZGVsT2JqZWN0Ojp1cGRhdGVMYXllclRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllck1vZGVsT2JqZWN0OjphcHBseVNWR1RyYW5zZm9ybSBjb25zdCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6
c2V0SGFzU1ZHVHJhbnNmb3JtKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Omhhc1NWR1RyYW5zZm9ybSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Omhhc1RyYW5zZm9ybSBjb25zdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHTGF5ZXJUcmFuc2Zvcm1VcGRhdGVyOjpTVkdMYXllclRyYW5zZm9ybVVwZGF0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGF5ZXJUcmFuc2Zvcm1VcGRhdGVyOjp+U1ZHTGF5
ZXJUcmFuc2Zvcm1VcGRhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0NvbnRhaW5l
cjo6bGF5b3V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5o
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHQ29udGFpbmVyOjp1cGRhdGVMYXllckluZm9y
bWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVs
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR01vZGVsT2JqZWN0Ojp1cGRh
dGVGcm9tU3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSb290Ojp1cGRhdGVGcm9tU3R5bGUpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHU2hhcGU6OmxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdT
aGFwZTo6YXBwbHlUcmFuc2Zvcm0gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHU2hhcGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9y
bWFibGVDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHVHJhbnNmb3Jt
YWJsZUNvbnRhaW5lcjo6dXBkYXRlRnJvbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNWR1RyYW5zZm9ybWFibGVDb250YWluZXI6OmFwcGx5VHJhbnNmb3JtIGNvbnN0KToKKyAgICAg
ICAgKiBzdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dy
YXBoaWNzRWxlbWVudDo6YW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSBjb25zdCk6CisKIDIwMjItMDMt
MTAgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgVW5pZnkgcmVmZXJlbmNlIGJveCAvIENUTSBjb21wdXRhdGlvbiBpbiBSZW5kZXJMYXllcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAppbmRleCA0MTVlOTRmNWNiYzFhZWY4
OTM4ZDE4ZTcxYmY3NDQ1NWMxMWQ5OGM3Li4yZjg2MjliNGM4MGQ5NzE2ZTJjZjM4OGFkNmY2Nzkz
YTliNzkxYmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApAQCAtNjYy
LDEzICs2NjIsNiBAQCB2b2lkIFJlbmRlckJveDo6YWJzb2x1dGVRdWFkcyhWZWN0b3I8RmxvYXRR
dWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAogICAgIHF1YWRzLmFwcGVuZChsb2Nh
bFRvQWJzb2x1dGVRdWFkKGxvY2FsUmVjdCwgVXNlVHJhbnNmb3Jtcywgd2FzRml4ZWQpKTsKIH0K
IAotdm9pZCBSZW5kZXJCb3g6OnVwZGF0ZUxheWVyVHJhbnNmb3JtKCkKLXsKLSAgICAvLyBUcmFu
c2Zvcm0tb3JpZ2luIGRlcGVuZHMgb24gYm94IHNpemUsIHNvIHdlIG5lZWQgdG8gdXBkYXRlIHRo
ZSBsYXllciB0cmFuc2Zvcm0gYWZ0ZXIgbGF5b3V0LgotICAgIGlmIChoYXNMYXllcigpKQotICAg
ICAgICBsYXllcigpLT51cGRhdGVUcmFuc2Zvcm0oKTsKLX0KLQogdm9pZCBSZW5kZXJCb3g6OmFw
cGx5VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0LCBjb25zdCBSZW5kZXJTdHlsZSYg
c3R5bGUsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gsIE9wdGlvblNldDxSZW5kZXJTdHls
ZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPiBvcHRpb25zKSBjb25zdAogewogICAgIHN0eWxl
LmFwcGx5VHJhbnNmb3JtKHQsIGJvdW5kaW5nQm94LCBvcHRpb25zKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guaAppbmRleCBlNDA3Y2JjZmM1ZjQyOTE3YjU5OWVhMjU0ZjM0OTIwZGY1
YzY3ZjlkLi5kZjY2YmI2YzdkOTY4MDczY2RlNDI0MDA3M2JhMGRiYzRkZGRkMTJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCkBAIC0yMTgsNyArMjE4LDYgQEAgcHVibGljOgog
ICAgIHZvaWQgYWRkT3ZlcmZsb3dGcm9tQ2hpbGQoY29uc3QgUmVuZGVyQm94KiBjaGlsZCkgeyBh
ZGRPdmVyZmxvd0Zyb21DaGlsZChjaGlsZCwgY2hpbGQtPmxvY2F0aW9uT2Zmc2V0KCkpOyB9CiAg
ICAgdm9pZCBhZGRPdmVyZmxvd0Zyb21DaGlsZChjb25zdCBSZW5kZXJCb3gqIGNoaWxkLCBjb25z
dCBMYXlvdXRTaXplJiBkZWx0YSk7CiAKLSAgICB2b2lkIHVwZGF0ZUxheWVyVHJhbnNmb3JtKCk7
CiAgICAgdm9pZCBhcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IFJl
bmRlclN0eWxlJiwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCwgT3B0aW9uU2V0PFJlbmRl
clN0eWxlOjpUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb24+ID0gUmVuZGVyU3R5bGU6OmFsbFRyYW5z
Zm9ybU9wZXJhdGlvbnMpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgTGF5b3V0U2l6ZSBjb250ZW50
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHsgY29udGVudFdpZHRoKCksIGNvbnRlbnRIZWlnaHQoKSB9
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCBmNjE1MDAy
NWQ5ZjE5NjlkYzlhN2M1NjA5NDIzZTUyZDIwMzk1ZTQyLi42Y2FkNjBmNDhiMzQ2ZWRjNjQ1NmQ0
YTk5NTI2MDFkMzA2OGQ2N2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHAKQEAgLTU1Miw2ICs1NTIsOSBAQCBzdGF0aWMgYm9vbCBjYW5DcmVhdGVTdGFja2luZ0Nv
bnRleHQoY29uc3QgUmVuZGVyTGF5ZXImIGxheWVyKQogewogICAgIGF1dG8mIHJlbmRlcmVyID0g
bGF5ZXIucmVuZGVyZXIoKTsKICAgICByZXR1cm4gcmVuZGVyZXIuaGFzVHJhbnNmb3JtUmVsYXRl
ZFByb3BlcnR5KCkKKyNpZiBFTkFCTEUoTEFZRVJfQkFTRURfU1ZHX0VOR0lORSkKKyAgICAgICAg
fHwgcmVuZGVyZXIuaGFzU1ZHVHJhbnNmb3JtKCkKKyNlbmRpZgogICAgICAgICB8fCByZW5kZXJl
ci5oYXNDbGlwUGF0aCgpCiAgICAgICAgIHx8IHJlbmRlcmVyLmhhc0ZpbHRlcigpCiAgICAgICAg
IHx8IHJlbmRlcmVyLmhhc01hc2soKQpAQCAtMTMxMCwxMyArMTMxMywxOSBAQCBzdGF0aWMgaW5s
aW5lIEZsb2F0UmVjdCBjb21wdXRlUmVmZXJlbmNlQm94KGNvbnN0IFJlbmRlckxheWVyTW9kZWxP
YmplY3QmIHJlbmRlcgogCiBzdGF0aWMgaW5saW5lIHZvaWQgdXBkYXRlVHJhbnNmb3JtRnJvbVN0
eWxlKFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IFJlbmRlckxheWVyTW9k
ZWxPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIE9wdGlvblNldDxS
ZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPiBvcHRpb25zKQogewotICAgIEZs
b2F0UmVjdCByZWZlcmVuY2VCb3g7CisgICAgYXV0byByZWZlcmVuY2VCb3ggPSByZW5kZXJlci50
cmFuc2Zvcm1SZWZlcmVuY2VCb3hSZWN0KCk7CiAKLSAgICAvLyBGSVhNRTogW0xCU0VdIFVwc3Ry
ZWFtIHJlZmVyZW5jZSBib3ggY29tcHV0YXRpb24gZm9yIFJlbmRlclNWR01vZGVsT2JqZWN0IGRl
cml2ZWQgcmVuZGVyZXJzCi0gICAgaWYgKGlzPFJlbmRlckJveD4ocmVuZGVyZXIpKQotICAgICAg
ICByZWZlcmVuY2VCb3ggPSBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKExheW91dFJlY3QocmVuZGVy
ZXIudHJhbnNmb3JtUmVmZXJlbmNlQm94UmVjdCgpKSwgcmVuZGVyZXIuZG9jdW1lbnQoKS5kZXZp
Y2VTY2FsZUZhY3RvcigpKTsKKyNpZiBFTkFCTEUoTEFZRVJfQkFTRURfU1ZHX0VOR0lORSkKKyAg
ICAvLyBObyBwaXhlbCBzbmFwcGluZyB3aXRoaW4gU1ZHIHN1YnRyZWUuCisgICAgaWYgKHJlbmRl
cmVyLmlzU1ZHTGF5ZXJBd2FyZVJlbmRlcmVyKCkgJiYgcmVuZGVyZXIuZG9jdW1lbnQoKS5zZXR0
aW5ncygpLmxheWVyQmFzZWRTVkdFbmdpbmVFbmFibGVkKCkpIHsKKyAgICAgICAgcmVuZGVyZXIu
YXBwbHlUcmFuc2Zvcm0odHJhbnNmb3JtLCBzdHlsZSwgcmVmZXJlbmNlQm94LCBvcHRpb25zKTsK
KyAgICAgICAgbWFrZU1hdHJpeFJlbmRlcmFibGUodHJhbnNmb3JtLCByZW5kZXJlci52aWV3KCku
Y29tcG9zaXRvcigpLmNhblJlbmRlcjNEVHJhbnNmb3JtcygpKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyNlbmRpZgogCi0gICAgcmVuZGVyZXIuYXBwbHlUcmFuc2Zvcm0odHJhbnNmb3JtLCBz
dHlsZSwgcmVmZXJlbmNlQm94LCBvcHRpb25zKTsKKyAgICBhdXRvIHBpeGVsU25hcHBlZFJlZmVy
ZW5jZUJveCA9IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMoTGF5b3V0UmVjdChyZWZlcmVuY2VCb3gp
LCByZW5kZXJlci5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpOworICAgIHJlbmRlcmVy
LmFwcGx5VHJhbnNmb3JtKHRyYW5zZm9ybSwgc3R5bGUsIHBpeGVsU25hcHBlZFJlZmVyZW5jZUJv
eCwgb3B0aW9ucyk7CiAgICAgbWFrZU1hdHJpeFJlbmRlcmFibGUodHJhbnNmb3JtLCByZW5kZXJl
ci52aWV3KCkuY29tcG9zaXRvcigpLmNhblJlbmRlcjNEVHJhbnNmb3JtcygpKTsKIH0KIApAQCAt
MTM1MywyMiArMTM2MiwxNiBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBSZW5kZXJMYXllcjo6Y3Vy
cmVudFRyYW5zZm9ybShPcHRpb25TZXQ8UmVuZGVyU3R5bGU6OlRyYW5zZgogICAgIGlmICghbV90
cmFuc2Zvcm0pCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICAvLyBGSVhNRTogW0xCU0VdIFVw
c3RyZWFtIHRyYW5zZm9ybSBzdXBwb3J0IGZvciBSZW5kZXJTVkdNb2RlbE9iamVjdCBkZXJpdmVk
IHJlbmRlcmVycwotICAgIGlmICghaXM8UmVuZGVyQm94PihyZW5kZXJlcigpKSkKLSAgICAgICAg
cmV0dXJuIHsgfTsKLQotICAgIGF1dG8mIHJlbmRlckJveCA9IGRvd25jYXN0PFJlbmRlckJveD4o
cmVuZGVyZXIoKSk7Ci0KICAgICAvLyBtX3RyYW5zZm9ybSBpbmNsdWRlcyB0cmFuc2Zvcm0tb3Jp
Z2luIGFuZCBpcyBhZmZlY3RlZCBieSB0aGUgY2hvaWNlIG9mIHRoZSB0cmFuc2Zvcm0tYm94Lgog
ICAgIC8vIFRoZXJlZm9yZSB3ZSBjYW4gb25seSB1c2UgdGhlIGNhY2hlZCBtX3RyYW5zZm9ybSwg
aWYgdGhlIGFuaW1hdGlvbiBkb2Vzbid0IGFsdGVyIHRyYW5zZm9ybS1ib3ggb3IgZXhjbHVkZXMg
dHJhbnNmb3JtLW9yaWdpbi4KIAogICAgIC8vIFF1ZXJ5IHRoZSBhbmltYXRlZFN0eWxlKCkgdG8g
b2J0YWluIHRoZSBjdXJyZW50IHRyYW5zZm9ybWF0aW9uLCB3aGVuIGFjY2VsZXJhdGVkIHRyYW5z
Zm9ybSBhbmltYXRpb25zIGFyZSBydW5uaW5nLgotICAgIGF1dG8gc3R5bGVhYmxlID0gU3R5bGVh
YmxlOjpmcm9tUmVuZGVyZXIocmVuZGVyQm94KTsKKyAgICBhdXRvIHN0eWxlYWJsZSA9IFN0eWxl
YWJsZTo6ZnJvbVJlbmRlcmVyKHJlbmRlcmVyKCkpOwogICAgIGlmICgoc3R5bGVhYmxlICYmIHN0
eWxlYWJsZS0+aXNSdW5uaW5nQWNjZWxlcmF0ZWRUcmFuc2Zvcm1BbmltYXRpb24oKSkgfHwgIW9w
dGlvbnMuY29udGFpbnMoUmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbjo6VHJh
bnNmb3JtT3JpZ2luKSkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IGFu
aW1hdGVkU3R5bGUgPSByZW5kZXJCb3guYW5pbWF0ZWRTdHlsZSgpOworICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8UmVuZGVyU3R5bGU+IGFuaW1hdGVkU3R5bGUgPSByZW5kZXJlcigpLmFuaW1hdGVk
U3R5bGUoKTsKIAogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm07Ci0gICAg
ICAgIHVwZGF0ZVRyYW5zZm9ybUZyb21TdHlsZSh0cmFuc2Zvcm0sIHJlbmRlckJveCwgKmFuaW1h
dGVkU3R5bGUsIG9wdGlvbnMpOworICAgICAgICB1cGRhdGVUcmFuc2Zvcm1Gcm9tU3R5bGUodHJh
bnNmb3JtLCByZW5kZXJlcigpLCAqYW5pbWF0ZWRTdHlsZSwgb3B0aW9ucyk7CiAgICAgICAgIHJl
dHVybiB0cmFuc2Zvcm07CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKaW5kZXggOGQ5OTBmMWQ1MzFiZTYzZjJiMjVk
MDYxNDVmYjEzMWM0MTAwNzI2Yy4uMTk0MDU2OGVhZjlkY2I2MTk2MjI5Y2ZlNWJiMjVmZWUwMzli
ZjQzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9k
ZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1v
ZGVsT2JqZWN0LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIlJlbmRlckxheWVyU2Ny
b2xsYWJsZUFyZWEuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdNb2RlbE9iamVjdC5oIgogI2luY2x1
ZGUgIlJlbmRlclZpZXcuaCIKKyNpbmNsdWRlICJTVkdHcmFwaGljc0VsZW1lbnQuaCIKICNpbmNs
dWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlN0eWxlU2Nyb2xsU25hcFBvaW50cy5oIgogI2lu
Y2x1ZGUgIlRyYW5zZm9ybVN0YXRlLmgiCkBAIC0yMzEsNiArMjMyLDEzIEBAIHZvaWQgUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdDo6c3VzcGVuZEFuaW1hdGlvbnMoTW9ub3RvbmljVGltZSB0aW1lKQog
ICAgIGxheWVyKCktPmJhY2tpbmcoKS0+c3VzcGVuZEFuaW1hdGlvbnModGltZSk7CiB9CiAKK3Zv
aWQgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6dXBkYXRlTGF5ZXJUcmFuc2Zvcm0oKQoreworICAg
IC8vIFRyYW5zZm9ybS1vcmlnaW4gZGVwZW5kcyBvbiBib3ggc2l6ZSwgc28gd2UgbmVlZCB0byB1
cGRhdGUgdGhlIGxheWVyIHRyYW5zZm9ybSBhZnRlciBsYXlvdXQuCisgICAgaWYgKGhhc0xheWVy
KCkpCisgICAgICAgIGxheWVyKCktPnVwZGF0ZVRyYW5zZm9ybSgpOworfQorCiAjaWYgRU5BQkxF
KExBWUVSX0JBU0VEX1NWR19FTkdJTkUpCiBzdGQ6Om9wdGlvbmFsPExheW91dFJlY3Q+IFJlbmRl
ckxheWVyTW9kZWxPYmplY3Q6OmNvbXB1dGVWaXNpYmxlUmVjdEluU1ZHQ29udGFpbmVyKGNvbnN0
IExheW91dFJlY3QmIHJlY3QsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5l
ciwgUmVuZGVyT2JqZWN0OjpWaXNpYmxlUmVjdENvbnRleHQgY29udGV4dCkgY29uc3QKIHsKQEAg
LTMxNiw2ICszMjQsMzggQEAgdm9pZCBSZW5kZXJMYXllck1vZGVsT2JqZWN0OjptYXBMb2NhbFRv
U1ZHQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QKIAogICAgIGNvbnRhaW5l
ci0+bWFwTG9jYWxUb0NvbnRhaW5lcihhbmNlc3RvckNvbnRhaW5lciwgdHJhbnNmb3JtU3RhdGUs
IG1vZGUsIHdhc0ZpeGVkKTsKIH0KKwordm9pZCBSZW5kZXJMYXllck1vZGVsT2JqZWN0OjphcHBs
eVNWR1RyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBTVkdHcmFwaGlj
c0VsZW1lbnQmIGdyYXBoaWNzRWxlbWVudCwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25z
dCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBPcHRpb25TZXQ8UmVuZGVyU3R5bGU6OlRyYW5zZm9y
bU9wZXJhdGlvbk9wdGlvbj4gb3B0aW9ucykgY29uc3QKK3sKKyAgICAvLyBUaGlzIGNoZWNrIGRv
ZXMgbm90IHVzZSBzdHlsZS5oYXNUcmFuc2Zvcm1SZWxhdGVkUHJvcGVydHkoKSBvbiBwdXJwb3Nl
IC0tIHdlIG9ubHkgd2FudCB0byBrbm93IGlmIGVpdGhlciB0aGUgJ3RyYW5zZm9ybScgcHJvcGVy
dHksIGFuCisgICAgLy8gb2Zmc2V0IHBhdGgsIG9yIHRoZSBpbmRpdmlkdWFsIHRyYW5zZm9ybSBv
cGVyYXRpb25zIGFyZSBzZXQgKHBlcnNwZWN0aXZlIC8gdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2
ZS0zZCBhcmUgbm90IHJlbGV2YW50IGhlcmUpLgorICAgIGJvb2wgaGFzQ1NTVHJhbnNmb3JtID0g
c3R5bGUuaGFzVHJhbnNmb3JtKCkgfHwgc3R5bGUucm90YXRlKCkgfHwgc3R5bGUudHJhbnNsYXRl
KCkgfHwgc3R5bGUuc2NhbGUoKTsKKworICAgIGJvb2wgYWZmZWN0ZWRCeVRyYW5zZm9ybU9yaWdp
biA9IGZhbHNlOworICAgIHN0ZDo6b3B0aW9uYWw8QWZmaW5lVHJhbnNmb3JtPiBzdmdUcmFuc2Zv
cm07CisKKyAgICBpZiAoaGFzQ1NTVHJhbnNmb3JtKQorICAgICAgICBhZmZlY3RlZEJ5VHJhbnNm
b3JtT3JpZ2luID0gc3R5bGUuYWZmZWN0ZWRCeVRyYW5zZm9ybU9yaWdpbigpOworICAgIGVsc2Ug
aWYgKGF1dG8gYWZmaW5lVHJhbnNmb3JtID0gZ3JhcGhpY3NFbGVtZW50LmFuaW1hdGVkTG9jYWxU
cmFuc2Zvcm0oKTsgIWFmZmluZVRyYW5zZm9ybS5pc0lkZW50aXR5KCkpIHsKKyAgICAgICAgc3Zn
VHJhbnNmb3JtID0gYWZmaW5lVHJhbnNmb3JtOworICAgICAgICBhZmZlY3RlZEJ5VHJhbnNmb3Jt
T3JpZ2luID0gYWZmaW5lVHJhbnNmb3JtLmEoKSAhPSAxIHx8IGFmZmluZVRyYW5zZm9ybS5iKCkg
fHwgYWZmaW5lVHJhbnNmb3JtLmMoKSB8fCBhZmZpbmVUcmFuc2Zvcm0uZCgpICE9IDE7CisgICAg
fQorCisgICAgaWYgKCFoYXNDU1NUcmFuc2Zvcm0gJiYgIXN2Z1RyYW5zZm9ybS5oYXNfdmFsdWUo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRmxvYXRQb2ludDNEIG9yaWdpblRyYW5zbGF0ZTsK
KyAgICBpZiAob3B0aW9ucy5jb250YWlucyhSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9u
T3B0aW9uOjpUcmFuc2Zvcm1PcmlnaW4pICYmIGFmZmVjdGVkQnlUcmFuc2Zvcm1PcmlnaW4pCisg
ICAgICAgIG9yaWdpblRyYW5zbGF0ZSA9IHN0eWxlLmFwcGx5VHJhbnNmb3JtT3JpZ2luKHRyYW5z
Zm9ybSwgYm91bmRpbmdCb3gpOworCisgICAgLy8gQ1NTIHRyYW5zZm9ybXMgdGFrZSBwcmVjZWRl
bmNlIG92ZXIgU1ZHIHRyYW5zZm9ybXMuCisgICAgaWYgKGhhc0NTU1RyYW5zZm9ybSkKKyAgICAg
ICAgc3R5bGUuYXBwbHlDU1NUcmFuc2Zvcm0odHJhbnNmb3JtLCBib3VuZGluZ0JveCwgb3B0aW9u
cyk7CisgICAgZWxzZQorICAgICAgICB0cmFuc2Zvcm0ubXVsdGlwbHlBZmZpbmVUcmFuc2Zvcm0o
c3ZnVHJhbnNmb3JtLnZhbHVlKCkpOworCisgICAgc3R5bGUudW5hcHBseVRyYW5zZm9ybU9yaWdp
bih0cmFuc2Zvcm0sIG9yaWdpblRyYW5zbGF0ZSk7Cit9CiAjZW5kaWYKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyTW9kZWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1v
ZGVsT2JqZWN0LmgKaW5kZXggZDQ0ZmY2YWQ1MmQzYTU5ZjUxZDFjMGZlYWY2Y2U3OTVhNWUwZWRl
MC4uMTI0YWViZDRkNzQwMzNjNzY1MWM5MGFmM2VmZTBiN2Q5ZGZmN2RmOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oCkBAIC0yOCw2
ICsyOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgS2V5ZnJhbWVMaXN0OwogY2xh
c3MgUmVuZGVyTGF5ZXI7CitjbGFzcyBTVkdHcmFwaGljc0VsZW1lbnQ7CiAKIHN0cnVjdCBMYXll
clJlcGFpbnRSZWN0cyB7CiAgICAgTGF5b3V0UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0OwpAQCAt
NzUsOCArNzYsMTIgQEAgcHVibGljOgogICAgIC8vIFByb3ZpZGVzIHRoZSBTVkcgaW1wbGVtZW50
YXRpb24gZm9yIG1hcExvY2FsVG9Db250YWluZXIoKS4KICAgICAvLyBUaGlzIGxpdmVzIGluIFJl
bmRlckxheWVyTW9kZWxPYmplY3QsIHdoaWNoIGlzIHRoZSBjb21tb24gYmFzZS1jbGFzcyBmb3Ig
YWxsIFNWRyByZW5kZXJlcnMuCiAgICAgdm9pZCBtYXBMb2NhbFRvU1ZHQ29udGFpbmVyKGNvbnN0
IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yQ29udGFpbmVyLCBUcmFuc2Zvcm1TdGF0
ZSYsIE9wdGlvblNldDxNYXBDb29yZGluYXRlc01vZGU+LCBib29sKiB3YXNGaXhlZCkgY29uc3Q7
CisKKyAgICB2b2lkIGFwcGx5U1ZHVHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgU1ZH
R3JhcGhpY3NFbGVtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBGbG9hdFJlY3QmIGJv
dW5kaW5nQm94LCBPcHRpb25TZXQ8UmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlv
bj4pIGNvbnN0OwogI2VuZGlmCiAKKyAgICB2b2lkIHVwZGF0ZUxheWVyVHJhbnNmb3JtKCk7CisK
ICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBj
b25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gsIE9wdGlvblNl
dDxSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPiA9IFJlbmRlclN0eWxlOjph
bGxUcmFuc2Zvcm1PcGVyYXRpb25zKSBjb25zdCA9IDA7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggZGNhNzNlODk1ZDNkYWFhNWQ3
MDE5YmE0NTQyODUyY2I5M2E3ZjEzOC4uNzAyN2YzNjcwNmExNmYxNDNkYTVlOGNjODQ3OTBmMTFk
ZGJhOWI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAg
LTE5NzUsNiArMTk3NSwxNCBAQCB2b2lkIFJlbmRlck9iamVjdDo6c2V0SGFzT3V0bGluZUF1dG9B
bmNlc3Rvcihib29sIGhhc091dGxpbmVBdXRvQW5jZXN0b3IpCiAgICAgICAgIGVuc3VyZVJhcmVE
YXRhKCkuc2V0SGFzT3V0bGluZUF1dG9BbmNlc3RvcihoYXNPdXRsaW5lQXV0b0FuY2VzdG9yKTsK
IH0KIAorI2lmIEVOQUJMRShMQVlFUl9CQVNFRF9TVkdfRU5HSU5FKQordm9pZCBSZW5kZXJPYmpl
Y3Q6OnNldEhhc1NWR1RyYW5zZm9ybShib29sIGhhc1NWR1RyYW5zZm9ybSkKK3sKKyAgICBpZiAo
aGFzU1ZHVHJhbnNmb3JtIHx8IGhhc1JhcmVEYXRhKCkpCisgICAgICAgIGVuc3VyZVJhcmVEYXRh
KCkuc2V0SGFzU1ZHVHJhbnNmb3JtKGhhc1NWR1RyYW5zZm9ybSk7Cit9CisjZW5kaWYKKwogdm9p
ZCBSZW5kZXJPYmplY3Q6OnNldFBhaW50Q29udGFpbm1lbnRBcHBsaWVzKGJvb2wgcGFpbnRDb250
YWlubWVudEFwcGxpZXMpCiB7CiAgICAgaWYgKHBhaW50Q29udGFpbm1lbnRBcHBsaWVzIHx8IGhh
c1JhcmVEYXRhKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKaW5kZXgg
NTgwNDJlYzdmZjNjYzM3NDRiOGM0MjMzMzg3YzE3YzYyNGFkMGYxMi4uNTMwYzQzMWMzZWExYTQw
MDgzOWQwNjhhOGRhM2JkYTk5MzFlYzIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuaApAQCAtNDE1LDYgKzQxNSwxMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNPdXRs
aW5lQXV0b0FuY2VzdG9yKCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuaGFzUmFyZURhdGEo
KSAmJiByYXJlRGF0YSgpLmhhc091dGxpbmVBdXRvQW5jZXN0b3IoKTsgfQogICAgIGJvb2wgcGFp
bnRDb250YWlubWVudEFwcGxpZXMoKSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5oYXNSYXJl
RGF0YSgpICYmIHJhcmVEYXRhKCkucGFpbnRDb250YWlubWVudEFwcGxpZXMoKTsgfQogCisjaWYg
RU5BQkxFKExBWUVSX0JBU0VEX1NWR19FTkdJTkUpCisgICAgYm9vbCBoYXNTVkdUcmFuc2Zvcm0o
KSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5oYXNSYXJlRGF0YSgpICYmIHJhcmVEYXRhKCku
aGFzU1ZHVHJhbnNmb3JtKCk7IH0KKyNlbHNlCisgICAgYm9vbCBoYXNTVkdUcmFuc2Zvcm0oKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCisKICAgICBib29sIGlzRXhjbHVkZWRGcm9t
Tm9ybWFsTGF5b3V0KCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuaXNFeGNsdWRlZEZyb21O
b3JtYWxMYXlvdXQoKTsgfQogICAgIHZvaWQgc2V0SXNFeGNsdWRlZEZyb21Ob3JtYWxMYXlvdXQo
Ym9vbCBleGNsdWRlZCkgeyBtX2JpdGZpZWxkcy5zZXRJc0V4Y2x1ZGVkRnJvbU5vcm1hbExheW91
dChleGNsdWRlZCk7IH0KICAgICBib29sIGlzRXhjbHVkZWRBbmRQbGFjZWRJbkJvcmRlcigpIGNv
bnN0IHsgcmV0dXJuIGlzRXhjbHVkZWRGcm9tTm9ybWFsTGF5b3V0KCkgJiYgaXNMZWdlbmQoKTsg
fQpAQCAtNDQ5LDcgKzQ1NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1BvdGVudGlhbGx5U2Ny
b2xsYWJsZU92ZXJmbG93KCkgY29uc3Q7CiAKICAgICBib29sIGhhc1RyYW5zZm9ybVJlbGF0ZWRQ
cm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmhhc1RyYW5zZm9ybVJlbGF0ZWRQ
cm9wZXJ0eSgpOyB9IC8vIFRyYW5zZm9ybSwgcGVyc3BlY3RpdmUgb3IgdHJhbnNmb3JtLXN0eWxl
OiBwcmVzZXJ2ZS0zZC4KLSAgICBib29sIGhhc1RyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIGhh
c1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgpICYmIChzdHlsZSgpLmhhc1RyYW5zZm9ybSgpIHx8
IHN0eWxlKCkudHJhbnNsYXRlKCkgfHwgc3R5bGUoKS5zY2FsZSgpIHx8IHN0eWxlKCkucm90YXRl
KCkpOyB9CisgICAgYm9vbCBoYXNUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBoYXNUcmFuc2Zv
cm1SZWxhdGVkUHJvcGVydHkoKSAmJiAoc3R5bGUoKS5oYXNUcmFuc2Zvcm0oKSB8fCBzdHlsZSgp
LnRyYW5zbGF0ZSgpIHx8IHN0eWxlKCkuc2NhbGUoKSB8fCBzdHlsZSgpLnJvdGF0ZSgpIHx8IGhh
c1NWR1RyYW5zZm9ybSgpKTsgfQogICAgIGJvb2wgaGFzVHJhbnNmb3JtT3JQZXNwZWN0aXZlKCkg
Y29uc3QgeyByZXR1cm4gaGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCkgJiYgKGhhc1RyYW5z
Zm9ybSgpIHx8IHN0eWxlKCkuaGFzUGVyc3BlY3RpdmUoKSk7IH0KIAogICAgIGlubGluZSBib29s
IHByZXNlcnZlc05ld2xpbmUoKSBjb25zdDsKQEAgLTUxNCw2ICs1MjAsOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRJc1JlbmRlckZyYWdtZW50ZWRGbG93KGJvb2wgPSB0cnVlKTsKICAgICB2b2lk
IHNldEhhc091dGxpbmVBdXRvQW5jZXN0b3IoYm9vbCA9IHRydWUpOwogICAgIHZvaWQgc2V0UGFp
bnRDb250YWlubWVudEFwcGxpZXMoYm9vbCA9IHRydWUpOworI2lmIEVOQUJMRShMQVlFUl9CQVNF
RF9TVkdfRU5HSU5FKQorICAgIHZvaWQgc2V0SGFzU1ZHVHJhbnNmb3JtKGJvb2wgPSB0cnVlKTsK
KyNlbmRpZgogCiAgICAgLy8gSG9vayBzbyB0aGF0IFJlbmRlclRleHRDb250cm9sIGNhbiByZXR1
cm4gdGhlIGxpbmUgaGVpZ2h0IG9mIGl0cyBpbm5lciByZW5kZXJlci4KICAgICAvLyBGb3Igb3Ro
ZXIgcmVuZGVyZXJzLCB0aGUgdmFsdWUgaXMgdGhlIHNhbWUgYXMgbGluZUhlaWdodChmYWxzZSku
CkBAIC05NDMsNiArOTUyLDkgQEAgcHJpdmF0ZToKICAgICAgICAgQUREX0JPT0xFQU5fQklURklF
TEQoaXNSZW5kZXJGcmFnbWVudGVkRmxvdywgSXNSZW5kZXJGcmFnbWVudGVkRmxvdyk7CiAgICAg
ICAgIEFERF9CT09MRUFOX0JJVEZJRUxEKGhhc091dGxpbmVBdXRvQW5jZXN0b3IsIEhhc091dGxp
bmVBdXRvQW5jZXN0b3IpOwogICAgICAgICBBRERfQk9PTEVBTl9CSVRGSUVMRChwYWludENvbnRh
aW5tZW50QXBwbGllcywgUGFpbnRDb250YWlubWVudEFwcGxpZXMpOworI2lmIEVOQUJMRShMQVlF
Ul9CQVNFRF9TVkdfRU5HSU5FKQorICAgICAgICBBRERfQk9PTEVBTl9CSVRGSUVMRChoYXNTVkdU
cmFuc2Zvcm0sIEhhc1NWR1RyYW5zZm9ybSk7CisjZW5kaWYKIAogICAgICAgICAvLyBGcm9tIFJl
bmRlckVsZW1lbnQKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlZmVyZW5jZWRTVkdSZXNvdXJj
ZXM+IHJlZmVyZW5jZWRTVkdSZXNvdXJjZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKaW5kZXggYmRjYzU4MTViNDY2MjdmMGZm
MWM1YTE0ODAyNDBmZjY1N2I5NDdlZi4uMzQ1ZDYzNjEzNGQ1ZmRiY2Y5MjY3YmZjZGFjYzRjZjYy
Y2IzYzZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHQ29udGFpbmVyLmNwcApAQCAtNTIsNiArNTIsMzYgQEAgUmVuZGVyU1ZHQ29udGFpbmVyOjpS
ZW5kZXJTVkdDb250YWluZXIoU1ZHRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBzdHls
ZSkKIAogUmVuZGVyU1ZHQ29udGFpbmVyOjp+UmVuZGVyU1ZHQ29udGFpbmVyKCkgPSBkZWZhdWx0
OwogCisvLyBIZWxwZXIgY2xhc3MsIG1vdmUgdG8gaXRzIG93biBmaWxlIG9uY2UgdXRpbGl6ZWQg
aW4gbW9yZSB0aGFuIG9uZSBwbGFjZS4KK2NsYXNzIFNWR0xheWVyVHJhbnNmb3JtVXBkYXRlciB7
CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU1ZHTGF5ZXJUcmFuc2Zvcm1VcGRhdGVyKTsKK3B1
YmxpYzoKKyAgICBTVkdMYXllclRyYW5zZm9ybVVwZGF0ZXIoUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dCYgcmVuZGVyZXIpCisgICAgICAgIDogbV9yZW5kZXJlcihyZW5kZXJlcikKKyAgICB7CisgICAg
ICAgIGlmICghbV9yZW5kZXJlci5oYXNMYXllcigpKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIG1fdHJhbnNmb3JtUmVmZXJlbmNlQm94ID0gbV9yZW5kZXJlci50cmFuc2Zvcm1SZWZl
cmVuY2VCb3hSZWN0KCk7CisgICAgICAgIG1fcmVuZGVyZXIudXBkYXRlTGF5ZXJUcmFuc2Zvcm0o
KTsKKyAgICB9CisKKworICAgIH5TVkdMYXllclRyYW5zZm9ybVVwZGF0ZXIoKQorICAgIHsKKyAg
ICAgICAgaWYgKCFtX3JlbmRlcmVyLmhhc0xheWVyKCkpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIGlmIChtX3JlbmRlcmVyLnRyYW5zZm9ybVJlZmVyZW5jZUJveFJlY3QoKSA9PSBtX3Ry
YW5zZm9ybVJlZmVyZW5jZUJveCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX3Jl
bmRlcmVyLnVwZGF0ZUxheWVyVHJhbnNmb3JtKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIFJl
bmRlckxheWVyTW9kZWxPYmplY3QmIG1fcmVuZGVyZXI7CisgICAgRmxvYXRSZWN0IG1fdHJhbnNm
b3JtUmVmZXJlbmNlQm94OworfTsKKwogdm9pZCBSZW5kZXJTVkdDb250YWluZXI6OmxheW91dCgp
CiB7CiAgICAgU3RhY2tTdGF0czo6TGF5b3V0Q2hlY2tQb2ludCBsYXlvdXRDaGVja1BvaW50OwpA
QCAtNjQsMTMgKzk0LDEwIEBAIHZvaWQgUmVuZGVyU1ZHQ29udGFpbmVyOjpsYXlvdXQoKQogICAg
IC8vIFVwZGF0ZSBsYXllciB0cmFuc2Zvcm0gYmVmb3JlIGxheWluZyBvdXQgY2hpbGRyZW4gKFNW
RyBuZWVkcyBhY2Nlc3MgdG8gdGhlIHRyYW5zZm9ybSBtYXRyaWNlcyBkdXJpbmcgbGF5b3V0IGZv
ciBvbi1zY3JlZW4gdGV4dCBmb250LXNpemUgY2FsY3VsYXRpb25zKS4KICAgICAvLyBFdmVudHVh
bGx5IHJlLXVwZGF0ZSBpZiB0aGUgdHJhbnNmb3JtIHJlZmVyZW5jZSBib3gsIHJlbGV2YW50IGZv
ciB0cmFuc2Zvcm0tb3JpZ2luLCBoYXMgY2hhbmdlZCBkdXJpbmcgbGF5b3V0LgogICAgIHsKLSAg
ICAgICAgLy8gRklYTUU6IFtMQlNFXSBVcHN0cmVhbSBTVkdMYXllclRyYW5zZm9ybVVwZGF0ZXIK
LSAgICAgICAgLy8gU1ZHTGF5ZXJUcmFuc2Zvcm1VcGRhdGVyIHRyYW5zZm9ybVVwZGF0ZXIoKnRo
aXMpOworICAgICAgICBTVkdMYXllclRyYW5zZm9ybVVwZGF0ZXIgdXBkYXRlVHJhbnNmb3JtKCp0
aGlzKTsKICAgICAgICAgbGF5b3V0Q2hpbGRyZW4oKTsKICAgICB9CiAKLSAgICB1cGRhdGVMYXll
ckluZm9ybWF0aW9uKCk7Ci0KICAgICAvLyBJbnZhbGlkYXRlIGFsbCByZXNvdXJjZXMgb2YgdGhp
cyBjbGllbnQgaWYgb3VyIGxheW91dCBjaGFuZ2VkLgogICAgIGlmIChldmVySGFkTGF5b3V0KCkg
JiYgbmVlZHNMYXlvdXQoKSkKICAgICAgICAgU1ZHUmVzb3VyY2VzQ2FjaGU6OmNsaWVudExheW91
dENoYW5nZWQoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHQ29udGFpbmVyLmgKaW5kZXggOTc1YThmNjJjZDAzYzMyMTNhYmI4NTRjZjc0ZDE2NjVk
OWM5NDQ1Yy4uMDE5NGJhYjEzZWZhYzdkNzk4NDg5ZGI2ZmU3NTM3ZGU0MTFhMDk3NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5oCkBA
IC01NSw3ICs1NSw2IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgbGF5b3V0Q2hpbGRy
ZW4oKTsKICAgICBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVz
dFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRpb25JbkNvbnRhaW5lciwgY29u
c3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKSBvdmVycmlk
ZTsKIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMYXllckluZm9ybWF0aW9uKCkgeyB9CiAgICAg
dmlydHVhbCB2b2lkIGNhbGN1bGF0ZVZpZXdwb3J0KCk7CiAgICAgdmlydHVhbCBib29sIHBvaW50
SXNJbnNpZGVWaWV3cG9ydENsaXAoY29uc3QgRmxvYXRQb2ludCYpIHsgcmV0dXJuIHRydWU7IH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2Rl
bE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVs
T2JqZWN0LmNwcAppbmRleCBiMTkyOTRiNjc1OGM5ZDE3YjZjODUwOWIyMWFkMTcxNGMxODkzNGY4
Li5jOTY5NWU2YjZhNDNmOWNmNGZmMDM5NWFjMzYxYTQzMjYxZGI4ZTIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcApA
QCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIlJlbmRlckdlb21ldHJ5TWFwLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllck1vZGVsT2JqZWN0LmgiCisj
aW5jbHVkZSAiUmVuZGVyU1ZHTW9kZWxPYmplY3RJbmxpbmVzLmgiCiAjaW5jbHVkZSAiUmVuZGVy
U1ZHUmVzb3VyY2UuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU1ZHRWxl
bWVudElubGluZXMuaCIKQEAgLTU5LDE1ICs2MCwxMyBAQCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6
UmVuZGVyU1ZHTW9kZWxPYmplY3QoU1ZHRWxlbWVudCYgZWxlbWVudCwgUmVuZGVyU3R5bGUmJiBz
dAogdm9pZCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6dXBkYXRlRnJvbVN0eWxlKCkKIHsKICAgICBS
ZW5kZXJMYXllck1vZGVsT2JqZWN0Ojp1cGRhdGVGcm9tU3R5bGUoKTsKLSAgICBzZXRIYXNUcmFu
c2Zvcm1SZWxhdGVkUHJvcGVydHkoc3R5bGUoKS5oYXNUcmFuc2Zvcm1SZWxhdGVkUHJvcGVydHko
KSk7CiAKLSAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOwotICAgIGlmIChpczxTVkdHcmFw
aGljc0VsZW1lbnQ+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSkpCi0gICAgICAgIHRyYW5zZm9ybSA9
IGRvd25jYXN0PFNWR0dyYXBoaWNzRWxlbWVudD4obm9kZUZvck5vbkFub255bW91cygpKS5hbmlt
YXRlZExvY2FsVHJhbnNmb3JtKCk7CisgICAgYm9vbCBoYXNTVkdUcmFuc2Zvcm0gPSBmYWxzZTsK
KyAgICBpZiAoaXM8U1ZHR3JhcGhpY3NFbGVtZW50PihlbGVtZW50KCkpKQorICAgICAgICBoYXNT
VkdUcmFuc2Zvcm0gPSAhZG93bmNhc3Q8U1ZHR3JhcGhpY3NFbGVtZW50PihlbGVtZW50KCkpLmFu
aW1hdGVkTG9jYWxUcmFuc2Zvcm0oKS5pc0lkZW50aXR5KCk7CiAKLSAgICAvLyBGSVhNRTogW0xC
U0VdIFVwc3RyZWFtIFJlbmRlck9iamVjdCBjaGFuZ2VzCi0gICAgLy8gaWYgKCF0cmFuc2Zvcm0u
aXNJZGVudGl0eSgpKQotICAgIC8vICAgICBzZXRIYXNTVkdUcmFuc2Zvcm0oKTsKKyAgICBzZXRI
YXNUcmFuc2Zvcm1SZWxhdGVkUHJvcGVydHkoc3R5bGUoKS5oYXNUcmFuc2Zvcm1SZWxhdGVkUHJv
cGVydHkoKSB8fCBoYXNTVkdUcmFuc2Zvcm0pOworICAgIHNldEhhc1NWR1RyYW5zZm9ybShoYXNT
VkdUcmFuc2Zvcm0pOwogfQogCiBGbG9hdFJlY3QgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmJvcmRl
ckJveFJlY3RJbkZyYWdtZW50RXF1aXZhbGVudChSZW5kZXJGcmFnbWVudENvbnRhaW5lciosIFJl
bmRlckJveDo6UmVuZGVyQm94RnJhZ21lbnRJbmZvRmxhZ3MpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAppbmRleCA3MTZlYTgzMDY4NDU5
MzNjYjhmMDQ3YWU4YThkOWQyODUwMWM4ZDc1Li44MGFkODA3NzAwZmE1M2UwMTJkMGY0OTExOTE5
Y2JhYjg0NGNlZGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUm9vdC5jcHAKQEAgLTM5Niw4ICszOTYsNyBAQCB2b2lkIFJlbmRlclNWR1Jvb3Q6OnVwZGF0
ZUZyb21TdHlsZSgpCiB7CiAgICAgUmVuZGVyUmVwbGFjZWQ6OnVwZGF0ZUZyb21TdHlsZSgpOwog
Ci0gICAgLy8gRklYTUU6IFtMQlNFXSBVcHN0cmVhbSBSZW5kZXJPYmplY3QgY2hhbmdlcwotICAg
IC8vIHNldEhhc1NWR1RyYW5zZm9ybSgpOworICAgIHNldEhhc1NWR1RyYW5zZm9ybSgpOwogCiAg
ICAgaWYgKHNob3VsZEFwcGx5Vmlld3BvcnRDbGlwKCkpCiAgICAgICAgIHNldEhhc05vblZpc2li
bGVPdmVyZmxvdygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdTaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1NoYXBlLmNwcAppbmRleCAzMjU1NzI0MTkwYjcyMGFmZDM2Njg1NTg2MjAxNjBmMGYzODEwMTll
Li5jYWFmNmIzNWIwZTA1MjAwM2RmOTIwMWVlYzAwMDRkNTQzNTFmNDA2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcApAQCAtMTU0LDggKzE1
NCw3IEBAIHZvaWQgUmVuZGVyU1ZHU2hhcGU6OmxheW91dCgpCiAgICAgICAgIHNldExheW91dFJl
Y3QoZW5jbG9zaW5nTGF5b3V0UmVjdChtX2ZpbGxCb3VuZGluZ0JveCkpOwogICAgIH0KIAotICAg
IC8vIEZJWE1FOiBbTEJTRV0gVXBzdHJlYW0gU1ZHTGF5ZXJUcmFuc2Zvcm1VcGRhdGVyCi0gICAg
Ly8gU1ZHUmVuZGVyU3VwcG9ydDo6dXBkYXRlTGF5ZXJUcmFuc2Zvcm0oKnRoaXMpOworICAgIHVw
ZGF0ZUxheWVyVHJhbnNmb3JtKCk7CiAKICAgICAvLyBJbnZhbGlkYXRlIGFsbCByZXNvdXJjZXMg
b2YgdGhpcyBjbGllbnQgaWYgb3VyIGxheW91dCBjaGFuZ2VkLgogICAgIGlmIChldmVySGFkTGF5
b3V0KCkgJiYgc2VsZk5lZWRzTGF5b3V0KCkpCkBAIC01MzYsOCArNTM1LDcgQEAgdm9pZCBSZW5k
ZXJTVkdTaGFwZTo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBS
ZW5kZXJTdHlsZSYgbmUKIAogdm9pZCBSZW5kZXJTVkdTaGFwZTo6YXBwbHlUcmFuc2Zvcm0oVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBj
b25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBPcHRpb25TZXQ8UmVuZGVyU3R5bGU6OlRyYW5z
Zm9ybU9wZXJhdGlvbk9wdGlvbj4gb3B0aW9ucykgY29uc3QKIHsKLSAgICAvLyBGSVhNRTogW0xC
U0VdIFVwc3RyZWFtIENTUy9TVkcgdHJhbnNmb3JtIHN1cHBvcnQKLSAgICBzdHlsZS5hcHBseVRy
YW5zZm9ybSh0cmFuc2Zvcm0sIGJvdW5kaW5nQm94LCBvcHRpb25zKTsKKyAgICBhcHBseVNWR1Ry
YW5zZm9ybSh0cmFuc2Zvcm0sIGdyYXBoaWNzRWxlbWVudCgpLCBzdHlsZSwgYm91bmRpbmdCb3gs
IG9wdGlvbnMpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1NoYXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1NoYXBlLmgKaW5kZXggNzQzNjhiZGFmNjlmOWQxNjE5MjljYjIxM2YxMjU0YmFjNTU1Yjli
ZC4uODhjZmU5ZWMwNjY4OWFhMjViODUzNWM0Mzk4Y2NhOWViZjcyMzc0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaApAQCAtODIsNyArODIsNyBA
QCBwdWJsaWM6CiAKICAgICBGbG9hdFJlY3QgY29tcHV0ZU1hcmtlckJvdW5kaW5nQm94KGNvbnN0
IFNWR0JvdW5kaW5nQm94Q29tcHV0YXRpb246OkRlY29yYXRpb25PcHRpb25zJikgY29uc3Q7CiAK
LSAgICB2b2lkIGFwcGx5VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgUmVu
ZGVyU3R5bGUmLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBPcHRpb25TZXQ8UmVuZGVy
U3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbj4gPSBSZW5kZXJTdHlsZTo6YWxsVHJhbnNm
b3JtT3BlcmF0aW9ucykgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9pZCBhcHBseVRyYW5zZm9ybShU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgRmxvYXRSZWN0
JiBib3VuZGluZ0JveCwgT3B0aW9uU2V0PFJlbmRlclN0eWxlOjpUcmFuc2Zvcm1PcGVyYXRpb25P
cHRpb24+ID0gUmVuZGVyU3R5bGU6OmFsbFRyYW5zZm9ybU9wZXJhdGlvbnMpIGNvbnN0IGZpbmFs
OwogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBlbGVtZW50KCkgY29uc3QgPSBkZWxldGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFi
bGVDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdU
cmFuc2Zvcm1hYmxlQ29udGFpbmVyLmNwcAppbmRleCA5MDMxMjJiZTk3Yzc1MWEzZDUyYTk0ZTc3
ZjhjYTc1ZjYxNDRjMTk1Li5iMDBmYjUwYWE5ZTAwMDE3OTdmYzk1NTA4NTg2YTZiMjE0MDc3Zjc5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5z
Zm9ybWFibGVDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5jcHAKQEAgLTk3LDE1ICs5NywxMyBAQCB2
b2lkIFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXI6OnVwZGF0ZUZyb21TdHlsZSgpCiB7
CiAgICAgUmVuZGVyU1ZHQ29udGFpbmVyOjp1cGRhdGVGcm9tU3R5bGUoKTsKIAotICAgIC8vIEZJ
WE1FOiBbTEJTRV0gVXBzdHJlYW0gQ1NTL1NWRyB0cmFuc2Zvcm0gc3VwcG9ydAotICAgIC8vIGlm
IChhc3NvY2lhdGVkVXNlRWxlbWVudChncmFwaGljc0VsZW1lbnQoKSkpCi0gICAgLy8gICAgc2V0
SGFzU1ZHVHJhbnNmb3JtKCk7CisgICAgaWYgKGFzc29jaWF0ZWRVc2VFbGVtZW50KGdyYXBoaWNz
RWxlbWVudCgpKSkKKyAgICAgICAgc2V0SGFzU1ZHVHJhbnNmb3JtKCk7CiB9CiAKIHZvaWQgUmVu
ZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcjo6YXBwbHlUcmFuc2Zvcm0oVHJhbnNmb3JtYXRp
b25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBGbG9h
dFJlY3QmIGJvdW5kaW5nQm94LCBPcHRpb25TZXQ8UmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJh
dGlvbk9wdGlvbj4gb3B0aW9ucykgY29uc3QKIHsKLSAgICAvLyBGSVhNRTogW0xCU0VdIFVwc3Ry
ZWFtIENTUy9TVkcgdHJhbnNmb3JtIHN1cHBvcnQKLSAgICBzdHlsZS5hcHBseVRyYW5zZm9ybSh0
cmFuc2Zvcm0sIGJvdW5kaW5nQm94LCBvcHRpb25zKTsKKyAgICBhcHBseVNWR1RyYW5zZm9ybSh0
cmFuc2Zvcm0sIGdyYXBoaWNzRWxlbWVudCgpLCBzdHlsZSwgYm91bmRpbmdCb3gsIG9wdGlvbnMp
OwogfQogCiB2b2lkIFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXI6OnN0eWxlV2lsbENo
YW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcAppbmRleCA2MjJkNjdkMDFh
NmZhMTg3YThlNDRkODFhMmQ0OWY3ZGE5OGE5NTcyLi4xZGM3MjljMDE0NDZkZWRmYzAwMjAyNmJh
MDg5ZWE2NmMzM2MxNzNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhp
Y3NFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50
LmNwcApAQCAtNzMsNiArNzMsMTUgQEAgQWZmaW5lVHJhbnNmb3JtIFNWR0dyYXBoaWNzRWxlbWVu
dDo6Z2V0U2NyZWVuQ1RNKFN0eWxlVXBkYXRlU3RyYXRlZ3kgc3R5bGVVcGRhdGUKIAogQWZmaW5l
VHJhbnNmb3JtIFNWR0dyYXBoaWNzRWxlbWVudDo6YW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSgpIGNv
bnN0CiB7CisjaWYgRU5BQkxFKExBWUVSX0JBU0VEX1NWR19FTkdJTkUpCisgICAgLy8gTEJTRSBo
YW5kbGVzIHRyYW5zZm9ybXMgdmlhIFJlbmRlckxheWVyLCBubyBuZWVkIHRvIGhhbmRsZSBDU1Mg
dHJhbnNmb3JtcyBoZXJlLgorICAgIGlmIChkb2N1bWVudCgpLnNldHRpbmdzKCkubGF5ZXJCYXNl
ZFNWR0VuZ2luZUVuYWJsZWQoKSkgeworICAgICAgICBpZiAobV9zdXBwbGVtZW50YWxUcmFuc2Zv
cm0pCisgICAgICAgICAgICByZXR1cm4gKm1fc3VwcGxlbWVudGFsVHJhbnNmb3JtICogdHJhbnNm
b3JtKCkuY29uY2F0ZW5hdGUoKTsKKyAgICAgICAgcmV0dXJuIHRyYW5zZm9ybSgpLmNvbmNhdGVu
YXRlKCk7CisgICAgfQorI2VuZGlmCisKICAgICBBZmZpbmVUcmFuc2Zvcm0gbWF0cml4OwogCiAg
ICAgYXV0byogc3R5bGUgPSByZW5kZXJlcigpID8gJnJlbmRlcmVyKCktPnN0eWxlKCkgOiBudWxs
cHRyOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454351</attachid>
            <date>2022-03-10 06:05:39 -0800</date>
            <delta_ts>2022-03-10 15:43:26 -0800</delta_ts>
            <desc>Patch, v2</desc>
            <filename>bug-237711-20220310060537.patch</filename>
            <type>text/plain</type>
            <size>27771</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNThlYTZmMzA0MzY2ZDc0
ZDAwMDM1MWJlMGI3NDhkMGQwMjJjZjZlNC4uMGEyZmY1ZmRmYjc2Y2Q0YjM3NzJhNWJkMDczYzY0
OWY2NDlkNDcyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDIyLTAzLTEwICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtMQlNF
XSBBY3RpdmF0ZSBTVkcgdHJhbnNmb3JtIHN1cHBvcnQgdGhyb3VnaCBsYXllcnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzcxMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFjdGl2YXRlIHRyYW5zZm9y
bXMgZm9yIFNWRyBsYXllcnMuCisKKyAgICAgICAgVXNlIHRoZSBmbGFnIHRvIGtlZXAgdHJhY2sg
b2YgdGhlIHByZXNlbmNlIG9mIFNWRyB0cmFuc2Zvcm1hdGlvbnMKKyAgICAgICAgb24gYSByZW5k
ZXJlci4gQ1NTL0hUTUwgcmVuZGVyZXJzIGNhbiByZWx5IG9ubHkgb24gdGhlIFJlbmRlclN0eWxl
CisgICAgICAgIHRvIGRldGVybWluZSBpZiB0cmFuc2Zvcm1hdGlvbnMgYXJlIGFwcGxpZWQsIHdo
ZXJlYXMgU1ZHIGhhcyB0bworICAgICAgICBjb25zdWx0IGFkZGl0aW9uYWwgc291cmNlcywgc3Vj
aCBhcyB0aGUgU1ZHICd0cmFuc2Zvcm0nIGF0dHJpYnV0ZS4KKworICAgICAgICBBIFNWRyByZW5k
ZXJlciB3aXRoIHRoZSAnSGFzU1ZHVHJhbnNmb3JtJyBmbGFnIHNldCBzaG91bGQgYmVoYXZlCisg
ICAgICAgIGxpa2UgYW55IFNWRy9IVE1MIHJlbmRlcmVyIHRoYXQgaGFzIENTUyB0cmFuc2Zvcm1h
dGlvbnMgYXBwbGllZC4KKworICAgICAgICBUT0RPOiBXcml0ZSBtb3JlIGFib3V0IHRoaXMuCisK
KyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cywgbm8gY2hhbmdlIGluIGJlaGF2aW91
ci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRp
b25NYXRyaXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6Om11
bHRpcGx5QWZmaW5lVHJhbnNmb3JtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnVwZGF0ZUxheWVyVHJhbnNm
b3JtKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbkNyZWF0
ZVN0YWNraW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVUcmFuc2Zvcm1Gcm9t
U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmN1cnJlbnRUcmFuc2Zvcm0g
Y29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyTW9kZWxPYmplY3Q6OnVwZGF0ZUxheWVyVHJh
bnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyTW9kZWxPYmplY3Q6OmFwcGx5
U1ZHVHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzZXRIYXNTVkdUcmFuc2Zvcm0pOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVj
dDo6aGFzU1ZHVHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVj
dDo6aGFzVHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0NvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdMYXllclRyYW5zZm9ybVVwZGF0
ZXI6OlNWR0xheWVyVHJhbnNmb3JtVXBkYXRlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdMYXll
clRyYW5zZm9ybVVwZGF0ZXI6On5TVkdMYXllclRyYW5zZm9ybVVwZGF0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU1ZHQ29udGFpbmVyOjpsYXlvdXQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdD
b250YWluZXI6OnVwZGF0ZUxheWVySW5mb3JtYXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIHJl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHTW9kZWxPYmplY3Q6OnVwZGF0ZUZyb21TdHlsZSk6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jv
b3Q6OnVwZGF0ZUZyb21TdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdT
aGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdTaGFwZTo6bGF5b3V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBlOjphcHBseVRyYW5zZm9ybSBjb25zdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5oOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyOjp1cGRhdGVGcm9tU3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcjo6YXBw
bHlUcmFuc2Zvcm0gY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhcGhpY3NFbGVtZW50OjphbmltYXRlZExvY2FsVHJh
bnNmb3JtIGNvbnN0KToKKwogMjAyMi0wMy0xMCAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1l
cm1hbm5AaWdhbGlhLmNvbT4KIAogICAgICAgICBVbmlmeSByZWZlcmVuY2UgYm94IC8gQ1RNIGNv
bXB1dGF0aW9uIGluIFJlbmRlckxheWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRy
aXguY3BwCmluZGV4IGYyMjZkOTMzMWE0ZTQzMWY4NjZlOTU3YzE1ODliZGVkMDM2MTNiY2EuLjI4
MWM5NWRjYTZkZWNmNzc3N2FhNzM1ZjYwOWZlYmM4ODEwMzhiNjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRy
aXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMv
VHJhbnNmb3JtYXRpb25NYXRyaXguY3BwCkBAIC0xNTMzLDYgKzE1MzMsMTcgQEAgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIFRyYW5zZm9ybWF0aW9uTWF0cml4OjptdWx0aXBseShjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKK1RyYW5zZm9ybWF0aW9uTWF0
cml4JiBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bXVsdGlwbHlBZmZpbmVUcmFuc2Zvcm0oY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBtYXRyaXgpCit7CisgICAgaWYgKG1hdHJpeC5pc0lkZW50aXR5KCkp
CisgICAgICAgIHJldHVybiAqdGhpczsKKworICAgIGlmIChtYXRyaXguaXNJZGVudGl0eU9yVHJh
bnNsYXRpb24oKSkKKyAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZShtYXRyaXguZSgpLCBtYXRyaXgu
ZigpKTsKKworICAgIHJldHVybiBtdWx0aXBseShtYXRyaXgudG9UcmFuc2Zvcm1hdGlvbk1hdHJp
eCgpKTsKK30KKwogdm9pZCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bXVsdFZlY01hdHJpeChkb3Vi
bGUgeCwgZG91YmxlIHksIGRvdWJsZSYgcmVzdWx0WCwgZG91YmxlJiByZXN1bHRZKSBjb25zdAog
ewogICAgIHJlc3VsdFggPSBtX21hdHJpeFszXVswXSArIHggKiBtX21hdHJpeFswXVswXSArIHkg
KiBtX21hdHJpeFsxXVswXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaAppbmRl
eCBjOTUxMTc3YTMxMGI3NjA0YzIxNTljZDZlMjQ5N2ZkOGYyNTdiODNiLi44NTVkMmU3MmExNWE3
Yzg2Mzc3ODY1NmU0ZjM4NmVhOWE4YzIyNjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlv
bk1hdHJpeC5oCkBAIC0yNDksNiArMjQ5LDggQEAgcHVibGljOgogCiAgICAgLy8gdGhpcyA9IG1h
dCAqIHRoaXMuCiAgICAgV0VCQ09SRV9FWFBPUlQgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG11bHRp
cGx5KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CisgICAgLy8gSWRlbnRpY2FsIHRvIG11
bHRpcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4JiksIGJ1dCBzYXZpbmcgYSBBZmZpbmVUcmFuc2Zv
cm0gLT4gVHJhbnNmb3JtYXRpb25NYXRyaXggcm91bmR0cmlwIGZvciBpZGVudGl0eSBvciB0cmFu
c2xhdGlvbiBtYXRyaWNlcy4KKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbXVsdGlwbHlBZmZp
bmVUcmFuc2Zvcm0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgc2NhbGUoZG91YmxlKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgc2NhbGVOb25Vbmlmb3JtKGRvdWJsZSBzeCwgZG91Ymxl
IHN5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggNDE1ZTk0ZjVj
YmMxYWVmODkzOGQxOGU3MWJmNzQ0NTVjMTFkOThjNy4uMmY4NjI5YjRjODBkOTcxNmUyY2YzODhh
ZDZmNjc5M2E5Yjc5MWJkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAK
QEAgLTY2MiwxMyArNjYyLDYgQEAgdm9pZCBSZW5kZXJCb3g6OmFic29sdXRlUXVhZHMoVmVjdG9y
PEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkgY29uc3QKICAgICBxdWFkcy5hcHBl
bmQobG9jYWxUb0Fic29sdXRlUXVhZChsb2NhbFJlY3QsIFVzZVRyYW5zZm9ybXMsIHdhc0ZpeGVk
KSk7CiB9CiAKLXZvaWQgUmVuZGVyQm94Ojp1cGRhdGVMYXllclRyYW5zZm9ybSgpCi17Ci0gICAg
Ly8gVHJhbnNmb3JtLW9yaWdpbiBkZXBlbmRzIG9uIGJveCBzaXplLCBzbyB3ZSBuZWVkIHRvIHVw
ZGF0ZSB0aGUgbGF5ZXIgdHJhbnNmb3JtIGFmdGVyIGxheW91dC4KLSAgICBpZiAoaGFzTGF5ZXIo
KSkKLSAgICAgICAgbGF5ZXIoKS0+dXBkYXRlVHJhbnNmb3JtKCk7Ci19Ci0KIHZvaWQgUmVuZGVy
Qm94OjphcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdCwgY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBPcHRpb25TZXQ8UmVu
ZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbj4gb3B0aW9ucykgY29uc3QKIHsKICAg
ICBzdHlsZS5hcHBseVRyYW5zZm9ybSh0LCBib3VuZGluZ0JveCwgb3B0aW9ucyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggZTQwN2NiY2ZjNWY0MjkxN2I1OTllYTI1NGYz
NDkyMGRmNWM2N2Y5ZC4uZGY2NmJiNmM3ZDk2ODA3M2NkZTQyNDAwNzNiYTBkYmM0ZGRkZDEyYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtMjE4LDcgKzIxOCw2IEBAIHB1
YmxpYzoKICAgICB2b2lkIGFkZE92ZXJmbG93RnJvbUNoaWxkKGNvbnN0IFJlbmRlckJveCogY2hp
bGQpIHsgYWRkT3ZlcmZsb3dGcm9tQ2hpbGQoY2hpbGQsIGNoaWxkLT5sb2NhdGlvbk9mZnNldCgp
KTsgfQogICAgIHZvaWQgYWRkT3ZlcmZsb3dGcm9tQ2hpbGQoY29uc3QgUmVuZGVyQm94KiBjaGls
ZCwgY29uc3QgTGF5b3V0U2l6ZSYgZGVsdGEpOwogCi0gICAgdm9pZCB1cGRhdGVMYXllclRyYW5z
Zm9ybSgpOwogICAgIHZvaWQgYXBwbHlUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBj
b25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gsIE9wdGlvblNl
dDxSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPiA9IFJlbmRlclN0eWxlOjph
bGxUcmFuc2Zvcm1PcGVyYXRpb25zKSBjb25zdCBvdmVycmlkZTsKIAogICAgIExheW91dFNpemUg
Y29udGVudFNpemUoKSBjb25zdCB7IHJldHVybiB7IGNvbnRlbnRXaWR0aCgpLCBjb250ZW50SGVp
Z2h0KCkgfTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXgg
ZjYxNTAwMjVkOWYxOTY5ZGM5YTdjNTYwOTQyM2U1MmQyMDM5NWU0Mi4uNmNhZDYwZjQ4YjM0NmVk
YzY0NTZkNGE5OTUyNjAxZDMwNjhkNjdjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwCkBAIC01NTIsNiArNTUyLDkgQEAgc3RhdGljIGJvb2wgY2FuQ3JlYXRlU3Rh
Y2tpbmdDb250ZXh0KGNvbnN0IFJlbmRlckxheWVyJiBsYXllcikKIHsKICAgICBhdXRvJiByZW5k
ZXJlciA9IGxheWVyLnJlbmRlcmVyKCk7CiAgICAgcmV0dXJuIHJlbmRlcmVyLmhhc1RyYW5zZm9y
bVJlbGF0ZWRQcm9wZXJ0eSgpCisjaWYgRU5BQkxFKExBWUVSX0JBU0VEX1NWR19FTkdJTkUpCisg
ICAgICAgIHx8IHJlbmRlcmVyLmhhc1NWR1RyYW5zZm9ybSgpCisjZW5kaWYKICAgICAgICAgfHwg
cmVuZGVyZXIuaGFzQ2xpcFBhdGgoKQogICAgICAgICB8fCByZW5kZXJlci5oYXNGaWx0ZXIoKQog
ICAgICAgICB8fCByZW5kZXJlci5oYXNNYXNrKCkKQEAgLTEzMTAsMTMgKzEzMTMsMTkgQEAgc3Rh
dGljIGlubGluZSBGbG9hdFJlY3QgY29tcHV0ZVJlZmVyZW5jZUJveChjb25zdCBSZW5kZXJMYXll
ck1vZGVsT2JqZWN0JiByZW5kZXIKIAogc3RhdGljIGlubGluZSB2b2lkIHVwZGF0ZVRyYW5zZm9y
bUZyb21TdHlsZShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBSZW5kZXJM
YXllck1vZGVsT2JqZWN0JiByZW5kZXJlciwgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBPcHRp
b25TZXQ8UmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbj4gb3B0aW9ucykKIHsK
LSAgICBGbG9hdFJlY3QgcmVmZXJlbmNlQm94OworICAgIGF1dG8gcmVmZXJlbmNlQm94ID0gcmVu
ZGVyZXIudHJhbnNmb3JtUmVmZXJlbmNlQm94UmVjdCgpOwogCi0gICAgLy8gRklYTUU6IFtMQlNF
XSBVcHN0cmVhbSByZWZlcmVuY2UgYm94IGNvbXB1dGF0aW9uIGZvciBSZW5kZXJTVkdNb2RlbE9i
amVjdCBkZXJpdmVkIHJlbmRlcmVycwotICAgIGlmIChpczxSZW5kZXJCb3g+KHJlbmRlcmVyKSkK
LSAgICAgICAgcmVmZXJlbmNlQm94ID0gc25hcFJlY3RUb0RldmljZVBpeGVscyhMYXlvdXRSZWN0
KHJlbmRlcmVyLnRyYW5zZm9ybVJlZmVyZW5jZUJveFJlY3QoKSksIHJlbmRlcmVyLmRvY3VtZW50
KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisjaWYgRU5BQkxFKExBWUVSX0JBU0VEX1NWR19FTkdJ
TkUpCisgICAgLy8gTm8gcGl4ZWwgc25hcHBpbmcgd2l0aGluIFNWRyBzdWJ0cmVlLgorICAgIGlm
IChyZW5kZXJlci5pc1NWR0xheWVyQXdhcmVSZW5kZXJlcigpICYmIHJlbmRlcmVyLmRvY3VtZW50
KCkuc2V0dGluZ3MoKS5sYXllckJhc2VkU1ZHRW5naW5lRW5hYmxlZCgpKSB7CisgICAgICAgIHJl
bmRlcmVyLmFwcGx5VHJhbnNmb3JtKHRyYW5zZm9ybSwgc3R5bGUsIHJlZmVyZW5jZUJveCwgb3B0
aW9ucyk7CisgICAgICAgIG1ha2VNYXRyaXhSZW5kZXJhYmxlKHRyYW5zZm9ybSwgcmVuZGVyZXIu
dmlldygpLmNvbXBvc2l0b3IoKS5jYW5SZW5kZXIzRFRyYW5zZm9ybXMoKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisjZW5kaWYKIAotICAgIHJlbmRlcmVyLmFwcGx5VHJhbnNmb3JtKHRyYW5z
Zm9ybSwgc3R5bGUsIHJlZmVyZW5jZUJveCwgb3B0aW9ucyk7CisgICAgYXV0byBwaXhlbFNuYXBw
ZWRSZWZlcmVuY2VCb3ggPSBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKExheW91dFJlY3QocmVmZXJl
bmNlQm94KSwgcmVuZGVyZXIuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICBy
ZW5kZXJlci5hcHBseVRyYW5zZm9ybSh0cmFuc2Zvcm0sIHN0eWxlLCBwaXhlbFNuYXBwZWRSZWZl
cmVuY2VCb3gsIG9wdGlvbnMpOwogICAgIG1ha2VNYXRyaXhSZW5kZXJhYmxlKHRyYW5zZm9ybSwg
cmVuZGVyZXIudmlldygpLmNvbXBvc2l0b3IoKS5jYW5SZW5kZXIzRFRyYW5zZm9ybXMoKSk7CiB9
CiAKQEAgLTEzNTMsMjIgKzEzNjIsMTYgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXggUmVuZGVyTGF5
ZXI6OmN1cnJlbnRUcmFuc2Zvcm0oT3B0aW9uU2V0PFJlbmRlclN0eWxlOjpUcmFuc2YKICAgICBp
ZiAoIW1fdHJhbnNmb3JtKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgLy8gRklYTUU6IFtM
QlNFXSBVcHN0cmVhbSB0cmFuc2Zvcm0gc3VwcG9ydCBmb3IgUmVuZGVyU1ZHTW9kZWxPYmplY3Qg
ZGVyaXZlZCByZW5kZXJlcnMKLSAgICBpZiAoIWlzPFJlbmRlckJveD4ocmVuZGVyZXIoKSkpCi0g
ICAgICAgIHJldHVybiB7IH07Ci0KLSAgICBhdXRvJiByZW5kZXJCb3ggPSBkb3duY2FzdDxSZW5k
ZXJCb3g+KHJlbmRlcmVyKCkpOwotCiAgICAgLy8gbV90cmFuc2Zvcm0gaW5jbHVkZXMgdHJhbnNm
b3JtLW9yaWdpbiBhbmQgaXMgYWZmZWN0ZWQgYnkgdGhlIGNob2ljZSBvZiB0aGUgdHJhbnNmb3Jt
LWJveC4KICAgICAvLyBUaGVyZWZvcmUgd2UgY2FuIG9ubHkgdXNlIHRoZSBjYWNoZWQgbV90cmFu
c2Zvcm0sIGlmIHRoZSBhbmltYXRpb24gZG9lc24ndCBhbHRlciB0cmFuc2Zvcm0tYm94IG9yIGV4
Y2x1ZGVzIHRyYW5zZm9ybS1vcmlnaW4uCiAKICAgICAvLyBRdWVyeSB0aGUgYW5pbWF0ZWRTdHls
ZSgpIHRvIG9idGFpbiB0aGUgY3VycmVudCB0cmFuc2Zvcm1hdGlvbiwgd2hlbiBhY2NlbGVyYXRl
ZCB0cmFuc2Zvcm0gYW5pbWF0aW9ucyBhcmUgcnVubmluZy4KLSAgICBhdXRvIHN0eWxlYWJsZSA9
IFN0eWxlYWJsZTo6ZnJvbVJlbmRlcmVyKHJlbmRlckJveCk7CisgICAgYXV0byBzdHlsZWFibGUg
PSBTdHlsZWFibGU6OmZyb21SZW5kZXJlcihyZW5kZXJlcigpKTsKICAgICBpZiAoKHN0eWxlYWJs
ZSAmJiBzdHlsZWFibGUtPmlzUnVubmluZ0FjY2VsZXJhdGVkVHJhbnNmb3JtQW5pbWF0aW9uKCkp
IHx8ICFvcHRpb25zLmNvbnRhaW5zKFJlbmRlclN0eWxlOjpUcmFuc2Zvcm1PcGVyYXRpb25PcHRp
b246OlRyYW5zZm9ybU9yaWdpbikpIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiBhbmltYXRlZFN0eWxlID0gcmVuZGVyQm94LmFuaW1hdGVkU3R5bGUoKTsKKyAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBhbmltYXRlZFN0eWxlID0gcmVuZGVyZXIoKS5h
bmltYXRlZFN0eWxlKCk7CiAKICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3Jt
OwotICAgICAgICB1cGRhdGVUcmFuc2Zvcm1Gcm9tU3R5bGUodHJhbnNmb3JtLCByZW5kZXJCb3gs
ICphbmltYXRlZFN0eWxlLCBvcHRpb25zKTsKKyAgICAgICAgdXBkYXRlVHJhbnNmb3JtRnJvbVN0
eWxlKHRyYW5zZm9ybSwgcmVuZGVyZXIoKSwgKmFuaW1hdGVkU3R5bGUsIG9wdGlvbnMpOwogICAg
ICAgICByZXR1cm4gdHJhbnNmb3JtOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCmluZGV4IDhkOTkwZjFkNTMxYmU2
M2YyYjI1ZDA2MTQ1ZmIxMzFjNDEwMDcyNmMuLjE5NDA1NjhlYWY5ZGNiNjE5NjIyOWNmZTViYjI1
ZmVlMDM5YmY0MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllck1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJSZW5kZXJM
YXllclNjcm9sbGFibGVBcmVhLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHTW9kZWxPYmplY3QuaCIK
ICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCisjaW5jbHVkZSAiU1ZHR3JhcGhpY3NFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTdHlsZVNjcm9sbFNuYXBQb2ludHMu
aCIKICNpbmNsdWRlICJUcmFuc2Zvcm1TdGF0ZS5oIgpAQCAtMjMxLDYgKzIzMiwxMyBAQCB2b2lk
IFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OnN1c3BlbmRBbmltYXRpb25zKE1vbm90b25pY1RpbWUg
dGltZSkKICAgICBsYXllcigpLT5iYWNraW5nKCktPnN1c3BlbmRBbmltYXRpb25zKHRpbWUpOwog
fQogCit2b2lkIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OnVwZGF0ZUxheWVyVHJhbnNmb3JtKCkK
K3sKKyAgICAvLyBUcmFuc2Zvcm0tb3JpZ2luIGRlcGVuZHMgb24gYm94IHNpemUsIHNvIHdlIG5l
ZWQgdG8gdXBkYXRlIHRoZSBsYXllciB0cmFuc2Zvcm0gYWZ0ZXIgbGF5b3V0LgorICAgIGlmICho
YXNMYXllcigpKQorICAgICAgICBsYXllcigpLT51cGRhdGVUcmFuc2Zvcm0oKTsKK30KKwogI2lm
IEVOQUJMRShMQVlFUl9CQVNFRF9TVkdfRU5HSU5FKQogc3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0
PiBSZW5kZXJMYXllck1vZGVsT2JqZWN0Ojpjb21wdXRlVmlzaWJsZVJlY3RJblNWR0NvbnRhaW5l
cihjb25zdCBMYXlvdXRSZWN0JiByZWN0LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBj
b250YWluZXIsIFJlbmRlck9iamVjdDo6VmlzaWJsZVJlY3RDb250ZXh0IGNvbnRleHQpIGNvbnN0
CiB7CkBAIC0zMTYsNiArMzI0LDM4IEBAIHZvaWQgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6bWFw
TG9jYWxUb1NWR0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0CiAKICAgICBj
b250YWluZXItPm1hcExvY2FsVG9Db250YWluZXIoYW5jZXN0b3JDb250YWluZXIsIHRyYW5zZm9y
bVN0YXRlLCBtb2RlLCB3YXNGaXhlZCk7CiB9CisKK3ZvaWQgUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dDo6YXBwbHlTVkdUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgU1ZH
R3JhcGhpY3NFbGVtZW50JiBncmFwaGljc0VsZW1lbnQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZSwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCwgT3B0aW9uU2V0PFJlbmRlclN0eWxlOjpU
cmFuc2Zvcm1PcGVyYXRpb25PcHRpb24+IG9wdGlvbnMpIGNvbnN0Cit7CisgICAgLy8gVGhpcyBj
aGVjayBkb2VzIG5vdCB1c2Ugc3R5bGUuaGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCkgb24g
cHVycG9zZSAtLSB3ZSBvbmx5IHdhbnQgdG8ga25vdyBpZiBlaXRoZXIgdGhlICd0cmFuc2Zvcm0n
IHByb3BlcnR5LCBhbgorICAgIC8vIG9mZnNldCBwYXRoLCBvciB0aGUgaW5kaXZpZHVhbCB0cmFu
c2Zvcm0gb3BlcmF0aW9ucyBhcmUgc2V0IChwZXJzcGVjdGl2ZSAvIHRyYW5zZm9ybS1zdHlsZTog
cHJlc2VydmUtM2QgYXJlIG5vdCByZWxldmFudCBoZXJlKS4KKyAgICBib29sIGhhc0NTU1RyYW5z
Zm9ybSA9IHN0eWxlLmhhc1RyYW5zZm9ybSgpIHx8IHN0eWxlLnJvdGF0ZSgpIHx8IHN0eWxlLnRy
YW5zbGF0ZSgpIHx8IHN0eWxlLnNjYWxlKCk7CisKKyAgICBib29sIGFmZmVjdGVkQnlUcmFuc2Zv
cm1PcmlnaW4gPSBmYWxzZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEFmZmluZVRyYW5zZm9ybT4gc3Zn
VHJhbnNmb3JtOworCisgICAgaWYgKGhhc0NTU1RyYW5zZm9ybSkKKyAgICAgICAgYWZmZWN0ZWRC
eVRyYW5zZm9ybU9yaWdpbiA9IHN0eWxlLmFmZmVjdGVkQnlUcmFuc2Zvcm1PcmlnaW4oKTsKKyAg
ICBlbHNlIGlmIChhdXRvIGFmZmluZVRyYW5zZm9ybSA9IGdyYXBoaWNzRWxlbWVudC5hbmltYXRl
ZExvY2FsVHJhbnNmb3JtKCk7ICFhZmZpbmVUcmFuc2Zvcm0uaXNJZGVudGl0eSgpKSB7CisgICAg
ICAgIHN2Z1RyYW5zZm9ybSA9IGFmZmluZVRyYW5zZm9ybTsKKyAgICAgICAgYWZmZWN0ZWRCeVRy
YW5zZm9ybU9yaWdpbiA9IGFmZmluZVRyYW5zZm9ybS5hKCkgIT0gMSB8fCBhZmZpbmVUcmFuc2Zv
cm0uYigpIHx8IGFmZmluZVRyYW5zZm9ybS5jKCkgfHwgYWZmaW5lVHJhbnNmb3JtLmQoKSAhPSAx
OworICAgIH0KKworICAgIGlmICghaGFzQ1NTVHJhbnNmb3JtICYmICFzdmdUcmFuc2Zvcm0uaGFz
X3ZhbHVlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEZsb2F0UG9pbnQzRCBvcmlnaW5UcmFu
c2xhdGU7CisgICAgaWYgKG9wdGlvbnMuY29udGFpbnMoUmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9w
ZXJhdGlvbk9wdGlvbjo6VHJhbnNmb3JtT3JpZ2luKSAmJiBhZmZlY3RlZEJ5VHJhbnNmb3JtT3Jp
Z2luKQorICAgICAgICBvcmlnaW5UcmFuc2xhdGUgPSBzdHlsZS5hcHBseVRyYW5zZm9ybU9yaWdp
bih0cmFuc2Zvcm0sIGJvdW5kaW5nQm94KTsKKworICAgIC8vIENTUyB0cmFuc2Zvcm1zIHRha2Ug
cHJlY2VkZW5jZSBvdmVyIFNWRyB0cmFuc2Zvcm1zLgorICAgIGlmIChoYXNDU1NUcmFuc2Zvcm0p
CisgICAgICAgIHN0eWxlLmFwcGx5Q1NTVHJhbnNmb3JtKHRyYW5zZm9ybSwgYm91bmRpbmdCb3gs
IG9wdGlvbnMpOworICAgIGVsc2UKKyAgICAgICAgdHJhbnNmb3JtLm11bHRpcGx5QWZmaW5lVHJh
bnNmb3JtKHN2Z1RyYW5zZm9ybS52YWx1ZSgpKTsKKworICAgIHN0eWxlLnVuYXBwbHlUcmFuc2Zv
cm1PcmlnaW4odHJhbnNmb3JtLCBvcmlnaW5UcmFuc2xhdGUpOworfQogI2VuZGlmCiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllck1vZGVsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdC5oCmluZGV4IGQ0NGZmNmFkNTJkM2E1OWY1MWQxYzBmZWFmNmNlNzk1
YTVlMGVkZTAuLjEyNGFlYmQ0ZDc0MDMzYzc2NTFjOTBhZjNlZmUwYjdkOWRmZjdkZjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuaApA
QCAtMjgsNiArMjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEtleWZyYW1lTGlz
dDsKIGNsYXNzIFJlbmRlckxheWVyOworY2xhc3MgU1ZHR3JhcGhpY3NFbGVtZW50OwogCiBzdHJ1
Y3QgTGF5ZXJSZXBhaW50UmVjdHMgewogICAgIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVj
dDsKQEAgLTc1LDggKzc2LDEyIEBAIHB1YmxpYzoKICAgICAvLyBQcm92aWRlcyB0aGUgU1ZHIGlt
cGxlbWVudGF0aW9uIGZvciBtYXBMb2NhbFRvQ29udGFpbmVyKCkuCiAgICAgLy8gVGhpcyBsaXZl
cyBpbiBSZW5kZXJMYXllck1vZGVsT2JqZWN0LCB3aGljaCBpcyB0aGUgY29tbW9uIGJhc2UtY2xh
c3MgZm9yIGFsbCBTVkcgcmVuZGVyZXJzLgogICAgIHZvaWQgbWFwTG9jYWxUb1NWR0NvbnRhaW5l
cihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNlc3RvckNvbnRhaW5lciwgVHJhbnNm
b3JtU3RhdGUmLCBPcHRpb25TZXQ8TWFwQ29vcmRpbmF0ZXNNb2RlPiwgYm9vbCogd2FzRml4ZWQp
IGNvbnN0OworCisgICAgdm9pZCBhcHBseVNWR1RyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYsIFNWR0dyYXBoaWNzRWxlbWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgRmxvYXRS
ZWN0JiBib3VuZGluZ0JveCwgT3B0aW9uU2V0PFJlbmRlclN0eWxlOjpUcmFuc2Zvcm1PcGVyYXRp
b25PcHRpb24+KSBjb25zdDsKICNlbmRpZgogCisgICAgdm9pZCB1cGRhdGVMYXllclRyYW5zZm9y
bSgpOworCiAgICAgdmlydHVhbCB2b2lkIGFwcGx5VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0
cml4JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBP
cHRpb25TZXQ8UmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbj4gPSBSZW5kZXJT
dHlsZTo6YWxsVHJhbnNmb3JtT3BlcmF0aW9ucykgY29uc3QgPSAwOwogCiBwcm90ZWN0ZWQ6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IGRjYTczZTg5NWQz
ZGFhYTVkNzAxOWJhNDU0Mjg1MmNiOTNhN2YxMzguLjcwMjdmMzY3MDZhMTZmMTQzZGE1ZThjYzg0
NzkwZjExZGRiYTliNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
Y3BwCkBAIC0xOTc1LDYgKzE5NzUsMTQgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnNldEhhc091dGxp
bmVBdXRvQW5jZXN0b3IoYm9vbCBoYXNPdXRsaW5lQXV0b0FuY2VzdG9yKQogICAgICAgICBlbnN1
cmVSYXJlRGF0YSgpLnNldEhhc091dGxpbmVBdXRvQW5jZXN0b3IoaGFzT3V0bGluZUF1dG9BbmNl
c3Rvcik7CiB9CiAKKyNpZiBFTkFCTEUoTEFZRVJfQkFTRURfU1ZHX0VOR0lORSkKK3ZvaWQgUmVu
ZGVyT2JqZWN0OjpzZXRIYXNTVkdUcmFuc2Zvcm0oYm9vbCBoYXNTVkdUcmFuc2Zvcm0pCit7Cisg
ICAgaWYgKGhhc1NWR1RyYW5zZm9ybSB8fCBoYXNSYXJlRGF0YSgpKQorICAgICAgICBlbnN1cmVS
YXJlRGF0YSgpLnNldEhhc1NWR1RyYW5zZm9ybShoYXNTVkdUcmFuc2Zvcm0pOworfQorI2VuZGlm
CisKIHZvaWQgUmVuZGVyT2JqZWN0OjpzZXRQYWludENvbnRhaW5tZW50QXBwbGllcyhib29sIHBh
aW50Q29udGFpbm1lbnRBcHBsaWVzKQogewogICAgIGlmIChwYWludENvbnRhaW5tZW50QXBwbGll
cyB8fCBoYXNSYXJlRGF0YSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlck9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5o
CmluZGV4IDU4MDQyZWM3ZmYzY2MzNzQ0YjhjNDIzMzM4N2MxN2M2MjRhZDBmMTIuLjUzMGM0MzFj
M2VhMWE0MDA4MzlkMDY4YThkYTNiZGE5OTMxZWMyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyT2JqZWN0LmgKQEAgLTQxNSw2ICs0MTUsMTIgQEAgcHVibGljOgogICAgIGJvb2wg
aGFzT3V0bGluZUF1dG9BbmNlc3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmhhc1Jh
cmVEYXRhKCkgJiYgcmFyZURhdGEoKS5oYXNPdXRsaW5lQXV0b0FuY2VzdG9yKCk7IH0KICAgICBi
b29sIHBhaW50Q29udGFpbm1lbnRBcHBsaWVzKCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMu
aGFzUmFyZURhdGEoKSAmJiByYXJlRGF0YSgpLnBhaW50Q29udGFpbm1lbnRBcHBsaWVzKCk7IH0K
IAorI2lmIEVOQUJMRShMQVlFUl9CQVNFRF9TVkdfRU5HSU5FKQorICAgIGJvb2wgaGFzU1ZHVHJh
bnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuaGFzUmFyZURhdGEoKSAmJiByYXJl
RGF0YSgpLmhhc1NWR1RyYW5zZm9ybSgpOyB9CisjZWxzZQorICAgIGJvb2wgaGFzU1ZHVHJhbnNm
b3JtKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyNlbmRpZgorCiAgICAgYm9vbCBpc0V4Y2x1
ZGVkRnJvbU5vcm1hbExheW91dCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmlzRXhjbHVk
ZWRGcm9tTm9ybWFsTGF5b3V0KCk7IH0KICAgICB2b2lkIHNldElzRXhjbHVkZWRGcm9tTm9ybWFs
TGF5b3V0KGJvb2wgZXhjbHVkZWQpIHsgbV9iaXRmaWVsZHMuc2V0SXNFeGNsdWRlZEZyb21Ob3Jt
YWxMYXlvdXQoZXhjbHVkZWQpOyB9CiAgICAgYm9vbCBpc0V4Y2x1ZGVkQW5kUGxhY2VkSW5Cb3Jk
ZXIoKSBjb25zdCB7IHJldHVybiBpc0V4Y2x1ZGVkRnJvbU5vcm1hbExheW91dCgpICYmIGlzTGVn
ZW5kKCk7IH0KQEAgLTQ0OSw3ICs0NTUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNQb3RlbnRp
YWxseVNjcm9sbGFibGVPdmVyZmxvdygpIGNvbnN0OwogCiAgICAgYm9vbCBoYXNUcmFuc2Zvcm1S
ZWxhdGVkUHJvcGVydHkoKSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5oYXNUcmFuc2Zvcm1S
ZWxhdGVkUHJvcGVydHkoKTsgfSAvLyBUcmFuc2Zvcm0sIHBlcnNwZWN0aXZlIG9yIHRyYW5zZm9y
bS1zdHlsZTogcHJlc2VydmUtM2QuCi0gICAgYm9vbCBoYXNUcmFuc2Zvcm0oKSBjb25zdCB7IHJl
dHVybiBoYXNUcmFuc2Zvcm1SZWxhdGVkUHJvcGVydHkoKSAmJiAoc3R5bGUoKS5oYXNUcmFuc2Zv
cm0oKSB8fCBzdHlsZSgpLnRyYW5zbGF0ZSgpIHx8IHN0eWxlKCkuc2NhbGUoKSB8fCBzdHlsZSgp
LnJvdGF0ZSgpKTsgfQorICAgIGJvb2wgaGFzVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gaGFz
VHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCkgJiYgKHN0eWxlKCkuaGFzVHJhbnNmb3JtKCkgfHwg
c3R5bGUoKS50cmFuc2xhdGUoKSB8fCBzdHlsZSgpLnNjYWxlKCkgfHwgc3R5bGUoKS5yb3RhdGUo
KSB8fCBoYXNTVkdUcmFuc2Zvcm0oKSk7IH0KICAgICBib29sIGhhc1RyYW5zZm9ybU9yUGVzcGVj
dGl2ZSgpIGNvbnN0IHsgcmV0dXJuIGhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgpICYmICho
YXNUcmFuc2Zvcm0oKSB8fCBzdHlsZSgpLmhhc1BlcnNwZWN0aXZlKCkpOyB9CiAKICAgICBpbmxp
bmUgYm9vbCBwcmVzZXJ2ZXNOZXdsaW5lKCkgY29uc3Q7CkBAIC01MTQsNiArNTIwLDkgQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0SXNSZW5kZXJGcmFnbWVudGVkRmxvdyhib29sID0gdHJ1ZSk7CiAg
ICAgdm9pZCBzZXRIYXNPdXRsaW5lQXV0b0FuY2VzdG9yKGJvb2wgPSB0cnVlKTsKICAgICB2b2lk
IHNldFBhaW50Q29udGFpbm1lbnRBcHBsaWVzKGJvb2wgPSB0cnVlKTsKKyNpZiBFTkFCTEUoTEFZ
RVJfQkFTRURfU1ZHX0VOR0lORSkKKyAgICB2b2lkIHNldEhhc1NWR1RyYW5zZm9ybShib29sID0g
dHJ1ZSk7CisjZW5kaWYKIAogICAgIC8vIEhvb2sgc28gdGhhdCBSZW5kZXJUZXh0Q29udHJvbCBj
YW4gcmV0dXJuIHRoZSBsaW5lIGhlaWdodCBvZiBpdHMgaW5uZXIgcmVuZGVyZXIuCiAgICAgLy8g
Rm9yIG90aGVyIHJlbmRlcmVycywgdGhlIHZhbHVlIGlzIHRoZSBzYW1lIGFzIGxpbmVIZWlnaHQo
ZmFsc2UpLgpAQCAtOTQzLDYgKzk1Miw5IEBAIHByaXZhdGU6CiAgICAgICAgIEFERF9CT09MRUFO
X0JJVEZJRUxEKGlzUmVuZGVyRnJhZ21lbnRlZEZsb3csIElzUmVuZGVyRnJhZ21lbnRlZEZsb3cp
OwogICAgICAgICBBRERfQk9PTEVBTl9CSVRGSUVMRChoYXNPdXRsaW5lQXV0b0FuY2VzdG9yLCBI
YXNPdXRsaW5lQXV0b0FuY2VzdG9yKTsKICAgICAgICAgQUREX0JPT0xFQU5fQklURklFTEQocGFp
bnRDb250YWlubWVudEFwcGxpZXMsIFBhaW50Q29udGFpbm1lbnRBcHBsaWVzKTsKKyNpZiBFTkFC
TEUoTEFZRVJfQkFTRURfU1ZHX0VOR0lORSkKKyAgICAgICAgQUREX0JPT0xFQU5fQklURklFTEQo
aGFzU1ZHVHJhbnNmb3JtLCBIYXNTVkdUcmFuc2Zvcm0pOworI2VuZGlmCiAKICAgICAgICAgLy8g
RnJvbSBSZW5kZXJFbGVtZW50CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWZlcmVuY2VkU1ZH
UmVzb3VyY2VzPiByZWZlcmVuY2VkU1ZHUmVzb3VyY2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCmluZGV4IGJkY2M1ODE1YjQ2
NjI3ZjBmZjFjNWExNDgwMjQwZmY2NTdiOTQ3ZWYuLjM0NWQ2MzYxMzRkNWZkYmNmOTI2N2JmY2Rh
Y2M0Y2Y2MmNiM2M2YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0NvbnRhaW5lci5jcHAKQEAgLTUyLDYgKzUyLDM2IEBAIFJlbmRlclNWR0NvbnRh
aW5lcjo6UmVuZGVyU1ZHQ29udGFpbmVyKFNWR0VsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxl
JiYgc3R5bGUpCiAKIFJlbmRlclNWR0NvbnRhaW5lcjo6flJlbmRlclNWR0NvbnRhaW5lcigpID0g
ZGVmYXVsdDsKIAorLy8gSGVscGVyIGNsYXNzLCBtb3ZlIHRvIGl0cyBvd24gZmlsZSBvbmNlIHV0
aWxpemVkIGluIG1vcmUgdGhhbiBvbmUgcGxhY2UuCitjbGFzcyBTVkdMYXllclRyYW5zZm9ybVVw
ZGF0ZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNWR0xheWVyVHJhbnNmb3JtVXBkYXRl
cik7CitwdWJsaWM6CisgICAgU1ZHTGF5ZXJUcmFuc2Zvcm1VcGRhdGVyKFJlbmRlckxheWVyTW9k
ZWxPYmplY3QmIHJlbmRlcmVyKQorICAgICAgICA6IG1fcmVuZGVyZXIocmVuZGVyZXIpCisgICAg
eworICAgICAgICBpZiAoIW1fcmVuZGVyZXIuaGFzTGF5ZXIoKSkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBtX3RyYW5zZm9ybVJlZmVyZW5jZUJveCA9IG1fcmVuZGVyZXIudHJhbnNm
b3JtUmVmZXJlbmNlQm94UmVjdCgpOworICAgICAgICBtX3JlbmRlcmVyLnVwZGF0ZUxheWVyVHJh
bnNmb3JtKCk7CisgICAgfQorCisKKyAgICB+U1ZHTGF5ZXJUcmFuc2Zvcm1VcGRhdGVyKCkKKyAg
ICB7CisgICAgICAgIGlmICghbV9yZW5kZXJlci5oYXNMYXllcigpKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBpZiAobV9yZW5kZXJlci50cmFuc2Zvcm1SZWZlcmVuY2VCb3hSZWN0KCkg
PT0gbV90cmFuc2Zvcm1SZWZlcmVuY2VCb3gpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgbV9yZW5kZXJlci51cGRhdGVMYXllclRyYW5zZm9ybSgpOworICAgIH0KKworcHJpdmF0ZToK
KyAgICBSZW5kZXJMYXllck1vZGVsT2JqZWN0JiBtX3JlbmRlcmVyOworICAgIEZsb2F0UmVjdCBt
X3RyYW5zZm9ybVJlZmVyZW5jZUJveDsKK307CisKIHZvaWQgUmVuZGVyU1ZHQ29udGFpbmVyOjps
YXlvdXQoKQogewogICAgIFN0YWNrU3RhdHM6OkxheW91dENoZWNrUG9pbnQgbGF5b3V0Q2hlY2tQ
b2ludDsKQEAgLTY0LDEzICs5NCwxMCBAQCB2b2lkIFJlbmRlclNWR0NvbnRhaW5lcjo6bGF5b3V0
KCkKICAgICAvLyBVcGRhdGUgbGF5ZXIgdHJhbnNmb3JtIGJlZm9yZSBsYXlpbmcgb3V0IGNoaWxk
cmVuIChTVkcgbmVlZHMgYWNjZXNzIHRvIHRoZSB0cmFuc2Zvcm0gbWF0cmljZXMgZHVyaW5nIGxh
eW91dCBmb3Igb24tc2NyZWVuIHRleHQgZm9udC1zaXplIGNhbGN1bGF0aW9ucykuCiAgICAgLy8g
RXZlbnR1YWxseSByZS11cGRhdGUgaWYgdGhlIHRyYW5zZm9ybSByZWZlcmVuY2UgYm94LCByZWxl
dmFudCBmb3IgdHJhbnNmb3JtLW9yaWdpbiwgaGFzIGNoYW5nZWQgZHVyaW5nIGxheW91dC4KICAg
ICB7Ci0gICAgICAgIC8vIEZJWE1FOiBbTEJTRV0gVXBzdHJlYW0gU1ZHTGF5ZXJUcmFuc2Zvcm1V
cGRhdGVyCi0gICAgICAgIC8vIFNWR0xheWVyVHJhbnNmb3JtVXBkYXRlciB0cmFuc2Zvcm1VcGRh
dGVyKCp0aGlzKTsKKyAgICAgICAgU1ZHTGF5ZXJUcmFuc2Zvcm1VcGRhdGVyIHVwZGF0ZVRyYW5z
Zm9ybSgqdGhpcyk7CiAgICAgICAgIGxheW91dENoaWxkcmVuKCk7CiAgICAgfQogCi0gICAgdXBk
YXRlTGF5ZXJJbmZvcm1hdGlvbigpOwotCiAgICAgLy8gSW52YWxpZGF0ZSBhbGwgcmVzb3VyY2Vz
IG9mIHRoaXMgY2xpZW50IGlmIG91ciBsYXlvdXQgY2hhbmdlZC4KICAgICBpZiAoZXZlckhhZExh
eW91dCgpICYmIG5lZWRzTGF5b3V0KCkpCiAgICAgICAgIFNWR1Jlc291cmNlc0NhY2hlOjpjbGll
bnRMYXlvdXRDaGFuZ2VkKCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0NvbnRhaW5lci5oCmluZGV4IDk3NWE4ZjYyY2QwM2MzMjEzYWJiODU0Y2Y3
NGQxNjY1ZDljOTQ0NWMuLjAxOTRiYWIxM2VmYWM3ZDc5ODQ4OWRiNmZlNzUzN2RlNDExYTA5Nzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFp
bmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWlu
ZXIuaApAQCAtNTUsNyArNTUsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGxheW91
dENoaWxkcmVuKCk7CiAgICAgYm9vbCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYs
IEhpdFRlc3RSZXN1bHQmLCBjb25zdCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWlu
ZXIsIGNvbnN0IExheW91dFBvaW50JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikg
b3ZlcnJpZGU7CiAKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTGF5ZXJJbmZvcm1hdGlvbigpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVWaWV3cG9ydCgpOwogICAgIHZpcnR1YWwgYm9v
bCBwb2ludElzSW5zaWRlVmlld3BvcnRDbGlwKGNvbnN0IEZsb2F0UG9pbnQmKSB7IHJldHVybiB0
cnVlOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHTW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdNb2RlbE9iamVjdC5jcHAKaW5kZXggYjE5Mjk0YjY3NThjOWQxN2I2Yzg1MDliMjFhZDE3MTRj
MTg5MzRmOC4uYzk2OTVlNmI2YTQzZjljZjRmZjAzOTVhYzM2MWE0MzI2MWRiOGUyMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVj
dC5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJSZW5kZXJHZW9tZXRyeU1hcC5oIgog
I2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dC5oIgorI2luY2x1ZGUgIlJlbmRlclNWR01vZGVsT2JqZWN0SW5saW5lcy5oIgogI2luY2x1ZGUg
IlJlbmRlclNWR1Jlc291cmNlLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUg
IlNWR0VsZW1lbnRJbmxpbmVzLmgiCkBAIC01OSwxNSArNjAsMTMgQEAgUmVuZGVyU1ZHTW9kZWxP
YmplY3Q6OlJlbmRlclNWR01vZGVsT2JqZWN0KFNWR0VsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0
eWxlJiYgc3QKIHZvaWQgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OnVwZGF0ZUZyb21TdHlsZSgpCiB7
CiAgICAgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6dXBkYXRlRnJvbVN0eWxlKCk7Ci0gICAgc2V0
SGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KHN0eWxlKCkuaGFzVHJhbnNmb3JtUmVsYXRlZFBy
b3BlcnR5KCkpOwogCi0gICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsKLSAgICBpZiAoaXM8
U1ZHR3JhcGhpY3NFbGVtZW50Pihub2RlRm9yTm9uQW5vbnltb3VzKCkpKQotICAgICAgICB0cmFu
c2Zvcm0gPSBkb3duY2FzdDxTVkdHcmFwaGljc0VsZW1lbnQ+KG5vZGVGb3JOb25Bbm9ueW1vdXMo
KSkuYW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSgpOworICAgIGJvb2wgaGFzU1ZHVHJhbnNmb3JtID0g
ZmFsc2U7CisgICAgaWYgKGlzPFNWR0dyYXBoaWNzRWxlbWVudD4oZWxlbWVudCgpKSkKKyAgICAg
ICAgaGFzU1ZHVHJhbnNmb3JtID0gIWRvd25jYXN0PFNWR0dyYXBoaWNzRWxlbWVudD4oZWxlbWVu
dCgpKS5hbmltYXRlZExvY2FsVHJhbnNmb3JtKCkuaXNJZGVudGl0eSgpOwogCi0gICAgLy8gRklY
TUU6IFtMQlNFXSBVcHN0cmVhbSBSZW5kZXJPYmplY3QgY2hhbmdlcwotICAgIC8vIGlmICghdHJh
bnNmb3JtLmlzSWRlbnRpdHkoKSkKLSAgICAvLyAgICAgc2V0SGFzU1ZHVHJhbnNmb3JtKCk7Cisg
ICAgc2V0SGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KHN0eWxlKCkuaGFzVHJhbnNmb3JtUmVs
YXRlZFByb3BlcnR5KCkgfHwgaGFzU1ZHVHJhbnNmb3JtKTsKKyAgICBzZXRIYXNTVkdUcmFuc2Zv
cm0oaGFzU1ZHVHJhbnNmb3JtKTsKIH0KIAogRmxvYXRSZWN0IFJlbmRlclNWR01vZGVsT2JqZWN0
Ojpib3JkZXJCb3hSZWN0SW5GcmFnbWVudEVxdWl2YWxlbnQoUmVuZGVyRnJhZ21lbnRDb250YWlu
ZXIqLCBSZW5kZXJCb3g6OlJlbmRlckJveEZyYWdtZW50SW5mb0ZsYWdzKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKaW5kZXggNzE2ZWE4
MzA2ODQ1OTMzY2I4ZjA0N2FlOGE4ZDlkMjg1MDFjOGQ3NS4uODBhZDgwNzcwMGZhNTNlMDEyZDBm
NDkxMTkxOWNiYWI4NDRjZWRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jvb3QuY3BwCkBAIC0zOTYsOCArMzk2LDcgQEAgdm9pZCBSZW5kZXJTVkdSb290
Ojp1cGRhdGVGcm9tU3R5bGUoKQogewogICAgIFJlbmRlclJlcGxhY2VkOjp1cGRhdGVGcm9tU3R5
bGUoKTsKIAotICAgIC8vIEZJWE1FOiBbTEJTRV0gVXBzdHJlYW0gUmVuZGVyT2JqZWN0IGNoYW5n
ZXMKLSAgICAvLyBzZXRIYXNTVkdUcmFuc2Zvcm0oKTsKKyAgICBzZXRIYXNTVkdUcmFuc2Zvcm0o
KTsKIAogICAgIGlmIChzaG91bGRBcHBseVZpZXdwb3J0Q2xpcCgpKQogICAgICAgICBzZXRIYXNO
b25WaXNpYmxlT3ZlcmZsb3coKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdTaGFwZS5jcHAKaW5kZXggMzI1NTcyNDE5MGI3MjBhZmQzNjY4NTU4NjIwMTYwZjBm
MzgxMDE5ZS4uY2FhZjZiMzViMGUwNTIwMDNkZjkyMDFlZWMwMDA0ZDU0MzUxZjQwNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKQEAgLTE1
NCw4ICsxNTQsNyBAQCB2b2lkIFJlbmRlclNWR1NoYXBlOjpsYXlvdXQoKQogICAgICAgICBzZXRM
YXlvdXRSZWN0KGVuY2xvc2luZ0xheW91dFJlY3QobV9maWxsQm91bmRpbmdCb3gpKTsKICAgICB9
CiAKLSAgICAvLyBGSVhNRTogW0xCU0VdIFVwc3RyZWFtIFNWR0xheWVyVHJhbnNmb3JtVXBkYXRl
cgotICAgIC8vIFNWR1JlbmRlclN1cHBvcnQ6OnVwZGF0ZUxheWVyVHJhbnNmb3JtKCp0aGlzKTsK
KyAgICB1cGRhdGVMYXllclRyYW5zZm9ybSgpOwogCiAgICAgLy8gSW52YWxpZGF0ZSBhbGwgcmVz
b3VyY2VzIG9mIHRoaXMgY2xpZW50IGlmIG91ciBsYXlvdXQgY2hhbmdlZC4KICAgICBpZiAoZXZl
ckhhZExheW91dCgpICYmIHNlbGZOZWVkc0xheW91dCgpKQpAQCAtNTM2LDggKzUzNSw3IEBAIHZv
aWQgUmVuZGVyU1ZHU2hhcGU6OnN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwg
Y29uc3QgUmVuZGVyU3R5bGUmIG5lCiAKIHZvaWQgUmVuZGVyU1ZHU2hhcGU6OmFwcGx5VHJhbnNm
b3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCwgT3B0aW9uU2V0PFJlbmRlclN0eWxl
OjpUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb24+IG9wdGlvbnMpIGNvbnN0CiB7Ci0gICAgLy8gRklY
TUU6IFtMQlNFXSBVcHN0cmVhbSBDU1MvU1ZHIHRyYW5zZm9ybSBzdXBwb3J0Ci0gICAgc3R5bGUu
YXBwbHlUcmFuc2Zvcm0odHJhbnNmb3JtLCBib3VuZGluZ0JveCwgb3B0aW9ucyk7CisgICAgYXBw
bHlTVkdUcmFuc2Zvcm0odHJhbnNmb3JtLCBncmFwaGljc0VsZW1lbnQoKSwgc3R5bGUsIGJvdW5k
aW5nQm94LCBvcHRpb25zKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdTaGFwZS5oCmluZGV4IDc0MzY4YmRhZjY5ZjlkMTYxOTI5Y2IyMTNmMTI1NGJh
YzU1NWI5YmQuLjg4Y2ZlOWVjMDY2ODlhYTI1Yjg1MzVjNDM5OGNjYTllYmY3MjM3NDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmgKQEAgLTgyLDcg
KzgyLDcgQEAgcHVibGljOgogCiAgICAgRmxvYXRSZWN0IGNvbXB1dGVNYXJrZXJCb3VuZGluZ0Jv
eChjb25zdCBTVkdCb3VuZGluZ0JveENvbXB1dGF0aW9uOjpEZWNvcmF0aW9uT3B0aW9ucyYpIGNv
bnN0OwogCi0gICAgdm9pZCBhcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNv
bnN0IFJlbmRlclN0eWxlJiwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCwgT3B0aW9uU2V0
PFJlbmRlclN0eWxlOjpUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb24+ID0gUmVuZGVyU3R5bGU6OmFs
bFRyYW5zZm9ybU9wZXJhdGlvbnMpIGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgYXBwbHlUcmFu
c2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZs
b2F0UmVjdCYgYm91bmRpbmdCb3gsIE9wdGlvblNldDxSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3Bl
cmF0aW9uT3B0aW9uPiA9IFJlbmRlclN0eWxlOjphbGxUcmFuc2Zvcm1PcGVyYXRpb25zKSBjb25z
dCBmaW5hbDsKIAogcHJvdGVjdGVkOgogICAgIHZvaWQgZWxlbWVudCgpIGNvbnN0ID0gZGVsZXRl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFu
c2Zvcm1hYmxlQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5jcHAKaW5kZXggOTAzMTIyYmU5N2M3NTFhM2Q1
MmE5NGU3N2Y4Y2E3NWY2MTQ0YzE5NS4uYjAwZmI1MGFhOWUwMDAxNzk3ZmM5NTUwODU4NmE2YjIx
NDA3N2Y3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuY3BwCkBAIC05NywxNSArOTcs
MTMgQEAgdm9pZCBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyOjp1cGRhdGVGcm9tU3R5
bGUoKQogewogICAgIFJlbmRlclNWR0NvbnRhaW5lcjo6dXBkYXRlRnJvbVN0eWxlKCk7CiAKLSAg
ICAvLyBGSVhNRTogW0xCU0VdIFVwc3RyZWFtIENTUy9TVkcgdHJhbnNmb3JtIHN1cHBvcnQKLSAg
ICAvLyBpZiAoYXNzb2NpYXRlZFVzZUVsZW1lbnQoZ3JhcGhpY3NFbGVtZW50KCkpKQotICAgIC8v
ICAgIHNldEhhc1NWR1RyYW5zZm9ybSgpOworICAgIGlmIChhc3NvY2lhdGVkVXNlRWxlbWVudChn
cmFwaGljc0VsZW1lbnQoKSkpCisgICAgICAgIHNldEhhc1NWR1RyYW5zZm9ybSgpOwogfQogCiB2
b2lkIFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXI6OmFwcGx5VHJhbnNmb3JtKFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29u
c3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCwgT3B0aW9uU2V0PFJlbmRlclN0eWxlOjpUcmFuc2Zv
cm1PcGVyYXRpb25PcHRpb24+IG9wdGlvbnMpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IFtMQlNF
XSBVcHN0cmVhbSBDU1MvU1ZHIHRyYW5zZm9ybSBzdXBwb3J0Ci0gICAgc3R5bGUuYXBwbHlUcmFu
c2Zvcm0odHJhbnNmb3JtLCBib3VuZGluZ0JveCwgb3B0aW9ucyk7CisgICAgYXBwbHlTVkdUcmFu
c2Zvcm0odHJhbnNmb3JtLCBncmFwaGljc0VsZW1lbnQoKSwgc3R5bGUsIGJvdW5kaW5nQm94LCBv
cHRpb25zKTsKIH0KIAogdm9pZCBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyOjpzdHls
ZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdT
dHlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHAKaW5kZXggNjIy
ZDY3ZDAxYTZmYTE4N2E4ZTQ0ZDgxYTJkNDlmN2RhOThhOTU3Mi4uMWRjNzI5YzAxNDQ2ZGVkZmMw
MDIwMjZiYTA4OWVhNjZjMzNjMTczYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0dyYXBoaWNzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNz
RWxlbWVudC5jcHAKQEAgLTczLDYgKzczLDE1IEBAIEFmZmluZVRyYW5zZm9ybSBTVkdHcmFwaGlj
c0VsZW1lbnQ6OmdldFNjcmVlbkNUTShTdHlsZVVwZGF0ZVN0cmF0ZWd5IHN0eWxlVXBkYXRlCiAK
IEFmZmluZVRyYW5zZm9ybSBTVkdHcmFwaGljc0VsZW1lbnQ6OmFuaW1hdGVkTG9jYWxUcmFuc2Zv
cm0oKSBjb25zdAogeworI2lmIEVOQUJMRShMQVlFUl9CQVNFRF9TVkdfRU5HSU5FKQorICAgIC8v
IExCU0UgaGFuZGxlcyB0cmFuc2Zvcm1zIHZpYSBSZW5kZXJMYXllciwgbm8gbmVlZCB0byBoYW5k
bGUgQ1NTIHRyYW5zZm9ybXMgaGVyZS4KKyAgICBpZiAoZG9jdW1lbnQoKS5zZXR0aW5ncygpLmxh
eWVyQmFzZWRTVkdFbmdpbmVFbmFibGVkKCkpIHsKKyAgICAgICAgaWYgKG1fc3VwcGxlbWVudGFs
VHJhbnNmb3JtKQorICAgICAgICAgICAgcmV0dXJuICptX3N1cHBsZW1lbnRhbFRyYW5zZm9ybSAq
IHRyYW5zZm9ybSgpLmNvbmNhdGVuYXRlKCk7CisgICAgICAgIHJldHVybiB0cmFuc2Zvcm0oKS5j
b25jYXRlbmF0ZSgpOworICAgIH0KKyNlbmRpZgorCiAgICAgQWZmaW5lVHJhbnNmb3JtIG1hdHJp
eDsKIAogICAgIGF1dG8qIHN0eWxlID0gcmVuZGVyZXIoKSA/ICZyZW5kZXJlcigpLT5zdHlsZSgp
IDogbnVsbHB0cjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454412</attachid>
            <date>2022-03-10 15:43:30 -0800</date>
            <delta_ts>2022-03-13 16:43:43 -0700</delta_ts>
            <desc>Patch, v3</desc>
            <filename>bug-237711-20220310154328.patch</filename>
            <type>text/plain</type>
            <size>26186</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzZmYmVmNGNhNWJkZWEy
ZjY4MTU3NzFjNWMzMDEwYmFkOGRiNGU5Mi4uMmRlMmExM2MwMGY5ODJkNDYyYTA4OTljN2JlYjY3
NjhkMWYyMjNiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDIyLTAzLTEwICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtMQlNF
XSBBY3RpdmF0ZSBTVkcgdHJhbnNmb3JtIHN1cHBvcnQgdGhyb3VnaCBsYXllcnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzcxMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFjdGl2YXRlIHRyYW5zZm9y
bXMgZm9yIFNWRyBsYXllcnMuCisKKyAgICAgICAgVXNlIHRoZSBmbGFnIHRvIGtlZXAgdHJhY2sg
b2YgdGhlIHByZXNlbmNlIG9mIFNWRyB0cmFuc2Zvcm1hdGlvbnMKKyAgICAgICAgb24gYSByZW5k
ZXJlci4gQ1NTL0hUTUwgcmVuZGVyZXJzIGNhbiByZWx5IG9ubHkgb24gdGhlIFJlbmRlclN0eWxl
CisgICAgICAgIHRvIGRldGVybWluZSBpZiB0cmFuc2Zvcm1hdGlvbnMgYXJlIGFwcGxpZWQsIHdo
ZXJlYXMgU1ZHIGhhcyB0bworICAgICAgICBjb25zdWx0IGFkZGl0aW9uYWwgc291cmNlcywgc3Vj
aCBhcyB0aGUgU1ZHICd0cmFuc2Zvcm0nIGF0dHJpYnV0ZS4KKworICAgICAgICBBIFNWRyByZW5k
ZXJlciB3aXRoIHRoZSAnSGFzU1ZHVHJhbnNmb3JtJyBmbGFnIHNldCBzaG91bGQgYmVoYXZlCisg
ICAgICAgIGxpa2UgYW55IFNWRy9IVE1MIHJlbmRlcmVyIHRoYXQgaGFzIENTUyB0cmFuc2Zvcm1h
dGlvbnMgYXBwbGllZC4KKworICAgICAgICBUT0RPOiBXcml0ZSBtb3JlIGFib3V0IHRoaXMuCisK
KyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0cywgbm8gY2hhbmdlIGluIGJlaGF2aW91
ci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRp
b25NYXRyaXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg6Om11
bHRpcGx5QWZmaW5lVHJhbnNmb3JtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnVwZGF0ZUxheWVyVHJhbnNm
b3JtKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94Lmg6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbkNyZWF0
ZVN0YWNraW5nQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjp1cGRhdGVUcmFuc2Zvcm1Gcm9t
U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmN1cnJlbnRUcmFuc2Zvcm0g
Y29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyTW9kZWxPYmplY3Q6OnVwZGF0ZUxheWVyVHJh
bnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyTW9kZWxPYmplY3Q6OmFwcGx5
U1ZHVHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpzZXRIYXNTVkdUcmFuc2Zvcm0pOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVj
dDo6aGFzU1ZHVHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVj
dDo6aGFzVHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0NvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdMYXllclRyYW5zZm9ybVVwZGF0
ZXI6OlNWR0xheWVyVHJhbnNmb3JtVXBkYXRlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdMYXll
clRyYW5zZm9ybVVwZGF0ZXI6On5TVkdMYXllclRyYW5zZm9ybVVwZGF0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU1ZHQ29udGFpbmVyOjpsYXlvdXQpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdD
b250YWluZXI6OnVwZGF0ZUxheWVySW5mb3JtYXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIHJl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHTW9kZWxPYmplY3Q6OnVwZGF0ZUZyb21TdHlsZSk6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jv
b3Q6OnVwZGF0ZUZyb21TdHlsZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdT
aGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdTaGFwZTo6bGF5b3V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBlOjphcHBseVRyYW5zZm9ybSBjb25zdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5oOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyOjp1cGRhdGVGcm9tU3R5bGUp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcjo6YXBw
bHlUcmFuc2Zvcm0gY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhcGhpY3NFbGVtZW50OjphbmltYXRlZExvY2FsVHJh
bnNmb3JtIGNvbnN0KToKKwogMjAyMi0wMy0xMCAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bnppbW1l
cm1hbm5AaWdhbGlhLmNvbT4KIAogICAgICAgICBVbmlmeSByZWZlcmVuY2UgYm94IC8gQ1RNIGNv
bXB1dGF0aW9uIGluIFJlbmRlckxheWVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRy
aXguY3BwCmluZGV4IGYyMjZkOTMzMWE0ZTQzMWY4NjZlOTU3YzE1ODliZGVkMDM2MTNiY2EuLjI4
MWM5NWRjYTZkZWNmNzc3N2FhNzM1ZjYwOWZlYmM4ODEwMzhiNjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRy
aXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMv
VHJhbnNmb3JtYXRpb25NYXRyaXguY3BwCkBAIC0xNTMzLDYgKzE1MzMsMTcgQEAgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIFRyYW5zZm9ybWF0aW9uTWF0cml4OjptdWx0aXBseShjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKK1RyYW5zZm9ybWF0aW9uTWF0
cml4JiBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bXVsdGlwbHlBZmZpbmVUcmFuc2Zvcm0oY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBtYXRyaXgpCit7CisgICAgaWYgKG1hdHJpeC5pc0lkZW50aXR5KCkp
CisgICAgICAgIHJldHVybiAqdGhpczsKKworICAgIGlmIChtYXRyaXguaXNJZGVudGl0eU9yVHJh
bnNsYXRpb24oKSkKKyAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZShtYXRyaXguZSgpLCBtYXRyaXgu
ZigpKTsKKworICAgIHJldHVybiBtdWx0aXBseShtYXRyaXgudG9UcmFuc2Zvcm1hdGlvbk1hdHJp
eCgpKTsKK30KKwogdm9pZCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bXVsdFZlY01hdHJpeChkb3Vi
bGUgeCwgZG91YmxlIHksIGRvdWJsZSYgcmVzdWx0WCwgZG91YmxlJiByZXN1bHRZKSBjb25zdAog
ewogICAgIHJlc3VsdFggPSBtX21hdHJpeFszXVswXSArIHggKiBtX21hdHJpeFswXVswXSArIHkg
KiBtX21hdHJpeFsxXVswXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaAppbmRl
eCBjOTUxMTc3YTMxMGI3NjA0YzIxNTljZDZlMjQ5N2ZkOGYyNTdiODNiLi44NTVkMmU3MmExNWE3
Yzg2Mzc3ODY1NmU0ZjM4NmVhOWE4YzIyNjFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlv
bk1hdHJpeC5oCkBAIC0yNDksNiArMjQ5LDggQEAgcHVibGljOgogCiAgICAgLy8gdGhpcyA9IG1h
dCAqIHRoaXMuCiAgICAgV0VCQ09SRV9FWFBPUlQgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG11bHRp
cGx5KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CisgICAgLy8gSWRlbnRpY2FsIHRvIG11
bHRpcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4JiksIGJ1dCBzYXZpbmcgYSBBZmZpbmVUcmFuc2Zv
cm0gLT4gVHJhbnNmb3JtYXRpb25NYXRyaXggcm91bmR0cmlwIGZvciBpZGVudGl0eSBvciB0cmFu
c2xhdGlvbiBtYXRyaWNlcy4KKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbXVsdGlwbHlBZmZp
bmVUcmFuc2Zvcm0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgc2NhbGUoZG91YmxlKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgc2NhbGVOb25Vbmlmb3JtKGRvdWJsZSBzeCwgZG91Ymxl
IHN5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggNDE1ZTk0ZjVj
YmMxYWVmODkzOGQxOGU3MWJmNzQ0NTVjMTFkOThjNy4uMmY4NjI5YjRjODBkOTcxNmUyY2YzODhh
ZDZmNjc5M2E5Yjc5MWJkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAK
QEAgLTY2MiwxMyArNjYyLDYgQEAgdm9pZCBSZW5kZXJCb3g6OmFic29sdXRlUXVhZHMoVmVjdG9y
PEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkgY29uc3QKICAgICBxdWFkcy5hcHBl
bmQobG9jYWxUb0Fic29sdXRlUXVhZChsb2NhbFJlY3QsIFVzZVRyYW5zZm9ybXMsIHdhc0ZpeGVk
KSk7CiB9CiAKLXZvaWQgUmVuZGVyQm94Ojp1cGRhdGVMYXllclRyYW5zZm9ybSgpCi17Ci0gICAg
Ly8gVHJhbnNmb3JtLW9yaWdpbiBkZXBlbmRzIG9uIGJveCBzaXplLCBzbyB3ZSBuZWVkIHRvIHVw
ZGF0ZSB0aGUgbGF5ZXIgdHJhbnNmb3JtIGFmdGVyIGxheW91dC4KLSAgICBpZiAoaGFzTGF5ZXIo
KSkKLSAgICAgICAgbGF5ZXIoKS0+dXBkYXRlVHJhbnNmb3JtKCk7Ci19Ci0KIHZvaWQgUmVuZGVy
Qm94OjphcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdCwgY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBPcHRpb25TZXQ8UmVu
ZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbj4gb3B0aW9ucykgY29uc3QKIHsKICAg
ICBzdHlsZS5hcHBseVRyYW5zZm9ybSh0LCBib3VuZGluZ0JveCwgb3B0aW9ucyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggZTQwN2NiY2ZjNWY0MjkxN2I1OTllYTI1NGYz
NDkyMGRmNWM2N2Y5ZC4uZGY2NmJiNmM3ZDk2ODA3M2NkZTQyNDAwNzNiYTBkYmM0ZGRkZDEyYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtMjE4LDcgKzIxOCw2IEBAIHB1
YmxpYzoKICAgICB2b2lkIGFkZE92ZXJmbG93RnJvbUNoaWxkKGNvbnN0IFJlbmRlckJveCogY2hp
bGQpIHsgYWRkT3ZlcmZsb3dGcm9tQ2hpbGQoY2hpbGQsIGNoaWxkLT5sb2NhdGlvbk9mZnNldCgp
KTsgfQogICAgIHZvaWQgYWRkT3ZlcmZsb3dGcm9tQ2hpbGQoY29uc3QgUmVuZGVyQm94KiBjaGls
ZCwgY29uc3QgTGF5b3V0U2l6ZSYgZGVsdGEpOwogCi0gICAgdm9pZCB1cGRhdGVMYXllclRyYW5z
Zm9ybSgpOwogICAgIHZvaWQgYXBwbHlUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBj
b25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gsIE9wdGlvblNl
dDxSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPiA9IFJlbmRlclN0eWxlOjph
bGxUcmFuc2Zvcm1PcGVyYXRpb25zKSBjb25zdCBvdmVycmlkZTsKIAogICAgIExheW91dFNpemUg
Y29udGVudFNpemUoKSBjb25zdCB7IHJldHVybiB7IGNvbnRlbnRXaWR0aCgpLCBjb250ZW50SGVp
Z2h0KCkgfTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXgg
ZjMxNWM5Nzk4NGNkNDZiZjhiYWQ0YTQ2ZTY4ZTQ1MmJlMjBlZjZkYy4uZWIzYjY2MzNlNTRkMTU3
YTMxZWNiYWIxZWNlOGM2N2EwNDY0N2Q1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwCkBAIC01NTIsNiArNTUyLDkgQEAgc3RhdGljIGJvb2wgY2FuQ3JlYXRlU3Rh
Y2tpbmdDb250ZXh0KGNvbnN0IFJlbmRlckxheWVyJiBsYXllcikKIHsKICAgICBhdXRvJiByZW5k
ZXJlciA9IGxheWVyLnJlbmRlcmVyKCk7CiAgICAgcmV0dXJuIHJlbmRlcmVyLmhhc1RyYW5zZm9y
bVJlbGF0ZWRQcm9wZXJ0eSgpCisjaWYgRU5BQkxFKExBWUVSX0JBU0VEX1NWR19FTkdJTkUpCisg
ICAgICAgIHx8IHJlbmRlcmVyLmhhc1NWR1RyYW5zZm9ybSgpCisjZW5kaWYKICAgICAgICAgfHwg
cmVuZGVyZXIuaGFzQ2xpcFBhdGgoKQogICAgICAgICB8fCByZW5kZXJlci5oYXNGaWx0ZXIoKQog
ICAgICAgICB8fCByZW5kZXJlci5oYXNNYXNrKCkKQEAgLTEzNTgsMTkgKzEzNjEsMTMgQEAgVHJh
bnNmb3JtYXRpb25NYXRyaXggUmVuZGVyTGF5ZXI6OmN1cnJlbnRUcmFuc2Zvcm0oT3B0aW9uU2V0
PFJlbmRlclN0eWxlOjpUcmFuc2YKICAgICBpZiAoIW1fdHJhbnNmb3JtKQogICAgICAgICByZXR1
cm4geyB9OwogCi0gICAgLy8gRklYTUU6IFtMQlNFXSBVcHN0cmVhbSB0cmFuc2Zvcm0gc3VwcG9y
dCBmb3IgUmVuZGVyU1ZHTW9kZWxPYmplY3QgZGVyaXZlZCByZW5kZXJlcnMKLSAgICBpZiAoIWlz
PFJlbmRlckJveD4ocmVuZGVyZXIoKSkpCi0gICAgICAgIHJldHVybiB7IH07Ci0KLSAgICBhdXRv
JiByZW5kZXJCb3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+KHJlbmRlcmVyKCkpOwotCiAgICAgLy8g
bV90cmFuc2Zvcm0gaW5jbHVkZXMgdHJhbnNmb3JtLW9yaWdpbiBhbmQgaXMgYWZmZWN0ZWQgYnkg
dGhlIGNob2ljZSBvZiB0aGUgdHJhbnNmb3JtLWJveC4KICAgICAvLyBUaGVyZWZvcmUgd2UgY2Fu
IG9ubHkgdXNlIHRoZSBjYWNoZWQgbV90cmFuc2Zvcm0sIGlmIHRoZSBhbmltYXRpb24gZG9lc24n
dCBhbHRlciB0cmFuc2Zvcm0tYm94IG9yIGV4Y2x1ZGVzIHRyYW5zZm9ybS1vcmlnaW4uCiAKICAg
ICAvLyBRdWVyeSB0aGUgYW5pbWF0ZWRTdHlsZSgpIHRvIG9idGFpbiB0aGUgY3VycmVudCB0cmFu
c2Zvcm1hdGlvbiwgd2hlbiBhY2NlbGVyYXRlZCB0cmFuc2Zvcm0gYW5pbWF0aW9ucyBhcmUgcnVu
bmluZy4KLSAgICBhdXRvIHN0eWxlYWJsZSA9IFN0eWxlYWJsZTo6ZnJvbVJlbmRlcmVyKHJlbmRl
ckJveCk7CisgICAgYXV0byBzdHlsZWFibGUgPSBTdHlsZWFibGU6OmZyb21SZW5kZXJlcihyZW5k
ZXJlcigpKTsKICAgICBpZiAoKHN0eWxlYWJsZSAmJiBzdHlsZWFibGUtPmlzUnVubmluZ0FjY2Vs
ZXJhdGVkVHJhbnNmb3JtQW5pbWF0aW9uKCkpIHx8ICFvcHRpb25zLmNvbnRhaW5zKFJlbmRlclN0
eWxlOjpUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb246OlRyYW5zZm9ybU9yaWdpbikpIHsKLSAgICAg
ICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBhbmltYXRlZFN0eWxlID0gcmVuZGVyQm94
LmFuaW1hdGVkU3R5bGUoKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBh
bmltYXRlZFN0eWxlID0gcmVuZGVyZXIoKS5hbmltYXRlZFN0eWxlKCk7CiAKICAgICAgICAgVHJh
bnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtOwogICAgICAgICB1cGRhdGVUcmFuc2Zvcm1Gcm9t
U3R5bGUodHJhbnNmb3JtLCAqYW5pbWF0ZWRTdHlsZSwgb3B0aW9ucyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKaW5kZXggOGQ5
OTBmMWQ1MzFiZTYzZjJiMjVkMDYxNDVmYjEzMWM0MTAwNzI2Yy4uMTk0MDU2OGVhZjlkY2I2MTk2
MjI5Y2ZlNWJiMjVmZWUwMzliZjQzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgIlJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdNb2Rl
bE9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKKyNpbmNsdWRlICJTVkdHcmFwaGlj
c0VsZW1lbnQuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlN0eWxlU2Nyb2xs
U25hcFBvaW50cy5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybVN0YXRlLmgiCkBAIC0yMzEsNiArMjMy
LDEzIEBAIHZvaWQgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6c3VzcGVuZEFuaW1hdGlvbnMoTW9u
b3RvbmljVGltZSB0aW1lKQogICAgIGxheWVyKCktPmJhY2tpbmcoKS0+c3VzcGVuZEFuaW1hdGlv
bnModGltZSk7CiB9CiAKK3ZvaWQgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6dXBkYXRlTGF5ZXJU
cmFuc2Zvcm0oKQoreworICAgIC8vIFRyYW5zZm9ybS1vcmlnaW4gZGVwZW5kcyBvbiBib3ggc2l6
ZSwgc28gd2UgbmVlZCB0byB1cGRhdGUgdGhlIGxheWVyIHRyYW5zZm9ybSBhZnRlciBsYXlvdXQu
CisgICAgaWYgKGhhc0xheWVyKCkpCisgICAgICAgIGxheWVyKCktPnVwZGF0ZVRyYW5zZm9ybSgp
OworfQorCiAjaWYgRU5BQkxFKExBWUVSX0JBU0VEX1NWR19FTkdJTkUpCiBzdGQ6Om9wdGlvbmFs
PExheW91dFJlY3Q+IFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OmNvbXB1dGVWaXNpYmxlUmVjdElu
U1ZHQ29udGFpbmVyKGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGNvbnN0IFJlbmRlckxheWVyTW9k
ZWxPYmplY3QqIGNvbnRhaW5lciwgUmVuZGVyT2JqZWN0OjpWaXNpYmxlUmVjdENvbnRleHQgY29u
dGV4dCkgY29uc3QKIHsKQEAgLTMxNiw2ICszMjQsMzggQEAgdm9pZCBSZW5kZXJMYXllck1vZGVs
T2JqZWN0OjptYXBMb2NhbFRvU1ZHQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmpl
Y3QKIAogICAgIGNvbnRhaW5lci0+bWFwTG9jYWxUb0NvbnRhaW5lcihhbmNlc3RvckNvbnRhaW5l
ciwgdHJhbnNmb3JtU3RhdGUsIG1vZGUsIHdhc0ZpeGVkKTsKIH0KKwordm9pZCBSZW5kZXJMYXll
ck1vZGVsT2JqZWN0OjphcHBseVNWR1RyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJh
bnNmb3JtLCBTVkdHcmFwaGljc0VsZW1lbnQmIGdyYXBoaWNzRWxlbWVudCwgY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBPcHRpb25TZXQ8UmVu
ZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbj4gb3B0aW9ucykgY29uc3QKK3sKKyAg
ICAvLyBUaGlzIGNoZWNrIGRvZXMgbm90IHVzZSBzdHlsZS5oYXNUcmFuc2Zvcm1SZWxhdGVkUHJv
cGVydHkoKSBvbiBwdXJwb3NlIC0tIHdlIG9ubHkgd2FudCB0byBrbm93IGlmIGVpdGhlciB0aGUg
J3RyYW5zZm9ybScgcHJvcGVydHksIGFuCisgICAgLy8gb2Zmc2V0IHBhdGgsIG9yIHRoZSBpbmRp
dmlkdWFsIHRyYW5zZm9ybSBvcGVyYXRpb25zIGFyZSBzZXQgKHBlcnNwZWN0aXZlIC8gdHJhbnNm
b3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZCBhcmUgbm90IHJlbGV2YW50IGhlcmUpLgorICAgIGJvb2wg
aGFzQ1NTVHJhbnNmb3JtID0gc3R5bGUuaGFzVHJhbnNmb3JtKCkgfHwgc3R5bGUucm90YXRlKCkg
fHwgc3R5bGUudHJhbnNsYXRlKCkgfHwgc3R5bGUuc2NhbGUoKTsKKworICAgIGJvb2wgYWZmZWN0
ZWRCeVRyYW5zZm9ybU9yaWdpbiA9IGZhbHNlOworICAgIHN0ZDo6b3B0aW9uYWw8QWZmaW5lVHJh
bnNmb3JtPiBzdmdUcmFuc2Zvcm07CisKKyAgICBpZiAoaGFzQ1NTVHJhbnNmb3JtKQorICAgICAg
ICBhZmZlY3RlZEJ5VHJhbnNmb3JtT3JpZ2luID0gc3R5bGUuYWZmZWN0ZWRCeVRyYW5zZm9ybU9y
aWdpbigpOworICAgIGVsc2UgaWYgKGF1dG8gYWZmaW5lVHJhbnNmb3JtID0gZ3JhcGhpY3NFbGVt
ZW50LmFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0oKTsgIWFmZmluZVRyYW5zZm9ybS5pc0lkZW50aXR5
KCkpIHsKKyAgICAgICAgc3ZnVHJhbnNmb3JtID0gYWZmaW5lVHJhbnNmb3JtOworICAgICAgICBh
ZmZlY3RlZEJ5VHJhbnNmb3JtT3JpZ2luID0gYWZmaW5lVHJhbnNmb3JtLmEoKSAhPSAxIHx8IGFm
ZmluZVRyYW5zZm9ybS5iKCkgfHwgYWZmaW5lVHJhbnNmb3JtLmMoKSB8fCBhZmZpbmVUcmFuc2Zv
cm0uZCgpICE9IDE7CisgICAgfQorCisgICAgaWYgKCFoYXNDU1NUcmFuc2Zvcm0gJiYgIXN2Z1Ry
YW5zZm9ybS5oYXNfdmFsdWUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRmxvYXRQb2ludDNE
IG9yaWdpblRyYW5zbGF0ZTsKKyAgICBpZiAob3B0aW9ucy5jb250YWlucyhSZW5kZXJTdHlsZTo6
VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uOjpUcmFuc2Zvcm1PcmlnaW4pICYmIGFmZmVjdGVkQnlU
cmFuc2Zvcm1PcmlnaW4pCisgICAgICAgIG9yaWdpblRyYW5zbGF0ZSA9IHN0eWxlLmFwcGx5VHJh
bnNmb3JtT3JpZ2luKHRyYW5zZm9ybSwgYm91bmRpbmdCb3gpOworCisgICAgLy8gQ1NTIHRyYW5z
Zm9ybXMgdGFrZSBwcmVjZWRlbmNlIG92ZXIgU1ZHIHRyYW5zZm9ybXMuCisgICAgaWYgKGhhc0NT
U1RyYW5zZm9ybSkKKyAgICAgICAgc3R5bGUuYXBwbHlDU1NUcmFuc2Zvcm0odHJhbnNmb3JtLCBi
b3VuZGluZ0JveCwgb3B0aW9ucyk7CisgICAgZWxzZQorICAgICAgICB0cmFuc2Zvcm0ubXVsdGlw
bHlBZmZpbmVUcmFuc2Zvcm0oc3ZnVHJhbnNmb3JtLnZhbHVlKCkpOworCisgICAgc3R5bGUudW5h
cHBseVRyYW5zZm9ybU9yaWdpbih0cmFuc2Zvcm0sIG9yaWdpblRyYW5zbGF0ZSk7Cit9CiAjZW5k
aWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmgKaW5kZXggZDQ0ZmY2YWQ1MmQzYTU5ZjUxZDFj
MGZlYWY2Y2U3OTVhNWUwZWRlMC4uMTI0YWViZDRkNzQwMzNjNzY1MWM5MGFmM2VmZTBiN2Q5ZGZm
N2RmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9k
ZWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdC5oCkBAIC0yOCw2ICsyOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
S2V5ZnJhbWVMaXN0OwogY2xhc3MgUmVuZGVyTGF5ZXI7CitjbGFzcyBTVkdHcmFwaGljc0VsZW1l
bnQ7CiAKIHN0cnVjdCBMYXllclJlcGFpbnRSZWN0cyB7CiAgICAgTGF5b3V0UmVjdCBjbGlwcGVk
T3ZlcmZsb3dSZWN0OwpAQCAtNzUsOCArNzYsMTIgQEAgcHVibGljOgogICAgIC8vIFByb3ZpZGVz
IHRoZSBTVkcgaW1wbGVtZW50YXRpb24gZm9yIG1hcExvY2FsVG9Db250YWluZXIoKS4KICAgICAv
LyBUaGlzIGxpdmVzIGluIFJlbmRlckxheWVyTW9kZWxPYmplY3QsIHdoaWNoIGlzIHRoZSBjb21t
b24gYmFzZS1jbGFzcyBmb3IgYWxsIFNWRyByZW5kZXJlcnMuCiAgICAgdm9pZCBtYXBMb2NhbFRv
U1ZHQ29udGFpbmVyKGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIGFuY2VzdG9yQ29udGFp
bmVyLCBUcmFuc2Zvcm1TdGF0ZSYsIE9wdGlvblNldDxNYXBDb29yZGluYXRlc01vZGU+LCBib29s
KiB3YXNGaXhlZCkgY29uc3Q7CisKKyAgICB2b2lkIGFwcGx5U1ZHVHJhbnNmb3JtKFRyYW5zZm9y
bWF0aW9uTWF0cml4JiwgU1ZHR3JhcGhpY3NFbGVtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBj
b25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBPcHRpb25TZXQ8UmVuZGVyU3R5bGU6OlRyYW5z
Zm9ybU9wZXJhdGlvbk9wdGlvbj4pIGNvbnN0OwogI2VuZGlmCiAKKyAgICB2b2lkIHVwZGF0ZUxh
eWVyVHJhbnNmb3JtKCk7CisKICAgICB2aXJ0dWFsIHZvaWQgYXBwbHlUcmFuc2Zvcm0oVHJhbnNm
b3JtYXRpb25NYXRyaXgmLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZsb2F0UmVjdCYgYm91
bmRpbmdCb3gsIE9wdGlvblNldDxSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9u
PiA9IFJlbmRlclN0eWxlOjphbGxUcmFuc2Zvcm1PcGVyYXRpb25zKSBjb25zdCA9IDA7CiAKIHBy
b3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXgg
ZGNhNzNlODk1ZDNkYWFhNWQ3MDE5YmE0NTQyODUyY2I5M2E3ZjEzOC4uNzAyN2YzNjcwNmExNmYx
NDNkYTVlOGNjODQ3OTBmMTFkZGJhOWI3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5jcHAKQEAgLTE5NzUsNiArMTk3NSwxNCBAQCB2b2lkIFJlbmRlck9iamVjdDo6
c2V0SGFzT3V0bGluZUF1dG9BbmNlc3Rvcihib29sIGhhc091dGxpbmVBdXRvQW5jZXN0b3IpCiAg
ICAgICAgIGVuc3VyZVJhcmVEYXRhKCkuc2V0SGFzT3V0bGluZUF1dG9BbmNlc3RvcihoYXNPdXRs
aW5lQXV0b0FuY2VzdG9yKTsKIH0KIAorI2lmIEVOQUJMRShMQVlFUl9CQVNFRF9TVkdfRU5HSU5F
KQordm9pZCBSZW5kZXJPYmplY3Q6OnNldEhhc1NWR1RyYW5zZm9ybShib29sIGhhc1NWR1RyYW5z
Zm9ybSkKK3sKKyAgICBpZiAoaGFzU1ZHVHJhbnNmb3JtIHx8IGhhc1JhcmVEYXRhKCkpCisgICAg
ICAgIGVuc3VyZVJhcmVEYXRhKCkuc2V0SGFzU1ZHVHJhbnNmb3JtKGhhc1NWR1RyYW5zZm9ybSk7
Cit9CisjZW5kaWYKKwogdm9pZCBSZW5kZXJPYmplY3Q6OnNldFBhaW50Q29udGFpbm1lbnRBcHBs
aWVzKGJvb2wgcGFpbnRDb250YWlubWVudEFwcGxpZXMpCiB7CiAgICAgaWYgKHBhaW50Q29udGFp
bm1lbnRBcHBsaWVzIHx8IGhhc1JhcmVEYXRhKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyT2JqZWN0LmgKaW5kZXggNTgwNDJlYzdmZjNjYzM3NDRiOGM0MjMzMzg3YzE3YzYyNGFkMGYx
Mi4uNTMwYzQzMWMzZWExYTQwMDgzOWQwNjhhOGRhM2JkYTk5MzFlYzIwOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaApAQCAtNDE1LDYgKzQxNSwxMiBAQCBwdWJsaWM6
CiAgICAgYm9vbCBoYXNPdXRsaW5lQXV0b0FuY2VzdG9yKCkgY29uc3QgeyByZXR1cm4gbV9iaXRm
aWVsZHMuaGFzUmFyZURhdGEoKSAmJiByYXJlRGF0YSgpLmhhc091dGxpbmVBdXRvQW5jZXN0b3Io
KTsgfQogICAgIGJvb2wgcGFpbnRDb250YWlubWVudEFwcGxpZXMoKSBjb25zdCB7IHJldHVybiBt
X2JpdGZpZWxkcy5oYXNSYXJlRGF0YSgpICYmIHJhcmVEYXRhKCkucGFpbnRDb250YWlubWVudEFw
cGxpZXMoKTsgfQogCisjaWYgRU5BQkxFKExBWUVSX0JBU0VEX1NWR19FTkdJTkUpCisgICAgYm9v
bCBoYXNTVkdUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5oYXNSYXJlRGF0
YSgpICYmIHJhcmVEYXRhKCkuaGFzU1ZHVHJhbnNmb3JtKCk7IH0KKyNlbHNlCisgICAgYm9vbCBo
YXNTVkdUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCisKICAgICBi
b29sIGlzRXhjbHVkZWRGcm9tTm9ybWFsTGF5b3V0KCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVs
ZHMuaXNFeGNsdWRlZEZyb21Ob3JtYWxMYXlvdXQoKTsgfQogICAgIHZvaWQgc2V0SXNFeGNsdWRl
ZEZyb21Ob3JtYWxMYXlvdXQoYm9vbCBleGNsdWRlZCkgeyBtX2JpdGZpZWxkcy5zZXRJc0V4Y2x1
ZGVkRnJvbU5vcm1hbExheW91dChleGNsdWRlZCk7IH0KICAgICBib29sIGlzRXhjbHVkZWRBbmRQ
bGFjZWRJbkJvcmRlcigpIGNvbnN0IHsgcmV0dXJuIGlzRXhjbHVkZWRGcm9tTm9ybWFsTGF5b3V0
KCkgJiYgaXNMZWdlbmQoKTsgfQpAQCAtNDQ5LDcgKzQ1NSw3IEBAIHB1YmxpYzoKICAgICBib29s
IGhhc1BvdGVudGlhbGx5U2Nyb2xsYWJsZU92ZXJmbG93KCkgY29uc3Q7CiAKICAgICBib29sIGhh
c1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmhh
c1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgpOyB9IC8vIFRyYW5zZm9ybSwgcGVyc3BlY3RpdmUg
b3IgdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZC4KLSAgICBib29sIGhhc1RyYW5zZm9ybSgp
IGNvbnN0IHsgcmV0dXJuIGhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgpICYmIChzdHlsZSgp
Lmhhc1RyYW5zZm9ybSgpIHx8IHN0eWxlKCkudHJhbnNsYXRlKCkgfHwgc3R5bGUoKS5zY2FsZSgp
IHx8IHN0eWxlKCkucm90YXRlKCkpOyB9CisgICAgYm9vbCBoYXNUcmFuc2Zvcm0oKSBjb25zdCB7
IHJldHVybiBoYXNUcmFuc2Zvcm1SZWxhdGVkUHJvcGVydHkoKSAmJiAoc3R5bGUoKS5oYXNUcmFu
c2Zvcm0oKSB8fCBzdHlsZSgpLnRyYW5zbGF0ZSgpIHx8IHN0eWxlKCkuc2NhbGUoKSB8fCBzdHls
ZSgpLnJvdGF0ZSgpIHx8IGhhc1NWR1RyYW5zZm9ybSgpKTsgfQogICAgIGJvb2wgaGFzVHJhbnNm
b3JtT3JQZXNwZWN0aXZlKCkgY29uc3QgeyByZXR1cm4gaGFzVHJhbnNmb3JtUmVsYXRlZFByb3Bl
cnR5KCkgJiYgKGhhc1RyYW5zZm9ybSgpIHx8IHN0eWxlKCkuaGFzUGVyc3BlY3RpdmUoKSk7IH0K
IAogICAgIGlubGluZSBib29sIHByZXNlcnZlc05ld2xpbmUoKSBjb25zdDsKQEAgLTUxNCw2ICs1
MjAsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJc1JlbmRlckZyYWdtZW50ZWRGbG93KGJvb2wg
PSB0cnVlKTsKICAgICB2b2lkIHNldEhhc091dGxpbmVBdXRvQW5jZXN0b3IoYm9vbCA9IHRydWUp
OwogICAgIHZvaWQgc2V0UGFpbnRDb250YWlubWVudEFwcGxpZXMoYm9vbCA9IHRydWUpOworI2lm
IEVOQUJMRShMQVlFUl9CQVNFRF9TVkdfRU5HSU5FKQorICAgIHZvaWQgc2V0SGFzU1ZHVHJhbnNm
b3JtKGJvb2wgPSB0cnVlKTsKKyNlbmRpZgogCiAgICAgLy8gSG9vayBzbyB0aGF0IFJlbmRlclRl
eHRDb250cm9sIGNhbiByZXR1cm4gdGhlIGxpbmUgaGVpZ2h0IG9mIGl0cyBpbm5lciByZW5kZXJl
ci4KICAgICAvLyBGb3Igb3RoZXIgcmVuZGVyZXJzLCB0aGUgdmFsdWUgaXMgdGhlIHNhbWUgYXMg
bGluZUhlaWdodChmYWxzZSkuCkBAIC05NDMsNiArOTUyLDkgQEAgcHJpdmF0ZToKICAgICAgICAg
QUREX0JPT0xFQU5fQklURklFTEQoaXNSZW5kZXJGcmFnbWVudGVkRmxvdywgSXNSZW5kZXJGcmFn
bWVudGVkRmxvdyk7CiAgICAgICAgIEFERF9CT09MRUFOX0JJVEZJRUxEKGhhc091dGxpbmVBdXRv
QW5jZXN0b3IsIEhhc091dGxpbmVBdXRvQW5jZXN0b3IpOwogICAgICAgICBBRERfQk9PTEVBTl9C
SVRGSUVMRChwYWludENvbnRhaW5tZW50QXBwbGllcywgUGFpbnRDb250YWlubWVudEFwcGxpZXMp
OworI2lmIEVOQUJMRShMQVlFUl9CQVNFRF9TVkdfRU5HSU5FKQorICAgICAgICBBRERfQk9PTEVB
Tl9CSVRGSUVMRChoYXNTVkdUcmFuc2Zvcm0sIEhhc1NWR1RyYW5zZm9ybSk7CisjZW5kaWYKIAog
ICAgICAgICAvLyBGcm9tIFJlbmRlckVsZW1lbnQKICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJl
ZmVyZW5jZWRTVkdSZXNvdXJjZXM+IHJlZmVyZW5jZWRTVkdSZXNvdXJjZXM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKaW5kZXgg
YmRjYzU4MTViNDY2MjdmMGZmMWM1YTE0ODAyNDBmZjY1N2I5NDdlZi4uMzQ1ZDYzNjEzNGQ1ZmRi
Y2Y5MjY3YmZjZGFjYzRjZjYyY2IzYzZjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcApAQCAtNTIsNiArNTIsMzYgQEAgUmVu
ZGVyU1ZHQ29udGFpbmVyOjpSZW5kZXJTVkdDb250YWluZXIoU1ZHRWxlbWVudCYgZWxlbWVudCwg
UmVuZGVyU3R5bGUmJiBzdHlsZSkKIAogUmVuZGVyU1ZHQ29udGFpbmVyOjp+UmVuZGVyU1ZHQ29u
dGFpbmVyKCkgPSBkZWZhdWx0OwogCisvLyBIZWxwZXIgY2xhc3MsIG1vdmUgdG8gaXRzIG93biBm
aWxlIG9uY2UgdXRpbGl6ZWQgaW4gbW9yZSB0aGFuIG9uZSBwbGFjZS4KK2NsYXNzIFNWR0xheWVy
VHJhbnNmb3JtVXBkYXRlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU1ZHTGF5ZXJUcmFu
c2Zvcm1VcGRhdGVyKTsKK3B1YmxpYzoKKyAgICBTVkdMYXllclRyYW5zZm9ybVVwZGF0ZXIoUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdCYgcmVuZGVyZXIpCisgICAgICAgIDogbV9yZW5kZXJlcihyZW5k
ZXJlcikKKyAgICB7CisgICAgICAgIGlmICghbV9yZW5kZXJlci5oYXNMYXllcigpKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIG1fdHJhbnNmb3JtUmVmZXJlbmNlQm94ID0gbV9yZW5k
ZXJlci50cmFuc2Zvcm1SZWZlcmVuY2VCb3hSZWN0KCk7CisgICAgICAgIG1fcmVuZGVyZXIudXBk
YXRlTGF5ZXJUcmFuc2Zvcm0oKTsKKyAgICB9CisKKworICAgIH5TVkdMYXllclRyYW5zZm9ybVVw
ZGF0ZXIoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3JlbmRlcmVyLmhhc0xheWVyKCkpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChtX3JlbmRlcmVyLnRyYW5zZm9ybVJlZmVyZW5j
ZUJveFJlY3QoKSA9PSBtX3RyYW5zZm9ybVJlZmVyZW5jZUJveCkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBtX3JlbmRlcmVyLnVwZGF0ZUxheWVyVHJhbnNmb3JtKCk7CisgICAgfQor
Citwcml2YXRlOgorICAgIFJlbmRlckxheWVyTW9kZWxPYmplY3QmIG1fcmVuZGVyZXI7CisgICAg
RmxvYXRSZWN0IG1fdHJhbnNmb3JtUmVmZXJlbmNlQm94OworfTsKKwogdm9pZCBSZW5kZXJTVkdD
b250YWluZXI6OmxheW91dCgpCiB7CiAgICAgU3RhY2tTdGF0czo6TGF5b3V0Q2hlY2tQb2ludCBs
YXlvdXRDaGVja1BvaW50OwpAQCAtNjQsMTMgKzk0LDEwIEBAIHZvaWQgUmVuZGVyU1ZHQ29udGFp
bmVyOjpsYXlvdXQoKQogICAgIC8vIFVwZGF0ZSBsYXllciB0cmFuc2Zvcm0gYmVmb3JlIGxheWlu
ZyBvdXQgY2hpbGRyZW4gKFNWRyBuZWVkcyBhY2Nlc3MgdG8gdGhlIHRyYW5zZm9ybSBtYXRyaWNl
cyBkdXJpbmcgbGF5b3V0IGZvciBvbi1zY3JlZW4gdGV4dCBmb250LXNpemUgY2FsY3VsYXRpb25z
KS4KICAgICAvLyBFdmVudHVhbGx5IHJlLXVwZGF0ZSBpZiB0aGUgdHJhbnNmb3JtIHJlZmVyZW5j
ZSBib3gsIHJlbGV2YW50IGZvciB0cmFuc2Zvcm0tb3JpZ2luLCBoYXMgY2hhbmdlZCBkdXJpbmcg
bGF5b3V0LgogICAgIHsKLSAgICAgICAgLy8gRklYTUU6IFtMQlNFXSBVcHN0cmVhbSBTVkdMYXll
clRyYW5zZm9ybVVwZGF0ZXIKLSAgICAgICAgLy8gU1ZHTGF5ZXJUcmFuc2Zvcm1VcGRhdGVyIHRy
YW5zZm9ybVVwZGF0ZXIoKnRoaXMpOworICAgICAgICBTVkdMYXllclRyYW5zZm9ybVVwZGF0ZXIg
dXBkYXRlVHJhbnNmb3JtKCp0aGlzKTsKICAgICAgICAgbGF5b3V0Q2hpbGRyZW4oKTsKICAgICB9
CiAKLSAgICB1cGRhdGVMYXllckluZm9ybWF0aW9uKCk7Ci0KICAgICAvLyBJbnZhbGlkYXRlIGFs
bCByZXNvdXJjZXMgb2YgdGhpcyBjbGllbnQgaWYgb3VyIGxheW91dCBjaGFuZ2VkLgogICAgIGlm
IChldmVySGFkTGF5b3V0KCkgJiYgbmVlZHNMYXlvdXQoKSkKICAgICAgICAgU1ZHUmVzb3VyY2Vz
Q2FjaGU6OmNsaWVudExheW91dENoYW5nZWQoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgKaW5kZXggOTc1YThmNjJjZDAzYzMy
MTNhYmI4NTRjZjc0ZDE2NjVkOWM5NDQ1Yy4uMDE5NGJhYjEzZWZhYzdkNzk4NDg5ZGI2ZmU3NTM3
ZGU0MTFhMDk3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdDb250YWluZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0NvbnRhaW5lci5oCkBAIC01NSw3ICs1NSw2IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFs
IHZvaWQgbGF5b3V0Q2hpbGRyZW4oKTsKICAgICBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRl
c3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEhpdFRlc3RMb2NhdGlvbiYgbG9jYXRp
b25JbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3VtdWxhdGVkT2Zmc2V0LCBIaXRU
ZXN0QWN0aW9uKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMYXllckluZm9y
bWF0aW9uKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZVZpZXdwb3J0KCk7CiAgICAg
dmlydHVhbCBib29sIHBvaW50SXNJbnNpZGVWaWV3cG9ydENsaXAoY29uc3QgRmxvYXRQb2ludCYp
IHsgcmV0dXJuIHRydWU7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcAppbmRleCBiMTkyOTRiNjc1OGM5ZDE3YjZjODUw
OWIyMWFkMTcxNGMxODkzNGY4Li5jOTY5NWU2YjZhNDNmOWNmNGZmMDM5NWFjMzYxYTQzMjYxZGI4
ZTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01v
ZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R01vZGVsT2JqZWN0LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIlJlbmRlckdlb21l
dHJ5TWFwLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJMYXll
ck1vZGVsT2JqZWN0LmgiCisjaW5jbHVkZSAiUmVuZGVyU1ZHTW9kZWxPYmplY3RJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2UuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3Lmgi
CiAjaW5jbHVkZSAiU1ZHRWxlbWVudElubGluZXMuaCIKQEAgLTU5LDE1ICs2MCwxMyBAQCBSZW5k
ZXJTVkdNb2RlbE9iamVjdDo6UmVuZGVyU1ZHTW9kZWxPYmplY3QoU1ZHRWxlbWVudCYgZWxlbWVu
dCwgUmVuZGVyU3R5bGUmJiBzdAogdm9pZCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6dXBkYXRlRnJv
bVN0eWxlKCkKIHsKICAgICBSZW5kZXJMYXllck1vZGVsT2JqZWN0Ojp1cGRhdGVGcm9tU3R5bGUo
KTsKLSAgICBzZXRIYXNUcmFuc2Zvcm1SZWxhdGVkUHJvcGVydHkoc3R5bGUoKS5oYXNUcmFuc2Zv
cm1SZWxhdGVkUHJvcGVydHkoKSk7CiAKLSAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtOwot
ICAgIGlmIChpczxTVkdHcmFwaGljc0VsZW1lbnQ+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSkpCi0g
ICAgICAgIHRyYW5zZm9ybSA9IGRvd25jYXN0PFNWR0dyYXBoaWNzRWxlbWVudD4obm9kZUZvck5v
bkFub255bW91cygpKS5hbmltYXRlZExvY2FsVHJhbnNmb3JtKCk7CisgICAgYm9vbCBoYXNTVkdU
cmFuc2Zvcm0gPSBmYWxzZTsKKyAgICBpZiAoaXM8U1ZHR3JhcGhpY3NFbGVtZW50PihlbGVtZW50
KCkpKQorICAgICAgICBoYXNTVkdUcmFuc2Zvcm0gPSAhZG93bmNhc3Q8U1ZHR3JhcGhpY3NFbGVt
ZW50PihlbGVtZW50KCkpLmFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0oKS5pc0lkZW50aXR5KCk7CiAK
LSAgICAvLyBGSVhNRTogW0xCU0VdIFVwc3RyZWFtIFJlbmRlck9iamVjdCBjaGFuZ2VzCi0gICAg
Ly8gaWYgKCF0cmFuc2Zvcm0uaXNJZGVudGl0eSgpKQotICAgIC8vICAgICBzZXRIYXNTVkdUcmFu
c2Zvcm0oKTsKKyAgICBzZXRIYXNUcmFuc2Zvcm1SZWxhdGVkUHJvcGVydHkoc3R5bGUoKS5oYXNU
cmFuc2Zvcm1SZWxhdGVkUHJvcGVydHkoKSB8fCBoYXNTVkdUcmFuc2Zvcm0pOworICAgIHNldEhh
c1NWR1RyYW5zZm9ybShoYXNTVkdUcmFuc2Zvcm0pOwogfQogCiBGbG9hdFJlY3QgUmVuZGVyU1ZH
TW9kZWxPYmplY3Q6OmJvcmRlckJveFJlY3RJbkZyYWdtZW50RXF1aXZhbGVudChSZW5kZXJGcmFn
bWVudENvbnRhaW5lciosIFJlbmRlckJveDo6UmVuZGVyQm94RnJhZ21lbnRJbmZvRmxhZ3MpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jv
b3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcApp
bmRleCA3MTZlYTgzMDY4NDU5MzNjYjhmMDQ3YWU4YThkOWQyODUwMWM4ZDc1Li44MGFkODA3NzAw
ZmE1M2UwMTJkMGY0OTExOTE5Y2JhYjg0NGNlZGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKQEAgLTM5Niw4ICszOTYsNyBAQCB2b2lkIFJl
bmRlclNWR1Jvb3Q6OnVwZGF0ZUZyb21TdHlsZSgpCiB7CiAgICAgUmVuZGVyUmVwbGFjZWQ6OnVw
ZGF0ZUZyb21TdHlsZSgpOwogCi0gICAgLy8gRklYTUU6IFtMQlNFXSBVcHN0cmVhbSBSZW5kZXJP
YmplY3QgY2hhbmdlcwotICAgIC8vIHNldEhhc1NWR1RyYW5zZm9ybSgpOworICAgIHNldEhhc1NW
R1RyYW5zZm9ybSgpOwogCiAgICAgaWYgKHNob3VsZEFwcGx5Vmlld3BvcnRDbGlwKCkpCiAgICAg
ICAgIHNldEhhc05vblZpc2libGVPdmVyZmxvdygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAppbmRleCAzMjU1NzI0MTkwYjcyMGFmZDM2Njg1
NTg2MjAxNjBmMGYzODEwMTllLi5jYWFmNmIzNWIwZTA1MjAwM2RmOTIwMWVlYzAwMDRkNTQzNTFm
NDA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1No
YXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBl
LmNwcApAQCAtMTU0LDggKzE1NCw3IEBAIHZvaWQgUmVuZGVyU1ZHU2hhcGU6OmxheW91dCgpCiAg
ICAgICAgIHNldExheW91dFJlY3QoZW5jbG9zaW5nTGF5b3V0UmVjdChtX2ZpbGxCb3VuZGluZ0Jv
eCkpOwogICAgIH0KIAotICAgIC8vIEZJWE1FOiBbTEJTRV0gVXBzdHJlYW0gU1ZHTGF5ZXJUcmFu
c2Zvcm1VcGRhdGVyCi0gICAgLy8gU1ZHUmVuZGVyU3VwcG9ydDo6dXBkYXRlTGF5ZXJUcmFuc2Zv
cm0oKnRoaXMpOworICAgIHVwZGF0ZUxheWVyVHJhbnNmb3JtKCk7CiAKICAgICAvLyBJbnZhbGlk
YXRlIGFsbCByZXNvdXJjZXMgb2YgdGhpcyBjbGllbnQgaWYgb3VyIGxheW91dCBjaGFuZ2VkLgog
ICAgIGlmIChldmVySGFkTGF5b3V0KCkgJiYgc2VsZk5lZWRzTGF5b3V0KCkpCkBAIC01MzYsOCAr
NTM1LDcgQEAgdm9pZCBSZW5kZXJTVkdTaGFwZTo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVy
ZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSYgbmUKIAogdm9pZCBSZW5kZXJTVkdTaGFwZTo6
YXBwbHlUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBPcHRpb25TZXQ8
UmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbj4gb3B0aW9ucykgY29uc3QKIHsK
LSAgICAvLyBGSVhNRTogW0xCU0VdIFVwc3RyZWFtIENTUy9TVkcgdHJhbnNmb3JtIHN1cHBvcnQK
LSAgICBzdHlsZS5hcHBseVRyYW5zZm9ybSh0cmFuc2Zvcm0sIGJvdW5kaW5nQm94LCBvcHRpb25z
KTsKKyAgICBhcHBseVNWR1RyYW5zZm9ybSh0cmFuc2Zvcm0sIGdyYXBoaWNzRWxlbWVudCgpLCBz
dHlsZSwgYm91bmRpbmdCb3gsIG9wdGlvbnMpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmgKaW5kZXggNzQzNjhiZGFmNjlmOWQxNjE5Mjlj
YjIxM2YxMjU0YmFjNTU1YjliZC4uODhjZmU5ZWMwNjY4OWFhMjViODUzNWM0Mzk4Y2NhOWViZjcy
Mzc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdT
aGFwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUu
aApAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAKICAgICBGbG9hdFJlY3QgY29tcHV0ZU1hcmtl
ckJvdW5kaW5nQm94KGNvbnN0IFNWR0JvdW5kaW5nQm94Q29tcHV0YXRpb246OkRlY29yYXRpb25P
cHRpb25zJikgY29uc3Q7CiAKLSAgICB2b2lkIGFwcGx5VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9u
TWF0cml4JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94
LCBPcHRpb25TZXQ8UmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbj4gPSBSZW5k
ZXJTdHlsZTo6YWxsVHJhbnNmb3JtT3BlcmF0aW9ucykgY29uc3Qgb3ZlcnJpZGU7CisgICAgdm9p
ZCBhcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IFJlbmRlclN0eWxl
JiwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCwgT3B0aW9uU2V0PFJlbmRlclN0eWxlOjpU
cmFuc2Zvcm1PcGVyYXRpb25PcHRpb24+ID0gUmVuZGVyU3R5bGU6OmFsbFRyYW5zZm9ybU9wZXJh
dGlvbnMpIGNvbnN0IGZpbmFsOwogCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBlbGVtZW50KCkgY29u
c3QgPSBkZWxldGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmNwcAppbmRleCA5MDMxMjJi
ZTk3Yzc1MWEzZDUyYTk0ZTc3ZjhjYTc1ZjYxNDRjMTk1Li5iMDBmYjUwYWE5ZTAwMDE3OTdmYzk1
NTA4NTg2YTZiMjE0MDc3Zjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5jcHAKQEAg
LTk3LDE1ICs5NywxMyBAQCB2b2lkIFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXI6OnVw
ZGF0ZUZyb21TdHlsZSgpCiB7CiAgICAgUmVuZGVyU1ZHQ29udGFpbmVyOjp1cGRhdGVGcm9tU3R5
bGUoKTsKIAotICAgIC8vIEZJWE1FOiBbTEJTRV0gVXBzdHJlYW0gQ1NTL1NWRyB0cmFuc2Zvcm0g
c3VwcG9ydAotICAgIC8vIGlmIChhc3NvY2lhdGVkVXNlRWxlbWVudChncmFwaGljc0VsZW1lbnQo
KSkpCi0gICAgLy8gICAgc2V0SGFzU1ZHVHJhbnNmb3JtKCk7CisgICAgaWYgKGFzc29jaWF0ZWRV
c2VFbGVtZW50KGdyYXBoaWNzRWxlbWVudCgpKSkKKyAgICAgICAgc2V0SGFzU1ZHVHJhbnNmb3Jt
KCk7CiB9CiAKIHZvaWQgUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcjo6YXBwbHlUcmFu
c2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgUmVuZGVyU3R5bGUm
IHN0eWxlLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBPcHRpb25TZXQ8UmVuZGVyU3R5
bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbj4gb3B0aW9ucykgY29uc3QKIHsKLSAgICAvLyBG
SVhNRTogW0xCU0VdIFVwc3RyZWFtIENTUy9TVkcgdHJhbnNmb3JtIHN1cHBvcnQKLSAgICBzdHls
ZS5hcHBseVRyYW5zZm9ybSh0cmFuc2Zvcm0sIGJvdW5kaW5nQm94LCBvcHRpb25zKTsKKyAgICBh
cHBseVNWR1RyYW5zZm9ybSh0cmFuc2Zvcm0sIGdyYXBoaWNzRWxlbWVudCgpLCBzdHlsZSwgYm91
bmRpbmdCb3gsIG9wdGlvbnMpOwogfQogCiB2b2lkIFJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250
YWluZXI6OnN0eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVy
U3R5bGUmIG5ld1N0eWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBo
aWNzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNw
cAppbmRleCBlMmNkMTM0Mjg4OGFhOGIyNDY4N2ZjMjg3MjE1Y2E5MjBhZmE0YjZjLi5mNzUxMjY1
NDBhMWE1MGE4Mjc5YmQ1ODFmMDM0YzJjNmM3ZGUwMTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHR3JhcGhpY3NFbGVtZW50LmNwcApAQCAtNzMsNiArNzMsMTUgQEAgQWZmaW5lVHJhbnNmb3Jt
IFNWR0dyYXBoaWNzRWxlbWVudDo6Z2V0U2NyZWVuQ1RNKFN0eWxlVXBkYXRlU3RyYXRlZ3kgc3R5
bGVVcGRhdGUKIAogQWZmaW5lVHJhbnNmb3JtIFNWR0dyYXBoaWNzRWxlbWVudDo6YW5pbWF0ZWRM
b2NhbFRyYW5zZm9ybSgpIGNvbnN0CiB7CisjaWYgRU5BQkxFKExBWUVSX0JBU0VEX1NWR19FTkdJ
TkUpCisgICAgLy8gTEJTRSBoYW5kbGVzIHRyYW5zZm9ybXMgdmlhIFJlbmRlckxheWVyLCBubyBu
ZWVkIHRvIGhhbmRsZSBDU1MgdHJhbnNmb3JtcyBoZXJlLgorICAgIGlmIChkb2N1bWVudCgpLnNl
dHRpbmdzKCkubGF5ZXJCYXNlZFNWR0VuZ2luZUVuYWJsZWQoKSkgeworICAgICAgICBpZiAobV9z
dXBwbGVtZW50YWxUcmFuc2Zvcm0pCisgICAgICAgICAgICByZXR1cm4gKm1fc3VwcGxlbWVudGFs
VHJhbnNmb3JtICogdHJhbnNmb3JtKCkuY29uY2F0ZW5hdGUoKTsKKyAgICAgICAgcmV0dXJuIHRy
YW5zZm9ybSgpLmNvbmNhdGVuYXRlKCk7CisgICAgfQorI2VuZGlmCisKICAgICBBZmZpbmVUcmFu
c2Zvcm0gbWF0cml4OwogCiAgICAgYXV0byogc3R5bGUgPSByZW5kZXJlcigpID8gJnJlbmRlcmVy
KCktPnN0eWxlKCkgOiBudWxscHRyOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>454559</attachid>
            <date>2022-03-13 16:43:47 -0700</date>
            <delta_ts>2022-03-13 16:44:33 -0700</delta_ts>
            <desc>Patch, v6</desc>
            <filename>bug-237711-20220313164346.patch</filename>
            <type>text/plain</type>
            <size>39414</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQ2MDVjYTVhM2IxODE1
OWRmMjE1ODQ5YWRhODU2ZTdmOWI0YjhhNy4uNDY4NGU5MmQ3ZjgxYzgyMzUyMWEwODFmOGE3YWUy
ODFjZjRiMzBkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNCBAQAorMjAyMi0wMy0xMyAgTmlr
b2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AaWdhbGlhLmNvbT4KKworICAgICAgICBVbmlm
eSAndHJhbnNmb3JtLWJveCcgcmVmZXJlbmNlIGJveCBjb21wdXRhdGlvbgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM3NTU0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ3VycmVudGx5IHRoZSBjb2RlIHRv
IGNvbXB1dGUgdGhlIHJlZmVyZW5jZSBib3gsIGFjY29yZGluZyB0byB0aGUgQ1NTICd0cmFuc2Zv
cm0tYm94JworICAgICAgICBwcm9wZXJ0eSBpcyBzcHJpbmtsZWQgb3ZlciB2YXJpb3VzIHBsYWNl
czogQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLCBTVkdSZW5kZXJTdXBwb3J0LAorICAgICAg
ICBSZW5kZXJCb3gsIHBhcnRzIGluIFJlbmRlckxheWVyLgorCisgICAgICAgIENsZWFudXAgYW5k
IHVuaWZ5IHRoZSBjb2RlIGluIGEgc2luZ2xlIHBsYWNlOiBhIG5ldyAncmVmZXJlbmNlQm94UmVj
dCgpJyAgbWV0aG9kIGltcGxlbWVudGluZworICAgICAgICB0aGUgY29tcHV0YXRpb24gZm9yIGJv
dGggU1ZHL0hUTUwsIHdoZXJlIHRoZSBTVkcgY29kZSBsaXZlcyBpbiBSZW5kZXJFbGVtZW50ICh0
aGUgb25seSBzaGFyZWQKKyAgICAgICAgYmFzZSBjbGFzcyBiZXR3ZWVuIGxlZ2FjeSBTVkcvTEJT
RSkgYW5kIHRoZSBIVE1MIGNvZGUgaW4gUmVuZGVyQm94LiBUaGUgSFRNTC9DU1MgaW1wbGVtZW50
YXRpb24KKyAgICAgICAgd2FzIGFscmVhZHkgY29udGFpbmVkIGluIFJlbmRlckJveDo6cmVmZXJl
bmNlQm94KCkgYW5kIHdhcyByZW5hbWVkIHRvIHJlZmVyZW5jZUJveFJlY3QoKSB0byBmb2xsb3cK
KyAgICAgICAgdGhlIG5hbWluZyBjb252ZW50aW9uIGZvciB0aGUgb3RoZXIgQ1NTIGJveCBnZW9l
bXRyeSBoZWxwZXJzIHN1Y2ggYXMgY29udGVudEJveFJlY3QoKSwKKyAgICAgICAgYm9yZGVyQm94
UmVjdCgpLCBldGMuCisKKyAgICAgICAgRm9yIFNWR3MgbmVlZHMgcmVmZXJlbmNlQm94UmVjdCgp
IG5lZWRzIHRvIHJldHVybiBhIEZsb2F0UmVjdCwgd2hlcmVhcyBmb3IgQ1NTL0hUTUwgTGF5b3V0
UmVjdAorICAgICAgICBpcyB0aGUgcmlnaHQgY2hvaWNlLiBJbnRyb2R1Y2UgYSAnRmxvYXRPckxh
eW91dFJlY3QnIGhlbHBlciB0aGF0IGNhbiBiZSB1c2VkIGFzIHJldHVybiB2YWx1ZS9hcmd1bWVu
dAorICAgICAgICBpbi90byBmdW5jdGlvbnMgdGhhdCBlaXRoZXIgcmV0dXJuL25lZWQgYSBGbG9h
dFJlY3Qgb3IgYSBMYXlvdXRSZWN0LCBkZXBlbmRpbmcgb24gdGhlIGNvbnRleHQuCisKKyAgICAg
ICAgJ0Zsb2F0T3JMYXlvdXRSZWN0JyBob2xkcyBhIHZhcmlhbnQ8RmxvYXRSZWN0LCBMYXlvdXRS
ZWN0PiBhbmQgb2ZmZXJzIGNvbnZlbmllbmNlIGZ1bmN0aW9ucworICAgICAgICB0byBzaW1wbGlm
eSBjb21tb24gb3BlcmF0aW9ucywgZS5nLiBvcGVyYXRvciBGbG9hdFJlY3QoKSB0byBhY2Nlc3Mg
dGhlIHN0b3JlZCBGbG9hdFJlY3QsIG9yIGNvbnZlcnQKKyAgICAgICAgdGhlIHN0b3JlZCBMYXlv
dXRSZWN0IGludG8gYSBGbG9hdFJlY3QgKHdpdGhvdXQgYXBwbHlpbmcgcGl4ZWwgc25hcHBpbmcp
LiBGdXJ0aGVybW9yZSBpdCBvZmZlcnMKKyAgICAgICAgYSAncmVjdEZvclBhaW50aW5nKGRldmlj
ZVNjYWxlRmFjdG9yKScgbWV0aG9kLCB0aGF0IGVpdGhlciByZXR1cm5zIHRoZSBzdG9yZWQgRmxv
YXRSZWN0LCBvciBwaXhlbC1zbmFwcworICAgICAgICB0aGUgc3RvcmVkIExheW91dFJlY3QgYW5k
IHJldHVybnMgYSBuZXcgZGV2aWNlLXBpeGVsIGFsaWduZWQgRmxvYXRSZWN0LiBUaGUgbmFtZSAn
cmVjdEZvclBhaW50aW5nJworICAgICAgICBkb2VzIG5vdCBjb250YWluIHRoZSB0ZXJtICdQaXhl
bFNuYXBwaW5nJyBvbiBwdXJwb3NlLCBzaW5jZSB0aGUgaW50ZW5kZWQgdXNhZ2UgaXMgaW4gYWxs
IHBsYWNlcyB0aGF0CisgICAgICAgIGN1cnJlbnRseSBhcHBseSBwaXhlbC1zbmFwcGluZywgdG8g
ZWFzaWx5IGRpc2FibGUgdGhhdCBvcGVyYXRpb24gaW4gU1ZHIHN1YnRyZWVzLgorCisgICAgICAg
IENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMsIG5vIGNoYW5nZSBpbiBiZWhhdmlvdXIuCisKKyAg
ICAgICAgKiBIZWFkZXJzLmNtYWtlOiBBZGQgRmxvYXRPckxheW91dFJlY3QuaCB0byBidWlsZC4K
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorICAg
ICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y29tcHV0ZWRUcmFuc2Zvcm0pOiBVc2UgdGhlIHJlbmRlcmVycyB0cmFuc2Zvcm1SZWZl
cmVuY2VCb3hSZWN0KCkgaW5zdGVhZCBvZiB0aGUgc3RhdGljIGhlbHBlciBmdW5jdGlvbiB0cmFu
c2Zvcm1SZWZlcmVuY2VCb3goKS4KKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRy
YWN0b3I6OnZhbHVlRm9yUHJvcGVydHlJblN0eWxlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3Jl
Ojp0cmFuc2Zvcm1SZWZlcmVuY2VCb3gpOiBEZWxldGVkLiAgUmVuZGVyRWxlbWVudDo6dHJhbnNm
b3JtUmVmZXJlbmNlQm94UmVjdCgpIHByb3ZpZGVzIHRoZSBzYW1lIGxvZ2ljIGluIGEgZ2VuZXJp
YyB3YXkuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRPckxheW91dFJlY3QuaDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpGbG9hdE9yTGF5b3V0UmVjdDo6RmxvYXRPckxheW91
dFJlY3QpOiBBZGQgY29uc3RydWN0b3JzIGZvciBpbXBsaWNpdCBjb25zdHJ1Y3Rpb24gZnJvbSBl
aXRoZXIgTGF5b3V0UmVjdCBvciBGbG9hdFJlY3QuCisgICAgICAgIChXZWJDb3JlOjpGbG9hdE9y
TGF5b3V0UmVjdDo6b3BlcmF0b3IgRmxvYXRSZWN0IGNvbnN0KTogUmV0dXJucyB0aGUgc3RvcmVk
IEZsb2F0UmVjdCwgb3IgY29udmVydHMgdGhlIHN0b3JlZCBMYXlvdXRSZWN0IGludG8gYSBGbG9h
dFJlY3QgKG5vIHBpeGVsIHNuYXBwaW5nISkuCisgICAgICAgIChXZWJDb3JlOjpGbG9hdE9yTGF5
b3V0UmVjdDo6cmVjdEZvclBhaW50aW5nIGNvbnN0KTogUmV0dXJucyB0aGUgc3RvcmVkIEZsb2F0
UmVjdCBhcy1pcywgb3IgYXBwbGllcyBwaXhlbC1zbmFwcGluZyBvbiB0aGUgc3RvcmVkIExheW91
dFJlY3QsIHJldHVybmluZyBhIGRldmljZS1waXhlbCBhbGlnbmVkIEZsb2F0UmVjdC4KKyAgICAg
ICAgKFdlYkNvcmU6OkZsb2F0T3JMYXlvdXRSZWN0Ojptb3ZlKTogSGVscGVyIG1ldGhvZCB0byBz
aW1wbGlmeSBSZW5kZXJMYXllciBjYWxsLXNpdGVzLiBDYWxscyBtb3ZlKCkgb24gZWl0aGVyIHRo
ZSBzdG9yZWQgRmxvYXRSZWN0IG9yIExheW91dFJlY3QuCisgICAgICAgIChXZWJDb3JlOjpGbG9h
dE9yTGF5b3V0UmVjdDo6aXNGbG9hdFJlY3QgY29uc3QpOiBDaGVja3MgaWYgdGhlIHZhcmlhbnQg
aG9sZHMgYSBGbG9hdFJlY3QsIGlmIG5vdCBpdCBpcyBndWFyYW50ZWVkIHRvIGhvbGQgYSBMYXlv
dXRSZWN0LgorICAgICAgICAoV2ViQ29yZTo6RmxvYXRPckxheW91dFJlY3Q6OmZsb2F0UmVjdCBj
b25zdCk6IFJlYWQtb25seSBjb25zdCBhY2NjZXNvci4KKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0
T3JMYXlvdXRSZWN0OjpmbG9hdFJlY3QpOiBNdXRhYmxlIGFjY2Vzc29yLCB1c2VkIGJ5IG1vdmUo
KS4KKyAgICAgICAgKFdlYkNvcmU6OkZsb2F0T3JMYXlvdXRSZWN0Ojppc0xheW91dFJlY3QgY29u
c3QpOiBDaGVja3MgaWYgdGhlIHZhcmlhbnQgaG9sZHMgYSBMYXlvdXRSZWN0LCBpZiBub3QgaXQg
aXMgZ3VhcmFudGVlZCB0byBob2xkIGEgRmxvYXRSZWN0LgorICAgICAgICAoV2ViQ29yZTo6Rmxv
YXRPckxheW91dFJlY3Q6OmxheW91dFJlY3QgY29uc3QpOiBSZWFkLW9ubHkgY29uc3QgYWNjY2Vz
b3IuCisgICAgICAgIChXZWJDb3JlOjpGbG9hdE9yTGF5b3V0UmVjdDo6bGF5b3V0UmVjdCk6IE11
dGFibGUgYWNjZXNzb3IsIHVzZWQgYnkgbW92ZSgpLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpyZWZlcmVuY2VCb3hSZWN0
IGNvbnN0KTogUmVuYW1lIHJlZmVyZW5jZUJveCgpIHRvIHJlZmVyZW5jZUJveFJlY3QoKSBhbmQg
cmV0dXJuIEZsb2F0T3JMYXlvdXRSZWN0IGluc3RlYWQgb2YgTGF5b3V0UmVjdC4KKyAgICAgICAg
TEJTRSB3YW50cyB0byByZS11c2UgdGhlIGxvZ2ljIGJ1dCB3aXRob3V0IHBpeGVsIHNuYXBwaW5n
IHdpdGhpbiB0aGUgU1ZHIHJlbmRlciB0cmVlLiBBbGwgY2FsbGVycyB3ZXJlIGFkYXB0ZWQgdG8g
dGhlIG5ldyByZXR1cm4gdHlwZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6aGl0VGVz
dENsaXBQYXRoIGNvbnN0KTogQWRhcHQgdG8gcmVmZXJlbmNlQm94KCkgLT4gcmVmZXJlbmNlQm94
UmVjdCgpIHJlbmFtaW5nIGFuZCByZXR1cm4gdHlwZSBjaGFuZ2UuCisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3g6OnJlZmVyZW5jZUJveCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckJveC5oOiBBZGFwdCB0byByZWZlcmVuY2VCb3goKSAtPiByZWZlcmVuY2VC
b3hSZWN0KCkgcmVuYW1pbmcgYW5kIHJldHVybiB0eXBlIGNoYW5nZS4KKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50
OjpyZWZlcmVuY2VCb3hSZWN0IGNvbnN0KTogQWRkIHJlZmVyZW5jZUJveFJlY3QoKSBpbXBsZW1l
bnRhdGlvbiBmb3IgU1ZHIHJlbmRlcmVycy4gVGhlIGNvbW1vbiBiYXNlLWNsYXNzIGZvcgorICAg
ICAgICBhbGwgU1ZHIHJlbmRlcmVycyBpcyBSZW5kZXJFbGVtZW50IGluIHRoZSBsZWdhY3kgU1ZH
IGVuZ2luZSBhbmQgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCBpbiBMQlNFLiBUbyBzaGFyZSB0aGUg
Y29kZSBiZXR3ZWVuIGJvdGggU1ZHCisgICAgICAgIGltcGxlbWVudGF0aW9ucyBpdCBoYXMgdG8g
YmUgcGxhY2VkIGluIFJlbmRlckVsZW1lbnQgLS0gdG8gYmUgbW92ZWQgdG8gUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdCwgb25jZSBMQlNFIGlzIHRoZSBvbmx5IFNWRyBlbmdpbmUuCisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVsZW1l
bnQ6OnRyYW5zZm9ybVJlZmVyZW5jZUJveFJlY3QgY29uc3QpOiBBZGQgbmV3IGhlbHBlciBmdW5j
dGlvbiB3aGljaCBpbnZva2VzIHJlZmVyZW5jZUJveFJlY3QoKSB1c2luZworICAgICAgICB0cmFu
c2Zvcm1Cb3hUb0NTU0JveFR5cGUoc3R5bGUoKS50cmFuc2Zvcm1Cb3goKSkuIFdoZW5ldmVyIHRy
YW5zZm9ybS1ib3ggc3VwcG9ydCBpcyBuZWNlc3NhcnksIHRoaXMgbWV0aG9kIHNoYWxsIGJlIHVz
ZWQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDogVXNlIHRoZSBuZXcgdHJh
bnNmb3JtUmVmZXJlbmNlQm94UmVjdCgpIHdoZXJlIHBvc3NpYmxlLCBhZGFwdCB0byByZXR1cm4g
dHlwZSBjaGFuZ2VzLCByZW1vdmUgbWFudWFsIHBpeGVsIHNuYXBwaW5nLgorICAgICAgICAoV2Vi
Q29yZTo6Y29tcHV0ZVJlZmVyZW5jZUJveCk6IEFkYXB0IHRvIHJlZmVyZW5jZUJveCgpIC0+IHJl
ZmVyZW5jZUJveFJlY3QoKSByZW5hbWluZyBhbmQgcmV0dXJuIHR5cGUgY2hhbmdlLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZVRyYW5zZm9ybSk6IFNpbXBsaWZ5IHJlZmVy
ZW5jZSBib3ggY29tcHV0YXRpb24sIGFuZCBhdm9pZCBtYW51YWwgcGl4ZWwgc25hcHBpbmc6IHV0
aWxpemUgdHJhbnNmb3JtUmVmZXJlbmNlQm94UmVjdCgpICsgcmVjdEZvclBhaW50aW5nKCkuCisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y3VycmVudFRyYW5zZm9ybSBjb25zdCk6IERp
dHRvLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBlcnNwZWN0aXZlVHJhbnNmb3Jt
IGNvbnN0KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGVyc3BlY3Rp
dmVPcmlnaW4gY29uc3QpOiBBZGQgRklYTUUsIHRoaXMgYWx3YXlzIHVzZXMgdGhlIGJvcmRlciBi
b3ggcmVjdCBhcyBib3VuZGluZ0JveCBmb3IgbGVuZ3RoIHJlc29sdmluZzogaXQgaWdub3JlcyB0
cmFuc2Zvcm0tYm94LgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNvbXB1dGVDbGlw
UGF0aCBjb25zdCk6IEFkYXB0IHRvIGNvbXB1dGVSZWZlcmVuY2VCb3goKSBjaGFuZ2VzLgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNldHVwQ2xpcFBhdGgpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OmNvbXB1dGVSZWZlcmVuY2VSZWN0RnJvbUJveCk6IERlbGV0ZWQuCisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1JlbmRlclN1cHBvcnQ6OnRyYW5zZm9ybVJlZmVyZW5jZUJveCk6IERlbGV0ZWQuIFJl
bmRlckVsZW1lbnQ6OnRyYW5zZm9ybVJlZmVyZW5jZUJveFJlY3QoKSBwcm92aWRlcyB0aGUgc2Ft
ZSBsb2dpYyBpbiBhIGdlbmVyaWMgd2F5LgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVu
ZGVyU3VwcG9ydC5oOiBHZXQgcmlkIG9mIHRyYW5zZm9ybVJlZmVyZW5jZUJveCgpLgorICAgICAg
ICAqIHN2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3Jh
cGhpY3NFbGVtZW50OjphbmltYXRlZExvY2FsVHJhbnNmb3JtIGNvbnN0KTogVXNlIHRoZSByZW5k
ZXJlcnMgdHJhbnNmb3JtUmVmZXJlbmNlQm94UmVjdCgpIGluc3RlYWQgb2YgU1ZHUmVuZGVyU3Vw
cG9ydDo6dHJhbnNmb3JtUmVmZXJlbmNlQm94KCkuCisKKzIwMjItMDMtMTAgIE5pa29sYXMgWmlt
bWVybWFubiAgPG56aW1tZXJtYW5uQGlnYWxpYS5jb20+CisKKyAgICAgICAgVW5pZnkgJ3RyYW5z
Zm9ybS1ib3gnIHJlZmVyZW5jZSBib3ggY29tcHV0YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzU1NAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRseSB0aGUgY29kZSB0byBjb21wdXRl
IHRoZSByZWZlcmVuY2UgYm94LCBhY2NvcmRpbmcgdG8gdGhlIENTUyAndHJhbnNmb3JtLWJveCcK
KyAgICAgICAgcHJvcGVydHkgaXMgc3ByaW5rbGVkIG92ZXIgdmFyaW91cyBwbGFjZXM6IENTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbiwgU1ZHUmVuZGVyU3VwcG9ydCwKKyAgICAgICAgUmVuZGVy
Qm94LCBwYXJ0cyBpbiBSZW5kZXJMYXllci4KKworICAgICAgICBDbGVhbnVwIGFuZCB1bmlmeSB0
aGUgY29kZSBpbiBhIHNpbmdsZSBwbGFjZTogYSBuZXcgJ3JlZmVyZW5jZUJveFJlY3QoKScgIG1l
dGhvZCBpbXBsZW1lbnRpbmcKKyAgICAgICAgdGhlIGNvbXB1dGF0aW9uIGZvciBib3RoIFNWRy9I
VE1MLCB3aGVyZSB0aGUgU1ZHIGNvZGUgbGl2ZXMgaW4gUmVuZGVyRWxlbWVudCAodGhlIG9ubHkg
c2hhcmVkCisgICAgICAgIGJhc2UgY2xhc3MgYmV0d2VlbiBsZWdhY3kgU1ZHL0xCU0UpIGFuZCB0
aGUgSFRNTCBjb2RlIGluIFJlbmRlckJveC4gVGhlIEhUTUwvQ1NTIGltcGxlbWVudGF0aW9uCisg
ICAgICAgIHdhcyBhbHJlYWR5IGNvbnRhaW5lZCBpbiBSZW5kZXJCb3g6OnJlZmVyZW5jZUJveCgp
IGFuZCB3YXMgcmVuYW1lZCB0byByZWZlcmVuY2VCb3hSZWN0KCkgdG8gZm9sbG93CisgICAgICAg
IHRoZSBuYW1pbmcgY29udmVudGlvbiBmb3IgdGhlIG90aGVyIENTUyBib3ggZ2VvZW10cnkgaGVs
cGVycyBzdWNoIGFzIGNvbnRlbnRCb3hSZWN0KCksCisgICAgICAgIGJvcmRlckJveFJlY3QoKSwg
ZXRjLgorCisgICAgICAgIFJlbW92ZSBjb2RlIGZyb20gU1ZHUmVuZGVyU3VwcG9ydC9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24gdGhhdCBjYW4gbm93IHVzZSB0aGUgc2hhcmVkIGxvZ2ljLgor
CisgICAgICAgIENvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMsIG5vIGNoYW5nZSBpbiBiZWhhdmlv
dXIuCisKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNvbXB1dGVkVHJhbnNmb3JtKTogVXNlIHRoZSByZW5kZXJlcnMgdHJh
bnNmb3JtUmVmZXJlbmNlQm94UmVjdCgpIGluc3RlYWQgb2YgdGhlIHN0YXRpYyBoZWxwZXIgZnVu
Y3Rpb24gdHJhbnNmb3JtUmVmZXJlbmNlQm94KCkuCisgICAgICAgIChXZWJDb3JlOjpDb21wdXRl
ZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvclByb3BlcnR5SW5TdHlsZSk6IERpdHRvLgorICAgICAg
ICAoV2ViQ29yZTo6dHJhbnNmb3JtUmVmZXJlbmNlQm94KTogRGVsZXRlZC4gUmVuZGVyRWxlbWVu
dDo6dHJhbnNmb3JtUmVmZXJlbmNlQm94UmVjdCgpIHByb3ZpZGVzIHRoZSBzYW1lIGxvZ2ljIGlu
IGEgZ2VuZXJpYyB3YXkuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnJlZmVyZW5jZUJveFJlY3QgY29uc3QpOiBSZW5hbWUg
cmVmZXJlbmNlQm94KCkgdG8gcmVmZXJlbmNlQm94UmVjdCgpIGFuZCByZXR1cm4gRmxvYXRSZWN0
IGluc3RlYWQgb2YgTGF5b3V0UmVjdC4KKyAgICAgICAgTEJTRSB3YW50cyB0byByZS11c2UgdGhl
IGxvZ2ljIGJ1dCB3aXRob3V0IHBpeGVsIHNuYXBwaW5nIHdpdGhpbiB0aGUgU1ZHIHJlbmRlciB0
cmVlLiBBbGwgY2FsbGVycyB3ZXJlIGFkYXB0ZWQgdG8gdGhlIG5ldyByZXR1cm4gdHlwZS4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6aGl0VGVzdENsaXBQYXRoIGNvbnN0KTogQWRhcHQg
dG8gcmVmZXJlbmNlQm94KCkgLT4gcmVmZXJlbmNlQm94UmVjdCgpIHJlbmFtaW5nLgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94OjpyZWZlcmVuY2VCb3ggY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3guaDogQWRhcHQgdG8gcmVmZXJlbmNlQm94KCkgLT4g
cmVmZXJlbmNlQm94UmVjdCgpIHJlbmFtaW5nCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6cmVmZXJlbmNlQm94
UmVjdCBjb25zdCk6IEFkZCByZWZlcmVuY2VCb3hSZWN0KCkgaW1wbGVtZW50YXRpb24gZm9yIFNW
RyByZW5kZXJlcnMuIFRoZSBjb21tb24gYmFzZS1jbGFzcyBmb3IKKyAgICAgICAgYWxsIFNWRyBy
ZW5kZXJlcnMgaXMgUmVuZGVyRWxlbWVudCBpbiB0aGUgbGVnYWN5IFNWRyBlbmdpbmUgYW5kIFJl
bmRlckxheWVyTW9kZWxPYmplY3QgaW4gTEJTRS4gVG8gc2hhcmUgdGhlIGNvZGUgYmV0d2VlbiBi
b3RoIFNWRworICAgICAgICBpbXBsZW1lbnRhdGlvbnMgaXQgaGFzIHRvIGJlIHBsYWNlZCBpbiBS
ZW5kZXJFbGVtZW50IC0tIHRvIGJlIG1vdmVkIHRvIFJlbmRlckxheWVyTW9kZWxPYmplY3QsIG9u
Y2UgTEJTRSBpcyB0aGUgb25seSBTVkcgZW5naW5lLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJFbGVtZW50Ojp0cmFuc2Zvcm1S
ZWZlcmVuY2VCb3hSZWN0IGNvbnN0KTogQWRkIG5ldyBoZWxwZXIgZnVuY3Rpb24gd2hpY2ggaW52
b2tlcyByZWZlcmVuY2VCb3hSZWN0KCkgdXNpbmcKKyAgICAgICAgdHJhbnNmb3JtQm94VG9DU1NC
b3hUeXBlKHN0eWxlKCkudHJhbnNmb3JtQm94KCkpLiBXaGVuZXZlciB0cmFuc2Zvcm0tYm94IHN1
cHBvcnQgaXMgbmVjZXNzYXJ5LCB0aGlzIG1ldGhvZCBzaGFsbCBiZSB1c2VkLgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6IFVzZSB0aGUgbmV3IHRyYW5zZm9ybVJlZmVyZW5j
ZUJveFJlY3QoKSB3aGVyZSBwb3NzaWJsZS4KKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVSZWZl
cmVuY2VCb3gpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZVRyYW5zZm9y
bSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y3VycmVudFRyYW5zZm9ybSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6cGVyc3BlY3RpdmVUcmFuc2Zvcm0g
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnBlcnNwZWN0aXZlT3JpZ2lu
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpjb21wdXRlQ2xpcFBhdGgg
Y29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNldHVwQ2xpcFBhdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZVJlZmVyZW5jZVJlY3RGcm9tQm94KTogRGVsZXRlZC4K
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUmVuZGVyU3VwcG9ydDo6dHJhbnNmb3JtUmVmZXJlbmNlQm94KTogRGVsZXRl
ZC4gUmVuZGVyRWxlbWVudDo6dHJhbnNmb3JtUmVmZXJlbmNlQm94UmVjdCgpIHByb3ZpZGVzIHRo
ZSBzYW1lIGxvZ2ljIGluIGEgZ2VuZXJpYyB3YXkuCisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9T
VkdSZW5kZXJTdXBwb3J0Lmg6IERpdHRvLgorICAgICAgICAqIHN2Zy9TVkdHcmFwaGljc0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhcGhpY3NFbGVtZW50OjphbmltYXRlZExv
Y2FsVHJhbnNmb3JtIGNvbnN0KTogVXNlIHRoZSByZW5kZXJlcnMgdHJhbnNmb3JtUmVmZXJlbmNl
Qm94UmVjdCgpIGluc3RlYWQgb2YgU1ZHUmVuZGVyU3VwcG9ydDo6dHJhbnNmb3JtUmVmZXJlbmNl
Qm94KCkuCisKIDIwMjItMDMtMTIgIEplYW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4K
IAogICAgICAgICBTYWZhcmkgcHJvZHVjZXMgc2NyYW1ibGVkIG91dHB1dCBmb3Igc29tZSB3ZWJt
IHZpZGVvcyB3aXRoIHZwOCBjb2RlYy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRl
cnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCmluZGV4IDczNjQ0MmEwOGE3
NDUwMGEzNTJmMDRjMmUxMDZkOGM0MWU3YTRmYzUuLmUwZjgyMTg1Yjg3YjQ0YmQ4MzIzZmQxMmIz
OTA4ZTFmZjlkOTk1NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UK
KysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFrZQpAQCAtMTQ1MCw2ICsxNDUwLDcgQEAg
c2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBsYXRmb3JtL2dyYXBo
aWNzL0Rpc3BsYXlVcGRhdGUuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0RyYXdHbHlwaHNSZWNv
cmRlci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRMaW5lLmgKKyAgICBwbGF0Zm9ybS9n
cmFwaGljcy9GbG9hdE9yTGF5b3V0UmVjdC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQ
b2ludC5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludDNELmgKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9GbG9hdFF1YWQuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGU2NzRiYjYxZTk4NTcxM2Y2OTIxNDdiN2FlMzQ3
OWVlOGZlMTliZmMuLjUxMGIzYWRjNmU3M2IyZGJiMDEyMGNkMTE4ZmU2MjMxOWI3YTlkYWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTM5MjcsNiArMzkyNyw3IEBACiAJCUIyNzUzNTY3MEIwNTM4MTQwMDJDRTY0RiAvKiBDb2xv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1
MzkwQjA1MzgxNDAwMkNFNjRGIC8qIENvbG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQjI3NTM1NjkwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0
UG9pbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIy
NzUzNTNCMEIwNTM4MTQwMDJDRTY0RiAvKiBGbG9hdFBvaW50LmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQjI3NTM1NkIwQjA1MzgxNDAwMkNFNjRG
IC8qIEZsb2F0UmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQjI3NTM1M0QwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UmVjdC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUIzNzczNDZCMEIwNDE5MTY2
MDJDRTY0RiAvKiBGbG9hdE9yTGF5b3V0UmVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1M0MwQjA1MzgxNTAwMkNFNjRGIC8qIEZsb2F0T3JM
YXlvdXRSZWN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQjI3NTM1NkQwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0U2l6ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1M0YwQjA1MzgxNDAwMkNF
NjRGIC8qIEZsb2F0U2l6ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUIyNzUzNTZFMEIwNTM4MTQwMDJDRTY0RiAvKiBJY29uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjc1MzU0MDBCMDUzODE0MDAy
Q0U2NEYgLyogSWNvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUIyNzUzNTcwMEIwNTM4MTQwMDJDRTY0RiAvKiBJbWFnZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI3NTM1NDIwQjA1MzgxNDAwMkNF
NjRGIC8qIEltYWdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTE0ODcwLDYgKzE0ODcxLDcgQEAKIAkJQjI3NTM1M0IwQjA1MzgxNDAwMkNFNjRG
IC8qIEZsb2F0UG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZsb2F0
UG9pbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1M0MwQjA1MzgxNDAw
MkNFNjRGIC8qIEZsb2F0UmVjdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRmxvYXRSZWN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1
M0QwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0UmVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRmxvYXRSZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIy
NzUzNTNDMEIwNTM4MTUwMDJDRTY0RiAvKiBGbG9hdE9yTGF5b3V0UmVjdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmxvYXRPckxheW91dFJlY3QuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1M0UwQjA1MzgxNDAwMkNFNjRGIC8qIEZsb2F0U2l6ZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmxvYXRTaXplLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3NTM1M0YwQjA1MzgxNDAwMkNFNjRGIC8q
IEZsb2F0U2l6ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmxvYXRTaXpl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyNzUzNTQwMEIwNTM4MTQwMDJDRTY0
RiAvKiBJY29uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJY29uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yODk4Miw2ICsyODk4NCw3IEBACiAJCQkJMEZE
NzIzODAwRUM4QkQ5MzAwQ0E1REQ3IC8qIEZsb2F0UXVhZC5oICovLAogCQkJCUIyNzUzNTNDMEIw
NTM4MTQwMDJDRTY0RiAvKiBGbG9hdFJlY3QuY3BwICovLAogCQkJCUIyNzUzNTNEMEIwNTM4MTQw
MDJDRTY0RiAvKiBGbG9hdFJlY3QuaCAqLywKKwkJCQlCMjc1MzUzQzBCMDUzODE1MDAyQ0U2NEYg
LyogRmxvYXRPckxheW91dFJlY3QuaCAqLywKIAkJCQk2RTBFNTY5OTE4M0JGRkU2MDBFMEU4RDUg
LyogRmxvYXRSb3VuZGVkUmVjdC5jcHAgKi8sCiAJCQkJNkUwRTU2OUExODNCRkZFNjAwRTBFOEQ1
IC8qIEZsb2F0Um91bmRlZFJlY3QuaCAqLywKIAkJCQlCMjc1MzUzRTBCMDUzODE0MDAyQ0U2NEYg
LyogRmxvYXRTaXplLmNwcCAqLywKQEAgLTM0NjY1LDYgKzM0NjY4LDcgQEAKIAkJCQk2RUM0ODBB
MjE2RUE2MzhBMDBBNDhEQ0IgLyogRmxvYXRQb2x5Z29uLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkQ3MjM4MjBFQzhCRDkzMDBDQTVERDcgLyogRmxvYXRRdWFkLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCMjc1MzU2QjBCMDUzODE0MDAyQ0U2NEYgLyogRmxvYXRSZWN0LmggaW4gSGVhZGVycyAqLywK
KwkJCQlCMzc3MzQ2QjBCMDQxOTE2NjAyQ0U2NEYgLyogRmxvYXRPckxheW91dFJlY3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTZFMEU1NjlDMTgzQkZGRTYwMEUwRThENSAvKiBGbG9hdFJvdW5kZWRS
ZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjc1MzU2RDBCMDUzODE0MDAyQ0U2NEYgLyogRmxv
YXRTaXplLmggaW4gSGVhZGVycyAqLywKIAkJCQk1OENEMzVDQjE4RUI0QzM5MDBCOUYzQUMgLyog
RmxvYXRTaXplSGFzaC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IGFjZWJkYjM0NjRiZmUxZjI3
NWRlNGFiMDhiYTE4ZGY4NTY4ZWJkODMuLmM5NzNjNWE0ZTUwYjBjNjNlMWI0NDM1MWRmNjU2Mjhm
MjdhNjE2YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwCkBAIC01NjAsMTcgKzU2MCw2IEBAIHN0YXRpYyBMYXlvdXRSZWN0IHNp
emluZ0JveChSZW5kZXJPYmplY3QmIHJlbmRlcmVyKQogICAgIHJldHVybiBib3guc3R5bGUoKS5i
b3hTaXppbmcoKSA9PSBCb3hTaXppbmc6OkJvcmRlckJveCA/IGJveC5ib3JkZXJCb3hSZWN0KCkg
OiBib3guY29tcHV0ZWRDU1NDb250ZW50Qm94UmVjdCgpOwogfQogCi1zdGF0aWMgRmxvYXRSZWN0
IHRyYW5zZm9ybVJlZmVyZW5jZUJveChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IFJl
bmRlckVsZW1lbnQmIHJlbmRlcmVyKQotewotICAgIGlmIChpczxSZW5kZXJCb3g+KHJlbmRlcmVy
KSkKLSAgICAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlckJveD4ocmVuZGVyZXIpLnJlZmVyZW5j
ZUJveCh0cmFuc2Zvcm1Cb3hUb0NTU0JveFR5cGUoc3R5bGUudHJhbnNmb3JtQm94KCkpKTsKLQot
ICAgIGlmIChpczxTVkdFbGVtZW50PihyZW5kZXJlci5lbGVtZW50KCkpKQotICAgICAgICByZXR1
cm4gU1ZHUmVuZGVyU3VwcG9ydDo6dHJhbnNmb3JtUmVmZXJlbmNlQm94KHJlbmRlcmVyLCBkb3du
Y2FzdDxTVkdFbGVtZW50PigqcmVuZGVyZXIuZWxlbWVudCgpKSwgc3R5bGUpOwotCi0gICAgcmV0
dXJuIHsgfTsKLX0KLQogc3RhdGljIFJlZjxDU1NGdW5jdGlvblZhbHVlPiBtYXRyaXhUcmFuc2Zv
cm1WYWx1ZShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGUpCiB7CiAgICAgUmVmUHRyPENTU0Z1bmN0aW9uVmFsdWU+IHRyYW5zZm9y
bVZhbHVlOwpAQCAtNjIzLDcgKzYxMiw3IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IGNvbXB1dGVk
VHJhbnNmb3JtKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBSZW5kZXJTdHlsCiAgICAg
ICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1
ZShDU1NWYWx1ZU5vbmUpOwogCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtOwot
ICAgIHN0eWxlLmFwcGx5VHJhbnNmb3JtKHRyYW5zZm9ybSwgdHJhbnNmb3JtUmVmZXJlbmNlQm94
KHN0eWxlLCAqcmVuZGVyZXIpLCB7IH0pOworICAgIHN0eWxlLmFwcGx5VHJhbnNmb3JtKHRyYW5z
Zm9ybSwgcmVuZGVyZXItPnRyYW5zZm9ybVJlZmVyZW5jZUJveFJlY3Qoc3R5bGUpLCB7IH0pOwog
ICAgIC8vIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGZsYXR0ZW4gdG8gYW4gYWZmaW5lIHRyYW5z
Zm9ybSBpZiBFTkFCTEUoM0RfVFJBTlNGT1JNUykgaXMgb2ZmLCBieSBkZXNpZ24uCiAKICAgICAv
LyBGSVhNRTogTmVlZCB0byBwcmludCBvdXQgaW5kaXZpZHVhbCBmdW5jdGlvbnMgKGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzkyNCkKQEAgLTM4NDAsNyArMzgyOSw3
IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JQcm9w
ZXJ0eUluU3R5bGUoY29uc3QgUmVuZGVyU3R5CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlQZXJz
cGVjdGl2ZU9yaWdpbjogewogICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0Ojpj
cmVhdGVTcGFjZVNlcGFyYXRlZCgpOwogICAgICAgICAgICAgaWYgKHJlbmRlcmVyKSB7Ci0gICAg
ICAgICAgICAgICAgYXV0byBib3ggPSB0cmFuc2Zvcm1SZWZlcmVuY2VCb3goc3R5bGUsICpyZW5k
ZXJlcik7CisgICAgICAgICAgICAgICAgRmxvYXRSZWN0IGJveCA9IHJlbmRlcmVyLT50cmFuc2Zv
cm1SZWZlcmVuY2VCb3hSZWN0KHN0eWxlKTsKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQo
em9vbUFkanVzdGVkUGl4ZWxWYWx1ZShtaW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUucGVyc3Bl
Y3RpdmVPcmlnaW5YKCksIGJveC53aWR0aCgpKSwgc3R5bGUpKTsKICAgICAgICAgICAgICAgICBs
aXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZShtaW5pbXVtVmFsdWVGb3JMZW5ndGgo
c3R5bGUucGVyc3BlY3RpdmVPcmlnaW5ZKCksIGJveC5oZWlnaHQoKSksIHN0eWxlKSk7CiAgICAg
ICAgICAgICB9IGVsc2UgewpAQCAtMzg5Niw3ICszODg1LDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBD
b21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvclByb3BlcnR5SW5TdHlsZShjb25zdCBSZW5k
ZXJTdHkKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5zZm9ybU9yaWdpbjogewogICAgICAg
ICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwog
ICAgICAgICAgICAgaWYgKHJlbmRlcmVyKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBib3ggPSB0
cmFuc2Zvcm1SZWZlcmVuY2VCb3goc3R5bGUsICpyZW5kZXJlcik7CisgICAgICAgICAgICAgICAg
RmxvYXRSZWN0IGJveCA9IHJlbmRlcmVyLT50cmFuc2Zvcm1SZWZlcmVuY2VCb3hSZWN0KHN0eWxl
KTsKICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoem9vbUFkanVzdGVkUGl4ZWxWYWx1ZSht
aW5pbXVtVmFsdWVGb3JMZW5ndGgoc3R5bGUudHJhbnNmb3JtT3JpZ2luWCgpLCBib3gud2lkdGgo
KSksIHN0eWxlKSk7CiAgICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKHpvb21BZGp1c3RlZFBp
eGVsVmFsdWUobWluaW11bVZhbHVlRm9yTGVuZ3RoKHN0eWxlLnRyYW5zZm9ybU9yaWdpblkoKSwg
Ym94LmhlaWdodCgpKSwgc3R5bGUpKTsKICAgICAgICAgICAgICAgICBpZiAoc3R5bGUudHJhbnNm
b3JtT3JpZ2luWigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRmxvYXRPckxheW91dFJlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0Zsb2F0T3JMYXlvdXRSZWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmI4ZmZjNDJiY2Y0NDMxMDY5MTcxYWIw
MWYzZDBhMjk2ZjVlNTI5OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0Zsb2F0T3JMYXlvdXRSZWN0LmgKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoYykgMjAyMiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkZsb2F0UmVjdC5o
IgorI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKKyNpbmNsdWRlIDxvcHRpb25hbD4KKyNpbmNsdWRl
IDx2YXJpYW50PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZsb2F0T3JMYXlvdXRS
ZWN0IHsKK3B1YmxpYzoKKyAgICBGbG9hdE9yTGF5b3V0UmVjdCgpID0gZGVmYXVsdDsKKworICAg
IEZsb2F0T3JMYXlvdXRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKKyAgICAgICAgOiBtX2Rh
dGEgeyByZWN0IH0KKyAgICB7CisgICAgfQorCisgICAgRmxvYXRPckxheW91dFJlY3QoY29uc3Qg
TGF5b3V0UmVjdCYgcmVjdCkKKyAgICAgICAgOiBtX2RhdGEgeyByZWN0IH0KKyAgICB7CisgICAg
fQorCisgICAgfkZsb2F0T3JMYXlvdXRSZWN0KCkgPSBkZWZhdWx0OworCisgICAgb3BlcmF0b3Ig
RmxvYXRSZWN0KCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChpc0Zsb2F0UmVjdCgpKQorICAg
ICAgICAgICAgcmV0dXJuIGZsb2F0UmVjdCgpOworICAgICAgICBBU1NFUlQoaXNMYXlvdXRSZWN0
KCkpOworICAgICAgICByZXR1cm4gbGF5b3V0UmVjdCgpOworICAgIH0KKworICAgIEZsb2F0UmVj
dCByZWN0Rm9yUGFpbnRpbmcoZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IpIGNvbnN0CisgICAgewor
ICAgICAgICBpZiAoaXNGbG9hdFJlY3QoKSkKKyAgICAgICAgICAgIHJldHVybiBmbG9hdFJlY3Qo
KTsKKyAgICAgICAgQVNTRVJUKGlzTGF5b3V0UmVjdCgpKTsKKyAgICAgICAgcmV0dXJuIHNuYXBS
ZWN0VG9EZXZpY2VQaXhlbHMobGF5b3V0UmVjdCgpLCBkZXZpY2VTY2FsZUZhY3Rvcik7CisgICAg
fQorCisgICAgLy8gQ29udmVuaWVuY2UgZnVuY3Rpb25zOgorICAgIC8vIFVzaW5nIG1vdmUoKSB0
aGUgbG9jYXRpb24gb2YgdGhlIHJlY3QgY2FuIGJlIGFsdGVyZWQsIHJlZ2FyZGxlc3Mgb2YgaXRz
IHR5cGUuCisgICAgdm9pZCBtb3ZlKGNvbnN0IExheW91dFNpemUmIHNpemUpCisgICAgeworICAg
ICAgICBpZiAoaXNGbG9hdFJlY3QoKSkgeworICAgICAgICAgICAgZmxvYXRSZWN0KCkubW92ZShz
aXplKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQoaXNM
YXlvdXRSZWN0KCkpOworICAgICAgICBsYXlvdXRSZWN0KCkubW92ZShzaXplKTsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgY29uc3RleHByIGJvb2wgaXNGbG9hdFJlY3QoKSBjb25zdCB7IHJldHVy
biBzdGQ6OmhvbGRzX2FsdGVybmF0aXZlPEZsb2F0UmVjdD4obV9kYXRhKTsgfQorICAgIGNvbnN0
IEZsb2F0UmVjdCYgZmxvYXRSZWN0KCkgY29uc3QgeyByZXR1cm4gc3RkOjpnZXQ8RmxvYXRSZWN0
PihtX2RhdGEpOyB9CisgICAgRmxvYXRSZWN0JiBmbG9hdFJlY3QoKSB7IHJldHVybiBzdGQ6Omdl
dDxGbG9hdFJlY3Q+KG1fZGF0YSk7IH0KKworICAgIGNvbnN0ZXhwciBib29sIGlzTGF5b3V0UmVj
dCgpIGNvbnN0IHsgcmV0dXJuIHN0ZDo6aG9sZHNfYWx0ZXJuYXRpdmU8TGF5b3V0UmVjdD4obV9k
YXRhKTsgfQorICAgIGNvbnN0IExheW91dFJlY3QmIGxheW91dFJlY3QoKSBjb25zdCB7IHJldHVy
biBzdGQ6OmdldDxMYXlvdXRSZWN0PihtX2RhdGEpOyB9CisgICAgTGF5b3V0UmVjdCYgbGF5b3V0
UmVjdCgpIHsgcmV0dXJuIHN0ZDo6Z2V0PExheW91dFJlY3Q+KG1fZGF0YSk7IH0KKworICAgIHN0
ZDo6dmFyaWFudDxGbG9hdFJlY3QsIExheW91dFJlY3Q+IG1fZGF0YTsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXgg
YzQxNmJlOTFmZjNmNTY5NzJiY2FiNGEwNWM2ODk1M2Q4OWJjNjEzMC4uM2VlYTIwZjZhOGU3MGRi
OGI5ZDI5ZDliNzc5MzQ2Njc1MTA3NzU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHAKQEAgLTc2Niw5ICs3NjYsOCBAQCBMYXlvdXRQb2ludCBSZW5kZXJCb3g6OmNvbnRl
bnRCb3hMb2NhdGlvbigpIGNvbnN0CiAgICAgcmV0dXJuIHsgYm9yZGVyTGVmdCgpICsgcGFkZGlu
Z0xlZnQoKSArIHNjcm9sbGJhclNwYWNlLCBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSB9Owog
fQogCi1MYXlvdXRSZWN0IFJlbmRlckJveDo6cmVmZXJlbmNlQm94KENTU0JveFR5cGUgYm94VHlw
ZSkgY29uc3QKK0Zsb2F0T3JMYXlvdXRSZWN0IFJlbmRlckJveDo6cmVmZXJlbmNlQm94UmVjdChD
U1NCb3hUeXBlIGJveFR5cGUpIGNvbnN0CiB7Ci0gICAgTGF5b3V0UmVjdCByZWZlcmVuY2VCb3g7
CiAgICAgc3dpdGNoIChib3hUeXBlKSB7CiAgICAgY2FzZSBDU1NCb3hUeXBlOjpDb250ZW50Qm94
OgogICAgIGNhc2UgQ1NTQm94VHlwZTo6RmlsbEJveDoKQEAgLTc4NCw3ICs3ODMsOSBAQCBMYXlv
dXRSZWN0IFJlbmRlckJveDo6cmVmZXJlbmNlQm94KENTU0JveFR5cGUgYm94VHlwZSkgY29uc3QK
ICAgICBjYXNlIENTU0JveFR5cGU6OkJveE1pc3Npbmc6CiAgICAgICAgIHJldHVybiBib3JkZXJC
b3hSZWN0KCk7CiAgICAgfQotICAgIHJldHVybiB7IH07CisKKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gTGF5b3V0UmVjdCgpOwogfQogCiBJbnRSZWN0IFJlbmRlckJveDo6
YWJzb2x1dGVDb250ZW50Qm94KCkgY29uc3QKQEAgLTE0NjAsOCArMTQ2MSw3IEBAIGJvb2wgUmVu
ZGVyQm94OjpoaXRUZXN0Q2xpcFBhdGgoY29uc3QgSGl0VGVzdExvY2F0aW9uJiBoaXRUZXN0TG9j
YXRpb24sIGNvbnN0IExhCiAgICAgc3dpdGNoIChzdHlsZSgpLmNsaXBQYXRoKCktPnR5cGUoKSkg
ewogICAgIGNhc2UgUGF0aE9wZXJhdGlvbjo6U2hhcGU6IHsKICAgICAgICAgYXV0byYgY2xpcFBh
dGggPSBkb3duY2FzdDxTaGFwZVBhdGhPcGVyYXRpb24+KCpzdHlsZSgpLmNsaXBQYXRoKCkpOwot
ICAgICAgICBhdXRvIHJlZmVyZW5jZUJveFJlY3QgPSByZWZlcmVuY2VCb3goY2xpcFBhdGgucmVm
ZXJlbmNlQm94KCkpOwotICAgICAgICBpZiAoIWNsaXBQYXRoLnBhdGhGb3JSZWZlcmVuY2VSZWN0
KHJlZmVyZW5jZUJveFJlY3QpLmNvbnRhaW5zKGhpdFRlc3RMb2NhdGlvbkluTG9jYWxDb29yZGlu
YXRlcywgY2xpcFBhdGgud2luZFJ1bGUoKSkpCisgICAgICAgIGlmICghY2xpcFBhdGgucGF0aEZv
clJlZmVyZW5jZVJlY3QocmVmZXJlbmNlQm94UmVjdChjbGlwUGF0aC5yZWZlcmVuY2VCb3goKSkp
LmNvbnRhaW5zKGhpdFRlc3RMb2NhdGlvbkluTG9jYWxDb29yZGluYXRlcywgY2xpcFBhdGgud2lu
ZFJ1bGUoKSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAppbmRleCBlZDc3NzcwZTdlNDI5ZDVi
NzYyYzBlYmMyOTFiYWYwMmY0NzAyMzI1Li5kMzUwYTQ2MGRjNDUzNWJkM2ZlOTU3NmRhYzBkYzI3
MmU3Y2Y0MTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCkBAIC0xNjcsOCAr
MTY3LDggQEAgcHVibGljOgogICAgIExheW91dFJlY3QgY29udGVudEJveFJlY3QoKSBjb25zdDsK
ICAgICBMYXlvdXRQb2ludCBjb250ZW50Qm94TG9jYXRpb24oKSBjb25zdDsKIAotICAgIC8vIC5o
dHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3NzLXRyYW5zZm9ybXMtMS8jcmVmZXJlbmNlLWJveAot
ICAgIExheW91dFJlY3QgcmVmZXJlbmNlQm94KENTU0JveFR5cGUpIGNvbnN0OworICAgIC8vIGh0
dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtdHJhbnNmb3Jtcy0xLyNyZWZlcmVuY2UtYm94CisgICAg
RmxvYXRPckxheW91dFJlY3QgcmVmZXJlbmNlQm94UmVjdChDU1NCb3hUeXBlKSBjb25zdCBmaW5h
bDsKIAogICAgIC8vIFRoZSBjb250ZW50IGJveCBpbiBhYnNvbHV0ZSBjb29yZHMuIElnbm9yZXMg
dHJhbnNmb3Jtcy4KICAgICBJbnRSZWN0IGFic29sdXRlQ29udGVudEJveCgpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCmluZGV4IGU5MzJiYzc0YjFm
ZGViNzRhZTMyZDJiZjgwNzA5ZjdjNWViNmRkMjUuLmIxNTg1NzFjMzg5ZTkxZmIwYTIxYmVmYjQ5
OTg0NzlhYTc3YTU5ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVu
dC5jcHAKQEAgLTc4LDYgKzc4LDcgQEAKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVk
ZSAiU1ZHRWxlbWVudFR5cGVIZWxwZXJzLmgiCiAjaW5jbHVkZSAiU1ZHSW1hZ2UuaCIKKyNpbmNs
dWRlICJTVkdMZW5ndGhDb250ZXh0LmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyU3VwcG9ydC5oIgog
I2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgpAQCAtMjM4OSw0
ICsyMzkwLDM4IEBAIE92ZXJmbG93IFJlbmRlckVsZW1lbnQ6OmVmZmVjdGl2ZU92ZXJmbG93WSgp
IGNvbnN0CiAgICAgcmV0dXJuIG92ZXJmbG93WTsKIH0KIAorLy8gaHR0cHM6Ly93d3cudzMub3Jn
L1RSL2Nzcy10cmFuc2Zvcm1zLTEvI3RyYW5zZm9ybS1ib3gKK0Zsb2F0T3JMYXlvdXRSZWN0IFJl
bmRlckVsZW1lbnQ6OnJlZmVyZW5jZUJveFJlY3QoQ1NTQm94VHlwZSBib3hUeXBlKSBjb25zdAor
eworICAgIC8vIENTUyBib3ggbW9kZWwgY29kZSBpcyBpbXBsZW1lbnRlZCBpbiBSZW5kZXJCb3g6
OnJlZmVyZW5jZUJveFJlY3QoKS4KKworICAgIC8vIEZvciB0aGUgbGVnYWN5IFNWRyBlbmdpbmUs
IFJlbmRlckVsZW1lbnQgaXMgdGhlIG9ubHkgY2xhc3MgdGhhdCdzCisgICAgLy8gcHJlc2VudCBp
biB0aGUgYW5jZXN0b3IgY2hhaW4gb2YgYWxsIFNWRyByZW5kZXJlcnMuIEluIExCU0UgdGhlCisg
ICAgLy8gY29tbW9uIGNsYXNzIGlzIFJlbmRlckxheWVyTW9kZWxPYmplY3QuIE9uY2UgdGhlIGxl
Z2FjeSBTVkcgZW5naW5lCisgICAgLy8gaXMgcmVtb3ZlZCB0aGlzIGZ1bmN0aW9uIHNob3VsZCBi
ZSBtb3ZlZCB0byBSZW5kZXJMYXllck1vZGVsT2JqZWN0LgorICAgIC8vIEFzIHRoaXMgbWV0aG9k
IGlzIHVzZWQgYnkgYm90aCBTVkcgZW5naW5lcywgd2UgbmVlZCB0byBwbGFjZSBpdAorICAgIC8v
IGhlcmUgaW4gUmVuZGVyRWxlbWVudCwgYXMgdGVtcG9yYXJ5IHNvbHV0aW9uLgorICAgIGlmICgh
aXM8U1ZHRWxlbWVudD4oZWxlbWVudCgpKSkKKyAgICAgICAgcmV0dXJuIExheW91dFJlY3QoKTsK
KworICAgIHN3aXRjaCAoYm94VHlwZSkgeworICAgIGNhc2UgQ1NTQm94VHlwZTo6Qm94TWlzc2lu
ZzoKKyAgICBjYXNlIENTU0JveFR5cGU6OkNvbnRlbnRCb3g6CisgICAgY2FzZSBDU1NCb3hUeXBl
OjpQYWRkaW5nQm94OgorICAgIGNhc2UgQ1NTQm94VHlwZTo6RmlsbEJveDoKKyAgICAgICAgcmV0
dXJuIG9iamVjdEJvdW5kaW5nQm94KCk7CisgICAgY2FzZSBDU1NCb3hUeXBlOjpCb3JkZXJCb3g6
CisgICAgY2FzZSBDU1NCb3hUeXBlOjpNYXJnaW5Cb3g6CisgICAgY2FzZSBDU1NCb3hUeXBlOjpT
dHJva2VCb3g6CisgICAgICAgIHJldHVybiBzdHJva2VCb3VuZGluZ0JveCgpOworICAgIGNhc2Ug
Q1NTQm94VHlwZTo6Vmlld0JveDoKKyAgICAgICAgRmxvYXRTaXplIHZpZXdwb3J0U2l6ZTsKKyAg
ICAgICAgU1ZHTGVuZ3RoQ29udGV4dChkb3duY2FzdDxTVkdFbGVtZW50PihlbGVtZW50KCkpKS5k
ZXRlcm1pbmVWaWV3cG9ydCh2aWV3cG9ydFNpemUpOworICAgICAgICByZXR1cm4gRmxvYXRSZWN0
KHsgfSwgdmlld3BvcnRTaXplKTsKKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4gRmxvYXRSZWN0KCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRWxlbWVudC5oCmluZGV4IDUxYzU1MmNiZDllN2ZkMmI3Y2JlOWQxMmRjZmEzZjEzMWZm
N2RmMWIuLmJiNjE4NGJjZWViMThjY2JlYTY0N2M0ZmNiMGViOWEwY2MwZmNkNWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaApAQCAtMjIsNiArMjIsNyBAQAogCiAj
cHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkZsb2F0T3JMYXlvdXRSZWN0LmgiCiAjaW5jbHVkZSAi
SGl0VGVzdFJlcXVlc3QuaCIKICNpbmNsdWRlICJMZW5ndGhGdW5jdGlvbnMuaCIKICNpbmNsdWRl
ICJSZW5kZXJPYmplY3QuaCIKQEAgLTI1OCw2ICsyNTksMTMgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBhbmltYXRpb25GaW5pc2hlZChjb25zdCBTdHJpbmcmIC8qIG5hbWUgKi8pIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCB0cmFuc2Zvcm1SZWxhdGVkUHJvcGVydHlEaWRDaGFuZ2UoKSB7IH0K
IAorICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtdHJhbnNmb3Jtcy0xLyN0cmFuc2Zv
cm0tYm94CisgICAgRmxvYXRPckxheW91dFJlY3QgdHJhbnNmb3JtUmVmZXJlbmNlQm94UmVjdChj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpIGNvbnN0IHsgcmV0dXJuIHJlZmVyZW5jZUJveFJlY3Qo
dHJhbnNmb3JtQm94VG9DU1NCb3hUeXBlKHN0eWxlLnRyYW5zZm9ybUJveCgpKSk7IH0KKyAgICBG
bG9hdE9yTGF5b3V0UmVjdCB0cmFuc2Zvcm1SZWZlcmVuY2VCb3hSZWN0KCkgY29uc3QgeyByZXR1
cm4gdHJhbnNmb3JtUmVmZXJlbmNlQm94UmVjdChzdHlsZSgpKTsgfQorCisgICAgLy8gaHR0cHM6
Ly93d3cudzMub3JnL1RSL2Nzcy10cmFuc2Zvcm1zLTEvI3JlZmVyZW5jZS1ib3gKKyAgICB2aXJ0
dWFsIEZsb2F0T3JMYXlvdXRSZWN0IHJlZmVyZW5jZUJveFJlY3QoQ1NTQm94VHlwZSkgY29uc3Q7
CisKICAgICB2aXJ0dWFsIHZvaWQgc3VzcGVuZEFuaW1hdGlvbnMoTW9ub3RvbmljVGltZSA9IE1v
bm90b25pY1RpbWUoKSkgeyB9CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBhbmlt
YXRlZFN0eWxlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmlu
ZGV4IDg1MGJkZTQ4ZTQ5MjhlODZkYzE3NmI2MjMyMWZlZWQ5YjY4NmMzY2QuLjMwNzg0MDJiYjM4
OTkzOWVmNWM1Mjg3NzViOWY3NWYxY2UxMDcwYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcApAQCAtMTI5NiwyMSArMTI5NiwxOCBAQCB2b2lkIFJlbmRlckxheWVy
OjpkaXJ0eUFuY2VzdG9yQ2hhaW5IYXNCbGVuZGluZ0Rlc2NlbmRhbnRzKCkKIH0KICNlbmRpZgog
Ci1zdGF0aWMgaW5saW5lIExheW91dFJlY3QgY29tcHV0ZVJlZmVyZW5jZVJlY3RGcm9tQm94KGNv
bnN0IFJlbmRlckJveCYgYm94LCBDU1NCb3hUeXBlIGJveFR5cGUsIGNvbnN0IExheW91dFNpemUm
IG9mZnNldEZyb21Sb290KQorc3RhdGljIGlubGluZSBGbG9hdE9yTGF5b3V0UmVjdCBjb21wdXRl
UmVmZXJlbmNlQm94KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QmIHJlbmRlcmVyLCBDU1NC
b3hUeXBlIGJveFR5cGUsIGNvbnN0IExheW91dFNpemUmIG9mZnNldEZyb21Sb290LCBjb25zdCBM
YXlvdXRSZWN0JiByb290UmVsYXRpdmVCb3VuZHMpCiB7Ci0gICAgYXV0byByZWZlcmVuY2VCb3gg
PSBib3gucmVmZXJlbmNlQm94KGJveFR5cGUpOwotICAgIHJlZmVyZW5jZUJveC5tb3ZlKG9mZnNl
dEZyb21Sb290KTsKLSAgICByZXR1cm4gcmVmZXJlbmNlQm94OwotfQorICAgIC8vIEZJWE1FOiBb
TEJTRV0gVXBzdHJlYW0gdHJhbnNmb3JtIHN1cHBvcnQgZm9yIFJlbmRlclNWR01vZGVsT2JqZWN0
IGRlcml2ZWQgcmVuZGVyZXJzCiAKLXN0YXRpYyBpbmxpbmUgTGF5b3V0UmVjdCBjb21wdXRlUmVm
ZXJlbmNlQm94KGNvbnN0IFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIENTU0JveFR5cGUgYm94VHlw
ZSwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zmc2V0RnJvbVJvb3QsIGNvbnN0IExheW91dFJlY3QmIHJv
b3RSZWxhdGl2ZUJvdW5kcykKLXsKICAgICAvLyBGSVhNRTogU3VwcG9ydCBkaWZmZXJlbnQgcmVm
ZXJlbmNlIGJveGVzIGZvciBpbmxpbmUgY29udGVudC4KICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI5MDQ3CiAgICAgaWYgKCFyZW5kZXJlci5pc0JveCgp
KQogICAgICAgICByZXR1cm4gcm9vdFJlbGF0aXZlQm91bmRzOwogICAgIAotICAgIHJldHVybiBj
b21wdXRlUmVmZXJlbmNlUmVjdEZyb21Cb3goZG93bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJlciks
IGJveFR5cGUsIG9mZnNldEZyb21Sb290KTsKKyAgICBhdXRvIHJlZmVyZW5jZUJveCA9IHJlbmRl
cmVyLnJlZmVyZW5jZUJveFJlY3QoYm94VHlwZSk7CisgICAgcmVmZXJlbmNlQm94Lm1vdmUob2Zm
c2V0RnJvbVJvb3QpOworICAgIHJldHVybiByZWZlcmVuY2VCb3g7CiB9CiAKIHZvaWQgUmVuZGVy
TGF5ZXI6OnVwZGF0ZVRyYW5zZm9ybSgpCkBAIC0xMzMyLDEyICsxMzI5LDggQEAgdm9pZCBSZW5k
ZXJMYXllcjo6dXBkYXRlVHJhbnNmb3JtKCkKICAgICBpZiAoaGFzVHJhbnNmb3JtKSB7CiAgICAg
ICAgIG1fdHJhbnNmb3JtLT5tYWtlSWRlbnRpdHkoKTsKIAotICAgICAgICAvLyBGSVhNRTogW0xC
U0VdIFVwc3RyZWFtIHJlZmVyZW5jZSBib3ggY29tcHV0YXRpb24gZm9yIFJlbmRlclNWR01vZGVs
T2JqZWN0IGRlcml2ZWQgcmVuZGVyZXJzCi0gICAgICAgIEZsb2F0UmVjdCByZWZlcmVuY2VCb3g7
Ci0gICAgICAgIGlmIChpczxSZW5kZXJCb3g+KHJlbmRlcmVyKCkpKQotICAgICAgICAgICAgcmVm
ZXJlbmNlQm94ID0gc25hcFJlY3RUb0RldmljZVBpeGVscyhkb3duY2FzdDxSZW5kZXJCb3g+KHJl
bmRlcmVyKCkpLnJlZmVyZW5jZUJveCh0cmFuc2Zvcm1Cb3hUb0NTU0JveFR5cGUocmVuZGVyZXIo
KS5zdHlsZSgpLnRyYW5zZm9ybUJveCgpKSksIHJlbmRlcmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VT
Y2FsZUZhY3RvcigpKTsKLQotICAgICAgICByZW5kZXJlcigpLmFwcGx5VHJhbnNmb3JtKCptX3Ry
YW5zZm9ybSwgcmVmZXJlbmNlQm94KTsKKyAgICAgICAgYXV0byByZWZlcmVuY2VCb3hSZWN0Rm9y
UGFpbnRpbmcgPSByZW5kZXJlcigpLnRyYW5zZm9ybVJlZmVyZW5jZUJveFJlY3QoKS5yZWN0Rm9y
UGFpbnRpbmcocmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpOworICAg
ICAgICByZW5kZXJlcigpLmFwcGx5VHJhbnNmb3JtKCptX3RyYW5zZm9ybSwgcmVmZXJlbmNlQm94
UmVjdEZvclBhaW50aW5nKTsKICAgICAgICAgbWFrZU1hdHJpeFJlbmRlcmFibGUoKm1fdHJhbnNm
b3JtLCBjYW5SZW5kZXIzRFRyYW5zZm9ybXMoKSk7CiAgICAgfQogCkBAIC0xMzY2LDEwICsxMzU5
LDEwIEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4IFJlbmRlckxheWVyOjpjdXJyZW50VHJhbnNmb3Jt
KE9wdGlvblNldDxSZW5kZXJTdHlsZTo6VHJhbnNmCiAgICAgYXV0byBzdHlsZWFibGUgPSBTdHls
ZWFibGU6OmZyb21SZW5kZXJlcihyZW5kZXJCb3gpOwogICAgIGlmICgoc3R5bGVhYmxlICYmIHN0
eWxlYWJsZS0+aXNSdW5uaW5nQWNjZWxlcmF0ZWRUcmFuc2Zvcm1BbmltYXRpb24oKSkgfHwgIW9w
dGlvbnMuY29udGFpbnMoUmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbjo6VHJh
bnNmb3JtT3JpZ2luKSkgewogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IGFu
aW1hdGVkU3R5bGUgPSByZW5kZXJCb3guYW5pbWF0ZWRTdHlsZSgpOwotICAgICAgICBhdXRvIHBp
eGVsU25hcHBlZEJvcmRlclJlY3QgPSBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKHJlbmRlckJveC5y
ZWZlcmVuY2VCb3godHJhbnNmb3JtQm94VG9DU1NCb3hUeXBlKGFuaW1hdGVkU3R5bGUtPnRyYW5z
Zm9ybUJveCgpKSksIHJlbmRlckJveC5kb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpOwor
ICAgICAgICBhdXRvIHJlZmVyZW5jZUJveFJlY3RGb3JQYWludGluZyA9IHJlbmRlckJveC50cmFu
c2Zvcm1SZWZlcmVuY2VCb3hSZWN0KCkucmVjdEZvclBhaW50aW5nKHJlbmRlckJveC5kb2N1bWVu
dCgpLmRldmljZVNjYWxlRmFjdG9yKCkpOwogCiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IHRyYW5zZm9ybTsKLSAgICAgICAgYW5pbWF0ZWRTdHlsZS0+YXBwbHlUcmFuc2Zvcm0odHJhbnNm
b3JtLCBwaXhlbFNuYXBwZWRCb3JkZXJSZWN0LCBvcHRpb25zKTsKKyAgICAgICAgYW5pbWF0ZWRT
dHlsZS0+YXBwbHlUcmFuc2Zvcm0odHJhbnNmb3JtLCByZWZlcmVuY2VCb3hSZWN0Rm9yUGFpbnRp
bmcsIG9wdGlvbnMpOwogCiAgICAgICAgIG1ha2VNYXRyaXhSZW5kZXJhYmxlKHRyYW5zZm9ybSwg
Y2FuUmVuZGVyM0RUcmFuc2Zvcm1zKCkpOwogICAgICAgICByZXR1cm4gdHJhbnNmb3JtOwpAQCAt
MTgwMSwxMSArMTc5NCwxMSBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBSZW5kZXJMYXllcjo6cGVy
c3BlY3RpdmVUcmFuc2Zvcm0oY29uc3QgTGF5b3V0UmVjdCYgbGF5ZXJSZQogICAgICAgICByZXR1
cm4geyB9OwogCiAgICAgYXV0byBkZXZpY2VTY2FsZUZhY3RvciA9IHJlbmRlckJveC5kb2N1bWVu
dCgpLmRldmljZVNjYWxlRmFjdG9yKCk7Ci0gICAgYXV0byByZWZlcmVuY2VCb3ggPSByZW5kZXJC
b3gucmVmZXJlbmNlQm94KHRyYW5zZm9ybUJveFRvQ1NTQm94VHlwZShzdHlsZS50cmFuc2Zvcm1C
b3goKSkpOwotICAgIGF1dG8gcGl4ZWxTbmFwcGVkUmVmZXJlbmNlQm94ID0gc25hcFJlY3RUb0Rl
dmljZVBpeGVscyhyZWZlcmVuY2VCb3gsIGRldmljZVNjYWxlRmFjdG9yKTsKKyAgICBhdXRvIHJl
ZmVyZW5jZUJveFJlY3RGb3JQYWludGluZyA9IHJlbmRlckJveC50cmFuc2Zvcm1SZWZlcmVuY2VC
b3hSZWN0KCkucmVjdEZvclBhaW50aW5nKGRldmljZVNjYWxlRmFjdG9yKTsKKyAgICAvLyBGSVhN
RTogW0xCU0VdIEF2b2lkIHBpeGVsIHNuYXBwaW5nIGluIFNWRyBzdWJ0cmVlLgogICAgIGF1dG8g
c25hcHBlZExheWVyUmVjdCA9IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMobGF5ZXJSZWN0LCBkZXZp
Y2VTY2FsZUZhY3Rvcik7CiAKLSAgICBhdXRvIHBlcnNwZWN0aXZlT3JpZ2luID0gcGl4ZWxTbmFw
cGVkUmVmZXJlbmNlQm94LmxvY2F0aW9uKCkgLSB0b0Zsb2F0U2l6ZShzbmFwcGVkTGF5ZXJSZWN0
LmxvY2F0aW9uKCkpICsgZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHN0eWxlLnBlcnNwZWN0aXZl
T3JpZ2luKCksIHBpeGVsU25hcHBlZFJlZmVyZW5jZUJveC5zaXplKCkpOworICAgIGF1dG8gcGVy
c3BlY3RpdmVPcmlnaW4gPSByZWZlcmVuY2VCb3hSZWN0Rm9yUGFpbnRpbmcubG9jYXRpb24oKSAt
IHRvRmxvYXRTaXplKHNuYXBwZWRMYXllclJlY3QubG9jYXRpb24oKSkgKyBmbG9hdFBvaW50Rm9y
TGVuZ3RoUG9pbnQoc3R5bGUucGVyc3BlY3RpdmVPcmlnaW4oKSwgcmVmZXJlbmNlQm94UmVjdEZv
clBhaW50aW5nLnNpemUoKSk7CiAKICAgICAvLyBBIHBlcnNwZWN0aXZlIG9yaWdpbiBvZiAwLDAg
bWFrZXMgdGhlIHZhbmlzaGluZyBwb2ludCBpbiB0aGUgY2VudGVyIG9mIHRoZSBlbGVtZW50Lgog
ICAgIC8vIFdlIHdhbnQgaXQgdG8gYmUgaW4gdGhlIHRvcC1sZWZ0LCBzbyBzdWJ0cmFjdCBoYWxm
IHRoZSBoZWlnaHQgYW5kIHdpZHRoLgpAQCAtMTgyMyw2ICsxODE2LDcgQEAgRmxvYXRQb2ludCBS
ZW5kZXJMYXllcjo6cGVyc3BlY3RpdmVPcmlnaW4oKSBjb25zdAogewogICAgIGlmICghcmVuZGVy
ZXIoKS5oYXNUcmFuc2Zvcm1SZWxhdGVkUHJvcGVydHkoKSkKICAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICAvLyBGSVhNRTogVGhpcyB1c2VzIHRoZSB3cm9uZywgdHJhbnNmb3JtLWJveCB1bmF3YXJl
LCBnZW9tZXRyeS4KICAgICByZXR1cm4gZmxvYXRQb2ludEZvckxlbmd0aFBvaW50KHJlbmRlcmVy
KCkuc3R5bGUoKS5wZXJzcGVjdGl2ZU9yaWdpbigpLCByZW5kZXJlckJvcmRlckJveFJlY3QoKS5z
aXplKCkpOwogfQogCkBAIC0zMjEyLDIyICszMjA2LDggQEAgc3RkOjpwYWlyPFBhdGgsIFdpbmRS
dWxlPiBSZW5kZXJMYXllcjo6Y29tcHV0ZUNsaXBQYXRoKGNvbnN0IExheW91dFNpemUmIG9mZnNl
dEYKIAogICAgIGlmIChpczxTaGFwZVBhdGhPcGVyYXRpb24+KCpzdHlsZS5jbGlwUGF0aCgpKSkg
ewogICAgICAgICBhdXRvJiBjbGlwUGF0aCA9IGRvd25jYXN0PFNoYXBlUGF0aE9wZXJhdGlvbj4o
KnN0eWxlLmNsaXBQYXRoKCkpOwotCi0gICAgICAgIExheW91dFJlY3QgcmVmZXJlbmNlQm94Owot
ICAgICAgICBpZiAoaXM8UmVuZGVyQm94PihyZW5kZXJlcigpKSkgewotICAgICAgICAgICAgcmVm
ZXJlbmNlQm94ID0gZG93bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJlcigpKS5yZWZlcmVuY2VCb3go
Y2xpcFBhdGgucmVmZXJlbmNlQm94KCkpOwotICAgICAgICAgICAgcmVmZXJlbmNlQm94Lm1vdmUo
b2Zmc2V0RnJvbVJvb3QpOwotI2lmIEVOQUJMRShMQVlFUl9CQVNFRF9TVkdfRU5HSU5FKQotICAg
ICAgICB9IGVsc2UgaWYgKGlzPFJlbmRlclNWR01vZGVsT2JqZWN0PihyZW5kZXJlcigpKSkgewot
ICAgICAgICAgICAgLy8gRklYTUU6IFtMQlNFXSBVcHN0cmVhbSBjbGlwcGluZyBzdXBwb3J0IGZv
ciBSZW5kZXJTVkdNb2RlbE9iamVjdCBkZXJpdmVkIHJlbmRlcmVycwotI2VuZGlmCi0gICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBSZWZlcmVuY2UgYm94IGZvciBpbmxpbmVzIGlzIG5v
dCB3ZWxsIGRlZmluZWQ6IGh0dHBzOi8vZ2l0aHViLmNvbS93M2MvY3Nzd2ctZHJhZnRzL2lzc3Vl
cy82MzgzCi0gICAgICAgICAgICByZWZlcmVuY2VCb3ggPSByb290UmVsYXRpdmVCb3VuZHNGb3JO
b25Cb3hlczsKLSAgICAgICAgfQotCi0gICAgICAgIGF1dG8gc25hcHBlZFJlZmVyZW5jZUJveCA9
IHNuYXBSZWN0VG9EZXZpY2VQaXhlbHMocmVmZXJlbmNlQm94LCBkZXZpY2VTY2FsZUZhY3Rvcik7
Ci0gICAgICAgIHJldHVybiB7IGNsaXBQYXRoLnBhdGhGb3JSZWZlcmVuY2VSZWN0KHNuYXBwZWRS
ZWZlcmVuY2VCb3gpLCBjbGlwUGF0aC53aW5kUnVsZSgpIH07CisgICAgICAgIGF1dG8gcmVmZXJl
bmNlQm94UmVjdCA9IGNvbXB1dGVSZWZlcmVuY2VCb3gocmVuZGVyZXIoKSwgY2xpcFBhdGgucmVm
ZXJlbmNlQm94KCksIG9mZnNldEZyb21Sb290LCByb290UmVsYXRpdmVCb3VuZHNGb3JOb25Cb3hl
cyk7CisgICAgICAgIHJldHVybiB7IGNsaXBQYXRoLnBhdGhGb3JSZWZlcmVuY2VSZWN0KHJlZmVy
ZW5jZUJveFJlY3QucmVjdEZvclBhaW50aW5nKGRldmljZVNjYWxlRmFjdG9yKSksIGNsaXBQYXRo
LndpbmRSdWxlKCkgfTsKICAgICB9CiAKICAgICBpZiAoaXM8Qm94UGF0aE9wZXJhdGlvbj4oKnN0
eWxlLmNsaXBQYXRoKCkpICYmIGlzPFJlbmRlckJveD4ocmVuZGVyZXIoKSkpIHsKQEAgLTMyNjks
MTYgKzMyNDksMjAgQEAgdm9pZCBSZW5kZXJMYXllcjo6c2V0dXBDbGlwUGF0aChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dFN0YXRlU2EKICAgICAgICAgICAgIC8vIFVz
ZSB0aGUgYm9yZGVyIGJveCBhcyB0aGUgcmVmZXJlbmNlIGJveCwgZXZlbiB0aG91Z2ggdGhpcyBp
cyBub3QgY2xlYXJseSBzcGVjaWZpZWQ6IGh0dHBzOi8vZ2l0aHViLmNvbS93M2MvY3Nzd2ctZHJh
ZnRzL2lzc3Vlcy81Nzg2LgogICAgICAgICAgICAgLy8gY2xpcHBlZENvbnRlbnRCb3VuZHMgaXMg
dXNlZCBhcyB0aGUgcmVmZXJlbmNlIGJveCBmb3IgaW5saW5lcywgd2hpY2ggaXMgYWxzbyBwb29y
bHkgc3BlY2lmaWVkOiBodHRwczovL2dpdGh1Yi5jb20vdzNjL2Nzc3dnLWRyYWZ0cy9pc3N1ZXMv
NjM4My4KICAgICAgICAgICAgIGF1dG8gcmVmZXJlbmNlQm94ID0gY29tcHV0ZVJlZmVyZW5jZUJv
eChyZW5kZXJlcigpLCBDU1NCb3hUeXBlOjpCb3JkZXJCb3gsIG9mZnNldEZyb21Sb290LCBjbGlw
cGVkQ29udGVudEJvdW5kcyk7Ci0gICAgICAgICAgICBhdXRvIHNuYXBwZWRSZWZlcmVuY2VCb3gg
PSBzbmFwUmVjdFRvRGV2aWNlUGl4ZWxzKHJlZmVyZW5jZUJveCwgcmVuZGVyZXIoKS5kb2N1bWVu
dCgpLmRldmljZVNjYWxlRmFjdG9yKCkpOwotICAgICAgICAgICAgYXV0byBvZmZzZXQgPSBzbmFw
cGVkUmVmZXJlbmNlQm94LmxvY2F0aW9uKCk7CiAKKyAgICAgICAgICAgIEZsb2F0UmVjdCByZWZl
cmVuY2VCb3hSZWN0ID0gcmVmZXJlbmNlQm94OworICAgICAgICAgICAgcmVmZXJlbmNlQm94UmVj
dC5zZXRMb2NhdGlvbih7IH0pOworCisgICAgICAgICAgICBhdXRvIHJlZmVyZW5jZUJveFJlY3RG
b3JQYWludGluZyA9IHJlZmVyZW5jZUJveC5yZWN0Rm9yUGFpbnRpbmcocmVuZGVyZXIoKS5kb2N1
bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkpOworICAgICAgICAgICAgYXV0byBvZmZzZXQgPSBy
ZWZlcmVuY2VCb3hSZWN0Rm9yUGFpbnRpbmcubG9jYXRpb24oKTsKKworICAgICAgICAgICAgLy8g
RklYTUU6IFtMQlNFXSBBdm9pZCBwaXhlbCBzbmFwcGluZyBpbiBTVkcgc3VidHJlZS4KICAgICAg
ICAgICAgIGF1dG8gc25hcHBlZENsaXBwaW5nQm91bmRzID0gc25hcFJlY3RUb0RldmljZVBpeGVs
cyhjbGlwcGVkQ29udGVudEJvdW5kcywgcmVuZGVyZXIoKS5kb2N1bWVudCgpLmRldmljZVNjYWxl
RmFjdG9yKCkpOwogICAgICAgICAgICAgc25hcHBlZENsaXBwaW5nQm91bmRzLm1vdmVCeSgtb2Zm
c2V0KTsKIAogICAgICAgICAgICAgc3RhdGVTYXZlci5zYXZlKCk7CiAgICAgICAgICAgICBjb250
ZXh0LnRyYW5zbGF0ZShvZmZzZXQpOwotICAgICAgICAgICAgRmxvYXRSZWN0IGNsaXBQYXRoUmVm
ZXJlbmNlQm94IHsgeyB9LCByZWZlcmVuY2VCb3guc2l6ZSgpIH07Ci0gICAgICAgICAgICBjbGlw
cGVyUmVuZGVyZXItPmFwcGx5Q2xpcHBpbmdUb0NvbnRleHQoY29udGV4dCwgcmVuZGVyZXIoKSwg
Y2xpcFBhdGhSZWZlcmVuY2VCb3gsIHNuYXBwZWRDbGlwcGluZ0JvdW5kcywgcmVuZGVyZXIoKS5z
dHlsZSgpLmVmZmVjdGl2ZVpvb20oKSk7CisgICAgICAgICAgICBjbGlwcGVyUmVuZGVyZXItPmFw
cGx5Q2xpcHBpbmdUb0NvbnRleHQoY29udGV4dCwgcmVuZGVyZXIoKSwgcmVmZXJlbmNlQm94UmVj
dCwgc25hcHBlZENsaXBwaW5nQm91bmRzLCByZW5kZXJlcigpLnN0eWxlKCkuZWZmZWN0aXZlWm9v
bSgpKTsKICAgICAgICAgICAgIGNvbnRleHQudHJhbnNsYXRlKC1vZmZzZXQpOwogICAgICAgICB9
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5k
ZXJTdXBwb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3Vw
cG9ydC5jcHAKaW5kZXggY2MzOGVjNzAzMGU2MGNlMTc1OWIxMzI4N2RlMjVmNzNkNTY1Yzg1OC4u
ZTJiZWI0YmE4YzExNTdkY2JiMTI4NjQ5YTNlZGU1NmUzODRlOGQwOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCkBAIC0zNDMsMjYg
KzM0Myw2IEBAIGJvb2wgU1ZHUmVuZGVyU3VwcG9ydDo6ZmlsdGVyc0ZvcmNlQ29udGFpbmVyTGF5
b3V0KGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LUZsb2F0UmVjdCBTVkdSZW5kZXJTdXBwb3J0Ojp0cmFuc2Zvcm1SZWZlcmVuY2VCb3goY29uc3Qg
UmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFNWR0VsZW1lbnQmIGVsZW1lbnQsIGNvbnN0
IFJlbmRlclN0eWxlJiBzdHlsZSkKLXsKLSAgICBzd2l0Y2ggKHN0eWxlLnRyYW5zZm9ybUJveCgp
KSB7Ci0gICAgY2FzZSBUcmFuc2Zvcm1Cb3g6OkJvcmRlckJveDoKLSAgICAgICAgLy8gRm9yIFNW
RyBlbGVtZW50cyB3aXRob3V0IGFuIGFzc29jaWF0ZWQgQ1NTIGxheW91dCBib3gsIHRoZSB1c2Vk
IHZhbHVlIGZvciBib3JkZXItYm94IGlzIHN0cm9rZS1ib3guCi0gICAgY2FzZSBUcmFuc2Zvcm1C
b3g6OlN0cm9rZUJveDoKLSAgICAgICAgcmV0dXJuIHJlbmRlcmVyLnN0cm9rZUJvdW5kaW5nQm94
KCk7Ci0gICAgY2FzZSBUcmFuc2Zvcm1Cb3g6OkNvbnRlbnRCb3g6Ci0gICAgICAgIC8vIEZvciBT
VkcgZWxlbWVudHMgd2l0aG91dCBhbiBhc3NvY2lhdGVkIENTUyBsYXlvdXQgYm94LCB0aGUgdXNl
ZCB2YWx1ZSBmb3IgY29udGVudC1ib3ggaXMgZmlsbC1ib3guCi0gICAgY2FzZSBUcmFuc2Zvcm1C
b3g6OkZpbGxCb3g6Ci0gICAgICAgIHJldHVybiByZW5kZXJlci5vYmplY3RCb3VuZGluZ0JveCgp
OwotICAgIGNhc2UgVHJhbnNmb3JtQm94OjpWaWV3Qm94OiB7Ci0gICAgICAgIEZsb2F0U2l6ZSB2
aWV3cG9ydFNpemU7Ci0gICAgICAgIFNWR0xlbmd0aENvbnRleHQoJmVsZW1lbnQpLmRldGVybWlu
ZVZpZXdwb3J0KHZpZXdwb3J0U2l6ZSk7Ci0gICAgICAgIHJldHVybiBGbG9hdFJlY3QgeyB7IH0s
IHZpZXdwb3J0U2l6ZSB9OwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiB7IH07Ci19Ci0K
IGlubGluZSBGbG9hdFJlY3QgY2xpcFBhdGhSZWZlcmVuY2VCb3goY29uc3QgUmVuZGVyRWxlbWVu
dCYgcmVuZGVyZXIsIENTU0JveFR5cGUgYm94VHlwZSkKIHsKICAgICBGbG9hdFJlY3QgcmVmZXJl
bmNlQm94OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5k
ZXJTdXBwb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBv
cnQuaAppbmRleCA5Y2NmY2JlYjU3N2E3NzNkYzg4MDdkOTUzOWQ2MmE4MWU1NjE5Yjg5Li5kNDNk
MGM3Zjc1OGQxNWZiNzA0NmM5MWJlMGNhOWRhNTNkZDg1NjAyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuaApAQCAtODIsOCArODIsNiBAQCBw
dWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBzdHlsZUNoYW5nZWQoUmVuZGVyRWxlbWVudCYsIGNv
bnN0IFJlbmRlclN0eWxlKik7CiAgICAgCi0gICAgc3RhdGljIEZsb2F0UmVjdCB0cmFuc2Zvcm1S
ZWZlcmVuY2VCb3goY29uc3QgUmVuZGVyRWxlbWVudCYsIGNvbnN0IFNWR0VsZW1lbnQmLCBjb25z
dCBSZW5kZXJTdHlsZSYpOwotCiAjaWYgRU5BQkxFKENTU19DT01QT1NJVElORykKICAgICBzdGF0
aWMgYm9vbCBpc29sYXRlc0JsZW5kaW5nKGNvbnN0IFJlbmRlclN0eWxlJik7CiAgICAgc3RhdGlj
IHZvaWQgdXBkYXRlTWFza2VkQW5jZXN0b3JTaG91bGRJc29sYXRlQmxlbmRpbmcoY29uc3QgUmVu
ZGVyRWxlbWVudCYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNz
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcApp
bmRleCBkYzEwOGU1YjIzYzQ2ZGE5NTYwMGEwMmFhYzYyMDdlZDViNjY1Njk2Li5hNjA5OTU2NGZh
YzM0MzhjYjJiODQzYjA5MzkwOGI3MjJlMGRjMDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
R3JhcGhpY3NFbGVtZW50LmNwcApAQCAtODAsMTIgKzgwLDEwIEBAIEFmZmluZVRyYW5zZm9ybSBT
VkdHcmFwaGljc0VsZW1lbnQ6OmFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0oKSBjb25zdAogCiAgICAg
Ly8gSG9ub3IgYW55IG9mIHRoZSB0cmFuc2Zvcm0tcmVsYXRlZCBDU1MgcHJvcGVydGllcyBpZiBz
ZXQuCiAgICAgaWYgKGhhc1NwZWNpZmllZFRyYW5zZm9ybSB8fCAoc3R5bGUgJiYgKHN0eWxlLT50
cmFuc2xhdGUoKSB8fCBzdHlsZS0+c2NhbGUoKSB8fCBzdHlsZS0+cm90YXRlKCkpKSkgewotICAg
ICAgICBhdXRvIGJvdW5kaW5nQm94ID0gU1ZHUmVuZGVyU3VwcG9ydDo6dHJhbnNmb3JtUmVmZXJl
bmNlQm94KCpyZW5kZXJlcigpLCAqdGhpcywgKnN0eWxlKTsKLSAgICAgICAgCiAgICAgICAgIC8v
IE5vdGU6IG9iamVjdEJvdW5kaW5nQm94IGlzIGFuIGVtcHR5UmVjdCBmb3IgZWxlbWVudHMgbGlr
ZSBwYXR0ZXJuIG9yIGNsaXBQYXRoLgogICAgICAgICAvLyBTZWUgdGhlICJPYmplY3QgYm91bmRp
bmcgYm94IHVuaXRzIiBzZWN0aW9uIG9mIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2NzczMtdHJh
bnNmb3Jtcy8KICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtOwotICAgICAg
ICBzdHlsZS0+YXBwbHlUcmFuc2Zvcm0odHJhbnNmb3JtLCBib3VuZGluZ0JveCk7CisgICAgICAg
IHN0eWxlLT5hcHBseVRyYW5zZm9ybSh0cmFuc2Zvcm0sIHJlbmRlcmVyKCktPnRyYW5zZm9ybVJl
ZmVyZW5jZUJveFJlY3QoKSk7CiAKICAgICAgICAgLy8gRmxhdHRlbiBhbnkgM0QgdHJhbnNmb3Jt
LgogICAgICAgICBtYXRyaXggPSB0cmFuc2Zvcm0udG9BZmZpbmVUcmFuc2Zvcm0oKTsKQEAgLTEw
MCw3ICs5OCw3IEBAIEFmZmluZVRyYW5zZm9ybSBTVkdHcmFwaGljc0VsZW1lbnQ6OmFuaW1hdGVk
TG9jYWxUcmFuc2Zvcm0oKSBjb25zdAogCiAgICAgLy8gSWYgd2UgZGlkbid0IGhhdmUgdGhlIENT
UyAidHJhbnNmb3JtIiBwcm9wZXJ0eSBzZXQsIHdlIG11c3QgYWNjb3VudCBmb3IgdGhlICJ0cmFu
c2Zvcm0iIGF0dHJpYnV0ZS4KICAgICBpZiAoIWhhc1NwZWNpZmllZFRyYW5zZm9ybSAmJiBzdHls
ZSkgewotICAgICAgICBhdXRvIGJvdW5kaW5nQm94ID0gU1ZHUmVuZGVyU3VwcG9ydDo6dHJhbnNm
b3JtUmVmZXJlbmNlQm94KCpyZW5kZXJlcigpLCAqdGhpcywgKnN0eWxlKTsKKyAgICAgICAgRmxv
YXRSZWN0IGJvdW5kaW5nQm94ID0gcmVuZGVyZXIoKS0+dHJhbnNmb3JtUmVmZXJlbmNlQm94UmVj
dCgpOwogICAgICAgICBhdXRvIHQgPSBmbG9hdFBvaW50Rm9yTGVuZ3RoUG9pbnQoc3R5bGUtPnRy
YW5zZm9ybU9yaWdpblhZKCksIGJvdW5kaW5nQm94LnNpemUoKSkgKyBib3VuZGluZ0JveC5sb2Nh
dGlvbigpOwogICAgICAgICBtYXRyaXgudHJhbnNsYXRlKHQpOwogICAgICAgICBtYXRyaXggKj0g
dHJhbnNmb3JtKCkuY29uY2F0ZW5hdGUoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454562</attachid>
            <date>2022-03-13 16:49:13 -0700</date>
            <delta_ts>2022-03-16 03:27:24 -0700</delta_ts>
            <desc>Patch, v4</desc>
            <filename>bug-237711-20220313164912.patch</filename>
            <type>text/plain</type>
            <size>26398</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTkyMTZjYTM3MmQ3MjQ4
ZTcwMzZhNzVmOGVlYjUzYmMxYmQ0ZTIwYy4uMDhhYTNjMDc0NDRlNzNkMzhkMGE5NzdmMmVjZGE4
MzRjZWE1MjY1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDIyLTAzLTEzICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtMQlNF
XSBBY3RpdmF0ZSBTVkcgdHJhbnNmb3JtIHN1cHBvcnQgdGhyb3VnaCBsYXllcnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzcxMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFjdGl2YXRlIHRyYW5zZm9y
bXMgZm9yIFNWRyBsYXllcnMuCisKKyAgICAgICAgVXNlIHRoZSBmbGFnIHRvIGtlZXAgdHJhY2sg
b2YgdGhlIHByZXNlbmNlIG9mIFNWRyB0cmFuc2Zvcm1hdGlvbnMKKyAgICAgICAgb24gYSByZW5k
ZXJlci4gQ1NTL0hUTUwgcmVuZGVyZXJzIGNhbiByZWx5IG9ubHkgb24gdGhlIFJlbmRlclN0eWxl
CisgICAgICAgIHRvIGRldGVybWluZSBpZiB0cmFuc2Zvcm1hdGlvbnMgYXJlIGFwcGxpZWQsIHdo
ZXJlYXMgU1ZHIGhhcyB0bworICAgICAgICBjb25zdWx0IGFkZGl0aW9uYWwgc291cmNlcywgc3Vj
aCBhcyB0aGUgU1ZHICd0cmFuc2Zvcm0nIGF0dHJpYnV0ZS4KKworICAgICAgICBBIFNWRyByZW5k
ZXJlciB3aXRoIHRoZSAnSGFzU1ZHVHJhbnNmb3JtJyBmbGFnIHNldCBzaG91bGQgYmVoYXZlCisg
ICAgICAgIGxpa2UgYW55IFNWRy9IVE1MIHJlbmRlcmVyIHRoYXQgaGFzIENTUyB0cmFuc2Zvcm1h
dGlvbnMgYXBwbGllZC4KKworICAgICAgICBXaXRoIHRoaXMgcGF0Y2ggYXBwbGllZCBTVkcgdHJh
bnNmb3JtIGFuZCBDU1MgdHJhbnNmb3JtcyBjYW4KKyAgICAgICAgYmUgYXBwbGllZCB0byA8Zz4g
LyA8cmVjdD4gZWxlbWVudHMgaW4gTEJTRSwgaG93ZXZlciB0cmFuc2Zvcm0tb3JpZ2luCisgICAg
ICAgIHN1cHBvcnQgaXMgbm90IHlldCBjb3JyZWN0LCB0aGlzIHdpbGwgY29tZSB1cCBhIGZvbGxv
dy11cCBwYXRjaC4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLCBubyBjaGFu
Z2UgaW4gYmVoYXZpb3VyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1h
dGlvbk1hdHJpeDo6bXVsdGlwbHlBZmZpbmVUcmFuc2Zvcm0pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6dXBk
YXRlTGF5ZXJUcmFuc2Zvcm0pOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJC
b3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y2FuQ3JlYXRlU3RhY2tpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0
ZVRyYW5zZm9ybUZyb21TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y3Vy
cmVudFRyYW5zZm9ybSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyTW9k
ZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6
dXBkYXRlTGF5ZXJUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdDo6YXBwbHlTVkdUcmFuc2Zvcm0gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMYXllck1vZGVsT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnNldEhhc1NWR1RyYW5zZm9y
bSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyT2JqZWN0OjpoYXNTVkdUcmFuc2Zvcm0gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyT2JqZWN0OjpoYXNUcmFuc2Zvcm0gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xheWVy
VHJhbnNmb3JtVXBkYXRlcjo6U1ZHTGF5ZXJUcmFuc2Zvcm1VcGRhdGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0xheWVyVHJhbnNmb3JtVXBkYXRlcjo6flNWR0xheWVyVHJhbnNmb3JtVXBkYXRl
cik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdDb250YWluZXI6OmxheW91dCk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNWR0NvbnRhaW5lcjo6dXBkYXRlTGF5ZXJJbmZvcm1hdGlvbik6IERlbGV0ZWQu
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdNb2RlbE9iamVjdDo6dXBkYXRlRnJvbVN0eWxlKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHUm9vdDo6dXBkYXRlRnJvbVN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1NoYXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBl
OjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHU2hhcGU6OmFwcGx5VHJhbnNm
b3JtIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXI6OnVw
ZGF0ZUZyb21TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUcmFuc2Zvcm1hYmxl
Q29udGFpbmVyOjphcHBseVRyYW5zZm9ybSBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0dyYXBo
aWNzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFwaGljc0VsZW1lbnQ6OmFu
aW1hdGVkTG9jYWxUcmFuc2Zvcm0gY29uc3QpOgorCiAyMDIyLTAzLTEzICBOaWtvbGFzIFppbW1l
cm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVuaWZ5IHJlZmVyZW5j
ZSBib3ggLyBDVE0gY29tcHV0YXRpb24gaW4gUmVuZGVyTGF5ZXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRy
aXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFu
c2Zvcm1hdGlvbk1hdHJpeC5jcHAKaW5kZXggZjIyNmQ5MzMxYTRlNDMxZjg2NmU5NTdjMTU4OWJk
ZWQwMzYxM2JjYS4uMjgxYzk1ZGNhNmRlY2Y3Nzc3YWE3MzVmNjA5ZmViYzg4MTAzOGI2MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFu
c2Zvcm1hdGlvbk1hdHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAKQEAgLTE1MzMsNiArMTUzMywx
NyBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgVHJhbnNmb3JtYXRpb25NYXRyaXg6Om11bHRpcGx5
KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JgogICAgIHJldHVybiAqdGhpczsKIH0KIAorVHJh
bnNmb3JtYXRpb25NYXRyaXgmIFRyYW5zZm9ybWF0aW9uTWF0cml4OjptdWx0aXBseUFmZmluZVRy
YW5zZm9ybShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIG1hdHJpeCkKK3sKKyAgICBpZiAobWF0cml4
LmlzSWRlbnRpdHkoKSkKKyAgICAgICAgcmV0dXJuICp0aGlzOworCisgICAgaWYgKG1hdHJpeC5p
c0lkZW50aXR5T3JUcmFuc2xhdGlvbigpKQorICAgICAgICByZXR1cm4gdHJhbnNsYXRlKG1hdHJp
eC5lKCksIG1hdHJpeC5mKCkpOworCisgICAgcmV0dXJuIG11bHRpcGx5KG1hdHJpeC50b1RyYW5z
Zm9ybWF0aW9uTWF0cml4KCkpOworfQorCiB2b2lkIFRyYW5zZm9ybWF0aW9uTWF0cml4OjptdWx0
VmVjTWF0cml4KGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlJiByZXN1bHRYLCBkb3VibGUmIHJl
c3VsdFkpIGNvbnN0CiB7CiAgICAgcmVzdWx0WCA9IG1fbWF0cml4WzNdWzBdICsgeCAqIG1fbWF0
cml4WzBdWzBdICsgeSAqIG1fbWF0cml4WzFdWzBdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlv
bk1hdHJpeC5oCmluZGV4IGM5NTExNzdhMzEwYjc2MDRjMjE1OWNkNmUyNDk3ZmQ4ZjI1N2I4M2Iu
Ljg1NWQyZTcyYTE1YTdjODYzNzc4NjU2ZTRmMzg2ZWE5YThjMjI2MWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25N
YXRyaXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKQEAgLTI0OSw2ICsyNDksOCBAQCBwdWJsaWM6CiAKICAg
ICAvLyB0aGlzID0gbWF0ICogdGhpcy4KICAgICBXRUJDT1JFX0VYUE9SVCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgbXVsdGlwbHkoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKKyAgICAvLyBJ
ZGVudGljYWwgdG8gbXVsdGlwbHkoVHJhbnNmb3JtYXRpb25NYXRyaXgmKSwgYnV0IHNhdmluZyBh
IEFmZmluZVRyYW5zZm9ybSAtPiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCByb3VuZHRyaXAgZm9yIGlk
ZW50aXR5IG9yIHRyYW5zbGF0aW9uIG1hdHJpY2VzLgorICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBtdWx0aXBseUFmZmluZVRyYW5zZm9ybShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKIAogICAg
IFdFQkNPUkVfRVhQT1JUIFRyYW5zZm9ybWF0aW9uTWF0cml4JiBzY2FsZShkb3VibGUpOwogICAg
IFdFQkNPUkVfRVhQT1JUIFRyYW5zZm9ybWF0aW9uTWF0cml4JiBzY2FsZU5vblVuaWZvcm0oZG91
YmxlIHN4LCBkb3VibGUgc3kpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApp
bmRleCA0ZDRhYTI3YzhiNTQzZjg5ZmVhMTFiNzQxZmJhNDcwMzRiZWMxMTE4Li5lMDBjNGE5YjZm
NmZmMGU4YjJhYjhlNzgyYjRhMGI2ZjM2MTcyMTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmNwcApAQCAtNjYyLDEzICs2NjIsNiBAQCB2b2lkIFJlbmRlckJveDo6YWJzb2x1
dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAog
ICAgIHF1YWRzLmFwcGVuZChsb2NhbFRvQWJzb2x1dGVRdWFkKGxvY2FsUmVjdCwgVXNlVHJhbnNm
b3Jtcywgd2FzRml4ZWQpKTsKIH0KIAotdm9pZCBSZW5kZXJCb3g6OnVwZGF0ZUxheWVyVHJhbnNm
b3JtKCkKLXsKLSAgICAvLyBUcmFuc2Zvcm0tb3JpZ2luIGRlcGVuZHMgb24gYm94IHNpemUsIHNv
IHdlIG5lZWQgdG8gdXBkYXRlIHRoZSBsYXllciB0cmFuc2Zvcm0gYWZ0ZXIgbGF5b3V0LgotICAg
IGlmIChoYXNMYXllcigpKQotICAgICAgICBsYXllcigpLT51cGRhdGVUcmFuc2Zvcm0oKTsKLX0K
LQogdm9pZCBSZW5kZXJCb3g6OmFwcGx5VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0
LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gs
IE9wdGlvblNldDxSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPiBvcHRpb25z
KSBjb25zdAogewogICAgIHN0eWxlLmFwcGx5VHJhbnNmb3JtKHQsIGJvdW5kaW5nQm94LCBvcHRp
b25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAppbmRleCAyOGUwYWQxYjIwZjU0
YmIxMjkxMTU5NGM2OGY4ZWZhOGY5Y2ZjZjUzLi5jOTI0YTczODk2YTI5N2ZhZGQ0NDM1ZGU3ZGE1
ZmIzOGFmODViZmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCkBAIC0yMTgs
NyArMjE4LDYgQEAgcHVibGljOgogICAgIHZvaWQgYWRkT3ZlcmZsb3dGcm9tQ2hpbGQoY29uc3Qg
UmVuZGVyQm94KiBjaGlsZCkgeyBhZGRPdmVyZmxvd0Zyb21DaGlsZChjaGlsZCwgY2hpbGQtPmxv
Y2F0aW9uT2Zmc2V0KCkpOyB9CiAgICAgdm9pZCBhZGRPdmVyZmxvd0Zyb21DaGlsZChjb25zdCBS
ZW5kZXJCb3gqIGNoaWxkLCBjb25zdCBMYXlvdXRTaXplJiBkZWx0YSk7CiAKLSAgICB2b2lkIHVw
ZGF0ZUxheWVyVHJhbnNmb3JtKCk7CiAgICAgdm9pZCBhcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGlu
Z0JveCwgT3B0aW9uU2V0PFJlbmRlclN0eWxlOjpUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb24+ID0g
UmVuZGVyU3R5bGU6OmFsbFRyYW5zZm9ybU9wZXJhdGlvbnMpIGNvbnN0IG92ZXJyaWRlOwogCiAg
ICAgTGF5b3V0U2l6ZSBjb250ZW50U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHsgY29udGVudFdpZHRo
KCksIGNvbnRlbnRIZWlnaHQoKSB9OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcAppbmRleCAxZWU2ZTRlM2QwOTViNGU3NDNhMzY2YjMxOGQ4NjY4YzNhZDM1OTM2Li42
ZTI5NDlmNzE3ZmM4NzgyNjUzMjQwNTE5NDEzYmY0YTBjYWY1M2U0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTU1Miw2ICs1NTIsOSBAQCBzdGF0aWMgYm9v
bCBjYW5DcmVhdGVTdGFja2luZ0NvbnRleHQoY29uc3QgUmVuZGVyTGF5ZXImIGxheWVyKQogewog
ICAgIGF1dG8mIHJlbmRlcmVyID0gbGF5ZXIucmVuZGVyZXIoKTsKICAgICByZXR1cm4gcmVuZGVy
ZXIuaGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCkKKyNpZiBFTkFCTEUoTEFZRVJfQkFTRURf
U1ZHX0VOR0lORSkKKyAgICAgICAgfHwgcmVuZGVyZXIuaGFzU1ZHVHJhbnNmb3JtKCkKKyNlbmRp
ZgogICAgICAgICB8fCByZW5kZXJlci5oYXNDbGlwUGF0aCgpCiAgICAgICAgIHx8IHJlbmRlcmVy
Lmhhc0ZpbHRlcigpCiAgICAgICAgIHx8IHJlbmRlcmVyLmhhc01hc2soKQpAQCAtMTM1MCwxOSAr
MTM1MywxNCBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBSZW5kZXJMYXllcjo6Y3VycmVudFRyYW5z
Zm9ybShPcHRpb25TZXQ8UmVuZGVyU3R5bGU6OlRyYW5zZgogICAgIGlmICghbV90cmFuc2Zvcm0p
CiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICAvLyBGSVhNRTogW0xCU0VdIFVwc3RyZWFtIHRy
YW5zZm9ybSBzdXBwb3J0IGZvciBSZW5kZXJTVkdNb2RlbE9iamVjdCBkZXJpdmVkIHJlbmRlcmVy
cwotICAgIGlmICghaXM8UmVuZGVyQm94PihyZW5kZXJlcigpKSkKLSAgICAgICAgcmV0dXJuIHsg
fTsKLQotICAgIGF1dG8mIHJlbmRlckJveCA9IGRvd25jYXN0PFJlbmRlckJveD4ocmVuZGVyZXIo
KSk7Ci0KICAgICAvLyBtX3RyYW5zZm9ybSBpbmNsdWRlcyB0cmFuc2Zvcm0tb3JpZ2luIGFuZCBp
cyBhZmZlY3RlZCBieSB0aGUgY2hvaWNlIG9mIHRoZSB0cmFuc2Zvcm0tYm94LgogICAgIC8vIFRo
ZXJlZm9yZSB3ZSBjYW4gb25seSB1c2UgdGhlIGNhY2hlZCBtX3RyYW5zZm9ybSwgaWYgdGhlIGFu
aW1hdGlvbiBkb2Vzbid0IGFsdGVyIHRyYW5zZm9ybS1ib3ggb3IgZXhjbHVkZXMgdHJhbnNmb3Jt
LW9yaWdpbi4KIAogICAgIC8vIFF1ZXJ5IHRoZSBhbmltYXRlZFN0eWxlKCkgdG8gb2J0YWluIHRo
ZSBjdXJyZW50IHRyYW5zZm9ybWF0aW9uLCB3aGVuIGFjY2VsZXJhdGVkIHRyYW5zZm9ybSBhbmlt
YXRpb25zIGFyZSBydW5uaW5nLgotICAgIGF1dG8gc3R5bGVhYmxlID0gU3R5bGVhYmxlOjpmcm9t
UmVuZGVyZXIocmVuZGVyQm94KTsKKyAgICBhdXRvIHN0eWxlYWJsZSA9IFN0eWxlYWJsZTo6ZnJv
bVJlbmRlcmVyKHJlbmRlcmVyKCkpOwogICAgIGlmICgoc3R5bGVhYmxlICYmIHN0eWxlYWJsZS0+
aXNSdW5uaW5nQWNjZWxlcmF0ZWRUcmFuc2Zvcm1BbmltYXRpb24oKSkgfHwgIW9wdGlvbnMuY29u
dGFpbnMoUmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbjo6VHJhbnNmb3JtT3Jp
Z2luKSkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IGFuaW1hdGVkU3R5
bGUgPSByZW5kZXJCb3guYW5pbWF0ZWRTdHlsZSgpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IGFuaW1hdGVkU3R5bGUgPSByZW5kZXJlcigpLmFuaW1hdGVkU3R5bGUoKTsK
KwogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm07CiAgICAgICAgIHVwZGF0
ZVRyYW5zZm9ybUZyb21TdHlsZSh0cmFuc2Zvcm0sICphbmltYXRlZFN0eWxlLCBvcHRpb25zKTsK
ICAgICAgICAgcmV0dXJuIHRyYW5zZm9ybTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcAppbmRleCA4ZDk5MGYxZDUzMWJlNjNmMmIy
NWQwNjE0NWZiMTMxYzQxMDA3MjZjLi4xOTQwNTY4ZWFmOWRjYjYxOTYyMjljZmU1YmIyNWZlZTAz
OWJmNDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
TW9kZWxPYmplY3QuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJT
Y3JvbGxhYmxlQXJlYS5oIgogI2luY2x1ZGUgIlJlbmRlclNWR01vZGVsT2JqZWN0LmgiCiAjaW5j
bHVkZSAiUmVuZGVyVmlldy5oIgorI2luY2x1ZGUgIlNWR0dyYXBoaWNzRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmgiCiAj
aW5jbHVkZSAiVHJhbnNmb3JtU3RhdGUuaCIKQEAgLTIzMSw2ICsyMzIsMTMgQEAgdm9pZCBSZW5k
ZXJMYXllck1vZGVsT2JqZWN0OjpzdXNwZW5kQW5pbWF0aW9ucyhNb25vdG9uaWNUaW1lIHRpbWUp
CiAgICAgbGF5ZXIoKS0+YmFja2luZygpLT5zdXNwZW5kQW5pbWF0aW9ucyh0aW1lKTsKIH0KIAor
dm9pZCBSZW5kZXJMYXllck1vZGVsT2JqZWN0Ojp1cGRhdGVMYXllclRyYW5zZm9ybSgpCit7Cisg
ICAgLy8gVHJhbnNmb3JtLW9yaWdpbiBkZXBlbmRzIG9uIGJveCBzaXplLCBzbyB3ZSBuZWVkIHRv
IHVwZGF0ZSB0aGUgbGF5ZXIgdHJhbnNmb3JtIGFmdGVyIGxheW91dC4KKyAgICBpZiAoaGFzTGF5
ZXIoKSkKKyAgICAgICAgbGF5ZXIoKS0+dXBkYXRlVHJhbnNmb3JtKCk7Cit9CisKICNpZiBFTkFC
TEUoTEFZRVJfQkFTRURfU1ZHX0VOR0lORSkKIHN0ZDo6b3B0aW9uYWw8TGF5b3V0UmVjdD4gUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdDo6Y29tcHV0ZVZpc2libGVSZWN0SW5TVkdDb250YWluZXIoY29u
c3QgTGF5b3V0UmVjdCYgcmVjdCwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogY29udGFp
bmVyLCBSZW5kZXJPYmplY3Q6OlZpc2libGVSZWN0Q29udGV4dCBjb250ZXh0KSBjb25zdAogewpA
QCAtMzE2LDYgKzMyNCwzOCBAQCB2b2lkIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6Om1hcExvY2Fs
VG9TVkdDb250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdAogCiAgICAgY29udGFp
bmVyLT5tYXBMb2NhbFRvQ29udGFpbmVyKGFuY2VzdG9yQ29udGFpbmVyLCB0cmFuc2Zvcm1TdGF0
ZSwgbW9kZSwgd2FzRml4ZWQpOwogfQorCit2b2lkIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OmFw
cGx5U1ZHVHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIFNWR0dyYXBo
aWNzRWxlbWVudCYgZ3JhcGhpY3NFbGVtZW50LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNv
bnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gsIE9wdGlvblNldDxSZW5kZXJTdHlsZTo6VHJhbnNm
b3JtT3BlcmF0aW9uT3B0aW9uPiBvcHRpb25zKSBjb25zdAoreworICAgIC8vIFRoaXMgY2hlY2sg
ZG9lcyBub3QgdXNlIHN0eWxlLmhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgpIG9uIHB1cnBv
c2UgLS0gd2Ugb25seSB3YW50IHRvIGtub3cgaWYgZWl0aGVyIHRoZSAndHJhbnNmb3JtJyBwcm9w
ZXJ0eSwgYW4KKyAgICAvLyBvZmZzZXQgcGF0aCwgb3IgdGhlIGluZGl2aWR1YWwgdHJhbnNmb3Jt
IG9wZXJhdGlvbnMgYXJlIHNldCAocGVyc3BlY3RpdmUgLyB0cmFuc2Zvcm0tc3R5bGU6IHByZXNl
cnZlLTNkIGFyZSBub3QgcmVsZXZhbnQgaGVyZSkuCisgICAgYm9vbCBoYXNDU1NUcmFuc2Zvcm0g
PSBzdHlsZS5oYXNUcmFuc2Zvcm0oKSB8fCBzdHlsZS5yb3RhdGUoKSB8fCBzdHlsZS50cmFuc2xh
dGUoKSB8fCBzdHlsZS5zY2FsZSgpOworCisgICAgYm9vbCBhZmZlY3RlZEJ5VHJhbnNmb3JtT3Jp
Z2luID0gZmFsc2U7CisgICAgc3RkOjpvcHRpb25hbDxBZmZpbmVUcmFuc2Zvcm0+IHN2Z1RyYW5z
Zm9ybTsKKworICAgIGlmIChoYXNDU1NUcmFuc2Zvcm0pCisgICAgICAgIGFmZmVjdGVkQnlUcmFu
c2Zvcm1PcmlnaW4gPSBzdHlsZS5hZmZlY3RlZEJ5VHJhbnNmb3JtT3JpZ2luKCk7CisgICAgZWxz
ZSBpZiAoYXV0byBhZmZpbmVUcmFuc2Zvcm0gPSBncmFwaGljc0VsZW1lbnQuYW5pbWF0ZWRMb2Nh
bFRyYW5zZm9ybSgpOyAhYWZmaW5lVHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkgeworICAgICAgICBz
dmdUcmFuc2Zvcm0gPSBhZmZpbmVUcmFuc2Zvcm07CisgICAgICAgIGFmZmVjdGVkQnlUcmFuc2Zv
cm1PcmlnaW4gPSBhZmZpbmVUcmFuc2Zvcm0uYSgpICE9IDEgfHwgYWZmaW5lVHJhbnNmb3JtLmIo
KSB8fCBhZmZpbmVUcmFuc2Zvcm0uYygpIHx8IGFmZmluZVRyYW5zZm9ybS5kKCkgIT0gMTsKKyAg
ICB9CisKKyAgICBpZiAoIWhhc0NTU1RyYW5zZm9ybSAmJiAhc3ZnVHJhbnNmb3JtLmhhc192YWx1
ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBGbG9hdFBvaW50M0Qgb3JpZ2luVHJhbnNsYXRl
OworICAgIGlmIChvcHRpb25zLmNvbnRhaW5zKFJlbmRlclN0eWxlOjpUcmFuc2Zvcm1PcGVyYXRp
b25PcHRpb246OlRyYW5zZm9ybU9yaWdpbikgJiYgYWZmZWN0ZWRCeVRyYW5zZm9ybU9yaWdpbikK
KyAgICAgICAgb3JpZ2luVHJhbnNsYXRlID0gc3R5bGUuYXBwbHlUcmFuc2Zvcm1PcmlnaW4odHJh
bnNmb3JtLCBib3VuZGluZ0JveCk7CisKKyAgICAvLyBDU1MgdHJhbnNmb3JtcyB0YWtlIHByZWNl
ZGVuY2Ugb3ZlciBTVkcgdHJhbnNmb3Jtcy4KKyAgICBpZiAoaGFzQ1NTVHJhbnNmb3JtKQorICAg
ICAgICBzdHlsZS5hcHBseUNTU1RyYW5zZm9ybSh0cmFuc2Zvcm0sIGJvdW5kaW5nQm94LCBvcHRp
b25zKTsKKyAgICBlbHNlCisgICAgICAgIHRyYW5zZm9ybS5tdWx0aXBseUFmZmluZVRyYW5zZm9y
bShzdmdUcmFuc2Zvcm0udmFsdWUoKSk7CisKKyAgICBzdHlsZS51bmFwcGx5VHJhbnNmb3JtT3Jp
Z2luKHRyYW5zZm9ybSwgb3JpZ2luVHJhbnNsYXRlKTsKK30KICNlbmRpZgogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
TW9kZWxPYmplY3QuaAppbmRleCBkNDRmZjZhZDUyZDNhNTlmNTFkMWMwZmVhZjZjZTc5NWE1ZTBl
ZGUwLi4xMjRhZWJkNGQ3NDAzM2M3NjUxYzkwYWYzZWZlMGI3ZDlkZmY3ZGY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmgKQEAgLTI4
LDYgKzI4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBLZXlmcmFtZUxpc3Q7CiBj
bGFzcyBSZW5kZXJMYXllcjsKK2NsYXNzIFNWR0dyYXBoaWNzRWxlbWVudDsKIAogc3RydWN0IExh
eWVyUmVwYWludFJlY3RzIHsKICAgICBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3Q7CkBA
IC03NSw4ICs3NiwxMiBAQCBwdWJsaWM6CiAgICAgLy8gUHJvdmlkZXMgdGhlIFNWRyBpbXBsZW1l
bnRhdGlvbiBmb3IgbWFwTG9jYWxUb0NvbnRhaW5lcigpLgogICAgIC8vIFRoaXMgbGl2ZXMgaW4g
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCwgd2hpY2ggaXMgdGhlIGNvbW1vbiBiYXNlLWNsYXNzIGZv
ciBhbGwgU1ZHIHJlbmRlcmVycy4KICAgICB2b2lkIG1hcExvY2FsVG9TVkdDb250YWluZXIoY29u
c3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0b3JDb250YWluZXIsIFRyYW5zZm9ybVN0
YXRlJiwgT3B0aW9uU2V0PE1hcENvb3JkaW5hdGVzTW9kZT4sIGJvb2wqIHdhc0ZpeGVkKSBjb25z
dDsKKworICAgIHZvaWQgYXBwbHlTVkdUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBT
VkdHcmFwaGljc0VsZW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZsb2F0UmVjdCYg
Ym91bmRpbmdCb3gsIE9wdGlvblNldDxSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0
aW9uPikgY29uc3Q7CiAjZW5kaWYKIAorICAgIHZvaWQgdXBkYXRlTGF5ZXJUcmFuc2Zvcm0oKTsK
KwogICAgIHZpcnR1YWwgdm9pZCBhcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYs
IGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCwgT3B0aW9u
U2V0PFJlbmRlclN0eWxlOjpUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb24+ID0gUmVuZGVyU3R5bGU6
OmFsbFRyYW5zZm9ybU9wZXJhdGlvbnMpIGNvbnN0ID0gMDsKIAogcHJvdGVjdGVkOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCAxNTkwZDIwZGQwYjJiMmQ4
YzRmYzZjYmIzOTQ0OGY0ZTRhZDUwMDRkLi4wYTViN2NkYTU5YmQ2ZTQyM2I1MjY1NWZmNmQ5N2Yy
ZmQ1OWFjN2VjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApA
QCAtMTk3NSw2ICsxOTc1LDE0IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpzZXRIYXNPdXRsaW5lQXV0
b0FuY2VzdG9yKGJvb2wgaGFzT3V0bGluZUF1dG9BbmNlc3RvcikKICAgICAgICAgZW5zdXJlUmFy
ZURhdGEoKS5zZXRIYXNPdXRsaW5lQXV0b0FuY2VzdG9yKGhhc091dGxpbmVBdXRvQW5jZXN0b3Ip
OwogfQogCisjaWYgRU5BQkxFKExBWUVSX0JBU0VEX1NWR19FTkdJTkUpCit2b2lkIFJlbmRlck9i
amVjdDo6c2V0SGFzU1ZHVHJhbnNmb3JtKGJvb2wgaGFzU1ZHVHJhbnNmb3JtKQoreworICAgIGlm
IChoYXNTVkdUcmFuc2Zvcm0gfHwgaGFzUmFyZURhdGEoKSkKKyAgICAgICAgZW5zdXJlUmFyZURh
dGEoKS5zZXRIYXNTVkdUcmFuc2Zvcm0oaGFzU1ZHVHJhbnNmb3JtKTsKK30KKyNlbmRpZgorCiB2
b2lkIFJlbmRlck9iamVjdDo6c2V0UGFpbnRDb250YWlubWVudEFwcGxpZXMoYm9vbCBwYWludENv
bnRhaW5tZW50QXBwbGllcykKIHsKICAgICBpZiAocGFpbnRDb250YWlubWVudEFwcGxpZXMgfHwg
aGFzUmFyZURhdGEoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRl
eCBkMWNlMDdiZTM5NjU5YTVlYWZhNzI3NjU1YjMyOTQyZGY0M2EwOThmLi44YmRmY2EyNGVmODIy
NGE0OWJmYmZmOGExYTFiMTJiMDdmNDdmMDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5oCkBAIC00MTUsNiArNDE1LDEyIEBAIHB1YmxpYzoKICAgICBib29sIGhhc091
dGxpbmVBdXRvQW5jZXN0b3IoKSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5oYXNSYXJlRGF0
YSgpICYmIHJhcmVEYXRhKCkuaGFzT3V0bGluZUF1dG9BbmNlc3RvcigpOyB9CiAgICAgYm9vbCBw
YWludENvbnRhaW5tZW50QXBwbGllcygpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmhhc1Jh
cmVEYXRhKCkgJiYgcmFyZURhdGEoKS5wYWludENvbnRhaW5tZW50QXBwbGllcygpOyB9CiAKKyNp
ZiBFTkFCTEUoTEFZRVJfQkFTRURfU1ZHX0VOR0lORSkKKyAgICBib29sIGhhc1NWR1RyYW5zZm9y
bSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmhhc1JhcmVEYXRhKCkgJiYgcmFyZURhdGEo
KS5oYXNTVkdUcmFuc2Zvcm0oKTsgfQorI2Vsc2UKKyAgICBib29sIGhhc1NWR1RyYW5zZm9ybSgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisjZW5kaWYKKwogICAgIGJvb2wgaXNFeGNsdWRlZEZy
b21Ob3JtYWxMYXlvdXQoKSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5pc0V4Y2x1ZGVkRnJv
bU5vcm1hbExheW91dCgpOyB9CiAgICAgdm9pZCBzZXRJc0V4Y2x1ZGVkRnJvbU5vcm1hbExheW91
dChib29sIGV4Y2x1ZGVkKSB7IG1fYml0ZmllbGRzLnNldElzRXhjbHVkZWRGcm9tTm9ybWFsTGF5
b3V0KGV4Y2x1ZGVkKTsgfQogICAgIGJvb2wgaXNFeGNsdWRlZEFuZFBsYWNlZEluQm9yZGVyKCkg
Y29uc3QgeyByZXR1cm4gaXNFeGNsdWRlZEZyb21Ob3JtYWxMYXlvdXQoKSAmJiBpc0xlZ2VuZCgp
OyB9CkBAIC00NDksNyArNDU1LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzUG90ZW50aWFsbHlT
Y3JvbGxhYmxlT3ZlcmZsb3coKSBjb25zdDsKIAogICAgIGJvb2wgaGFzVHJhbnNmb3JtUmVsYXRl
ZFByb3BlcnR5KCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuaGFzVHJhbnNmb3JtUmVsYXRl
ZFByb3BlcnR5KCk7IH0gLy8gVHJhbnNmb3JtLCBwZXJzcGVjdGl2ZSBvciB0cmFuc2Zvcm0tc3R5
bGU6IHByZXNlcnZlLTNkLgotICAgIGJvb2wgaGFzVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4g
aGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCkgJiYgKHN0eWxlKCkuaGFzVHJhbnNmb3JtKCkg
fHwgc3R5bGUoKS50cmFuc2xhdGUoKSB8fCBzdHlsZSgpLnNjYWxlKCkgfHwgc3R5bGUoKS5yb3Rh
dGUoKSk7IH0KKyAgICBib29sIGhhc1RyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIGhhc1RyYW5z
Zm9ybVJlbGF0ZWRQcm9wZXJ0eSgpICYmIChzdHlsZSgpLmhhc1RyYW5zZm9ybSgpIHx8IHN0eWxl
KCkudHJhbnNsYXRlKCkgfHwgc3R5bGUoKS5zY2FsZSgpIHx8IHN0eWxlKCkucm90YXRlKCkgfHwg
aGFzU1ZHVHJhbnNmb3JtKCkpOyB9CiAgICAgYm9vbCBoYXNUcmFuc2Zvcm1PclBlc3BlY3RpdmUo
KSBjb25zdCB7IHJldHVybiBoYXNUcmFuc2Zvcm1SZWxhdGVkUHJvcGVydHkoKSAmJiAoaGFzVHJh
bnNmb3JtKCkgfHwgc3R5bGUoKS5oYXNQZXJzcGVjdGl2ZSgpKTsgfQogCiAgICAgaW5saW5lIGJv
b2wgcHJlc2VydmVzTmV3bGluZSgpIGNvbnN0OwpAQCAtNTE0LDYgKzUyMCw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldElzUmVuZGVyRnJhZ21lbnRlZEZsb3coYm9vbCA9IHRydWUpOwogICAgIHZv
aWQgc2V0SGFzT3V0bGluZUF1dG9BbmNlc3Rvcihib29sID0gdHJ1ZSk7CiAgICAgdm9pZCBzZXRQ
YWludENvbnRhaW5tZW50QXBwbGllcyhib29sID0gdHJ1ZSk7CisjaWYgRU5BQkxFKExBWUVSX0JB
U0VEX1NWR19FTkdJTkUpCisgICAgdm9pZCBzZXRIYXNTVkdUcmFuc2Zvcm0oYm9vbCA9IHRydWUp
OworI2VuZGlmCiAKICAgICAvLyBIb29rIHNvIHRoYXQgUmVuZGVyVGV4dENvbnRyb2wgY2FuIHJl
dHVybiB0aGUgbGluZSBoZWlnaHQgb2YgaXRzIGlubmVyIHJlbmRlcmVyLgogICAgIC8vIEZvciBv
dGhlciByZW5kZXJlcnMsIHRoZSB2YWx1ZSBpcyB0aGUgc2FtZSBhcyBsaW5lSGVpZ2h0KGZhbHNl
KS4KQEAgLTk0Myw2ICs5NTIsOSBAQCBwcml2YXRlOgogICAgICAgICBBRERfQk9PTEVBTl9CSVRG
SUVMRChpc1JlbmRlckZyYWdtZW50ZWRGbG93LCBJc1JlbmRlckZyYWdtZW50ZWRGbG93KTsKICAg
ICAgICAgQUREX0JPT0xFQU5fQklURklFTEQoaGFzT3V0bGluZUF1dG9BbmNlc3RvciwgSGFzT3V0
bGluZUF1dG9BbmNlc3Rvcik7CiAgICAgICAgIEFERF9CT09MRUFOX0JJVEZJRUxEKHBhaW50Q29u
dGFpbm1lbnRBcHBsaWVzLCBQYWludENvbnRhaW5tZW50QXBwbGllcyk7CisjaWYgRU5BQkxFKExB
WUVSX0JBU0VEX1NWR19FTkdJTkUpCisgICAgICAgIEFERF9CT09MRUFOX0JJVEZJRUxEKGhhc1NW
R1RyYW5zZm9ybSwgSGFzU1ZHVHJhbnNmb3JtKTsKKyNlbmRpZgogCiAgICAgICAgIC8vIEZyb20g
UmVuZGVyRWxlbWVudAogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVmZXJlbmNlZFNWR1Jlc291
cmNlcz4gcmVmZXJlbmNlZFNWR1Jlc291cmNlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAppbmRleCBiZGNjNTgxNWI0NjYyN2Yw
ZmYxYzVhMTQ4MDI0MGZmNjU3Yjk0N2VmLi4zNDVkNjM2MTM0ZDVmZGJjZjkyNjdiZmNkYWNjNGNm
NjJjYjNjNmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0NvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdDb250YWluZXIuY3BwCkBAIC01Miw2ICs1MiwzNiBAQCBSZW5kZXJTVkdDb250YWluZXI6
OlJlbmRlclNWR0NvbnRhaW5lcihTVkdFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0
eWxlKQogCiBSZW5kZXJTVkdDb250YWluZXI6On5SZW5kZXJTVkdDb250YWluZXIoKSA9IGRlZmF1
bHQ7CiAKKy8vIEhlbHBlciBjbGFzcywgbW92ZSB0byBpdHMgb3duIGZpbGUgb25jZSB1dGlsaXpl
ZCBpbiBtb3JlIHRoYW4gb25lIHBsYWNlLgorY2xhc3MgU1ZHTGF5ZXJUcmFuc2Zvcm1VcGRhdGVy
IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTVkdMYXllclRyYW5zZm9ybVVwZGF0ZXIpOwor
cHVibGljOgorICAgIFNWR0xheWVyVHJhbnNmb3JtVXBkYXRlcihSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0JiByZW5kZXJlcikKKyAgICAgICAgOiBtX3JlbmRlcmVyKHJlbmRlcmVyKQorICAgIHsKKyAg
ICAgICAgaWYgKCFtX3JlbmRlcmVyLmhhc0xheWVyKCkpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgbV90cmFuc2Zvcm1SZWZlcmVuY2VCb3ggPSBtX3JlbmRlcmVyLnRyYW5zZm9ybVJl
ZmVyZW5jZUJveFJlY3QoKTsKKyAgICAgICAgbV9yZW5kZXJlci51cGRhdGVMYXllclRyYW5zZm9y
bSgpOworICAgIH0KKworCisgICAgflNWR0xheWVyVHJhbnNmb3JtVXBkYXRlcigpCisgICAgewor
ICAgICAgICBpZiAoIW1fcmVuZGVyZXIuaGFzTGF5ZXIoKSkKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgaWYgKG1fcmVuZGVyZXIudHJhbnNmb3JtUmVmZXJlbmNlQm94UmVjdCgpID09IG1f
dHJhbnNmb3JtUmVmZXJlbmNlQm94KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1f
cmVuZGVyZXIudXBkYXRlTGF5ZXJUcmFuc2Zvcm0oKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCYgbV9yZW5kZXJlcjsKKyAgICBGbG9hdFJlY3QgbV90cmFu
c2Zvcm1SZWZlcmVuY2VCb3g7Cit9OworCiB2b2lkIFJlbmRlclNWR0NvbnRhaW5lcjo6bGF5b3V0
KCkKIHsKICAgICBTdGFja1N0YXRzOjpMYXlvdXRDaGVja1BvaW50IGxheW91dENoZWNrUG9pbnQ7
CkBAIC02NCwxMyArOTQsMTAgQEAgdm9pZCBSZW5kZXJTVkdDb250YWluZXI6OmxheW91dCgpCiAg
ICAgLy8gVXBkYXRlIGxheWVyIHRyYW5zZm9ybSBiZWZvcmUgbGF5aW5nIG91dCBjaGlsZHJlbiAo
U1ZHIG5lZWRzIGFjY2VzcyB0byB0aGUgdHJhbnNmb3JtIG1hdHJpY2VzIGR1cmluZyBsYXlvdXQg
Zm9yIG9uLXNjcmVlbiB0ZXh0IGZvbnQtc2l6ZSBjYWxjdWxhdGlvbnMpLgogICAgIC8vIEV2ZW50
dWFsbHkgcmUtdXBkYXRlIGlmIHRoZSB0cmFuc2Zvcm0gcmVmZXJlbmNlIGJveCwgcmVsZXZhbnQg
Zm9yIHRyYW5zZm9ybS1vcmlnaW4sIGhhcyBjaGFuZ2VkIGR1cmluZyBsYXlvdXQuCiAgICAgewot
ICAgICAgICAvLyBGSVhNRTogW0xCU0VdIFVwc3RyZWFtIFNWR0xheWVyVHJhbnNmb3JtVXBkYXRl
cgotICAgICAgICAvLyBTVkdMYXllclRyYW5zZm9ybVVwZGF0ZXIgdHJhbnNmb3JtVXBkYXRlcigq
dGhpcyk7CisgICAgICAgIFNWR0xheWVyVHJhbnNmb3JtVXBkYXRlciB1cGRhdGVUcmFuc2Zvcm0o
KnRoaXMpOwogICAgICAgICBsYXlvdXRDaGlsZHJlbigpOwogICAgIH0KIAotICAgIHVwZGF0ZUxh
eWVySW5mb3JtYXRpb24oKTsKLQogICAgIC8vIEludmFsaWRhdGUgYWxsIHJlc291cmNlcyBvZiB0
aGlzIGNsaWVudCBpZiBvdXIgbGF5b3V0IGNoYW5nZWQuCiAgICAgaWYgKGV2ZXJIYWRMYXlvdXQo
KSAmJiBuZWVkc0xheW91dCgpKQogICAgICAgICBTVkdSZXNvdXJjZXNDYWNoZTo6Y2xpZW50TGF5
b3V0Q2hhbmdlZCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0NvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdDb250YWluZXIuaAppbmRleCA5NzVhOGY2MmNkMDNjMzIxM2FiYjg1NGNmNzRkMTY2
NWQ5Yzk0NDVjLi4wMTk0YmFiMTNlZmFjN2Q3OTg0ODlkYjZmZTc1MzdkZTQxMWEwOTc3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgK
QEAgLTU1LDcgKzU1LDYgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXRDaGls
ZHJlbigpOwogICAgIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRU
ZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBj
b25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pIG92ZXJy
aWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxheWVySW5mb3JtYXRpb24oKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlVmlld3BvcnQoKTsKICAgICB2aXJ0dWFsIGJvb2wgcG9p
bnRJc0luc2lkZVZpZXdwb3J0Q2xpcChjb25zdCBGbG9hdFBvaW50JikgeyByZXR1cm4gdHJ1ZTsg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01v
ZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9k
ZWxPYmplY3QuY3BwCmluZGV4IGIxOTI5NGI2NzU4YzlkMTdiNmM4NTA5YjIxYWQxNzE0YzE4OTM0
ZjguLmM5Njk1ZTZiNmE0M2Y5Y2Y0ZmYwMzk1YWMzNjFhNDMyNjFkYjhlMjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3Bw
CkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiUmVuZGVyR2VvbWV0cnlNYXAuaCIKICNpbmNs
dWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyTW9kZWxPYmplY3QuaCIK
KyNpbmNsdWRlICJSZW5kZXJTVkdNb2RlbE9iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJSZW5k
ZXJTVkdSZXNvdXJjZS5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTVkdF
bGVtZW50SW5saW5lcy5oIgpAQCAtNTksMTUgKzYwLDEzIEBAIFJlbmRlclNWR01vZGVsT2JqZWN0
OjpSZW5kZXJTVkdNb2RlbE9iamVjdChTVkdFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYm
IHN0CiB2b2lkIFJlbmRlclNWR01vZGVsT2JqZWN0Ojp1cGRhdGVGcm9tU3R5bGUoKQogewogICAg
IFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OnVwZGF0ZUZyb21TdHlsZSgpOwotICAgIHNldEhhc1Ry
YW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eShzdHlsZSgpLmhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0
eSgpKTsKIAotICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07Ci0gICAgaWYgKGlzPFNWR0dy
YXBoaWNzRWxlbWVudD4obm9kZUZvck5vbkFub255bW91cygpKSkKLSAgICAgICAgdHJhbnNmb3Jt
ID0gZG93bmNhc3Q8U1ZHR3JhcGhpY3NFbGVtZW50Pihub2RlRm9yTm9uQW5vbnltb3VzKCkpLmFu
aW1hdGVkTG9jYWxUcmFuc2Zvcm0oKTsKKyAgICBib29sIGhhc1NWR1RyYW5zZm9ybSA9IGZhbHNl
OworICAgIGlmIChpczxTVkdHcmFwaGljc0VsZW1lbnQ+KGVsZW1lbnQoKSkpCisgICAgICAgIGhh
c1NWR1RyYW5zZm9ybSA9ICFkb3duY2FzdDxTVkdHcmFwaGljc0VsZW1lbnQ+KGVsZW1lbnQoKSku
YW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSgpLmlzSWRlbnRpdHkoKTsKIAotICAgIC8vIEZJWE1FOiBb
TEJTRV0gVXBzdHJlYW0gUmVuZGVyT2JqZWN0IGNoYW5nZXMKLSAgICAvLyBpZiAoIXRyYW5zZm9y
bS5pc0lkZW50aXR5KCkpCi0gICAgLy8gICAgIHNldEhhc1NWR1RyYW5zZm9ybSgpOworICAgIHNl
dEhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eShzdHlsZSgpLmhhc1RyYW5zZm9ybVJlbGF0ZWRQ
cm9wZXJ0eSgpIHx8IGhhc1NWR1RyYW5zZm9ybSk7CisgICAgc2V0SGFzU1ZHVHJhbnNmb3JtKGhh
c1NWR1RyYW5zZm9ybSk7CiB9CiAKIEZsb2F0UmVjdCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6Ym9y
ZGVyQm94UmVjdEluRnJhZ21lbnRFcXVpdmFsZW50KFJlbmRlckZyYWdtZW50Q29udGFpbmVyKiwg
UmVuZGVyQm94OjpSZW5kZXJCb3hGcmFnbWVudEluZm9GbGFncykgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCmluZGV4IDcxNmVhODMwNjg0
NTkzM2NiOGYwNDdhZThhOGQ5ZDI4NTAxYzhkNzUuLjgwYWQ4MDc3MDBmYTUzZTAxMmQwZjQ5MTE5
MTljYmFiODQ0Y2VkZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUm9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSb290LmNwcApAQCAtMzk2LDggKzM5Niw3IEBAIHZvaWQgUmVuZGVyU1ZHUm9vdDo6dXBk
YXRlRnJvbVN0eWxlKCkKIHsKICAgICBSZW5kZXJSZXBsYWNlZDo6dXBkYXRlRnJvbVN0eWxlKCk7
CiAKLSAgICAvLyBGSVhNRTogW0xCU0VdIFVwc3RyZWFtIFJlbmRlck9iamVjdCBjaGFuZ2VzCi0g
ICAgLy8gc2V0SGFzU1ZHVHJhbnNmb3JtKCk7CisgICAgc2V0SGFzU1ZHVHJhbnNmb3JtKCk7CiAK
ICAgICBpZiAoc2hvdWxkQXBwbHlWaWV3cG9ydENsaXAoKSkKICAgICAgICAgc2V0SGFzTm9uVmlz
aWJsZU92ZXJmbG93KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHU2hhcGUuY3BwCmluZGV4IDMyNTU3MjQxOTBiNzIwYWZkMzY2ODU1ODYyMDE2MGYwZjM4MTAx
OWUuLmNhYWY2YjM1YjBlMDUyMDAzZGY5MjAxZWVjMDAwNGQ1NDM1MWY0MDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCkBAIC0xNTQsOCAr
MTU0LDcgQEAgdm9pZCBSZW5kZXJTVkdTaGFwZTo6bGF5b3V0KCkKICAgICAgICAgc2V0TGF5b3V0
UmVjdChlbmNsb3NpbmdMYXlvdXRSZWN0KG1fZmlsbEJvdW5kaW5nQm94KSk7CiAgICAgfQogCi0g
ICAgLy8gRklYTUU6IFtMQlNFXSBVcHN0cmVhbSBTVkdMYXllclRyYW5zZm9ybVVwZGF0ZXIKLSAg
ICAvLyBTVkdSZW5kZXJTdXBwb3J0Ojp1cGRhdGVMYXllclRyYW5zZm9ybSgqdGhpcyk7CisgICAg
dXBkYXRlTGF5ZXJUcmFuc2Zvcm0oKTsKIAogICAgIC8vIEludmFsaWRhdGUgYWxsIHJlc291cmNl
cyBvZiB0aGlzIGNsaWVudCBpZiBvdXIgbGF5b3V0IGNoYW5nZWQuCiAgICAgaWYgKGV2ZXJIYWRM
YXlvdXQoKSAmJiBzZWxmTmVlZHNMYXlvdXQoKSkKQEAgLTUzNiw4ICs1MzUsNyBAQCB2b2lkIFJl
bmRlclNWR1NoYXBlOjpzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0
IFJlbmRlclN0eWxlJiBuZQogCiB2b2lkIFJlbmRlclNWR1NoYXBlOjphcHBseVRyYW5zZm9ybShU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUs
IGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gsIE9wdGlvblNldDxSZW5kZXJTdHlsZTo6VHJh
bnNmb3JtT3BlcmF0aW9uT3B0aW9uPiBvcHRpb25zKSBjb25zdAogewotICAgIC8vIEZJWE1FOiBb
TEJTRV0gVXBzdHJlYW0gQ1NTL1NWRyB0cmFuc2Zvcm0gc3VwcG9ydAotICAgIHN0eWxlLmFwcGx5
VHJhbnNmb3JtKHRyYW5zZm9ybSwgYm91bmRpbmdCb3gsIG9wdGlvbnMpOworICAgIGFwcGx5U1ZH
VHJhbnNmb3JtKHRyYW5zZm9ybSwgZ3JhcGhpY3NFbGVtZW50KCksIHN0eWxlLCBib3VuZGluZ0Jv
eCwgb3B0aW9ucyk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHU2hhcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHU2hhcGUuaAppbmRleCA3NDM2OGJkYWY2OWY5ZDE2MTkyOWNiMjEzZjEyNTRiYWM1NTVi
OWJkLi44OGNmZTllYzA2Njg5YWEyNWI4NTM1YzQzOThjY2E5ZWJmNzIzNzQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5oCkBAIC04Miw3ICs4Miw3
IEBAIHB1YmxpYzoKIAogICAgIEZsb2F0UmVjdCBjb21wdXRlTWFya2VyQm91bmRpbmdCb3goY29u
c3QgU1ZHQm91bmRpbmdCb3hDb21wdXRhdGlvbjo6RGVjb3JhdGlvbk9wdGlvbnMmKSBjb25zdDsK
IAotICAgIHZvaWQgYXBwbHlUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBS
ZW5kZXJTdHlsZSYsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gsIE9wdGlvblNldDxSZW5k
ZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPiA9IFJlbmRlclN0eWxlOjphbGxUcmFu
c2Zvcm1PcGVyYXRpb25zKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFwcGx5VHJhbnNmb3Jt
KFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBGbG9hdFJl
Y3QmIGJvdW5kaW5nQm94LCBPcHRpb25TZXQ8UmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlv
bk9wdGlvbj4gPSBSZW5kZXJTdHlsZTo6YWxsVHJhbnNmb3JtT3BlcmF0aW9ucykgY29uc3QgZmlu
YWw7CiAKIHByb3RlY3RlZDoKICAgICB2b2lkIGVsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVHJhbnNmb3Jt
YWJsZUNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1RyYW5zZm9ybWFibGVDb250YWluZXIuY3BwCmluZGV4IDkwMzEyMmJlOTdjNzUxYTNkNTJhOTRl
NzdmOGNhNzVmNjE0NGMxOTUuLmIwMGZiNTBhYTllMDAwMTc5N2ZjOTU1MDg1ODZhNmIyMTQwNzdm
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVHJh
bnNmb3JtYWJsZUNvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmNwcApAQCAtOTcsMTUgKzk3LDEzIEBA
IHZvaWQgUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcjo6dXBkYXRlRnJvbVN0eWxlKCkK
IHsKICAgICBSZW5kZXJTVkdDb250YWluZXI6OnVwZGF0ZUZyb21TdHlsZSgpOwogCi0gICAgLy8g
RklYTUU6IFtMQlNFXSBVcHN0cmVhbSBDU1MvU1ZHIHRyYW5zZm9ybSBzdXBwb3J0Ci0gICAgLy8g
aWYgKGFzc29jaWF0ZWRVc2VFbGVtZW50KGdyYXBoaWNzRWxlbWVudCgpKSkKLSAgICAvLyAgICBz
ZXRIYXNTVkdUcmFuc2Zvcm0oKTsKKyAgICBpZiAoYXNzb2NpYXRlZFVzZUVsZW1lbnQoZ3JhcGhp
Y3NFbGVtZW50KCkpKQorICAgICAgICBzZXRIYXNTVkdUcmFuc2Zvcm0oKTsKIH0KIAogdm9pZCBS
ZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyOjphcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEZs
b2F0UmVjdCYgYm91bmRpbmdCb3gsIE9wdGlvblNldDxSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3Bl
cmF0aW9uT3B0aW9uPiBvcHRpb25zKSBjb25zdAogewotICAgIC8vIEZJWE1FOiBbTEJTRV0gVXBz
dHJlYW0gQ1NTL1NWRyB0cmFuc2Zvcm0gc3VwcG9ydAotICAgIHN0eWxlLmFwcGx5VHJhbnNmb3Jt
KHRyYW5zZm9ybSwgYm91bmRpbmdCb3gsIG9wdGlvbnMpOworICAgIGFwcGx5U1ZHVHJhbnNmb3Jt
KHRyYW5zZm9ybSwgZ3JhcGhpY3NFbGVtZW50KCksIHN0eWxlLCBib3VuZGluZ0JveCwgb3B0aW9u
cyk7CiB9CiAKIHZvaWQgUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcjo6c3R5bGVXaWxs
Q2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCmluZGV4IGE2MDk5NTY0
ZmFjMzQzOGNiMmI4NDNiMDkzOTA4YjcyMmUwZGMwNjMuLjc4ZmY0NzQwYjM3MzI3OTc0Yjc3OTBj
MzRiN2QwN2M0YTBjNGJmM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFw
aGljc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1l
bnQuY3BwCkBAIC03Myw2ICs3MywxNSBAQCBBZmZpbmVUcmFuc2Zvcm0gU1ZHR3JhcGhpY3NFbGVt
ZW50OjpnZXRTY3JlZW5DVE0oU3R5bGVVcGRhdGVTdHJhdGVneSBzdHlsZVVwZGF0ZQogCiBBZmZp
bmVUcmFuc2Zvcm0gU1ZHR3JhcGhpY3NFbGVtZW50OjphbmltYXRlZExvY2FsVHJhbnNmb3JtKCkg
Y29uc3QKIHsKKyNpZiBFTkFCTEUoTEFZRVJfQkFTRURfU1ZHX0VOR0lORSkKKyAgICAvLyBMQlNF
IGhhbmRsZXMgdHJhbnNmb3JtcyB2aWEgUmVuZGVyTGF5ZXIsIG5vIG5lZWQgdG8gaGFuZGxlIENT
UyB0cmFuc2Zvcm1zIGhlcmUuCisgICAgaWYgKGRvY3VtZW50KCkuc2V0dGluZ3MoKS5sYXllckJh
c2VkU1ZHRW5naW5lRW5hYmxlZCgpKSB7CisgICAgICAgIGlmIChtX3N1cHBsZW1lbnRhbFRyYW5z
Zm9ybSkKKyAgICAgICAgICAgIHJldHVybiAqbV9zdXBwbGVtZW50YWxUcmFuc2Zvcm0gKiB0cmFu
c2Zvcm0oKS5jb25jYXRlbmF0ZSgpOworICAgICAgICByZXR1cm4gdHJhbnNmb3JtKCkuY29uY2F0
ZW5hdGUoKTsKKyAgICB9CisjZW5kaWYKKwogICAgIEFmZmluZVRyYW5zZm9ybSBtYXRyaXg7CiAK
ICAgICBhdXRvKiBzdHlsZSA9IHJlbmRlcmVyKCkgPyAmcmVuZGVyZXIoKS0+c3R5bGUoKSA6IG51
bGxwdHI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454818</attachid>
            <date>2022-03-16 03:27:28 -0700</date>
            <delta_ts>2022-03-21 02:55:29 -0700</delta_ts>
            <desc>Patch, v5</desc>
            <filename>bug-237711-20220316032727.patch</filename>
            <type>text/plain</type>
            <size>26371</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMzM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTZiMWFkZDEzNDdhZDli
ODNiZWJjMmRmMjNmYmExNDQwZTI0OGIzZi4uYmE3MWM5ZWEzZjQxMzRiNTY5NTI0NDgzNDdkYjg5
ZDg2ZDY5ZjAyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDIyLTAzLTEzICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtMQlNF
XSBBY3RpdmF0ZSBTVkcgdHJhbnNmb3JtIHN1cHBvcnQgdGhyb3VnaCBsYXllcnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzcxMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFjdGl2YXRlIHRyYW5zZm9y
bXMgZm9yIFNWRyBsYXllcnMuCisKKyAgICAgICAgVXNlIHRoZSBmbGFnIHRvIGtlZXAgdHJhY2sg
b2YgdGhlIHByZXNlbmNlIG9mIFNWRyB0cmFuc2Zvcm1hdGlvbnMKKyAgICAgICAgb24gYSByZW5k
ZXJlci4gQ1NTL0hUTUwgcmVuZGVyZXJzIGNhbiByZWx5IG9ubHkgb24gdGhlIFJlbmRlclN0eWxl
CisgICAgICAgIHRvIGRldGVybWluZSBpZiB0cmFuc2Zvcm1hdGlvbnMgYXJlIGFwcGxpZWQsIHdo
ZXJlYXMgU1ZHIGhhcyB0bworICAgICAgICBjb25zdWx0IGFkZGl0aW9uYWwgc291cmNlcywgc3Vj
aCBhcyB0aGUgU1ZHICd0cmFuc2Zvcm0nIGF0dHJpYnV0ZS4KKworICAgICAgICBBIFNWRyByZW5k
ZXJlciB3aXRoIHRoZSAnSGFzU1ZHVHJhbnNmb3JtJyBmbGFnIHNldCBzaG91bGQgYmVoYXZlCisg
ICAgICAgIGxpa2UgYW55IFNWRy9IVE1MIHJlbmRlcmVyIHRoYXQgaGFzIENTUyB0cmFuc2Zvcm1h
dGlvbnMgYXBwbGllZC4KKworICAgICAgICBXaXRoIHRoaXMgcGF0Y2ggYXBwbGllZCBTVkcgdHJh
bnNmb3JtIGFuZCBDU1MgdHJhbnNmb3JtcyBjYW4KKyAgICAgICAgYmUgYXBwbGllZCB0byA8Zz4g
LyA8cmVjdD4gZWxlbWVudHMgaW4gTEJTRSwgaG93ZXZlciB0cmFuc2Zvcm0tb3JpZ2luCisgICAg
ICAgIHN1cHBvcnQgaXMgbm90IHlldCBjb3JyZWN0LCB0aGlzIHdpbGwgY29tZSB1cCBhIGZvbGxv
dy11cCBwYXRjaC4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLCBubyBjaGFu
Z2UgaW4gYmVoYXZpb3VyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1h
dGlvbk1hdHJpeDo6bXVsdGlwbHlBZmZpbmVUcmFuc2Zvcm0pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6dXBk
YXRlTGF5ZXJUcmFuc2Zvcm0pOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJC
b3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y2FuQ3JlYXRlU3RhY2tpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0
ZVRyYW5zZm9ybUZyb21TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y3Vy
cmVudFRyYW5zZm9ybSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyTW9k
ZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6
dXBkYXRlTGF5ZXJUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdDo6YXBwbHlTVkdUcmFuc2Zvcm0gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMYXllck1vZGVsT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnNldEhhc1NWR1RyYW5zZm9y
bSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyT2JqZWN0OjpoYXNTVkdUcmFuc2Zvcm0gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyT2JqZWN0OjpoYXNUcmFuc2Zvcm0gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xheWVy
VHJhbnNmb3JtVXBkYXRlcjo6U1ZHTGF5ZXJUcmFuc2Zvcm1VcGRhdGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0xheWVyVHJhbnNmb3JtVXBkYXRlcjo6flNWR0xheWVyVHJhbnNmb3JtVXBkYXRl
cik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdDb250YWluZXI6OmxheW91dCk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNWR0NvbnRhaW5lcjo6dXBkYXRlTGF5ZXJJbmZvcm1hdGlvbik6IERlbGV0ZWQu
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdNb2RlbE9iamVjdDo6dXBkYXRlRnJvbVN0eWxlKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHUm9vdDo6dXBkYXRlRnJvbVN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1NoYXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBl
OjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHU2hhcGU6OmFwcGx5VHJhbnNm
b3JtIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXI6OnVw
ZGF0ZUZyb21TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUcmFuc2Zvcm1hYmxl
Q29udGFpbmVyOjphcHBseVRyYW5zZm9ybSBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0dyYXBo
aWNzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFwaGljc0VsZW1lbnQ6OmFu
aW1hdGVkTG9jYWxUcmFuc2Zvcm0gY29uc3QpOgorCiAyMDIyLTAzLTEzICBOaWtvbGFzIFppbW1l
cm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVuaWZ5IHJlZmVyZW5j
ZSBib3ggLyBDVE0gY29tcHV0YXRpb24gaW4gUmVuZGVyTGF5ZXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRy
aXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFu
c2Zvcm1hdGlvbk1hdHJpeC5jcHAKaW5kZXggZjIyNmQ5MzMxYTRlNDMxZjg2NmU5NTdjMTU4OWJk
ZWQwMzYxM2JjYS4uMjgxYzk1ZGNhNmRlY2Y3Nzc3YWE3MzVmNjA5ZmViYzg4MTAzOGI2MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFu
c2Zvcm1hdGlvbk1hdHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAKQEAgLTE1MzMsNiArMTUzMywx
NyBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgVHJhbnNmb3JtYXRpb25NYXRyaXg6Om11bHRpcGx5
KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JgogICAgIHJldHVybiAqdGhpczsKIH0KIAorVHJh
bnNmb3JtYXRpb25NYXRyaXgmIFRyYW5zZm9ybWF0aW9uTWF0cml4OjptdWx0aXBseUFmZmluZVRy
YW5zZm9ybShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIG1hdHJpeCkKK3sKKyAgICBpZiAobWF0cml4
LmlzSWRlbnRpdHkoKSkKKyAgICAgICAgcmV0dXJuICp0aGlzOworCisgICAgaWYgKG1hdHJpeC5p
c0lkZW50aXR5T3JUcmFuc2xhdGlvbigpKQorICAgICAgICByZXR1cm4gdHJhbnNsYXRlKG1hdHJp
eC5lKCksIG1hdHJpeC5mKCkpOworCisgICAgcmV0dXJuIG11bHRpcGx5KG1hdHJpeC50b1RyYW5z
Zm9ybWF0aW9uTWF0cml4KCkpOworfQorCiB2b2lkIFRyYW5zZm9ybWF0aW9uTWF0cml4OjptdWx0
VmVjTWF0cml4KGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlJiByZXN1bHRYLCBkb3VibGUmIHJl
c3VsdFkpIGNvbnN0CiB7CiAgICAgcmVzdWx0WCA9IG1fbWF0cml4WzNdWzBdICsgeCAqIG1fbWF0
cml4WzBdWzBdICsgeSAqIG1fbWF0cml4WzFdWzBdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlv
bk1hdHJpeC5oCmluZGV4IGM5NTExNzdhMzEwYjc2MDRjMjE1OWNkNmUyNDk3ZmQ4ZjI1N2I4M2Iu
Ljg1NWQyZTcyYTE1YTdjODYzNzc4NjU2ZTRmMzg2ZWE5YThjMjI2MWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25N
YXRyaXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKQEAgLTI0OSw2ICsyNDksOCBAQCBwdWJsaWM6CiAKICAg
ICAvLyB0aGlzID0gbWF0ICogdGhpcy4KICAgICBXRUJDT1JFX0VYUE9SVCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgbXVsdGlwbHkoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKKyAgICAvLyBJ
ZGVudGljYWwgdG8gbXVsdGlwbHkoVHJhbnNmb3JtYXRpb25NYXRyaXgmKSwgYnV0IHNhdmluZyBh
IEFmZmluZVRyYW5zZm9ybSAtPiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCByb3VuZHRyaXAgZm9yIGlk
ZW50aXR5IG9yIHRyYW5zbGF0aW9uIG1hdHJpY2VzLgorICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBtdWx0aXBseUFmZmluZVRyYW5zZm9ybShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKIAogICAg
IFdFQkNPUkVfRVhQT1JUIFRyYW5zZm9ybWF0aW9uTWF0cml4JiBzY2FsZShkb3VibGUpOwogICAg
IFdFQkNPUkVfRVhQT1JUIFRyYW5zZm9ybWF0aW9uTWF0cml4JiBzY2FsZU5vblVuaWZvcm0oZG91
YmxlIHN4LCBkb3VibGUgc3kpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApp
bmRleCA0ZDRhYTI3YzhiNTQzZjg5ZmVhMTFiNzQxZmJhNDcwMzRiZWMxMTE4Li5lMDBjNGE5YjZm
NmZmMGU4YjJhYjhlNzgyYjRhMGI2ZjM2MTcyMTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmNwcApAQCAtNjYyLDEzICs2NjIsNiBAQCB2b2lkIFJlbmRlckJveDo6YWJzb2x1
dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAog
ICAgIHF1YWRzLmFwcGVuZChsb2NhbFRvQWJzb2x1dGVRdWFkKGxvY2FsUmVjdCwgVXNlVHJhbnNm
b3Jtcywgd2FzRml4ZWQpKTsKIH0KIAotdm9pZCBSZW5kZXJCb3g6OnVwZGF0ZUxheWVyVHJhbnNm
b3JtKCkKLXsKLSAgICAvLyBUcmFuc2Zvcm0tb3JpZ2luIGRlcGVuZHMgb24gYm94IHNpemUsIHNv
IHdlIG5lZWQgdG8gdXBkYXRlIHRoZSBsYXllciB0cmFuc2Zvcm0gYWZ0ZXIgbGF5b3V0LgotICAg
IGlmIChoYXNMYXllcigpKQotICAgICAgICBsYXllcigpLT51cGRhdGVUcmFuc2Zvcm0oKTsKLX0K
LQogdm9pZCBSZW5kZXJCb3g6OmFwcGx5VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0
LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gs
IE9wdGlvblNldDxSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPiBvcHRpb25z
KSBjb25zdAogewogICAgIHN0eWxlLmFwcGx5VHJhbnNmb3JtKHQsIGJvdW5kaW5nQm94LCBvcHRp
b25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAppbmRleCAyOGUwYWQxYjIwZjU0
YmIxMjkxMTU5NGM2OGY4ZWZhOGY5Y2ZjZjUzLi5jOTI0YTczODk2YTI5N2ZhZGQ0NDM1ZGU3ZGE1
ZmIzOGFmODViZmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCkBAIC0yMTgs
NyArMjE4LDYgQEAgcHVibGljOgogICAgIHZvaWQgYWRkT3ZlcmZsb3dGcm9tQ2hpbGQoY29uc3Qg
UmVuZGVyQm94KiBjaGlsZCkgeyBhZGRPdmVyZmxvd0Zyb21DaGlsZChjaGlsZCwgY2hpbGQtPmxv
Y2F0aW9uT2Zmc2V0KCkpOyB9CiAgICAgdm9pZCBhZGRPdmVyZmxvd0Zyb21DaGlsZChjb25zdCBS
ZW5kZXJCb3gqIGNoaWxkLCBjb25zdCBMYXlvdXRTaXplJiBkZWx0YSk7CiAKLSAgICB2b2lkIHVw
ZGF0ZUxheWVyVHJhbnNmb3JtKCk7CiAgICAgdm9pZCBhcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGlu
Z0JveCwgT3B0aW9uU2V0PFJlbmRlclN0eWxlOjpUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb24+ID0g
UmVuZGVyU3R5bGU6OmFsbFRyYW5zZm9ybU9wZXJhdGlvbnMpIGNvbnN0IG92ZXJyaWRlOwogCiAg
ICAgTGF5b3V0U2l6ZSBjb250ZW50U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHsgY29udGVudFdpZHRo
KCksIGNvbnRlbnRIZWlnaHQoKSB9OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcAppbmRleCA4NWZjOGEyMmYxNzIzMTcwMjFhZmVmY2FkNDc0ZmY0MTFlMDgwMWU3Li5h
NmE1MWRjOWFjZmQ0ZmIxZjUzNGZiNjk4ZWZmNzJlNzVhYThiZTExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTU1Miw2ICs1NTIsOSBAQCBzdGF0aWMgYm9v
bCBjYW5DcmVhdGVTdGFja2luZ0NvbnRleHQoY29uc3QgUmVuZGVyTGF5ZXImIGxheWVyKQogewog
ICAgIGF1dG8mIHJlbmRlcmVyID0gbGF5ZXIucmVuZGVyZXIoKTsKICAgICByZXR1cm4gcmVuZGVy
ZXIuaGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCkKKyNpZiBFTkFCTEUoTEFZRVJfQkFTRURf
U1ZHX0VOR0lORSkKKyAgICAgICAgfHwgcmVuZGVyZXIuaGFzU1ZHVHJhbnNmb3JtKCkKKyNlbmRp
ZgogICAgICAgICB8fCByZW5kZXJlci5oYXNDbGlwUGF0aCgpCiAgICAgICAgIHx8IHJlbmRlcmVy
Lmhhc0ZpbHRlcigpCiAgICAgICAgIHx8IHJlbmRlcmVyLmhhc01hc2soKQpAQCAtMTM1MCwxOSAr
MTM1MywxMyBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBSZW5kZXJMYXllcjo6Y3VycmVudFRyYW5z
Zm9ybShPcHRpb25TZXQ8UmVuZGVyU3R5bGU6OlRyYW5zZgogICAgIGlmICghbV90cmFuc2Zvcm0p
CiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICAvLyBGSVhNRTogW0xCU0VdIFVwc3RyZWFtIHRy
YW5zZm9ybSBzdXBwb3J0IGZvciBSZW5kZXJTVkdNb2RlbE9iamVjdCBkZXJpdmVkIHJlbmRlcmVy
cwotICAgIGlmICghaXM8UmVuZGVyQm94PihyZW5kZXJlcigpKSkKLSAgICAgICAgcmV0dXJuIHsg
fTsKLQotICAgIGF1dG8mIHJlbmRlckJveCA9IGRvd25jYXN0PFJlbmRlckJveD4ocmVuZGVyZXIo
KSk7Ci0KICAgICAvLyBtX3RyYW5zZm9ybSBpbmNsdWRlcyB0cmFuc2Zvcm0tb3JpZ2luIGFuZCBp
cyBhZmZlY3RlZCBieSB0aGUgY2hvaWNlIG9mIHRoZSB0cmFuc2Zvcm0tYm94LgogICAgIC8vIFRo
ZXJlZm9yZSB3ZSBjYW4gb25seSB1c2UgdGhlIGNhY2hlZCBtX3RyYW5zZm9ybSwgaWYgdGhlIGFu
aW1hdGlvbiBkb2Vzbid0IGFsdGVyIHRyYW5zZm9ybS1ib3ggb3IgZXhjbHVkZXMgdHJhbnNmb3Jt
LW9yaWdpbi4KIAogICAgIC8vIFF1ZXJ5IHRoZSBhbmltYXRlZFN0eWxlKCkgdG8gb2J0YWluIHRo
ZSBjdXJyZW50IHRyYW5zZm9ybWF0aW9uLCB3aGVuIGFjY2VsZXJhdGVkIHRyYW5zZm9ybSBhbmlt
YXRpb25zIGFyZSBydW5uaW5nLgotICAgIGF1dG8gc3R5bGVhYmxlID0gU3R5bGVhYmxlOjpmcm9t
UmVuZGVyZXIocmVuZGVyQm94KTsKKyAgICBhdXRvIHN0eWxlYWJsZSA9IFN0eWxlYWJsZTo6ZnJv
bVJlbmRlcmVyKHJlbmRlcmVyKCkpOwogICAgIGlmICgoc3R5bGVhYmxlICYmIHN0eWxlYWJsZS0+
aXNSdW5uaW5nQWNjZWxlcmF0ZWRUcmFuc2Zvcm1BbmltYXRpb24oKSkgfHwgIW9wdGlvbnMuY29u
dGFpbnMoUmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbjo6VHJhbnNmb3JtT3Jp
Z2luKSkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IGFuaW1hdGVkU3R5
bGUgPSByZW5kZXJCb3guYW5pbWF0ZWRTdHlsZSgpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IGFuaW1hdGVkU3R5bGUgPSByZW5kZXJlcigpLmFuaW1hdGVkU3R5bGUoKTsK
IAogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm07CiAgICAgICAgIHVwZGF0
ZVRyYW5zZm9ybUZyb21TdHlsZSh0cmFuc2Zvcm0sICphbmltYXRlZFN0eWxlLCBvcHRpb25zKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0
LmNwcAppbmRleCA4ZDk5MGYxZDUzMWJlNjNmMmIyNWQwNjE0NWZiMTMxYzQxMDA3MjZjLi4xOTQw
NTY4ZWFmOWRjYjYxOTYyMjljZmU1YmIyNWZlZTAzOWJmNDMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCkBAIC0zMSw2ICsz
MSw3IEBACiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5oIgogI2luY2x1ZGUg
IlJlbmRlclNWR01vZGVsT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgorI2luY2x1
ZGUgIlNWR0dyYXBoaWNzRWxlbWVudC5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVk
ZSAiU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtU3RhdGUuaCIK
QEAgLTIzMSw2ICsyMzIsMTMgQEAgdm9pZCBSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpzdXNwZW5k
QW5pbWF0aW9ucyhNb25vdG9uaWNUaW1lIHRpbWUpCiAgICAgbGF5ZXIoKS0+YmFja2luZygpLT5z
dXNwZW5kQW5pbWF0aW9ucyh0aW1lKTsKIH0KIAordm9pZCBSZW5kZXJMYXllck1vZGVsT2JqZWN0
Ojp1cGRhdGVMYXllclRyYW5zZm9ybSgpCit7CisgICAgLy8gVHJhbnNmb3JtLW9yaWdpbiBkZXBl
bmRzIG9uIGJveCBzaXplLCBzbyB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgbGF5ZXIgdHJhbnNmb3Jt
IGFmdGVyIGxheW91dC4KKyAgICBpZiAoaGFzTGF5ZXIoKSkKKyAgICAgICAgbGF5ZXIoKS0+dXBk
YXRlVHJhbnNmb3JtKCk7Cit9CisKICNpZiBFTkFCTEUoTEFZRVJfQkFTRURfU1ZHX0VOR0lORSkK
IHN0ZDo6b3B0aW9uYWw8TGF5b3V0UmVjdD4gUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6Y29tcHV0
ZVZpc2libGVSZWN0SW5TVkdDb250YWluZXIoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwgY29uc3Qg
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogY29udGFpbmVyLCBSZW5kZXJPYmplY3Q6OlZpc2libGVS
ZWN0Q29udGV4dCBjb250ZXh0KSBjb25zdAogewpAQCAtMzE2LDYgKzMyNCwzOCBAQCB2b2lkIFJl
bmRlckxheWVyTW9kZWxPYmplY3Q6Om1hcExvY2FsVG9TVkdDb250YWluZXIoY29uc3QgUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdAogCiAgICAgY29udGFpbmVyLT5tYXBMb2NhbFRvQ29udGFpbmVyKGFu
Y2VzdG9yQ29udGFpbmVyLCB0cmFuc2Zvcm1TdGF0ZSwgbW9kZSwgd2FzRml4ZWQpOwogfQorCit2
b2lkIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OmFwcGx5U1ZHVHJhbnNmb3JtKFRyYW5zZm9ybWF0
aW9uTWF0cml4JiB0cmFuc2Zvcm0sIFNWR0dyYXBoaWNzRWxlbWVudCYgZ3JhcGhpY3NFbGVtZW50
LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gs
IE9wdGlvblNldDxSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPiBvcHRpb25z
KSBjb25zdAoreworICAgIC8vIFRoaXMgY2hlY2sgZG9lcyBub3QgdXNlIHN0eWxlLmhhc1RyYW5z
Zm9ybVJlbGF0ZWRQcm9wZXJ0eSgpIG9uIHB1cnBvc2UgLS0gd2Ugb25seSB3YW50IHRvIGtub3cg
aWYgZWl0aGVyIHRoZSAndHJhbnNmb3JtJyBwcm9wZXJ0eSwgYW4KKyAgICAvLyBvZmZzZXQgcGF0
aCwgb3IgdGhlIGluZGl2aWR1YWwgdHJhbnNmb3JtIG9wZXJhdGlvbnMgYXJlIHNldCAocGVyc3Bl
Y3RpdmUgLyB0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkIGFyZSBub3QgcmVsZXZhbnQgaGVy
ZSkuCisgICAgYm9vbCBoYXNDU1NUcmFuc2Zvcm0gPSBzdHlsZS5oYXNUcmFuc2Zvcm0oKSB8fCBz
dHlsZS5yb3RhdGUoKSB8fCBzdHlsZS50cmFuc2xhdGUoKSB8fCBzdHlsZS5zY2FsZSgpOworCisg
ICAgYm9vbCBhZmZlY3RlZEJ5VHJhbnNmb3JtT3JpZ2luID0gZmFsc2U7CisgICAgc3RkOjpvcHRp
b25hbDxBZmZpbmVUcmFuc2Zvcm0+IHN2Z1RyYW5zZm9ybTsKKworICAgIGlmIChoYXNDU1NUcmFu
c2Zvcm0pCisgICAgICAgIGFmZmVjdGVkQnlUcmFuc2Zvcm1PcmlnaW4gPSBzdHlsZS5hZmZlY3Rl
ZEJ5VHJhbnNmb3JtT3JpZ2luKCk7CisgICAgZWxzZSBpZiAoYXV0byBhZmZpbmVUcmFuc2Zvcm0g
PSBncmFwaGljc0VsZW1lbnQuYW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSgpOyAhYWZmaW5lVHJhbnNm
b3JtLmlzSWRlbnRpdHkoKSkgeworICAgICAgICBzdmdUcmFuc2Zvcm0gPSBhZmZpbmVUcmFuc2Zv
cm07CisgICAgICAgIGFmZmVjdGVkQnlUcmFuc2Zvcm1PcmlnaW4gPSBhZmZpbmVUcmFuc2Zvcm0u
YSgpICE9IDEgfHwgYWZmaW5lVHJhbnNmb3JtLmIoKSB8fCBhZmZpbmVUcmFuc2Zvcm0uYygpIHx8
IGFmZmluZVRyYW5zZm9ybS5kKCkgIT0gMTsKKyAgICB9CisKKyAgICBpZiAoIWhhc0NTU1RyYW5z
Zm9ybSAmJiAhc3ZnVHJhbnNmb3JtLmhhc192YWx1ZSgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBGbG9hdFBvaW50M0Qgb3JpZ2luVHJhbnNsYXRlOworICAgIGlmIChvcHRpb25zLmNvbnRhaW5z
KFJlbmRlclN0eWxlOjpUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb246OlRyYW5zZm9ybU9yaWdpbikg
JiYgYWZmZWN0ZWRCeVRyYW5zZm9ybU9yaWdpbikKKyAgICAgICAgb3JpZ2luVHJhbnNsYXRlID0g
c3R5bGUuYXBwbHlUcmFuc2Zvcm1PcmlnaW4odHJhbnNmb3JtLCBib3VuZGluZ0JveCk7CisKKyAg
ICAvLyBDU1MgdHJhbnNmb3JtcyB0YWtlIHByZWNlZGVuY2Ugb3ZlciBTVkcgdHJhbnNmb3Jtcy4K
KyAgICBpZiAoaGFzQ1NTVHJhbnNmb3JtKQorICAgICAgICBzdHlsZS5hcHBseUNTU1RyYW5zZm9y
bSh0cmFuc2Zvcm0sIGJvdW5kaW5nQm94LCBvcHRpb25zKTsKKyAgICBlbHNlCisgICAgICAgIHRy
YW5zZm9ybS5tdWx0aXBseUFmZmluZVRyYW5zZm9ybShzdmdUcmFuc2Zvcm0udmFsdWUoKSk7CisK
KyAgICBzdHlsZS51bmFwcGx5VHJhbnNmb3JtT3JpZ2luKHRyYW5zZm9ybSwgb3JpZ2luVHJhbnNs
YXRlKTsKK30KICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuaAppbmRleCBkNDRmZjZh
ZDUyZDNhNTlmNTFkMWMwZmVhZjZjZTc5NWE1ZTBlZGUwLi4xMjRhZWJkNGQ3NDAzM2M3NjUxYzkw
YWYzZWZlMGI3ZDlkZmY3ZGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllck1vZGVsT2JqZWN0LmgKQEAgLTI4LDYgKzI4LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBLZXlmcmFtZUxpc3Q7CiBjbGFzcyBSZW5kZXJMYXllcjsKK2NsYXNzIFNW
R0dyYXBoaWNzRWxlbWVudDsKIAogc3RydWN0IExheWVyUmVwYWludFJlY3RzIHsKICAgICBMYXlv
dXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3Q7CkBAIC03NSw4ICs3NiwxMiBAQCBwdWJsaWM6CiAg
ICAgLy8gUHJvdmlkZXMgdGhlIFNWRyBpbXBsZW1lbnRhdGlvbiBmb3IgbWFwTG9jYWxUb0NvbnRh
aW5lcigpLgogICAgIC8vIFRoaXMgbGl2ZXMgaW4gUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCwgd2hp
Y2ggaXMgdGhlIGNvbW1vbiBiYXNlLWNsYXNzIGZvciBhbGwgU1ZHIHJlbmRlcmVycy4KICAgICB2
b2lkIG1hcExvY2FsVG9TVkdDb250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCog
YW5jZXN0b3JDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgT3B0aW9uU2V0PE1hcENvb3JkaW5h
dGVzTW9kZT4sIGJvb2wqIHdhc0ZpeGVkKSBjb25zdDsKKworICAgIHZvaWQgYXBwbHlTVkdUcmFu
c2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBTVkdHcmFwaGljc0VsZW1lbnQmLCBjb25zdCBS
ZW5kZXJTdHlsZSYsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gsIE9wdGlvblNldDxSZW5k
ZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPikgY29uc3Q7CiAjZW5kaWYKIAorICAg
IHZvaWQgdXBkYXRlTGF5ZXJUcmFuc2Zvcm0oKTsKKwogICAgIHZpcnR1YWwgdm9pZCBhcHBseVRy
YW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3Qg
RmxvYXRSZWN0JiBib3VuZGluZ0JveCwgT3B0aW9uU2V0PFJlbmRlclN0eWxlOjpUcmFuc2Zvcm1P
cGVyYXRpb25PcHRpb24+ID0gUmVuZGVyU3R5bGU6OmFsbFRyYW5zZm9ybU9wZXJhdGlvbnMpIGNv
bnN0ID0gMDsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcAppbmRleCAxNTkwZDIwZGQwYjJiMmQ4YzRmYzZjYmIzOTQ0OGY0ZTRhZDUwMDRkLi4w
YTViN2NkYTU5YmQ2ZTQyM2I1MjY1NWZmNmQ5N2YyZmQ1OWFjN2VjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTk3NSw2ICsxOTc1LDE0IEBAIHZvaWQg
UmVuZGVyT2JqZWN0OjpzZXRIYXNPdXRsaW5lQXV0b0FuY2VzdG9yKGJvb2wgaGFzT3V0bGluZUF1
dG9BbmNlc3RvcikKICAgICAgICAgZW5zdXJlUmFyZURhdGEoKS5zZXRIYXNPdXRsaW5lQXV0b0Fu
Y2VzdG9yKGhhc091dGxpbmVBdXRvQW5jZXN0b3IpOwogfQogCisjaWYgRU5BQkxFKExBWUVSX0JB
U0VEX1NWR19FTkdJTkUpCit2b2lkIFJlbmRlck9iamVjdDo6c2V0SGFzU1ZHVHJhbnNmb3JtKGJv
b2wgaGFzU1ZHVHJhbnNmb3JtKQoreworICAgIGlmIChoYXNTVkdUcmFuc2Zvcm0gfHwgaGFzUmFy
ZURhdGEoKSkKKyAgICAgICAgZW5zdXJlUmFyZURhdGEoKS5zZXRIYXNTVkdUcmFuc2Zvcm0oaGFz
U1ZHVHJhbnNmb3JtKTsKK30KKyNlbmRpZgorCiB2b2lkIFJlbmRlck9iamVjdDo6c2V0UGFpbnRD
b250YWlubWVudEFwcGxpZXMoYm9vbCBwYWludENvbnRhaW5tZW50QXBwbGllcykKIHsKICAgICBp
ZiAocGFpbnRDb250YWlubWVudEFwcGxpZXMgfHwgaGFzUmFyZURhdGEoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCBkMWNlMDdiZTM5NjU5YTVlYWZhNzI3NjU1
YjMyOTQyZGY0M2EwOThmLi44YmRmY2EyNGVmODIyNGE0OWJmYmZmOGExYTFiMTJiMDdmNDdmMDI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC00MTUsNiArNDE1
LDEyIEBAIHB1YmxpYzoKICAgICBib29sIGhhc091dGxpbmVBdXRvQW5jZXN0b3IoKSBjb25zdCB7
IHJldHVybiBtX2JpdGZpZWxkcy5oYXNSYXJlRGF0YSgpICYmIHJhcmVEYXRhKCkuaGFzT3V0bGlu
ZUF1dG9BbmNlc3RvcigpOyB9CiAgICAgYm9vbCBwYWludENvbnRhaW5tZW50QXBwbGllcygpIGNv
bnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmhhc1JhcmVEYXRhKCkgJiYgcmFyZURhdGEoKS5wYWlu
dENvbnRhaW5tZW50QXBwbGllcygpOyB9CiAKKyNpZiBFTkFCTEUoTEFZRVJfQkFTRURfU1ZHX0VO
R0lORSkKKyAgICBib29sIGhhc1NWR1RyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0Zmll
bGRzLmhhc1JhcmVEYXRhKCkgJiYgcmFyZURhdGEoKS5oYXNTVkdUcmFuc2Zvcm0oKTsgfQorI2Vs
c2UKKyAgICBib29sIGhhc1NWR1RyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cisj
ZW5kaWYKKwogICAgIGJvb2wgaXNFeGNsdWRlZEZyb21Ob3JtYWxMYXlvdXQoKSBjb25zdCB7IHJl
dHVybiBtX2JpdGZpZWxkcy5pc0V4Y2x1ZGVkRnJvbU5vcm1hbExheW91dCgpOyB9CiAgICAgdm9p
ZCBzZXRJc0V4Y2x1ZGVkRnJvbU5vcm1hbExheW91dChib29sIGV4Y2x1ZGVkKSB7IG1fYml0Zmll
bGRzLnNldElzRXhjbHVkZWRGcm9tTm9ybWFsTGF5b3V0KGV4Y2x1ZGVkKTsgfQogICAgIGJvb2wg
aXNFeGNsdWRlZEFuZFBsYWNlZEluQm9yZGVyKCkgY29uc3QgeyByZXR1cm4gaXNFeGNsdWRlZEZy
b21Ob3JtYWxMYXlvdXQoKSAmJiBpc0xlZ2VuZCgpOyB9CkBAIC00NDksNyArNDU1LDcgQEAgcHVi
bGljOgogICAgIGJvb2wgaGFzUG90ZW50aWFsbHlTY3JvbGxhYmxlT3ZlcmZsb3coKSBjb25zdDsK
IAogICAgIGJvb2wgaGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCkgY29uc3QgeyByZXR1cm4g
bV9iaXRmaWVsZHMuaGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCk7IH0gLy8gVHJhbnNmb3Jt
LCBwZXJzcGVjdGl2ZSBvciB0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkLgotICAgIGJvb2wg
aGFzVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gaGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5
KCkgJiYgKHN0eWxlKCkuaGFzVHJhbnNmb3JtKCkgfHwgc3R5bGUoKS50cmFuc2xhdGUoKSB8fCBz
dHlsZSgpLnNjYWxlKCkgfHwgc3R5bGUoKS5yb3RhdGUoKSk7IH0KKyAgICBib29sIGhhc1RyYW5z
Zm9ybSgpIGNvbnN0IHsgcmV0dXJuIGhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgpICYmIChz
dHlsZSgpLmhhc1RyYW5zZm9ybSgpIHx8IHN0eWxlKCkudHJhbnNsYXRlKCkgfHwgc3R5bGUoKS5z
Y2FsZSgpIHx8IHN0eWxlKCkucm90YXRlKCkgfHwgaGFzU1ZHVHJhbnNmb3JtKCkpOyB9CiAgICAg
Ym9vbCBoYXNUcmFuc2Zvcm1PclBlc3BlY3RpdmUoKSBjb25zdCB7IHJldHVybiBoYXNUcmFuc2Zv
cm1SZWxhdGVkUHJvcGVydHkoKSAmJiAoaGFzVHJhbnNmb3JtKCkgfHwgc3R5bGUoKS5oYXNQZXJz
cGVjdGl2ZSgpKTsgfQogCiAgICAgaW5saW5lIGJvb2wgcHJlc2VydmVzTmV3bGluZSgpIGNvbnN0
OwpAQCAtNTE0LDYgKzUyMCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElzUmVuZGVyRnJhZ21l
bnRlZEZsb3coYm9vbCA9IHRydWUpOwogICAgIHZvaWQgc2V0SGFzT3V0bGluZUF1dG9BbmNlc3Rv
cihib29sID0gdHJ1ZSk7CiAgICAgdm9pZCBzZXRQYWludENvbnRhaW5tZW50QXBwbGllcyhib29s
ID0gdHJ1ZSk7CisjaWYgRU5BQkxFKExBWUVSX0JBU0VEX1NWR19FTkdJTkUpCisgICAgdm9pZCBz
ZXRIYXNTVkdUcmFuc2Zvcm0oYm9vbCA9IHRydWUpOworI2VuZGlmCiAKICAgICAvLyBIb29rIHNv
IHRoYXQgUmVuZGVyVGV4dENvbnRyb2wgY2FuIHJldHVybiB0aGUgbGluZSBoZWlnaHQgb2YgaXRz
IGlubmVyIHJlbmRlcmVyLgogICAgIC8vIEZvciBvdGhlciByZW5kZXJlcnMsIHRoZSB2YWx1ZSBp
cyB0aGUgc2FtZSBhcyBsaW5lSGVpZ2h0KGZhbHNlKS4KQEAgLTk0Myw2ICs5NTIsOSBAQCBwcml2
YXRlOgogICAgICAgICBBRERfQk9PTEVBTl9CSVRGSUVMRChpc1JlbmRlckZyYWdtZW50ZWRGbG93
LCBJc1JlbmRlckZyYWdtZW50ZWRGbG93KTsKICAgICAgICAgQUREX0JPT0xFQU5fQklURklFTEQo
aGFzT3V0bGluZUF1dG9BbmNlc3RvciwgSGFzT3V0bGluZUF1dG9BbmNlc3Rvcik7CiAgICAgICAg
IEFERF9CT09MRUFOX0JJVEZJRUxEKHBhaW50Q29udGFpbm1lbnRBcHBsaWVzLCBQYWludENvbnRh
aW5tZW50QXBwbGllcyk7CisjaWYgRU5BQkxFKExBWUVSX0JBU0VEX1NWR19FTkdJTkUpCisgICAg
ICAgIEFERF9CT09MRUFOX0JJVEZJRUxEKGhhc1NWR1RyYW5zZm9ybSwgSGFzU1ZHVHJhbnNmb3Jt
KTsKKyNlbmRpZgogCiAgICAgICAgIC8vIEZyb20gUmVuZGVyRWxlbWVudAogICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8UmVmZXJlbmNlZFNWR1Jlc291cmNlcz4gcmVmZXJlbmNlZFNWR1Jlc291cmNl
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29u
dGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFp
bmVyLmNwcAppbmRleCBiZGNjNTgxNWI0NjYyN2YwZmYxYzVhMTQ4MDI0MGZmNjU3Yjk0N2VmLi4z
NDVkNjM2MTM0ZDVmZGJjZjkyNjdiZmNkYWNjNGNmNjJjYjNjNmM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCkBAIC01Miw2
ICs1MiwzNiBAQCBSZW5kZXJTVkdDb250YWluZXI6OlJlbmRlclNWR0NvbnRhaW5lcihTVkdFbGVt
ZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogCiBSZW5kZXJTVkdDb250YWluZXI6
On5SZW5kZXJTVkdDb250YWluZXIoKSA9IGRlZmF1bHQ7CiAKKy8vIEhlbHBlciBjbGFzcywgbW92
ZSB0byBpdHMgb3duIGZpbGUgb25jZSB1dGlsaXplZCBpbiBtb3JlIHRoYW4gb25lIHBsYWNlLgor
Y2xhc3MgU1ZHTGF5ZXJUcmFuc2Zvcm1VcGRhdGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShTVkdMYXllclRyYW5zZm9ybVVwZGF0ZXIpOworcHVibGljOgorICAgIFNWR0xheWVyVHJhbnNm
b3JtVXBkYXRlcihSZW5kZXJMYXllck1vZGVsT2JqZWN0JiByZW5kZXJlcikKKyAgICAgICAgOiBt
X3JlbmRlcmVyKHJlbmRlcmVyKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3JlbmRlcmVyLmhhc0xh
eWVyKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV90cmFuc2Zvcm1SZWZlcmVu
Y2VCb3ggPSBtX3JlbmRlcmVyLnRyYW5zZm9ybVJlZmVyZW5jZUJveFJlY3QoKTsKKyAgICAgICAg
bV9yZW5kZXJlci51cGRhdGVMYXllclRyYW5zZm9ybSgpOworICAgIH0KKworCisgICAgflNWR0xh
eWVyVHJhbnNmb3JtVXBkYXRlcigpCisgICAgeworICAgICAgICBpZiAoIW1fcmVuZGVyZXIuaGFz
TGF5ZXIoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKG1fcmVuZGVyZXIudHJh
bnNmb3JtUmVmZXJlbmNlQm94UmVjdCgpID09IG1fdHJhbnNmb3JtUmVmZXJlbmNlQm94KQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fcmVuZGVyZXIudXBkYXRlTGF5ZXJUcmFuc2Zv
cm0oKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCYgbV9y
ZW5kZXJlcjsKKyAgICBGbG9hdFJlY3QgbV90cmFuc2Zvcm1SZWZlcmVuY2VCb3g7Cit9OworCiB2
b2lkIFJlbmRlclNWR0NvbnRhaW5lcjo6bGF5b3V0KCkKIHsKICAgICBTdGFja1N0YXRzOjpMYXlv
dXRDaGVja1BvaW50IGxheW91dENoZWNrUG9pbnQ7CkBAIC02NCwxMyArOTQsMTAgQEAgdm9pZCBS
ZW5kZXJTVkdDb250YWluZXI6OmxheW91dCgpCiAgICAgLy8gVXBkYXRlIGxheWVyIHRyYW5zZm9y
bSBiZWZvcmUgbGF5aW5nIG91dCBjaGlsZHJlbiAoU1ZHIG5lZWRzIGFjY2VzcyB0byB0aGUgdHJh
bnNmb3JtIG1hdHJpY2VzIGR1cmluZyBsYXlvdXQgZm9yIG9uLXNjcmVlbiB0ZXh0IGZvbnQtc2l6
ZSBjYWxjdWxhdGlvbnMpLgogICAgIC8vIEV2ZW50dWFsbHkgcmUtdXBkYXRlIGlmIHRoZSB0cmFu
c2Zvcm0gcmVmZXJlbmNlIGJveCwgcmVsZXZhbnQgZm9yIHRyYW5zZm9ybS1vcmlnaW4sIGhhcyBj
aGFuZ2VkIGR1cmluZyBsYXlvdXQuCiAgICAgewotICAgICAgICAvLyBGSVhNRTogW0xCU0VdIFVw
c3RyZWFtIFNWR0xheWVyVHJhbnNmb3JtVXBkYXRlcgotICAgICAgICAvLyBTVkdMYXllclRyYW5z
Zm9ybVVwZGF0ZXIgdHJhbnNmb3JtVXBkYXRlcigqdGhpcyk7CisgICAgICAgIFNWR0xheWVyVHJh
bnNmb3JtVXBkYXRlciB1cGRhdGVUcmFuc2Zvcm0oKnRoaXMpOwogICAgICAgICBsYXlvdXRDaGls
ZHJlbigpOwogICAgIH0KIAotICAgIHVwZGF0ZUxheWVySW5mb3JtYXRpb24oKTsKLQogICAgIC8v
IEludmFsaWRhdGUgYWxsIHJlc291cmNlcyBvZiB0aGlzIGNsaWVudCBpZiBvdXIgbGF5b3V0IGNo
YW5nZWQuCiAgICAgaWYgKGV2ZXJIYWRMYXlvdXQoKSAmJiBuZWVkc0xheW91dCgpKQogICAgICAg
ICBTVkdSZXNvdXJjZXNDYWNoZTo6Y2xpZW50TGF5b3V0Q2hhbmdlZCgqdGhpcyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuaAppbmRleCA5
NzVhOGY2MmNkMDNjMzIxM2FiYjg1NGNmNzRkMTY2NWQ5Yzk0NDVjLi4wMTk0YmFiMTNlZmFjN2Q3
OTg0ODlkYjZmZTc1MzdkZTQxMWEwOTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgKQEAgLTU1LDcgKzU1LDYgQEAgcHJvdGVjdGVk
OgogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXRDaGlsZHJlbigpOwogICAgIGJvb2wgbm9kZUF0UG9p
bnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExv
Y2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0
ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUxheWVySW5mb3JtYXRpb24oKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlVmll
d3BvcnQoKTsKICAgICB2aXJ0dWFsIGJvb2wgcG9pbnRJc0luc2lkZVZpZXdwb3J0Q2xpcChjb25z
dCBGbG9hdFBvaW50JikgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCmluZGV4IGIxOTI5NGI2
NzU4YzlkMTdiNmM4NTA5YjIxYWQxNzE0YzE4OTM0ZjguLmM5Njk1ZTZiNmE0M2Y5Y2Y0ZmYwMzk1
YWMzNjFhNDMyNjFkYjhlMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVk
ZSAiUmVuZGVyR2VvbWV0cnlNYXAuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1
ZGUgIlJlbmRlckxheWVyTW9kZWxPYmplY3QuaCIKKyNpbmNsdWRlICJSZW5kZXJTVkdNb2RlbE9i
amVjdElubGluZXMuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZS5oIgogI2luY2x1ZGUg
IlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50SW5saW5lcy5oIgpAQCAtNTksMTUg
KzYwLDEzIEBAIFJlbmRlclNWR01vZGVsT2JqZWN0OjpSZW5kZXJTVkdNb2RlbE9iamVjdChTVkdF
bGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0CiB2b2lkIFJlbmRlclNWR01vZGVsT2Jq
ZWN0Ojp1cGRhdGVGcm9tU3R5bGUoKQogewogICAgIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OnVw
ZGF0ZUZyb21TdHlsZSgpOwotICAgIHNldEhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eShzdHls
ZSgpLmhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgpKTsKIAotICAgIEFmZmluZVRyYW5zZm9y
bSB0cmFuc2Zvcm07Ci0gICAgaWYgKGlzPFNWR0dyYXBoaWNzRWxlbWVudD4obm9kZUZvck5vbkFu
b255bW91cygpKSkKLSAgICAgICAgdHJhbnNmb3JtID0gZG93bmNhc3Q8U1ZHR3JhcGhpY3NFbGVt
ZW50Pihub2RlRm9yTm9uQW5vbnltb3VzKCkpLmFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0oKTsKKyAg
ICBib29sIGhhc1NWR1RyYW5zZm9ybSA9IGZhbHNlOworICAgIGlmIChpczxTVkdHcmFwaGljc0Vs
ZW1lbnQ+KGVsZW1lbnQoKSkpCisgICAgICAgIGhhc1NWR1RyYW5zZm9ybSA9ICFkb3duY2FzdDxT
VkdHcmFwaGljc0VsZW1lbnQ+KGVsZW1lbnQoKSkuYW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSgpLmlz
SWRlbnRpdHkoKTsKIAotICAgIC8vIEZJWE1FOiBbTEJTRV0gVXBzdHJlYW0gUmVuZGVyT2JqZWN0
IGNoYW5nZXMKLSAgICAvLyBpZiAoIXRyYW5zZm9ybS5pc0lkZW50aXR5KCkpCi0gICAgLy8gICAg
IHNldEhhc1NWR1RyYW5zZm9ybSgpOworICAgIHNldEhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0
eShzdHlsZSgpLmhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgpIHx8IGhhc1NWR1RyYW5zZm9y
bSk7CisgICAgc2V0SGFzU1ZHVHJhbnNmb3JtKGhhc1NWR1RyYW5zZm9ybSk7CiB9CiAKIEZsb2F0
UmVjdCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6Ym9yZGVyQm94UmVjdEluRnJhZ21lbnRFcXVpdmFs
ZW50KFJlbmRlckZyYWdtZW50Q29udGFpbmVyKiwgUmVuZGVyQm94OjpSZW5kZXJCb3hGcmFnbWVu
dEluZm9GbGFncykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jvb3QuY3BwCmluZGV4IDcxNmVhODMwNjg0NTkzM2NiOGYwNDdhZThhOGQ5ZDI4NTAxYzhk
NzUuLjgwYWQ4MDc3MDBmYTUzZTAxMmQwZjQ5MTE5MTljYmFiODQ0Y2VkZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcApAQCAtMzk2LDggKzM5
Niw3IEBAIHZvaWQgUmVuZGVyU1ZHUm9vdDo6dXBkYXRlRnJvbVN0eWxlKCkKIHsKICAgICBSZW5k
ZXJSZXBsYWNlZDo6dXBkYXRlRnJvbVN0eWxlKCk7CiAKLSAgICAvLyBGSVhNRTogW0xCU0VdIFVw
c3RyZWFtIFJlbmRlck9iamVjdCBjaGFuZ2VzCi0gICAgLy8gc2V0SGFzU1ZHVHJhbnNmb3JtKCk7
CisgICAgc2V0SGFzU1ZHVHJhbnNmb3JtKCk7CiAKICAgICBpZiAoc2hvdWxkQXBwbHlWaWV3cG9y
dENsaXAoKSkKICAgICAgICAgc2V0SGFzTm9uVmlzaWJsZU92ZXJmbG93KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCmluZGV4IDMyNTU3MjQx
OTBiNzIwYWZkMzY2ODU1ODYyMDE2MGYwZjM4MTAxOWUuLmNhYWY2YjM1YjBlMDUyMDAzZGY5MjAx
ZWVjMDAwNGQ1NDM1MWY0MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHU2hhcGUuY3BwCkBAIC0xNTQsOCArMTU0LDcgQEAgdm9pZCBSZW5kZXJTVkdTaGFw
ZTo6bGF5b3V0KCkKICAgICAgICAgc2V0TGF5b3V0UmVjdChlbmNsb3NpbmdMYXlvdXRSZWN0KG1f
ZmlsbEJvdW5kaW5nQm94KSk7CiAgICAgfQogCi0gICAgLy8gRklYTUU6IFtMQlNFXSBVcHN0cmVh
bSBTVkdMYXllclRyYW5zZm9ybVVwZGF0ZXIKLSAgICAvLyBTVkdSZW5kZXJTdXBwb3J0Ojp1cGRh
dGVMYXllclRyYW5zZm9ybSgqdGhpcyk7CisgICAgdXBkYXRlTGF5ZXJUcmFuc2Zvcm0oKTsKIAog
ICAgIC8vIEludmFsaWRhdGUgYWxsIHJlc291cmNlcyBvZiB0aGlzIGNsaWVudCBpZiBvdXIgbGF5
b3V0IGNoYW5nZWQuCiAgICAgaWYgKGV2ZXJIYWRMYXlvdXQoKSAmJiBzZWxmTmVlZHNMYXlvdXQo
KSkKQEAgLTUzNiw4ICs1MzUsNyBAQCB2b2lkIFJlbmRlclNWR1NoYXBlOjpzdHlsZVdpbGxDaGFu
Z2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlJiBuZQogCiB2b2lkIFJl
bmRlclNWR1NoYXBlOjphcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNm
b3JtLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdC
b3gsIE9wdGlvblNldDxSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPiBvcHRp
b25zKSBjb25zdAogewotICAgIC8vIEZJWE1FOiBbTEJTRV0gVXBzdHJlYW0gQ1NTL1NWRyB0cmFu
c2Zvcm0gc3VwcG9ydAotICAgIHN0eWxlLmFwcGx5VHJhbnNmb3JtKHRyYW5zZm9ybSwgYm91bmRp
bmdCb3gsIG9wdGlvbnMpOworICAgIGFwcGx5U1ZHVHJhbnNmb3JtKHRyYW5zZm9ybSwgZ3JhcGhp
Y3NFbGVtZW50KCksIHN0eWxlLCBib3VuZGluZ0JveCwgb3B0aW9ucyk7CiB9CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaAppbmRleCA3NDM2OGJk
YWY2OWY5ZDE2MTkyOWNiMjEzZjEyNTRiYWM1NTViOWJkLi44OGNmZTllYzA2Njg5YWEyNWI4NTM1
YzQzOThjY2E5ZWJmNzIzNzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1NoYXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdTaGFwZS5oCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKIAogICAgIEZsb2F0UmVj
dCBjb21wdXRlTWFya2VyQm91bmRpbmdCb3goY29uc3QgU1ZHQm91bmRpbmdCb3hDb21wdXRhdGlv
bjo6RGVjb3JhdGlvbk9wdGlvbnMmKSBjb25zdDsKIAotICAgIHZvaWQgYXBwbHlUcmFuc2Zvcm0o
VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZsb2F0UmVj
dCYgYm91bmRpbmdCb3gsIE9wdGlvblNldDxSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9u
T3B0aW9uPiA9IFJlbmRlclN0eWxlOjphbGxUcmFuc2Zvcm1PcGVyYXRpb25zKSBjb25zdCBvdmVy
cmlkZTsKKyAgICB2b2lkIGFwcGx5VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29u
c3QgUmVuZGVyU3R5bGUmLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBPcHRpb25TZXQ8
UmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbj4gPSBSZW5kZXJTdHlsZTo6YWxs
VHJhbnNmb3JtT3BlcmF0aW9ucykgY29uc3QgZmluYWw7CiAKIHByb3RlY3RlZDoKICAgICB2b2lk
IGVsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuY3Bw
CmluZGV4IDkwMzEyMmJlOTdjNzUxYTNkNTJhOTRlNzdmOGNhNzVmNjE0NGMxOTUuLmIwMGZiNTBh
YTllMDAwMTc5N2ZjOTU1MDg1ODZhNmIyMTQwNzdmNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29u
dGFpbmVyLmNwcApAQCAtOTcsMTUgKzk3LDEzIEBAIHZvaWQgUmVuZGVyU1ZHVHJhbnNmb3JtYWJs
ZUNvbnRhaW5lcjo6dXBkYXRlRnJvbVN0eWxlKCkKIHsKICAgICBSZW5kZXJTVkdDb250YWluZXI6
OnVwZGF0ZUZyb21TdHlsZSgpOwogCi0gICAgLy8gRklYTUU6IFtMQlNFXSBVcHN0cmVhbSBDU1Mv
U1ZHIHRyYW5zZm9ybSBzdXBwb3J0Ci0gICAgLy8gaWYgKGFzc29jaWF0ZWRVc2VFbGVtZW50KGdy
YXBoaWNzRWxlbWVudCgpKSkKLSAgICAvLyAgICBzZXRIYXNTVkdUcmFuc2Zvcm0oKTsKKyAgICBp
ZiAoYXNzb2NpYXRlZFVzZUVsZW1lbnQoZ3JhcGhpY3NFbGVtZW50KCkpKQorICAgICAgICBzZXRI
YXNTVkdUcmFuc2Zvcm0oKTsKIH0KIAogdm9pZCBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFp
bmVyOjphcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gsIE9wdGlv
blNldDxSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPiBvcHRpb25zKSBjb25z
dAogewotICAgIC8vIEZJWE1FOiBbTEJTRV0gVXBzdHJlYW0gQ1NTL1NWRyB0cmFuc2Zvcm0gc3Vw
cG9ydAotICAgIHN0eWxlLmFwcGx5VHJhbnNmb3JtKHRyYW5zZm9ybSwgYm91bmRpbmdCb3gsIG9w
dGlvbnMpOworICAgIGFwcGx5U1ZHVHJhbnNmb3JtKHRyYW5zZm9ybSwgZ3JhcGhpY3NFbGVtZW50
KCksIHN0eWxlLCBib3VuZGluZ0JveCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgUmVuZGVyU1ZHVHJh
bnNmb3JtYWJsZUNvbnRhaW5lcjo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZm
LCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFw
aGljc0VsZW1lbnQuY3BwCmluZGV4IGE2MDk5NTY0ZmFjMzQzOGNiMmI4NDNiMDkzOTA4YjcyMmUw
ZGMwNjMuLjc4ZmY0NzQwYjM3MzI3OTc0Yjc3OTBjMzRiN2QwN2M0YTBjNGJmM2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCkBAIC03Myw2ICs3MywxNSBAQCBB
ZmZpbmVUcmFuc2Zvcm0gU1ZHR3JhcGhpY3NFbGVtZW50OjpnZXRTY3JlZW5DVE0oU3R5bGVVcGRh
dGVTdHJhdGVneSBzdHlsZVVwZGF0ZQogCiBBZmZpbmVUcmFuc2Zvcm0gU1ZHR3JhcGhpY3NFbGVt
ZW50OjphbmltYXRlZExvY2FsVHJhbnNmb3JtKCkgY29uc3QKIHsKKyNpZiBFTkFCTEUoTEFZRVJf
QkFTRURfU1ZHX0VOR0lORSkKKyAgICAvLyBMQlNFIGhhbmRsZXMgdHJhbnNmb3JtcyB2aWEgUmVu
ZGVyTGF5ZXIsIG5vIG5lZWQgdG8gaGFuZGxlIENTUyB0cmFuc2Zvcm1zIGhlcmUuCisgICAgaWYg
KGRvY3VtZW50KCkuc2V0dGluZ3MoKS5sYXllckJhc2VkU1ZHRW5naW5lRW5hYmxlZCgpKSB7Cisg
ICAgICAgIGlmIChtX3N1cHBsZW1lbnRhbFRyYW5zZm9ybSkKKyAgICAgICAgICAgIHJldHVybiAq
bV9zdXBwbGVtZW50YWxUcmFuc2Zvcm0gKiB0cmFuc2Zvcm0oKS5jb25jYXRlbmF0ZSgpOworICAg
ICAgICByZXR1cm4gdHJhbnNmb3JtKCkuY29uY2F0ZW5hdGUoKTsKKyAgICB9CisjZW5kaWYKKwog
ICAgIEFmZmluZVRyYW5zZm9ybSBtYXRyaXg7CiAKICAgICBhdXRvKiBzdHlsZSA9IHJlbmRlcmVy
KCkgPyAmcmVuZGVyZXIoKS0+c3R5bGUoKSA6IG51bGxwdHI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455227</attachid>
            <date>2022-03-21 02:55:34 -0700</date>
            <delta_ts>2022-04-04 13:36:15 -0700</delta_ts>
            <desc>Patch, v6</desc>
            <filename>bug-237711-20220321025532.patch</filename>
            <type>text/plain</type>
            <size>26371</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNTU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWY2NDE3MTkwZjlkZTYy
NmZjOTk4MDcyODhkOTljMGRlYmJlMjE4MC4uZTY3MmNkNDQ5YjJhM2Q5MGM4NDg3YTU5NjU0N2Qx
NTZiMWUwMmQ5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDIyLTAzLTIxICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtMQlNF
XSBBY3RpdmF0ZSBTVkcgdHJhbnNmb3JtIHN1cHBvcnQgdGhyb3VnaCBsYXllcnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzcxMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFjdGl2YXRlIHRyYW5zZm9y
bXMgZm9yIFNWRyBsYXllcnMuCisKKyAgICAgICAgVXNlIHRoZSBmbGFnIHRvIGtlZXAgdHJhY2sg
b2YgdGhlIHByZXNlbmNlIG9mIFNWRyB0cmFuc2Zvcm1hdGlvbnMKKyAgICAgICAgb24gYSByZW5k
ZXJlci4gQ1NTL0hUTUwgcmVuZGVyZXJzIGNhbiByZWx5IG9ubHkgb24gdGhlIFJlbmRlclN0eWxl
CisgICAgICAgIHRvIGRldGVybWluZSBpZiB0cmFuc2Zvcm1hdGlvbnMgYXJlIGFwcGxpZWQsIHdo
ZXJlYXMgU1ZHIGhhcyB0bworICAgICAgICBjb25zdWx0IGFkZGl0aW9uYWwgc291cmNlcywgc3Vj
aCBhcyB0aGUgU1ZHICd0cmFuc2Zvcm0nIGF0dHJpYnV0ZS4KKworICAgICAgICBBIFNWRyByZW5k
ZXJlciB3aXRoIHRoZSAnSGFzU1ZHVHJhbnNmb3JtJyBmbGFnIHNldCBzaG91bGQgYmVoYXZlCisg
ICAgICAgIGxpa2UgYW55IFNWRy9IVE1MIHJlbmRlcmVyIHRoYXQgaGFzIENTUyB0cmFuc2Zvcm1h
dGlvbnMgYXBwbGllZC4KKworICAgICAgICBXaXRoIHRoaXMgcGF0Y2ggYXBwbGllZCBTVkcgdHJh
bnNmb3JtIGFuZCBDU1MgdHJhbnNmb3JtcyBjYW4KKyAgICAgICAgYmUgYXBwbGllZCB0byA8Zz4g
LyA8cmVjdD4gZWxlbWVudHMgaW4gTEJTRSwgaG93ZXZlciB0cmFuc2Zvcm0tb3JpZ2luCisgICAg
ICAgIHN1cHBvcnQgaXMgbm90IHlldCBjb3JyZWN0LCB0aGlzIHdpbGwgY29tZSB1cCBhIGZvbGxv
dy11cCBwYXRjaC4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLCBubyBjaGFu
Z2UgaW4gYmVoYXZpb3VyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1h
dGlvbk1hdHJpeDo6bXVsdGlwbHlBZmZpbmVUcmFuc2Zvcm0pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6dXBk
YXRlTGF5ZXJUcmFuc2Zvcm0pOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJC
b3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y2FuQ3JlYXRlU3RhY2tpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0
ZVRyYW5zZm9ybUZyb21TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y3Vy
cmVudFRyYW5zZm9ybSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyTW9k
ZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6
dXBkYXRlTGF5ZXJUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdDo6YXBwbHlTVkdUcmFuc2Zvcm0gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMYXllck1vZGVsT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnNldEhhc1NWR1RyYW5zZm9y
bSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyT2JqZWN0OjpoYXNTVkdUcmFuc2Zvcm0gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyT2JqZWN0OjpoYXNUcmFuc2Zvcm0gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xheWVy
VHJhbnNmb3JtVXBkYXRlcjo6U1ZHTGF5ZXJUcmFuc2Zvcm1VcGRhdGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0xheWVyVHJhbnNmb3JtVXBkYXRlcjo6flNWR0xheWVyVHJhbnNmb3JtVXBkYXRl
cik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdDb250YWluZXI6OmxheW91dCk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNWR0NvbnRhaW5lcjo6dXBkYXRlTGF5ZXJJbmZvcm1hdGlvbik6IERlbGV0ZWQu
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdNb2RlbE9iamVjdDo6dXBkYXRlRnJvbVN0eWxlKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHUm9vdDo6dXBkYXRlRnJvbVN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1NoYXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBl
OjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHU2hhcGU6OmFwcGx5VHJhbnNm
b3JtIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXI6OnVw
ZGF0ZUZyb21TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUcmFuc2Zvcm1hYmxl
Q29udGFpbmVyOjphcHBseVRyYW5zZm9ybSBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0dyYXBo
aWNzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFwaGljc0VsZW1lbnQ6OmFu
aW1hdGVkTG9jYWxUcmFuc2Zvcm0gY29uc3QpOgorCiAyMDIyLTAzLTIxICBOaWtvbGFzIFppbW1l
cm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVuaWZ5IHJlZmVyZW5j
ZSBib3ggLyBDVE0gY29tcHV0YXRpb24gaW4gUmVuZGVyTGF5ZXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRy
aXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFu
c2Zvcm1hdGlvbk1hdHJpeC5jcHAKaW5kZXggZjIyNmQ5MzMxYTRlNDMxZjg2NmU5NTdjMTU4OWJk
ZWQwMzYxM2JjYS4uMjgxYzk1ZGNhNmRlY2Y3Nzc3YWE3MzVmNjA5ZmViYzg4MTAzOGI2MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFu
c2Zvcm1hdGlvbk1hdHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAKQEAgLTE1MzMsNiArMTUzMywx
NyBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgVHJhbnNmb3JtYXRpb25NYXRyaXg6Om11bHRpcGx5
KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JgogICAgIHJldHVybiAqdGhpczsKIH0KIAorVHJh
bnNmb3JtYXRpb25NYXRyaXgmIFRyYW5zZm9ybWF0aW9uTWF0cml4OjptdWx0aXBseUFmZmluZVRy
YW5zZm9ybShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIG1hdHJpeCkKK3sKKyAgICBpZiAobWF0cml4
LmlzSWRlbnRpdHkoKSkKKyAgICAgICAgcmV0dXJuICp0aGlzOworCisgICAgaWYgKG1hdHJpeC5p
c0lkZW50aXR5T3JUcmFuc2xhdGlvbigpKQorICAgICAgICByZXR1cm4gdHJhbnNsYXRlKG1hdHJp
eC5lKCksIG1hdHJpeC5mKCkpOworCisgICAgcmV0dXJuIG11bHRpcGx5KG1hdHJpeC50b1RyYW5z
Zm9ybWF0aW9uTWF0cml4KCkpOworfQorCiB2b2lkIFRyYW5zZm9ybWF0aW9uTWF0cml4OjptdWx0
VmVjTWF0cml4KGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlJiByZXN1bHRYLCBkb3VibGUmIHJl
c3VsdFkpIGNvbnN0CiB7CiAgICAgcmVzdWx0WCA9IG1fbWF0cml4WzNdWzBdICsgeCAqIG1fbWF0
cml4WzBdWzBdICsgeSAqIG1fbWF0cml4WzFdWzBdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlv
bk1hdHJpeC5oCmluZGV4IGM5NTExNzdhMzEwYjc2MDRjMjE1OWNkNmUyNDk3ZmQ4ZjI1N2I4M2Iu
Ljg1NWQyZTcyYTE1YTdjODYzNzc4NjU2ZTRmMzg2ZWE5YThjMjI2MWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25N
YXRyaXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKQEAgLTI0OSw2ICsyNDksOCBAQCBwdWJsaWM6CiAKICAg
ICAvLyB0aGlzID0gbWF0ICogdGhpcy4KICAgICBXRUJDT1JFX0VYUE9SVCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgbXVsdGlwbHkoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKKyAgICAvLyBJ
ZGVudGljYWwgdG8gbXVsdGlwbHkoVHJhbnNmb3JtYXRpb25NYXRyaXgmKSwgYnV0IHNhdmluZyBh
IEFmZmluZVRyYW5zZm9ybSAtPiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCByb3VuZHRyaXAgZm9yIGlk
ZW50aXR5IG9yIHRyYW5zbGF0aW9uIG1hdHJpY2VzLgorICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBtdWx0aXBseUFmZmluZVRyYW5zZm9ybShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKIAogICAg
IFdFQkNPUkVfRVhQT1JUIFRyYW5zZm9ybWF0aW9uTWF0cml4JiBzY2FsZShkb3VibGUpOwogICAg
IFdFQkNPUkVfRVhQT1JUIFRyYW5zZm9ybWF0aW9uTWF0cml4JiBzY2FsZU5vblVuaWZvcm0oZG91
YmxlIHN4LCBkb3VibGUgc3kpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApp
bmRleCAzYjAxODk1OGQ1N2EzYTFiMDU4NjU2MDllM2Y2MDEyNDFmODA2YmIwLi5jZThhZTY5NGI3
YmY4ZTk5M2EwMjMxMmEzMTM5NmRjN2FlNGM3MmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmNwcApAQCAtNjYyLDEzICs2NjIsNiBAQCB2b2lkIFJlbmRlckJveDo6YWJzb2x1
dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAog
ICAgIHF1YWRzLmFwcGVuZChsb2NhbFRvQWJzb2x1dGVRdWFkKGxvY2FsUmVjdCwgVXNlVHJhbnNm
b3Jtcywgd2FzRml4ZWQpKTsKIH0KIAotdm9pZCBSZW5kZXJCb3g6OnVwZGF0ZUxheWVyVHJhbnNm
b3JtKCkKLXsKLSAgICAvLyBUcmFuc2Zvcm0tb3JpZ2luIGRlcGVuZHMgb24gYm94IHNpemUsIHNv
IHdlIG5lZWQgdG8gdXBkYXRlIHRoZSBsYXllciB0cmFuc2Zvcm0gYWZ0ZXIgbGF5b3V0LgotICAg
IGlmIChoYXNMYXllcigpKQotICAgICAgICBsYXllcigpLT51cGRhdGVUcmFuc2Zvcm0oKTsKLX0K
LQogdm9pZCBSZW5kZXJCb3g6OmFwcGx5VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0
LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gs
IE9wdGlvblNldDxSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPiBvcHRpb25z
KSBjb25zdAogewogICAgIHN0eWxlLmFwcGx5VHJhbnNmb3JtKHQsIGJvdW5kaW5nQm94LCBvcHRp
b25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAppbmRleCBjZGEzYzZmYzIxMGJh
ZGQwZmY1NDYyMTIxMmUyMzRkOWVmOTBmNmQ3Li41MWU1YjBhZGM5NGQ4ZDgwNWM0NTdmNTE2ZTNm
NTI4ZDNlNjg1ODFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCkBAIC0yMTgs
NyArMjE4LDYgQEAgcHVibGljOgogICAgIHZvaWQgYWRkT3ZlcmZsb3dGcm9tQ2hpbGQoY29uc3Qg
UmVuZGVyQm94KiBjaGlsZCkgeyBhZGRPdmVyZmxvd0Zyb21DaGlsZChjaGlsZCwgY2hpbGQtPmxv
Y2F0aW9uT2Zmc2V0KCkpOyB9CiAgICAgdm9pZCBhZGRPdmVyZmxvd0Zyb21DaGlsZChjb25zdCBS
ZW5kZXJCb3gqIGNoaWxkLCBjb25zdCBMYXlvdXRTaXplJiBkZWx0YSk7CiAKLSAgICB2b2lkIHVw
ZGF0ZUxheWVyVHJhbnNmb3JtKCk7CiAgICAgdm9pZCBhcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGlu
Z0JveCwgT3B0aW9uU2V0PFJlbmRlclN0eWxlOjpUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb24+ID0g
UmVuZGVyU3R5bGU6OmFsbFRyYW5zZm9ybU9wZXJhdGlvbnMpIGNvbnN0IG92ZXJyaWRlOwogCiAg
ICAgTGF5b3V0U2l6ZSBjb250ZW50U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHsgY29udGVudFdpZHRo
KCksIGNvbnRlbnRIZWlnaHQoKSB9OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcAppbmRleCA1MmE5YzY2NzU4MDUxYTY1Yjk3NmZlODlhZTM0Y2FhZTE2ZDNjY2VlLi4y
NGYxNDQ3Mjk0ZTM1NTcwOTZmNWJlMzhiYzA5YTlhNGE2NjE0ZTgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTU1Miw2ICs1NTIsOSBAQCBzdGF0aWMgYm9v
bCBjYW5DcmVhdGVTdGFja2luZ0NvbnRleHQoY29uc3QgUmVuZGVyTGF5ZXImIGxheWVyKQogewog
ICAgIGF1dG8mIHJlbmRlcmVyID0gbGF5ZXIucmVuZGVyZXIoKTsKICAgICByZXR1cm4gcmVuZGVy
ZXIuaGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCkKKyNpZiBFTkFCTEUoTEFZRVJfQkFTRURf
U1ZHX0VOR0lORSkKKyAgICAgICAgfHwgcmVuZGVyZXIuaGFzU1ZHVHJhbnNmb3JtKCkKKyNlbmRp
ZgogICAgICAgICB8fCByZW5kZXJlci5oYXNDbGlwUGF0aCgpCiAgICAgICAgIHx8IHJlbmRlcmVy
Lmhhc0ZpbHRlcigpCiAgICAgICAgIHx8IHJlbmRlcmVyLmhhc01hc2soKQpAQCAtMTM2NiwxOSAr
MTM2OSwxMyBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBSZW5kZXJMYXllcjo6Y3VycmVudFRyYW5z
Zm9ybShPcHRpb25TZXQ8UmVuZGVyU3R5bGU6OlRyYW5zZgogICAgIGlmICghbV90cmFuc2Zvcm0p
CiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICAvLyBGSVhNRTogW0xCU0VdIFVwc3RyZWFtIHRy
YW5zZm9ybSBzdXBwb3J0IGZvciBSZW5kZXJTVkdNb2RlbE9iamVjdCBkZXJpdmVkIHJlbmRlcmVy
cwotICAgIGlmICghaXM8UmVuZGVyQm94PihyZW5kZXJlcigpKSkKLSAgICAgICAgcmV0dXJuIHsg
fTsKLQotICAgIGF1dG8mIHJlbmRlckJveCA9IGRvd25jYXN0PFJlbmRlckJveD4ocmVuZGVyZXIo
KSk7Ci0KICAgICAvLyBtX3RyYW5zZm9ybSBpbmNsdWRlcyB0cmFuc2Zvcm0tb3JpZ2luIGFuZCBp
cyBhZmZlY3RlZCBieSB0aGUgY2hvaWNlIG9mIHRoZSB0cmFuc2Zvcm0tYm94LgogICAgIC8vIFRo
ZXJlZm9yZSB3ZSBjYW4gb25seSB1c2UgdGhlIGNhY2hlZCBtX3RyYW5zZm9ybSwgaWYgdGhlIGFu
aW1hdGlvbiBkb2Vzbid0IGFsdGVyIHRyYW5zZm9ybS1ib3ggb3IgZXhjbHVkZXMgdHJhbnNmb3Jt
LW9yaWdpbi4KIAogICAgIC8vIFF1ZXJ5IHRoZSBhbmltYXRlZFN0eWxlKCkgdG8gb2J0YWluIHRo
ZSBjdXJyZW50IHRyYW5zZm9ybWF0aW9uLCB3aGVuIGFjY2VsZXJhdGVkIHRyYW5zZm9ybSBhbmlt
YXRpb25zIGFyZSBydW5uaW5nLgotICAgIGF1dG8gc3R5bGVhYmxlID0gU3R5bGVhYmxlOjpmcm9t
UmVuZGVyZXIocmVuZGVyQm94KTsKKyAgICBhdXRvIHN0eWxlYWJsZSA9IFN0eWxlYWJsZTo6ZnJv
bVJlbmRlcmVyKHJlbmRlcmVyKCkpOwogICAgIGlmICgoc3R5bGVhYmxlICYmIHN0eWxlYWJsZS0+
aXNSdW5uaW5nQWNjZWxlcmF0ZWRUcmFuc2Zvcm1BbmltYXRpb24oKSkgfHwgIW9wdGlvbnMuY29u
dGFpbnMoUmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbjo6VHJhbnNmb3JtT3Jp
Z2luKSkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IGFuaW1hdGVkU3R5
bGUgPSByZW5kZXJCb3guYW5pbWF0ZWRTdHlsZSgpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IGFuaW1hdGVkU3R5bGUgPSByZW5kZXJlcigpLmFuaW1hdGVkU3R5bGUoKTsK
IAogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm07CiAgICAgICAgIHVwZGF0
ZVRyYW5zZm9ybUZyb21TdHlsZSh0cmFuc2Zvcm0sICphbmltYXRlZFN0eWxlLCBvcHRpb25zKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0
LmNwcAppbmRleCA4ZDk5MGYxZDUzMWJlNjNmMmIyNWQwNjE0NWZiMTMxYzQxMDA3MjZjLi4xOTQw
NTY4ZWFmOWRjYjYxOTYyMjljZmU1YmIyNWZlZTAzOWJmNDMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCkBAIC0zMSw2ICsz
MSw3IEBACiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5oIgogI2luY2x1ZGUg
IlJlbmRlclNWR01vZGVsT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgorI2luY2x1
ZGUgIlNWR0dyYXBoaWNzRWxlbWVudC5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVk
ZSAiU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtU3RhdGUuaCIK
QEAgLTIzMSw2ICsyMzIsMTMgQEAgdm9pZCBSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpzdXNwZW5k
QW5pbWF0aW9ucyhNb25vdG9uaWNUaW1lIHRpbWUpCiAgICAgbGF5ZXIoKS0+YmFja2luZygpLT5z
dXNwZW5kQW5pbWF0aW9ucyh0aW1lKTsKIH0KIAordm9pZCBSZW5kZXJMYXllck1vZGVsT2JqZWN0
Ojp1cGRhdGVMYXllclRyYW5zZm9ybSgpCit7CisgICAgLy8gVHJhbnNmb3JtLW9yaWdpbiBkZXBl
bmRzIG9uIGJveCBzaXplLCBzbyB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgbGF5ZXIgdHJhbnNmb3Jt
IGFmdGVyIGxheW91dC4KKyAgICBpZiAoaGFzTGF5ZXIoKSkKKyAgICAgICAgbGF5ZXIoKS0+dXBk
YXRlVHJhbnNmb3JtKCk7Cit9CisKICNpZiBFTkFCTEUoTEFZRVJfQkFTRURfU1ZHX0VOR0lORSkK
IHN0ZDo6b3B0aW9uYWw8TGF5b3V0UmVjdD4gUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6Y29tcHV0
ZVZpc2libGVSZWN0SW5TVkdDb250YWluZXIoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwgY29uc3Qg
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogY29udGFpbmVyLCBSZW5kZXJPYmplY3Q6OlZpc2libGVS
ZWN0Q29udGV4dCBjb250ZXh0KSBjb25zdAogewpAQCAtMzE2LDYgKzMyNCwzOCBAQCB2b2lkIFJl
bmRlckxheWVyTW9kZWxPYmplY3Q6Om1hcExvY2FsVG9TVkdDb250YWluZXIoY29uc3QgUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdAogCiAgICAgY29udGFpbmVyLT5tYXBMb2NhbFRvQ29udGFpbmVyKGFu
Y2VzdG9yQ29udGFpbmVyLCB0cmFuc2Zvcm1TdGF0ZSwgbW9kZSwgd2FzRml4ZWQpOwogfQorCit2
b2lkIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OmFwcGx5U1ZHVHJhbnNmb3JtKFRyYW5zZm9ybWF0
aW9uTWF0cml4JiB0cmFuc2Zvcm0sIFNWR0dyYXBoaWNzRWxlbWVudCYgZ3JhcGhpY3NFbGVtZW50
LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gs
IE9wdGlvblNldDxSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPiBvcHRpb25z
KSBjb25zdAoreworICAgIC8vIFRoaXMgY2hlY2sgZG9lcyBub3QgdXNlIHN0eWxlLmhhc1RyYW5z
Zm9ybVJlbGF0ZWRQcm9wZXJ0eSgpIG9uIHB1cnBvc2UgLS0gd2Ugb25seSB3YW50IHRvIGtub3cg
aWYgZWl0aGVyIHRoZSAndHJhbnNmb3JtJyBwcm9wZXJ0eSwgYW4KKyAgICAvLyBvZmZzZXQgcGF0
aCwgb3IgdGhlIGluZGl2aWR1YWwgdHJhbnNmb3JtIG9wZXJhdGlvbnMgYXJlIHNldCAocGVyc3Bl
Y3RpdmUgLyB0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkIGFyZSBub3QgcmVsZXZhbnQgaGVy
ZSkuCisgICAgYm9vbCBoYXNDU1NUcmFuc2Zvcm0gPSBzdHlsZS5oYXNUcmFuc2Zvcm0oKSB8fCBz
dHlsZS5yb3RhdGUoKSB8fCBzdHlsZS50cmFuc2xhdGUoKSB8fCBzdHlsZS5zY2FsZSgpOworCisg
ICAgYm9vbCBhZmZlY3RlZEJ5VHJhbnNmb3JtT3JpZ2luID0gZmFsc2U7CisgICAgc3RkOjpvcHRp
b25hbDxBZmZpbmVUcmFuc2Zvcm0+IHN2Z1RyYW5zZm9ybTsKKworICAgIGlmIChoYXNDU1NUcmFu
c2Zvcm0pCisgICAgICAgIGFmZmVjdGVkQnlUcmFuc2Zvcm1PcmlnaW4gPSBzdHlsZS5hZmZlY3Rl
ZEJ5VHJhbnNmb3JtT3JpZ2luKCk7CisgICAgZWxzZSBpZiAoYXV0byBhZmZpbmVUcmFuc2Zvcm0g
PSBncmFwaGljc0VsZW1lbnQuYW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSgpOyAhYWZmaW5lVHJhbnNm
b3JtLmlzSWRlbnRpdHkoKSkgeworICAgICAgICBzdmdUcmFuc2Zvcm0gPSBhZmZpbmVUcmFuc2Zv
cm07CisgICAgICAgIGFmZmVjdGVkQnlUcmFuc2Zvcm1PcmlnaW4gPSBhZmZpbmVUcmFuc2Zvcm0u
YSgpICE9IDEgfHwgYWZmaW5lVHJhbnNmb3JtLmIoKSB8fCBhZmZpbmVUcmFuc2Zvcm0uYygpIHx8
IGFmZmluZVRyYW5zZm9ybS5kKCkgIT0gMTsKKyAgICB9CisKKyAgICBpZiAoIWhhc0NTU1RyYW5z
Zm9ybSAmJiAhc3ZnVHJhbnNmb3JtLmhhc192YWx1ZSgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBGbG9hdFBvaW50M0Qgb3JpZ2luVHJhbnNsYXRlOworICAgIGlmIChvcHRpb25zLmNvbnRhaW5z
KFJlbmRlclN0eWxlOjpUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb246OlRyYW5zZm9ybU9yaWdpbikg
JiYgYWZmZWN0ZWRCeVRyYW5zZm9ybU9yaWdpbikKKyAgICAgICAgb3JpZ2luVHJhbnNsYXRlID0g
c3R5bGUuYXBwbHlUcmFuc2Zvcm1PcmlnaW4odHJhbnNmb3JtLCBib3VuZGluZ0JveCk7CisKKyAg
ICAvLyBDU1MgdHJhbnNmb3JtcyB0YWtlIHByZWNlZGVuY2Ugb3ZlciBTVkcgdHJhbnNmb3Jtcy4K
KyAgICBpZiAoaGFzQ1NTVHJhbnNmb3JtKQorICAgICAgICBzdHlsZS5hcHBseUNTU1RyYW5zZm9y
bSh0cmFuc2Zvcm0sIGJvdW5kaW5nQm94LCBvcHRpb25zKTsKKyAgICBlbHNlCisgICAgICAgIHRy
YW5zZm9ybS5tdWx0aXBseUFmZmluZVRyYW5zZm9ybShzdmdUcmFuc2Zvcm0udmFsdWUoKSk7CisK
KyAgICBzdHlsZS51bmFwcGx5VHJhbnNmb3JtT3JpZ2luKHRyYW5zZm9ybSwgb3JpZ2luVHJhbnNs
YXRlKTsKK30KICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuaAppbmRleCBkNDRmZjZh
ZDUyZDNhNTlmNTFkMWMwZmVhZjZjZTc5NWE1ZTBlZGUwLi4xMjRhZWJkNGQ3NDAzM2M3NjUxYzkw
YWYzZWZlMGI3ZDlkZmY3ZGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllck1vZGVsT2JqZWN0LmgKQEAgLTI4LDYgKzI4LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBLZXlmcmFtZUxpc3Q7CiBjbGFzcyBSZW5kZXJMYXllcjsKK2NsYXNzIFNW
R0dyYXBoaWNzRWxlbWVudDsKIAogc3RydWN0IExheWVyUmVwYWludFJlY3RzIHsKICAgICBMYXlv
dXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3Q7CkBAIC03NSw4ICs3NiwxMiBAQCBwdWJsaWM6CiAg
ICAgLy8gUHJvdmlkZXMgdGhlIFNWRyBpbXBsZW1lbnRhdGlvbiBmb3IgbWFwTG9jYWxUb0NvbnRh
aW5lcigpLgogICAgIC8vIFRoaXMgbGl2ZXMgaW4gUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCwgd2hp
Y2ggaXMgdGhlIGNvbW1vbiBiYXNlLWNsYXNzIGZvciBhbGwgU1ZHIHJlbmRlcmVycy4KICAgICB2
b2lkIG1hcExvY2FsVG9TVkdDb250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCog
YW5jZXN0b3JDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgT3B0aW9uU2V0PE1hcENvb3JkaW5h
dGVzTW9kZT4sIGJvb2wqIHdhc0ZpeGVkKSBjb25zdDsKKworICAgIHZvaWQgYXBwbHlTVkdUcmFu
c2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBTVkdHcmFwaGljc0VsZW1lbnQmLCBjb25zdCBS
ZW5kZXJTdHlsZSYsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gsIE9wdGlvblNldDxSZW5k
ZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPikgY29uc3Q7CiAjZW5kaWYKIAorICAg
IHZvaWQgdXBkYXRlTGF5ZXJUcmFuc2Zvcm0oKTsKKwogICAgIHZpcnR1YWwgdm9pZCBhcHBseVRy
YW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3Qg
RmxvYXRSZWN0JiBib3VuZGluZ0JveCwgT3B0aW9uU2V0PFJlbmRlclN0eWxlOjpUcmFuc2Zvcm1P
cGVyYXRpb25PcHRpb24+ID0gUmVuZGVyU3R5bGU6OmFsbFRyYW5zZm9ybU9wZXJhdGlvbnMpIGNv
bnN0ID0gMDsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcAppbmRleCAxNTkwZDIwZGQwYjJiMmQ4YzRmYzZjYmIzOTQ0OGY0ZTRhZDUwMDRkLi4w
YTViN2NkYTU5YmQ2ZTQyM2I1MjY1NWZmNmQ5N2YyZmQ1OWFjN2VjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTk3NSw2ICsxOTc1LDE0IEBAIHZvaWQg
UmVuZGVyT2JqZWN0OjpzZXRIYXNPdXRsaW5lQXV0b0FuY2VzdG9yKGJvb2wgaGFzT3V0bGluZUF1
dG9BbmNlc3RvcikKICAgICAgICAgZW5zdXJlUmFyZURhdGEoKS5zZXRIYXNPdXRsaW5lQXV0b0Fu
Y2VzdG9yKGhhc091dGxpbmVBdXRvQW5jZXN0b3IpOwogfQogCisjaWYgRU5BQkxFKExBWUVSX0JB
U0VEX1NWR19FTkdJTkUpCit2b2lkIFJlbmRlck9iamVjdDo6c2V0SGFzU1ZHVHJhbnNmb3JtKGJv
b2wgaGFzU1ZHVHJhbnNmb3JtKQoreworICAgIGlmIChoYXNTVkdUcmFuc2Zvcm0gfHwgaGFzUmFy
ZURhdGEoKSkKKyAgICAgICAgZW5zdXJlUmFyZURhdGEoKS5zZXRIYXNTVkdUcmFuc2Zvcm0oaGFz
U1ZHVHJhbnNmb3JtKTsKK30KKyNlbmRpZgorCiB2b2lkIFJlbmRlck9iamVjdDo6c2V0UGFpbnRD
b250YWlubWVudEFwcGxpZXMoYm9vbCBwYWludENvbnRhaW5tZW50QXBwbGllcykKIHsKICAgICBp
ZiAocGFpbnRDb250YWlubWVudEFwcGxpZXMgfHwgaGFzUmFyZURhdGEoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCA5Y2ZlZThiOGI1OGYyYTgwYjdkYzBlNDJk
Mjk4MjdiMzIyNGNmNTA2Li5mMjU5ZGNiMTE4MGU1MWQzMzg3ZGY2YWE3MWU4ZDkxNWU4MzQ4ZGI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC00MTUsNiArNDE1
LDEyIEBAIHB1YmxpYzoKICAgICBib29sIGhhc091dGxpbmVBdXRvQW5jZXN0b3IoKSBjb25zdCB7
IHJldHVybiBtX2JpdGZpZWxkcy5oYXNSYXJlRGF0YSgpICYmIHJhcmVEYXRhKCkuaGFzT3V0bGlu
ZUF1dG9BbmNlc3RvcigpOyB9CiAgICAgYm9vbCBwYWludENvbnRhaW5tZW50QXBwbGllcygpIGNv
bnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmhhc1JhcmVEYXRhKCkgJiYgcmFyZURhdGEoKS5wYWlu
dENvbnRhaW5tZW50QXBwbGllcygpOyB9CiAKKyNpZiBFTkFCTEUoTEFZRVJfQkFTRURfU1ZHX0VO
R0lORSkKKyAgICBib29sIGhhc1NWR1RyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0Zmll
bGRzLmhhc1JhcmVEYXRhKCkgJiYgcmFyZURhdGEoKS5oYXNTVkdUcmFuc2Zvcm0oKTsgfQorI2Vs
c2UKKyAgICBib29sIGhhc1NWR1RyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cisj
ZW5kaWYKKwogICAgIGJvb2wgaXNFeGNsdWRlZEZyb21Ob3JtYWxMYXlvdXQoKSBjb25zdCB7IHJl
dHVybiBtX2JpdGZpZWxkcy5pc0V4Y2x1ZGVkRnJvbU5vcm1hbExheW91dCgpOyB9CiAgICAgdm9p
ZCBzZXRJc0V4Y2x1ZGVkRnJvbU5vcm1hbExheW91dChib29sIGV4Y2x1ZGVkKSB7IG1fYml0Zmll
bGRzLnNldElzRXhjbHVkZWRGcm9tTm9ybWFsTGF5b3V0KGV4Y2x1ZGVkKTsgfQogICAgIGJvb2wg
aXNFeGNsdWRlZEFuZFBsYWNlZEluQm9yZGVyKCkgY29uc3QgeyByZXR1cm4gaXNFeGNsdWRlZEZy
b21Ob3JtYWxMYXlvdXQoKSAmJiBpc0xlZ2VuZCgpOyB9CkBAIC00NDksNyArNDU1LDcgQEAgcHVi
bGljOgogICAgIGJvb2wgaGFzUG90ZW50aWFsbHlTY3JvbGxhYmxlT3ZlcmZsb3coKSBjb25zdDsK
IAogICAgIGJvb2wgaGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCkgY29uc3QgeyByZXR1cm4g
bV9iaXRmaWVsZHMuaGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCk7IH0gLy8gVHJhbnNmb3Jt
LCBwZXJzcGVjdGl2ZSBvciB0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkLgotICAgIGJvb2wg
aGFzVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gaGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5
KCkgJiYgKHN0eWxlKCkuaGFzVHJhbnNmb3JtKCkgfHwgc3R5bGUoKS50cmFuc2xhdGUoKSB8fCBz
dHlsZSgpLnNjYWxlKCkgfHwgc3R5bGUoKS5yb3RhdGUoKSk7IH0KKyAgICBib29sIGhhc1RyYW5z
Zm9ybSgpIGNvbnN0IHsgcmV0dXJuIGhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgpICYmIChz
dHlsZSgpLmhhc1RyYW5zZm9ybSgpIHx8IHN0eWxlKCkudHJhbnNsYXRlKCkgfHwgc3R5bGUoKS5z
Y2FsZSgpIHx8IHN0eWxlKCkucm90YXRlKCkgfHwgaGFzU1ZHVHJhbnNmb3JtKCkpOyB9CiAgICAg
Ym9vbCBoYXNUcmFuc2Zvcm1PclBlc3BlY3RpdmUoKSBjb25zdCB7IHJldHVybiBoYXNUcmFuc2Zv
cm1SZWxhdGVkUHJvcGVydHkoKSAmJiAoaGFzVHJhbnNmb3JtKCkgfHwgc3R5bGUoKS5oYXNQZXJz
cGVjdGl2ZSgpKTsgfQogCiAgICAgaW5saW5lIGJvb2wgcHJlc2VydmVzTmV3bGluZSgpIGNvbnN0
OwpAQCAtNTE0LDYgKzUyMCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElzUmVuZGVyRnJhZ21l
bnRlZEZsb3coYm9vbCA9IHRydWUpOwogICAgIHZvaWQgc2V0SGFzT3V0bGluZUF1dG9BbmNlc3Rv
cihib29sID0gdHJ1ZSk7CiAgICAgdm9pZCBzZXRQYWludENvbnRhaW5tZW50QXBwbGllcyhib29s
ID0gdHJ1ZSk7CisjaWYgRU5BQkxFKExBWUVSX0JBU0VEX1NWR19FTkdJTkUpCisgICAgdm9pZCBz
ZXRIYXNTVkdUcmFuc2Zvcm0oYm9vbCA9IHRydWUpOworI2VuZGlmCiAKICAgICAvLyBIb29rIHNv
IHRoYXQgUmVuZGVyVGV4dENvbnRyb2wgY2FuIHJldHVybiB0aGUgbGluZSBoZWlnaHQgb2YgaXRz
IGlubmVyIHJlbmRlcmVyLgogICAgIC8vIEZvciBvdGhlciByZW5kZXJlcnMsIHRoZSB2YWx1ZSBp
cyB0aGUgc2FtZSBhcyBsaW5lSGVpZ2h0KGZhbHNlKS4KQEAgLTk0Myw2ICs5NTIsOSBAQCBwcml2
YXRlOgogICAgICAgICBBRERfQk9PTEVBTl9CSVRGSUVMRChpc1JlbmRlckZyYWdtZW50ZWRGbG93
LCBJc1JlbmRlckZyYWdtZW50ZWRGbG93KTsKICAgICAgICAgQUREX0JPT0xFQU5fQklURklFTEQo
aGFzT3V0bGluZUF1dG9BbmNlc3RvciwgSGFzT3V0bGluZUF1dG9BbmNlc3Rvcik7CiAgICAgICAg
IEFERF9CT09MRUFOX0JJVEZJRUxEKHBhaW50Q29udGFpbm1lbnRBcHBsaWVzLCBQYWludENvbnRh
aW5tZW50QXBwbGllcyk7CisjaWYgRU5BQkxFKExBWUVSX0JBU0VEX1NWR19FTkdJTkUpCisgICAg
ICAgIEFERF9CT09MRUFOX0JJVEZJRUxEKGhhc1NWR1RyYW5zZm9ybSwgSGFzU1ZHVHJhbnNmb3Jt
KTsKKyNlbmRpZgogCiAgICAgICAgIC8vIEZyb20gUmVuZGVyRWxlbWVudAogICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8UmVmZXJlbmNlZFNWR1Jlc291cmNlcz4gcmVmZXJlbmNlZFNWR1Jlc291cmNl
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29u
dGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFp
bmVyLmNwcAppbmRleCBiZGNjNTgxNWI0NjYyN2YwZmYxYzVhMTQ4MDI0MGZmNjU3Yjk0N2VmLi4z
NDVkNjM2MTM0ZDVmZGJjZjkyNjdiZmNkYWNjNGNmNjJjYjNjNmM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCkBAIC01Miw2
ICs1MiwzNiBAQCBSZW5kZXJTVkdDb250YWluZXI6OlJlbmRlclNWR0NvbnRhaW5lcihTVkdFbGVt
ZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogCiBSZW5kZXJTVkdDb250YWluZXI6
On5SZW5kZXJTVkdDb250YWluZXIoKSA9IGRlZmF1bHQ7CiAKKy8vIEhlbHBlciBjbGFzcywgbW92
ZSB0byBpdHMgb3duIGZpbGUgb25jZSB1dGlsaXplZCBpbiBtb3JlIHRoYW4gb25lIHBsYWNlLgor
Y2xhc3MgU1ZHTGF5ZXJUcmFuc2Zvcm1VcGRhdGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShTVkdMYXllclRyYW5zZm9ybVVwZGF0ZXIpOworcHVibGljOgorICAgIFNWR0xheWVyVHJhbnNm
b3JtVXBkYXRlcihSZW5kZXJMYXllck1vZGVsT2JqZWN0JiByZW5kZXJlcikKKyAgICAgICAgOiBt
X3JlbmRlcmVyKHJlbmRlcmVyKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3JlbmRlcmVyLmhhc0xh
eWVyKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV90cmFuc2Zvcm1SZWZlcmVu
Y2VCb3ggPSBtX3JlbmRlcmVyLnRyYW5zZm9ybVJlZmVyZW5jZUJveFJlY3QoKTsKKyAgICAgICAg
bV9yZW5kZXJlci51cGRhdGVMYXllclRyYW5zZm9ybSgpOworICAgIH0KKworCisgICAgflNWR0xh
eWVyVHJhbnNmb3JtVXBkYXRlcigpCisgICAgeworICAgICAgICBpZiAoIW1fcmVuZGVyZXIuaGFz
TGF5ZXIoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKG1fcmVuZGVyZXIudHJh
bnNmb3JtUmVmZXJlbmNlQm94UmVjdCgpID09IG1fdHJhbnNmb3JtUmVmZXJlbmNlQm94KQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fcmVuZGVyZXIudXBkYXRlTGF5ZXJUcmFuc2Zv
cm0oKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCYgbV9y
ZW5kZXJlcjsKKyAgICBGbG9hdFJlY3QgbV90cmFuc2Zvcm1SZWZlcmVuY2VCb3g7Cit9OworCiB2
b2lkIFJlbmRlclNWR0NvbnRhaW5lcjo6bGF5b3V0KCkKIHsKICAgICBTdGFja1N0YXRzOjpMYXlv
dXRDaGVja1BvaW50IGxheW91dENoZWNrUG9pbnQ7CkBAIC02NCwxMyArOTQsMTAgQEAgdm9pZCBS
ZW5kZXJTVkdDb250YWluZXI6OmxheW91dCgpCiAgICAgLy8gVXBkYXRlIGxheWVyIHRyYW5zZm9y
bSBiZWZvcmUgbGF5aW5nIG91dCBjaGlsZHJlbiAoU1ZHIG5lZWRzIGFjY2VzcyB0byB0aGUgdHJh
bnNmb3JtIG1hdHJpY2VzIGR1cmluZyBsYXlvdXQgZm9yIG9uLXNjcmVlbiB0ZXh0IGZvbnQtc2l6
ZSBjYWxjdWxhdGlvbnMpLgogICAgIC8vIEV2ZW50dWFsbHkgcmUtdXBkYXRlIGlmIHRoZSB0cmFu
c2Zvcm0gcmVmZXJlbmNlIGJveCwgcmVsZXZhbnQgZm9yIHRyYW5zZm9ybS1vcmlnaW4sIGhhcyBj
aGFuZ2VkIGR1cmluZyBsYXlvdXQuCiAgICAgewotICAgICAgICAvLyBGSVhNRTogW0xCU0VdIFVw
c3RyZWFtIFNWR0xheWVyVHJhbnNmb3JtVXBkYXRlcgotICAgICAgICAvLyBTVkdMYXllclRyYW5z
Zm9ybVVwZGF0ZXIgdHJhbnNmb3JtVXBkYXRlcigqdGhpcyk7CisgICAgICAgIFNWR0xheWVyVHJh
bnNmb3JtVXBkYXRlciB1cGRhdGVUcmFuc2Zvcm0oKnRoaXMpOwogICAgICAgICBsYXlvdXRDaGls
ZHJlbigpOwogICAgIH0KIAotICAgIHVwZGF0ZUxheWVySW5mb3JtYXRpb24oKTsKLQogICAgIC8v
IEludmFsaWRhdGUgYWxsIHJlc291cmNlcyBvZiB0aGlzIGNsaWVudCBpZiBvdXIgbGF5b3V0IGNo
YW5nZWQuCiAgICAgaWYgKGV2ZXJIYWRMYXlvdXQoKSAmJiBuZWVkc0xheW91dCgpKQogICAgICAg
ICBTVkdSZXNvdXJjZXNDYWNoZTo6Y2xpZW50TGF5b3V0Q2hhbmdlZCgqdGhpcyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuaAppbmRleCA5
NzVhOGY2MmNkMDNjMzIxM2FiYjg1NGNmNzRkMTY2NWQ5Yzk0NDVjLi4wMTk0YmFiMTNlZmFjN2Q3
OTg0ODlkYjZmZTc1MzdkZTQxMWEwOTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgKQEAgLTU1LDcgKzU1LDYgQEAgcHJvdGVjdGVk
OgogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXRDaGlsZHJlbigpOwogICAgIGJvb2wgbm9kZUF0UG9p
bnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExv
Y2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0
ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUxheWVySW5mb3JtYXRpb24oKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlVmll
d3BvcnQoKTsKICAgICB2aXJ0dWFsIGJvb2wgcG9pbnRJc0luc2lkZVZpZXdwb3J0Q2xpcChjb25z
dCBGbG9hdFBvaW50JikgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCmluZGV4IGIxOTI5NGI2
NzU4YzlkMTdiNmM4NTA5YjIxYWQxNzE0YzE4OTM0ZjguLmM5Njk1ZTZiNmE0M2Y5Y2Y0ZmYwMzk1
YWMzNjFhNDMyNjFkYjhlMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVk
ZSAiUmVuZGVyR2VvbWV0cnlNYXAuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1
ZGUgIlJlbmRlckxheWVyTW9kZWxPYmplY3QuaCIKKyNpbmNsdWRlICJSZW5kZXJTVkdNb2RlbE9i
amVjdElubGluZXMuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZS5oIgogI2luY2x1ZGUg
IlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50SW5saW5lcy5oIgpAQCAtNTksMTUg
KzYwLDEzIEBAIFJlbmRlclNWR01vZGVsT2JqZWN0OjpSZW5kZXJTVkdNb2RlbE9iamVjdChTVkdF
bGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0CiB2b2lkIFJlbmRlclNWR01vZGVsT2Jq
ZWN0Ojp1cGRhdGVGcm9tU3R5bGUoKQogewogICAgIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OnVw
ZGF0ZUZyb21TdHlsZSgpOwotICAgIHNldEhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eShzdHls
ZSgpLmhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgpKTsKIAotICAgIEFmZmluZVRyYW5zZm9y
bSB0cmFuc2Zvcm07Ci0gICAgaWYgKGlzPFNWR0dyYXBoaWNzRWxlbWVudD4obm9kZUZvck5vbkFu
b255bW91cygpKSkKLSAgICAgICAgdHJhbnNmb3JtID0gZG93bmNhc3Q8U1ZHR3JhcGhpY3NFbGVt
ZW50Pihub2RlRm9yTm9uQW5vbnltb3VzKCkpLmFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0oKTsKKyAg
ICBib29sIGhhc1NWR1RyYW5zZm9ybSA9IGZhbHNlOworICAgIGlmIChpczxTVkdHcmFwaGljc0Vs
ZW1lbnQ+KGVsZW1lbnQoKSkpCisgICAgICAgIGhhc1NWR1RyYW5zZm9ybSA9ICFkb3duY2FzdDxT
VkdHcmFwaGljc0VsZW1lbnQ+KGVsZW1lbnQoKSkuYW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSgpLmlz
SWRlbnRpdHkoKTsKIAotICAgIC8vIEZJWE1FOiBbTEJTRV0gVXBzdHJlYW0gUmVuZGVyT2JqZWN0
IGNoYW5nZXMKLSAgICAvLyBpZiAoIXRyYW5zZm9ybS5pc0lkZW50aXR5KCkpCi0gICAgLy8gICAg
IHNldEhhc1NWR1RyYW5zZm9ybSgpOworICAgIHNldEhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0
eShzdHlsZSgpLmhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgpIHx8IGhhc1NWR1RyYW5zZm9y
bSk7CisgICAgc2V0SGFzU1ZHVHJhbnNmb3JtKGhhc1NWR1RyYW5zZm9ybSk7CiB9CiAKIEZsb2F0
UmVjdCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6Ym9yZGVyQm94UmVjdEluRnJhZ21lbnRFcXVpdmFs
ZW50KFJlbmRlckZyYWdtZW50Q29udGFpbmVyKiwgUmVuZGVyQm94OjpSZW5kZXJCb3hGcmFnbWVu
dEluZm9GbGFncykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jvb3QuY3BwCmluZGV4IDcxNmVhODMwNjg0NTkzM2NiOGYwNDdhZThhOGQ5ZDI4NTAxYzhk
NzUuLjgwYWQ4MDc3MDBmYTUzZTAxMmQwZjQ5MTE5MTljYmFiODQ0Y2VkZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcApAQCAtMzk2LDggKzM5
Niw3IEBAIHZvaWQgUmVuZGVyU1ZHUm9vdDo6dXBkYXRlRnJvbVN0eWxlKCkKIHsKICAgICBSZW5k
ZXJSZXBsYWNlZDo6dXBkYXRlRnJvbVN0eWxlKCk7CiAKLSAgICAvLyBGSVhNRTogW0xCU0VdIFVw
c3RyZWFtIFJlbmRlck9iamVjdCBjaGFuZ2VzCi0gICAgLy8gc2V0SGFzU1ZHVHJhbnNmb3JtKCk7
CisgICAgc2V0SGFzU1ZHVHJhbnNmb3JtKCk7CiAKICAgICBpZiAoc2hvdWxkQXBwbHlWaWV3cG9y
dENsaXAoKSkKICAgICAgICAgc2V0SGFzTm9uVmlzaWJsZU92ZXJmbG93KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCmluZGV4IDMyNTU3MjQx
OTBiNzIwYWZkMzY2ODU1ODYyMDE2MGYwZjM4MTAxOWUuLmNhYWY2YjM1YjBlMDUyMDAzZGY5MjAx
ZWVjMDAwNGQ1NDM1MWY0MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHU2hhcGUuY3BwCkBAIC0xNTQsOCArMTU0LDcgQEAgdm9pZCBSZW5kZXJTVkdTaGFw
ZTo6bGF5b3V0KCkKICAgICAgICAgc2V0TGF5b3V0UmVjdChlbmNsb3NpbmdMYXlvdXRSZWN0KG1f
ZmlsbEJvdW5kaW5nQm94KSk7CiAgICAgfQogCi0gICAgLy8gRklYTUU6IFtMQlNFXSBVcHN0cmVh
bSBTVkdMYXllclRyYW5zZm9ybVVwZGF0ZXIKLSAgICAvLyBTVkdSZW5kZXJTdXBwb3J0Ojp1cGRh
dGVMYXllclRyYW5zZm9ybSgqdGhpcyk7CisgICAgdXBkYXRlTGF5ZXJUcmFuc2Zvcm0oKTsKIAog
ICAgIC8vIEludmFsaWRhdGUgYWxsIHJlc291cmNlcyBvZiB0aGlzIGNsaWVudCBpZiBvdXIgbGF5
b3V0IGNoYW5nZWQuCiAgICAgaWYgKGV2ZXJIYWRMYXlvdXQoKSAmJiBzZWxmTmVlZHNMYXlvdXQo
KSkKQEAgLTUzNiw4ICs1MzUsNyBAQCB2b2lkIFJlbmRlclNWR1NoYXBlOjpzdHlsZVdpbGxDaGFu
Z2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlJiBuZQogCiB2b2lkIFJl
bmRlclNWR1NoYXBlOjphcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNm
b3JtLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdC
b3gsIE9wdGlvblNldDxSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPiBvcHRp
b25zKSBjb25zdAogewotICAgIC8vIEZJWE1FOiBbTEJTRV0gVXBzdHJlYW0gQ1NTL1NWRyB0cmFu
c2Zvcm0gc3VwcG9ydAotICAgIHN0eWxlLmFwcGx5VHJhbnNmb3JtKHRyYW5zZm9ybSwgYm91bmRp
bmdCb3gsIG9wdGlvbnMpOworICAgIGFwcGx5U1ZHVHJhbnNmb3JtKHRyYW5zZm9ybSwgZ3JhcGhp
Y3NFbGVtZW50KCksIHN0eWxlLCBib3VuZGluZ0JveCwgb3B0aW9ucyk7CiB9CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaAppbmRleCA3NDM2OGJk
YWY2OWY5ZDE2MTkyOWNiMjEzZjEyNTRiYWM1NTViOWJkLi44OGNmZTllYzA2Njg5YWEyNWI4NTM1
YzQzOThjY2E5ZWJmNzIzNzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1NoYXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdTaGFwZS5oCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKIAogICAgIEZsb2F0UmVj
dCBjb21wdXRlTWFya2VyQm91bmRpbmdCb3goY29uc3QgU1ZHQm91bmRpbmdCb3hDb21wdXRhdGlv
bjo6RGVjb3JhdGlvbk9wdGlvbnMmKSBjb25zdDsKIAotICAgIHZvaWQgYXBwbHlUcmFuc2Zvcm0o
VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZsb2F0UmVj
dCYgYm91bmRpbmdCb3gsIE9wdGlvblNldDxSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9u
T3B0aW9uPiA9IFJlbmRlclN0eWxlOjphbGxUcmFuc2Zvcm1PcGVyYXRpb25zKSBjb25zdCBvdmVy
cmlkZTsKKyAgICB2b2lkIGFwcGx5VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29u
c3QgUmVuZGVyU3R5bGUmLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBPcHRpb25TZXQ8
UmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbj4gPSBSZW5kZXJTdHlsZTo6YWxs
VHJhbnNmb3JtT3BlcmF0aW9ucykgY29uc3QgZmluYWw7CiAKIHByb3RlY3RlZDoKICAgICB2b2lk
IGVsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuY3Bw
CmluZGV4IDkwMzEyMmJlOTdjNzUxYTNkNTJhOTRlNzdmOGNhNzVmNjE0NGMxOTUuLmIwMGZiNTBh
YTllMDAwMTc5N2ZjOTU1MDg1ODZhNmIyMTQwNzdmNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29u
dGFpbmVyLmNwcApAQCAtOTcsMTUgKzk3LDEzIEBAIHZvaWQgUmVuZGVyU1ZHVHJhbnNmb3JtYWJs
ZUNvbnRhaW5lcjo6dXBkYXRlRnJvbVN0eWxlKCkKIHsKICAgICBSZW5kZXJTVkdDb250YWluZXI6
OnVwZGF0ZUZyb21TdHlsZSgpOwogCi0gICAgLy8gRklYTUU6IFtMQlNFXSBVcHN0cmVhbSBDU1Mv
U1ZHIHRyYW5zZm9ybSBzdXBwb3J0Ci0gICAgLy8gaWYgKGFzc29jaWF0ZWRVc2VFbGVtZW50KGdy
YXBoaWNzRWxlbWVudCgpKSkKLSAgICAvLyAgICBzZXRIYXNTVkdUcmFuc2Zvcm0oKTsKKyAgICBp
ZiAoYXNzb2NpYXRlZFVzZUVsZW1lbnQoZ3JhcGhpY3NFbGVtZW50KCkpKQorICAgICAgICBzZXRI
YXNTVkdUcmFuc2Zvcm0oKTsKIH0KIAogdm9pZCBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFp
bmVyOjphcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gsIE9wdGlv
blNldDxSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPiBvcHRpb25zKSBjb25z
dAogewotICAgIC8vIEZJWE1FOiBbTEJTRV0gVXBzdHJlYW0gQ1NTL1NWRyB0cmFuc2Zvcm0gc3Vw
cG9ydAotICAgIHN0eWxlLmFwcGx5VHJhbnNmb3JtKHRyYW5zZm9ybSwgYm91bmRpbmdCb3gsIG9w
dGlvbnMpOworICAgIGFwcGx5U1ZHVHJhbnNmb3JtKHRyYW5zZm9ybSwgZ3JhcGhpY3NFbGVtZW50
KCksIHN0eWxlLCBib3VuZGluZ0JveCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgUmVuZGVyU1ZHVHJh
bnNmb3JtYWJsZUNvbnRhaW5lcjo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZm
LCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFw
aGljc0VsZW1lbnQuY3BwCmluZGV4IGUyY2QxMzQyODg4YWE4YjI0Njg3ZmMyODcyMTVjYTkyMGFm
YTRiNmMuLmY3NTEyNjU0MGExYTUwYTgyNzliZDU4MWYwMzRjMmM2YzdkZTAxNjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCkBAIC03Myw2ICs3MywxNSBAQCBB
ZmZpbmVUcmFuc2Zvcm0gU1ZHR3JhcGhpY3NFbGVtZW50OjpnZXRTY3JlZW5DVE0oU3R5bGVVcGRh
dGVTdHJhdGVneSBzdHlsZVVwZGF0ZQogCiBBZmZpbmVUcmFuc2Zvcm0gU1ZHR3JhcGhpY3NFbGVt
ZW50OjphbmltYXRlZExvY2FsVHJhbnNmb3JtKCkgY29uc3QKIHsKKyNpZiBFTkFCTEUoTEFZRVJf
QkFTRURfU1ZHX0VOR0lORSkKKyAgICAvLyBMQlNFIGhhbmRsZXMgdHJhbnNmb3JtcyB2aWEgUmVu
ZGVyTGF5ZXIsIG5vIG5lZWQgdG8gaGFuZGxlIENTUyB0cmFuc2Zvcm1zIGhlcmUuCisgICAgaWYg
KGRvY3VtZW50KCkuc2V0dGluZ3MoKS5sYXllckJhc2VkU1ZHRW5naW5lRW5hYmxlZCgpKSB7Cisg
ICAgICAgIGlmIChtX3N1cHBsZW1lbnRhbFRyYW5zZm9ybSkKKyAgICAgICAgICAgIHJldHVybiAq
bV9zdXBwbGVtZW50YWxUcmFuc2Zvcm0gKiB0cmFuc2Zvcm0oKS5jb25jYXRlbmF0ZSgpOworICAg
ICAgICByZXR1cm4gdHJhbnNmb3JtKCkuY29uY2F0ZW5hdGUoKTsKKyAgICB9CisjZW5kaWYKKwog
ICAgIEFmZmluZVRyYW5zZm9ybSBtYXRyaXg7CiAKICAgICBhdXRvKiBzdHlsZSA9IHJlbmRlcmVy
KCkgPyAmcmVuZGVyZXIoKS0+c3R5bGUoKSA6IG51bGxwdHI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456619</attachid>
            <date>2022-04-04 13:36:19 -0700</date>
            <delta_ts>2022-04-05 14:59:45 -0700</delta_ts>
            <desc>Patch, v7</desc>
            <filename>bug-237711-20220404133617.patch</filename>
            <type>text/plain</type>
            <size>26371</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMzEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjhlYWE0ZDZiNDRmYThh
ZjRkNTMwNTgyN2NkNmZjYjMwOTA0NGFiYS4uMzYwZjU2Y2YyOTQ5MzFjYjUyMzQ2Mzk5YTFjMzdj
M2VmYjg4ZjgzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDIyLTA0LTA0ICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtMQlNF
XSBBY3RpdmF0ZSBTVkcgdHJhbnNmb3JtIHN1cHBvcnQgdGhyb3VnaCBsYXllcnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzcxMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFjdGl2YXRlIHRyYW5zZm9y
bXMgZm9yIFNWRyBsYXllcnMuCisKKyAgICAgICAgVXNlIHRoZSBmbGFnIHRvIGtlZXAgdHJhY2sg
b2YgdGhlIHByZXNlbmNlIG9mIFNWRyB0cmFuc2Zvcm1hdGlvbnMKKyAgICAgICAgb24gYSByZW5k
ZXJlci4gQ1NTL0hUTUwgcmVuZGVyZXJzIGNhbiByZWx5IG9ubHkgb24gdGhlIFJlbmRlclN0eWxl
CisgICAgICAgIHRvIGRldGVybWluZSBpZiB0cmFuc2Zvcm1hdGlvbnMgYXJlIGFwcGxpZWQsIHdo
ZXJlYXMgU1ZHIGhhcyB0bworICAgICAgICBjb25zdWx0IGFkZGl0aW9uYWwgc291cmNlcywgc3Vj
aCBhcyB0aGUgU1ZHICd0cmFuc2Zvcm0nIGF0dHJpYnV0ZS4KKworICAgICAgICBBIFNWRyByZW5k
ZXJlciB3aXRoIHRoZSAnSGFzU1ZHVHJhbnNmb3JtJyBmbGFnIHNldCBzaG91bGQgYmVoYXZlCisg
ICAgICAgIGxpa2UgYW55IFNWRy9IVE1MIHJlbmRlcmVyIHRoYXQgaGFzIENTUyB0cmFuc2Zvcm1h
dGlvbnMgYXBwbGllZC4KKworICAgICAgICBXaXRoIHRoaXMgcGF0Y2ggYXBwbGllZCBTVkcgdHJh
bnNmb3JtIGFuZCBDU1MgdHJhbnNmb3JtcyBjYW4KKyAgICAgICAgYmUgYXBwbGllZCB0byA8Zz4g
LyA8cmVjdD4gZWxlbWVudHMgaW4gTEJTRSwgaG93ZXZlciB0cmFuc2Zvcm0tb3JpZ2luCisgICAg
ICAgIHN1cHBvcnQgaXMgbm90IHlldCBjb3JyZWN0LCB0aGlzIHdpbGwgY29tZSB1cCBhIGZvbGxv
dy11cCBwYXRjaC4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLCBubyBjaGFu
Z2UgaW4gYmVoYXZpb3VyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1h
dGlvbk1hdHJpeDo6bXVsdGlwbHlBZmZpbmVUcmFuc2Zvcm0pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6dXBk
YXRlTGF5ZXJUcmFuc2Zvcm0pOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJC
b3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y2FuQ3JlYXRlU3RhY2tpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0
ZVRyYW5zZm9ybUZyb21TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y3Vy
cmVudFRyYW5zZm9ybSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyTW9k
ZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6
dXBkYXRlTGF5ZXJUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdDo6YXBwbHlTVkdUcmFuc2Zvcm0gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJMYXllck1vZGVsT2JqZWN0Lmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OnNldEhhc1NWR1RyYW5zZm9y
bSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyT2JqZWN0OjpoYXNTVkdUcmFuc2Zvcm0gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyT2JqZWN0OjpoYXNUcmFuc2Zvcm0gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xheWVy
VHJhbnNmb3JtVXBkYXRlcjo6U1ZHTGF5ZXJUcmFuc2Zvcm1VcGRhdGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0xheWVyVHJhbnNmb3JtVXBkYXRlcjo6flNWR0xheWVyVHJhbnNmb3JtVXBkYXRl
cik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdDb250YWluZXI6OmxheW91dCk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNWR0NvbnRhaW5lcjo6dXBkYXRlTGF5ZXJJbmZvcm1hdGlvbik6IERlbGV0ZWQu
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdNb2RlbE9iamVjdDo6dXBkYXRlRnJvbVN0eWxlKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyU1ZHUm9vdDo6dXBkYXRlRnJvbVN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1NoYXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBl
OjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHU2hhcGU6OmFwcGx5VHJhbnNm
b3JtIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXI6OnVw
ZGF0ZUZyb21TdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUcmFuc2Zvcm1hYmxl
Q29udGFpbmVyOjphcHBseVRyYW5zZm9ybSBjb25zdCk6CisgICAgICAgICogc3ZnL1NWR0dyYXBo
aWNzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFwaGljc0VsZW1lbnQ6OmFu
aW1hdGVkTG9jYWxUcmFuc2Zvcm0gY29uc3QpOgorCiAyMDIyLTA0LTA0ICBOaWtvbGFzIFppbW1l
cm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVuaWZ5IHJlZmVyZW5j
ZSBib3ggLyBDVE0gY29tcHV0YXRpb24gaW4gUmVuZGVyTGF5ZXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRy
aXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFu
c2Zvcm1hdGlvbk1hdHJpeC5jcHAKaW5kZXggZjIyNmQ5MzMxYTRlNDMxZjg2NmU5NTdjMTU4OWJk
ZWQwMzYxM2JjYS4uMjgxYzk1ZGNhNmRlY2Y3Nzc3YWE3MzVmNjA5ZmViYzg4MTAzOGI2MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFu
c2Zvcm1hdGlvbk1hdHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAKQEAgLTE1MzMsNiArMTUzMywx
NyBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgVHJhbnNmb3JtYXRpb25NYXRyaXg6Om11bHRpcGx5
KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JgogICAgIHJldHVybiAqdGhpczsKIH0KIAorVHJh
bnNmb3JtYXRpb25NYXRyaXgmIFRyYW5zZm9ybWF0aW9uTWF0cml4OjptdWx0aXBseUFmZmluZVRy
YW5zZm9ybShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIG1hdHJpeCkKK3sKKyAgICBpZiAobWF0cml4
LmlzSWRlbnRpdHkoKSkKKyAgICAgICAgcmV0dXJuICp0aGlzOworCisgICAgaWYgKG1hdHJpeC5p
c0lkZW50aXR5T3JUcmFuc2xhdGlvbigpKQorICAgICAgICByZXR1cm4gdHJhbnNsYXRlKG1hdHJp
eC5lKCksIG1hdHJpeC5mKCkpOworCisgICAgcmV0dXJuIG11bHRpcGx5KG1hdHJpeC50b1RyYW5z
Zm9ybWF0aW9uTWF0cml4KCkpOworfQorCiB2b2lkIFRyYW5zZm9ybWF0aW9uTWF0cml4OjptdWx0
VmVjTWF0cml4KGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlJiByZXN1bHRYLCBkb3VibGUmIHJl
c3VsdFkpIGNvbnN0CiB7CiAgICAgcmVzdWx0WCA9IG1fbWF0cml4WzNdWzBdICsgeCAqIG1fbWF0
cml4WzBdWzBdICsgeSAqIG1fbWF0cml4WzFdWzBdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlv
bk1hdHJpeC5oCmluZGV4IGM5NTExNzdhMzEwYjc2MDRjMjE1OWNkNmUyNDk3ZmQ4ZjI1N2I4M2Iu
Ljg1NWQyZTcyYTE1YTdjODYzNzc4NjU2ZTRmMzg2ZWE5YThjMjI2MWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25N
YXRyaXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKQEAgLTI0OSw2ICsyNDksOCBAQCBwdWJsaWM6CiAKICAg
ICAvLyB0aGlzID0gbWF0ICogdGhpcy4KICAgICBXRUJDT1JFX0VYUE9SVCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgbXVsdGlwbHkoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKKyAgICAvLyBJ
ZGVudGljYWwgdG8gbXVsdGlwbHkoVHJhbnNmb3JtYXRpb25NYXRyaXgmKSwgYnV0IHNhdmluZyBh
IEFmZmluZVRyYW5zZm9ybSAtPiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCByb3VuZHRyaXAgZm9yIGlk
ZW50aXR5IG9yIHRyYW5zbGF0aW9uIG1hdHJpY2VzLgorICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBtdWx0aXBseUFmZmluZVRyYW5zZm9ybShjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKIAogICAg
IFdFQkNPUkVfRVhQT1JUIFRyYW5zZm9ybWF0aW9uTWF0cml4JiBzY2FsZShkb3VibGUpOwogICAg
IFdFQkNPUkVfRVhQT1JUIFRyYW5zZm9ybWF0aW9uTWF0cml4JiBzY2FsZU5vblVuaWZvcm0oZG91
YmxlIHN4LCBkb3VibGUgc3kpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcApp
bmRleCBiMGRjMTI3Nzc3YjBiM2ViYWU0ZDBiZTIxNGEzMDU0Mjg5Y2NhOGE3Li41M2NkM2FmZTc0
YzNkMWE4OGNkY2JiMDIxYTVhYzc4MzA5NTdlNzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94LmNwcApAQCAtNjY3LDEzICs2NjcsNiBAQCB2b2lkIFJlbmRlckJveDo6YWJzb2x1
dGVRdWFkcyhWZWN0b3I8RmxvYXRRdWFkPiYgcXVhZHMsIGJvb2wqIHdhc0ZpeGVkKSBjb25zdAog
ICAgIHF1YWRzLmFwcGVuZChsb2NhbFRvQWJzb2x1dGVRdWFkKGxvY2FsUmVjdCwgVXNlVHJhbnNm
b3Jtcywgd2FzRml4ZWQpKTsKIH0KIAotdm9pZCBSZW5kZXJCb3g6OnVwZGF0ZUxheWVyVHJhbnNm
b3JtKCkKLXsKLSAgICAvLyBUcmFuc2Zvcm0tb3JpZ2luIGRlcGVuZHMgb24gYm94IHNpemUsIHNv
IHdlIG5lZWQgdG8gdXBkYXRlIHRoZSBsYXllciB0cmFuc2Zvcm0gYWZ0ZXIgbGF5b3V0LgotICAg
IGlmIChoYXNMYXllcigpKQotICAgICAgICBsYXllcigpLT51cGRhdGVUcmFuc2Zvcm0oKTsKLX0K
LQogdm9pZCBSZW5kZXJCb3g6OmFwcGx5VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0
LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gs
IE9wdGlvblNldDxSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPiBvcHRpb25z
KSBjb25zdAogewogICAgIHN0eWxlLmFwcGx5VHJhbnNmb3JtKHQsIGJvdW5kaW5nQm94LCBvcHRp
b25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAppbmRleCBjZGEzYzZmYzIxMGJh
ZGQwZmY1NDYyMTIxMmUyMzRkOWVmOTBmNmQ3Li41MWU1YjBhZGM5NGQ4ZDgwNWM0NTdmNTE2ZTNm
NTI4ZDNlNjg1ODFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCkBAIC0yMTgs
NyArMjE4LDYgQEAgcHVibGljOgogICAgIHZvaWQgYWRkT3ZlcmZsb3dGcm9tQ2hpbGQoY29uc3Qg
UmVuZGVyQm94KiBjaGlsZCkgeyBhZGRPdmVyZmxvd0Zyb21DaGlsZChjaGlsZCwgY2hpbGQtPmxv
Y2F0aW9uT2Zmc2V0KCkpOyB9CiAgICAgdm9pZCBhZGRPdmVyZmxvd0Zyb21DaGlsZChjb25zdCBS
ZW5kZXJCb3gqIGNoaWxkLCBjb25zdCBMYXlvdXRTaXplJiBkZWx0YSk7CiAKLSAgICB2b2lkIHVw
ZGF0ZUxheWVyVHJhbnNmb3JtKCk7CiAgICAgdm9pZCBhcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGlu
Z0JveCwgT3B0aW9uU2V0PFJlbmRlclN0eWxlOjpUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb24+ID0g
UmVuZGVyU3R5bGU6OmFsbFRyYW5zZm9ybU9wZXJhdGlvbnMpIGNvbnN0IG92ZXJyaWRlOwogCiAg
ICAgTGF5b3V0U2l6ZSBjb250ZW50U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIHsgY29udGVudFdpZHRo
KCksIGNvbnRlbnRIZWlnaHQoKSB9OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcAppbmRleCBkY2UzMjYzNGI2Zjk1NjRiMzA3OTVlNDI5N2M3NGM4NDExNzVjZDFmLi5h
NzE5N2Q4Mzk1YWFlNDcwNmZkMjcxMzc2MDI5OTczOWM0OWU0YjVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTU1Miw2ICs1NTIsOSBAQCBzdGF0aWMgYm9v
bCBjYW5DcmVhdGVTdGFja2luZ0NvbnRleHQoY29uc3QgUmVuZGVyTGF5ZXImIGxheWVyKQogewog
ICAgIGF1dG8mIHJlbmRlcmVyID0gbGF5ZXIucmVuZGVyZXIoKTsKICAgICByZXR1cm4gcmVuZGVy
ZXIuaGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCkKKyNpZiBFTkFCTEUoTEFZRVJfQkFTRURf
U1ZHX0VOR0lORSkKKyAgICAgICAgfHwgcmVuZGVyZXIuaGFzU1ZHVHJhbnNmb3JtKCkKKyNlbmRp
ZgogICAgICAgICB8fCByZW5kZXJlci5oYXNDbGlwUGF0aCgpCiAgICAgICAgIHx8IHJlbmRlcmVy
Lmhhc0ZpbHRlcigpCiAgICAgICAgIHx8IHJlbmRlcmVyLmhhc01hc2soKQpAQCAtMTM2NiwxOSAr
MTM2OSwxMyBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBSZW5kZXJMYXllcjo6Y3VycmVudFRyYW5z
Zm9ybShPcHRpb25TZXQ8UmVuZGVyU3R5bGU6OlRyYW5zZgogICAgIGlmICghbV90cmFuc2Zvcm0p
CiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICAvLyBGSVhNRTogW0xCU0VdIFVwc3RyZWFtIHRy
YW5zZm9ybSBzdXBwb3J0IGZvciBSZW5kZXJTVkdNb2RlbE9iamVjdCBkZXJpdmVkIHJlbmRlcmVy
cwotICAgIGlmICghaXM8UmVuZGVyQm94PihyZW5kZXJlcigpKSkKLSAgICAgICAgcmV0dXJuIHsg
fTsKLQotICAgIGF1dG8mIHJlbmRlckJveCA9IGRvd25jYXN0PFJlbmRlckJveD4ocmVuZGVyZXIo
KSk7Ci0KICAgICAvLyBtX3RyYW5zZm9ybSBpbmNsdWRlcyB0cmFuc2Zvcm0tb3JpZ2luIGFuZCBp
cyBhZmZlY3RlZCBieSB0aGUgY2hvaWNlIG9mIHRoZSB0cmFuc2Zvcm0tYm94LgogICAgIC8vIFRo
ZXJlZm9yZSB3ZSBjYW4gb25seSB1c2UgdGhlIGNhY2hlZCBtX3RyYW5zZm9ybSwgaWYgdGhlIGFu
aW1hdGlvbiBkb2Vzbid0IGFsdGVyIHRyYW5zZm9ybS1ib3ggb3IgZXhjbHVkZXMgdHJhbnNmb3Jt
LW9yaWdpbi4KIAogICAgIC8vIFF1ZXJ5IHRoZSBhbmltYXRlZFN0eWxlKCkgdG8gb2J0YWluIHRo
ZSBjdXJyZW50IHRyYW5zZm9ybWF0aW9uLCB3aGVuIGFjY2VsZXJhdGVkIHRyYW5zZm9ybSBhbmlt
YXRpb25zIGFyZSBydW5uaW5nLgotICAgIGF1dG8gc3R5bGVhYmxlID0gU3R5bGVhYmxlOjpmcm9t
UmVuZGVyZXIocmVuZGVyQm94KTsKKyAgICBhdXRvIHN0eWxlYWJsZSA9IFN0eWxlYWJsZTo6ZnJv
bVJlbmRlcmVyKHJlbmRlcmVyKCkpOwogICAgIGlmICgoc3R5bGVhYmxlICYmIHN0eWxlYWJsZS0+
aXNSdW5uaW5nQWNjZWxlcmF0ZWRUcmFuc2Zvcm1BbmltYXRpb24oKSkgfHwgIW9wdGlvbnMuY29u
dGFpbnMoUmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbjo6VHJhbnNmb3JtT3Jp
Z2luKSkgewotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IGFuaW1hdGVkU3R5
bGUgPSByZW5kZXJCb3guYW5pbWF0ZWRTdHlsZSgpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UmVuZGVyU3R5bGU+IGFuaW1hdGVkU3R5bGUgPSByZW5kZXJlcigpLmFuaW1hdGVkU3R5bGUoKTsK
IAogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm07CiAgICAgICAgIHVwZGF0
ZVRyYW5zZm9ybUZyb21TdHlsZSh0cmFuc2Zvcm0sICphbmltYXRlZFN0eWxlLCBvcHRpb25zKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0
LmNwcAppbmRleCA4ZDk5MGYxZDUzMWJlNjNmMmIyNWQwNjE0NWZiMTMxYzQxMDA3MjZjLi4xOTQw
NTY4ZWFmOWRjYjYxOTYyMjljZmU1YmIyNWZlZTAzOWJmNDMyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCkBAIC0zMSw2ICsz
MSw3IEBACiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJTY3JvbGxhYmxlQXJlYS5oIgogI2luY2x1ZGUg
IlJlbmRlclNWR01vZGVsT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgorI2luY2x1
ZGUgIlNWR0dyYXBoaWNzRWxlbWVudC5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVk
ZSAiU3R5bGVTY3JvbGxTbmFwUG9pbnRzLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtU3RhdGUuaCIK
QEAgLTIzMSw2ICsyMzIsMTMgQEAgdm9pZCBSZW5kZXJMYXllck1vZGVsT2JqZWN0OjpzdXNwZW5k
QW5pbWF0aW9ucyhNb25vdG9uaWNUaW1lIHRpbWUpCiAgICAgbGF5ZXIoKS0+YmFja2luZygpLT5z
dXNwZW5kQW5pbWF0aW9ucyh0aW1lKTsKIH0KIAordm9pZCBSZW5kZXJMYXllck1vZGVsT2JqZWN0
Ojp1cGRhdGVMYXllclRyYW5zZm9ybSgpCit7CisgICAgLy8gVHJhbnNmb3JtLW9yaWdpbiBkZXBl
bmRzIG9uIGJveCBzaXplLCBzbyB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgbGF5ZXIgdHJhbnNmb3Jt
IGFmdGVyIGxheW91dC4KKyAgICBpZiAoaGFzTGF5ZXIoKSkKKyAgICAgICAgbGF5ZXIoKS0+dXBk
YXRlVHJhbnNmb3JtKCk7Cit9CisKICNpZiBFTkFCTEUoTEFZRVJfQkFTRURfU1ZHX0VOR0lORSkK
IHN0ZDo6b3B0aW9uYWw8TGF5b3V0UmVjdD4gUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6Y29tcHV0
ZVZpc2libGVSZWN0SW5TVkdDb250YWluZXIoY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwgY29uc3Qg
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdCogY29udGFpbmVyLCBSZW5kZXJPYmplY3Q6OlZpc2libGVS
ZWN0Q29udGV4dCBjb250ZXh0KSBjb25zdAogewpAQCAtMzE2LDYgKzMyNCwzOCBAQCB2b2lkIFJl
bmRlckxheWVyTW9kZWxPYmplY3Q6Om1hcExvY2FsVG9TVkdDb250YWluZXIoY29uc3QgUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdAogCiAgICAgY29udGFpbmVyLT5tYXBMb2NhbFRvQ29udGFpbmVyKGFu
Y2VzdG9yQ29udGFpbmVyLCB0cmFuc2Zvcm1TdGF0ZSwgbW9kZSwgd2FzRml4ZWQpOwogfQorCit2
b2lkIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OmFwcGx5U1ZHVHJhbnNmb3JtKFRyYW5zZm9ybWF0
aW9uTWF0cml4JiB0cmFuc2Zvcm0sIFNWR0dyYXBoaWNzRWxlbWVudCYgZ3JhcGhpY3NFbGVtZW50
LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gs
IE9wdGlvblNldDxSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPiBvcHRpb25z
KSBjb25zdAoreworICAgIC8vIFRoaXMgY2hlY2sgZG9lcyBub3QgdXNlIHN0eWxlLmhhc1RyYW5z
Zm9ybVJlbGF0ZWRQcm9wZXJ0eSgpIG9uIHB1cnBvc2UgLS0gd2Ugb25seSB3YW50IHRvIGtub3cg
aWYgZWl0aGVyIHRoZSAndHJhbnNmb3JtJyBwcm9wZXJ0eSwgYW4KKyAgICAvLyBvZmZzZXQgcGF0
aCwgb3IgdGhlIGluZGl2aWR1YWwgdHJhbnNmb3JtIG9wZXJhdGlvbnMgYXJlIHNldCAocGVyc3Bl
Y3RpdmUgLyB0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkIGFyZSBub3QgcmVsZXZhbnQgaGVy
ZSkuCisgICAgYm9vbCBoYXNDU1NUcmFuc2Zvcm0gPSBzdHlsZS5oYXNUcmFuc2Zvcm0oKSB8fCBz
dHlsZS5yb3RhdGUoKSB8fCBzdHlsZS50cmFuc2xhdGUoKSB8fCBzdHlsZS5zY2FsZSgpOworCisg
ICAgYm9vbCBhZmZlY3RlZEJ5VHJhbnNmb3JtT3JpZ2luID0gZmFsc2U7CisgICAgc3RkOjpvcHRp
b25hbDxBZmZpbmVUcmFuc2Zvcm0+IHN2Z1RyYW5zZm9ybTsKKworICAgIGlmIChoYXNDU1NUcmFu
c2Zvcm0pCisgICAgICAgIGFmZmVjdGVkQnlUcmFuc2Zvcm1PcmlnaW4gPSBzdHlsZS5hZmZlY3Rl
ZEJ5VHJhbnNmb3JtT3JpZ2luKCk7CisgICAgZWxzZSBpZiAoYXV0byBhZmZpbmVUcmFuc2Zvcm0g
PSBncmFwaGljc0VsZW1lbnQuYW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSgpOyAhYWZmaW5lVHJhbnNm
b3JtLmlzSWRlbnRpdHkoKSkgeworICAgICAgICBzdmdUcmFuc2Zvcm0gPSBhZmZpbmVUcmFuc2Zv
cm07CisgICAgICAgIGFmZmVjdGVkQnlUcmFuc2Zvcm1PcmlnaW4gPSBhZmZpbmVUcmFuc2Zvcm0u
YSgpICE9IDEgfHwgYWZmaW5lVHJhbnNmb3JtLmIoKSB8fCBhZmZpbmVUcmFuc2Zvcm0uYygpIHx8
IGFmZmluZVRyYW5zZm9ybS5kKCkgIT0gMTsKKyAgICB9CisKKyAgICBpZiAoIWhhc0NTU1RyYW5z
Zm9ybSAmJiAhc3ZnVHJhbnNmb3JtLmhhc192YWx1ZSgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBGbG9hdFBvaW50M0Qgb3JpZ2luVHJhbnNsYXRlOworICAgIGlmIChvcHRpb25zLmNvbnRhaW5z
KFJlbmRlclN0eWxlOjpUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb246OlRyYW5zZm9ybU9yaWdpbikg
JiYgYWZmZWN0ZWRCeVRyYW5zZm9ybU9yaWdpbikKKyAgICAgICAgb3JpZ2luVHJhbnNsYXRlID0g
c3R5bGUuYXBwbHlUcmFuc2Zvcm1PcmlnaW4odHJhbnNmb3JtLCBib3VuZGluZ0JveCk7CisKKyAg
ICAvLyBDU1MgdHJhbnNmb3JtcyB0YWtlIHByZWNlZGVuY2Ugb3ZlciBTVkcgdHJhbnNmb3Jtcy4K
KyAgICBpZiAoaGFzQ1NTVHJhbnNmb3JtKQorICAgICAgICBzdHlsZS5hcHBseUNTU1RyYW5zZm9y
bSh0cmFuc2Zvcm0sIGJvdW5kaW5nQm94LCBvcHRpb25zKTsKKyAgICBlbHNlCisgICAgICAgIHRy
YW5zZm9ybS5tdWx0aXBseUFmZmluZVRyYW5zZm9ybShzdmdUcmFuc2Zvcm0udmFsdWUoKSk7CisK
KyAgICBzdHlsZS51bmFwcGx5VHJhbnNmb3JtT3JpZ2luKHRyYW5zZm9ybSwgb3JpZ2luVHJhbnNs
YXRlKTsKK30KICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuaAppbmRleCBkNDRmZjZh
ZDUyZDNhNTlmNTFkMWMwZmVhZjZjZTc5NWE1ZTBlZGUwLi4xMjRhZWJkNGQ3NDAzM2M3NjUxYzkw
YWYzZWZlMGI3ZDlkZmY3ZGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllck1vZGVsT2JqZWN0LmgKQEAgLTI4LDYgKzI4LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBLZXlmcmFtZUxpc3Q7CiBjbGFzcyBSZW5kZXJMYXllcjsKK2NsYXNzIFNW
R0dyYXBoaWNzRWxlbWVudDsKIAogc3RydWN0IExheWVyUmVwYWludFJlY3RzIHsKICAgICBMYXlv
dXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3Q7CkBAIC03NSw4ICs3NiwxMiBAQCBwdWJsaWM6CiAg
ICAgLy8gUHJvdmlkZXMgdGhlIFNWRyBpbXBsZW1lbnRhdGlvbiBmb3IgbWFwTG9jYWxUb0NvbnRh
aW5lcigpLgogICAgIC8vIFRoaXMgbGl2ZXMgaW4gUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCwgd2hp
Y2ggaXMgdGhlIGNvbW1vbiBiYXNlLWNsYXNzIGZvciBhbGwgU1ZHIHJlbmRlcmVycy4KICAgICB2
b2lkIG1hcExvY2FsVG9TVkdDb250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCog
YW5jZXN0b3JDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgT3B0aW9uU2V0PE1hcENvb3JkaW5h
dGVzTW9kZT4sIGJvb2wqIHdhc0ZpeGVkKSBjb25zdDsKKworICAgIHZvaWQgYXBwbHlTVkdUcmFu
c2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBTVkdHcmFwaGljc0VsZW1lbnQmLCBjb25zdCBS
ZW5kZXJTdHlsZSYsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gsIE9wdGlvblNldDxSZW5k
ZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPikgY29uc3Q7CiAjZW5kaWYKIAorICAg
IHZvaWQgdXBkYXRlTGF5ZXJUcmFuc2Zvcm0oKTsKKwogICAgIHZpcnR1YWwgdm9pZCBhcHBseVRy
YW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3Qg
RmxvYXRSZWN0JiBib3VuZGluZ0JveCwgT3B0aW9uU2V0PFJlbmRlclN0eWxlOjpUcmFuc2Zvcm1P
cGVyYXRpb25PcHRpb24+ID0gUmVuZGVyU3R5bGU6OmFsbFRyYW5zZm9ybU9wZXJhdGlvbnMpIGNv
bnN0ID0gMDsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0LmNwcAppbmRleCA2MTY2YmNmZjQ3NjM2NDgyMjc2ZDdlYjMyMjI2ZmM0OWFlNDdjM2I4Li5h
MGRhNzM2ZGFkYWQ3NjFkYmJiMTg4ZGJiZDgwOTliODQ1M2Q5ZTk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTk3Niw2ICsxOTc2LDE0IEBAIHZvaWQg
UmVuZGVyT2JqZWN0OjpzZXRIYXNPdXRsaW5lQXV0b0FuY2VzdG9yKGJvb2wgaGFzT3V0bGluZUF1
dG9BbmNlc3RvcikKICAgICAgICAgZW5zdXJlUmFyZURhdGEoKS5zZXRIYXNPdXRsaW5lQXV0b0Fu
Y2VzdG9yKGhhc091dGxpbmVBdXRvQW5jZXN0b3IpOwogfQogCisjaWYgRU5BQkxFKExBWUVSX0JB
U0VEX1NWR19FTkdJTkUpCit2b2lkIFJlbmRlck9iamVjdDo6c2V0SGFzU1ZHVHJhbnNmb3JtKGJv
b2wgaGFzU1ZHVHJhbnNmb3JtKQoreworICAgIGlmIChoYXNTVkdUcmFuc2Zvcm0gfHwgaGFzUmFy
ZURhdGEoKSkKKyAgICAgICAgZW5zdXJlUmFyZURhdGEoKS5zZXRIYXNTVkdUcmFuc2Zvcm0oaGFz
U1ZHVHJhbnNmb3JtKTsKK30KKyNlbmRpZgorCiB2b2lkIFJlbmRlck9iamVjdDo6c2V0UGFpbnRD
b250YWlubWVudEFwcGxpZXMoYm9vbCBwYWludENvbnRhaW5tZW50QXBwbGllcykKIHsKICAgICBp
ZiAocGFpbnRDb250YWlubWVudEFwcGxpZXMgfHwgaGFzUmFyZURhdGEoKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCBmY2FjZjM4NTRjOGVhNGUwODI3YTdiZTIy
MGQ0OTJmMjU1N2U2YTk5Li5jMjFkNGRkZjQwMGRmYmY2NzI3MjA1Y2Q3YzQ1MGQ1OGU1MWMzMjAz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC00MTUsNiArNDE1
LDEyIEBAIHB1YmxpYzoKICAgICBib29sIGhhc091dGxpbmVBdXRvQW5jZXN0b3IoKSBjb25zdCB7
IHJldHVybiBtX2JpdGZpZWxkcy5oYXNSYXJlRGF0YSgpICYmIHJhcmVEYXRhKCkuaGFzT3V0bGlu
ZUF1dG9BbmNlc3RvcigpOyB9CiAgICAgYm9vbCBwYWludENvbnRhaW5tZW50QXBwbGllcygpIGNv
bnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmhhc1JhcmVEYXRhKCkgJiYgcmFyZURhdGEoKS5wYWlu
dENvbnRhaW5tZW50QXBwbGllcygpOyB9CiAKKyNpZiBFTkFCTEUoTEFZRVJfQkFTRURfU1ZHX0VO
R0lORSkKKyAgICBib29sIGhhc1NWR1RyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0Zmll
bGRzLmhhc1JhcmVEYXRhKCkgJiYgcmFyZURhdGEoKS5oYXNTVkdUcmFuc2Zvcm0oKTsgfQorI2Vs
c2UKKyAgICBib29sIGhhc1NWR1RyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cisj
ZW5kaWYKKwogICAgIGJvb2wgaXNFeGNsdWRlZEZyb21Ob3JtYWxMYXlvdXQoKSBjb25zdCB7IHJl
dHVybiBtX2JpdGZpZWxkcy5pc0V4Y2x1ZGVkRnJvbU5vcm1hbExheW91dCgpOyB9CiAgICAgdm9p
ZCBzZXRJc0V4Y2x1ZGVkRnJvbU5vcm1hbExheW91dChib29sIGV4Y2x1ZGVkKSB7IG1fYml0Zmll
bGRzLnNldElzRXhjbHVkZWRGcm9tTm9ybWFsTGF5b3V0KGV4Y2x1ZGVkKTsgfQogICAgIGJvb2wg
aXNFeGNsdWRlZEFuZFBsYWNlZEluQm9yZGVyKCkgY29uc3QgeyByZXR1cm4gaXNFeGNsdWRlZEZy
b21Ob3JtYWxMYXlvdXQoKSAmJiBpc0xlZ2VuZCgpOyB9CkBAIC00NDksNyArNDU1LDcgQEAgcHVi
bGljOgogICAgIGJvb2wgaGFzUG90ZW50aWFsbHlTY3JvbGxhYmxlT3ZlcmZsb3coKSBjb25zdDsK
IAogICAgIGJvb2wgaGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCkgY29uc3QgeyByZXR1cm4g
bV9iaXRmaWVsZHMuaGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCk7IH0gLy8gVHJhbnNmb3Jt
LCBwZXJzcGVjdGl2ZSBvciB0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkLgotICAgIGJvb2wg
aGFzVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gaGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5
KCkgJiYgKHN0eWxlKCkuaGFzVHJhbnNmb3JtKCkgfHwgc3R5bGUoKS50cmFuc2xhdGUoKSB8fCBz
dHlsZSgpLnNjYWxlKCkgfHwgc3R5bGUoKS5yb3RhdGUoKSk7IH0KKyAgICBib29sIGhhc1RyYW5z
Zm9ybSgpIGNvbnN0IHsgcmV0dXJuIGhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgpICYmIChz
dHlsZSgpLmhhc1RyYW5zZm9ybSgpIHx8IHN0eWxlKCkudHJhbnNsYXRlKCkgfHwgc3R5bGUoKS5z
Y2FsZSgpIHx8IHN0eWxlKCkucm90YXRlKCkgfHwgaGFzU1ZHVHJhbnNmb3JtKCkpOyB9CiAgICAg
Ym9vbCBoYXNUcmFuc2Zvcm1PclBlc3BlY3RpdmUoKSBjb25zdCB7IHJldHVybiBoYXNUcmFuc2Zv
cm1SZWxhdGVkUHJvcGVydHkoKSAmJiAoaGFzVHJhbnNmb3JtKCkgfHwgc3R5bGUoKS5oYXNQZXJz
cGVjdGl2ZSgpKTsgfQogCiAgICAgaW5saW5lIGJvb2wgcHJlc2VydmVzTmV3bGluZSgpIGNvbnN0
OwpAQCAtNTE0LDYgKzUyMCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElzUmVuZGVyRnJhZ21l
bnRlZEZsb3coYm9vbCA9IHRydWUpOwogICAgIHZvaWQgc2V0SGFzT3V0bGluZUF1dG9BbmNlc3Rv
cihib29sID0gdHJ1ZSk7CiAgICAgdm9pZCBzZXRQYWludENvbnRhaW5tZW50QXBwbGllcyhib29s
ID0gdHJ1ZSk7CisjaWYgRU5BQkxFKExBWUVSX0JBU0VEX1NWR19FTkdJTkUpCisgICAgdm9pZCBz
ZXRIYXNTVkdUcmFuc2Zvcm0oYm9vbCA9IHRydWUpOworI2VuZGlmCiAKICAgICAvLyBIb29rIHNv
IHRoYXQgUmVuZGVyVGV4dENvbnRyb2wgY2FuIHJldHVybiB0aGUgbGluZSBoZWlnaHQgb2YgaXRz
IGlubmVyIHJlbmRlcmVyLgogICAgIC8vIEZvciBvdGhlciByZW5kZXJlcnMsIHRoZSB2YWx1ZSBp
cyB0aGUgc2FtZSBhcyBsaW5lSGVpZ2h0KGZhbHNlKS4KQEAgLTk0Myw2ICs5NTIsOSBAQCBwcml2
YXRlOgogICAgICAgICBBRERfQk9PTEVBTl9CSVRGSUVMRChpc1JlbmRlckZyYWdtZW50ZWRGbG93
LCBJc1JlbmRlckZyYWdtZW50ZWRGbG93KTsKICAgICAgICAgQUREX0JPT0xFQU5fQklURklFTEQo
aGFzT3V0bGluZUF1dG9BbmNlc3RvciwgSGFzT3V0bGluZUF1dG9BbmNlc3Rvcik7CiAgICAgICAg
IEFERF9CT09MRUFOX0JJVEZJRUxEKHBhaW50Q29udGFpbm1lbnRBcHBsaWVzLCBQYWludENvbnRh
aW5tZW50QXBwbGllcyk7CisjaWYgRU5BQkxFKExBWUVSX0JBU0VEX1NWR19FTkdJTkUpCisgICAg
ICAgIEFERF9CT09MRUFOX0JJVEZJRUxEKGhhc1NWR1RyYW5zZm9ybSwgSGFzU1ZHVHJhbnNmb3Jt
KTsKKyNlbmRpZgogCiAgICAgICAgIC8vIEZyb20gUmVuZGVyRWxlbWVudAogICAgICAgICBzdGQ6
OnVuaXF1ZV9wdHI8UmVmZXJlbmNlZFNWR1Jlc291cmNlcz4gcmVmZXJlbmNlZFNWR1Jlc291cmNl
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29u
dGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFp
bmVyLmNwcAppbmRleCBiZGNjNTgxNWI0NjYyN2YwZmYxYzVhMTQ4MDI0MGZmNjU3Yjk0N2VmLi4z
NDVkNjM2MTM0ZDVmZGJjZjkyNjdiZmNkYWNjNGNmNjJjYjNjNmM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCkBAIC01Miw2
ICs1MiwzNiBAQCBSZW5kZXJTVkdDb250YWluZXI6OlJlbmRlclNWR0NvbnRhaW5lcihTVkdFbGVt
ZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogCiBSZW5kZXJTVkdDb250YWluZXI6
On5SZW5kZXJTVkdDb250YWluZXIoKSA9IGRlZmF1bHQ7CiAKKy8vIEhlbHBlciBjbGFzcywgbW92
ZSB0byBpdHMgb3duIGZpbGUgb25jZSB1dGlsaXplZCBpbiBtb3JlIHRoYW4gb25lIHBsYWNlLgor
Y2xhc3MgU1ZHTGF5ZXJUcmFuc2Zvcm1VcGRhdGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShTVkdMYXllclRyYW5zZm9ybVVwZGF0ZXIpOworcHVibGljOgorICAgIFNWR0xheWVyVHJhbnNm
b3JtVXBkYXRlcihSZW5kZXJMYXllck1vZGVsT2JqZWN0JiByZW5kZXJlcikKKyAgICAgICAgOiBt
X3JlbmRlcmVyKHJlbmRlcmVyKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3JlbmRlcmVyLmhhc0xh
eWVyKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV90cmFuc2Zvcm1SZWZlcmVu
Y2VCb3ggPSBtX3JlbmRlcmVyLnRyYW5zZm9ybVJlZmVyZW5jZUJveFJlY3QoKTsKKyAgICAgICAg
bV9yZW5kZXJlci51cGRhdGVMYXllclRyYW5zZm9ybSgpOworICAgIH0KKworCisgICAgflNWR0xh
eWVyVHJhbnNmb3JtVXBkYXRlcigpCisgICAgeworICAgICAgICBpZiAoIW1fcmVuZGVyZXIuaGFz
TGF5ZXIoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKG1fcmVuZGVyZXIudHJh
bnNmb3JtUmVmZXJlbmNlQm94UmVjdCgpID09IG1fdHJhbnNmb3JtUmVmZXJlbmNlQm94KQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fcmVuZGVyZXIudXBkYXRlTGF5ZXJUcmFuc2Zv
cm0oKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCYgbV9y
ZW5kZXJlcjsKKyAgICBGbG9hdFJlY3QgbV90cmFuc2Zvcm1SZWZlcmVuY2VCb3g7Cit9OworCiB2
b2lkIFJlbmRlclNWR0NvbnRhaW5lcjo6bGF5b3V0KCkKIHsKICAgICBTdGFja1N0YXRzOjpMYXlv
dXRDaGVja1BvaW50IGxheW91dENoZWNrUG9pbnQ7CkBAIC02NCwxMyArOTQsMTAgQEAgdm9pZCBS
ZW5kZXJTVkdDb250YWluZXI6OmxheW91dCgpCiAgICAgLy8gVXBkYXRlIGxheWVyIHRyYW5zZm9y
bSBiZWZvcmUgbGF5aW5nIG91dCBjaGlsZHJlbiAoU1ZHIG5lZWRzIGFjY2VzcyB0byB0aGUgdHJh
bnNmb3JtIG1hdHJpY2VzIGR1cmluZyBsYXlvdXQgZm9yIG9uLXNjcmVlbiB0ZXh0IGZvbnQtc2l6
ZSBjYWxjdWxhdGlvbnMpLgogICAgIC8vIEV2ZW50dWFsbHkgcmUtdXBkYXRlIGlmIHRoZSB0cmFu
c2Zvcm0gcmVmZXJlbmNlIGJveCwgcmVsZXZhbnQgZm9yIHRyYW5zZm9ybS1vcmlnaW4sIGhhcyBj
aGFuZ2VkIGR1cmluZyBsYXlvdXQuCiAgICAgewotICAgICAgICAvLyBGSVhNRTogW0xCU0VdIFVw
c3RyZWFtIFNWR0xheWVyVHJhbnNmb3JtVXBkYXRlcgotICAgICAgICAvLyBTVkdMYXllclRyYW5z
Zm9ybVVwZGF0ZXIgdHJhbnNmb3JtVXBkYXRlcigqdGhpcyk7CisgICAgICAgIFNWR0xheWVyVHJh
bnNmb3JtVXBkYXRlciB1cGRhdGVUcmFuc2Zvcm0oKnRoaXMpOwogICAgICAgICBsYXlvdXRDaGls
ZHJlbigpOwogICAgIH0KIAotICAgIHVwZGF0ZUxheWVySW5mb3JtYXRpb24oKTsKLQogICAgIC8v
IEludmFsaWRhdGUgYWxsIHJlc291cmNlcyBvZiB0aGlzIGNsaWVudCBpZiBvdXIgbGF5b3V0IGNo
YW5nZWQuCiAgICAgaWYgKGV2ZXJIYWRMYXlvdXQoKSAmJiBuZWVkc0xheW91dCgpKQogICAgICAg
ICBTVkdSZXNvdXJjZXNDYWNoZTo6Y2xpZW50TGF5b3V0Q2hhbmdlZCgqdGhpcyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuaAppbmRleCAw
YWQwYjgzNDY1Zjk5YzMxZTk1YWEzYzc5NzU5YWUzNzc4ZmIzMDE2Li5lMzQ4MmFiOWYwM2ExNWY5
MzFhMjk5NjlkMWY2NTQwNjYwNWY1N2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgKQEAgLTU1LDcgKzU1LDYgQEAgcHJvdGVjdGVk
OgogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXRDaGlsZHJlbigpOwogICAgIGJvb2wgbm9kZUF0UG9p
bnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExv
Y2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0
ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUxheWVySW5mb3JtYXRpb24oKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlVmll
d3BvcnQoKTsKICAgICB2aXJ0dWFsIGJvb2wgcG9pbnRJc0luc2lkZVZpZXdwb3J0Q2xpcChjb25z
dCBGbG9hdFBvaW50JikgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCmluZGV4IGIxOTI5NGI2
NzU4YzlkMTdiNmM4NTA5YjIxYWQxNzE0YzE4OTM0ZjguLmM5Njk1ZTZiNmE0M2Y5Y2Y0ZmYwMzk1
YWMzNjFhNDMyNjFkYjhlMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVk
ZSAiUmVuZGVyR2VvbWV0cnlNYXAuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1
ZGUgIlJlbmRlckxheWVyTW9kZWxPYmplY3QuaCIKKyNpbmNsdWRlICJSZW5kZXJTVkdNb2RlbE9i
amVjdElubGluZXMuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZS5oIgogI2luY2x1ZGUg
IlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50SW5saW5lcy5oIgpAQCAtNTksMTUg
KzYwLDEzIEBAIFJlbmRlclNWR01vZGVsT2JqZWN0OjpSZW5kZXJTVkdNb2RlbE9iamVjdChTVkdF
bGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0CiB2b2lkIFJlbmRlclNWR01vZGVsT2Jq
ZWN0Ojp1cGRhdGVGcm9tU3R5bGUoKQogewogICAgIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OnVw
ZGF0ZUZyb21TdHlsZSgpOwotICAgIHNldEhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eShzdHls
ZSgpLmhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgpKTsKIAotICAgIEFmZmluZVRyYW5zZm9y
bSB0cmFuc2Zvcm07Ci0gICAgaWYgKGlzPFNWR0dyYXBoaWNzRWxlbWVudD4obm9kZUZvck5vbkFu
b255bW91cygpKSkKLSAgICAgICAgdHJhbnNmb3JtID0gZG93bmNhc3Q8U1ZHR3JhcGhpY3NFbGVt
ZW50Pihub2RlRm9yTm9uQW5vbnltb3VzKCkpLmFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0oKTsKKyAg
ICBib29sIGhhc1NWR1RyYW5zZm9ybSA9IGZhbHNlOworICAgIGlmIChpczxTVkdHcmFwaGljc0Vs
ZW1lbnQ+KGVsZW1lbnQoKSkpCisgICAgICAgIGhhc1NWR1RyYW5zZm9ybSA9ICFkb3duY2FzdDxT
VkdHcmFwaGljc0VsZW1lbnQ+KGVsZW1lbnQoKSkuYW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSgpLmlz
SWRlbnRpdHkoKTsKIAotICAgIC8vIEZJWE1FOiBbTEJTRV0gVXBzdHJlYW0gUmVuZGVyT2JqZWN0
IGNoYW5nZXMKLSAgICAvLyBpZiAoIXRyYW5zZm9ybS5pc0lkZW50aXR5KCkpCi0gICAgLy8gICAg
IHNldEhhc1NWR1RyYW5zZm9ybSgpOworICAgIHNldEhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0
eShzdHlsZSgpLmhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgpIHx8IGhhc1NWR1RyYW5zZm9y
bSk7CisgICAgc2V0SGFzU1ZHVHJhbnNmb3JtKGhhc1NWR1RyYW5zZm9ybSk7CiB9CiAKIEZsb2F0
UmVjdCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6Ym9yZGVyQm94UmVjdEluRnJhZ21lbnRFcXVpdmFs
ZW50KFJlbmRlckZyYWdtZW50Q29udGFpbmVyKiwgUmVuZGVyQm94OjpSZW5kZXJCb3hGcmFnbWVu
dEluZm9GbGFncykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jvb3QuY3BwCmluZGV4IDcxNmVhODMwNjg0NTkzM2NiOGYwNDdhZThhOGQ5ZDI4NTAxYzhk
NzUuLjgwYWQ4MDc3MDBmYTUzZTAxMmQwZjQ5MTE5MTljYmFiODQ0Y2VkZTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcApAQCAtMzk2LDggKzM5
Niw3IEBAIHZvaWQgUmVuZGVyU1ZHUm9vdDo6dXBkYXRlRnJvbVN0eWxlKCkKIHsKICAgICBSZW5k
ZXJSZXBsYWNlZDo6dXBkYXRlRnJvbVN0eWxlKCk7CiAKLSAgICAvLyBGSVhNRTogW0xCU0VdIFVw
c3RyZWFtIFJlbmRlck9iamVjdCBjaGFuZ2VzCi0gICAgLy8gc2V0SGFzU1ZHVHJhbnNmb3JtKCk7
CisgICAgc2V0SGFzU1ZHVHJhbnNmb3JtKCk7CiAKICAgICBpZiAoc2hvdWxkQXBwbHlWaWV3cG9y
dENsaXAoKSkKICAgICAgICAgc2V0SGFzTm9uVmlzaWJsZU92ZXJmbG93KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCmluZGV4IDMyNTU3MjQx
OTBiNzIwYWZkMzY2ODU1ODYyMDE2MGYwZjM4MTAxOWUuLmNhYWY2YjM1YjBlMDUyMDAzZGY5MjAx
ZWVjMDAwNGQ1NDM1MWY0MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHU2hhcGUuY3BwCkBAIC0xNTQsOCArMTU0LDcgQEAgdm9pZCBSZW5kZXJTVkdTaGFw
ZTo6bGF5b3V0KCkKICAgICAgICAgc2V0TGF5b3V0UmVjdChlbmNsb3NpbmdMYXlvdXRSZWN0KG1f
ZmlsbEJvdW5kaW5nQm94KSk7CiAgICAgfQogCi0gICAgLy8gRklYTUU6IFtMQlNFXSBVcHN0cmVh
bSBTVkdMYXllclRyYW5zZm9ybVVwZGF0ZXIKLSAgICAvLyBTVkdSZW5kZXJTdXBwb3J0Ojp1cGRh
dGVMYXllclRyYW5zZm9ybSgqdGhpcyk7CisgICAgdXBkYXRlTGF5ZXJUcmFuc2Zvcm0oKTsKIAog
ICAgIC8vIEludmFsaWRhdGUgYWxsIHJlc291cmNlcyBvZiB0aGlzIGNsaWVudCBpZiBvdXIgbGF5
b3V0IGNoYW5nZWQuCiAgICAgaWYgKGV2ZXJIYWRMYXlvdXQoKSAmJiBzZWxmTmVlZHNMYXlvdXQo
KSkKQEAgLTUzNiw4ICs1MzUsNyBAQCB2b2lkIFJlbmRlclNWR1NoYXBlOjpzdHlsZVdpbGxDaGFu
Z2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlJiBuZQogCiB2b2lkIFJl
bmRlclNWR1NoYXBlOjphcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNm
b3JtLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdC
b3gsIE9wdGlvblNldDxSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPiBvcHRp
b25zKSBjb25zdAogewotICAgIC8vIEZJWE1FOiBbTEJTRV0gVXBzdHJlYW0gQ1NTL1NWRyB0cmFu
c2Zvcm0gc3VwcG9ydAotICAgIHN0eWxlLmFwcGx5VHJhbnNmb3JtKHRyYW5zZm9ybSwgYm91bmRp
bmdCb3gsIG9wdGlvbnMpOworICAgIGFwcGx5U1ZHVHJhbnNmb3JtKHRyYW5zZm9ybSwgZ3JhcGhp
Y3NFbGVtZW50KCksIHN0eWxlLCBib3VuZGluZ0JveCwgb3B0aW9ucyk7CiB9CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaAppbmRleCAxOWM2M2Nh
ZjI5MTQxYmY5YjgwZWU0MDQwZTk5ZGM1NDY0NWQyODE2Li5iMzljZDg5YzQ3NmMyNmI3ZjA5ZjA3
NDhlYzVmNmE5ZGZkM2ZhODNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1NoYXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdTaGFwZS5oCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKIAogICAgIEZsb2F0UmVj
dCBjb21wdXRlTWFya2VyQm91bmRpbmdCb3goY29uc3QgU1ZHQm91bmRpbmdCb3hDb21wdXRhdGlv
bjo6RGVjb3JhdGlvbk9wdGlvbnMmKSBjb25zdDsKIAotICAgIHZvaWQgYXBwbHlUcmFuc2Zvcm0o
VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZsb2F0UmVj
dCYgYm91bmRpbmdCb3gsIE9wdGlvblNldDxSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9u
T3B0aW9uPiA9IFJlbmRlclN0eWxlOjphbGxUcmFuc2Zvcm1PcGVyYXRpb25zKSBjb25zdCBvdmVy
cmlkZTsKKyAgICB2b2lkIGFwcGx5VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29u
c3QgUmVuZGVyU3R5bGUmLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBPcHRpb25TZXQ8
UmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbj4gPSBSZW5kZXJTdHlsZTo6YWxs
VHJhbnNmb3JtT3BlcmF0aW9ucykgY29uc3QgZmluYWw7CiAKIHByb3RlY3RlZDoKICAgICB2b2lk
IGVsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuY3Bw
CmluZGV4IDkwMzEyMmJlOTdjNzUxYTNkNTJhOTRlNzdmOGNhNzVmNjE0NGMxOTUuLmIwMGZiNTBh
YTllMDAwMTc5N2ZjOTU1MDg1ODZhNmIyMTQwNzdmNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29u
dGFpbmVyLmNwcApAQCAtOTcsMTUgKzk3LDEzIEBAIHZvaWQgUmVuZGVyU1ZHVHJhbnNmb3JtYWJs
ZUNvbnRhaW5lcjo6dXBkYXRlRnJvbVN0eWxlKCkKIHsKICAgICBSZW5kZXJTVkdDb250YWluZXI6
OnVwZGF0ZUZyb21TdHlsZSgpOwogCi0gICAgLy8gRklYTUU6IFtMQlNFXSBVcHN0cmVhbSBDU1Mv
U1ZHIHRyYW5zZm9ybSBzdXBwb3J0Ci0gICAgLy8gaWYgKGFzc29jaWF0ZWRVc2VFbGVtZW50KGdy
YXBoaWNzRWxlbWVudCgpKSkKLSAgICAvLyAgICBzZXRIYXNTVkdUcmFuc2Zvcm0oKTsKKyAgICBp
ZiAoYXNzb2NpYXRlZFVzZUVsZW1lbnQoZ3JhcGhpY3NFbGVtZW50KCkpKQorICAgICAgICBzZXRI
YXNTVkdUcmFuc2Zvcm0oKTsKIH0KIAogdm9pZCBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFp
bmVyOjphcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gsIE9wdGlv
blNldDxSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPiBvcHRpb25zKSBjb25z
dAogewotICAgIC8vIEZJWE1FOiBbTEJTRV0gVXBzdHJlYW0gQ1NTL1NWRyB0cmFuc2Zvcm0gc3Vw
cG9ydAotICAgIHN0eWxlLmFwcGx5VHJhbnNmb3JtKHRyYW5zZm9ybSwgYm91bmRpbmdCb3gsIG9w
dGlvbnMpOworICAgIGFwcGx5U1ZHVHJhbnNmb3JtKHRyYW5zZm9ybSwgZ3JhcGhpY3NFbGVtZW50
KCksIHN0eWxlLCBib3VuZGluZ0JveCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgUmVuZGVyU1ZHVHJh
bnNmb3JtYWJsZUNvbnRhaW5lcjo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZm
LCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFw
aGljc0VsZW1lbnQuY3BwCmluZGV4IDQ0YzVhNmU5YjlhM2Y0NDIyYWIyYjY4MDAzZTA2YzkxMDc3
ZDZjZDcuLmUwNzBjN2E3MzA2MjZhZDVjMjA3ZGVjNzIxODAzMzNlMzUxZWM4MzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCkBAIC03Myw2ICs3MywxNSBAQCBB
ZmZpbmVUcmFuc2Zvcm0gU1ZHR3JhcGhpY3NFbGVtZW50OjpnZXRTY3JlZW5DVE0oU3R5bGVVcGRh
dGVTdHJhdGVneSBzdHlsZVVwZGF0ZQogCiBBZmZpbmVUcmFuc2Zvcm0gU1ZHR3JhcGhpY3NFbGVt
ZW50OjphbmltYXRlZExvY2FsVHJhbnNmb3JtKCkgY29uc3QKIHsKKyNpZiBFTkFCTEUoTEFZRVJf
QkFTRURfU1ZHX0VOR0lORSkKKyAgICAvLyBMQlNFIGhhbmRsZXMgdHJhbnNmb3JtcyB2aWEgUmVu
ZGVyTGF5ZXIsIG5vIG5lZWQgdG8gaGFuZGxlIENTUyB0cmFuc2Zvcm1zIGhlcmUuCisgICAgaWYg
KGRvY3VtZW50KCkuc2V0dGluZ3MoKS5sYXllckJhc2VkU1ZHRW5naW5lRW5hYmxlZCgpKSB7Cisg
ICAgICAgIGlmIChtX3N1cHBsZW1lbnRhbFRyYW5zZm9ybSkKKyAgICAgICAgICAgIHJldHVybiAq
bV9zdXBwbGVtZW50YWxUcmFuc2Zvcm0gKiB0cmFuc2Zvcm0oKS5jb25jYXRlbmF0ZSgpOworICAg
ICAgICByZXR1cm4gdHJhbnNmb3JtKCkuY29uY2F0ZW5hdGUoKTsKKyAgICB9CisjZW5kaWYKKwog
ICAgIEFmZmluZVRyYW5zZm9ybSBtYXRyaXg7CiAKICAgICBhdXRvKiBzdHlsZSA9IHJlbmRlcmVy
KCkgPyAmcmVuZGVyZXIoKS0+c3R5bGUoKSA6IG51bGxwdHI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456754</attachid>
            <date>2022-04-05 14:59:50 -0700</date>
            <delta_ts>2022-04-07 03:31:27 -0700</delta_ts>
            <desc>Patch, v8</desc>
            <filename>bug-237711-20220405145948.patch</filename>
            <type>text/plain</type>
            <size>26325</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNDI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDlkMTY0NzhjMjA4YmU1
YjYwODk0YmRhYWNiYWNiNmY4NTA0MDE4Mi4uN2I0NjUxM2YwZmU2Njg1OTBhMTBlYTZiM2E3N2M5
ZGU1MjhhYzUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDIyLTA0LTA1ICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtMQlNF
XSBBY3RpdmF0ZSBTVkcgdHJhbnNmb3JtIHN1cHBvcnQgdGhyb3VnaCBsYXllcnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzcxMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFjdGl2YXRlIHRyYW5zZm9y
bXMgZm9yIFNWRyBsYXllcnMuCisKKyAgICAgICAgVXNlIHRoZSBmbGFnIHRvIGtlZXAgdHJhY2sg
b2YgdGhlIHByZXNlbmNlIG9mIFNWRyB0cmFuc2Zvcm1hdGlvbnMKKyAgICAgICAgb24gYSByZW5k
ZXJlci4gQ1NTL0hUTUwgcmVuZGVyZXJzIGNhbiByZWx5IG9ubHkgb24gdGhlIFJlbmRlclN0eWxl
CisgICAgICAgIHRvIGRldGVybWluZSBpZiB0cmFuc2Zvcm1hdGlvbnMgYXJlIGFwcGxpZWQsIHdo
ZXJlYXMgU1ZHIGhhcyB0bworICAgICAgICBjb25zdWx0IGFkZGl0aW9uYWwgc291cmNlcywgc3Vj
aCBhcyB0aGUgU1ZHICd0cmFuc2Zvcm0nIGF0dHJpYnV0ZS4KKworICAgICAgICBBIFNWRyByZW5k
ZXJlciB3aXRoIHRoZSAnSGFzU1ZHVHJhbnNmb3JtJyBmbGFnIHNldCBzaG91bGQgYmVoYXZlCisg
ICAgICAgIGxpa2UgYW55IFNWRy9IVE1MIHJlbmRlcmVyIHRoYXQgaGFzIENTUyB0cmFuc2Zvcm1h
dGlvbnMgYXBwbGllZC4KKworICAgICAgICBXaXRoIHRoaXMgcGF0Y2ggYXBwbGllZCBTVkcgdHJh
bnNmb3JtIGFuZCBDU1MgdHJhbnNmb3JtcyBjYW4KKyAgICAgICAgYmUgYXBwbGllZCB0byA8Zz4g
LyA8cmVjdD4gZWxlbWVudHMgaW4gTEJTRSwgaG93ZXZlciB0cmFuc2Zvcm0tb3JpZ2luCisgICAg
ICAgIHN1cHBvcnQgaXMgbm90IHlldCBjb3JyZWN0LCB0aGlzIHdpbGwgY29tZSB1cCBhIGZvbGxv
dy11cCBwYXRjaC4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLCBubyBjaGFu
Z2UgaW4gYmVoYXZpb3VyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1h
dGlvbk1hdHJpeDo6bXVsdGlwbHlBZmZpbmVUcmFuc2Zvcm0pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6dXBk
YXRlTGF5ZXJUcmFuc2Zvcm0pOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJC
b3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y2FuQ3JlYXRlU3RhY2tpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpjdXJyZW50VHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllck1v
ZGVsT2JqZWN0Ojp1cGRhdGVMYXllclRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllck1vZGVsT2JqZWN0OjphcHBseVNWR1RyYW5zZm9ybSBjb25zdCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6c2V0SGFz
U1ZHVHJhbnNmb3JtKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Omhhc1NWR1RyYW5zZm9ybSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Omhhc1RyYW5zZm9ybSBjb25zdCk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHTGF5ZXJUcmFuc2Zvcm1VcGRhdGVyOjpTVkdMYXllclRyYW5zZm9ybVVwZGF0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHTGF5ZXJUcmFuc2Zvcm1VcGRhdGVyOjp+U1ZHTGF5ZXJUcmFu
c2Zvcm1VcGRhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0NvbnRhaW5lcjo6bGF5
b3V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5oOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHQ29udGFpbmVyOjp1cGRhdGVMYXllckluZm9ybWF0aW9u
KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR01vZGVsT2JqZWN0Ojp1cGRhdGVGcm9t
U3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSb290Ojp1cGRhdGVGcm9tU3R5bGUpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHU2hhcGU6OmxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdTaGFwZTo6
YXBwbHlUcmFuc2Zvcm0gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
U2hhcGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFibGVD
b250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNv
bnRhaW5lcjo6dXBkYXRlRnJvbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Ry
YW5zZm9ybWFibGVDb250YWluZXI6OmFwcGx5VHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKiBz
dmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYXBoaWNz
RWxlbWVudDo6YW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSBjb25zdCk6CisKIDIwMjItMDQtMDUgIE5p
a29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5p
ZnkgcmVmZXJlbmNlIGJveCAvIENUTSBjb21wdXRhdGlvbiBpbiBSZW5kZXJMYXllcgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zv
cm1hdGlvbk1hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcAppbmRleCBmMjI2ZDkzMzFhNGU0MzFmODY2
ZTk1N2MxNTg5YmRlZDAzNjEzYmNhLi4yODFjOTVkY2E2ZGVjZjc3NzdhYTczNWY2MDlmZWJjODgx
MDM4YjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcApAQCAtMTUz
Myw2ICsxNTMzLDE3IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4JiBUcmFuc2Zvcm1hdGlvbk1hdHJp
eDo6bXVsdGlwbHkoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmCiAgICAgcmV0dXJuICp0aGlz
OwogfQogCitUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgVHJhbnNmb3JtYXRpb25NYXRyaXg6Om11bHRp
cGx5QWZmaW5lVHJhbnNmb3JtKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbWF0cml4KQoreworICAg
IGlmIChtYXRyaXguaXNJZGVudGl0eSgpKQorICAgICAgICByZXR1cm4gKnRoaXM7CisKKyAgICBp
ZiAobWF0cml4LmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uKCkpCisgICAgICAgIHJldHVybiB0cmFu
c2xhdGUobWF0cml4LmUoKSwgbWF0cml4LmYoKSk7CisKKyAgICByZXR1cm4gbXVsdGlwbHkobWF0
cml4LnRvVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7Cit9CisKIHZvaWQgVHJhbnNmb3JtYXRpb25N
YXRyaXg6Om11bHRWZWNNYXRyaXgoZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUmIHJlc3VsdFgs
IGRvdWJsZSYgcmVzdWx0WSkgY29uc3QKIHsKICAgICByZXN1bHRYID0gbV9tYXRyaXhbM11bMF0g
KyB4ICogbV9tYXRyaXhbMF1bMF0gKyB5ICogbV9tYXRyaXhbMV1bMF07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9u
TWF0cml4LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1Ry
YW5zZm9ybWF0aW9uTWF0cml4LmgKaW5kZXggYzk1MTE3N2EzMTBiNzYwNGMyMTU5Y2Q2ZTI0OTdm
ZDhmMjU3YjgzYi4uODU1ZDJlNzJhMTVhN2M4NjM3Nzg2NTZlNGYzODZlYTlhOGMyMjYxZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFu
c2Zvcm1hdGlvbk1hdHJpeC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaApAQCAtMjQ5LDYgKzI0OSw4IEBAIHB1
YmxpYzoKIAogICAgIC8vIHRoaXMgPSBtYXQgKiB0aGlzLgogICAgIFdFQkNPUkVfRVhQT1JUIFRy
YW5zZm9ybWF0aW9uTWF0cml4JiBtdWx0aXBseShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYp
OworICAgIC8vIElkZW50aWNhbCB0byBtdWx0aXBseShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpLCBi
dXQgc2F2aW5nIGEgQWZmaW5lVHJhbnNmb3JtIC0+IFRyYW5zZm9ybWF0aW9uTWF0cml4IHJvdW5k
dHJpcCBmb3IgaWRlbnRpdHkgb3IgdHJhbnNsYXRpb24gbWF0cmljZXMuCisgICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIG11bHRpcGx5QWZmaW5lVHJhbnNmb3JtKGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHNjYWxlKGRv
dWJsZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHNjYWxlTm9u
VW5pZm9ybShkb3VibGUgc3gsIGRvdWJsZSBzeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwCmluZGV4IDYwOWVkNjZlNTU5NWZkYTI3YzllYzIxZGI2ZGU0YWU5N2ZhNzI5Mzgu
LmY1Y2M5NzhjNjRkM2I0YTdhY2M4OThjYTFjOTY1YjAzZGJiMTdiOTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC02NjcsMTMgKzY2Nyw2IEBAIHZvaWQgUmVuZGVy
Qm94OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4
ZWQpIGNvbnN0CiAgICAgcXVhZHMuYXBwZW5kKGxvY2FsVG9BYnNvbHV0ZVF1YWQobG9jYWxSZWN0
LCBVc2VUcmFuc2Zvcm1zLCB3YXNGaXhlZCkpOwogfQogCi12b2lkIFJlbmRlckJveDo6dXBkYXRl
TGF5ZXJUcmFuc2Zvcm0oKQotewotICAgIC8vIFRyYW5zZm9ybS1vcmlnaW4gZGVwZW5kcyBvbiBi
b3ggc2l6ZSwgc28gd2UgbmVlZCB0byB1cGRhdGUgdGhlIGxheWVyIHRyYW5zZm9ybSBhZnRlciBs
YXlvdXQuCi0gICAgaWYgKGhhc0xheWVyKCkpCi0gICAgICAgIGxheWVyKCktPnVwZGF0ZVRyYW5z
Zm9ybSgpOwotfQotCiB2b2lkIFJlbmRlckJveDo6YXBwbHlUcmFuc2Zvcm0oVHJhbnNmb3JtYXRp
b25NYXRyaXgmIHQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRmxvYXRSZWN0JiBi
b3VuZGluZ0JveCwgT3B0aW9uU2V0PFJlbmRlclN0eWxlOjpUcmFuc2Zvcm1PcGVyYXRpb25PcHRp
b24+IG9wdGlvbnMpIGNvbnN0CiB7CiAgICAgc3R5bGUuYXBwbHlUcmFuc2Zvcm0odCwgYm91bmRp
bmdCb3gsIG9wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCmluZGV4IGU0
MDdjYmNmYzVmNDI5MTdiNTk5ZWEyNTRmMzQ5MjBkZjVjNjdmOWQuLmRmNjZiYjZjN2Q5NjgwNzNj
ZGU0MjQwMDczYmEwZGJjNGRkZGQxMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmgKQEAgLTIxOCw3ICsyMTgsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRPdmVyZmxvd0Zyb21D
aGlsZChjb25zdCBSZW5kZXJCb3gqIGNoaWxkKSB7IGFkZE92ZXJmbG93RnJvbUNoaWxkKGNoaWxk
LCBjaGlsZC0+bG9jYXRpb25PZmZzZXQoKSk7IH0KICAgICB2b2lkIGFkZE92ZXJmbG93RnJvbUNo
aWxkKGNvbnN0IFJlbmRlckJveCogY2hpbGQsIGNvbnN0IExheW91dFNpemUmIGRlbHRhKTsKIAot
ICAgIHZvaWQgdXBkYXRlTGF5ZXJUcmFuc2Zvcm0oKTsKICAgICB2b2lkIGFwcGx5VHJhbnNmb3Jt
KFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBGbG9hdFJl
Y3QmIGJvdW5kaW5nQm94LCBPcHRpb25TZXQ8UmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlv
bk9wdGlvbj4gPSBSZW5kZXJTdHlsZTo6YWxsVHJhbnNmb3JtT3BlcmF0aW9ucykgY29uc3Qgb3Zl
cnJpZGU7CiAKICAgICBMYXlvdXRTaXplIGNvbnRlbnRTaXplKCkgY29uc3QgeyByZXR1cm4geyBj
b250ZW50V2lkdGgoKSwgY29udGVudEhlaWdodCgpIH07IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IGI0YWEzYWQyNjFjZmY4ZTY5ODM5MjhlYzI5YTI2Yzhj
N2QzZjc0MzAuLmFmNjhiYThiM2Y5MDNlNGEyNzM5YmUyY2I2OTAxYjk2NmQ3YTRkNjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtNTUyLDYgKzU1Miw5IEBA
IHN0YXRpYyBib29sIGNhbkNyZWF0ZVN0YWNraW5nQ29udGV4dChjb25zdCBSZW5kZXJMYXllciYg
bGF5ZXIpCiB7CiAgICAgYXV0byYgcmVuZGVyZXIgPSBsYXllci5yZW5kZXJlcigpOwogICAgIHJl
dHVybiByZW5kZXJlci5oYXNUcmFuc2Zvcm1SZWxhdGVkUHJvcGVydHkoKQorI2lmIEVOQUJMRShM
QVlFUl9CQVNFRF9TVkdfRU5HSU5FKQorICAgICAgICB8fCByZW5kZXJlci5oYXNTVkdUcmFuc2Zv
cm0oKQorI2VuZGlmCiAgICAgICAgIHx8IHJlbmRlcmVyLmhhc0NsaXBQYXRoKCkKICAgICAgICAg
fHwgcmVuZGVyZXIuaGFzRmlsdGVyKCkKICAgICAgICAgfHwgcmVuZGVyZXIuaGFzTWFzaygpCkBA
IC0xMzU3LDE5ICsxMzYwLDEzIEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4IFJlbmRlckxheWVyOjpj
dXJyZW50VHJhbnNmb3JtKE9wdGlvblNldDxSZW5kZXJTdHlsZTo6VHJhbnNmCiAgICAgaWYgKCFt
X3RyYW5zZm9ybSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIC8vIEZJWE1FOiBbTEJTRV0g
VXBzdHJlYW0gdHJhbnNmb3JtIHN1cHBvcnQgZm9yIFJlbmRlclNWR01vZGVsT2JqZWN0IGRlcml2
ZWQgcmVuZGVyZXJzCi0gICAgaWYgKCFpczxSZW5kZXJCb3g+KHJlbmRlcmVyKCkpKQotICAgICAg
ICByZXR1cm4geyB9OwotCi0gICAgYXV0byYgcmVuZGVyQm94ID0gZG93bmNhc3Q8UmVuZGVyQm94
PihyZW5kZXJlcigpKTsKLQogICAgIC8vIG1fdHJhbnNmb3JtIGluY2x1ZGVzIHRyYW5zZm9ybS1v
cmlnaW4gYW5kIGlzIGFmZmVjdGVkIGJ5IHRoZSBjaG9pY2Ugb2YgdGhlIHRyYW5zZm9ybS1ib3gu
CiAgICAgLy8gVGhlcmVmb3JlIHdlIGNhbiBvbmx5IHVzZSB0aGUgY2FjaGVkIG1fdHJhbnNmb3Jt
LCBpZiB0aGUgYW5pbWF0aW9uIGRvZXNuJ3QgYWx0ZXIgdHJhbnNmb3JtLWJveCBvciBleGNsdWRl
cyB0cmFuc2Zvcm0tb3JpZ2luLgogCiAgICAgLy8gUXVlcnkgdGhlIGFuaW1hdGVkU3R5bGUoKSB0
byBvYnRhaW4gdGhlIGN1cnJlbnQgdHJhbnNmb3JtYXRpb24sIHdoZW4gYWNjZWxlcmF0ZWQgdHJh
bnNmb3JtIGFuaW1hdGlvbnMgYXJlIHJ1bm5pbmcuCi0gICAgYXV0byBzdHlsZWFibGUgPSBTdHls
ZWFibGU6OmZyb21SZW5kZXJlcihyZW5kZXJCb3gpOworICAgIGF1dG8gc3R5bGVhYmxlID0gU3R5
bGVhYmxlOjpmcm9tUmVuZGVyZXIocmVuZGVyZXIoKSk7CiAgICAgaWYgKChzdHlsZWFibGUgJiYg
c3R5bGVhYmxlLT5pc1J1bm5pbmdBY2NlbGVyYXRlZFRyYW5zZm9ybUFuaW1hdGlvbigpKSB8fCAh
b3B0aW9ucy5jb250YWlucyhSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uOjpU
cmFuc2Zvcm1PcmlnaW4pKSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4g
YW5pbWF0ZWRTdHlsZSA9IHJlbmRlckJveC5hbmltYXRlZFN0eWxlKCk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gYW5pbWF0ZWRTdHlsZSA9IHJlbmRlcmVyKCkuYW5pbWF0
ZWRTdHlsZSgpOwogCiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKICAg
ICAgICAgdXBkYXRlVHJhbnNmb3JtRnJvbVN0eWxlKHRyYW5zZm9ybSwgKmFuaW1hdGVkU3R5bGUs
IG9wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyTW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
TW9kZWxPYmplY3QuY3BwCmluZGV4IDhkOTkwZjFkNTMxYmU2M2YyYjI1ZDA2MTQ1ZmIxMzFjNDEw
MDcyNmMuLjE5NDA1NjhlYWY5ZGNiNjE5NjIyOWNmZTViYjI1ZmVlMDM5YmY0MzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmgi
CiAjaW5jbHVkZSAiUmVuZGVyU1ZHTW9kZWxPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3
LmgiCisjaW5jbHVkZSAiU1ZHR3JhcGhpY3NFbGVtZW50LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKICNpbmNsdWRlICJTdHlsZVNjcm9sbFNuYXBQb2ludHMuaCIKICNpbmNsdWRlICJUcmFuc2Zv
cm1TdGF0ZS5oIgpAQCAtMjMxLDYgKzIzMiwxMyBAQCB2b2lkIFJlbmRlckxheWVyTW9kZWxPYmpl
Y3Q6OnN1c3BlbmRBbmltYXRpb25zKE1vbm90b25pY1RpbWUgdGltZSkKICAgICBsYXllcigpLT5i
YWNraW5nKCktPnN1c3BlbmRBbmltYXRpb25zKHRpbWUpOwogfQogCit2b2lkIFJlbmRlckxheWVy
TW9kZWxPYmplY3Q6OnVwZGF0ZUxheWVyVHJhbnNmb3JtKCkKK3sKKyAgICAvLyBUcmFuc2Zvcm0t
b3JpZ2luIGRlcGVuZHMgb24gYm94IHNpemUsIHNvIHdlIG5lZWQgdG8gdXBkYXRlIHRoZSBsYXll
ciB0cmFuc2Zvcm0gYWZ0ZXIgbGF5b3V0LgorICAgIGlmIChoYXNMYXllcigpKQorICAgICAgICBs
YXllcigpLT51cGRhdGVUcmFuc2Zvcm0oKTsKK30KKwogI2lmIEVOQUJMRShMQVlFUl9CQVNFRF9T
VkdfRU5HSU5FKQogc3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0PiBSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0Ojpjb21wdXRlVmlzaWJsZVJlY3RJblNWR0NvbnRhaW5lcihjb25zdCBMYXlvdXRSZWN0JiBy
ZWN0LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBjb250YWluZXIsIFJlbmRlck9iamVj
dDo6VmlzaWJsZVJlY3RDb250ZXh0IGNvbnRleHQpIGNvbnN0CiB7CkBAIC0zMTYsNiArMzI0LDM4
IEBAIHZvaWQgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6bWFwTG9jYWxUb1NWR0NvbnRhaW5lcihj
b25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0CiAKICAgICBjb250YWluZXItPm1hcExvY2FsVG9D
b250YWluZXIoYW5jZXN0b3JDb250YWluZXIsIHRyYW5zZm9ybVN0YXRlLCBtb2RlLCB3YXNGaXhl
ZCk7CiB9CisKK3ZvaWQgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6YXBwbHlTVkdUcmFuc2Zvcm0o
VHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgU1ZHR3JhcGhpY3NFbGVtZW50JiBncmFw
aGljc0VsZW1lbnQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRmxvYXRSZWN0JiBi
b3VuZGluZ0JveCwgT3B0aW9uU2V0PFJlbmRlclN0eWxlOjpUcmFuc2Zvcm1PcGVyYXRpb25PcHRp
b24+IG9wdGlvbnMpIGNvbnN0Cit7CisgICAgLy8gVGhpcyBjaGVjayBkb2VzIG5vdCB1c2Ugc3R5
bGUuaGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCkgb24gcHVycG9zZSAtLSB3ZSBvbmx5IHdh
bnQgdG8ga25vdyBpZiBlaXRoZXIgdGhlICd0cmFuc2Zvcm0nIHByb3BlcnR5LCBhbgorICAgIC8v
IG9mZnNldCBwYXRoLCBvciB0aGUgaW5kaXZpZHVhbCB0cmFuc2Zvcm0gb3BlcmF0aW9ucyBhcmUg
c2V0IChwZXJzcGVjdGl2ZSAvIHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2QgYXJlIG5vdCBy
ZWxldmFudCBoZXJlKS4KKyAgICBib29sIGhhc0NTU1RyYW5zZm9ybSA9IHN0eWxlLmhhc1RyYW5z
Zm9ybSgpIHx8IHN0eWxlLnJvdGF0ZSgpIHx8IHN0eWxlLnRyYW5zbGF0ZSgpIHx8IHN0eWxlLnNj
YWxlKCk7CisKKyAgICBib29sIGFmZmVjdGVkQnlUcmFuc2Zvcm1PcmlnaW4gPSBmYWxzZTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPEFmZmluZVRyYW5zZm9ybT4gc3ZnVHJhbnNmb3JtOworCisgICAgaWYg
KGhhc0NTU1RyYW5zZm9ybSkKKyAgICAgICAgYWZmZWN0ZWRCeVRyYW5zZm9ybU9yaWdpbiA9IHN0
eWxlLmFmZmVjdGVkQnlUcmFuc2Zvcm1PcmlnaW4oKTsKKyAgICBlbHNlIGlmIChhdXRvIGFmZmlu
ZVRyYW5zZm9ybSA9IGdyYXBoaWNzRWxlbWVudC5hbmltYXRlZExvY2FsVHJhbnNmb3JtKCk7ICFh
ZmZpbmVUcmFuc2Zvcm0uaXNJZGVudGl0eSgpKSB7CisgICAgICAgIHN2Z1RyYW5zZm9ybSA9IGFm
ZmluZVRyYW5zZm9ybTsKKyAgICAgICAgYWZmZWN0ZWRCeVRyYW5zZm9ybU9yaWdpbiA9IGFmZmlu
ZVRyYW5zZm9ybS5hKCkgIT0gMSB8fCBhZmZpbmVUcmFuc2Zvcm0uYigpIHx8IGFmZmluZVRyYW5z
Zm9ybS5jKCkgfHwgYWZmaW5lVHJhbnNmb3JtLmQoKSAhPSAxOworICAgIH0KKworICAgIGlmICgh
aGFzQ1NTVHJhbnNmb3JtICYmICFzdmdUcmFuc2Zvcm0uaGFzX3ZhbHVlKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIEZsb2F0UG9pbnQzRCBvcmlnaW5UcmFuc2xhdGU7CisgICAgaWYgKG9wdGlv
bnMuY29udGFpbnMoUmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbjo6VHJhbnNm
b3JtT3JpZ2luKSAmJiBhZmZlY3RlZEJ5VHJhbnNmb3JtT3JpZ2luKQorICAgICAgICBvcmlnaW5U
cmFuc2xhdGUgPSBzdHlsZS5hcHBseVRyYW5zZm9ybU9yaWdpbih0cmFuc2Zvcm0sIGJvdW5kaW5n
Qm94KTsKKworICAgIC8vIENTUyB0cmFuc2Zvcm1zIHRha2UgcHJlY2VkZW5jZSBvdmVyIFNWRyB0
cmFuc2Zvcm1zLgorICAgIGlmIChoYXNDU1NUcmFuc2Zvcm0pCisgICAgICAgIHN0eWxlLmFwcGx5
Q1NTVHJhbnNmb3JtKHRyYW5zZm9ybSwgYm91bmRpbmdCb3gsIG9wdGlvbnMpOworICAgIGVsc2UK
KyAgICAgICAgdHJhbnNmb3JtLm11bHRpcGx5QWZmaW5lVHJhbnNmb3JtKHN2Z1RyYW5zZm9ybS52
YWx1ZSgpKTsKKworICAgIHN0eWxlLnVuYXBwbHlUcmFuc2Zvcm1PcmlnaW4odHJhbnNmb3JtLCBv
cmlnaW5UcmFuc2xhdGUpOworfQogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oCmlu
ZGV4IGQ0NGZmNmFkNTJkM2E1OWY1MWQxYzBmZWFmNmNlNzk1YTVlMGVkZTAuLjEyNGFlYmQ0ZDc0
MDMzYzc2NTFjOTBhZjNlZmUwYjdkOWRmZjdkZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuaApAQCAtMjgsNiArMjgsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEtleWZyYW1lTGlzdDsKIGNsYXNzIFJlbmRlckxheWVy
OworY2xhc3MgU1ZHR3JhcGhpY3NFbGVtZW50OwogCiBzdHJ1Y3QgTGF5ZXJSZXBhaW50UmVjdHMg
ewogICAgIExheW91dFJlY3QgY2xpcHBlZE92ZXJmbG93UmVjdDsKQEAgLTc1LDggKzc2LDEyIEBA
IHB1YmxpYzoKICAgICAvLyBQcm92aWRlcyB0aGUgU1ZHIGltcGxlbWVudGF0aW9uIGZvciBtYXBM
b2NhbFRvQ29udGFpbmVyKCkuCiAgICAgLy8gVGhpcyBsaXZlcyBpbiBSZW5kZXJMYXllck1vZGVs
T2JqZWN0LCB3aGljaCBpcyB0aGUgY29tbW9uIGJhc2UtY2xhc3MgZm9yIGFsbCBTVkcgcmVuZGVy
ZXJzLgogICAgIHZvaWQgbWFwTG9jYWxUb1NWR0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1v
ZGVsT2JqZWN0KiBhbmNlc3RvckNvbnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBPcHRpb25TZXQ8
TWFwQ29vcmRpbmF0ZXNNb2RlPiwgYm9vbCogd2FzRml4ZWQpIGNvbnN0OworCisgICAgdm9pZCBh
cHBseVNWR1RyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIFNWR0dyYXBoaWNzRWxlbWVu
dCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCwgT3B0
aW9uU2V0PFJlbmRlclN0eWxlOjpUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb24+KSBjb25zdDsKICNl
bmRpZgogCisgICAgdm9pZCB1cGRhdGVMYXllclRyYW5zZm9ybSgpOworCiAgICAgdmlydHVhbCB2
b2lkIGFwcGx5VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgUmVuZGVyU3R5
bGUmLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBPcHRpb25TZXQ8UmVuZGVyU3R5bGU6
OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbj4gPSBSZW5kZXJTdHlsZTo6YWxsVHJhbnNmb3JtT3Bl
cmF0aW9ucykgY29uc3QgPSAwOwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuY3BwCmluZGV4IDYxNjZiY2ZmNDc2MzY0ODIyNzZkN2ViMzIyMjZmYzQ5
YWU0N2MzYjguLmEwZGE3MzZkYWRhZDc2MWRiYmIxODhkYmJkODA5OWI4NDUzZDllOTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCkBAIC0xOTc2LDYgKzE5NzYs
MTQgQEAgdm9pZCBSZW5kZXJPYmplY3Q6OnNldEhhc091dGxpbmVBdXRvQW5jZXN0b3IoYm9vbCBo
YXNPdXRsaW5lQXV0b0FuY2VzdG9yKQogICAgICAgICBlbnN1cmVSYXJlRGF0YSgpLnNldEhhc091
dGxpbmVBdXRvQW5jZXN0b3IoaGFzT3V0bGluZUF1dG9BbmNlc3Rvcik7CiB9CiAKKyNpZiBFTkFC
TEUoTEFZRVJfQkFTRURfU1ZHX0VOR0lORSkKK3ZvaWQgUmVuZGVyT2JqZWN0OjpzZXRIYXNTVkdU
cmFuc2Zvcm0oYm9vbCBoYXNTVkdUcmFuc2Zvcm0pCit7CisgICAgaWYgKGhhc1NWR1RyYW5zZm9y
bSB8fCBoYXNSYXJlRGF0YSgpKQorICAgICAgICBlbnN1cmVSYXJlRGF0YSgpLnNldEhhc1NWR1Ry
YW5zZm9ybShoYXNTVkdUcmFuc2Zvcm0pOworfQorI2VuZGlmCisKIHZvaWQgUmVuZGVyT2JqZWN0
OjpzZXRQYWludENvbnRhaW5tZW50QXBwbGllcyhib29sIHBhaW50Q29udGFpbm1lbnRBcHBsaWVz
KQogewogICAgIGlmIChwYWludENvbnRhaW5tZW50QXBwbGllcyB8fCBoYXNSYXJlRGF0YSgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IGZjYWNmMzg1NGM4ZWE0
ZTA4MjdhN2JlMjIwZDQ5MmYyNTU3ZTZhOTkuLmMyMWQ0ZGRmNDAwZGZiZjY3MjcyMDVjZDdjNDUw
ZDU4ZTUxYzMyMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJP
YmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAg
LTQxNSw2ICs0MTUsMTIgQEAgcHVibGljOgogICAgIGJvb2wgaGFzT3V0bGluZUF1dG9BbmNlc3Rv
cigpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmhhc1JhcmVEYXRhKCkgJiYgcmFyZURhdGEo
KS5oYXNPdXRsaW5lQXV0b0FuY2VzdG9yKCk7IH0KICAgICBib29sIHBhaW50Q29udGFpbm1lbnRB
cHBsaWVzKCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuaGFzUmFyZURhdGEoKSAmJiByYXJl
RGF0YSgpLnBhaW50Q29udGFpbm1lbnRBcHBsaWVzKCk7IH0KIAorI2lmIEVOQUJMRShMQVlFUl9C
QVNFRF9TVkdfRU5HSU5FKQorICAgIGJvb2wgaGFzU1ZHVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1
cm4gbV9iaXRmaWVsZHMuaGFzUmFyZURhdGEoKSAmJiByYXJlRGF0YSgpLmhhc1NWR1RyYW5zZm9y
bSgpOyB9CisjZWxzZQorICAgIGJvb2wgaGFzU1ZHVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KKyNlbmRpZgorCiAgICAgYm9vbCBpc0V4Y2x1ZGVkRnJvbU5vcm1hbExheW91dCgp
IGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmlzRXhjbHVkZWRGcm9tTm9ybWFsTGF5b3V0KCk7
IH0KICAgICB2b2lkIHNldElzRXhjbHVkZWRGcm9tTm9ybWFsTGF5b3V0KGJvb2wgZXhjbHVkZWQp
IHsgbV9iaXRmaWVsZHMuc2V0SXNFeGNsdWRlZEZyb21Ob3JtYWxMYXlvdXQoZXhjbHVkZWQpOyB9
CiAgICAgYm9vbCBpc0V4Y2x1ZGVkQW5kUGxhY2VkSW5Cb3JkZXIoKSBjb25zdCB7IHJldHVybiBp
c0V4Y2x1ZGVkRnJvbU5vcm1hbExheW91dCgpICYmIGlzTGVnZW5kKCk7IH0KQEAgLTQ0OSw3ICs0
NTUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNQb3RlbnRpYWxseVNjcm9sbGFibGVPdmVyZmxv
dygpIGNvbnN0OwogCiAgICAgYm9vbCBoYXNUcmFuc2Zvcm1SZWxhdGVkUHJvcGVydHkoKSBjb25z
dCB7IHJldHVybiBtX2JpdGZpZWxkcy5oYXNUcmFuc2Zvcm1SZWxhdGVkUHJvcGVydHkoKTsgfSAv
LyBUcmFuc2Zvcm0sIHBlcnNwZWN0aXZlIG9yIHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Qu
Ci0gICAgYm9vbCBoYXNUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBoYXNUcmFuc2Zvcm1SZWxh
dGVkUHJvcGVydHkoKSAmJiAoc3R5bGUoKS5oYXNUcmFuc2Zvcm0oKSB8fCBzdHlsZSgpLnRyYW5z
bGF0ZSgpIHx8IHN0eWxlKCkuc2NhbGUoKSB8fCBzdHlsZSgpLnJvdGF0ZSgpKTsgfQorICAgIGJv
b2wgaGFzVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gaGFzVHJhbnNmb3JtUmVsYXRlZFByb3Bl
cnR5KCkgJiYgKHN0eWxlKCkuaGFzVHJhbnNmb3JtKCkgfHwgc3R5bGUoKS50cmFuc2xhdGUoKSB8
fCBzdHlsZSgpLnNjYWxlKCkgfHwgc3R5bGUoKS5yb3RhdGUoKSB8fCBoYXNTVkdUcmFuc2Zvcm0o
KSk7IH0KICAgICBib29sIGhhc1RyYW5zZm9ybU9yUGVzcGVjdGl2ZSgpIGNvbnN0IHsgcmV0dXJu
IGhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgpICYmIChoYXNUcmFuc2Zvcm0oKSB8fCBzdHls
ZSgpLmhhc1BlcnNwZWN0aXZlKCkpOyB9CiAKICAgICBpbmxpbmUgYm9vbCBwcmVzZXJ2ZXNOZXds
aW5lKCkgY29uc3Q7CkBAIC01MTQsNiArNTIwLDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SXNS
ZW5kZXJGcmFnbWVudGVkRmxvdyhib29sID0gdHJ1ZSk7CiAgICAgdm9pZCBzZXRIYXNPdXRsaW5l
QXV0b0FuY2VzdG9yKGJvb2wgPSB0cnVlKTsKICAgICB2b2lkIHNldFBhaW50Q29udGFpbm1lbnRB
cHBsaWVzKGJvb2wgPSB0cnVlKTsKKyNpZiBFTkFCTEUoTEFZRVJfQkFTRURfU1ZHX0VOR0lORSkK
KyAgICB2b2lkIHNldEhhc1NWR1RyYW5zZm9ybShib29sID0gdHJ1ZSk7CisjZW5kaWYKIAogICAg
IC8vIEhvb2sgc28gdGhhdCBSZW5kZXJUZXh0Q29udHJvbCBjYW4gcmV0dXJuIHRoZSBsaW5lIGhl
aWdodCBvZiBpdHMgaW5uZXIgcmVuZGVyZXIuCiAgICAgLy8gRm9yIG90aGVyIHJlbmRlcmVycywg
dGhlIHZhbHVlIGlzIHRoZSBzYW1lIGFzIGxpbmVIZWlnaHQoZmFsc2UpLgpAQCAtOTQzLDYgKzk1
Miw5IEBAIHByaXZhdGU6CiAgICAgICAgIEFERF9CT09MRUFOX0JJVEZJRUxEKGlzUmVuZGVyRnJh
Z21lbnRlZEZsb3csIElzUmVuZGVyRnJhZ21lbnRlZEZsb3cpOwogICAgICAgICBBRERfQk9PTEVB
Tl9CSVRGSUVMRChoYXNPdXRsaW5lQXV0b0FuY2VzdG9yLCBIYXNPdXRsaW5lQXV0b0FuY2VzdG9y
KTsKICAgICAgICAgQUREX0JPT0xFQU5fQklURklFTEQocGFpbnRDb250YWlubWVudEFwcGxpZXMs
IFBhaW50Q29udGFpbm1lbnRBcHBsaWVzKTsKKyNpZiBFTkFCTEUoTEFZRVJfQkFTRURfU1ZHX0VO
R0lORSkKKyAgICAgICAgQUREX0JPT0xFQU5fQklURklFTEQoaGFzU1ZHVHJhbnNmb3JtLCBIYXNT
VkdUcmFuc2Zvcm0pOworI2VuZGlmCiAKICAgICAgICAgLy8gRnJvbSBSZW5kZXJFbGVtZW50CiAg
ICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWZlcmVuY2VkU1ZHUmVzb3VyY2VzPiByZWZlcmVuY2Vk
U1ZHUmVzb3VyY2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdDb250YWluZXIuY3BwCmluZGV4IGJkY2M1ODE1YjQ2NjI3ZjBmZjFjNWExNDgwMjQwZmY2
NTdiOTQ3ZWYuLjM0NWQ2MzYxMzRkNWZkYmNmOTI2N2JmY2RhY2M0Y2Y2MmNiM2M2YzcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5j
cHAKQEAgLTUyLDYgKzUyLDM2IEBAIFJlbmRlclNWR0NvbnRhaW5lcjo6UmVuZGVyU1ZHQ29udGFp
bmVyKFNWR0VsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3R5bGUpCiAKIFJlbmRlclNW
R0NvbnRhaW5lcjo6flJlbmRlclNWR0NvbnRhaW5lcigpID0gZGVmYXVsdDsKIAorLy8gSGVscGVy
IGNsYXNzLCBtb3ZlIHRvIGl0cyBvd24gZmlsZSBvbmNlIHV0aWxpemVkIGluIG1vcmUgdGhhbiBv
bmUgcGxhY2UuCitjbGFzcyBTVkdMYXllclRyYW5zZm9ybVVwZGF0ZXIgeworICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFNWR0xheWVyVHJhbnNmb3JtVXBkYXRlcik7CitwdWJsaWM6CisgICAgU1ZH
TGF5ZXJUcmFuc2Zvcm1VcGRhdGVyKFJlbmRlckxheWVyTW9kZWxPYmplY3QmIHJlbmRlcmVyKQor
ICAgICAgICA6IG1fcmVuZGVyZXIocmVuZGVyZXIpCisgICAgeworICAgICAgICBpZiAoIW1fcmVu
ZGVyZXIuaGFzTGF5ZXIoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBtX3RyYW5z
Zm9ybVJlZmVyZW5jZUJveCA9IG1fcmVuZGVyZXIudHJhbnNmb3JtUmVmZXJlbmNlQm94UmVjdCgp
OworICAgICAgICBtX3JlbmRlcmVyLnVwZGF0ZUxheWVyVHJhbnNmb3JtKCk7CisgICAgfQorCisK
KyAgICB+U1ZHTGF5ZXJUcmFuc2Zvcm1VcGRhdGVyKCkKKyAgICB7CisgICAgICAgIGlmICghbV9y
ZW5kZXJlci5oYXNMYXllcigpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAobV9y
ZW5kZXJlci50cmFuc2Zvcm1SZWZlcmVuY2VCb3hSZWN0KCkgPT0gbV90cmFuc2Zvcm1SZWZlcmVu
Y2VCb3gpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9yZW5kZXJlci51cGRhdGVM
YXllclRyYW5zZm9ybSgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBSZW5kZXJMYXllck1vZGVs
T2JqZWN0JiBtX3JlbmRlcmVyOworICAgIEZsb2F0UmVjdCBtX3RyYW5zZm9ybVJlZmVyZW5jZUJv
eDsKK307CisKIHZvaWQgUmVuZGVyU1ZHQ29udGFpbmVyOjpsYXlvdXQoKQogewogICAgIFN0YWNr
U3RhdHM6OkxheW91dENoZWNrUG9pbnQgbGF5b3V0Q2hlY2tQb2ludDsKQEAgLTY0LDEzICs5NCwx
MCBAQCB2b2lkIFJlbmRlclNWR0NvbnRhaW5lcjo6bGF5b3V0KCkKICAgICAvLyBVcGRhdGUgbGF5
ZXIgdHJhbnNmb3JtIGJlZm9yZSBsYXlpbmcgb3V0IGNoaWxkcmVuIChTVkcgbmVlZHMgYWNjZXNz
IHRvIHRoZSB0cmFuc2Zvcm0gbWF0cmljZXMgZHVyaW5nIGxheW91dCBmb3Igb24tc2NyZWVuIHRl
eHQgZm9udC1zaXplIGNhbGN1bGF0aW9ucykuCiAgICAgLy8gRXZlbnR1YWxseSByZS11cGRhdGUg
aWYgdGhlIHRyYW5zZm9ybSByZWZlcmVuY2UgYm94LCByZWxldmFudCBmb3IgdHJhbnNmb3JtLW9y
aWdpbiwgaGFzIGNoYW5nZWQgZHVyaW5nIGxheW91dC4KICAgICB7Ci0gICAgICAgIC8vIEZJWE1F
OiBbTEJTRV0gVXBzdHJlYW0gU1ZHTGF5ZXJUcmFuc2Zvcm1VcGRhdGVyCi0gICAgICAgIC8vIFNW
R0xheWVyVHJhbnNmb3JtVXBkYXRlciB0cmFuc2Zvcm1VcGRhdGVyKCp0aGlzKTsKKyAgICAgICAg
U1ZHTGF5ZXJUcmFuc2Zvcm1VcGRhdGVyIHVwZGF0ZVRyYW5zZm9ybSgqdGhpcyk7CiAgICAgICAg
IGxheW91dENoaWxkcmVuKCk7CiAgICAgfQogCi0gICAgdXBkYXRlTGF5ZXJJbmZvcm1hdGlvbigp
OwotCiAgICAgLy8gSW52YWxpZGF0ZSBhbGwgcmVzb3VyY2VzIG9mIHRoaXMgY2xpZW50IGlmIG91
ciBsYXlvdXQgY2hhbmdlZC4KICAgICBpZiAoZXZlckhhZExheW91dCgpICYmIG5lZWRzTGF5b3V0
KCkpCiAgICAgICAgIFNWR1Jlc291cmNlc0NhY2hlOjpjbGllbnRMYXlvdXRDaGFuZ2VkKCp0aGlz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29u
dGFpbmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5l
ci5oCmluZGV4IDBhZDBiODM0NjVmOTljMzFlOTVhYTNjNzk3NTlhZTM3NzhmYjMwMTYuLmUzNDgy
YWI5ZjAzYTE1ZjkzMWEyOTk2OWQxZjY1NDA2NjA1ZjU3YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuaApAQCAtNTUsNyArNTUsNiBA
QCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGxheW91dENoaWxkcmVuKCk7CiAgICAgYm9v
bCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25z
dCBIaXRUZXN0TG9jYXRpb24mIGxvY2F0aW9uSW5Db250YWluZXIsIGNvbnN0IExheW91dFBvaW50
JiBhY2N1bXVsYXRlZE9mZnNldCwgSGl0VGVzdEFjdGlvbikgb3ZlcnJpZGU7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlTGF5ZXJJbmZvcm1hdGlvbigpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBj
YWxjdWxhdGVWaWV3cG9ydCgpOwogICAgIHZpcnR1YWwgYm9vbCBwb2ludElzSW5zaWRlVmlld3Bv
cnRDbGlwKGNvbnN0IEZsb2F0UG9pbnQmKSB7IHJldHVybiB0cnVlOyB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAKaW5k
ZXggYjE5Mjk0YjY3NThjOWQxN2I2Yzg1MDliMjFhZDE3MTRjMTg5MzRmOC4uYzk2OTVlNmI2YTQz
ZjljZjRmZjAzOTVhYzM2MWE0MzI2MWRiOGUyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAKQEAgLTM2LDYgKzM2LDcg
QEAKICNpbmNsdWRlICJSZW5kZXJHZW9tZXRyeU1hcC5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVy
LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oIgorI2luY2x1ZGUgIlJlbmRl
clNWR01vZGVsT2JqZWN0SW5saW5lcy5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlLmgi
CiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnRJbmxpbmVzLmgi
CkBAIC01OSwxNSArNjAsMTMgQEAgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OlJlbmRlclNWR01vZGVs
T2JqZWN0KFNWR0VsZW1lbnQmIGVsZW1lbnQsIFJlbmRlclN0eWxlJiYgc3QKIHZvaWQgUmVuZGVy
U1ZHTW9kZWxPYmplY3Q6OnVwZGF0ZUZyb21TdHlsZSgpCiB7CiAgICAgUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdDo6dXBkYXRlRnJvbVN0eWxlKCk7Ci0gICAgc2V0SGFzVHJhbnNmb3JtUmVsYXRlZFBy
b3BlcnR5KHN0eWxlKCkuaGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCkpOwogCi0gICAgQWZm
aW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsKLSAgICBpZiAoaXM8U1ZHR3JhcGhpY3NFbGVtZW50Pihu
b2RlRm9yTm9uQW5vbnltb3VzKCkpKQotICAgICAgICB0cmFuc2Zvcm0gPSBkb3duY2FzdDxTVkdH
cmFwaGljc0VsZW1lbnQ+KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSkuYW5pbWF0ZWRMb2NhbFRyYW5z
Zm9ybSgpOworICAgIGJvb2wgaGFzU1ZHVHJhbnNmb3JtID0gZmFsc2U7CisgICAgaWYgKGlzPFNW
R0dyYXBoaWNzRWxlbWVudD4oZWxlbWVudCgpKSkKKyAgICAgICAgaGFzU1ZHVHJhbnNmb3JtID0g
IWRvd25jYXN0PFNWR0dyYXBoaWNzRWxlbWVudD4oZWxlbWVudCgpKS5hbmltYXRlZExvY2FsVHJh
bnNmb3JtKCkuaXNJZGVudGl0eSgpOwogCi0gICAgLy8gRklYTUU6IFtMQlNFXSBVcHN0cmVhbSBS
ZW5kZXJPYmplY3QgY2hhbmdlcwotICAgIC8vIGlmICghdHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkK
LSAgICAvLyAgICAgc2V0SGFzU1ZHVHJhbnNmb3JtKCk7CisgICAgc2V0SGFzVHJhbnNmb3JtUmVs
YXRlZFByb3BlcnR5KHN0eWxlKCkuaGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCkgfHwgaGFz
U1ZHVHJhbnNmb3JtKTsKKyAgICBzZXRIYXNTVkdUcmFuc2Zvcm0oaGFzU1ZHVHJhbnNmb3JtKTsK
IH0KIAogRmxvYXRSZWN0IFJlbmRlclNWR01vZGVsT2JqZWN0Ojpib3JkZXJCb3hSZWN0SW5GcmFn
bWVudEVxdWl2YWxlbnQoUmVuZGVyRnJhZ21lbnRDb250YWluZXIqLCBSZW5kZXJCb3g6OlJlbmRl
ckJveEZyYWdtZW50SW5mb0ZsYWdzKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKaW5kZXggNzE2ZWE4MzA2ODQ1OTMzY2I4ZjA0N2FlOGE4
ZDlkMjg1MDFjOGQ3NS4uODBhZDgwNzcwMGZhNTNlMDEyZDBmNDkxMTkxOWNiYWI4NDRjZWRlNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCkBA
IC0zOTYsOCArMzk2LDcgQEAgdm9pZCBSZW5kZXJTVkdSb290Ojp1cGRhdGVGcm9tU3R5bGUoKQog
ewogICAgIFJlbmRlclJlcGxhY2VkOjp1cGRhdGVGcm9tU3R5bGUoKTsKIAotICAgIC8vIEZJWE1F
OiBbTEJTRV0gVXBzdHJlYW0gUmVuZGVyT2JqZWN0IGNoYW5nZXMKLSAgICAvLyBzZXRIYXNTVkdU
cmFuc2Zvcm0oKTsKKyAgICBzZXRIYXNTVkdUcmFuc2Zvcm0oKTsKIAogICAgIGlmIChzaG91bGRB
cHBseVZpZXdwb3J0Q2xpcCgpKQogICAgICAgICBzZXRIYXNOb25WaXNpYmxlT3ZlcmZsb3coKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKaW5k
ZXggMzI1NTcyNDE5MGI3MjBhZmQzNjY4NTU4NjIwMTYwZjBmMzgxMDE5ZS4uY2FhZjZiMzViMGUw
NTIwMDNkZjkyMDFlZWMwMDA0ZDU0MzUxZjQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKQEAgLTE1NCw4ICsxNTQsNyBAQCB2b2lkIFJl
bmRlclNWR1NoYXBlOjpsYXlvdXQoKQogICAgICAgICBzZXRMYXlvdXRSZWN0KGVuY2xvc2luZ0xh
eW91dFJlY3QobV9maWxsQm91bmRpbmdCb3gpKTsKICAgICB9CiAKLSAgICAvLyBGSVhNRTogW0xC
U0VdIFVwc3RyZWFtIFNWR0xheWVyVHJhbnNmb3JtVXBkYXRlcgotICAgIC8vIFNWR1JlbmRlclN1
cHBvcnQ6OnVwZGF0ZUxheWVyVHJhbnNmb3JtKCp0aGlzKTsKKyAgICB1cGRhdGVMYXllclRyYW5z
Zm9ybSgpOwogCiAgICAgLy8gSW52YWxpZGF0ZSBhbGwgcmVzb3VyY2VzIG9mIHRoaXMgY2xpZW50
IGlmIG91ciBsYXlvdXQgY2hhbmdlZC4KICAgICBpZiAoZXZlckhhZExheW91dCgpICYmIHNlbGZO
ZWVkc0xheW91dCgpKQpAQCAtNTM2LDggKzUzNSw3IEBAIHZvaWQgUmVuZGVyU1ZHU2hhcGU6OnN0
eWxlV2lsbENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUmIG5l
CiAKIHZvaWQgUmVuZGVyU1ZHU2hhcGU6OmFwcGx5VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0
cml4JiB0cmFuc2Zvcm0sIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRmxvYXRSZWN0
JiBib3VuZGluZ0JveCwgT3B0aW9uU2V0PFJlbmRlclN0eWxlOjpUcmFuc2Zvcm1PcGVyYXRpb25P
cHRpb24+IG9wdGlvbnMpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IFtMQlNFXSBVcHN0cmVhbSBD
U1MvU1ZHIHRyYW5zZm9ybSBzdXBwb3J0Ci0gICAgc3R5bGUuYXBwbHlUcmFuc2Zvcm0odHJhbnNm
b3JtLCBib3VuZGluZ0JveCwgb3B0aW9ucyk7CisgICAgYXBwbHlTVkdUcmFuc2Zvcm0odHJhbnNm
b3JtLCBncmFwaGljc0VsZW1lbnQoKSwgc3R5bGUsIGJvdW5kaW5nQm94LCBvcHRpb25zKTsKIH0K
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdT
aGFwZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5oCmlu
ZGV4IDE5YzYzY2FmMjkxNDFiZjliODBlZTQwNDBlOTlkYzU0NjQ1ZDI4MTYuLmIzOWNkODljNDc2
YzI2YjdmMDlmMDc0OGVjNWY2YTlkZmQzZmE4M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmgKQEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogCiAg
ICAgRmxvYXRSZWN0IGNvbXB1dGVNYXJrZXJCb3VuZGluZ0JveChjb25zdCBTVkdCb3VuZGluZ0Jv
eENvbXB1dGF0aW9uOjpEZWNvcmF0aW9uT3B0aW9ucyYpIGNvbnN0OwogCi0gICAgdm9pZCBhcHBs
eVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgY29u
c3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCwgT3B0aW9uU2V0PFJlbmRlclN0eWxlOjpUcmFuc2Zv
cm1PcGVyYXRpb25PcHRpb24+ID0gUmVuZGVyU3R5bGU6OmFsbFRyYW5zZm9ybU9wZXJhdGlvbnMp
IGNvbnN0IG92ZXJyaWRlOworICAgIHZvaWQgYXBwbHlUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25N
YXRyaXgmLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gs
IE9wdGlvblNldDxSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPiA9IFJlbmRl
clN0eWxlOjphbGxUcmFuc2Zvcm1PcGVyYXRpb25zKSBjb25zdCBmaW5hbDsKIAogcHJvdGVjdGVk
OgogICAgIHZvaWQgZWxlbWVudCgpIGNvbnN0ID0gZGVsZXRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNv
bnRhaW5lci5jcHAKaW5kZXggOTAzMTIyYmU5N2M3NTFhM2Q1MmE5NGU3N2Y4Y2E3NWY2MTQ0YzE5
NS4uYjAwZmI1MGFhOWUwMDAxNzk3ZmM5NTUwODU4NmE2YjIxNDA3N2Y3OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFp
bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5z
Zm9ybWFibGVDb250YWluZXIuY3BwCkBAIC05NywxNSArOTcsMTMgQEAgdm9pZCBSZW5kZXJTVkdU
cmFuc2Zvcm1hYmxlQ29udGFpbmVyOjp1cGRhdGVGcm9tU3R5bGUoKQogewogICAgIFJlbmRlclNW
R0NvbnRhaW5lcjo6dXBkYXRlRnJvbVN0eWxlKCk7CiAKLSAgICAvLyBGSVhNRTogW0xCU0VdIFVw
c3RyZWFtIENTUy9TVkcgdHJhbnNmb3JtIHN1cHBvcnQKLSAgICAvLyBpZiAoYXNzb2NpYXRlZFVz
ZUVsZW1lbnQoZ3JhcGhpY3NFbGVtZW50KCkpKQotICAgIC8vICAgIHNldEhhc1NWR1RyYW5zZm9y
bSgpOworICAgIGlmIChhc3NvY2lhdGVkVXNlRWxlbWVudChncmFwaGljc0VsZW1lbnQoKSkpCisg
ICAgICAgIHNldEhhc1NWR1RyYW5zZm9ybSgpOwogfQogCiB2b2lkIFJlbmRlclNWR1RyYW5zZm9y
bWFibGVDb250YWluZXI6OmFwcGx5VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFu
c2Zvcm0sIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGlu
Z0JveCwgT3B0aW9uU2V0PFJlbmRlclN0eWxlOjpUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb24+IG9w
dGlvbnMpIGNvbnN0CiB7Ci0gICAgLy8gRklYTUU6IFtMQlNFXSBVcHN0cmVhbSBDU1MvU1ZHIHRy
YW5zZm9ybSBzdXBwb3J0Ci0gICAgc3R5bGUuYXBwbHlUcmFuc2Zvcm0odHJhbnNmb3JtLCBib3Vu
ZGluZ0JveCwgb3B0aW9ucyk7CisgICAgYXBwbHlTVkdUcmFuc2Zvcm0odHJhbnNmb3JtLCBncmFw
aGljc0VsZW1lbnQoKSwgc3R5bGUsIGJvdW5kaW5nQm94LCBvcHRpb25zKTsKIH0KIAogdm9pZCBS
ZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyOjpzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZm
ZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHAKaW5kZXggNDRjNWE2ZTliOWEzZjQ0MjJhYjJiNjgw
MDNlMDZjOTEwNzdkNmNkNy4uZTA3MGM3YTczMDYyNmFkNWMyMDdkZWM3MjE4MDMzM2UzNTFlYzgz
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHAKQEAgLTczLDYg
KzczLDE1IEBAIEFmZmluZVRyYW5zZm9ybSBTVkdHcmFwaGljc0VsZW1lbnQ6OmdldFNjcmVlbkNU
TShTdHlsZVVwZGF0ZVN0cmF0ZWd5IHN0eWxlVXBkYXRlCiAKIEFmZmluZVRyYW5zZm9ybSBTVkdH
cmFwaGljc0VsZW1lbnQ6OmFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0oKSBjb25zdAogeworI2lmIEVO
QUJMRShMQVlFUl9CQVNFRF9TVkdfRU5HSU5FKQorICAgIC8vIExCU0UgaGFuZGxlcyB0cmFuc2Zv
cm1zIHZpYSBSZW5kZXJMYXllciwgbm8gbmVlZCB0byBoYW5kbGUgQ1NTIHRyYW5zZm9ybXMgaGVy
ZS4KKyAgICBpZiAoZG9jdW1lbnQoKS5zZXR0aW5ncygpLmxheWVyQmFzZWRTVkdFbmdpbmVFbmFi
bGVkKCkpIHsKKyAgICAgICAgaWYgKG1fc3VwcGxlbWVudGFsVHJhbnNmb3JtKQorICAgICAgICAg
ICAgcmV0dXJuICptX3N1cHBsZW1lbnRhbFRyYW5zZm9ybSAqIHRyYW5zZm9ybSgpLmNvbmNhdGVu
YXRlKCk7CisgICAgICAgIHJldHVybiB0cmFuc2Zvcm0oKS5jb25jYXRlbmF0ZSgpOworICAgIH0K
KyNlbmRpZgorCiAgICAgQWZmaW5lVHJhbnNmb3JtIG1hdHJpeDsKIAogICAgIGF1dG8qIHN0eWxl
ID0gcmVuZGVyZXIoKSA/ICZyZW5kZXJlcigpLT5zdHlsZSgpIDogbnVsbHB0cjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456902</attachid>
            <date>2022-04-07 03:31:31 -0700</date>
            <delta_ts>2022-04-07 15:59:39 -0700</delta_ts>
            <desc>Patch, v9</desc>
            <filename>bug-237711-20220407033126.patch</filename>
            <type>text/plain</type>
            <size>26374</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzhmOThmY2I1ZGU2ZjEx
NDhkYjk3Mjc5ODg0Mzc0YzI3NWM4NDRlMi4uNGQ1ZTYzYmEyMTU3YjYxYjkzMjMwNTZiODM2NWJh
NDZjOTViYWFjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDIyLTA0LTA3ICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtMQlNF
XSBBY3RpdmF0ZSBTVkcgdHJhbnNmb3JtIHN1cHBvcnQgdGhyb3VnaCBsYXllcnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzcxMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFjdGl2YXRlIHRyYW5zZm9y
bXMgZm9yIFNWRyBsYXllcnMuCisKKyAgICAgICAgVXNlIHRoZSBmbGFnIHRvIGtlZXAgdHJhY2sg
b2YgdGhlIHByZXNlbmNlIG9mIFNWRyB0cmFuc2Zvcm1hdGlvbnMKKyAgICAgICAgb24gYSByZW5k
ZXJlci4gQ1NTL0hUTUwgcmVuZGVyZXJzIGNhbiByZWx5IG9ubHkgb24gdGhlIFJlbmRlclN0eWxl
CisgICAgICAgIHRvIGRldGVybWluZSBpZiB0cmFuc2Zvcm1hdGlvbnMgYXJlIGFwcGxpZWQsIHdo
ZXJlYXMgU1ZHIGhhcyB0bworICAgICAgICBjb25zdWx0IGFkZGl0aW9uYWwgc291cmNlcywgc3Vj
aCBhcyB0aGUgU1ZHICd0cmFuc2Zvcm0nIGF0dHJpYnV0ZS4KKworICAgICAgICBBIFNWRyByZW5k
ZXJlciB3aXRoIHRoZSAnSGFzU1ZHVHJhbnNmb3JtJyBmbGFnIHNldCBzaG91bGQgYmVoYXZlCisg
ICAgICAgIGxpa2UgYW55IFNWRy9IVE1MIHJlbmRlcmVyIHRoYXQgaGFzIENTUyB0cmFuc2Zvcm1h
dGlvbnMgYXBwbGllZC4KKworICAgICAgICBXaXRoIHRoaXMgcGF0Y2ggYXBwbGllZCBTVkcgdHJh
bnNmb3JtIGFuZCBDU1MgdHJhbnNmb3JtcyBjYW4KKyAgICAgICAgYmUgYXBwbGllZCB0byA8Zz4g
LyA8cmVjdD4gZWxlbWVudHMgaW4gTEJTRSwgaG93ZXZlciB0cmFuc2Zvcm0tb3JpZ2luCisgICAg
ICAgIHN1cHBvcnQgaXMgbm90IHlldCBjb3JyZWN0LCB0aGlzIHdpbGwgY29tZSB1cCBhIGZvbGxv
dy11cCBwYXRjaC4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLCBubyBjaGFu
Z2UgaW4gYmVoYXZpb3VyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jt
cy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc2Zvcm1h
dGlvbk1hdHJpeDo6bXVsdGlwbHlBZmZpbmVUcmFuc2Zvcm0pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6dXBk
YXRlTGF5ZXJUcmFuc2Zvcm0pOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJC
b3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y2FuQ3JlYXRlU3RhY2tpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckxheWVyOjpjdXJyZW50VHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllck1v
ZGVsT2JqZWN0Ojp1cGRhdGVMYXllclRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllck1vZGVsT2JqZWN0OjphcHBseVNWR1RyYW5zZm9ybSBjb25zdCk6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6c2V0SGFz
U1ZHVHJhbnNmb3JtKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Omhhc1NWR1RyYW5zZm9ybSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Omhhc1RyYW5zZm9ybSBjb25zdCk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHTGF5ZXJUcmFuc2Zvcm1VcGRhdGVyOjpTVkdMYXllclRyYW5zZm9ybVVwZGF0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHTGF5ZXJUcmFuc2Zvcm1VcGRhdGVyOjp+U1ZHTGF5ZXJUcmFu
c2Zvcm1VcGRhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0NvbnRhaW5lcjo6bGF5
b3V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5oOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHQ29udGFpbmVyOjp1cGRhdGVMYXllckluZm9ybWF0aW9u
KTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR01vZGVsT2JqZWN0Ojp1cGRhdGVGcm9t
U3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSb290Ojp1cGRhdGVGcm9tU3R5bGUpOgorICAgICAgICAq
IHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyU1ZHU2hhcGU6OmxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdTaGFwZTo6
YXBwbHlUcmFuc2Zvcm0gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
U2hhcGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFibGVD
b250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNv
bnRhaW5lcjo6dXBkYXRlRnJvbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Ry
YW5zZm9ybWFibGVDb250YWluZXI6OmFwcGx5VHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKiBz
dmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYXBoaWNz
RWxlbWVudDo6YW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSBjb25zdCk6CisKIDIwMjItMDQtMDcgIE5p
a29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5p
ZnkgcmVmZXJlbmNlIGJveCAvIENUTSBjb21wdXRhdGlvbiBpbiBSZW5kZXJMYXllcgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zv
cm1hdGlvbk1hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcAppbmRleCBmMjI2ZDkzMzFhNGU0MzFmODY2
ZTk1N2MxNTg5YmRlZDAzNjEzYmNhLi4yODFjOTVkY2E2ZGVjZjc3NzdhYTczNWY2MDlmZWJjODgx
MDM4YjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFu
c2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcApAQCAtMTUz
Myw2ICsxNTMzLDE3IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4JiBUcmFuc2Zvcm1hdGlvbk1hdHJp
eDo6bXVsdGlwbHkoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmCiAgICAgcmV0dXJuICp0aGlz
OwogfQogCitUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgVHJhbnNmb3JtYXRpb25NYXRyaXg6Om11bHRp
cGx5QWZmaW5lVHJhbnNmb3JtKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgbWF0cml4KQoreworICAg
IGlmIChtYXRyaXguaXNJZGVudGl0eSgpKQorICAgICAgICByZXR1cm4gKnRoaXM7CisKKyAgICBp
ZiAobWF0cml4LmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uKCkpCisgICAgICAgIHJldHVybiB0cmFu
c2xhdGUobWF0cml4LmUoKSwgbWF0cml4LmYoKSk7CisKKyAgICByZXR1cm4gbXVsdGlwbHkobWF0
cml4LnRvVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7Cit9CisKIHZvaWQgVHJhbnNmb3JtYXRpb25N
YXRyaXg6Om11bHRWZWNNYXRyaXgoZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUmIHJlc3VsdFgs
IGRvdWJsZSYgcmVzdWx0WSkgY29uc3QKIHsKICAgICByZXN1bHRYID0gbV9tYXRyaXhbM11bMF0g
KyB4ICogbV9tYXRyaXhbMF1bMF0gKyB5ICogbV9tYXRyaXhbMV1bMF07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9u
TWF0cml4LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1Ry
YW5zZm9ybWF0aW9uTWF0cml4LmgKaW5kZXggYzk1MTE3N2EzMTBiNzYwNGMyMTU5Y2Q2ZTI0OTdm
ZDhmMjU3YjgzYi4uODU1ZDJlNzJhMTVhN2M4NjM3Nzg2NTZlNGYzODZlYTlhOGMyMjYxZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFu
c2Zvcm1hdGlvbk1hdHJpeC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaApAQCAtMjQ5LDYgKzI0OSw4IEBAIHB1
YmxpYzoKIAogICAgIC8vIHRoaXMgPSBtYXQgKiB0aGlzLgogICAgIFdFQkNPUkVfRVhQT1JUIFRy
YW5zZm9ybWF0aW9uTWF0cml4JiBtdWx0aXBseShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYp
OworICAgIC8vIElkZW50aWNhbCB0byBtdWx0aXBseShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpLCBi
dXQgc2F2aW5nIGEgQWZmaW5lVHJhbnNmb3JtIC0+IFRyYW5zZm9ybWF0aW9uTWF0cml4IHJvdW5k
dHJpcCBmb3IgaWRlbnRpdHkgb3IgdHJhbnNsYXRpb24gbWF0cmljZXMuCisgICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIG11bHRpcGx5QWZmaW5lVHJhbnNmb3JtKGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHNjYWxlKGRv
dWJsZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHNjYWxlTm9u
VW5pZm9ybShkb3VibGUgc3gsIGRvdWJsZSBzeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCb3guY3BwCmluZGV4IDUyYTZkN2FkZWZkZWViZDg4ZDQ1OWQxNjJlYzU4ZWZjYWJiYzhmOGQu
LmQ1MWRlNjZlYjQzY2Q1MmJhNzk0ZTg5NzE4MzcyN2IzYjUwNGRiYWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC02NjcsMTMgKzY2Nyw2IEBAIHZvaWQgUmVuZGVy
Qm94OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFkcywgYm9vbCogd2FzRml4
ZWQpIGNvbnN0CiAgICAgcXVhZHMuYXBwZW5kKGxvY2FsVG9BYnNvbHV0ZVF1YWQobG9jYWxSZWN0
LCBVc2VUcmFuc2Zvcm1zLCB3YXNGaXhlZCkpOwogfQogCi12b2lkIFJlbmRlckJveDo6dXBkYXRl
TGF5ZXJUcmFuc2Zvcm0oKQotewotICAgIC8vIFRyYW5zZm9ybS1vcmlnaW4gZGVwZW5kcyBvbiBi
b3ggc2l6ZSwgc28gd2UgbmVlZCB0byB1cGRhdGUgdGhlIGxheWVyIHRyYW5zZm9ybSBhZnRlciBs
YXlvdXQuCi0gICAgaWYgKGhhc0xheWVyKCkpCi0gICAgICAgIGxheWVyKCktPnVwZGF0ZVRyYW5z
Zm9ybSgpOwotfQotCiB2b2lkIFJlbmRlckJveDo6YXBwbHlUcmFuc2Zvcm0oVHJhbnNmb3JtYXRp
b25NYXRyaXgmIHQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRmxvYXRSZWN0JiBi
b3VuZGluZ0JveCwgT3B0aW9uU2V0PFJlbmRlclN0eWxlOjpUcmFuc2Zvcm1PcGVyYXRpb25PcHRp
b24+IG9wdGlvbnMpIGNvbnN0CiB7CiAgICAgc3R5bGUuYXBwbHlUcmFuc2Zvcm0odCwgYm91bmRp
bmdCb3gsIG9wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5oCmluZGV4IDFh
ZmY3ZTAxN2NhMzAxYjQ2YTUzODBkMDYxMzBmZjNlZTE1N2Q1MmEuLmIxODMyYzA4NmI0M2ZjYWRm
ZDY3YWRmMTk4MWNiYjMyOTc4NGJlNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmgKQEAgLTIxOCw3ICsyMTgsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRPdmVyZmxvd0Zyb21D
aGlsZChjb25zdCBSZW5kZXJCb3gqIGNoaWxkKSB7IGFkZE92ZXJmbG93RnJvbUNoaWxkKGNoaWxk
LCBjaGlsZC0+bG9jYXRpb25PZmZzZXQoKSk7IH0KICAgICB2b2lkIGFkZE92ZXJmbG93RnJvbUNo
aWxkKGNvbnN0IFJlbmRlckJveCogY2hpbGQsIGNvbnN0IExheW91dFNpemUmIGRlbHRhKTsKIAot
ICAgIHZvaWQgdXBkYXRlTGF5ZXJUcmFuc2Zvcm0oKTsKICAgICB2b2lkIGFwcGx5VHJhbnNmb3Jt
KFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBGbG9hdFJl
Y3QmIGJvdW5kaW5nQm94LCBPcHRpb25TZXQ8UmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlv
bk9wdGlvbj4gPSBSZW5kZXJTdHlsZTo6YWxsVHJhbnNmb3JtT3BlcmF0aW9ucykgY29uc3Qgb3Zl
cnJpZGU7CiAKICAgICBMYXlvdXRTaXplIGNvbnRlbnRTaXplKCkgY29uc3QgeyByZXR1cm4geyBj
b250ZW50V2lkdGgoKSwgY29udGVudEhlaWdodCgpIH07IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDJhZThmMzBhZTBkZDBmNWZkMGY4YmJmOWU3YmU3Mjhj
NDhiNzE2NjIuLjVjMmRhZTc3YzhhOWUzYzYxYzkyYWM5MTFjZDQ5ZjIzMWFhNjEzZjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtNTUyLDYgKzU1Miw5IEBA
IHN0YXRpYyBib29sIGNhbkNyZWF0ZVN0YWNraW5nQ29udGV4dChjb25zdCBSZW5kZXJMYXllciYg
bGF5ZXIpCiB7CiAgICAgYXV0byYgcmVuZGVyZXIgPSBsYXllci5yZW5kZXJlcigpOwogICAgIHJl
dHVybiByZW5kZXJlci5oYXNUcmFuc2Zvcm1SZWxhdGVkUHJvcGVydHkoKQorI2lmIEVOQUJMRShM
QVlFUl9CQVNFRF9TVkdfRU5HSU5FKQorICAgICAgICB8fCByZW5kZXJlci5oYXNTVkdUcmFuc2Zv
cm0oKQorI2VuZGlmCiAgICAgICAgIHx8IHJlbmRlcmVyLmhhc0NsaXBQYXRoKCkKICAgICAgICAg
fHwgcmVuZGVyZXIuaGFzRmlsdGVyKCkKICAgICAgICAgfHwgcmVuZGVyZXIuaGFzTWFzaygpCkBA
IC0xMzU3LDE5ICsxMzYwLDEzIEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4IFJlbmRlckxheWVyOjpj
dXJyZW50VHJhbnNmb3JtKE9wdGlvblNldDxSZW5kZXJTdHlsZTo6VHJhbnNmCiAgICAgaWYgKCFt
X3RyYW5zZm9ybSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIC8vIEZJWE1FOiBbTEJTRV0g
VXBzdHJlYW0gdHJhbnNmb3JtIHN1cHBvcnQgZm9yIFJlbmRlclNWR01vZGVsT2JqZWN0IGRlcml2
ZWQgcmVuZGVyZXJzCi0gICAgaWYgKCFpczxSZW5kZXJCb3g+KHJlbmRlcmVyKCkpKQotICAgICAg
ICByZXR1cm4geyB9OwotCi0gICAgYXV0byYgcmVuZGVyQm94ID0gZG93bmNhc3Q8UmVuZGVyQm94
PihyZW5kZXJlcigpKTsKLQogICAgIC8vIG1fdHJhbnNmb3JtIGluY2x1ZGVzIHRyYW5zZm9ybS1v
cmlnaW4gYW5kIGlzIGFmZmVjdGVkIGJ5IHRoZSBjaG9pY2Ugb2YgdGhlIHRyYW5zZm9ybS1ib3gu
CiAgICAgLy8gVGhlcmVmb3JlIHdlIGNhbiBvbmx5IHVzZSB0aGUgY2FjaGVkIG1fdHJhbnNmb3Jt
LCBpZiB0aGUgYW5pbWF0aW9uIGRvZXNuJ3QgYWx0ZXIgdHJhbnNmb3JtLWJveCBvciBleGNsdWRl
cyB0cmFuc2Zvcm0tb3JpZ2luLgogCiAgICAgLy8gUXVlcnkgdGhlIGFuaW1hdGVkU3R5bGUoKSB0
byBvYnRhaW4gdGhlIGN1cnJlbnQgdHJhbnNmb3JtYXRpb24sIHdoZW4gYWNjZWxlcmF0ZWQgdHJh
bnNmb3JtIGFuaW1hdGlvbnMgYXJlIHJ1bm5pbmcuCi0gICAgYXV0byBzdHlsZWFibGUgPSBTdHls
ZWFibGU6OmZyb21SZW5kZXJlcihyZW5kZXJCb3gpOworICAgIGF1dG8gc3R5bGVhYmxlID0gU3R5
bGVhYmxlOjpmcm9tUmVuZGVyZXIocmVuZGVyZXIoKSk7CiAgICAgaWYgKChzdHlsZWFibGUgJiYg
c3R5bGVhYmxlLT5pc1J1bm5pbmdBY2NlbGVyYXRlZFRyYW5zZm9ybUFuaW1hdGlvbigpKSB8fCAh
b3B0aW9ucy5jb250YWlucyhSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uOjpU
cmFuc2Zvcm1PcmlnaW4pKSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4g
YW5pbWF0ZWRTdHlsZSA9IHJlbmRlckJveC5hbmltYXRlZFN0eWxlKCk7CisgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gYW5pbWF0ZWRTdHlsZSA9IHJlbmRlcmVyKCkuYW5pbWF0
ZWRTdHlsZSgpOwogCiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKICAg
ICAgICAgdXBkYXRlVHJhbnNmb3JtRnJvbVN0eWxlKHRyYW5zZm9ybSwgKmFuaW1hdGVkU3R5bGUs
IG9wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyTW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
TW9kZWxPYmplY3QuY3BwCmluZGV4IDRlYzc5M2JhYWUwYTc2YjVjMjQyMTlkMWM3MTgxYzc2MmQ0
OWJlZTQuLjAxYjk4YWY0ODFlZWZmMjdiNDYwYWE0NmJhZGFjMGVhZGY3ZDEyZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHAK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJSZW5kZXJMYXllclNjcm9sbGFibGVBcmVhLmgi
CiAjaW5jbHVkZSAiUmVuZGVyU1ZHTW9kZWxPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3
LmgiCisjaW5jbHVkZSAiU1ZHR3JhcGhpY3NFbGVtZW50LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKICNpbmNsdWRlICJTdHlsZVNjcm9sbFNuYXBQb2ludHMuaCIKICNpbmNsdWRlICJUcmFuc2Zv
cm1TdGF0ZS5oIgpAQCAtMjMxLDYgKzIzMiwxMyBAQCB2b2lkIFJlbmRlckxheWVyTW9kZWxPYmpl
Y3Q6OnN1c3BlbmRBbmltYXRpb25zKE1vbm90b25pY1RpbWUgdGltZSkKICAgICBsYXllcigpLT5i
YWNraW5nKCktPnN1c3BlbmRBbmltYXRpb25zKHRpbWUpOwogfQogCit2b2lkIFJlbmRlckxheWVy
TW9kZWxPYmplY3Q6OnVwZGF0ZUxheWVyVHJhbnNmb3JtKCkKK3sKKyAgICAvLyBUcmFuc2Zvcm0t
b3JpZ2luIGRlcGVuZHMgb24gYm94IHNpemUsIHNvIHdlIG5lZWQgdG8gdXBkYXRlIHRoZSBsYXll
ciB0cmFuc2Zvcm0gYWZ0ZXIgbGF5b3V0LgorICAgIGlmIChoYXNMYXllcigpKQorICAgICAgICBs
YXllcigpLT51cGRhdGVUcmFuc2Zvcm0oKTsKK30KKwogI2lmIEVOQUJMRShMQVlFUl9CQVNFRF9T
VkdfRU5HSU5FKQogc3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0PiBSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0Ojpjb21wdXRlVmlzaWJsZVJlY3RJblNWR0NvbnRhaW5lcihjb25zdCBMYXlvdXRSZWN0JiBy
ZWN0LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBjb250YWluZXIsIFJlbmRlck9iamVj
dDo6VmlzaWJsZVJlY3RDb250ZXh0IGNvbnRleHQpIGNvbnN0CiB7CkBAIC0zMTYsNiArMzI0LDM4
IEBAIHZvaWQgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6bWFwTG9jYWxUb1NWR0NvbnRhaW5lcihj
b25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0CiAKICAgICBjb250YWluZXItPm1hcExvY2FsVG9D
b250YWluZXIoYW5jZXN0b3JDb250YWluZXIsIHRyYW5zZm9ybVN0YXRlLCBtb2RlLCB3YXNGaXhl
ZCk7CiB9CisKK3ZvaWQgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6YXBwbHlTVkdUcmFuc2Zvcm0o
VHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgU1ZHR3JhcGhpY3NFbGVtZW50JiBncmFw
aGljc0VsZW1lbnQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgRmxvYXRSZWN0JiBi
b3VuZGluZ0JveCwgT3B0aW9uU2V0PFJlbmRlclN0eWxlOjpUcmFuc2Zvcm1PcGVyYXRpb25PcHRp
b24+IG9wdGlvbnMpIGNvbnN0Cit7CisgICAgLy8gVGhpcyBjaGVjayBkb2VzIG5vdCB1c2Ugc3R5
bGUuaGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCkgb24gcHVycG9zZSAtLSB3ZSBvbmx5IHdh
bnQgdG8ga25vdyBpZiBlaXRoZXIgdGhlICd0cmFuc2Zvcm0nIHByb3BlcnR5LCBhbgorICAgIC8v
IG9mZnNldCBwYXRoLCBvciB0aGUgaW5kaXZpZHVhbCB0cmFuc2Zvcm0gb3BlcmF0aW9ucyBhcmUg
c2V0IChwZXJzcGVjdGl2ZSAvIHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2QgYXJlIG5vdCBy
ZWxldmFudCBoZXJlKS4KKyAgICBib29sIGhhc0NTU1RyYW5zZm9ybSA9IHN0eWxlLmhhc1RyYW5z
Zm9ybSgpIHx8IHN0eWxlLnJvdGF0ZSgpIHx8IHN0eWxlLnRyYW5zbGF0ZSgpIHx8IHN0eWxlLnNj
YWxlKCk7CisKKyAgICBib29sIGFmZmVjdGVkQnlUcmFuc2Zvcm1PcmlnaW4gPSBmYWxzZTsKKyAg
ICBzdGQ6Om9wdGlvbmFsPEFmZmluZVRyYW5zZm9ybT4gc3ZnVHJhbnNmb3JtOworCisgICAgaWYg
KGhhc0NTU1RyYW5zZm9ybSkKKyAgICAgICAgYWZmZWN0ZWRCeVRyYW5zZm9ybU9yaWdpbiA9IHN0
eWxlLmFmZmVjdGVkQnlUcmFuc2Zvcm1PcmlnaW4oKTsKKyAgICBlbHNlIGlmIChhdXRvIGFmZmlu
ZVRyYW5zZm9ybSA9IGdyYXBoaWNzRWxlbWVudC5hbmltYXRlZExvY2FsVHJhbnNmb3JtKCk7ICFh
ZmZpbmVUcmFuc2Zvcm0uaXNJZGVudGl0eSgpKSB7CisgICAgICAgIHN2Z1RyYW5zZm9ybSA9IGFm
ZmluZVRyYW5zZm9ybTsKKyAgICAgICAgYWZmZWN0ZWRCeVRyYW5zZm9ybU9yaWdpbiA9IGFmZmlu
ZVRyYW5zZm9ybS5hKCkgIT0gMSB8fCBhZmZpbmVUcmFuc2Zvcm0uYigpIHx8IGFmZmluZVRyYW5z
Zm9ybS5jKCkgfHwgYWZmaW5lVHJhbnNmb3JtLmQoKSAhPSAxOworICAgIH0KKworICAgIGlmICgh
aGFzQ1NTVHJhbnNmb3JtICYmICFzdmdUcmFuc2Zvcm0uaGFzX3ZhbHVlKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIEZsb2F0UG9pbnQzRCBvcmlnaW5UcmFuc2xhdGU7CisgICAgaWYgKG9wdGlv
bnMuY29udGFpbnMoUmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbjo6VHJhbnNm
b3JtT3JpZ2luKSAmJiBhZmZlY3RlZEJ5VHJhbnNmb3JtT3JpZ2luKQorICAgICAgICBvcmlnaW5U
cmFuc2xhdGUgPSBzdHlsZS5hcHBseVRyYW5zZm9ybU9yaWdpbih0cmFuc2Zvcm0sIGJvdW5kaW5n
Qm94KTsKKworICAgIC8vIENTUyB0cmFuc2Zvcm1zIHRha2UgcHJlY2VkZW5jZSBvdmVyIFNWRyB0
cmFuc2Zvcm1zLgorICAgIGlmIChoYXNDU1NUcmFuc2Zvcm0pCisgICAgICAgIHN0eWxlLmFwcGx5
Q1NTVHJhbnNmb3JtKHRyYW5zZm9ybSwgYm91bmRpbmdCb3gsIG9wdGlvbnMpOworICAgIGVsc2UK
KyAgICAgICAgdHJhbnNmb3JtLm11bHRpcGx5QWZmaW5lVHJhbnNmb3JtKHN2Z1RyYW5zZm9ybS52
YWx1ZSgpKTsKKworICAgIHN0eWxlLnVuYXBwbHlUcmFuc2Zvcm1PcmlnaW4odHJhbnNmb3JtLCBv
cmlnaW5UcmFuc2xhdGUpOworfQogI2VuZGlmCiAKIGJvb2wgcmVuZGVyZXJOZWVkc1BpeGVsU25h
cHBpbmcoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCYgcmVuZGVyZXIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuaAppbmRleCBmOGJh
OWVkZmFmNDk0ZmUwNDc4ZDE1ODdmYTdkNzExYjg2NjQ0NTJjLi4wNmFjNzhjM2ZlM2NlYzUwMmZk
NzAzZDQ3YWFjMzc1NjA0ZTA3YTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmgKQEAgLTI4LDYgKzI4LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBLZXlmcmFtZUxpc3Q7CiBjbGFzcyBSZW5kZXJMYXllcjsKK2NsYXNz
IFNWR0dyYXBoaWNzRWxlbWVudDsKIAogc3RydWN0IExheWVyUmVwYWludFJlY3RzIHsKICAgICBM
YXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3Q7CkBAIC03NSw4ICs3NiwxMiBAQCBwdWJsaWM6
CiAgICAgLy8gUHJvdmlkZXMgdGhlIFNWRyBpbXBsZW1lbnRhdGlvbiBmb3IgbWFwTG9jYWxUb0Nv
bnRhaW5lcigpLgogICAgIC8vIFRoaXMgbGl2ZXMgaW4gUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCwg
d2hpY2ggaXMgdGhlIGNvbW1vbiBiYXNlLWNsYXNzIGZvciBhbGwgU1ZHIHJlbmRlcmVycy4KICAg
ICB2b2lkIG1hcExvY2FsVG9TVkdDb250YWluZXIoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dCogYW5jZXN0b3JDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgT3B0aW9uU2V0PE1hcENvb3Jk
aW5hdGVzTW9kZT4sIGJvb2wqIHdhc0ZpeGVkKSBjb25zdDsKKworICAgIHZvaWQgYXBwbHlTVkdU
cmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBTVkdHcmFwaGljc0VsZW1lbnQmLCBjb25z
dCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gsIE9wdGlvblNldDxS
ZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPikgY29uc3Q7CiAjZW5kaWYKIAor
ICAgIHZvaWQgdXBkYXRlTGF5ZXJUcmFuc2Zvcm0oKTsKKwogICAgIHZpcnR1YWwgdm9pZCBhcHBs
eVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgY29u
c3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCwgT3B0aW9uU2V0PFJlbmRlclN0eWxlOjpUcmFuc2Zv
cm1PcGVyYXRpb25PcHRpb24+ID0gUmVuZGVyU3R5bGU6OmFsbFRyYW5zZm9ybU9wZXJhdGlvbnMp
IGNvbnN0ID0gMDsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcAppbmRleCAyYWFjNTZlZjYzNTk5YWU5YzlkNWY5MjMxNjQ4ZDRlMzUyMWQwYTI0
Li44YTRkODBmMmI2NDIyM2ZiOGY5NTZmZjQ1NWI1YzRlNjk4MzRlYTA3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTk4Nyw2ICsxOTg3LDE0IEBAIHZv
aWQgUmVuZGVyT2JqZWN0OjpzZXRIYXNPdXRsaW5lQXV0b0FuY2VzdG9yKGJvb2wgaGFzT3V0bGlu
ZUF1dG9BbmNlc3RvcikKICAgICAgICAgZW5zdXJlUmFyZURhdGEoKS5zZXRIYXNPdXRsaW5lQXV0
b0FuY2VzdG9yKGhhc091dGxpbmVBdXRvQW5jZXN0b3IpOwogfQogCisjaWYgRU5BQkxFKExBWUVS
X0JBU0VEX1NWR19FTkdJTkUpCit2b2lkIFJlbmRlck9iamVjdDo6c2V0SGFzU1ZHVHJhbnNmb3Jt
KGJvb2wgaGFzU1ZHVHJhbnNmb3JtKQoreworICAgIGlmIChoYXNTVkdUcmFuc2Zvcm0gfHwgaGFz
UmFyZURhdGEoKSkKKyAgICAgICAgZW5zdXJlUmFyZURhdGEoKS5zZXRIYXNTVkdUcmFuc2Zvcm0o
aGFzU1ZHVHJhbnNmb3JtKTsKK30KKyNlbmRpZgorCiB2b2lkIFJlbmRlck9iamVjdDo6c2V0UGFp
bnRDb250YWlubWVudEFwcGxpZXMoYm9vbCBwYWludENvbnRhaW5tZW50QXBwbGllcykKIHsKICAg
ICBpZiAocGFpbnRDb250YWlubWVudEFwcGxpZXMgfHwgaGFzUmFyZURhdGEoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCBmZjhkY2Y2YWIyOWM3MjQyMjUxYjBi
ODY1NWMyMGQzMmJmMmVkYzkxLi4zNjhjM2QxN2IzYjYwYjc1MjI5ZDZkM2FjNDc4YzBjZWFiZGRi
M2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC00MTYsNiAr
NDE2LDEyIEBAIHB1YmxpYzoKICAgICBib29sIGhhc091dGxpbmVBdXRvQW5jZXN0b3IoKSBjb25z
dCB7IHJldHVybiBtX2JpdGZpZWxkcy5oYXNSYXJlRGF0YSgpICYmIHJhcmVEYXRhKCkuaGFzT3V0
bGluZUF1dG9BbmNlc3RvcigpOyB9CiAgICAgYm9vbCBwYWludENvbnRhaW5tZW50QXBwbGllcygp
IGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmhhc1JhcmVEYXRhKCkgJiYgcmFyZURhdGEoKS5w
YWludENvbnRhaW5tZW50QXBwbGllcygpOyB9CiAKKyNpZiBFTkFCTEUoTEFZRVJfQkFTRURfU1ZH
X0VOR0lORSkKKyAgICBib29sIGhhc1NWR1RyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0
ZmllbGRzLmhhc1JhcmVEYXRhKCkgJiYgcmFyZURhdGEoKS5oYXNTVkdUcmFuc2Zvcm0oKTsgfQor
I2Vsc2UKKyAgICBib29sIGhhc1NWR1RyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CisjZW5kaWYKKwogICAgIGJvb2wgaXNFeGNsdWRlZEZyb21Ob3JtYWxMYXlvdXQoKSBjb25zdCB7
IHJldHVybiBtX2JpdGZpZWxkcy5pc0V4Y2x1ZGVkRnJvbU5vcm1hbExheW91dCgpOyB9CiAgICAg
dm9pZCBzZXRJc0V4Y2x1ZGVkRnJvbU5vcm1hbExheW91dChib29sIGV4Y2x1ZGVkKSB7IG1fYml0
ZmllbGRzLnNldElzRXhjbHVkZWRGcm9tTm9ybWFsTGF5b3V0KGV4Y2x1ZGVkKTsgfQogICAgIGJv
b2wgaXNFeGNsdWRlZEFuZFBsYWNlZEluQm9yZGVyKCkgY29uc3QgeyByZXR1cm4gaXNFeGNsdWRl
ZEZyb21Ob3JtYWxMYXlvdXQoKSAmJiBpc0xlZ2VuZCgpOyB9CkBAIC00NTAsNyArNDU2LDcgQEAg
cHVibGljOgogICAgIGJvb2wgaGFzUG90ZW50aWFsbHlTY3JvbGxhYmxlT3ZlcmZsb3coKSBjb25z
dDsKIAogICAgIGJvb2wgaGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCkgY29uc3QgeyByZXR1
cm4gbV9iaXRmaWVsZHMuaGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCk7IH0gLy8gVHJhbnNm
b3JtLCBwZXJzcGVjdGl2ZSBvciB0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkLgotICAgIGJv
b2wgaGFzVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gaGFzVHJhbnNmb3JtUmVsYXRlZFByb3Bl
cnR5KCkgJiYgKHN0eWxlKCkuaGFzVHJhbnNmb3JtKCkgfHwgc3R5bGUoKS50cmFuc2xhdGUoKSB8
fCBzdHlsZSgpLnNjYWxlKCkgfHwgc3R5bGUoKS5yb3RhdGUoKSk7IH0KKyAgICBib29sIGhhc1Ry
YW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIGhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgpICYm
IChzdHlsZSgpLmhhc1RyYW5zZm9ybSgpIHx8IHN0eWxlKCkudHJhbnNsYXRlKCkgfHwgc3R5bGUo
KS5zY2FsZSgpIHx8IHN0eWxlKCkucm90YXRlKCkgfHwgaGFzU1ZHVHJhbnNmb3JtKCkpOyB9CiAg
ICAgYm9vbCBoYXNUcmFuc2Zvcm1PclBlc3BlY3RpdmUoKSBjb25zdCB7IHJldHVybiBoYXNUcmFu
c2Zvcm1SZWxhdGVkUHJvcGVydHkoKSAmJiAoaGFzVHJhbnNmb3JtKCkgfHwgc3R5bGUoKS5oYXNQ
ZXJzcGVjdGl2ZSgpKTsgfQogCiAgICAgaW5saW5lIGJvb2wgcHJlc2VydmVzTmV3bGluZSgpIGNv
bnN0OwpAQCAtNTE1LDYgKzUyMSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElzUmVuZGVyRnJh
Z21lbnRlZEZsb3coYm9vbCA9IHRydWUpOwogICAgIHZvaWQgc2V0SGFzT3V0bGluZUF1dG9BbmNl
c3Rvcihib29sID0gdHJ1ZSk7CiAgICAgdm9pZCBzZXRQYWludENvbnRhaW5tZW50QXBwbGllcyhi
b29sID0gdHJ1ZSk7CisjaWYgRU5BQkxFKExBWUVSX0JBU0VEX1NWR19FTkdJTkUpCisgICAgdm9p
ZCBzZXRIYXNTVkdUcmFuc2Zvcm0oYm9vbCA9IHRydWUpOworI2VuZGlmCiAKICAgICAvLyBIb29r
IHNvIHRoYXQgUmVuZGVyVGV4dENvbnRyb2wgY2FuIHJldHVybiB0aGUgbGluZSBoZWlnaHQgb2Yg
aXRzIGlubmVyIHJlbmRlcmVyLgogICAgIC8vIEZvciBvdGhlciByZW5kZXJlcnMsIHRoZSB2YWx1
ZSBpcyB0aGUgc2FtZSBhcyBsaW5lSGVpZ2h0KGZhbHNlKS4KQEAgLTk0NCw2ICs5NTMsOSBAQCBw
cml2YXRlOgogICAgICAgICBBRERfQk9PTEVBTl9CSVRGSUVMRChpc1JlbmRlckZyYWdtZW50ZWRG
bG93LCBJc1JlbmRlckZyYWdtZW50ZWRGbG93KTsKICAgICAgICAgQUREX0JPT0xFQU5fQklURklF
TEQoaGFzT3V0bGluZUF1dG9BbmNlc3RvciwgSGFzT3V0bGluZUF1dG9BbmNlc3Rvcik7CiAgICAg
ICAgIEFERF9CT09MRUFOX0JJVEZJRUxEKHBhaW50Q29udGFpbm1lbnRBcHBsaWVzLCBQYWludENv
bnRhaW5tZW50QXBwbGllcyk7CisjaWYgRU5BQkxFKExBWUVSX0JBU0VEX1NWR19FTkdJTkUpCisg
ICAgICAgIEFERF9CT09MRUFOX0JJVEZJRUxEKGhhc1NWR1RyYW5zZm9ybSwgSGFzU1ZHVHJhbnNm
b3JtKTsKKyNlbmRpZgogCiAgICAgICAgIC8vIEZyb20gUmVuZGVyRWxlbWVudAogICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8UmVmZXJlbmNlZFNWR1Jlc291cmNlcz4gcmVmZXJlbmNlZFNWR1Jlc291
cmNlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Q29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29u
dGFpbmVyLmNwcAppbmRleCBiZGNjNTgxNWI0NjYyN2YwZmYxYzVhMTQ4MDI0MGZmNjU3Yjk0N2Vm
Li4zNDVkNjM2MTM0ZDVmZGJjZjkyNjdiZmNkYWNjNGNmNjJjYjNjNmM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCkBAIC01
Miw2ICs1MiwzNiBAQCBSZW5kZXJTVkdDb250YWluZXI6OlJlbmRlclNWR0NvbnRhaW5lcihTVkdF
bGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogCiBSZW5kZXJTVkdDb250YWlu
ZXI6On5SZW5kZXJTVkdDb250YWluZXIoKSA9IGRlZmF1bHQ7CiAKKy8vIEhlbHBlciBjbGFzcywg
bW92ZSB0byBpdHMgb3duIGZpbGUgb25jZSB1dGlsaXplZCBpbiBtb3JlIHRoYW4gb25lIHBsYWNl
LgorY2xhc3MgU1ZHTGF5ZXJUcmFuc2Zvcm1VcGRhdGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShTVkdMYXllclRyYW5zZm9ybVVwZGF0ZXIpOworcHVibGljOgorICAgIFNWR0xheWVyVHJh
bnNmb3JtVXBkYXRlcihSZW5kZXJMYXllck1vZGVsT2JqZWN0JiByZW5kZXJlcikKKyAgICAgICAg
OiBtX3JlbmRlcmVyKHJlbmRlcmVyKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3JlbmRlcmVyLmhh
c0xheWVyKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV90cmFuc2Zvcm1SZWZl
cmVuY2VCb3ggPSBtX3JlbmRlcmVyLnRyYW5zZm9ybVJlZmVyZW5jZUJveFJlY3QoKTsKKyAgICAg
ICAgbV9yZW5kZXJlci51cGRhdGVMYXllclRyYW5zZm9ybSgpOworICAgIH0KKworCisgICAgflNW
R0xheWVyVHJhbnNmb3JtVXBkYXRlcigpCisgICAgeworICAgICAgICBpZiAoIW1fcmVuZGVyZXIu
aGFzTGF5ZXIoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKG1fcmVuZGVyZXIu
dHJhbnNmb3JtUmVmZXJlbmNlQm94UmVjdCgpID09IG1fdHJhbnNmb3JtUmVmZXJlbmNlQm94KQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fcmVuZGVyZXIudXBkYXRlTGF5ZXJUcmFu
c2Zvcm0oKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCYg
bV9yZW5kZXJlcjsKKyAgICBGbG9hdFJlY3QgbV90cmFuc2Zvcm1SZWZlcmVuY2VCb3g7Cit9Owor
CiB2b2lkIFJlbmRlclNWR0NvbnRhaW5lcjo6bGF5b3V0KCkKIHsKICAgICBTdGFja1N0YXRzOjpM
YXlvdXRDaGVja1BvaW50IGxheW91dENoZWNrUG9pbnQ7CkBAIC02NCwxMyArOTQsMTAgQEAgdm9p
ZCBSZW5kZXJTVkdDb250YWluZXI6OmxheW91dCgpCiAgICAgLy8gVXBkYXRlIGxheWVyIHRyYW5z
Zm9ybSBiZWZvcmUgbGF5aW5nIG91dCBjaGlsZHJlbiAoU1ZHIG5lZWRzIGFjY2VzcyB0byB0aGUg
dHJhbnNmb3JtIG1hdHJpY2VzIGR1cmluZyBsYXlvdXQgZm9yIG9uLXNjcmVlbiB0ZXh0IGZvbnQt
c2l6ZSBjYWxjdWxhdGlvbnMpLgogICAgIC8vIEV2ZW50dWFsbHkgcmUtdXBkYXRlIGlmIHRoZSB0
cmFuc2Zvcm0gcmVmZXJlbmNlIGJveCwgcmVsZXZhbnQgZm9yIHRyYW5zZm9ybS1vcmlnaW4sIGhh
cyBjaGFuZ2VkIGR1cmluZyBsYXlvdXQuCiAgICAgewotICAgICAgICAvLyBGSVhNRTogW0xCU0Vd
IFVwc3RyZWFtIFNWR0xheWVyVHJhbnNmb3JtVXBkYXRlcgotICAgICAgICAvLyBTVkdMYXllclRy
YW5zZm9ybVVwZGF0ZXIgdHJhbnNmb3JtVXBkYXRlcigqdGhpcyk7CisgICAgICAgIFNWR0xheWVy
VHJhbnNmb3JtVXBkYXRlciB1cGRhdGVUcmFuc2Zvcm0oKnRoaXMpOwogICAgICAgICBsYXlvdXRD
aGlsZHJlbigpOwogICAgIH0KIAotICAgIHVwZGF0ZUxheWVySW5mb3JtYXRpb24oKTsKLQogICAg
IC8vIEludmFsaWRhdGUgYWxsIHJlc291cmNlcyBvZiB0aGlzIGNsaWVudCBpZiBvdXIgbGF5b3V0
IGNoYW5nZWQuCiAgICAgaWYgKGV2ZXJIYWRMYXlvdXQoKSAmJiBuZWVkc0xheW91dCgpKQogICAg
ICAgICBTVkdSZXNvdXJjZXNDYWNoZTo6Y2xpZW50TGF5b3V0Q2hhbmdlZCgqdGhpcyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuaAppbmRl
eCAwYWQwYjgzNDY1Zjk5YzMxZTk1YWEzYzc5NzU5YWUzNzc4ZmIzMDE2Li5lMzQ4MmFiOWYwM2Ex
NWY5MzFhMjk5NjlkMWY2NTQwNjYwNWY1N2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgKQEAgLTU1LDcgKzU1LDYgQEAgcHJvdGVj
dGVkOgogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXRDaGlsZHJlbigpOwogICAgIGJvb2wgbm9kZUF0
UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVz
dExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11
bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUxheWVySW5mb3JtYXRpb24oKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRl
Vmlld3BvcnQoKTsKICAgICB2aXJ0dWFsIGJvb2wgcG9pbnRJc0luc2lkZVZpZXdwb3J0Q2xpcChj
b25zdCBGbG9hdFBvaW50JikgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCmluZGV4IGIxOTI5
NGI2NzU4YzlkMTdiNmM4NTA5YjIxYWQxNzE0YzE4OTM0ZjguLmM5Njk1ZTZiNmE0M2Y5Y2Y0ZmYw
Mzk1YWMzNjFhNDMyNjFkYjhlMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5j
bHVkZSAiUmVuZGVyR2VvbWV0cnlNYXAuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2lu
Y2x1ZGUgIlJlbmRlckxheWVyTW9kZWxPYmplY3QuaCIKKyNpbmNsdWRlICJSZW5kZXJTVkdNb2Rl
bE9iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZS5oIgogI2luY2x1
ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50SW5saW5lcy5oIgpAQCAtNTks
MTUgKzYwLDEzIEBAIFJlbmRlclNWR01vZGVsT2JqZWN0OjpSZW5kZXJTVkdNb2RlbE9iamVjdChT
VkdFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0CiB2b2lkIFJlbmRlclNWR01vZGVs
T2JqZWN0Ojp1cGRhdGVGcm9tU3R5bGUoKQogewogICAgIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6
OnVwZGF0ZUZyb21TdHlsZSgpOwotICAgIHNldEhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eShz
dHlsZSgpLmhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgpKTsKIAotICAgIEFmZmluZVRyYW5z
Zm9ybSB0cmFuc2Zvcm07Ci0gICAgaWYgKGlzPFNWR0dyYXBoaWNzRWxlbWVudD4obm9kZUZvck5v
bkFub255bW91cygpKSkKLSAgICAgICAgdHJhbnNmb3JtID0gZG93bmNhc3Q8U1ZHR3JhcGhpY3NF
bGVtZW50Pihub2RlRm9yTm9uQW5vbnltb3VzKCkpLmFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0oKTsK
KyAgICBib29sIGhhc1NWR1RyYW5zZm9ybSA9IGZhbHNlOworICAgIGlmIChpczxTVkdHcmFwaGlj
c0VsZW1lbnQ+KGVsZW1lbnQoKSkpCisgICAgICAgIGhhc1NWR1RyYW5zZm9ybSA9ICFkb3duY2Fz
dDxTVkdHcmFwaGljc0VsZW1lbnQ+KGVsZW1lbnQoKSkuYW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSgp
LmlzSWRlbnRpdHkoKTsKIAotICAgIC8vIEZJWE1FOiBbTEJTRV0gVXBzdHJlYW0gUmVuZGVyT2Jq
ZWN0IGNoYW5nZXMKLSAgICAvLyBpZiAoIXRyYW5zZm9ybS5pc0lkZW50aXR5KCkpCi0gICAgLy8g
ICAgIHNldEhhc1NWR1RyYW5zZm9ybSgpOworICAgIHNldEhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9w
ZXJ0eShzdHlsZSgpLmhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgpIHx8IGhhc1NWR1RyYW5z
Zm9ybSk7CisgICAgc2V0SGFzU1ZHVHJhbnNmb3JtKGhhc1NWR1RyYW5zZm9ybSk7CiB9CiAKIEZs
b2F0UmVjdCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6Ym9yZGVyQm94UmVjdEluRnJhZ21lbnRFcXVp
dmFsZW50KFJlbmRlckZyYWdtZW50Q29udGFpbmVyKiwgUmVuZGVyQm94OjpSZW5kZXJCb3hGcmFn
bWVudEluZm9GbGFncykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jvb3QuY3BwCmluZGV4IDcxNmVhODMwNjg0NTkzM2NiOGYwNDdhZThhOGQ5ZDI4NTAx
YzhkNzUuLjgwYWQ4MDc3MDBmYTUzZTAxMmQwZjQ5MTE5MTljYmFiODQ0Y2VkZTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcApAQCAtMzk2LDgg
KzM5Niw3IEBAIHZvaWQgUmVuZGVyU1ZHUm9vdDo6dXBkYXRlRnJvbVN0eWxlKCkKIHsKICAgICBS
ZW5kZXJSZXBsYWNlZDo6dXBkYXRlRnJvbVN0eWxlKCk7CiAKLSAgICAvLyBGSVhNRTogW0xCU0Vd
IFVwc3RyZWFtIFJlbmRlck9iamVjdCBjaGFuZ2VzCi0gICAgLy8gc2V0SGFzU1ZHVHJhbnNmb3Jt
KCk7CisgICAgc2V0SGFzU1ZHVHJhbnNmb3JtKCk7CiAKICAgICBpZiAoc2hvdWxkQXBwbHlWaWV3
cG9ydENsaXAoKSkKICAgICAgICAgc2V0SGFzTm9uVmlzaWJsZU92ZXJmbG93KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCmluZGV4IDMyNTU3
MjQxOTBiNzIwYWZkMzY2ODU1ODYyMDE2MGYwZjM4MTAxOWUuLmNhYWY2YjM1YjBlMDUyMDAzZGY5
MjAxZWVjMDAwNGQ1NDM1MWY0MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHU2hhcGUuY3BwCkBAIC0xNTQsOCArMTU0LDcgQEAgdm9pZCBSZW5kZXJTVkdT
aGFwZTo6bGF5b3V0KCkKICAgICAgICAgc2V0TGF5b3V0UmVjdChlbmNsb3NpbmdMYXlvdXRSZWN0
KG1fZmlsbEJvdW5kaW5nQm94KSk7CiAgICAgfQogCi0gICAgLy8gRklYTUU6IFtMQlNFXSBVcHN0
cmVhbSBTVkdMYXllclRyYW5zZm9ybVVwZGF0ZXIKLSAgICAvLyBTVkdSZW5kZXJTdXBwb3J0Ojp1
cGRhdGVMYXllclRyYW5zZm9ybSgqdGhpcyk7CisgICAgdXBkYXRlTGF5ZXJUcmFuc2Zvcm0oKTsK
IAogICAgIC8vIEludmFsaWRhdGUgYWxsIHJlc291cmNlcyBvZiB0aGlzIGNsaWVudCBpZiBvdXIg
bGF5b3V0IGNoYW5nZWQuCiAgICAgaWYgKGV2ZXJIYWRMYXlvdXQoKSAmJiBzZWxmTmVlZHNMYXlv
dXQoKSkKQEAgLTUzNiw4ICs1MzUsNyBAQCB2b2lkIFJlbmRlclNWR1NoYXBlOjpzdHlsZVdpbGxD
aGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlJiBuZQogCiB2b2lk
IFJlbmRlclNWR1NoYXBlOjphcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJh
bnNmb3JtLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRp
bmdCb3gsIE9wdGlvblNldDxSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPiBv
cHRpb25zKSBjb25zdAogewotICAgIC8vIEZJWE1FOiBbTEJTRV0gVXBzdHJlYW0gQ1NTL1NWRyB0
cmFuc2Zvcm0gc3VwcG9ydAotICAgIHN0eWxlLmFwcGx5VHJhbnNmb3JtKHRyYW5zZm9ybSwgYm91
bmRpbmdCb3gsIG9wdGlvbnMpOworICAgIGFwcGx5U1ZHVHJhbnNmb3JtKHRyYW5zZm9ybSwgZ3Jh
cGhpY3NFbGVtZW50KCksIHN0eWxlLCBib3VuZGluZ0JveCwgb3B0aW9ucyk7CiB9CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaAppbmRleCAxOWM2
M2NhZjI5MTQxYmY5YjgwZWU0MDQwZTk5ZGM1NDY0NWQyODE2Li5iMzljZDg5YzQ3NmMyNmI3ZjA5
ZjA3NDhlYzVmNmE5ZGZkM2ZhODNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1NoYXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdTaGFwZS5oCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKIAogICAgIEZsb2F0
UmVjdCBjb21wdXRlTWFya2VyQm91bmRpbmdCb3goY29uc3QgU1ZHQm91bmRpbmdCb3hDb21wdXRh
dGlvbjo6RGVjb3JhdGlvbk9wdGlvbnMmKSBjb25zdDsKIAotICAgIHZvaWQgYXBwbHlUcmFuc2Zv
cm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZsb2F0
UmVjdCYgYm91bmRpbmdCb3gsIE9wdGlvblNldDxSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0
aW9uT3B0aW9uPiA9IFJlbmRlclN0eWxlOjphbGxUcmFuc2Zvcm1PcGVyYXRpb25zKSBjb25zdCBv
dmVycmlkZTsKKyAgICB2b2lkIGFwcGx5VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4Jiwg
Y29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBPcHRpb25T
ZXQ8UmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbj4gPSBSZW5kZXJTdHlsZTo6
YWxsVHJhbnNmb3JtT3BlcmF0aW9ucykgY29uc3QgZmluYWw7CiAKIHByb3RlY3RlZDoKICAgICB2
b2lkIGVsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIu
Y3BwCmluZGV4IDkwMzEyMmJlOTdjNzUxYTNkNTJhOTRlNzdmOGNhNzVmNjE0NGMxOTUuLmIwMGZi
NTBhYTllMDAwMTc5N2ZjOTU1MDg1ODZhNmIyMTQwNzdmNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxl
Q29udGFpbmVyLmNwcApAQCAtOTcsMTUgKzk3LDEzIEBAIHZvaWQgUmVuZGVyU1ZHVHJhbnNmb3Jt
YWJsZUNvbnRhaW5lcjo6dXBkYXRlRnJvbVN0eWxlKCkKIHsKICAgICBSZW5kZXJTVkdDb250YWlu
ZXI6OnVwZGF0ZUZyb21TdHlsZSgpOwogCi0gICAgLy8gRklYTUU6IFtMQlNFXSBVcHN0cmVhbSBD
U1MvU1ZHIHRyYW5zZm9ybSBzdXBwb3J0Ci0gICAgLy8gaWYgKGFzc29jaWF0ZWRVc2VFbGVtZW50
KGdyYXBoaWNzRWxlbWVudCgpKSkKLSAgICAvLyAgICBzZXRIYXNTVkdUcmFuc2Zvcm0oKTsKKyAg
ICBpZiAoYXNzb2NpYXRlZFVzZUVsZW1lbnQoZ3JhcGhpY3NFbGVtZW50KCkpKQorICAgICAgICBz
ZXRIYXNTVkdUcmFuc2Zvcm0oKTsKIH0KIAogdm9pZCBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29u
dGFpbmVyOjphcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gsIE9w
dGlvblNldDxSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPiBvcHRpb25zKSBj
b25zdAogewotICAgIC8vIEZJWE1FOiBbTEJTRV0gVXBzdHJlYW0gQ1NTL1NWRyB0cmFuc2Zvcm0g
c3VwcG9ydAotICAgIHN0eWxlLmFwcGx5VHJhbnNmb3JtKHRyYW5zZm9ybSwgYm91bmRpbmdCb3gs
IG9wdGlvbnMpOworICAgIGFwcGx5U1ZHVHJhbnNmb3JtKHRyYW5zZm9ybSwgZ3JhcGhpY3NFbGVt
ZW50KCksIHN0eWxlLCBib3VuZGluZ0JveCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgUmVuZGVyU1ZH
VHJhbnNmb3JtYWJsZUNvbnRhaW5lcjo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBk
aWZmLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdH
cmFwaGljc0VsZW1lbnQuY3BwCmluZGV4IDQ0YzVhNmU5YjlhM2Y0NDIyYWIyYjY4MDAzZTA2Yzkx
MDc3ZDZjZDcuLmUwNzBjN2E3MzA2MjZhZDVjMjA3ZGVjNzIxODAzMzNlMzUxZWM4MzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCkBAIC03Myw2ICs3MywxNSBA
QCBBZmZpbmVUcmFuc2Zvcm0gU1ZHR3JhcGhpY3NFbGVtZW50OjpnZXRTY3JlZW5DVE0oU3R5bGVV
cGRhdGVTdHJhdGVneSBzdHlsZVVwZGF0ZQogCiBBZmZpbmVUcmFuc2Zvcm0gU1ZHR3JhcGhpY3NF
bGVtZW50OjphbmltYXRlZExvY2FsVHJhbnNmb3JtKCkgY29uc3QKIHsKKyNpZiBFTkFCTEUoTEFZ
RVJfQkFTRURfU1ZHX0VOR0lORSkKKyAgICAvLyBMQlNFIGhhbmRsZXMgdHJhbnNmb3JtcyB2aWEg
UmVuZGVyTGF5ZXIsIG5vIG5lZWQgdG8gaGFuZGxlIENTUyB0cmFuc2Zvcm1zIGhlcmUuCisgICAg
aWYgKGRvY3VtZW50KCkuc2V0dGluZ3MoKS5sYXllckJhc2VkU1ZHRW5naW5lRW5hYmxlZCgpKSB7
CisgICAgICAgIGlmIChtX3N1cHBsZW1lbnRhbFRyYW5zZm9ybSkKKyAgICAgICAgICAgIHJldHVy
biAqbV9zdXBwbGVtZW50YWxUcmFuc2Zvcm0gKiB0cmFuc2Zvcm0oKS5jb25jYXRlbmF0ZSgpOwor
ICAgICAgICByZXR1cm4gdHJhbnNmb3JtKCkuY29uY2F0ZW5hdGUoKTsKKyAgICB9CisjZW5kaWYK
KwogICAgIEFmZmluZVRyYW5zZm9ybSBtYXRyaXg7CiAKICAgICBhdXRvKiBzdHlsZSA9IHJlbmRl
cmVyKCkgPyAmcmVuZGVyZXIoKS0+c3R5bGUoKSA6IG51bGxwdHI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456979</attachid>
            <date>2022-04-07 15:59:43 -0700</date>
            <delta_ts>2022-04-11 04:30:06 -0700</delta_ts>
            <desc>Patch, v10</desc>
            <filename>bug-237711-20220407155941.patch</filename>
            <type>text/plain</type>
            <size>26275</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNTMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmQwYWU2MWQxODg4ZjJi
Yjk2MGYwMmMxMDQ1OGQ1MTBlYzQwYzljYy4uMTJkY2ZlY2MyNWQ3YmYxMjlmNTM2ZDA5NzVkZTY4
MmI5MzY3ZjFmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDIyLTA0LTA3ICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtMQlNF
XSBBY3RpdmF0ZSBTVkcgdHJhbnNmb3JtIHN1cHBvcnQgdGhyb3VnaCBsYXllcnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzcxMQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFjdGl2YXRlIHRyYW5zZm9y
bXMgZm9yIFNWRyBsYXllcnMuCisKKyAgICAgICAgVXNlIHRoZSBmbGFnIHRvIGtlZXAgdHJhY2sg
b2YgdGhlIHByZXNlbmNlIG9mIFNWRyB0cmFuc2Zvcm1hdGlvbnMKKyAgICAgICAgb24gYSByZW5k
ZXJlci4gQ1NTL0hUTUwgcmVuZGVyZXJzIGNhbiByZWx5IG9ubHkgb24gdGhlIFJlbmRlclN0eWxl
CisgICAgICAgIHRvIGRldGVybWluZSBpZiB0cmFuc2Zvcm1hdGlvbnMgYXJlIGFwcGxpZWQsIHdo
ZXJlYXMgU1ZHIGhhcyB0bworICAgICAgICBjb25zdWx0IGFkZGl0aW9uYWwgc291cmNlcywgc3Vj
aCBhcyB0aGUgU1ZHICd0cmFuc2Zvcm0nIGF0dHJpYnV0ZS4KKworICAgICAgICBBIFNWRyByZW5k
ZXJlciB3aXRoIHRoZSAnSGFzU1ZHVHJhbnNmb3JtJyBmbGFnIHNldCBzaG91bGQgYmVoYXZlCisg
ICAgICAgIGxpa2UgYW55IFNWRy9IVE1MIHJlbmRlcmVyIHRoYXQgaGFzIENTUyB0cmFuc2Zvcm1h
dGlvbnMgYXBwbGllZC4KKworICAgICAgICBXaXRoIHRoaXMgcGF0Y2ggYXBwbGllZCBTVkcgdHJh
bnNmb3JtIGFuZCBDU1MgdHJhbnNmb3JtcyBjYW4KKyAgICAgICAgYmUgYXBwbGllZCB0byA8Zz4g
LyA8cmVjdD4gZWxlbWVudHMgaW4gTEJTRS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5n
IHRlc3RzLCBubyBjaGFuZ2UgaW4gYmVoYXZpb3VyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bXVsdGlwbHlBZmZpbmVUcmFuc2Zvcm0pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXgu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlckJveDo6dXBkYXRlTGF5ZXJUcmFuc2Zvcm0pOiBEZWxldGVkLgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y2FuQ3JlYXRlU3RhY2tpbmdDb250ZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyOjpjdXJyZW50VHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllck1vZGVsT2JqZWN0Ojp1cGRhdGVMYXllclRyYW5zZm9ybSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllck1vZGVsT2JqZWN0OjphcHBseVNWR1RyYW5zZm9ybSBjb25z
dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuaDoKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ck9iamVjdDo6c2V0SGFzU1ZHVHJhbnNmb3JtKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
T2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Omhhc1NWR1RyYW5zZm9y
bSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Omhhc1RyYW5zZm9ybSBj
b25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHTGF5ZXJUcmFuc2Zvcm1VcGRhdGVyOjpTVkdMYXllclRyYW5z
Zm9ybVVwZGF0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGF5ZXJUcmFuc2Zvcm1VcGRhdGVy
Ojp+U1ZHTGF5ZXJUcmFuc2Zvcm1VcGRhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNW
R0NvbnRhaW5lcjo6bGF5b3V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Nv
bnRhaW5lci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHQ29udGFpbmVyOjp1cGRhdGVM
YXllckluZm9ybWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR01vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR01vZGVsT2Jq
ZWN0Ojp1cGRhdGVGcm9tU3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Um9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSb290Ojp1cGRhdGVGcm9tU3R5
bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHU2hhcGU6OmxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTVkdTaGFwZTo6YXBwbHlUcmFuc2Zvcm0gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHU2hhcGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1RyYW5zZm9ybWFibGVDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZH
VHJhbnNmb3JtYWJsZUNvbnRhaW5lcjo6dXBkYXRlRnJvbVN0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXI6OmFwcGx5VHJhbnNmb3JtIGNvbnN0
KToKKyAgICAgICAgKiBzdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0dyYXBoaWNzRWxlbWVudDo6YW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSBjb25zdCk6CisK
IDIwMjItMDQtMDcgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQGlnYWxpYS5jb20+
CiAKICAgICAgICAgVW5pZnkgcmVmZXJlbmNlIGJveCAvIENUTSBjb21wdXRhdGlvbiBpbiBSZW5k
ZXJMYXllcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJh
bnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcAppbmRleCBmMjI2
ZDkzMzFhNGU0MzFmODY2ZTk1N2MxNTg5YmRlZDAzNjEzYmNhLi4yODFjOTVkY2E2ZGVjZjc3Nzdh
YTczNWY2MDlmZWJjODgxMDM4YjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0
cml4LmNwcApAQCAtMTUzMyw2ICsxNTMzLDE3IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4JiBUcmFu
c2Zvcm1hdGlvbk1hdHJpeDo6bXVsdGlwbHkoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmCiAg
ICAgcmV0dXJuICp0aGlzOwogfQogCitUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgVHJhbnNmb3JtYXRp
b25NYXRyaXg6Om11bHRpcGx5QWZmaW5lVHJhbnNmb3JtKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
bWF0cml4KQoreworICAgIGlmIChtYXRyaXguaXNJZGVudGl0eSgpKQorICAgICAgICByZXR1cm4g
KnRoaXM7CisKKyAgICBpZiAobWF0cml4LmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uKCkpCisgICAg
ICAgIHJldHVybiB0cmFuc2xhdGUobWF0cml4LmUoKSwgbWF0cml4LmYoKSk7CisKKyAgICByZXR1
cm4gbXVsdGlwbHkobWF0cml4LnRvVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7Cit9CisKIHZvaWQg
VHJhbnNmb3JtYXRpb25NYXRyaXg6Om11bHRWZWNNYXRyaXgoZG91YmxlIHgsIGRvdWJsZSB5LCBk
b3VibGUmIHJlc3VsdFgsIGRvdWJsZSYgcmVzdWx0WSkgY29uc3QKIHsKICAgICByZXN1bHRYID0g
bV9tYXRyaXhbM11bMF0gKyB4ICogbV9tYXRyaXhbMF1bMF0gKyB5ICogbV9tYXRyaXhbMV1bMF07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1z
L1RyYW5zZm9ybWF0aW9uTWF0cml4LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKaW5kZXggYzk1MTE3N2EzMTBiNzYw
NGMyMTU5Y2Q2ZTI0OTdmZDhmMjU3YjgzYi4uODU1ZDJlNzJhMTVhN2M4NjM3Nzg2NTZlNGYzODZl
YTlhOGMyMjYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaApAQCAtMjQ5
LDYgKzI0OSw4IEBAIHB1YmxpYzoKIAogICAgIC8vIHRoaXMgPSBtYXQgKiB0aGlzLgogICAgIFdF
QkNPUkVfRVhQT1JUIFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtdWx0aXBseShjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYpOworICAgIC8vIElkZW50aWNhbCB0byBtdWx0aXBseShUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYpLCBidXQgc2F2aW5nIGEgQWZmaW5lVHJhbnNmb3JtIC0+IFRyYW5zZm9ybWF0
aW9uTWF0cml4IHJvdW5kdHJpcCBmb3IgaWRlbnRpdHkgb3IgdHJhbnNsYXRpb24gbWF0cmljZXMu
CisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG11bHRpcGx5QWZmaW5lVHJhbnNmb3JtKGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIHNjYWxlKGRvdWJsZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIHNjYWxlTm9uVW5pZm9ybShkb3VibGUgc3gsIGRvdWJsZSBzeSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCmluZGV4IDUyYTZkN2FkZWZkZWViZDg4ZDQ1OWQxNjJl
YzU4ZWZjYWJiYzhmOGQuLmQ1MWRlNjZlYjQzY2Q1MmJhNzk0ZTg5NzE4MzcyN2IzYjUwNGRiYWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC02NjcsMTMgKzY2Nyw2
IEBAIHZvaWQgUmVuZGVyQm94OjphYnNvbHV0ZVF1YWRzKFZlY3RvcjxGbG9hdFF1YWQ+JiBxdWFk
cywgYm9vbCogd2FzRml4ZWQpIGNvbnN0CiAgICAgcXVhZHMuYXBwZW5kKGxvY2FsVG9BYnNvbHV0
ZVF1YWQobG9jYWxSZWN0LCBVc2VUcmFuc2Zvcm1zLCB3YXNGaXhlZCkpOwogfQogCi12b2lkIFJl
bmRlckJveDo6dXBkYXRlTGF5ZXJUcmFuc2Zvcm0oKQotewotICAgIC8vIFRyYW5zZm9ybS1vcmln
aW4gZGVwZW5kcyBvbiBib3ggc2l6ZSwgc28gd2UgbmVlZCB0byB1cGRhdGUgdGhlIGxheWVyIHRy
YW5zZm9ybSBhZnRlciBsYXlvdXQuCi0gICAgaWYgKGhhc0xheWVyKCkpCi0gICAgICAgIGxheWVy
KCktPnVwZGF0ZVRyYW5zZm9ybSgpOwotfQotCiB2b2lkIFJlbmRlckJveDo6YXBwbHlUcmFuc2Zv
cm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmIHQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29u
c3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCwgT3B0aW9uU2V0PFJlbmRlclN0eWxlOjpUcmFuc2Zv
cm1PcGVyYXRpb25PcHRpb24+IG9wdGlvbnMpIGNvbnN0CiB7CiAgICAgc3R5bGUuYXBwbHlUcmFu
c2Zvcm0odCwgYm91bmRpbmdCb3gsIG9wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5oCmluZGV4IDFhZmY3ZTAxN2NhMzAxYjQ2YTUzODBkMDYxMzBmZjNlZTE1N2Q1MmEuLmIx
ODMyYzA4NmI0M2ZjYWRmZDY3YWRmMTk4MWNiYjMyOTc4NGJlNzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94LmgKQEAgLTIxOCw3ICsyMTgsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBh
ZGRPdmVyZmxvd0Zyb21DaGlsZChjb25zdCBSZW5kZXJCb3gqIGNoaWxkKSB7IGFkZE92ZXJmbG93
RnJvbUNoaWxkKGNoaWxkLCBjaGlsZC0+bG9jYXRpb25PZmZzZXQoKSk7IH0KICAgICB2b2lkIGFk
ZE92ZXJmbG93RnJvbUNoaWxkKGNvbnN0IFJlbmRlckJveCogY2hpbGQsIGNvbnN0IExheW91dFNp
emUmIGRlbHRhKTsKIAotICAgIHZvaWQgdXBkYXRlTGF5ZXJUcmFuc2Zvcm0oKTsKICAgICB2b2lk
IGFwcGx5VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgUmVuZGVyU3R5bGUm
LCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBPcHRpb25TZXQ8UmVuZGVyU3R5bGU6OlRy
YW5zZm9ybU9wZXJhdGlvbk9wdGlvbj4gPSBSZW5kZXJTdHlsZTo6YWxsVHJhbnNmb3JtT3BlcmF0
aW9ucykgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBMYXlvdXRTaXplIGNvbnRlbnRTaXplKCkgY29u
c3QgeyByZXR1cm4geyBjb250ZW50V2lkdGgoKSwgY29udGVudEhlaWdodCgpIH07IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDFmNTU2ZmI2ZWEzYzgzZDk0
ZGYwNWZhOGM0ODg5ZDM4MWVmZjQzMGMuLmVkZWI0MGVlNzc5OGQzY2Q2MTAxMGEyMTBjYmUxMDBj
ZTI3NTc4NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAt
NTUyLDYgKzU1Miw5IEBAIHN0YXRpYyBib29sIGNhbkNyZWF0ZVN0YWNraW5nQ29udGV4dChjb25z
dCBSZW5kZXJMYXllciYgbGF5ZXIpCiB7CiAgICAgYXV0byYgcmVuZGVyZXIgPSBsYXllci5yZW5k
ZXJlcigpOwogICAgIHJldHVybiByZW5kZXJlci5oYXNUcmFuc2Zvcm1SZWxhdGVkUHJvcGVydHko
KQorI2lmIEVOQUJMRShMQVlFUl9CQVNFRF9TVkdfRU5HSU5FKQorICAgICAgICB8fCByZW5kZXJl
ci5oYXNTVkdUcmFuc2Zvcm0oKQorI2VuZGlmCiAgICAgICAgIHx8IHJlbmRlcmVyLmhhc0NsaXBQ
YXRoKCkKICAgICAgICAgfHwgcmVuZGVyZXIuaGFzRmlsdGVyKCkKICAgICAgICAgfHwgcmVuZGVy
ZXIuaGFzTWFzaygpCkBAIC0xMzU3LDE5ICsxMzYwLDEzIEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4
IFJlbmRlckxheWVyOjpjdXJyZW50VHJhbnNmb3JtKE9wdGlvblNldDxSZW5kZXJTdHlsZTo6VHJh
bnNmCiAgICAgaWYgKCFtX3RyYW5zZm9ybSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIC8v
IEZJWE1FOiBbTEJTRV0gVXBzdHJlYW0gdHJhbnNmb3JtIHN1cHBvcnQgZm9yIFJlbmRlclNWR01v
ZGVsT2JqZWN0IGRlcml2ZWQgcmVuZGVyZXJzCi0gICAgaWYgKCFpczxSZW5kZXJCb3g+KHJlbmRl
cmVyKCkpKQotICAgICAgICByZXR1cm4geyB9OwotCi0gICAgYXV0byYgcmVuZGVyQm94ID0gZG93
bmNhc3Q8UmVuZGVyQm94PihyZW5kZXJlcigpKTsKLQogICAgIC8vIG1fdHJhbnNmb3JtIGluY2x1
ZGVzIHRyYW5zZm9ybS1vcmlnaW4gYW5kIGlzIGFmZmVjdGVkIGJ5IHRoZSBjaG9pY2Ugb2YgdGhl
IHRyYW5zZm9ybS1ib3guCiAgICAgLy8gVGhlcmVmb3JlIHdlIGNhbiBvbmx5IHVzZSB0aGUgY2Fj
aGVkIG1fdHJhbnNmb3JtLCBpZiB0aGUgYW5pbWF0aW9uIGRvZXNuJ3QgYWx0ZXIgdHJhbnNmb3Jt
LWJveCBvciBleGNsdWRlcyB0cmFuc2Zvcm0tb3JpZ2luLgogCiAgICAgLy8gUXVlcnkgdGhlIGFu
aW1hdGVkU3R5bGUoKSB0byBvYnRhaW4gdGhlIGN1cnJlbnQgdHJhbnNmb3JtYXRpb24sIHdoZW4g
YWNjZWxlcmF0ZWQgdHJhbnNmb3JtIGFuaW1hdGlvbnMgYXJlIHJ1bm5pbmcuCi0gICAgYXV0byBz
dHlsZWFibGUgPSBTdHlsZWFibGU6OmZyb21SZW5kZXJlcihyZW5kZXJCb3gpOworICAgIGF1dG8g
c3R5bGVhYmxlID0gU3R5bGVhYmxlOjpmcm9tUmVuZGVyZXIocmVuZGVyZXIoKSk7CiAgICAgaWYg
KChzdHlsZWFibGUgJiYgc3R5bGVhYmxlLT5pc1J1bm5pbmdBY2NlbGVyYXRlZFRyYW5zZm9ybUFu
aW1hdGlvbigpKSB8fCAhb3B0aW9ucy5jb250YWlucyhSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3Bl
cmF0aW9uT3B0aW9uOjpUcmFuc2Zvcm1PcmlnaW4pKSB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4gYW5pbWF0ZWRTdHlsZSA9IHJlbmRlckJveC5hbmltYXRlZFN0eWxlKCk7
CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gYW5pbWF0ZWRTdHlsZSA9IHJl
bmRlcmVyKCkuYW5pbWF0ZWRTdHlsZSgpOwogCiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IHRyYW5zZm9ybTsKICAgICAgICAgdXBkYXRlVHJhbnNmb3JtRnJvbVN0eWxlKHRyYW5zZm9ybSwg
KmFuaW1hdGVkU3R5bGUsIG9wdGlvbnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCmluZGV4IDRlYzc5M2JhYWUwYTc2YjVjMjQy
MTlkMWM3MTgxYzc2MmQ0OWJlZTQuLjAxYjk4YWY0ODFlZWZmMjdiNDYwYWE0NmJhZGFjMGVhZGY3
ZDEyZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1v
ZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJN
b2RlbE9iamVjdC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJSZW5kZXJMYXllclNj
cm9sbGFibGVBcmVhLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHTW9kZWxPYmplY3QuaCIKICNpbmNs
dWRlICJSZW5kZXJWaWV3LmgiCisjaW5jbHVkZSAiU1ZHR3JhcGhpY3NFbGVtZW50LmgiCiAjaW5j
bHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTdHlsZVNjcm9sbFNuYXBQb2ludHMuaCIKICNp
bmNsdWRlICJUcmFuc2Zvcm1TdGF0ZS5oIgpAQCAtMjMxLDYgKzIzMiwxMyBAQCB2b2lkIFJlbmRl
ckxheWVyTW9kZWxPYmplY3Q6OnN1c3BlbmRBbmltYXRpb25zKE1vbm90b25pY1RpbWUgdGltZSkK
ICAgICBsYXllcigpLT5iYWNraW5nKCktPnN1c3BlbmRBbmltYXRpb25zKHRpbWUpOwogfQogCit2
b2lkIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OnVwZGF0ZUxheWVyVHJhbnNmb3JtKCkKK3sKKyAg
ICAvLyBUcmFuc2Zvcm0tb3JpZ2luIGRlcGVuZHMgb24gYm94IHNpemUsIHNvIHdlIG5lZWQgdG8g
dXBkYXRlIHRoZSBsYXllciB0cmFuc2Zvcm0gYWZ0ZXIgbGF5b3V0LgorICAgIGlmIChoYXNMYXll
cigpKQorICAgICAgICBsYXllcigpLT51cGRhdGVUcmFuc2Zvcm0oKTsKK30KKwogI2lmIEVOQUJM
RShMQVlFUl9CQVNFRF9TVkdfRU5HSU5FKQogc3RkOjpvcHRpb25hbDxMYXlvdXRSZWN0PiBSZW5k
ZXJMYXllck1vZGVsT2JqZWN0Ojpjb21wdXRlVmlzaWJsZVJlY3RJblNWR0NvbnRhaW5lcihjb25z
dCBMYXlvdXRSZWN0JiByZWN0LCBjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBjb250YWlu
ZXIsIFJlbmRlck9iamVjdDo6VmlzaWJsZVJlY3RDb250ZXh0IGNvbnRleHQpIGNvbnN0CiB7CkBA
IC0zMTYsNiArMzI0LDM4IEBAIHZvaWQgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6bWFwTG9jYWxU
b1NWR0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0CiAKICAgICBjb250YWlu
ZXItPm1hcExvY2FsVG9Db250YWluZXIoYW5jZXN0b3JDb250YWluZXIsIHRyYW5zZm9ybVN0YXRl
LCBtb2RlLCB3YXNGaXhlZCk7CiB9CisKK3ZvaWQgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6YXBw
bHlTVkdUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgU1ZHR3JhcGhp
Y3NFbGVtZW50JiBncmFwaGljc0VsZW1lbnQsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29u
c3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCwgT3B0aW9uU2V0PFJlbmRlclN0eWxlOjpUcmFuc2Zv
cm1PcGVyYXRpb25PcHRpb24+IG9wdGlvbnMpIGNvbnN0Cit7CisgICAgLy8gVGhpcyBjaGVjayBk
b2VzIG5vdCB1c2Ugc3R5bGUuaGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCkgb24gcHVycG9z
ZSAtLSB3ZSBvbmx5IHdhbnQgdG8ga25vdyBpZiBlaXRoZXIgdGhlICd0cmFuc2Zvcm0nIHByb3Bl
cnR5LCBhbgorICAgIC8vIG9mZnNldCBwYXRoLCBvciB0aGUgaW5kaXZpZHVhbCB0cmFuc2Zvcm0g
b3BlcmF0aW9ucyBhcmUgc2V0IChwZXJzcGVjdGl2ZSAvIHRyYW5zZm9ybS1zdHlsZTogcHJlc2Vy
dmUtM2QgYXJlIG5vdCByZWxldmFudCBoZXJlKS4KKyAgICBib29sIGhhc0NTU1RyYW5zZm9ybSA9
IHN0eWxlLmhhc1RyYW5zZm9ybSgpIHx8IHN0eWxlLnJvdGF0ZSgpIHx8IHN0eWxlLnRyYW5zbGF0
ZSgpIHx8IHN0eWxlLnNjYWxlKCk7CisKKyAgICBib29sIGFmZmVjdGVkQnlUcmFuc2Zvcm1Pcmln
aW4gPSBmYWxzZTsKKyAgICBzdGQ6Om9wdGlvbmFsPEFmZmluZVRyYW5zZm9ybT4gc3ZnVHJhbnNm
b3JtOworCisgICAgaWYgKGhhc0NTU1RyYW5zZm9ybSkKKyAgICAgICAgYWZmZWN0ZWRCeVRyYW5z
Zm9ybU9yaWdpbiA9IHN0eWxlLmFmZmVjdGVkQnlUcmFuc2Zvcm1PcmlnaW4oKTsKKyAgICBlbHNl
IGlmIChhdXRvIGFmZmluZVRyYW5zZm9ybSA9IGdyYXBoaWNzRWxlbWVudC5hbmltYXRlZExvY2Fs
VHJhbnNmb3JtKCk7ICFhZmZpbmVUcmFuc2Zvcm0uaXNJZGVudGl0eSgpKSB7CisgICAgICAgIHN2
Z1RyYW5zZm9ybSA9IGFmZmluZVRyYW5zZm9ybTsKKyAgICAgICAgYWZmZWN0ZWRCeVRyYW5zZm9y
bU9yaWdpbiA9IGFmZmluZVRyYW5zZm9ybS5hKCkgIT0gMSB8fCBhZmZpbmVUcmFuc2Zvcm0uYigp
IHx8IGFmZmluZVRyYW5zZm9ybS5jKCkgfHwgYWZmaW5lVHJhbnNmb3JtLmQoKSAhPSAxOworICAg
IH0KKworICAgIGlmICghaGFzQ1NTVHJhbnNmb3JtICYmICFzdmdUcmFuc2Zvcm0uaGFzX3ZhbHVl
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEZsb2F0UG9pbnQzRCBvcmlnaW5UcmFuc2xhdGU7
CisgICAgaWYgKG9wdGlvbnMuY29udGFpbnMoUmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlv
bk9wdGlvbjo6VHJhbnNmb3JtT3JpZ2luKSAmJiBhZmZlY3RlZEJ5VHJhbnNmb3JtT3JpZ2luKQor
ICAgICAgICBvcmlnaW5UcmFuc2xhdGUgPSBzdHlsZS5hcHBseVRyYW5zZm9ybU9yaWdpbih0cmFu
c2Zvcm0sIGJvdW5kaW5nQm94KTsKKworICAgIC8vIENTUyB0cmFuc2Zvcm1zIHRha2UgcHJlY2Vk
ZW5jZSBvdmVyIFNWRyB0cmFuc2Zvcm1zLgorICAgIGlmIChoYXNDU1NUcmFuc2Zvcm0pCisgICAg
ICAgIHN0eWxlLmFwcGx5Q1NTVHJhbnNmb3JtKHRyYW5zZm9ybSwgYm91bmRpbmdCb3gsIG9wdGlv
bnMpOworICAgIGVsc2UKKyAgICAgICAgdHJhbnNmb3JtLm11bHRpcGx5QWZmaW5lVHJhbnNmb3Jt
KHN2Z1RyYW5zZm9ybS52YWx1ZSgpKTsKKworICAgIHN0eWxlLnVuYXBwbHlUcmFuc2Zvcm1Pcmln
aW4odHJhbnNmb3JtLCBvcmlnaW5UcmFuc2xhdGUpOworfQogI2VuZGlmCiAKIGJvb2wgcmVuZGVy
ZXJOZWVkc1BpeGVsU25hcHBpbmcoY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCYgcmVuZGVy
ZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2Rl
bE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmpl
Y3QuaAppbmRleCBmOGJhOWVkZmFmNDk0ZmUwNDc4ZDE1ODdmYTdkNzExYjg2NjQ0NTJjLi4wNmFj
NzhjM2ZlM2NlYzUwMmZkNzAzZDQ3YWFjMzc1NjA0ZTA3YTI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmgKQEAgLTI4LDYgKzI4LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBLZXlmcmFtZUxpc3Q7CiBjbGFzcyBSZW5k
ZXJMYXllcjsKK2NsYXNzIFNWR0dyYXBoaWNzRWxlbWVudDsKIAogc3RydWN0IExheWVyUmVwYWlu
dFJlY3RzIHsKICAgICBMYXlvdXRSZWN0IGNsaXBwZWRPdmVyZmxvd1JlY3Q7CkBAIC03NSw4ICs3
NiwxMiBAQCBwdWJsaWM6CiAgICAgLy8gUHJvdmlkZXMgdGhlIFNWRyBpbXBsZW1lbnRhdGlvbiBm
b3IgbWFwTG9jYWxUb0NvbnRhaW5lcigpLgogICAgIC8vIFRoaXMgbGl2ZXMgaW4gUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdCwgd2hpY2ggaXMgdGhlIGNvbW1vbiBiYXNlLWNsYXNzIGZvciBhbGwgU1ZH
IHJlbmRlcmVycy4KICAgICB2b2lkIG1hcExvY2FsVG9TVkdDb250YWluZXIoY29uc3QgUmVuZGVy
TGF5ZXJNb2RlbE9iamVjdCogYW5jZXN0b3JDb250YWluZXIsIFRyYW5zZm9ybVN0YXRlJiwgT3B0
aW9uU2V0PE1hcENvb3JkaW5hdGVzTW9kZT4sIGJvb2wqIHdhc0ZpeGVkKSBjb25zdDsKKworICAg
IHZvaWQgYXBwbHlTVkdUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBTVkdHcmFwaGlj
c0VsZW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdC
b3gsIE9wdGlvblNldDxSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPikgY29u
c3Q7CiAjZW5kaWYKIAorICAgIHZvaWQgdXBkYXRlTGF5ZXJUcmFuc2Zvcm0oKTsKKwogICAgIHZp
cnR1YWwgdm9pZCBhcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IFJl
bmRlclN0eWxlJiwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCwgT3B0aW9uU2V0PFJlbmRl
clN0eWxlOjpUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb24+ID0gUmVuZGVyU3R5bGU6OmFsbFRyYW5z
Zm9ybU9wZXJhdGlvbnMpIGNvbnN0ID0gMDsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCAyYWFjNTZlZjYzNTk5YWU5YzlkNWY5MjMx
NjQ4ZDRlMzUyMWQwYTI0Li44YTRkODBmMmI2NDIyM2ZiOGY5NTZmZjQ1NWI1YzRlNjk4MzRlYTA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMTk4Nyw2
ICsxOTg3LDE0IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpzZXRIYXNPdXRsaW5lQXV0b0FuY2VzdG9y
KGJvb2wgaGFzT3V0bGluZUF1dG9BbmNlc3RvcikKICAgICAgICAgZW5zdXJlUmFyZURhdGEoKS5z
ZXRIYXNPdXRsaW5lQXV0b0FuY2VzdG9yKGhhc091dGxpbmVBdXRvQW5jZXN0b3IpOwogfQogCisj
aWYgRU5BQkxFKExBWUVSX0JBU0VEX1NWR19FTkdJTkUpCit2b2lkIFJlbmRlck9iamVjdDo6c2V0
SGFzU1ZHVHJhbnNmb3JtKGJvb2wgaGFzU1ZHVHJhbnNmb3JtKQoreworICAgIGlmIChoYXNTVkdU
cmFuc2Zvcm0gfHwgaGFzUmFyZURhdGEoKSkKKyAgICAgICAgZW5zdXJlUmFyZURhdGEoKS5zZXRI
YXNTVkdUcmFuc2Zvcm0oaGFzU1ZHVHJhbnNmb3JtKTsKK30KKyNlbmRpZgorCiB2b2lkIFJlbmRl
ck9iamVjdDo6c2V0UGFpbnRDb250YWlubWVudEFwcGxpZXMoYm9vbCBwYWludENvbnRhaW5tZW50
QXBwbGllcykKIHsKICAgICBpZiAocGFpbnRDb250YWlubWVudEFwcGxpZXMgfHwgaGFzUmFyZURh
dGEoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaAppbmRleCBmZjhkY2Y2
YWIyOWM3MjQyMjUxYjBiODY1NWMyMGQzMmJmMmVkYzkxLi4zNjhjM2QxN2IzYjYwYjc1MjI5ZDZk
M2FjNDc4YzBjZWFiZGRiM2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5oCkBAIC00MTYsNiArNDE2LDEyIEBAIHB1YmxpYzoKICAgICBib29sIGhhc091dGxpbmVBdXRv
QW5jZXN0b3IoKSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5oYXNSYXJlRGF0YSgpICYmIHJh
cmVEYXRhKCkuaGFzT3V0bGluZUF1dG9BbmNlc3RvcigpOyB9CiAgICAgYm9vbCBwYWludENvbnRh
aW5tZW50QXBwbGllcygpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmhhc1JhcmVEYXRhKCkg
JiYgcmFyZURhdGEoKS5wYWludENvbnRhaW5tZW50QXBwbGllcygpOyB9CiAKKyNpZiBFTkFCTEUo
TEFZRVJfQkFTRURfU1ZHX0VOR0lORSkKKyAgICBib29sIGhhc1NWR1RyYW5zZm9ybSgpIGNvbnN0
IHsgcmV0dXJuIG1fYml0ZmllbGRzLmhhc1JhcmVEYXRhKCkgJiYgcmFyZURhdGEoKS5oYXNTVkdU
cmFuc2Zvcm0oKTsgfQorI2Vsc2UKKyAgICBib29sIGhhc1NWR1RyYW5zZm9ybSgpIGNvbnN0IHsg
cmV0dXJuIGZhbHNlOyB9CisjZW5kaWYKKwogICAgIGJvb2wgaXNFeGNsdWRlZEZyb21Ob3JtYWxM
YXlvdXQoKSBjb25zdCB7IHJldHVybiBtX2JpdGZpZWxkcy5pc0V4Y2x1ZGVkRnJvbU5vcm1hbExh
eW91dCgpOyB9CiAgICAgdm9pZCBzZXRJc0V4Y2x1ZGVkRnJvbU5vcm1hbExheW91dChib29sIGV4
Y2x1ZGVkKSB7IG1fYml0ZmllbGRzLnNldElzRXhjbHVkZWRGcm9tTm9ybWFsTGF5b3V0KGV4Y2x1
ZGVkKTsgfQogICAgIGJvb2wgaXNFeGNsdWRlZEFuZFBsYWNlZEluQm9yZGVyKCkgY29uc3QgeyBy
ZXR1cm4gaXNFeGNsdWRlZEZyb21Ob3JtYWxMYXlvdXQoKSAmJiBpc0xlZ2VuZCgpOyB9CkBAIC00
NTAsNyArNDU2LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFzUG90ZW50aWFsbHlTY3JvbGxhYmxl
T3ZlcmZsb3coKSBjb25zdDsKIAogICAgIGJvb2wgaGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5
KCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMuaGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5
KCk7IH0gLy8gVHJhbnNmb3JtLCBwZXJzcGVjdGl2ZSBvciB0cmFuc2Zvcm0tc3R5bGU6IHByZXNl
cnZlLTNkLgotICAgIGJvb2wgaGFzVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gaGFzVHJhbnNm
b3JtUmVsYXRlZFByb3BlcnR5KCkgJiYgKHN0eWxlKCkuaGFzVHJhbnNmb3JtKCkgfHwgc3R5bGUo
KS50cmFuc2xhdGUoKSB8fCBzdHlsZSgpLnNjYWxlKCkgfHwgc3R5bGUoKS5yb3RhdGUoKSk7IH0K
KyAgICBib29sIGhhc1RyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIGhhc1RyYW5zZm9ybVJlbGF0
ZWRQcm9wZXJ0eSgpICYmIChzdHlsZSgpLmhhc1RyYW5zZm9ybSgpIHx8IHN0eWxlKCkudHJhbnNs
YXRlKCkgfHwgc3R5bGUoKS5zY2FsZSgpIHx8IHN0eWxlKCkucm90YXRlKCkgfHwgaGFzU1ZHVHJh
bnNmb3JtKCkpOyB9CiAgICAgYm9vbCBoYXNUcmFuc2Zvcm1PclBlc3BlY3RpdmUoKSBjb25zdCB7
IHJldHVybiBoYXNUcmFuc2Zvcm1SZWxhdGVkUHJvcGVydHkoKSAmJiAoaGFzVHJhbnNmb3JtKCkg
fHwgc3R5bGUoKS5oYXNQZXJzcGVjdGl2ZSgpKTsgfQogCiAgICAgaW5saW5lIGJvb2wgcHJlc2Vy
dmVzTmV3bGluZSgpIGNvbnN0OwpAQCAtNTE1LDYgKzUyMSw5IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldElzUmVuZGVyRnJhZ21lbnRlZEZsb3coYm9vbCA9IHRydWUpOwogICAgIHZvaWQgc2V0SGFz
T3V0bGluZUF1dG9BbmNlc3Rvcihib29sID0gdHJ1ZSk7CiAgICAgdm9pZCBzZXRQYWludENvbnRh
aW5tZW50QXBwbGllcyhib29sID0gdHJ1ZSk7CisjaWYgRU5BQkxFKExBWUVSX0JBU0VEX1NWR19F
TkdJTkUpCisgICAgdm9pZCBzZXRIYXNTVkdUcmFuc2Zvcm0oYm9vbCA9IHRydWUpOworI2VuZGlm
CiAKICAgICAvLyBIb29rIHNvIHRoYXQgUmVuZGVyVGV4dENvbnRyb2wgY2FuIHJldHVybiB0aGUg
bGluZSBoZWlnaHQgb2YgaXRzIGlubmVyIHJlbmRlcmVyLgogICAgIC8vIEZvciBvdGhlciByZW5k
ZXJlcnMsIHRoZSB2YWx1ZSBpcyB0aGUgc2FtZSBhcyBsaW5lSGVpZ2h0KGZhbHNlKS4KQEAgLTk0
NCw2ICs5NTMsOSBAQCBwcml2YXRlOgogICAgICAgICBBRERfQk9PTEVBTl9CSVRGSUVMRChpc1Jl
bmRlckZyYWdtZW50ZWRGbG93LCBJc1JlbmRlckZyYWdtZW50ZWRGbG93KTsKICAgICAgICAgQURE
X0JPT0xFQU5fQklURklFTEQoaGFzT3V0bGluZUF1dG9BbmNlc3RvciwgSGFzT3V0bGluZUF1dG9B
bmNlc3Rvcik7CiAgICAgICAgIEFERF9CT09MRUFOX0JJVEZJRUxEKHBhaW50Q29udGFpbm1lbnRB
cHBsaWVzLCBQYWludENvbnRhaW5tZW50QXBwbGllcyk7CisjaWYgRU5BQkxFKExBWUVSX0JBU0VE
X1NWR19FTkdJTkUpCisgICAgICAgIEFERF9CT09MRUFOX0JJVEZJRUxEKGhhc1NWR1RyYW5zZm9y
bSwgSGFzU1ZHVHJhbnNmb3JtKTsKKyNlbmRpZgogCiAgICAgICAgIC8vIEZyb20gUmVuZGVyRWxl
bWVudAogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVmZXJlbmNlZFNWR1Jlc291cmNlcz4gcmVm
ZXJlbmNlZFNWR1Jlc291cmNlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAppbmRleCBiZGNjNTgxNWI0NjYyN2YwZmYxYzVhMTQ4
MDI0MGZmNjU3Yjk0N2VmLi4zNDVkNjM2MTM0ZDVmZGJjZjkyNjdiZmNkYWNjNGNmNjJjYjNjNmM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRh
aW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250
YWluZXIuY3BwCkBAIC01Miw2ICs1MiwzNiBAQCBSZW5kZXJTVkdDb250YWluZXI6OlJlbmRlclNW
R0NvbnRhaW5lcihTVkdFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogCiBS
ZW5kZXJTVkdDb250YWluZXI6On5SZW5kZXJTVkdDb250YWluZXIoKSA9IGRlZmF1bHQ7CiAKKy8v
IEhlbHBlciBjbGFzcywgbW92ZSB0byBpdHMgb3duIGZpbGUgb25jZSB1dGlsaXplZCBpbiBtb3Jl
IHRoYW4gb25lIHBsYWNlLgorY2xhc3MgU1ZHTGF5ZXJUcmFuc2Zvcm1VcGRhdGVyIHsKKyAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShTVkdMYXllclRyYW5zZm9ybVVwZGF0ZXIpOworcHVibGljOgor
ICAgIFNWR0xheWVyVHJhbnNmb3JtVXBkYXRlcihSZW5kZXJMYXllck1vZGVsT2JqZWN0JiByZW5k
ZXJlcikKKyAgICAgICAgOiBtX3JlbmRlcmVyKHJlbmRlcmVyKQorICAgIHsKKyAgICAgICAgaWYg
KCFtX3JlbmRlcmVyLmhhc0xheWVyKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
bV90cmFuc2Zvcm1SZWZlcmVuY2VCb3ggPSBtX3JlbmRlcmVyLnRyYW5zZm9ybVJlZmVyZW5jZUJv
eFJlY3QoKTsKKyAgICAgICAgbV9yZW5kZXJlci51cGRhdGVMYXllclRyYW5zZm9ybSgpOworICAg
IH0KKworCisgICAgflNWR0xheWVyVHJhbnNmb3JtVXBkYXRlcigpCisgICAgeworICAgICAgICBp
ZiAoIW1fcmVuZGVyZXIuaGFzTGF5ZXIoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
aWYgKG1fcmVuZGVyZXIudHJhbnNmb3JtUmVmZXJlbmNlQm94UmVjdCgpID09IG1fdHJhbnNmb3Jt
UmVmZXJlbmNlQm94KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1fcmVuZGVyZXIu
dXBkYXRlTGF5ZXJUcmFuc2Zvcm0oKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgUmVuZGVyTGF5
ZXJNb2RlbE9iamVjdCYgbV9yZW5kZXJlcjsKKyAgICBGbG9hdFJlY3QgbV90cmFuc2Zvcm1SZWZl
cmVuY2VCb3g7Cit9OworCiB2b2lkIFJlbmRlclNWR0NvbnRhaW5lcjo6bGF5b3V0KCkKIHsKICAg
ICBTdGFja1N0YXRzOjpMYXlvdXRDaGVja1BvaW50IGxheW91dENoZWNrUG9pbnQ7CkBAIC02NCwx
MyArOTQsMTAgQEAgdm9pZCBSZW5kZXJTVkdDb250YWluZXI6OmxheW91dCgpCiAgICAgLy8gVXBk
YXRlIGxheWVyIHRyYW5zZm9ybSBiZWZvcmUgbGF5aW5nIG91dCBjaGlsZHJlbiAoU1ZHIG5lZWRz
IGFjY2VzcyB0byB0aGUgdHJhbnNmb3JtIG1hdHJpY2VzIGR1cmluZyBsYXlvdXQgZm9yIG9uLXNj
cmVlbiB0ZXh0IGZvbnQtc2l6ZSBjYWxjdWxhdGlvbnMpLgogICAgIC8vIEV2ZW50dWFsbHkgcmUt
dXBkYXRlIGlmIHRoZSB0cmFuc2Zvcm0gcmVmZXJlbmNlIGJveCwgcmVsZXZhbnQgZm9yIHRyYW5z
Zm9ybS1vcmlnaW4sIGhhcyBjaGFuZ2VkIGR1cmluZyBsYXlvdXQuCiAgICAgewotICAgICAgICAv
LyBGSVhNRTogW0xCU0VdIFVwc3RyZWFtIFNWR0xheWVyVHJhbnNmb3JtVXBkYXRlcgotICAgICAg
ICAvLyBTVkdMYXllclRyYW5zZm9ybVVwZGF0ZXIgdHJhbnNmb3JtVXBkYXRlcigqdGhpcyk7Cisg
ICAgICAgIFNWR0xheWVyVHJhbnNmb3JtVXBkYXRlciB1cGRhdGVUcmFuc2Zvcm0oKnRoaXMpOwog
ICAgICAgICBsYXlvdXRDaGlsZHJlbigpOwogICAgIH0KIAotICAgIHVwZGF0ZUxheWVySW5mb3Jt
YXRpb24oKTsKLQogICAgIC8vIEludmFsaWRhdGUgYWxsIHJlc291cmNlcyBvZiB0aGlzIGNsaWVu
dCBpZiBvdXIgbGF5b3V0IGNoYW5nZWQuCiAgICAgaWYgKGV2ZXJIYWRMYXlvdXQoKSAmJiBuZWVk
c0xheW91dCgpKQogICAgICAgICBTVkdSZXNvdXJjZXNDYWNoZTo6Y2xpZW50TGF5b3V0Q2hhbmdl
ZCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0NvbnRhaW5lci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdD
b250YWluZXIuaAppbmRleCAwYWQwYjgzNDY1Zjk5YzMxZTk1YWEzYzc5NzU5YWUzNzc4ZmIzMDE2
Li5lMzQ4MmFiOWYwM2ExNWY5MzFhMjk5NjlkMWY2NTQwNjYwNWY1N2JiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmgKQEAgLTU1LDcg
KzU1LDYgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBsYXlvdXRDaGlsZHJlbigpOwog
ICAgIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0
JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlv
dXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pIG92ZXJyaWRlOwogCi0g
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxheWVySW5mb3JtYXRpb24oKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgY2FsY3VsYXRlVmlld3BvcnQoKTsKICAgICB2aXJ0dWFsIGJvb2wgcG9pbnRJc0luc2lk
ZVZpZXdwb3J0Q2xpcChjb25zdCBGbG9hdFBvaW50JikgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3Qu
Y3BwCmluZGV4IGIxOTI5NGI2NzU4YzlkMTdiNmM4NTA5YjIxYWQxNzE0YzE4OTM0ZjguLmM5Njk1
ZTZiNmE0M2Y5Y2Y0ZmYwMzk1YWMzNjFhNDMyNjFkYjhlMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCkBAIC0zNiw2
ICszNiw3IEBACiAjaW5jbHVkZSAiUmVuZGVyR2VvbWV0cnlNYXAuaCIKICNpbmNsdWRlICJSZW5k
ZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyTW9kZWxPYmplY3QuaCIKKyNpbmNsdWRl
ICJSZW5kZXJTVkdNb2RlbE9iamVjdElubGluZXMuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNv
dXJjZS5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50SW5s
aW5lcy5oIgpAQCAtNTksMTUgKzYwLDEzIEBAIFJlbmRlclNWR01vZGVsT2JqZWN0OjpSZW5kZXJT
VkdNb2RlbE9iamVjdChTVkdFbGVtZW50JiBlbGVtZW50LCBSZW5kZXJTdHlsZSYmIHN0CiB2b2lk
IFJlbmRlclNWR01vZGVsT2JqZWN0Ojp1cGRhdGVGcm9tU3R5bGUoKQogewogICAgIFJlbmRlckxh
eWVyTW9kZWxPYmplY3Q6OnVwZGF0ZUZyb21TdHlsZSgpOwotICAgIHNldEhhc1RyYW5zZm9ybVJl
bGF0ZWRQcm9wZXJ0eShzdHlsZSgpLmhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgpKTsKIAot
ICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07Ci0gICAgaWYgKGlzPFNWR0dyYXBoaWNzRWxl
bWVudD4obm9kZUZvck5vbkFub255bW91cygpKSkKLSAgICAgICAgdHJhbnNmb3JtID0gZG93bmNh
c3Q8U1ZHR3JhcGhpY3NFbGVtZW50Pihub2RlRm9yTm9uQW5vbnltb3VzKCkpLmFuaW1hdGVkTG9j
YWxUcmFuc2Zvcm0oKTsKKyAgICBib29sIGhhc1NWR1RyYW5zZm9ybSA9IGZhbHNlOworICAgIGlm
IChpczxTVkdHcmFwaGljc0VsZW1lbnQ+KGVsZW1lbnQoKSkpCisgICAgICAgIGhhc1NWR1RyYW5z
Zm9ybSA9ICFkb3duY2FzdDxTVkdHcmFwaGljc0VsZW1lbnQ+KGVsZW1lbnQoKSkuYW5pbWF0ZWRM
b2NhbFRyYW5zZm9ybSgpLmlzSWRlbnRpdHkoKTsKIAotICAgIC8vIEZJWE1FOiBbTEJTRV0gVXBz
dHJlYW0gUmVuZGVyT2JqZWN0IGNoYW5nZXMKLSAgICAvLyBpZiAoIXRyYW5zZm9ybS5pc0lkZW50
aXR5KCkpCi0gICAgLy8gICAgIHNldEhhc1NWR1RyYW5zZm9ybSgpOworICAgIHNldEhhc1RyYW5z
Zm9ybVJlbGF0ZWRQcm9wZXJ0eShzdHlsZSgpLmhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgp
IHx8IGhhc1NWR1RyYW5zZm9ybSk7CisgICAgc2V0SGFzU1ZHVHJhbnNmb3JtKGhhc1NWR1RyYW5z
Zm9ybSk7CiB9CiAKIEZsb2F0UmVjdCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6Ym9yZGVyQm94UmVj
dEluRnJhZ21lbnRFcXVpdmFsZW50KFJlbmRlckZyYWdtZW50Q29udGFpbmVyKiwgUmVuZGVyQm94
OjpSZW5kZXJCb3hGcmFnbWVudEluZm9GbGFncykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCmluZGV4IDcxNmVhODMwNjg0NTkzM2NiOGYw
NDdhZThhOGQ5ZDI4NTAxYzhkNzUuLjgwYWQ4MDc3MDBmYTUzZTAxMmQwZjQ5MTE5MTljYmFiODQ0
Y2VkZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Um9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290
LmNwcApAQCAtMzk2LDggKzM5Niw3IEBAIHZvaWQgUmVuZGVyU1ZHUm9vdDo6dXBkYXRlRnJvbVN0
eWxlKCkKIHsKICAgICBSZW5kZXJSZXBsYWNlZDo6dXBkYXRlRnJvbVN0eWxlKCk7CiAKLSAgICAv
LyBGSVhNRTogW0xCU0VdIFVwc3RyZWFtIFJlbmRlck9iamVjdCBjaGFuZ2VzCi0gICAgLy8gc2V0
SGFzU1ZHVHJhbnNmb3JtKCk7CisgICAgc2V0SGFzU1ZHVHJhbnNmb3JtKCk7CiAKICAgICBpZiAo
c2hvdWxkQXBwbHlWaWV3cG9ydENsaXAoKSkKICAgICAgICAgc2V0SGFzTm9uVmlzaWJsZU92ZXJm
bG93KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUu
Y3BwCmluZGV4IDMyNTU3MjQxOTBiNzIwYWZkMzY2ODU1ODYyMDE2MGYwZjM4MTAxOWUuLmNhYWY2
YjM1YjBlMDUyMDAzZGY5MjAxZWVjMDAwNGQ1NDM1MWY0MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCkBAIC0xNTQsOCArMTU0LDcgQEAg
dm9pZCBSZW5kZXJTVkdTaGFwZTo6bGF5b3V0KCkKICAgICAgICAgc2V0TGF5b3V0UmVjdChlbmNs
b3NpbmdMYXlvdXRSZWN0KG1fZmlsbEJvdW5kaW5nQm94KSk7CiAgICAgfQogCi0gICAgLy8gRklY
TUU6IFtMQlNFXSBVcHN0cmVhbSBTVkdMYXllclRyYW5zZm9ybVVwZGF0ZXIKLSAgICAvLyBTVkdS
ZW5kZXJTdXBwb3J0Ojp1cGRhdGVMYXllclRyYW5zZm9ybSgqdGhpcyk7CisgICAgdXBkYXRlTGF5
ZXJUcmFuc2Zvcm0oKTsKIAogICAgIC8vIEludmFsaWRhdGUgYWxsIHJlc291cmNlcyBvZiB0aGlz
IGNsaWVudCBpZiBvdXIgbGF5b3V0IGNoYW5nZWQuCiAgICAgaWYgKGV2ZXJIYWRMYXlvdXQoKSAm
JiBzZWxmTmVlZHNMYXlvdXQoKSkKQEAgLTUzNiw4ICs1MzUsNyBAQCB2b2lkIFJlbmRlclNWR1No
YXBlOjpzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0
eWxlJiBuZQogCiB2b2lkIFJlbmRlclNWR1NoYXBlOjphcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEZs
b2F0UmVjdCYgYm91bmRpbmdCb3gsIE9wdGlvblNldDxSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3Bl
cmF0aW9uT3B0aW9uPiBvcHRpb25zKSBjb25zdAogewotICAgIC8vIEZJWE1FOiBbTEJTRV0gVXBz
dHJlYW0gQ1NTL1NWRyB0cmFuc2Zvcm0gc3VwcG9ydAotICAgIHN0eWxlLmFwcGx5VHJhbnNmb3Jt
KHRyYW5zZm9ybSwgYm91bmRpbmdCb3gsIG9wdGlvbnMpOworICAgIGFwcGx5U1ZHVHJhbnNmb3Jt
KHRyYW5zZm9ybSwgZ3JhcGhpY3NFbGVtZW50KCksIHN0eWxlLCBib3VuZGluZ0JveCwgb3B0aW9u
cyk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHU2hhcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hh
cGUuaAppbmRleCAxOWM2M2NhZjI5MTQxYmY5YjgwZWU0MDQwZTk5ZGM1NDY0NWQyODE2Li5iMzlj
ZDg5YzQ3NmMyNmI3ZjA5ZjA3NDhlYzVmNmE5ZGZkM2ZhODNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5oCkBAIC04Miw3ICs4Miw3IEBAIHB1Ymxp
YzoKIAogICAgIEZsb2F0UmVjdCBjb21wdXRlTWFya2VyQm91bmRpbmdCb3goY29uc3QgU1ZHQm91
bmRpbmdCb3hDb21wdXRhdGlvbjo6RGVjb3JhdGlvbk9wdGlvbnMmKSBjb25zdDsKIAotICAgIHZv
aWQgYXBwbHlUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBSZW5kZXJTdHls
ZSYsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gsIE9wdGlvblNldDxSZW5kZXJTdHlsZTo6
VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPiA9IFJlbmRlclN0eWxlOjphbGxUcmFuc2Zvcm1PcGVy
YXRpb25zKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIGFwcGx5VHJhbnNmb3JtKFRyYW5zZm9y
bWF0aW9uTWF0cml4JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5k
aW5nQm94LCBPcHRpb25TZXQ8UmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbj4g
PSBSZW5kZXJTdHlsZTo6YWxsVHJhbnNmb3JtT3BlcmF0aW9ucykgY29uc3QgZmluYWw7CiAKIHBy
b3RlY3RlZDoKICAgICB2b2lkIGVsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRh
aW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9y
bWFibGVDb250YWluZXIuY3BwCmluZGV4IDkwMzEyMmJlOTdjNzUxYTNkNTJhOTRlNzdmOGNhNzVm
NjE0NGMxOTUuLmIwMGZiNTBhYTllMDAwMTc5N2ZjOTU1MDg1ODZhNmIyMTQwNzdmNzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVHJhbnNmb3JtYWJs
ZUNvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmNwcApAQCAtOTcsMTUgKzk3LDEzIEBAIHZvaWQgUmVu
ZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcjo6dXBkYXRlRnJvbVN0eWxlKCkKIHsKICAgICBS
ZW5kZXJTVkdDb250YWluZXI6OnVwZGF0ZUZyb21TdHlsZSgpOwogCi0gICAgLy8gRklYTUU6IFtM
QlNFXSBVcHN0cmVhbSBDU1MvU1ZHIHRyYW5zZm9ybSBzdXBwb3J0Ci0gICAgLy8gaWYgKGFzc29j
aWF0ZWRVc2VFbGVtZW50KGdyYXBoaWNzRWxlbWVudCgpKSkKLSAgICAvLyAgICBzZXRIYXNTVkdU
cmFuc2Zvcm0oKTsKKyAgICBpZiAoYXNzb2NpYXRlZFVzZUVsZW1lbnQoZ3JhcGhpY3NFbGVtZW50
KCkpKQorICAgICAgICBzZXRIYXNTVkdUcmFuc2Zvcm0oKTsKIH0KIAogdm9pZCBSZW5kZXJTVkdU
cmFuc2Zvcm1hYmxlQ29udGFpbmVyOjphcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgdHJhbnNmb3JtLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEZsb2F0UmVjdCYg
Ym91bmRpbmdCb3gsIE9wdGlvblNldDxSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0
aW9uPiBvcHRpb25zKSBjb25zdAogewotICAgIC8vIEZJWE1FOiBbTEJTRV0gVXBzdHJlYW0gQ1NT
L1NWRyB0cmFuc2Zvcm0gc3VwcG9ydAotICAgIHN0eWxlLmFwcGx5VHJhbnNmb3JtKHRyYW5zZm9y
bSwgYm91bmRpbmdCb3gsIG9wdGlvbnMpOworICAgIGFwcGx5U1ZHVHJhbnNmb3JtKHRyYW5zZm9y
bSwgZ3JhcGhpY3NFbGVtZW50KCksIHN0eWxlLCBib3VuZGluZ0JveCwgb3B0aW9ucyk7CiB9CiAK
IHZvaWQgUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcjo6c3R5bGVXaWxsQ2hhbmdlKFN0
eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCmluZGV4IDQ0YzVhNmU5YjlhM2Y0NDIy
YWIyYjY4MDAzZTA2YzkxMDc3ZDZjZDcuLmUwNzBjN2E3MzA2MjZhZDVjMjA3ZGVjNzIxODAzMzNl
MzUxZWM4MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCkBA
IC03Myw2ICs3MywxNSBAQCBBZmZpbmVUcmFuc2Zvcm0gU1ZHR3JhcGhpY3NFbGVtZW50OjpnZXRT
Y3JlZW5DVE0oU3R5bGVVcGRhdGVTdHJhdGVneSBzdHlsZVVwZGF0ZQogCiBBZmZpbmVUcmFuc2Zv
cm0gU1ZHR3JhcGhpY3NFbGVtZW50OjphbmltYXRlZExvY2FsVHJhbnNmb3JtKCkgY29uc3QKIHsK
KyNpZiBFTkFCTEUoTEFZRVJfQkFTRURfU1ZHX0VOR0lORSkKKyAgICAvLyBMQlNFIGhhbmRsZXMg
dHJhbnNmb3JtcyB2aWEgUmVuZGVyTGF5ZXIsIG5vIG5lZWQgdG8gaGFuZGxlIENTUyB0cmFuc2Zv
cm1zIGhlcmUuCisgICAgaWYgKGRvY3VtZW50KCkuc2V0dGluZ3MoKS5sYXllckJhc2VkU1ZHRW5n
aW5lRW5hYmxlZCgpKSB7CisgICAgICAgIGlmIChtX3N1cHBsZW1lbnRhbFRyYW5zZm9ybSkKKyAg
ICAgICAgICAgIHJldHVybiAqbV9zdXBwbGVtZW50YWxUcmFuc2Zvcm0gKiB0cmFuc2Zvcm0oKS5j
b25jYXRlbmF0ZSgpOworICAgICAgICByZXR1cm4gdHJhbnNmb3JtKCkuY29uY2F0ZW5hdGUoKTsK
KyAgICB9CisjZW5kaWYKKwogICAgIEFmZmluZVRyYW5zZm9ybSBtYXRyaXg7CiAKICAgICBhdXRv
KiBzdHlsZSA9IHJlbmRlcmVyKCkgPyAmcmVuZGVyZXIoKS0+c3R5bGUoKSA6IG51bGxwdHI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457243</attachid>
            <date>2022-04-11 04:30:11 -0700</date>
            <delta_ts>2022-04-11 09:15:06 -0700</delta_ts>
            <desc>Patch, v11</desc>
            <filename>bug-237711-20220411043010.patch</filename>
            <type>text/plain</type>
            <size>26530</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNzA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjcxNWNhYzgxM2VmYzc0
MTZkYWM3NGE5NTdhNTY1NjUwNjA1ODRlOC4uZTlmNzQxY2Q1YjRhM2E0MGU1Y2RmNjgyZWJhMzFl
YWJkNGJjYzIyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDIyLTA0LTExICBOaWtv
bGFzIFppbW1lcm1hbm4gIDxuemltbWVybWFubkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtMQlNF
XSBBY3RpdmF0ZSBTVkcgdHJhbnNmb3JtIHN1cHBvcnQgdGhyb3VnaCBsYXllcnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzcxMQorCisgICAgICAg
IFJldmlld2VkIGJ5IFJvYiBCdWlzLgorCisgICAgICAgIEFjdGl2YXRlIHRyYW5zZm9ybXMgZm9y
IFNWRyBsYXllcnMuCisKKyAgICAgICAgVXNlIHRoZSBmbGFnIHRvIGtlZXAgdHJhY2sgb2YgdGhl
IHByZXNlbmNlIG9mIFNWRyB0cmFuc2Zvcm1hdGlvbnMKKyAgICAgICAgb24gYSByZW5kZXJlci4g
Q1NTL0hUTUwgcmVuZGVyZXJzIGNhbiByZWx5IG9ubHkgb24gdGhlIFJlbmRlclN0eWxlCisgICAg
ICAgIHRvIGRldGVybWluZSBpZiB0cmFuc2Zvcm1hdGlvbnMgYXJlIGFwcGxpZWQsIHdoZXJlYXMg
U1ZHIGhhcyB0bworICAgICAgICBjb25zdWx0IGFkZGl0aW9uYWwgc291cmNlcywgc3VjaCBhcyB0
aGUgU1ZHICd0cmFuc2Zvcm0nIGF0dHJpYnV0ZS4KKworICAgICAgICBBIFNWRyByZW5kZXJlciB3
aXRoIHRoZSAnSGFzU1ZHVHJhbnNmb3JtJyBmbGFnIHNldCBzaG91bGQgYmVoYXZlCisgICAgICAg
IGxpa2UgYW55IFNWRy9IVE1MIHJlbmRlcmVyIHRoYXQgaGFzIENTUyB0cmFuc2Zvcm1hdGlvbnMg
YXBwbGllZC4KKworICAgICAgICBXaXRoIHRoaXMgcGF0Y2ggYXBwbGllZCBTVkcgdHJhbnNmb3Jt
IGFuZCBDU1MgdHJhbnNmb3JtcyBjYW4KKyAgICAgICAgYmUgYXBwbGllZCB0byA8Zz4gLyA8cmVj
dD4gZWxlbWVudHMgaW4gTEJTRS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3Rz
LCBubyBjaGFuZ2UgaW4gYmVoYXZpb3VyLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpU
cmFuc2Zvcm1hdGlvbk1hdHJpeDo6bXVsdGlwbHlBZmZpbmVUcmFuc2Zvcm0pOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJveDo6dXBkYXRlTGF5ZXJUcmFuc2Zvcm0pOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJCb3guaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y2FuQ3JlYXRlU3RhY2tpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlckxheWVyOjpjdXJyZW50VHJhbnNmb3JtIGNvbnN0KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllck1vZGVsT2JqZWN0Ojp1cGRhdGVMYXllclRyYW5zZm9ybSk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllck1vZGVsT2JqZWN0OjphcHBseVNWR1RyYW5zZm9ybSBjb25zdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuaDoKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVj
dDo6c2V0SGFzU1ZHVHJhbnNmb3JtKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0
Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Omhhc1NWR1RyYW5zZm9ybSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6Omhhc1RyYW5zZm9ybSBjb25zdCk6
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHTGF5ZXJUcmFuc2Zvcm1VcGRhdGVyOjpTVkdMYXllclRyYW5zZm9ybVVw
ZGF0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGF5ZXJUcmFuc2Zvcm1VcGRhdGVyOjp+U1ZH
TGF5ZXJUcmFuc2Zvcm1VcGRhdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0NvbnRh
aW5lcjo6bGF5b3V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5l
ci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHQ29udGFpbmVyOjp1cGRhdGVMYXllcklu
Zm9ybWF0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR01v
ZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR01vZGVsT2JqZWN0Ojp1
cGRhdGVGcm9tU3R5bGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSb290Ojp1cGRhdGVGcm9tU3R5bGUpOgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHU2hhcGU6OmxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdTaGFwZTo6YXBwbHlUcmFuc2Zvcm0gY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHU2hhcGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5z
Zm9ybWFibGVDb250YWluZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHVHJhbnNm
b3JtYWJsZUNvbnRhaW5lcjo6dXBkYXRlRnJvbVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXI6OmFwcGx5VHJhbnNmb3JtIGNvbnN0KToKKyAg
ICAgICAgKiBzdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0dyYXBoaWNzRWxlbWVudDo6YW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSBjb25zdCk6CisKIDIwMjIt
MDQtMTAgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkIFdpbmRvd3MgYnVpbGQgZml4IGFmdGVyIHIyOTI2OTYuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNm
b3JtYXRpb25NYXRyaXguY3BwCmluZGV4IGYyMjZkOTMzMWE0ZTQzMWY4NjZlOTU3YzE1ODliZGVk
MDM2MTNiY2EuLjI4MWM5NWRjYTZkZWNmNzc3N2FhNzM1ZjYwOWZlYmM4ODEwMzhiNjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNm
b3JtYXRpb25NYXRyaXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguY3BwCkBAIC0xNTMzLDYgKzE1MzMsMTcg
QEAgVHJhbnNmb3JtYXRpb25NYXRyaXgmIFRyYW5zZm9ybWF0aW9uTWF0cml4OjptdWx0aXBseShj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKK1RyYW5z
Zm9ybWF0aW9uTWF0cml4JiBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bXVsdGlwbHlBZmZpbmVUcmFu
c2Zvcm0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBtYXRyaXgpCit7CisgICAgaWYgKG1hdHJpeC5p
c0lkZW50aXR5KCkpCisgICAgICAgIHJldHVybiAqdGhpczsKKworICAgIGlmIChtYXRyaXguaXNJ
ZGVudGl0eU9yVHJhbnNsYXRpb24oKSkKKyAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZShtYXRyaXgu
ZSgpLCBtYXRyaXguZigpKTsKKworICAgIHJldHVybiBtdWx0aXBseShtYXRyaXgudG9UcmFuc2Zv
cm1hdGlvbk1hdHJpeCgpKTsKK30KKwogdm9pZCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6bXVsdFZl
Y01hdHJpeChkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSYgcmVzdWx0WCwgZG91YmxlJiByZXN1
bHRZKSBjb25zdAogewogICAgIHJlc3VsdFggPSBtX21hdHJpeFszXVswXSArIHggKiBtX21hdHJp
eFswXVswXSArIHkgKiBtX21hdHJpeFsxXVswXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25N
YXRyaXguaAppbmRleCBjOTUxMTc3YTMxMGI3NjA0YzIxNTljZDZlMjQ5N2ZkOGYyNTdiODNiLi44
NTVkMmU3MmExNWE3Yzg2Mzc3ODY1NmU0ZjM4NmVhOWE4YzIyNjFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0
cml4LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9U
cmFuc2Zvcm1hdGlvbk1hdHJpeC5oCkBAIC0yNDksNiArMjQ5LDggQEAgcHVibGljOgogCiAgICAg
Ly8gdGhpcyA9IG1hdCAqIHRoaXMuCiAgICAgV0VCQ09SRV9FWFBPUlQgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIG11bHRpcGx5KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CisgICAgLy8gSWRl
bnRpY2FsIHRvIG11bHRpcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4JiksIGJ1dCBzYXZpbmcgYSBB
ZmZpbmVUcmFuc2Zvcm0gLT4gVHJhbnNmb3JtYXRpb25NYXRyaXggcm91bmR0cmlwIGZvciBpZGVu
dGl0eSBvciB0cmFuc2xhdGlvbiBtYXRyaWNlcy4KKyAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
bXVsdGlwbHlBZmZpbmVUcmFuc2Zvcm0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7CiAKICAgICBX
RUJDT1JFX0VYUE9SVCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgc2NhbGUoZG91YmxlKTsKICAgICBX
RUJDT1JFX0VYUE9SVCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgc2NhbGVOb25Vbmlmb3JtKGRvdWJs
ZSBzeCwgZG91YmxlIHN5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5k
ZXggNTJhNmQ3YWRlZmRlZWJkODhkNDU5ZDE2MmVjNThlZmNhYmJjOGY4ZC4uZDUxZGU2NmViNDNj
ZDUyYmE3OTRlODk3MTgzNzI3YjNiNTA0ZGJhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJveC5jcHAKQEAgLTY2NywxMyArNjY3LDYgQEAgdm9pZCBSZW5kZXJCb3g6OmFic29sdXRl
UXVhZHMoVmVjdG9yPEZsb2F0UXVhZD4mIHF1YWRzLCBib29sKiB3YXNGaXhlZCkgY29uc3QKICAg
ICBxdWFkcy5hcHBlbmQobG9jYWxUb0Fic29sdXRlUXVhZChsb2NhbFJlY3QsIFVzZVRyYW5zZm9y
bXMsIHdhc0ZpeGVkKSk7CiB9CiAKLXZvaWQgUmVuZGVyQm94Ojp1cGRhdGVMYXllclRyYW5zZm9y
bSgpCi17Ci0gICAgLy8gVHJhbnNmb3JtLW9yaWdpbiBkZXBlbmRzIG9uIGJveCBzaXplLCBzbyB3
ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgbGF5ZXIgdHJhbnNmb3JtIGFmdGVyIGxheW91dC4KLSAgICBp
ZiAoaGFzTGF5ZXIoKSkKLSAgICAgICAgbGF5ZXIoKS0+dXBkYXRlVHJhbnNmb3JtKCk7Ci19Ci0K
IHZvaWQgUmVuZGVyQm94OjphcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdCwg
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBP
cHRpb25TZXQ8UmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbj4gb3B0aW9ucykg
Y29uc3QKIHsKICAgICBzdHlsZS5hcHBseVRyYW5zZm9ybSh0LCBib3VuZGluZ0JveCwgb3B0aW9u
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmgKaW5kZXggMWFmZjdlMDE3Y2EzMDFi
NDZhNTM4MGQwNjEzMGZmM2VlMTU3ZDUyYS4uYjE4MzJjMDg2YjQzZmNhZGZkNjdhZGYxOTgxY2Ji
MzI5Nzg0YmU3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJv
eC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guaApAQCAtMjE4LDcg
KzIxOCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZE92ZXJmbG93RnJvbUNoaWxkKGNvbnN0IFJl
bmRlckJveCogY2hpbGQpIHsgYWRkT3ZlcmZsb3dGcm9tQ2hpbGQoY2hpbGQsIGNoaWxkLT5sb2Nh
dGlvbk9mZnNldCgpKTsgfQogICAgIHZvaWQgYWRkT3ZlcmZsb3dGcm9tQ2hpbGQoY29uc3QgUmVu
ZGVyQm94KiBjaGlsZCwgY29uc3QgTGF5b3V0U2l6ZSYgZGVsdGEpOwogCi0gICAgdm9pZCB1cGRh
dGVMYXllclRyYW5zZm9ybSgpOwogICAgIHZvaWQgYXBwbHlUcmFuc2Zvcm0oVHJhbnNmb3JtYXRp
b25NYXRyaXgmLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdC
b3gsIE9wdGlvblNldDxSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPiA9IFJl
bmRlclN0eWxlOjphbGxUcmFuc2Zvcm1PcGVyYXRpb25zKSBjb25zdCBvdmVycmlkZTsKIAogICAg
IExheW91dFNpemUgY29udGVudFNpemUoKSBjb25zdCB7IHJldHVybiB7IGNvbnRlbnRXaWR0aCgp
LCBjb250ZW50SGVpZ2h0KCkgfTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHAKaW5kZXggNGFmOWU4NTdhYTA4MjJhOGRiMjY5OGViOGZhMzUyZjY3ZjY1MGQxMS4uZDBl
Mjk3YzQyYTViZGVkNmYzYjY3MTg2YzUzYjE3YWJmNzNmZmYyOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC01NTIsNiArNTUyLDkgQEAgc3RhdGljIGJvb2wg
Y2FuQ3JlYXRlU3RhY2tpbmdDb250ZXh0KGNvbnN0IFJlbmRlckxheWVyJiBsYXllcikKIHsKICAg
ICBhdXRvJiByZW5kZXJlciA9IGxheWVyLnJlbmRlcmVyKCk7CiAgICAgcmV0dXJuIHJlbmRlcmVy
Lmhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgpCisjaWYgRU5BQkxFKExBWUVSX0JBU0VEX1NW
R19FTkdJTkUpCisgICAgICAgIHx8IHJlbmRlcmVyLmhhc1NWR1RyYW5zZm9ybSgpCisjZW5kaWYK
ICAgICAgICAgfHwgcmVuZGVyZXIuaGFzQ2xpcFBhdGgoKQogICAgICAgICB8fCByZW5kZXJlci5o
YXNGaWx0ZXIoKQogICAgICAgICB8fCByZW5kZXJlci5oYXNNYXNrKCkKQEAgLTEzNTcsMTkgKzEz
NjAsMTMgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXggUmVuZGVyTGF5ZXI6OmN1cnJlbnRUcmFuc2Zv
cm0oT3B0aW9uU2V0PFJlbmRlclN0eWxlOjpUcmFuc2YKICAgICBpZiAoIW1fdHJhbnNmb3JtKQog
ICAgICAgICByZXR1cm4geyB9OwogCi0gICAgLy8gRklYTUU6IFtMQlNFXSBVcHN0cmVhbSB0cmFu
c2Zvcm0gc3VwcG9ydCBmb3IgUmVuZGVyU1ZHTW9kZWxPYmplY3QgZGVyaXZlZCByZW5kZXJlcnMK
LSAgICBpZiAoIWlzPFJlbmRlckJveD4ocmVuZGVyZXIoKSkpCi0gICAgICAgIHJldHVybiB7IH07
Ci0KLSAgICBhdXRvJiByZW5kZXJCb3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+KHJlbmRlcmVyKCkp
OwotCiAgICAgLy8gbV90cmFuc2Zvcm0gaW5jbHVkZXMgdHJhbnNmb3JtLW9yaWdpbiBhbmQgaXMg
YWZmZWN0ZWQgYnkgdGhlIGNob2ljZSBvZiB0aGUgdHJhbnNmb3JtLWJveC4KICAgICAvLyBUaGVy
ZWZvcmUgd2UgY2FuIG9ubHkgdXNlIHRoZSBjYWNoZWQgbV90cmFuc2Zvcm0sIGlmIHRoZSBhbmlt
YXRpb24gZG9lc24ndCBhbHRlciB0cmFuc2Zvcm0tYm94IG9yIGV4Y2x1ZGVzIHRyYW5zZm9ybS1v
cmlnaW4uCiAKICAgICAvLyBRdWVyeSB0aGUgYW5pbWF0ZWRTdHlsZSgpIHRvIG9idGFpbiB0aGUg
Y3VycmVudCB0cmFuc2Zvcm1hdGlvbiwgd2hlbiBhY2NlbGVyYXRlZCB0cmFuc2Zvcm0gYW5pbWF0
aW9ucyBhcmUgcnVubmluZy4KLSAgICBhdXRvIHN0eWxlYWJsZSA9IFN0eWxlYWJsZTo6ZnJvbVJl
bmRlcmVyKHJlbmRlckJveCk7CisgICAgYXV0byBzdHlsZWFibGUgPSBTdHlsZWFibGU6OmZyb21S
ZW5kZXJlcihyZW5kZXJlcigpKTsKICAgICBpZiAoKHN0eWxlYWJsZSAmJiBzdHlsZWFibGUtPmlz
UnVubmluZ0FjY2VsZXJhdGVkVHJhbnNmb3JtQW5pbWF0aW9uKCkpIHx8ICFvcHRpb25zLmNvbnRh
aW5zKFJlbmRlclN0eWxlOjpUcmFuc2Zvcm1PcGVyYXRpb25PcHRpb246OlRyYW5zZm9ybU9yaWdp
bikpIHsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBhbmltYXRlZFN0eWxl
ID0gcmVuZGVyQm94LmFuaW1hdGVkU3R5bGUoKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0eWxlPiBhbmltYXRlZFN0eWxlID0gcmVuZGVyZXIoKS5hbmltYXRlZFN0eWxlKCk7CiAK
ICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtOwogICAgICAgICB1cGRhdGVU
cmFuc2Zvcm1Gcm9tU3R5bGUodHJhbnNmb3JtLCAqYW5pbWF0ZWRTdHlsZSwgb3B0aW9ucyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVj
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5j
cHAKaW5kZXggNGVjNzkzYmFhZTBhNzZiNWMyNDIxOWQxYzcxODFjNzYyZDQ5YmVlNC4uMDFiOThh
ZjQ4MWVlZmYyN2I0NjBhYTQ2YmFkYWMwZWFkZjdkMTJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyTW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmNwcApAQCAtMzEsNiArMzEs
NyBAQAogI2luY2x1ZGUgIlJlbmRlckxheWVyU2Nyb2xsYWJsZUFyZWEuaCIKICNpbmNsdWRlICJS
ZW5kZXJTVkdNb2RlbE9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKKyNpbmNsdWRl
ICJTVkdHcmFwaGljc0VsZW1lbnQuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUg
IlN0eWxlU2Nyb2xsU25hcFBvaW50cy5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybVN0YXRlLmgiCkBA
IC0yMzEsNiArMjMyLDEzIEBAIHZvaWQgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6c3VzcGVuZEFu
aW1hdGlvbnMoTW9ub3RvbmljVGltZSB0aW1lKQogICAgIGxheWVyKCktPmJhY2tpbmcoKS0+c3Vz
cGVuZEFuaW1hdGlvbnModGltZSk7CiB9CiAKK3ZvaWQgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdDo6
dXBkYXRlTGF5ZXJUcmFuc2Zvcm0oKQoreworICAgIC8vIFRyYW5zZm9ybS1vcmlnaW4gZGVwZW5k
cyBvbiBib3ggc2l6ZSwgc28gd2UgbmVlZCB0byB1cGRhdGUgdGhlIGxheWVyIHRyYW5zZm9ybSBh
ZnRlciBsYXlvdXQuCisgICAgaWYgKGhhc0xheWVyKCkpCisgICAgICAgIGxheWVyKCktPnVwZGF0
ZVRyYW5zZm9ybSgpOworfQorCiAjaWYgRU5BQkxFKExBWUVSX0JBU0VEX1NWR19FTkdJTkUpCiBz
dGQ6Om9wdGlvbmFsPExheW91dFJlY3Q+IFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OmNvbXB1dGVW
aXNpYmxlUmVjdEluU1ZHQ29udGFpbmVyKGNvbnN0IExheW91dFJlY3QmIHJlY3QsIGNvbnN0IFJl
bmRlckxheWVyTW9kZWxPYmplY3QqIGNvbnRhaW5lciwgUmVuZGVyT2JqZWN0OjpWaXNpYmxlUmVj
dENvbnRleHQgY29udGV4dCkgY29uc3QKIHsKQEAgLTMxNiw2ICszMjQsMzggQEAgdm9pZCBSZW5k
ZXJMYXllck1vZGVsT2JqZWN0OjptYXBMb2NhbFRvU1ZHQ29udGFpbmVyKGNvbnN0IFJlbmRlckxh
eWVyTW9kZWxPYmplY3QKIAogICAgIGNvbnRhaW5lci0+bWFwTG9jYWxUb0NvbnRhaW5lcihhbmNl
c3RvckNvbnRhaW5lciwgdHJhbnNmb3JtU3RhdGUsIG1vZGUsIHdhc0ZpeGVkKTsKIH0KKwordm9p
ZCBSZW5kZXJMYXllck1vZGVsT2JqZWN0OjphcHBseVNWR1RyYW5zZm9ybShUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgdHJhbnNmb3JtLCBTVkdHcmFwaGljc0VsZW1lbnQmIGdyYXBoaWNzRWxlbWVudCwg
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBP
cHRpb25TZXQ8UmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbj4gb3B0aW9ucykg
Y29uc3QKK3sKKyAgICAvLyBUaGlzIGNoZWNrIGRvZXMgbm90IHVzZSBzdHlsZS5oYXNUcmFuc2Zv
cm1SZWxhdGVkUHJvcGVydHkoKSBvbiBwdXJwb3NlIC0tIHdlIG9ubHkgd2FudCB0byBrbm93IGlm
IGVpdGhlciB0aGUgJ3RyYW5zZm9ybScgcHJvcGVydHksIGFuCisgICAgLy8gb2Zmc2V0IHBhdGgs
IG9yIHRoZSBpbmRpdmlkdWFsIHRyYW5zZm9ybSBvcGVyYXRpb25zIGFyZSBzZXQgKHBlcnNwZWN0
aXZlIC8gdHJhbnNmb3JtLXN0eWxlOiBwcmVzZXJ2ZS0zZCBhcmUgbm90IHJlbGV2YW50IGhlcmUp
LgorICAgIGJvb2wgaGFzQ1NTVHJhbnNmb3JtID0gc3R5bGUuaGFzVHJhbnNmb3JtKCkgfHwgc3R5
bGUucm90YXRlKCkgfHwgc3R5bGUudHJhbnNsYXRlKCkgfHwgc3R5bGUuc2NhbGUoKTsKKworICAg
IGJvb2wgYWZmZWN0ZWRCeVRyYW5zZm9ybU9yaWdpbiA9IGZhbHNlOworICAgIHN0ZDo6b3B0aW9u
YWw8QWZmaW5lVHJhbnNmb3JtPiBzdmdUcmFuc2Zvcm07CisKKyAgICBpZiAoaGFzQ1NTVHJhbnNm
b3JtKQorICAgICAgICBhZmZlY3RlZEJ5VHJhbnNmb3JtT3JpZ2luID0gc3R5bGUuYWZmZWN0ZWRC
eVRyYW5zZm9ybU9yaWdpbigpOworICAgIGVsc2UgaWYgKGF1dG8gYWZmaW5lVHJhbnNmb3JtID0g
Z3JhcGhpY3NFbGVtZW50LmFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0oKTsgIWFmZmluZVRyYW5zZm9y
bS5pc0lkZW50aXR5KCkpIHsKKyAgICAgICAgc3ZnVHJhbnNmb3JtID0gYWZmaW5lVHJhbnNmb3Jt
OworICAgICAgICBhZmZlY3RlZEJ5VHJhbnNmb3JtT3JpZ2luID0gYWZmaW5lVHJhbnNmb3JtLmEo
KSAhPSAxIHx8IGFmZmluZVRyYW5zZm9ybS5iKCkgfHwgYWZmaW5lVHJhbnNmb3JtLmMoKSB8fCBh
ZmZpbmVUcmFuc2Zvcm0uZCgpICE9IDE7CisgICAgfQorCisgICAgaWYgKCFoYXNDU1NUcmFuc2Zv
cm0gJiYgIXN2Z1RyYW5zZm9ybS5oYXNfdmFsdWUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
RmxvYXRQb2ludDNEIG9yaWdpblRyYW5zbGF0ZTsKKyAgICBpZiAob3B0aW9ucy5jb250YWlucyhS
ZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uOjpUcmFuc2Zvcm1PcmlnaW4pICYm
IGFmZmVjdGVkQnlUcmFuc2Zvcm1PcmlnaW4pCisgICAgICAgIG9yaWdpblRyYW5zbGF0ZSA9IHN0
eWxlLmFwcGx5VHJhbnNmb3JtT3JpZ2luKHRyYW5zZm9ybSwgYm91bmRpbmdCb3gpOworCisgICAg
Ly8gQ1NTIHRyYW5zZm9ybXMgdGFrZSBwcmVjZWRlbmNlIG92ZXIgU1ZHIHRyYW5zZm9ybXMuCisg
ICAgaWYgKGhhc0NTU1RyYW5zZm9ybSkKKyAgICAgICAgc3R5bGUuYXBwbHlDU1NUcmFuc2Zvcm0o
dHJhbnNmb3JtLCBib3VuZGluZ0JveCwgb3B0aW9ucyk7CisgICAgZWxzZQorICAgICAgICB0cmFu
c2Zvcm0ubXVsdGlwbHlBZmZpbmVUcmFuc2Zvcm0oc3ZnVHJhbnNmb3JtLnZhbHVlKCkpOworCisg
ICAgc3R5bGUudW5hcHBseVRyYW5zZm9ybU9yaWdpbih0cmFuc2Zvcm0sIG9yaWdpblRyYW5zbGF0
ZSk7Cit9CiAjZW5kaWYKIAogYm9vbCByZW5kZXJlck5lZWRzUGl4ZWxTbmFwcGluZyhjb25zdCBS
ZW5kZXJMYXllck1vZGVsT2JqZWN0JiByZW5kZXJlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllck1vZGVsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJNb2RlbE9iamVjdC5oCmluZGV4IGY4YmE5ZWRmYWY0OTRmZTA0
NzhkMTU4N2ZhN2Q3MTFiODY2NDQ1MmMuLjA2YWM3OGMzZmUzY2VjNTAyZmQ3MDNkNDdhYWMzNzU2
MDRlMDdhMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ck1vZGVsT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
TW9kZWxPYmplY3QuaApAQCAtMjgsNiArMjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEtleWZyYW1lTGlzdDsKIGNsYXNzIFJlbmRlckxheWVyOworY2xhc3MgU1ZHR3JhcGhpY3NF
bGVtZW50OwogCiBzdHJ1Y3QgTGF5ZXJSZXBhaW50UmVjdHMgewogICAgIExheW91dFJlY3QgY2xp
cHBlZE92ZXJmbG93UmVjdDsKQEAgLTc1LDggKzc2LDEyIEBAIHB1YmxpYzoKICAgICAvLyBQcm92
aWRlcyB0aGUgU1ZHIGltcGxlbWVudGF0aW9uIGZvciBtYXBMb2NhbFRvQ29udGFpbmVyKCkuCiAg
ICAgLy8gVGhpcyBsaXZlcyBpbiBSZW5kZXJMYXllck1vZGVsT2JqZWN0LCB3aGljaCBpcyB0aGUg
Y29tbW9uIGJhc2UtY2xhc3MgZm9yIGFsbCBTVkcgcmVuZGVyZXJzLgogICAgIHZvaWQgbWFwTG9j
YWxUb1NWR0NvbnRhaW5lcihjb25zdCBSZW5kZXJMYXllck1vZGVsT2JqZWN0KiBhbmNlc3RvckNv
bnRhaW5lciwgVHJhbnNmb3JtU3RhdGUmLCBPcHRpb25TZXQ8TWFwQ29vcmRpbmF0ZXNNb2RlPiwg
Ym9vbCogd2FzRml4ZWQpIGNvbnN0OworCisgICAgdm9pZCBhcHBseVNWR1RyYW5zZm9ybShUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYsIFNWR0dyYXBoaWNzRWxlbWVudCYsIGNvbnN0IFJlbmRlclN0eWxl
JiwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCwgT3B0aW9uU2V0PFJlbmRlclN0eWxlOjpU
cmFuc2Zvcm1PcGVyYXRpb25PcHRpb24+KSBjb25zdDsKICNlbmRpZgogCisgICAgdm9pZCB1cGRh
dGVMYXllclRyYW5zZm9ybSgpOworCiAgICAgdmlydHVhbCB2b2lkIGFwcGx5VHJhbnNmb3JtKFRy
YW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBjb25zdCBGbG9hdFJlY3Qm
IGJvdW5kaW5nQm94LCBPcHRpb25TZXQ8UmVuZGVyU3R5bGU6OlRyYW5zZm9ybU9wZXJhdGlvbk9w
dGlvbj4gPSBSZW5kZXJTdHlsZTo6YWxsVHJhbnNmb3JtT3BlcmF0aW9ucykgY29uc3QgPSAwOwog
CiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCmlu
ZGV4IDJhYWM1NmVmNjM1OTlhZTljOWQ1ZjkyMzE2NDhkNGUzNTIxZDBhMjQuLmE2NWE3NTE3YjU2
ZWIxY2ZiMzU2YzllN2E5NThkODY4OTdjZmRiYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJPYmplY3QuY3BwCkBAIC0xOTg3LDYgKzE5ODcsMTQgQEAgdm9pZCBSZW5kZXJPYmpl
Y3Q6OnNldEhhc091dGxpbmVBdXRvQW5jZXN0b3IoYm9vbCBoYXNPdXRsaW5lQXV0b0FuY2VzdG9y
KQogICAgICAgICBlbnN1cmVSYXJlRGF0YSgpLnNldEhhc091dGxpbmVBdXRvQW5jZXN0b3IoaGFz
T3V0bGluZUF1dG9BbmNlc3Rvcik7CiB9CiAKKyNpZiBFTkFCTEUoTEFZRVJfQkFTRURfU1ZHX0VO
R0lORSkKK3ZvaWQgUmVuZGVyT2JqZWN0OjpzZXRIYXNTVkdUcmFuc2Zvcm0oYm9vbCBoYXNTVkdU
cmFuc2Zvcm0pCit7CisgICAgaWYgKGhhc1NWR1RyYW5zZm9ybSB8fCBoYXNSYXJlRGF0YSgpKQor
ICAgICAgICBlbnN1cmVSYXJlRGF0YSgpLnNldEhhc1NWR1RyYW5zZm9ybShoYXNTVkdUcmFuc2Zv
cm0pOworfQorI2VuZGlmCisKIHZvaWQgUmVuZGVyT2JqZWN0OjpzZXRQYWludENvbnRhaW5tZW50
QXBwbGllcyhib29sIHBhaW50Q29udGFpbm1lbnRBcHBsaWVzKQogewogICAgIGlmIChwYWludENv
bnRhaW5tZW50QXBwbGllcyB8fCBoYXNSYXJlRGF0YSgpKQpAQCAtMjAyMiw2ICsyMDMwLDkgQEAg
UmVuZGVyT2JqZWN0OjpSZW5kZXJPYmplY3RSYXJlRGF0YTo6UmVuZGVyT2JqZWN0UmFyZURhdGEo
KQogICAgICwgbV9pc1JlbmRlckZyYWdtZW50ZWRGbG93KGZhbHNlKQogICAgICwgbV9oYXNPdXRs
aW5lQXV0b0FuY2VzdG9yKGZhbHNlKQogICAgICwgbV9wYWludENvbnRhaW5tZW50QXBwbGllcyhm
YWxzZSkKKyNpZiBFTkFCTEUoTEFZRVJfQkFTRURfU1ZHX0VOR0lORSkKKyAgICAsIG1faGFzU1ZH
VHJhbnNmb3JtKGZhbHNlKQorI2VuZGlmCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJPYmplY3QuaAppbmRleCBmZjhkY2Y2YWIyOWM3MjQyMjUxYjBiODY1NWMyMGQzMmJmMmVk
YzkxLi4zNjhjM2QxN2IzYjYwYjc1MjI5ZDZkM2FjNDc4YzBjZWFiZGRiM2RjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCkBAIC00MTYsNiArNDE2LDEyIEBAIHB1Ymxp
YzoKICAgICBib29sIGhhc091dGxpbmVBdXRvQW5jZXN0b3IoKSBjb25zdCB7IHJldHVybiBtX2Jp
dGZpZWxkcy5oYXNSYXJlRGF0YSgpICYmIHJhcmVEYXRhKCkuaGFzT3V0bGluZUF1dG9BbmNlc3Rv
cigpOyB9CiAgICAgYm9vbCBwYWludENvbnRhaW5tZW50QXBwbGllcygpIGNvbnN0IHsgcmV0dXJu
IG1fYml0ZmllbGRzLmhhc1JhcmVEYXRhKCkgJiYgcmFyZURhdGEoKS5wYWludENvbnRhaW5tZW50
QXBwbGllcygpOyB9CiAKKyNpZiBFTkFCTEUoTEFZRVJfQkFTRURfU1ZHX0VOR0lORSkKKyAgICBi
b29sIGhhc1NWR1RyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0ZmllbGRzLmhhc1JhcmVE
YXRhKCkgJiYgcmFyZURhdGEoKS5oYXNTVkdUcmFuc2Zvcm0oKTsgfQorI2Vsc2UKKyAgICBib29s
IGhhc1NWR1RyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisjZW5kaWYKKwogICAg
IGJvb2wgaXNFeGNsdWRlZEZyb21Ob3JtYWxMYXlvdXQoKSBjb25zdCB7IHJldHVybiBtX2JpdGZp
ZWxkcy5pc0V4Y2x1ZGVkRnJvbU5vcm1hbExheW91dCgpOyB9CiAgICAgdm9pZCBzZXRJc0V4Y2x1
ZGVkRnJvbU5vcm1hbExheW91dChib29sIGV4Y2x1ZGVkKSB7IG1fYml0ZmllbGRzLnNldElzRXhj
bHVkZWRGcm9tTm9ybWFsTGF5b3V0KGV4Y2x1ZGVkKTsgfQogICAgIGJvb2wgaXNFeGNsdWRlZEFu
ZFBsYWNlZEluQm9yZGVyKCkgY29uc3QgeyByZXR1cm4gaXNFeGNsdWRlZEZyb21Ob3JtYWxMYXlv
dXQoKSAmJiBpc0xlZ2VuZCgpOyB9CkBAIC00NTAsNyArNDU2LDcgQEAgcHVibGljOgogICAgIGJv
b2wgaGFzUG90ZW50aWFsbHlTY3JvbGxhYmxlT3ZlcmZsb3coKSBjb25zdDsKIAogICAgIGJvb2wg
aGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCkgY29uc3QgeyByZXR1cm4gbV9iaXRmaWVsZHMu
aGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCk7IH0gLy8gVHJhbnNmb3JtLCBwZXJzcGVjdGl2
ZSBvciB0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkLgotICAgIGJvb2wgaGFzVHJhbnNmb3Jt
KCkgY29uc3QgeyByZXR1cm4gaGFzVHJhbnNmb3JtUmVsYXRlZFByb3BlcnR5KCkgJiYgKHN0eWxl
KCkuaGFzVHJhbnNmb3JtKCkgfHwgc3R5bGUoKS50cmFuc2xhdGUoKSB8fCBzdHlsZSgpLnNjYWxl
KCkgfHwgc3R5bGUoKS5yb3RhdGUoKSk7IH0KKyAgICBib29sIGhhc1RyYW5zZm9ybSgpIGNvbnN0
IHsgcmV0dXJuIGhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgpICYmIChzdHlsZSgpLmhhc1Ry
YW5zZm9ybSgpIHx8IHN0eWxlKCkudHJhbnNsYXRlKCkgfHwgc3R5bGUoKS5zY2FsZSgpIHx8IHN0
eWxlKCkucm90YXRlKCkgfHwgaGFzU1ZHVHJhbnNmb3JtKCkpOyB9CiAgICAgYm9vbCBoYXNUcmFu
c2Zvcm1PclBlc3BlY3RpdmUoKSBjb25zdCB7IHJldHVybiBoYXNUcmFuc2Zvcm1SZWxhdGVkUHJv
cGVydHkoKSAmJiAoaGFzVHJhbnNmb3JtKCkgfHwgc3R5bGUoKS5oYXNQZXJzcGVjdGl2ZSgpKTsg
fQogCiAgICAgaW5saW5lIGJvb2wgcHJlc2VydmVzTmV3bGluZSgpIGNvbnN0OwpAQCAtNTE1LDYg
KzUyMSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldElzUmVuZGVyRnJhZ21lbnRlZEZsb3coYm9v
bCA9IHRydWUpOwogICAgIHZvaWQgc2V0SGFzT3V0bGluZUF1dG9BbmNlc3Rvcihib29sID0gdHJ1
ZSk7CiAgICAgdm9pZCBzZXRQYWludENvbnRhaW5tZW50QXBwbGllcyhib29sID0gdHJ1ZSk7Cisj
aWYgRU5BQkxFKExBWUVSX0JBU0VEX1NWR19FTkdJTkUpCisgICAgdm9pZCBzZXRIYXNTVkdUcmFu
c2Zvcm0oYm9vbCA9IHRydWUpOworI2VuZGlmCiAKICAgICAvLyBIb29rIHNvIHRoYXQgUmVuZGVy
VGV4dENvbnRyb2wgY2FuIHJldHVybiB0aGUgbGluZSBoZWlnaHQgb2YgaXRzIGlubmVyIHJlbmRl
cmVyLgogICAgIC8vIEZvciBvdGhlciByZW5kZXJlcnMsIHRoZSB2YWx1ZSBpcyB0aGUgc2FtZSBh
cyBsaW5lSGVpZ2h0KGZhbHNlKS4KQEAgLTk0NCw2ICs5NTMsOSBAQCBwcml2YXRlOgogICAgICAg
ICBBRERfQk9PTEVBTl9CSVRGSUVMRChpc1JlbmRlckZyYWdtZW50ZWRGbG93LCBJc1JlbmRlckZy
YWdtZW50ZWRGbG93KTsKICAgICAgICAgQUREX0JPT0xFQU5fQklURklFTEQoaGFzT3V0bGluZUF1
dG9BbmNlc3RvciwgSGFzT3V0bGluZUF1dG9BbmNlc3Rvcik7CiAgICAgICAgIEFERF9CT09MRUFO
X0JJVEZJRUxEKHBhaW50Q29udGFpbm1lbnRBcHBsaWVzLCBQYWludENvbnRhaW5tZW50QXBwbGll
cyk7CisjaWYgRU5BQkxFKExBWUVSX0JBU0VEX1NWR19FTkdJTkUpCisgICAgICAgIEFERF9CT09M
RUFOX0JJVEZJRUxEKGhhc1NWR1RyYW5zZm9ybSwgSGFzU1ZHVHJhbnNmb3JtKTsKKyNlbmRpZgog
CiAgICAgICAgIC8vIEZyb20gUmVuZGVyRWxlbWVudAogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
UmVmZXJlbmNlZFNWR1Jlc291cmNlcz4gcmVmZXJlbmNlZFNWR1Jlc291cmNlczsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAppbmRl
eCBiZGNjNTgxNWI0NjYyN2YwZmYxYzVhMTQ4MDI0MGZmNjU3Yjk0N2VmLi4zNDVkNjM2MTM0ZDVm
ZGJjZjkyNjdiZmNkYWNjNGNmNjJjYjNjNmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCkBAIC01Miw2ICs1MiwzNiBAQCBS
ZW5kZXJTVkdDb250YWluZXI6OlJlbmRlclNWR0NvbnRhaW5lcihTVkdFbGVtZW50JiBlbGVtZW50
LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQogCiBSZW5kZXJTVkdDb250YWluZXI6On5SZW5kZXJTVkdD
b250YWluZXIoKSA9IGRlZmF1bHQ7CiAKKy8vIEhlbHBlciBjbGFzcywgbW92ZSB0byBpdHMgb3du
IGZpbGUgb25jZSB1dGlsaXplZCBpbiBtb3JlIHRoYW4gb25lIHBsYWNlLgorY2xhc3MgU1ZHTGF5
ZXJUcmFuc2Zvcm1VcGRhdGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTVkdMYXllclRy
YW5zZm9ybVVwZGF0ZXIpOworcHVibGljOgorICAgIFNWR0xheWVyVHJhbnNmb3JtVXBkYXRlcihS
ZW5kZXJMYXllck1vZGVsT2JqZWN0JiByZW5kZXJlcikKKyAgICAgICAgOiBtX3JlbmRlcmVyKHJl
bmRlcmVyKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3JlbmRlcmVyLmhhc0xheWVyKCkpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV90cmFuc2Zvcm1SZWZlcmVuY2VCb3ggPSBtX3Jl
bmRlcmVyLnRyYW5zZm9ybVJlZmVyZW5jZUJveFJlY3QoKTsKKyAgICAgICAgbV9yZW5kZXJlci51
cGRhdGVMYXllclRyYW5zZm9ybSgpOworICAgIH0KKworCisgICAgflNWR0xheWVyVHJhbnNmb3Jt
VXBkYXRlcigpCisgICAgeworICAgICAgICBpZiAoIW1fcmVuZGVyZXIuaGFzTGF5ZXIoKSkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKG1fcmVuZGVyZXIudHJhbnNmb3JtUmVmZXJl
bmNlQm94UmVjdCgpID09IG1fdHJhbnNmb3JtUmVmZXJlbmNlQm94KQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIG1fcmVuZGVyZXIudXBkYXRlTGF5ZXJUcmFuc2Zvcm0oKTsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCYgbV9yZW5kZXJlcjsKKyAg
ICBGbG9hdFJlY3QgbV90cmFuc2Zvcm1SZWZlcmVuY2VCb3g7Cit9OworCiB2b2lkIFJlbmRlclNW
R0NvbnRhaW5lcjo6bGF5b3V0KCkKIHsKICAgICBTdGFja1N0YXRzOjpMYXlvdXRDaGVja1BvaW50
IGxheW91dENoZWNrUG9pbnQ7CkBAIC02NCwxMyArOTQsMTAgQEAgdm9pZCBSZW5kZXJTVkdDb250
YWluZXI6OmxheW91dCgpCiAgICAgLy8gVXBkYXRlIGxheWVyIHRyYW5zZm9ybSBiZWZvcmUgbGF5
aW5nIG91dCBjaGlsZHJlbiAoU1ZHIG5lZWRzIGFjY2VzcyB0byB0aGUgdHJhbnNmb3JtIG1hdHJp
Y2VzIGR1cmluZyBsYXlvdXQgZm9yIG9uLXNjcmVlbiB0ZXh0IGZvbnQtc2l6ZSBjYWxjdWxhdGlv
bnMpLgogICAgIC8vIEV2ZW50dWFsbHkgcmUtdXBkYXRlIGlmIHRoZSB0cmFuc2Zvcm0gcmVmZXJl
bmNlIGJveCwgcmVsZXZhbnQgZm9yIHRyYW5zZm9ybS1vcmlnaW4sIGhhcyBjaGFuZ2VkIGR1cmlu
ZyBsYXlvdXQuCiAgICAgewotICAgICAgICAvLyBGSVhNRTogW0xCU0VdIFVwc3RyZWFtIFNWR0xh
eWVyVHJhbnNmb3JtVXBkYXRlcgotICAgICAgICAvLyBTVkdMYXllclRyYW5zZm9ybVVwZGF0ZXIg
dHJhbnNmb3JtVXBkYXRlcigqdGhpcyk7CisgICAgICAgIFNWR0xheWVyVHJhbnNmb3JtVXBkYXRl
ciB1cGRhdGVUcmFuc2Zvcm0oKnRoaXMpOwogICAgICAgICBsYXlvdXRDaGlsZHJlbigpOwogICAg
IH0KIAotICAgIHVwZGF0ZUxheWVySW5mb3JtYXRpb24oKTsKLQogICAgIC8vIEludmFsaWRhdGUg
YWxsIHJlc291cmNlcyBvZiB0aGlzIGNsaWVudCBpZiBvdXIgbGF5b3V0IGNoYW5nZWQuCiAgICAg
aWYgKGV2ZXJIYWRMYXlvdXQoKSAmJiBuZWVkc0xheW91dCgpKQogICAgICAgICBTVkdSZXNvdXJj
ZXNDYWNoZTo6Y2xpZW50TGF5b3V0Q2hhbmdlZCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuaAppbmRleCAwYWQwYjgzNDY1Zjk5
YzMxZTk1YWEzYzc5NzU5YWUzNzc4ZmIzMDE2Li5lMzQ4MmFiOWYwM2ExNWY5MzFhMjk5NjlkMWY2
NTQwNjYwNWY1N2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR0NvbnRhaW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHQ29udGFpbmVyLmgKQEAgLTU1LDcgKzU1LDYgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgdm9pZCBsYXlvdXRDaGlsZHJlbigpOwogICAgIGJvb2wgbm9kZUF0UG9pbnQoY29uc3QgSGl0
VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBsb2Nh
dGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhp
dFRlc3RBY3Rpb24pIG92ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxheWVySW5m
b3JtYXRpb24oKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlVmlld3BvcnQoKTsKICAg
ICB2aXJ0dWFsIGJvb2wgcG9pbnRJc0luc2lkZVZpZXdwb3J0Q2xpcChjb25zdCBGbG9hdFBvaW50
JikgeyByZXR1cm4gdHJ1ZTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCmluZGV4IGIxOTI5NGI2NzU4YzlkMTdiNmM4
NTA5YjIxYWQxNzE0YzE4OTM0ZjguLmM5Njk1ZTZiNmE0M2Y5Y2Y0ZmYwMzk1YWMzNjFhNDMyNjFk
YjhlMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
TW9kZWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHTW9kZWxPYmplY3QuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiUmVuZGVyR2Vv
bWV0cnlNYXAuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlckxh
eWVyTW9kZWxPYmplY3QuaCIKKyNpbmNsdWRlICJSZW5kZXJTVkdNb2RlbE9iamVjdElubGluZXMu
aCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZS5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcu
aCIKICNpbmNsdWRlICJTVkdFbGVtZW50SW5saW5lcy5oIgpAQCAtNTksMTUgKzYwLDEzIEBAIFJl
bmRlclNWR01vZGVsT2JqZWN0OjpSZW5kZXJTVkdNb2RlbE9iamVjdChTVkdFbGVtZW50JiBlbGVt
ZW50LCBSZW5kZXJTdHlsZSYmIHN0CiB2b2lkIFJlbmRlclNWR01vZGVsT2JqZWN0Ojp1cGRhdGVG
cm9tU3R5bGUoKQogewogICAgIFJlbmRlckxheWVyTW9kZWxPYmplY3Q6OnVwZGF0ZUZyb21TdHls
ZSgpOwotICAgIHNldEhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eShzdHlsZSgpLmhhc1RyYW5z
Zm9ybVJlbGF0ZWRQcm9wZXJ0eSgpKTsKIAotICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07
Ci0gICAgaWYgKGlzPFNWR0dyYXBoaWNzRWxlbWVudD4obm9kZUZvck5vbkFub255bW91cygpKSkK
LSAgICAgICAgdHJhbnNmb3JtID0gZG93bmNhc3Q8U1ZHR3JhcGhpY3NFbGVtZW50Pihub2RlRm9y
Tm9uQW5vbnltb3VzKCkpLmFuaW1hdGVkTG9jYWxUcmFuc2Zvcm0oKTsKKyAgICBib29sIGhhc1NW
R1RyYW5zZm9ybSA9IGZhbHNlOworICAgIGlmIChpczxTVkdHcmFwaGljc0VsZW1lbnQ+KGVsZW1l
bnQoKSkpCisgICAgICAgIGhhc1NWR1RyYW5zZm9ybSA9ICFkb3duY2FzdDxTVkdHcmFwaGljc0Vs
ZW1lbnQ+KGVsZW1lbnQoKSkuYW5pbWF0ZWRMb2NhbFRyYW5zZm9ybSgpLmlzSWRlbnRpdHkoKTsK
IAotICAgIC8vIEZJWE1FOiBbTEJTRV0gVXBzdHJlYW0gUmVuZGVyT2JqZWN0IGNoYW5nZXMKLSAg
ICAvLyBpZiAoIXRyYW5zZm9ybS5pc0lkZW50aXR5KCkpCi0gICAgLy8gICAgIHNldEhhc1NWR1Ry
YW5zZm9ybSgpOworICAgIHNldEhhc1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eShzdHlsZSgpLmhh
c1RyYW5zZm9ybVJlbGF0ZWRQcm9wZXJ0eSgpIHx8IGhhc1NWR1RyYW5zZm9ybSk7CisgICAgc2V0
SGFzU1ZHVHJhbnNmb3JtKGhhc1NWR1RyYW5zZm9ybSk7CiB9CiAKIEZsb2F0UmVjdCBSZW5kZXJT
VkdNb2RlbE9iamVjdDo6Ym9yZGVyQm94UmVjdEluRnJhZ21lbnRFcXVpdmFsZW50KFJlbmRlckZy
YWdtZW50Q29udGFpbmVyKiwgUmVuZGVyQm94OjpSZW5kZXJCb3hGcmFnbWVudEluZm9GbGFncykg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3Bw
CmluZGV4IDcxNmVhODMwNjg0NTkzM2NiOGYwNDdhZThhOGQ5ZDI4NTAxYzhkNzUuLjgwYWQ4MDc3
MDBmYTUzZTAxMmQwZjQ5MTE5MTljYmFiODQ0Y2VkZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcApAQCAtMzk2LDggKzM5Niw3IEBAIHZvaWQg
UmVuZGVyU1ZHUm9vdDo6dXBkYXRlRnJvbVN0eWxlKCkKIHsKICAgICBSZW5kZXJSZXBsYWNlZDo6
dXBkYXRlRnJvbVN0eWxlKCk7CiAKLSAgICAvLyBGSVhNRTogW0xCU0VdIFVwc3RyZWFtIFJlbmRl
ck9iamVjdCBjaGFuZ2VzCi0gICAgLy8gc2V0SGFzU1ZHVHJhbnNmb3JtKCk7CisgICAgc2V0SGFz
U1ZHVHJhbnNmb3JtKCk7CiAKICAgICBpZiAoc2hvdWxkQXBwbHlWaWV3cG9ydENsaXAoKSkKICAg
ICAgICAgc2V0SGFzTm9uVmlzaWJsZU92ZXJmbG93KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCmluZGV4IDMyNTU3MjQxOTBiNzIwYWZkMzY2
ODU1ODYyMDE2MGYwZjM4MTAxOWUuLmNhYWY2YjM1YjBlMDUyMDAzZGY5MjAxZWVjMDAwNGQ1NDM1
MWY0MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
U2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hh
cGUuY3BwCkBAIC0xNTQsOCArMTU0LDcgQEAgdm9pZCBSZW5kZXJTVkdTaGFwZTo6bGF5b3V0KCkK
ICAgICAgICAgc2V0TGF5b3V0UmVjdChlbmNsb3NpbmdMYXlvdXRSZWN0KG1fZmlsbEJvdW5kaW5n
Qm94KSk7CiAgICAgfQogCi0gICAgLy8gRklYTUU6IFtMQlNFXSBVcHN0cmVhbSBTVkdMYXllclRy
YW5zZm9ybVVwZGF0ZXIKLSAgICAvLyBTVkdSZW5kZXJTdXBwb3J0Ojp1cGRhdGVMYXllclRyYW5z
Zm9ybSgqdGhpcyk7CisgICAgdXBkYXRlTGF5ZXJUcmFuc2Zvcm0oKTsKIAogICAgIC8vIEludmFs
aWRhdGUgYWxsIHJlc291cmNlcyBvZiB0aGlzIGNsaWVudCBpZiBvdXIgbGF5b3V0IGNoYW5nZWQu
CiAgICAgaWYgKGV2ZXJIYWRMYXlvdXQoKSAmJiBzZWxmTmVlZHNMYXlvdXQoKSkKQEAgLTUzNiw4
ICs1MzUsNyBAQCB2b2lkIFJlbmRlclNWR1NoYXBlOjpzdHlsZVdpbGxDaGFuZ2UoU3R5bGVEaWZm
ZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxlJiBuZQogCiB2b2lkIFJlbmRlclNWR1NoYXBl
OjphcHBseVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBS
ZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gsIE9wdGlvblNl
dDxSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPiBvcHRpb25zKSBjb25zdAog
ewotICAgIC8vIEZJWE1FOiBbTEJTRV0gVXBzdHJlYW0gQ1NTL1NWRyB0cmFuc2Zvcm0gc3VwcG9y
dAotICAgIHN0eWxlLmFwcGx5VHJhbnNmb3JtKHRyYW5zZm9ybSwgYm91bmRpbmdCb3gsIG9wdGlv
bnMpOworICAgIGFwcGx5U1ZHVHJhbnNmb3JtKHRyYW5zZm9ybSwgZ3JhcGhpY3NFbGVtZW50KCks
IHN0eWxlLCBib3VuZGluZ0JveCwgb3B0aW9ucyk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuaAppbmRleCAxOWM2M2NhZjI5MTQxYmY5Yjgw
ZWU0MDQwZTk5ZGM1NDY0NWQyODE2Li5iMzljZDg5YzQ3NmMyNmI3ZjA5ZjA3NDhlYzVmNmE5ZGZk
M2ZhODNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1NoYXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFw
ZS5oCkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKIAogICAgIEZsb2F0UmVjdCBjb21wdXRlTWFy
a2VyQm91bmRpbmdCb3goY29uc3QgU1ZHQm91bmRpbmdCb3hDb21wdXRhdGlvbjo6RGVjb3JhdGlv
bk9wdGlvbnMmKSBjb25zdDsKIAotICAgIHZvaWQgYXBwbHlUcmFuc2Zvcm0oVHJhbnNmb3JtYXRp
b25NYXRyaXgmLCBjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdC
b3gsIE9wdGlvblNldDxSZW5kZXJTdHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPiA9IFJl
bmRlclN0eWxlOjphbGxUcmFuc2Zvcm1PcGVyYXRpb25zKSBjb25zdCBvdmVycmlkZTsKKyAgICB2
b2lkIGFwcGx5VHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgUmVuZGVyU3R5
bGUmLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94LCBPcHRpb25TZXQ8UmVuZGVyU3R5bGU6
OlRyYW5zZm9ybU9wZXJhdGlvbk9wdGlvbj4gPSBSZW5kZXJTdHlsZTo6YWxsVHJhbnNmb3JtT3Bl
cmF0aW9ucykgY29uc3QgZmluYWw7CiAKIHByb3RlY3RlZDoKICAgICB2b2lkIGVsZW1lbnQoKSBj
b25zdCA9IGRlbGV0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1RyYW5zZm9ybWFibGVDb250YWluZXIuY3BwCmluZGV4IDkwMzEy
MmJlOTdjNzUxYTNkNTJhOTRlNzdmOGNhNzVmNjE0NGMxOTUuLmIwMGZiNTBhYTllMDAwMTc5N2Zj
OTU1MDg1ODZhNmIyMTQwNzdmNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyLmNwcApA
QCAtOTcsMTUgKzk3LDEzIEBAIHZvaWQgUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNvbnRhaW5lcjo6
dXBkYXRlRnJvbVN0eWxlKCkKIHsKICAgICBSZW5kZXJTVkdDb250YWluZXI6OnVwZGF0ZUZyb21T
dHlsZSgpOwogCi0gICAgLy8gRklYTUU6IFtMQlNFXSBVcHN0cmVhbSBDU1MvU1ZHIHRyYW5zZm9y
bSBzdXBwb3J0Ci0gICAgLy8gaWYgKGFzc29jaWF0ZWRVc2VFbGVtZW50KGdyYXBoaWNzRWxlbWVu
dCgpKSkKLSAgICAvLyAgICBzZXRIYXNTVkdUcmFuc2Zvcm0oKTsKKyAgICBpZiAoYXNzb2NpYXRl
ZFVzZUVsZW1lbnQoZ3JhcGhpY3NFbGVtZW50KCkpKQorICAgICAgICBzZXRIYXNTVkdUcmFuc2Zv
cm0oKTsKIH0KIAogdm9pZCBSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVyOjphcHBseVRy
YW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBSZW5kZXJTdHls
ZSYgc3R5bGUsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gsIE9wdGlvblNldDxSZW5kZXJT
dHlsZTo6VHJhbnNmb3JtT3BlcmF0aW9uT3B0aW9uPiBvcHRpb25zKSBjb25zdAogewotICAgIC8v
IEZJWE1FOiBbTEJTRV0gVXBzdHJlYW0gQ1NTL1NWRyB0cmFuc2Zvcm0gc3VwcG9ydAotICAgIHN0
eWxlLmFwcGx5VHJhbnNmb3JtKHRyYW5zZm9ybSwgYm91bmRpbmdCb3gsIG9wdGlvbnMpOworICAg
IGFwcGx5U1ZHVHJhbnNmb3JtKHRyYW5zZm9ybSwgZ3JhcGhpY3NFbGVtZW50KCksIHN0eWxlLCBi
b3VuZGluZ0JveCwgb3B0aW9ucyk7CiB9CiAKIHZvaWQgUmVuZGVyU1ZHVHJhbnNmb3JtYWJsZUNv
bnRhaW5lcjo6c3R5bGVXaWxsQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5k
ZXJTdHlsZSYgbmV3U3R5bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3Jh
cGhpY3NFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQu
Y3BwCmluZGV4IDQ0YzVhNmU5YjlhM2Y0NDIyYWIyYjY4MDAzZTA2YzkxMDc3ZDZjZDcuLmUwNzBj
N2E3MzA2MjZhZDVjMjA3ZGVjNzIxODAzMzNlMzUxZWM4MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCkBAIC03Myw2ICs3MywxNSBAQCBBZmZpbmVUcmFuc2Zv
cm0gU1ZHR3JhcGhpY3NFbGVtZW50OjpnZXRTY3JlZW5DVE0oU3R5bGVVcGRhdGVTdHJhdGVneSBz
dHlsZVVwZGF0ZQogCiBBZmZpbmVUcmFuc2Zvcm0gU1ZHR3JhcGhpY3NFbGVtZW50OjphbmltYXRl
ZExvY2FsVHJhbnNmb3JtKCkgY29uc3QKIHsKKyNpZiBFTkFCTEUoTEFZRVJfQkFTRURfU1ZHX0VO
R0lORSkKKyAgICAvLyBMQlNFIGhhbmRsZXMgdHJhbnNmb3JtcyB2aWEgUmVuZGVyTGF5ZXIsIG5v
IG5lZWQgdG8gaGFuZGxlIENTUyB0cmFuc2Zvcm1zIGhlcmUuCisgICAgaWYgKGRvY3VtZW50KCku
c2V0dGluZ3MoKS5sYXllckJhc2VkU1ZHRW5naW5lRW5hYmxlZCgpKSB7CisgICAgICAgIGlmICht
X3N1cHBsZW1lbnRhbFRyYW5zZm9ybSkKKyAgICAgICAgICAgIHJldHVybiAqbV9zdXBwbGVtZW50
YWxUcmFuc2Zvcm0gKiB0cmFuc2Zvcm0oKS5jb25jYXRlbmF0ZSgpOworICAgICAgICByZXR1cm4g
dHJhbnNmb3JtKCkuY29uY2F0ZW5hdGUoKTsKKyAgICB9CisjZW5kaWYKKwogICAgIEFmZmluZVRy
YW5zZm9ybSBtYXRyaXg7CiAKICAgICBhdXRvKiBzdHlsZSA9IHJlbmRlcmVyKCkgPyAmcmVuZGVy
ZXIoKS0+c3R5bGUoKSA6IG51bGxwdHI7Cg==
</data>
<flag name="review"
          id="485798"
          type_id="1"
          status="+"
          setter="rbuis"
    />
    <flag name="commit-queue"
          id="485816"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>