<?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>241167</bug_id>
          
          <creation_ts>2022-05-31 21:30:47 -0700</creation_ts>
          <short_desc>Implement CSSNumericValue.to</short_desc>
          <delta_ts>2022-06-03 13:00:14 -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>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>cdumez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1873227</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-05-31 21:30:47 -0700</bug_when>
    <thetext>Some strange algorithms, but well specified.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1873228</commentid>
    <comment_count>1</comment_count>
      <attachid>459920</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-05-31 21:34:31 -0700</bug_when>
    <thetext>Created attachment 459920
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1873945</commentid>
    <comment_count>2</comment_count>
      <attachid>459920</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-06-03 09:45:30 -0700</bug_when>
    <thetext>Comment on attachment 459920
Patch

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

r=me but please fix the parameter types to use r-value references.

&gt; Source/WebCore/css/typedom/CSSUnitValue.h:53
&gt; +    RefPtr&lt;CSSUnitValue&gt; convertTo(CSSUnitType);

Can this be const?

&gt; Source/WebCore/css/typedom/numeric/CSSMathMax.cpp:42
&gt; +ExceptionOr&lt;Ref&lt;CSSMathMax&gt;&gt; CSSMathMax::create(FixedVector&lt;CSSNumberish&gt; numberishes)

I commented the same thing on an earlier patch but I would really prefer if we used FixedVector&lt;CSSNumberish&gt;&amp;&amp;, especially for copyable types.
While the flexibility to copy or move may sound nice in theory. I fear that people won&apos;t be careful and do unnecessary copies.

&gt; Source/WebCore/css/typedom/numeric/CSSMathMax.cpp:47
&gt; +ExceptionOr&lt;Ref&lt;CSSMathMax&gt;&gt; CSSMathMax::create(Vector&lt;Ref&lt;CSSNumericValue&gt;&gt; values)

Vector&lt;Ref&lt;CSSNumericValue&gt;&gt;&amp;&amp;

&gt; Source/WebCore/css/typedom/numeric/CSSMathMax.cpp:59
&gt; +CSSMathMax::CSSMathMax(Vector&lt;Ref&lt;CSSNumericValue&gt;&gt; values, CSSNumericType type)

Vector&lt;Ref&lt;CSSNumericValue&gt;&gt;&amp;&amp;

&gt; Source/WebCore/css/typedom/numeric/CSSMathMax.cpp:91
&gt; +    for (size_t i = 1; i &lt; valuesArray.size(); i++) {

++i

&gt; Source/WebCore/css/typedom/numeric/CSSMathMin.cpp:40
&gt; +ExceptionOr&lt;Ref&lt;CSSMathMin&gt;&gt; CSSMathMin::create(FixedVector&lt;CSSNumberish&gt; numberishes)

FixedVector&lt;CSSNumberish&gt;&amp;&amp;

&gt; Source/WebCore/css/typedom/numeric/CSSMathMin.cpp:45
&gt; +ExceptionOr&lt;Ref&lt;CSSMathMin&gt;&gt; CSSMathMin::create(Vector&lt;Ref&lt;CSSNumericValue&gt;&gt; values)

Vector&lt;Ref&lt;CSSNumericValue&gt;&gt;&amp;&amp;

&gt; Source/WebCore/css/typedom/numeric/CSSMathMin.cpp:57
&gt; +CSSMathMin::CSSMathMin(Vector&lt;Ref&lt;CSSNumericValue&gt;&gt; values, CSSNumericType type)

Vector&lt;Ref&lt;CSSNumericValue&gt;&gt;&amp;&amp;

&gt; Source/WebCore/css/typedom/numeric/CSSMathSum.cpp:88
&gt; +    auto convertToNumericType= [] (const UnitMap&amp; units) -&gt; std::optional&lt;CSSNumericType&gt; {

missing space before =

&gt; Source/WebCore/css/typedom/numeric/CSSMathSum.cpp:123
&gt; +    for (size_t i = 1; i &lt; values.size(); i++) {

++i</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1873969</commentid>
    <comment_count>3</comment_count>
      <attachid>460018</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-06-03 11:47:11 -0700</bug_when>
    <thetext>Created attachment 460018
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1873988</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-06-03 12:59:36 -0700</bug_when>
    <thetext>Committed r295219 (251276@main): &lt;https://commits.webkit.org/251276@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 460018.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1873990</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-06-03 13:00:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/94361549&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459920</attachid>
            <date>2022-05-31 21:34:31 -0700</date>
            <delta_ts>2022-06-03 11:47:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-241167-20220531213431.patch</filename>
            <type>text/plain</type>
            <size>42983</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">RnJvbSA4NzFhYWE1NmQ5NTVkN2M2MDUyYTM0ODRlYzI1Zjg5MTM0ZjQwZTkwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4IENocmlzdGVuc2VuIDxhY2hyaXN0ZW5zZW5AYXBwbGUu
Y29tPgpEYXRlOiBUdWUsIDMxIE1heSAyMDIyIDIxOjMzOjAwIC0wNzAwClN1YmplY3Q6IFtQQVRD
SF0gSW1wbGVtZW50IENTU051bWVyaWNWYWx1ZS50bwogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTI0MTE2NwoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpUaGlz
IGlzIGFuIG9mZi1ieS1kZWZhdWx0IGV4cGVyaW1lbnRhbCBmZWF0dXJlLgoKKiBMYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHlwZWQtb20vc3R5bGV2
YWx1ZS1zdWJjbGFzc2VzL2Nzc1JvdGF0ZS50ZW50YXRpdmUtZXhwZWN0ZWQudHh0OgoqIExheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10eXBlZC1vbS9z
dHlsZXZhbHVlLXN1YmNsYXNzZXMvbnVtZXJpYy1vYmplY3RzL2Nzc01hdGhWYWx1ZS50ZW50YXRp
dmUtZXhwZWN0ZWQudHh0OgoqIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy10eXBlZC1vbS9zdHlsZXZhbHVlLXN1YmNsYXNzZXMvbnVtZXJpYy1vYmpl
Y3RzL3RvLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQ6CiogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXR5cGVkLW9tL3N0eWxldmFsdWUtc3ViY2xhc3Nl
cy9udW1lcmljLW9iamVjdHMvdG9TdW0udGVudGF0aXZlLWV4cGVjdGVkLnR4dDoKKiBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVW5pdHMuY3BwOgooV2ViQ29yZTo6Y2Fub25pY2FsVW5pdFR5cGUpOiBE
ZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbml0cy5oOgoqIFNvdXJjZS9XZWJDb3Jl
L2Nzcy90eXBlZG9tL0NTU051bWVyaWNWYWx1ZS5jcHA6CihXZWJDb3JlOjpDU1NOdW1lcmljVmFs
dWU6Om1pbik6CihXZWJDb3JlOjpDU1NOdW1lcmljVmFsdWU6Om1heCk6CihXZWJDb3JlOjpDU1NO
dW1lcmljVmFsdWU6OnRvKToKKiBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9DU1NOdW1lcmlj
VmFsdWUuaDoKKiBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9DU1NVbml0VmFsdWUuY3BwOgoo
V2ViQ29yZTo6Q1NTVW5pdFZhbHVlOjpwYXJzZVVuaXQpOgooV2ViQ29yZTo6Q1NTVW5pdFZhbHVl
OjpjcmVhdGUpOgooV2ViQ29yZTo6Q1NTVW5pdFZhbHVlOjpDU1NVbml0VmFsdWUpOgooV2ViQ29y
ZTo6Y29udmVyc2lvblRvQ2Fub25pY2FsVW5pdHNTY2FsZUZhY3Rvcik6CihXZWJDb3JlOjpDU1NV
bml0VmFsdWU6OmNvbnZlcnRUbyk6CihXZWJDb3JlOjpDU1NVbml0VmFsdWU6OnRvU3VtVmFsdWUg
Y29uc3QpOgooV2ViQ29yZTo6bnVtZXJpY1R5cGUpOiBEZWxldGVkLgooV2ViQ29yZTo6cGFyc2VV
bml0KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9DU1NVbml0VmFsdWUu
aDoKKiBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhJbnZlcnQuY3Bw
OgooV2ViQ29yZTo6Q1NTTWF0aEludmVydDo6dG9TdW1WYWx1ZSBjb25zdCk6CiogU291cmNlL1dl
YkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoSW52ZXJ0Lmg6CiogU291cmNlL1dlYkNv
cmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoTWF4LmNwcDoKKFdlYkNvcmU6OkNTU01hdGhN
YXg6OmNyZWF0ZSk6CihXZWJDb3JlOjpDU1NNYXRoTWF4OjpDU1NNYXRoTWF4KToKKFdlYkNvcmU6
OkNTU01hdGhNYXg6OnRvU3VtVmFsdWUgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBl
ZG9tL251bWVyaWMvQ1NTTWF0aE1heC5oOgoqIFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251
bWVyaWMvQ1NTTWF0aE1pbi5jcHA6CihXZWJDb3JlOjpDU1NNYXRoTWluOjpjcmVhdGUpOgooV2Vi
Q29yZTo6Q1NTTWF0aE1pbjo6Q1NTTWF0aE1pbik6CihXZWJDb3JlOjpDU1NNYXRoTWluOjp0b1N1
bVZhbHVlIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01h
dGhNaW4uaDoKKiBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhOZWdh
dGUuY3BwOgooV2ViQ29yZTo6Q1NTTWF0aE5lZ2F0ZTo6dG9TdW1WYWx1ZSBjb25zdCk6CiogU291
cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoTmVnYXRlLmg6CiogU291cmNl
L1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoUHJvZHVjdC5jcHA6CihXZWJDb3Jl
OjpDU1NNYXRoUHJvZHVjdDo6dG9TdW1WYWx1ZSBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvY3Nz
L3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoUHJvZHVjdC5oOgoqIFNvdXJjZS9XZWJDb3JlL2Nzcy90
eXBlZG9tL251bWVyaWMvQ1NTTWF0aFN1bS5jcHA6CihXZWJDb3JlOjpDU1NNYXRoU3VtOjp0b1N1
bVZhbHVlIGNvbnN0KToKKiBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01h
dGhTdW0uaDoKKiBTb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU051bWVyaWNU
eXBlLmNwcDoKKFdlYkNvcmU6OkNTU051bWVyaWNUeXBlOjpjcmVhdGUpOgoqIFNvdXJjZS9XZWJD
b3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTnVtZXJpY1R5cGUuaDoKKFdlYkNvcmU6OkNTU051
bWVyaWNUeXBlOjpvcGVyYXRvciE9IGNvbnN0KToKLS0tCiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VW5pdHMuY3BwICAgICAgICAgICAgICAgfCAgIDUgLQogU291cmNlL1dlYkNvcmUvY3NzL0NTU1Vu
aXRzLmggICAgICAgICAgICAgICAgIHwgICAxIC0KIC4uLi9XZWJDb3JlL2Nzcy90eXBlZG9tL0NT
U051bWVyaWNWYWx1ZS5jcHAgICB8ICA1MyArKysrKystLQogU291cmNlL1dlYkNvcmUvY3NzL3R5
cGVkb20vQ1NTTnVtZXJpY1ZhbHVlLmggIHwgIDEyICstCiBTb3VyY2UvV2ViQ29yZS9jc3MvdHlw
ZWRvbS9DU1NVbml0VmFsdWUuY3BwICAgfCAxMTUgKysrKysrKysrKysrLS0tLS0tCiBTb3VyY2Uv
V2ViQ29yZS9jc3MvdHlwZWRvbS9DU1NVbml0VmFsdWUuaCAgICAgfCAgIDQgKwogLi4uL2Nzcy90
eXBlZG9tL251bWVyaWMvQ1NTTWF0aEludmVydC5jcHAgICAgIHwgIDIxICsrKysKIC4uLi9jc3Mv
dHlwZWRvbS9udW1lcmljL0NTU01hdGhJbnZlcnQuaCAgICAgICB8ICAgMSArCiAuLi4vY3NzL3R5
cGVkb20vbnVtZXJpYy9DU1NNYXRoTWF4LmNwcCAgICAgICAgfCAgNDIgKysrKysrLQogLi4uL1dl
YkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoTWF4LmggIHwgICA3ICstCiAuLi4vY3Nz
L3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoTWluLmNwcCAgICAgICAgfCAgNDQgKysrKysrLQogLi4u
L1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoTWluLmggIHwgICA3ICstCiAuLi4v
Y3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoTmVnYXRlLmNwcCAgICAgfCAgMTEgKysKIC4uLi9j
c3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhOZWdhdGUuaCAgICAgICB8ICAgMSArCiAuLi4vY3Nz
L3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoUHJvZHVjdC5jcHAgICAgfCAgMzMgKysrKysKIC4uLi9j
c3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhQcm9kdWN0LmggICAgICB8ICAgMSArCiAuLi4vY3Nz
L3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoU3VtLmNwcCAgICAgICAgfCAgNDkgKysrKysrKysKIC4u
Li9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aFN1bS5oICB8ICAgMSArCiAuLi4v
Y3NzL3R5cGVkb20vbnVtZXJpYy9DU1NOdW1lcmljVHlwZS5jcHAgICAgfCAgMzcgKysrKysrCiAu
Li4vY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NOdW1lcmljVHlwZS5oICAgICAgfCAgIDggKy0KIC4u
Li9jc3NSb3RhdGUudGVudGF0aXZlLWV4cGVjdGVkLnR4dCAgICAgICAgICB8ICAgMiArLQogLi4u
L2Nzc01hdGhWYWx1ZS50ZW50YXRpdmUtZXhwZWN0ZWQudHh0ICAgICAgIHwgICA0ICstCiAuLi4v
bnVtZXJpYy1vYmplY3RzL3RvLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQgfCAgMzAgKystLS0KIC4u
Li90b1N1bS50ZW50YXRpdmUtZXhwZWN0ZWQudHh0ICAgICAgICAgICAgICB8ICAgMiArLQogMjQg
ZmlsZXMgY2hhbmdlZCwgMzk1IGluc2VydGlvbnMoKyksIDk2IGRlbGV0aW9ucygtKQoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbml0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTVW5pdHMuY3BwCmluZGV4IDVmZGE0NTI2ZTJlYi4uMTFkNTRhMjYzNzNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5pdHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NVbml0cy5jcHAKQEAgLTE0NywxMSArMTQ3LDYgQEAgQ1NTVW5pdFR5cGUgY2Fub25p
Y2FsVW5pdFR5cGVGb3JDYXRlZ29yeShDU1NVbml0Q2F0ZWdvcnkgY2F0ZWdvcnkpCiAgICAgcmV0
dXJuIENTU1VuaXRUeXBlOjpDU1NfVU5LTk9XTjsKIH0KIAotQ1NTVW5pdFR5cGUgY2Fub25pY2Fs
VW5pdFR5cGUoQ1NTVW5pdFR5cGUgdW5pdFR5cGUpCi17Ci0gICAgcmV0dXJuIGNhbm9uaWNhbFVu
aXRUeXBlRm9yQ2F0ZWdvcnkodW5pdENhdGVnb3J5KHVuaXRUeXBlKSk7Ci19Ci0KIFRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIENTU1VuaXRDYXRlZ29yeSBjYXRlZ29yeSkK
IHsKICAgICBzd2l0Y2ggKGNhdGVnb3J5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTVW5pdHMuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbml0cy5oCmluZGV4IDVkYTBh
Y2ZiMTE0MC4uMjBlNjI2MWU1OGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VW5pdHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5pdHMuaApAQCAtMTQ2LDcgKzE0
Niw2IEBAIGVudW0gY2xhc3MgQ1NTVW5pdENhdGVnb3J5IDogdWludDhfdCB7CiAKIENTU1VuaXRD
YXRlZ29yeSB1bml0Q2F0ZWdvcnkoQ1NTVW5pdFR5cGUpOwogQ1NTVW5pdFR5cGUgY2Fub25pY2Fs
VW5pdFR5cGVGb3JDYXRlZ29yeShDU1NVbml0Q2F0ZWdvcnkpOwotQ1NTVW5pdFR5cGUgY2Fub25p
Y2FsVW5pdFR5cGUoQ1NTVW5pdFR5cGUpOwogCiBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
V1RGOjpUZXh0U3RyZWFtJiwgQ1NTVW5pdENhdGVnb3J5KTsKIFdURjo6VGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBDU1NVbml0VHlwZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9DU1NOdW1lcmljVmFsdWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL3R5cGVkb20vQ1NTTnVtZXJpY1ZhbHVlLmNwcAppbmRleCBiZjVmZDA4OGIwYzMuLjY4
MDg1YzRhODAwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vQ1NTTnVt
ZXJpY1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9DU1NOdW1lcmlj
VmFsdWUuY3BwCkBAIC0xOTQsMTAgKzE5NCwxMCBAQCBFeGNlcHRpb25PcjxSZWY8Q1NTTnVtZXJp
Y1ZhbHVlPj4gQ1NTTnVtZXJpY1ZhbHVlOjptaW4oRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPgog
ICAgIGlmIChhdXRvIHJlc3VsdCA9IG9wZXJhdGlvbk9uVmFsdWVzT2ZTYW1lVW5pdDxjb25zdCBk
b3VibGUmKCopKGNvbnN0IGRvdWJsZSYsIGNvbnN0IGRvdWJsZSYpPihzdGQ6Om1pbjxkb3VibGU+
LCB2YWx1ZXMpKQogICAgICAgICByZXR1cm4geyAqcmVzdWx0IH07CiAKLSAgICBpZiAoIUNTU051
bWVyaWNUeXBlOjphZGRUeXBlcyh2YWx1ZXMpKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
VHlwZUVycm9yIH07Ci0KLSAgICByZXR1cm4geyBDU1NNYXRoTWluOjpjcmVhdGUoV1RGTW92ZSh2
YWx1ZXMpKSB9OworICAgIGF1dG8gcmVzdWx0ID0gQ1NTTWF0aE1pbjo6Y3JlYXRlKFdURk1vdmUo
dmFsdWVzKSk7CisgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJu
IHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisgICAgcmV0dXJuIHsgcmVzdWx0LnJlbGVhc2VS
ZXR1cm5WYWx1ZSgpIH07CiB9CiAKIEV4Y2VwdGlvbk9yPFJlZjxDU1NOdW1lcmljVmFsdWU+PiBD
U1NOdW1lcmljVmFsdWU6Om1heChGaXhlZFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYgbnVtYmVyaXNo
ZXMpCkBAIC0yMDgsMTAgKzIwOCwxMCBAQCBFeGNlcHRpb25PcjxSZWY8Q1NTTnVtZXJpY1ZhbHVl
Pj4gQ1NTTnVtZXJpY1ZhbHVlOjptYXgoRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPgogICAgIGlm
IChhdXRvIHJlc3VsdCA9IG9wZXJhdGlvbk9uVmFsdWVzT2ZTYW1lVW5pdDxjb25zdCBkb3VibGUm
KCopKGNvbnN0IGRvdWJsZSYsIGNvbnN0IGRvdWJsZSYpPihzdGQ6Om1heDxkb3VibGU+LCB2YWx1
ZXMpKQogICAgICAgICByZXR1cm4geyAqcmVzdWx0IH07CiAKLSAgICBpZiAoIUNTU051bWVyaWNU
eXBlOjphZGRUeXBlcyh2YWx1ZXMpKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVy
cm9yIH07Ci0KLSAgICByZXR1cm4geyBDU1NNYXRoTWF4OjpjcmVhdGUoV1RGTW92ZSh2YWx1ZXMp
KSB9OworICAgIGF1dG8gcmVzdWx0ID0gQ1NTTWF0aE1heDo6Y3JlYXRlKFdURk1vdmUodmFsdWVz
KSk7CisgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIHJlc3Vs
dC5yZWxlYXNlRXhjZXB0aW9uKCk7CisgICAgcmV0dXJuIHsgcmVzdWx0LnJlbGVhc2VSZXR1cm5W
YWx1ZSgpIH07CiB9CiAKIFJlZjxDU1NOdW1lcmljVmFsdWU+IENTU051bWVyaWNWYWx1ZTo6cmVj
dGlmeU51bWJlcmlzaChDU1NOdW1iZXJpc2gmJiBudW1iZXJpc2gpCkBAIC0yMzMsMTIgKzIzMyw0
MSBAQCBib29sIENTU051bWVyaWNWYWx1ZTo6ZXF1YWxzKEZpeGVkVmVjdG9yPENTU051bWJlcmlz
aD4mJiB2YWx1ZSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJlZjxDU1NVbml0VmFsdWU+IENT
U051bWVyaWNWYWx1ZTo6dG8oU3RyaW5nJiYgdW5pdCkKK0V4Y2VwdGlvbk9yPFJlZjxDU1NVbml0
VmFsdWU+PiBDU1NOdW1lcmljVmFsdWU6OnRvKFN0cmluZyYmIHVuaXQpCit7CisgICAgcmV0dXJu
IHRvKENTU1VuaXRWYWx1ZTo6cGFyc2VVbml0KHVuaXQpKTsKK30KKworRXhjZXB0aW9uT3I8UmVm
PENTU1VuaXRWYWx1ZT4+IENTU051bWVyaWNWYWx1ZTo6dG8oQ1NTVW5pdFR5cGUgdW5pdCkKIHsK
LSAgICBVTlVTRURfUEFSQU0odW5pdCk7CiAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3NzLWhvdWRp
bmkub3JnL2Nzcy10eXBlZC1vbS8jZG9tLWNzc251bWVyaWN2YWx1ZS10bwotICAgIC8vIEZJWE1F
OiBhZGQgaW1wbC4KLSAgICByZXR1cm4gQ1NTVW5pdFZhbHVlOjpjcmVhdGUoMS4wLCBDU1NVbml0
VHlwZTo6Q1NTX05VTUJFUik7CisgICAgYXV0byB0eXBlID0gQ1NTTnVtZXJpY1R5cGU6OmNyZWF0
ZSh1bml0KTsKKyAgICBpZiAoIXR5cGUpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTeW50
YXhFcnJvciB9OworCisgICAgYXV0byBzdW1WYWx1ZSA9IHRvU3VtVmFsdWUoKTsKKyAgICBpZiAo
IXN1bVZhbHVlIHx8IHN1bVZhbHVlLT5zaXplKCkgIT0gMSkKKyAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IFR5cGVFcnJvciB9OworCisgICAgYXV0byYgYWRkZW5kID0gKCpzdW1WYWx1ZSlbMF07
CisgICAgYXV0byB1bmNvbnZlcnRlZCA9IFtdIChjb25zdCBhdXRvJiBhZGRlbmQpIC0+IFJlZlB0
cjxDU1NVbml0VmFsdWU+IHsKKyAgICAgICAgc3dpdGNoIChhZGRlbmQudW5pdHMuc2l6ZSgpKSB7
CisgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgIHJldHVybiBDU1NVbml0VmFsdWU6OmNyZWF0
ZShhZGRlbmQudmFsdWUsIENTU1VuaXRUeXBlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAgY2FzZSAx
OgorICAgICAgICAgICAgcmV0dXJuIENTU1VuaXRWYWx1ZTo6Y3JlYXRlKGFkZGVuZC52YWx1ZSwg
YWRkZW5kLnVuaXRzLmJlZ2luKCktPmtleSk7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9IChhZGRl
bmQpOworICAgIGlmICghdW5jb252ZXJ0ZWQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBU
eXBlRXJyb3IgfTsKKworICAgIGF1dG8gY29udmVydGVkID0gdW5jb252ZXJ0ZWQtPmNvbnZlcnRU
byh1bml0KTsKKyAgICBpZiAoIWNvbnZlcnRlZCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IFR5cGVFcnJvciB9OworICAgIHJldHVybiBjb252ZXJ0ZWQucmVsZWFzZU5vbk51bGwoKTsKIH0K
IAogRXhjZXB0aW9uT3I8UmVmPENTU01hdGhTdW0+PiBDU1NOdW1lcmljVmFsdWU6OnRvU3VtKEZp
eGVkVmVjdG9yPFN0cmluZz4mJiB1bml0cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy90eXBlZG9tL0NTU051bWVyaWNWYWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20v
Q1NTTnVtZXJpY1ZhbHVlLmgKaW5kZXggMmRlMmIzNzNkNDA2Li5jMTNhNWM2Y2VhNDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL0NTU051bWVyaWNWYWx1ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL0NTU051bWVyaWNWYWx1ZS5oCkBAIC01NSw3ICs1
NSw4IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIGVxdWFscyhGaXhlZFZlY3RvcjxDU1NOdW1i
ZXJpc2g+JiYpOwogICAgIAotICAgIFJlZjxDU1NVbml0VmFsdWU+IHRvKFN0cmluZyYmKTsKKyAg
ICBFeGNlcHRpb25PcjxSZWY8Q1NTVW5pdFZhbHVlPj4gdG8oU3RyaW5nJiYpOworICAgIEV4Y2Vw
dGlvbk9yPFJlZjxDU1NVbml0VmFsdWU+PiB0byhDU1NVbml0VHlwZSk7CiAgICAgRXhjZXB0aW9u
T3I8UmVmPENTU01hdGhTdW0+PiB0b1N1bShGaXhlZFZlY3RvcjxTdHJpbmc+JiYpOwogCiAgICAg
Y29uc3QgQ1NTTnVtZXJpY1R5cGUmIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KQEAg
LTY1LDYgKzY2LDE1IEBAIHB1YmxpYzoKIAogICAgIENTU1N0eWxlVmFsdWVUeXBlIGdldFR5cGUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBDU1NTdHlsZVZhbHVlVHlwZTo6Q1NTTnVtZXJpY1Zh
bHVlOyB9CiAKKyAgICAvLyBodHRwczovL2RyYWZ0cy5jc3MtaG91ZGluaS5vcmcvY3NzLXR5cGVk
LW9tLyNzdW0tdmFsdWUtdmFsdWUKKyAgICB1c2luZyBVbml0TWFwID0gSGFzaE1hcDxDU1NVbml0
VHlwZSwgaW50LCBXVEY6OkludEhhc2g8Q1NTVW5pdFR5cGU+LCBXVEY6OlN0cm9uZ0VudW1IYXNo
VHJhaXRzPENTU1VuaXRUeXBlPj47CisgICAgc3RydWN0IEFkZGVuZCB7CisgICAgICAgIGRvdWJs
ZSB2YWx1ZTsKKyAgICAgICAgVW5pdE1hcCB1bml0czsKKyAgICB9OworICAgIHVzaW5nIFN1bVZh
bHVlID0gVmVjdG9yPEFkZGVuZD47CisgICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFN1bVZhbHVl
PiB0b1N1bVZhbHVlKCkgY29uc3QgPSAwOworCiBwcm90ZWN0ZWQ6CiAgICAgRXhjZXB0aW9uT3I8
UmVmPENTU051bWVyaWNWYWx1ZT4+IGFkZEludGVybmFsKFZlY3RvcjxSZWY8Q1NTTnVtZXJpY1Zh
bHVlPj4mJik7CiAgICAgRXhjZXB0aW9uT3I8UmVmPENTU051bWVyaWNWYWx1ZT4+IG11bHRpcGx5
SW50ZXJuYWwoVmVjdG9yPFJlZjxDU1NOdW1lcmljVmFsdWU+PiYmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL0NTU1VuaXRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvdHlwZWRvbS9DU1NVbml0VmFsdWUuY3BwCmluZGV4IDNlMjAxOGRlNjZkZi4uODA3Y2Vm
Y2FjNzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9DU1NVbml0VmFs
dWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL0NTU1VuaXRWYWx1ZS5jcHAK
QEAgLTQwLDQzICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FM
TE9DQVRFRF9JTVBMKENTU1VuaXRWYWx1ZSk7CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPENTU051
bWVyaWNUeXBlPiBudW1lcmljVHlwZShDU1NVbml0VHlwZSB1bml0KQotewotICAgIC8vIGh0dHBz
Oi8vZHJhZnRzLmNzcy1ob3VkaW5pLm9yZy9jc3MtdHlwZWQtb20vI2Nzc251bWVyaWN2YWx1ZS1j
cmVhdGUtYS10eXBlCi0gICAgQ1NTTnVtZXJpY1R5cGUgdHlwZTsKLSAgICBzd2l0Y2ggKHVuaXRD
YXRlZ29yeSh1bml0KSkgewotICAgIGNhc2UgQ1NTVW5pdENhdGVnb3J5OjpOdW1iZXI6Ci0gICAg
ICAgIHJldHVybiB7IFdURk1vdmUodHlwZSkgfTsKLSAgICBjYXNlIENTU1VuaXRDYXRlZ29yeTo6
UGVyY2VudDoKLSAgICAgICAgdHlwZS5wZXJjZW50ID0gMTsKLSAgICAgICAgcmV0dXJuIHsgV1RG
TW92ZSh0eXBlKSB9OwotICAgIGNhc2UgQ1NTVW5pdENhdGVnb3J5OjpMZW5ndGg6Ci0gICAgICAg
IHR5cGUubGVuZ3RoID0gMTsKLSAgICAgICAgcmV0dXJuIHsgV1RGTW92ZSh0eXBlKSB9OwotICAg
IGNhc2UgQ1NTVW5pdENhdGVnb3J5OjpBbmdsZToKLSAgICAgICAgdHlwZS5hbmdsZSA9IDE7Ci0g
ICAgICAgIHJldHVybiB7IFdURk1vdmUodHlwZSkgfTsKLSAgICBjYXNlIENTU1VuaXRDYXRlZ29y
eTo6VGltZToKLSAgICAgICAgdHlwZS50aW1lID0gMTsKLSAgICAgICAgcmV0dXJuIHsgV1RGTW92
ZSh0eXBlKSB9OwotICAgIGNhc2UgQ1NTVW5pdENhdGVnb3J5OjpGcmVxdWVuY3k6Ci0gICAgICAg
IHR5cGUuZnJlcXVlbmN5ID0gMTsKLSAgICAgICAgcmV0dXJuIHsgV1RGTW92ZSh0eXBlKSB9Owot
ICAgIGNhc2UgQ1NTVW5pdENhdGVnb3J5OjpSZXNvbHV0aW9uOgotICAgICAgICB0eXBlLnJlc29s
dXRpb24gPSAxOwotICAgICAgICByZXR1cm4geyBXVEZNb3ZlKHR5cGUpIH07Ci0gICAgY2FzZSBD
U1NVbml0Q2F0ZWdvcnk6Ok90aGVyOgotICAgICAgICBpZiAodW5pdCA9PSBDU1NVbml0VHlwZTo6
Q1NTX0ZSKSB7Ci0gICAgICAgICAgICB0eXBlLmZsZXggPSAxOwotICAgICAgICAgICAgcmV0dXJu
IHsgV1RGTW92ZSh0eXBlKSB9OwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAg
ICAKLSAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotfQotCi1zdGF0aWMgQ1NTVW5pdFR5cGUgcGFy
c2VVbml0KGNvbnN0IFN0cmluZyYgdW5pdCkKK0NTU1VuaXRUeXBlIENTU1VuaXRWYWx1ZTo6cGFy
c2VVbml0KGNvbnN0IFN0cmluZyYgdW5pdCkKIHsKICAgICBpZiAodW5pdCA9PSAibnVtYmVyIl9z
KQogICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVI7CkBAIC0xMjIsNyArODYs
NyBAQCBFeGNlcHRpb25PcjxSZWY8Q1NTVW5pdFZhbHVlPj4gQ1NTVW5pdFZhbHVlOjpjcmVhdGUo
ZG91YmxlIHZhbHVlLCBjb25zdCBTdHJpbmcmCiAgICAgYXV0byBwYXJzZWRVbml0ID0gcGFyc2VV
bml0KHVuaXQpOwogICAgIGlmIChwYXJzZWRVbml0ID09IENTU1VuaXRUeXBlOjpDU1NfVU5LTk9X
TikKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9OwotICAgIGF1dG8gdHlw
ZSA9IG51bWVyaWNUeXBlKHBhcnNlZFVuaXQpOworICAgIGF1dG8gdHlwZSA9IENTU051bWVyaWNU
eXBlOjpjcmVhdGUocGFyc2VkVW5pdCk7CiAgICAgaWYgKCF0eXBlKQogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgVHlwZUVycm9yIH07CiAgICAgYXV0byB1bml0VmFsdWUgPSBhZG9wdFJlZigq
bmV3IENTU1VuaXRWYWx1ZSh2YWx1ZSwgcGFyc2VkVW5pdCkpOwpAQCAtMTMxLDEyICs5NSw4NSBA
QCBFeGNlcHRpb25PcjxSZWY8Q1NTVW5pdFZhbHVlPj4gQ1NTVW5pdFZhbHVlOjpjcmVhdGUoZG91
YmxlIHZhbHVlLCBjb25zdCBTdHJpbmcmCiB9CiAKIENTU1VuaXRWYWx1ZTo6Q1NTVW5pdFZhbHVl
KGRvdWJsZSB2YWx1ZSwgQ1NTVW5pdFR5cGUgdW5pdCkKLSAgICA6IENTU051bWVyaWNWYWx1ZShu
dW1lcmljVHlwZSh1bml0KS52YWx1ZV9vcihDU1NOdW1lcmljVHlwZSgpKSkKKyAgICA6IENTU051
bWVyaWNWYWx1ZShDU1NOdW1lcmljVHlwZTo6Y3JlYXRlKHVuaXQpLnZhbHVlX29yKENTU051bWVy
aWNUeXBlKCkpKQogICAgICwgbV92YWx1ZSh2YWx1ZSkKICAgICAsIG1fdW5pdCh1bml0KQogewog
fQogCitzdGF0aWMgZG91YmxlIGNvbnZlcnNpb25Ub0Nhbm9uaWNhbFVuaXRzU2NhbGVGYWN0b3Io
Q1NTVW5pdFR5cGUgdW5pdCkKK3sKKyAgICBjb25zdGV4cHIgZG91YmxlIHBpeGVsc1BlckluY2gg
PSA5NjsKKyAgICBjb25zdGV4cHIgZG91YmxlIHBpeGVsc1BlckNlbnRpbWV0ZXIgPSBwaXhlbHNQ
ZXJJbmNoIC8gMi41NDsKKyAgICBjb25zdGV4cHIgZG91YmxlIHBvaW50c1BlckluY2ggPSA3MjsK
KyAgICBjb25zdGV4cHIgZG91YmxlIHBpY2FzUGVySW5jaCA9IDY7CisKKyAgICBzd2l0Y2ggKHVu
aXQpIHsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfTVM6CisgICAgICAgIHJldHVybiAwLjAw
MTsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ006CisgICAgICAgIHJldHVybiBwaXhlbHNQ
ZXJDZW50aW1ldGVyOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19EUENNOgorICAgICAgICBy
ZXR1cm4gMS4wIC8gcGl4ZWxzUGVyQ2VudGltZXRlcjsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpD
U1NfTU06CisgICAgICAgIHJldHVybiBwaXhlbHNQZXJDZW50aW1ldGVyIC8gMTA7CisgICAgY2Fz
ZSBDU1NVbml0VHlwZTo6Q1NTX1E6CisgICAgICAgIHJldHVybiBwaXhlbHNQZXJDZW50aW1ldGVy
IC8gNDA7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0lOOgorICAgICAgICByZXR1cm4gcGl4
ZWxzUGVySW5jaDsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfRFBJOgorICAgICAgICByZXR1
cm4gMS4wIC8gcGl4ZWxzUGVySW5jaDsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUFQ6Cisg
ICAgICAgIHJldHVybiBwaXhlbHNQZXJJbmNoIC8gcG9pbnRzUGVySW5jaDsKKyAgICBjYXNlIENT
U1VuaXRUeXBlOjpDU1NfUEM6CisgICAgICAgIHJldHVybiBwaXhlbHNQZXJJbmNoIC8gcGljYXNQ
ZXJJbmNoOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19SQUQ6CisgICAgICAgIHJldHVybiAx
ODAgLyBwaURvdWJsZTsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfR1JBRDoKKyAgICAgICAg
cmV0dXJuIDAuOTsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfVFVSTjoKKyAgICAgICAgcmV0
dXJuIDM2MDsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfS0haOgorICAgICAgICByZXR1cm4g
MTAwMDsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gMS4wOworICAgIH0KK30KKworUmVm
UHRyPENTU1VuaXRWYWx1ZT4gQ1NTVW5pdFZhbHVlOjpjb252ZXJ0VG8oQ1NTVW5pdFR5cGUgdW5p
dCkKK3sKKyAgICAvLyBodHRwczovL2RyYWZ0cy5jc3MtaG91ZGluaS5vcmcvY3NzLXR5cGVkLW9t
LyNjb252ZXJ0LWEtY3NzdW5pdHZhbHVlCisgICAgaWYgKHVuaXRDYXRlZ29yeSh1bml0RW51bSgp
KSAhPSB1bml0Q2F0ZWdvcnkodW5pdCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
cmV0dXJuIGNyZWF0ZShtX3ZhbHVlICogY29udmVyc2lvblRvQ2Fub25pY2FsVW5pdHNTY2FsZUZh
Y3Rvcih1bml0RW51bSgpKSAvIGNvbnZlcnNpb25Ub0Nhbm9uaWNhbFVuaXRzU2NhbGVGYWN0b3Io
dW5pdCksIHVuaXQpOworfQorCithdXRvIENTU1VuaXRWYWx1ZTo6dG9TdW1WYWx1ZSgpIGNvbnN0
IC0+IHN0ZDo6b3B0aW9uYWw8U3VtVmFsdWU+Cit7CisgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nz
LWhvdWRpbmkub3JnL2Nzcy10eXBlZC1vbS8jY3JlYXRlLWEtc3VtLXZhbHVlCisgICAgYXV0byBj
YW5vbmljYWxVbml0ID0gW10gKENTU1VuaXRUeXBlIHVuaXQpIHsKKyAgICAgICAgLy8gRklYTUU6
IFdlIHByb2JhYmx5IHdhbnQgdG8gY2hhbmdlIHRoZSBkZWZpbml0aW9uIG9mIGNhbm9uaWNhbFVu
aXRUeXBlRm9yQ2F0ZWdvcnkgc28gdGhpcyBsYW1iZGEgaXNuJ3QgbmVjZXNzYXJ5LgorICAgICAg
ICBhdXRvIGNhdGVnb3J5ID0gdW5pdENhdGVnb3J5KHVuaXQpOworICAgICAgICBzd2l0Y2ggKGNh
dGVnb3J5KSB7CisgICAgICAgIGNhc2UgQ1NTVW5pdENhdGVnb3J5OjpQZXJjZW50OgorICAgICAg
ICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpDU1NfUEVSQ0VOVEFHRTsKKyAgICAgICAgY2FzZSBD
U1NVbml0Q2F0ZWdvcnk6Ok90aGVyOgorICAgICAgICAgICAgaWYgKHVuaXQgPT0gQ1NTVW5pdFR5
cGU6OkNTU19GUikKKyAgICAgICAgICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OkNTU19GUjsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGNhbm9uaWNhbFVuaXRUeXBlRm9yQ2F0ZWdvcnko
Y2F0ZWdvcnkpOworICAgIH0gKG1fdW5pdCk7CisgICAgYXV0byBjb252ZXJ0ZWRWYWx1ZSA9IG1f
dmFsdWUgKiBjb252ZXJzaW9uVG9DYW5vbmljYWxVbml0c1NjYWxlRmFjdG9yKHVuaXRFbnVtKCkp
IC8gY29udmVyc2lvblRvQ2Fub25pY2FsVW5pdHNTY2FsZUZhY3RvcihjYW5vbmljYWxVbml0KTsK
KworICAgIGlmIChtX3VuaXQgPT0gQ1NTVW5pdFR5cGU6OkNTU19OVU1CRVIpCisgICAgICAgIHJl
dHVybiB7IHsgeyBjb252ZXJ0ZWRWYWx1ZSwgeyB9IH0gfSB9OworICAgIHJldHVybiB7IHsgeyBj
b252ZXJ0ZWRWYWx1ZSwgeyB7IGNhbm9uaWNhbFVuaXQsIDEgfSB9IH0gfSB9OworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL3R5cGVkb20vQ1NTVW5pdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9D
U1NVbml0VmFsdWUuaAppbmRleCBhZmNjOGU0MzUyNjIuLmYwNWEwMzU0YjM0NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vQ1NTVW5pdFZhbHVlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL3R5cGVkb20vQ1NTVW5pdFZhbHVlLmgKQEAgLTUwLDkgKzUwLDEzIEBAIHB1
YmxpYzoKICAgICBBU0NJSUxpdGVyYWwgdW5pdFNlcmlhbGl6YXRpb24oKSBjb25zdDsKICAgICBD
U1NVbml0VHlwZSB1bml0RW51bSgpIGNvbnN0IHsgcmV0dXJuIG1fdW5pdDsgfQogCisgICAgUmVm
UHRyPENTU1VuaXRWYWx1ZT4gY29udmVydFRvKENTU1VuaXRUeXBlKTsKKyAgICBzdGF0aWMgQ1NT
VW5pdFR5cGUgcGFyc2VVbml0KGNvbnN0IFN0cmluZyYgdW5pdCk7CisKIHByaXZhdGU6CiAgICAg
Q1NTVW5pdFZhbHVlKGRvdWJsZSwgQ1NTVW5pdFR5cGUpOwogCisgICAgc3RkOjpvcHRpb25hbDxT
dW1WYWx1ZT4gdG9TdW1WYWx1ZSgpIGNvbnN0IGZpbmFsOwogICAgIENTU1N0eWxlVmFsdWVUeXBl
IGdldFR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDU1NTdHlsZVZhbHVlVHlwZTo6Q1NTVW5p
dFZhbHVlOyB9CiAKICAgICBkb3VibGUgbV92YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aEludmVydC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhJbnZlcnQuY3BwCmluZGV4IGU2MDk2NTEwOTM3
MC4uNzdhOTE4YjU0YjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9u
dW1lcmljL0NTU01hdGhJbnZlcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9t
L251bWVyaWMvQ1NTTWF0aEludmVydC5jcHAKQEAgLTg0LDYgKzg0LDI3IEBAIHZvaWQgQ1NTTWF0
aEludmVydDo6c2VyaWFsaXplKFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIE9wdGlvblNldDxTZXJp
YWxpemF0aW9uQXJnCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcpJyk7CiB9CiAKK2F1dG8gQ1NT
TWF0aEludmVydDo6dG9TdW1WYWx1ZSgpIGNvbnN0IC0+IHN0ZDo6b3B0aW9uYWw8U3VtVmFsdWU+
Cit7CisgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3NzLWhvdWRpbmkub3JnL2Nzcy10eXBlZC1vbS8j
Y3JlYXRlLWEtc3VtLXZhbHVlCisgICAgYXV0byB2YWx1ZXMgPSBtX3ZhbHVlLT50b1N1bVZhbHVl
KCk7CisgICAgaWYgKCF2YWx1ZXMpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAg
aWYgKHZhbHVlcy0+c2l6ZSgpICE9IDEpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgYXV0byYgdmFsdWUgPSAoKnZhbHVlcylbMF07CisgICAgaWYgKCF2YWx1ZS52YWx1ZSkKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB2YWx1ZS52YWx1ZSA9IDEuMCAvIHZhbHVl
LnZhbHVlOworCisgICAgVW5pdE1hcCBuZWdhdGVkRXhwb25lbnRzOworICAgIGZvciAoYXV0byYg
cGFpciA6IHZhbHVlLnVuaXRzKQorICAgICAgICBuZWdhdGVkRXhwb25lbnRzLmFkZChwYWlyLmtl
eSwgLTEgKiBwYWlyLnZhbHVlKTsKKyAgICB2YWx1ZS51bml0cyA9IFdURk1vdmUobmVnYXRlZEV4
cG9uZW50cyk7CisKKyAgICByZXR1cm4gdmFsdWVzOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVt
ZXJpYy9DU1NNYXRoSW52ZXJ0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmlj
L0NTU01hdGhJbnZlcnQuaAppbmRleCBjYjkyMDY5ZDJhNGIuLjFiZjhkYmIzZjU4YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoSW52ZXJ0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoSW52ZXJ0LmgK
QEAgLTQyLDYgKzQyLDcgQEAgcHJpdmF0ZToKICAgICBDU1NNYXRoT3BlcmF0b3IgZ2V0T3BlcmF0
b3IoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDU1NNYXRoT3BlcmF0b3I6OkludmVydDsgfQogICAg
IENTU1N0eWxlVmFsdWVUeXBlIGdldFR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDU1NTdHls
ZVZhbHVlVHlwZTo6Q1NTTWF0aEludmVydDsgfQogICAgIHZvaWQgc2VyaWFsaXplKFN0cmluZ0J1
aWxkZXImLCBPcHRpb25TZXQ8U2VyaWFsaXphdGlvbkFyZ3VtZW50cz4pIGNvbnN0IGZpbmFsOwor
ICAgIHN0ZDo6b3B0aW9uYWw8U3VtVmFsdWU+IHRvU3VtVmFsdWUoKSBjb25zdCBmaW5hbDsKIAog
ICAgIENTU01hdGhJbnZlcnQoQ1NTTnVtYmVyaXNoJiYpOwogICAgIFJlZjxDU1NOdW1lcmljVmFs
dWU+IG1fdmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1l
cmljL0NTU01hdGhNYXguY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9D
U1NNYXRoTWF4LmNwcAppbmRleCA5ZmVlNDg0ZmYyY2EuLmI0ZWE4OTQ4NjY2ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoTWF4LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhNYXguY3BwCkBAIC0z
MCw2ICszMCw4IEBACiAKICNpZiBFTkFCTEUoQ1NTX1RZUEVEX09NKQogCisjaW5jbHVkZSAiRXhj
ZXB0aW9uT3IuaCIKKyNpbmNsdWRlIDx3dGYvQWxnb3JpdGhtcy5oPgogI2luY2x1ZGUgPHd0Zi9J
c29NYWxsb2NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgog
CkBAIC0zNywxMyArMzksMjYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEX0lNUEwoQ1NTTWF0aE1heCk7CiAKLUNTU01hdGhNYXg6OkNTU01hdGhNYXgoRml4
ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIG51bWJlcmlzaGVzKQotICAgIDogbV92YWx1ZXMoQ1NT
TnVtZXJpY0FycmF5OjpjcmVhdGUoV1RGTW92ZShudW1iZXJpc2hlcykpKQorRXhjZXB0aW9uT3I8
UmVmPENTU01hdGhNYXg+PiBDU1NNYXRoTWF4OjpjcmVhdGUoRml4ZWRWZWN0b3I8Q1NTTnVtYmVy
aXNoPiBudW1iZXJpc2hlcykKIHsKKyAgICByZXR1cm4gY3JlYXRlKFdURjo6bWFwKFdURk1vdmUo
bnVtYmVyaXNoZXMpLCByZWN0aWZ5TnVtYmVyaXNoKSk7CiB9CiAKLUNTU01hdGhNYXg6OkNTU01h
dGhNYXgoVmVjdG9yPFJlZjxDU1NOdW1lcmljVmFsdWU+PiYmIHZhbHVlcykKLSAgICA6IG1fdmFs
dWVzKENTU051bWVyaWNBcnJheTo6Y3JlYXRlKFdURk1vdmUodmFsdWVzKSkpCitFeGNlcHRpb25P
cjxSZWY8Q1NTTWF0aE1heD4+IENTU01hdGhNYXg6OmNyZWF0ZShWZWN0b3I8UmVmPENTU051bWVy
aWNWYWx1ZT4+IHZhbHVlcykKK3sKKyAgICBpZiAodmFsdWVzLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9yIH07CisKKyAgICBhdXRvIHR5cGUgPSBDU1NO
dW1lcmljVHlwZTo6YWRkVHlwZXModmFsdWVzKTsKKyAgICBpZiAoIXR5cGUpCisgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IgfTsKKworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IENTU01hdGhNYXgoV1RGTW92ZSh2YWx1ZXMpLCBXVEZNb3ZlKCp0eXBlKSkpOworfQorCitDU1NN
YXRoTWF4OjpDU1NNYXRoTWF4KFZlY3RvcjxSZWY8Q1NTTnVtZXJpY1ZhbHVlPj4gdmFsdWVzLCBD
U1NOdW1lcmljVHlwZSB0eXBlKQorICAgIDogQ1NTTWF0aFZhbHVlKFdURk1vdmUodHlwZSkpCisg
ICAgLCBtX3ZhbHVlcyhDU1NOdW1lcmljQXJyYXk6OmNyZWF0ZShXVEZNb3ZlKHZhbHVlcykpKQog
ewogfQogCkBAIC02Niw2ICs4MSwyNSBAQCB2b2lkIENTU01hdGhNYXg6OnNlcmlhbGl6ZShTdHJp
bmdCdWlsZGVyJiBidWlsZGVyLCBPcHRpb25TZXQ8U2VyaWFsaXphdGlvbkFyZ3VtZQogICAgICAg
ICBidWlsZGVyLmFwcGVuZCgnKScpOwogfQogCithdXRvIENTU01hdGhNYXg6OnRvU3VtVmFsdWUo
KSBjb25zdCAtPiBzdGQ6Om9wdGlvbmFsPFN1bVZhbHVlPgoreworICAgIC8vIGh0dHBzOi8vZHJh
ZnRzLmNzcy1ob3VkaW5pLm9yZy9jc3MtdHlwZWQtb20vI2NyZWF0ZS1hLXN1bS12YWx1ZQorICAg
IGF1dG8mIHZhbHVlc0FycmF5ID0gbV92YWx1ZXMtPmFycmF5KCk7CisgICAgc3RkOjpvcHRpb25h
bDxTdW1WYWx1ZT4gY3VycmVudE1heCA9IHZhbHVlc0FycmF5WzBdLT50b1N1bVZhbHVlKCk7Cisg
ICAgaWYgKCFjdXJyZW50TWF4IHx8IGN1cnJlbnRNYXgtPnNpemUoKSAhPSAxKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgdmFsdWVzQXJy
YXkuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgYXV0byBjdXJyZW50VmFsdWUgPSB2YWx1ZXNBcnJh
eVtpXS0+dG9TdW1WYWx1ZSgpOworICAgICAgICBpZiAoIWN1cnJlbnRWYWx1ZQorICAgICAgICAg
ICAgfHwgY3VycmVudFZhbHVlLT5zaXplKCkgIT0gMQorICAgICAgICAgICAgfHwgKCpjdXJyZW50
VmFsdWUpWzBdLnVuaXRzICE9ICgqY3VycmVudE1heClbMF0udW5pdHMpCisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBpZiAoKCpjdXJyZW50VmFsdWUpWzBdLnZhbHVl
ID4gKCpjdXJyZW50TWF4KVswXS52YWx1ZSkKKyAgICAgICAgICAgIGN1cnJlbnRNYXggPSBXVEZN
b3ZlKGN1cnJlbnRWYWx1ZSk7CisgICAgfQorICAgIHJldHVybiBjdXJyZW50TWF4OworfQorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoTWF4LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
dHlwZWRvbS9udW1lcmljL0NTU01hdGhNYXguaAppbmRleCAzNzFlNjM1OWJiMjUuLjNkMzg5MWQ1
ODZkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NN
YXRoTWF4LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRo
TWF4LmgKQEAgLTM3LDE2ICszNywxNyBAQCBjbGFzcyBDU1NOdW1lcmljQXJyYXk7CiBjbGFzcyBD
U1NNYXRoTWF4IGZpbmFsIDogcHVibGljIENTU01hdGhWYWx1ZSB7CiAgICAgV1RGX01BS0VfSVNP
X0FMTE9DQVRFRChDU1NNYXRoTWF4KTsKIHB1YmxpYzoKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZS4u
LiBBcmdzPiBzdGF0aWMgUmVmPENTU01hdGhNYXg+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykgeyBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NNYXRoTWF4KHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4u
LikpOyB9CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxDU1NNYXRoTWF4Pj4gY3JlYXRlKEZp
eGVkVmVjdG9yPENTU051bWJlcmlzaD4pOworICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8Q1NT
TWF0aE1heD4+IGNyZWF0ZShWZWN0b3I8UmVmPENTU051bWVyaWNWYWx1ZT4+KTsKICAgICBjb25z
dCBDU1NOdW1lcmljQXJyYXkmIHZhbHVlcygpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIENTU01h
dGhPcGVyYXRvciBnZXRPcGVyYXRvcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENTU01hdGhPcGVy
YXRvcjo6TWF4OyB9CiAgICAgQ1NTU3R5bGVWYWx1ZVR5cGUgZ2V0VHlwZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIENTU1N0eWxlVmFsdWVUeXBlOjpDU1NNYXRoTWF4OyB9CiAgICAgdm9pZCBzZXJp
YWxpemUoU3RyaW5nQnVpbGRlciYsIE9wdGlvblNldDxTZXJpYWxpemF0aW9uQXJndW1lbnRzPikg
Y29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxTdW1WYWx1ZT4gdG9TdW1WYWx1ZSgpIGNv
bnN0IGZpbmFsOwogCi0gICAgQ1NTTWF0aE1heChGaXhlZFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYp
OwotICAgIENTU01hdGhNYXgoVmVjdG9yPFJlZjxDU1NOdW1lcmljVmFsdWU+PiYmKTsKKyAgICBD
U1NNYXRoTWF4KFZlY3RvcjxSZWY8Q1NTTnVtZXJpY1ZhbHVlPj4sIENTU051bWVyaWNUeXBlKTsK
ICAgICBSZWY8Q1NTTnVtZXJpY0FycmF5PiBtX3ZhbHVlczsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aE1pbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhNaW4uY3BwCmluZGV4IDlhOTE0NmFi
YzAwYy4uZmEyNDM3OTZkMmM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRv
bS9udW1lcmljL0NTU01hdGhNaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9t
L251bWVyaWMvQ1NTTWF0aE1pbi5jcHAKQEAgLTI2LDEwICsyNiwxMCBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkNTU01hdGhNaW4uaCIKIAotI2luY2x1ZGUgIkNTU051bWVyaWNB
cnJheS5oIgotCiAjaWYgRU5BQkxFKENTU19UWVBFRF9PTSkKIAorI2luY2x1ZGUgIkNTU051bWVy
aWNBcnJheS5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01h
bGxvY0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKQEAg
LTM3LDEzICszNywyNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExP
Q0FURURfSU1QTChDU1NNYXRoTWluKTsKIAotQ1NTTWF0aE1pbjo6Q1NTTWF0aE1pbihGaXhlZFZl
Y3RvcjxDU1NOdW1iZXJpc2g+JiYgbnVtYmVyaXNoZXMpCi0gICAgOiBtX3ZhbHVlcyhDU1NOdW1l
cmljQXJyYXk6OmNyZWF0ZShXVEZNb3ZlKG51bWJlcmlzaGVzKSkpCitFeGNlcHRpb25PcjxSZWY8
Q1NTTWF0aE1pbj4+IENTU01hdGhNaW46OmNyZWF0ZShGaXhlZFZlY3RvcjxDU1NOdW1iZXJpc2g+
IG51bWJlcmlzaGVzKQogeworICAgIHJldHVybiBjcmVhdGUoV1RGOjptYXAoV1RGTW92ZShudW1i
ZXJpc2hlcyksIHJlY3RpZnlOdW1iZXJpc2gpKTsKIH0KIAotQ1NTTWF0aE1pbjo6Q1NTTWF0aE1p
bihWZWN0b3I8UmVmPENTU051bWVyaWNWYWx1ZT4+JiYgdmFsdWVzKQotICAgIDogbV92YWx1ZXMo
Q1NTTnVtZXJpY0FycmF5OjpjcmVhdGUoV1RGTW92ZSh2YWx1ZXMpKSkKK0V4Y2VwdGlvbk9yPFJl
ZjxDU1NNYXRoTWluPj4gQ1NTTWF0aE1pbjo6Y3JlYXRlKFZlY3RvcjxSZWY8Q1NTTnVtZXJpY1Zh
bHVlPj4gdmFsdWVzKQoreworICAgIGlmICh2YWx1ZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgU3ludGF4RXJyb3IgfTsKKworICAgIGF1dG8gdHlwZSA9IENTU051bWVy
aWNUeXBlOjphZGRUeXBlcyh2YWx1ZXMpOworICAgIGlmICghdHlwZSkKKyAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9OworCisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NT
TWF0aE1pbihXVEZNb3ZlKHZhbHVlcyksIFdURk1vdmUoKnR5cGUpKSk7Cit9CisKK0NTU01hdGhN
aW46OkNTU01hdGhNaW4oVmVjdG9yPFJlZjxDU1NOdW1lcmljVmFsdWU+PiB2YWx1ZXMsIENTU051
bWVyaWNUeXBlIHR5cGUpCisgICAgOiBDU1NNYXRoVmFsdWUoV1RGTW92ZSh0eXBlKSkKKyAgICAs
IG1fdmFsdWVzKENTU051bWVyaWNBcnJheTo6Y3JlYXRlKFdURk1vdmUodmFsdWVzKSkpCiB7CiB9
CiAKQEAgLTY2LDYgKzc5LDI1IEBAIHZvaWQgQ1NTTWF0aE1pbjo6c2VyaWFsaXplKFN0cmluZ0J1
aWxkZXImIGJ1aWxkZXIsIE9wdGlvblNldDxTZXJpYWxpemF0aW9uQXJndW1lCiAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCcpJyk7CiB9CiAKK2F1dG8gQ1NTTWF0aE1pbjo6dG9TdW1WYWx1ZSgpIGNv
bnN0IC0+IHN0ZDo6b3B0aW9uYWw8U3VtVmFsdWU+Cit7CisgICAgLy8gaHR0cHM6Ly9kcmFmdHMu
Y3NzLWhvdWRpbmkub3JnL2Nzcy10eXBlZC1vbS8jY3JlYXRlLWEtc3VtLXZhbHVlCisgICAgYXV0
byYgdmFsdWVzQXJyYXkgPSBtX3ZhbHVlcy0+YXJyYXkoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN1
bVZhbHVlPiBjdXJyZW50TWF4ID0gdmFsdWVzQXJyYXlbMF0tPnRvU3VtVmFsdWUoKTsKKyAgICBp
ZiAoIWN1cnJlbnRNYXggfHwgY3VycmVudE1heC0+c2l6ZSgpICE9IDEpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCB2YWx1ZXNBcnJheS5z
aXplKCk7IGkrKykgeworICAgICAgICBhdXRvIGN1cnJlbnRWYWx1ZSA9IHZhbHVlc0FycmF5W2ld
LT50b1N1bVZhbHVlKCk7CisgICAgICAgIGlmICghY3VycmVudFZhbHVlCisgICAgICAgICAgICB8
fCBjdXJyZW50VmFsdWUtPnNpemUoKSAhPSAxCisgICAgICAgICAgICB8fCAoKmN1cnJlbnRWYWx1
ZSlbMF0udW5pdHMgIT0gKCpjdXJyZW50TWF4KVswXS51bml0cykKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGlmICgoKmN1cnJlbnRWYWx1ZSlbMF0udmFsdWUgPCAo
KmN1cnJlbnRNYXgpWzBdLnZhbHVlKQorICAgICAgICAgICAgY3VycmVudE1heCA9IFdURk1vdmUo
Y3VycmVudFZhbHVlKTsKKyAgICB9CisgICAgcmV0dXJuIGN1cnJlbnRNYXg7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhNaW4uaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBl
ZG9tL251bWVyaWMvQ1NTTWF0aE1pbi5oCmluZGV4IDE4M2RkNGRhNTYwYS4uODU5NDY1MTRjODk0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhN
aW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhNaW4u
aApAQCAtMzcsMTYgKzM3LDE3IEBAIGNsYXNzIENTU051bWVyaWNBcnJheTsKIGNsYXNzIENTU01h
dGhNaW4gZmluYWwgOiBwdWJsaWMgQ1NTTWF0aFZhbHVlIHsKICAgICBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEKENTU01hdGhNaW4pOwogcHVibGljOgotICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFy
Z3M+IHN0YXRpYyBSZWY8Q1NTTWF0aE1pbj4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IENTU01hdGhNaW4oc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7
IH0KKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPENTU01hdGhNaW4+PiBjcmVhdGUoRml4ZWRW
ZWN0b3I8Q1NTTnVtYmVyaXNoPik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxDU1NNYXRo
TWluPj4gY3JlYXRlKFZlY3RvcjxSZWY8Q1NTTnVtZXJpY1ZhbHVlPj4pOwogICAgIGNvbnN0IENT
U051bWVyaWNBcnJheSYgdmFsdWVzKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgQ1NTTWF0aE9w
ZXJhdG9yIGdldE9wZXJhdG9yKCkgY29uc3QgZmluYWwgeyByZXR1cm4gQ1NTTWF0aE9wZXJhdG9y
OjpNaW47IH0KICAgICBDU1NTdHlsZVZhbHVlVHlwZSBnZXRUeXBlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gQ1NTU3R5bGVWYWx1ZVR5cGU6OkNTU01hdGhNaW47IH0KICAgICB2b2lkIHNlcmlhbGl6
ZShTdHJpbmdCdWlsZGVyJiwgT3B0aW9uU2V0PFNlcmlhbGl6YXRpb25Bcmd1bWVudHM+KSBjb25z
dCBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN1bVZhbHVlPiB0b1N1bVZhbHVlKCkgY29uc3Qg
ZmluYWw7CiAKLSAgICBDU1NNYXRoTWluKEZpeGVkVmVjdG9yPENTU051bWJlcmlzaD4mJik7Ci0g
ICAgQ1NTTWF0aE1pbihWZWN0b3I8UmVmPENTU051bWVyaWNWYWx1ZT4+JiYpOworICAgIENTU01h
dGhNaW4oVmVjdG9yPFJlZjxDU1NOdW1lcmljVmFsdWU+PiwgQ1NTTnVtZXJpY1R5cGUpOwogICAg
IFJlZjxDU1NOdW1lcmljQXJyYXk+IG1fdmFsdWVzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoTmVnYXRlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aE5lZ2F0ZS5jcHAKaW5kZXggNjgyMWE4
ZTdiZmE3Li4yM2FjOGQyM2FhM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBl
ZG9tL251bWVyaWMvQ1NTTWF0aE5lZ2F0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3R5
cGVkb20vbnVtZXJpYy9DU1NNYXRoTmVnYXRlLmNwcApAQCAtNjYsNiArNjYsMTcgQEAgdm9pZCBD
U1NNYXRoTmVnYXRlOjpzZXJpYWxpemUoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgT3B0aW9uU2V0
PFNlcmlhbGl6YXRpb25BcmcKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyknKTsKIH0KIAorYXV0
byBDU1NNYXRoTmVnYXRlOjp0b1N1bVZhbHVlKCkgY29uc3QgLT4gc3RkOjpvcHRpb25hbDxTdW1W
YWx1ZT4KK3sKKyAgICAvLyBodHRwczovL2RyYWZ0cy5jc3MtaG91ZGluaS5vcmcvY3NzLXR5cGVk
LW9tLyNjcmVhdGUtYS1zdW0tdmFsdWUKKyAgICBhdXRvIHZhbHVlcyA9IG1fdmFsdWUtPnRvU3Vt
VmFsdWUoKTsKKyAgICBpZiAoIXZhbHVlcykKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KyAgICBmb3IgKGF1dG8mIHZhbHVlIDogKnZhbHVlcykKKyAgICAgICAgdmFsdWUudmFsdWUgPSB2
YWx1ZS52YWx1ZSAqIC0xOworICAgIHJldHVybiB2YWx1ZXM7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRv
bS9udW1lcmljL0NTU01hdGhOZWdhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251
bWVyaWMvQ1NTTWF0aE5lZ2F0ZS5oCmluZGV4IGMxNWU2MGExMDlhNy4uZDEzYmQ0NTNiMGZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhOZWdh
dGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhOZWdh
dGUuaApAQCAtNDUsNiArNDUsNyBAQCBwcml2YXRlOgogICAgIENTU01hdGhPcGVyYXRvciBnZXRP
cGVyYXRvcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENTU01hdGhPcGVyYXRvcjo6TmVnYXRlOyB9
CiAgICAgQ1NTU3R5bGVWYWx1ZVR5cGUgZ2V0VHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENT
U1N0eWxlVmFsdWVUeXBlOjpDU1NNYXRoTmVnYXRlOyB9CiAgICAgdm9pZCBzZXJpYWxpemUoU3Ry
aW5nQnVpbGRlciYsIE9wdGlvblNldDxTZXJpYWxpemF0aW9uQXJndW1lbnRzPikgY29uc3QgZmlu
YWw7CisgICAgc3RkOjpvcHRpb25hbDxTdW1WYWx1ZT4gdG9TdW1WYWx1ZSgpIGNvbnN0IGZpbmFs
OwogCiAgICAgQ1NTTWF0aE5lZ2F0ZShDU1NOdW1iZXJpc2gmJik7CiAgICAgUmVmPENTU051bWVy
aWNWYWx1ZT4gbV92YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9t
L251bWVyaWMvQ1NTTWF0aFByb2R1Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20v
bnVtZXJpYy9DU1NNYXRoUHJvZHVjdC5jcHAKaW5kZXggNDEyM2MyOWU5ODE2Li5hY2U2OGZlZTc0
NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0
aFByb2R1Y3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NT
TWF0aFByb2R1Y3QuY3BwCkBAIC04Miw2ICs4MiwzOSBAQCB2b2lkIENTU01hdGhQcm9kdWN0Ojpz
ZXJpYWxpemUoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgT3B0aW9uU2V0PFNlcmlhbGl6YXRpb25B
cgogICAgICAgICBidWlsZGVyLmFwcGVuZCgnKScpOwogfQogCithdXRvIENTU01hdGhQcm9kdWN0
Ojp0b1N1bVZhbHVlKCkgY29uc3QgLT4gc3RkOjpvcHRpb25hbDxTdW1WYWx1ZT4KK3sKKyAgICBh
dXRvIHByb2R1Y3RPZlVuaXRzID0gW10gKGNvbnN0IGF1dG8mIHVuaXRzMSwgY29uc3QgYXV0byYg
dW5pdHMyKSB7CisgICAgICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzcy1ob3VkaW5pLm9yZy9jc3Mt
dHlwZWQtb20vI3Byb2R1Y3Qtb2YtdHdvLXVuaXQtbWFwcworICAgICAgICBhdXRvIHJlc3VsdCA9
IHVuaXRzMTsKKyAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogdW5pdHMyKSB7CisgICAgICAgICAg
ICBhdXRvIGFkZFJlc3VsdCA9IHJlc3VsdC5hZGQocGFpci5rZXksIHBhaXIudmFsdWUpOworICAg
ICAgICAgICAgaWYgKCFhZGRSZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgICAgICBhZGRS
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlICs9IHBhaXIudmFsdWU7CisgICAgICAgICAgICBpZiAoIWFk
ZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUpCisgICAgICAgICAgICAgICAgcmVzdWx0LnJlbW92ZShw
YWlyLmtleSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9OworICAg
IAorICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzcy1ob3VkaW5pLm9yZy9jc3MtdHlwZWQtb20vI2Ny
ZWF0ZS1hLXN1bS12YWx1ZQorICAgIFN1bVZhbHVlIHZhbHVlcyB7IEFkZGVuZCB7IDEuMCwgeyB9
IH0gfTsKKyAgICBmb3IgKGF1dG8mIGl0ZW0gOiBtX3ZhbHVlcy0+YXJyYXkoKSkgeworICAgICAg
ICBhdXRvIG5ld1ZhbHVlcyA9IGl0ZW0tPnRvU3VtVmFsdWUoKTsKKyAgICAgICAgaWYgKCFuZXdW
YWx1ZXMpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBTdW1WYWx1
ZSB0ZW1wOworICAgICAgICBmb3IgKGF1dG8mIGl0ZW0xIDogdmFsdWVzKSB7CisgICAgICAgICAg
ICBmb3IgKGF1dG8mIGl0ZW0yIDogKm5ld1ZhbHVlcykgeworICAgICAgICAgICAgICAgIEFkZGVu
ZCBpdGVtIHsgaXRlbTEudmFsdWUgKiBpdGVtMi52YWx1ZSwgcHJvZHVjdE9mVW5pdHMoaXRlbTEu
dW5pdHMsIGl0ZW0yLnVuaXRzKSB9OworICAgICAgICAgICAgICAgIHRlbXAuYXBwZW5kKFdURk1v
dmUoaXRlbSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHZhbHVlcyA9IFdU
Rk1vdmUodGVtcCk7CisgICAgfQorICAgIHJldHVybiB7IFdURk1vdmUodmFsdWVzKSB9OworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoUHJvZHVjdC5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoUHJvZHVjdC5oCmluZGV4IDEwMmFjNWMwZmI2
Ny4uZDFlZWJiMWQ4OGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9u
dW1lcmljL0NTU01hdGhQcm9kdWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20v
bnVtZXJpYy9DU1NNYXRoUHJvZHVjdC5oCkBAIC00NSw2ICs0NSw3IEBAIHByaXZhdGU6CiAgICAg
Q1NTTWF0aE9wZXJhdG9yIGdldE9wZXJhdG9yKCkgY29uc3QgZmluYWwgeyByZXR1cm4gQ1NTTWF0
aE9wZXJhdG9yOjpQcm9kdWN0OyB9CiAgICAgQ1NTU3R5bGVWYWx1ZVR5cGUgZ2V0VHlwZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIENTU1N0eWxlVmFsdWVUeXBlOjpDU1NNYXRoUHJvZHVjdDsgfQog
ICAgIHZvaWQgc2VyaWFsaXplKFN0cmluZ0J1aWxkZXImLCBPcHRpb25TZXQ8U2VyaWFsaXphdGlv
bkFyZ3VtZW50cz4pIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8U3VtVmFsdWU+IHRvU3VtVmFs
dWUoKSBjb25zdCBmaW5hbDsKIAogICAgIENTU01hdGhQcm9kdWN0KFZlY3RvcjxSZWY8Q1NTTnVt
ZXJpY1ZhbHVlPj4sIENTU051bWVyaWNUeXBlKTsKICAgICBSZWY8Q1NTTnVtZXJpY0FycmF5PiBt
X3ZhbHVlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMv
Q1NTTWF0aFN1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01h
dGhTdW0uY3BwCmluZGV4IDBhYWFhYjc1NmVjOS4uZDMyYzcwYmRkNjg3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhTdW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aFN1bS5jcHAKQEAgLTgzLDYg
KzgzLDU1IEBAIHZvaWQgQ1NTTWF0aFN1bTo6c2VyaWFsaXplKFN0cmluZ0J1aWxkZXImIGJ1aWxk
ZXIsIE9wdGlvblNldDxTZXJpYWxpemF0aW9uQXJndW1lCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCcpJyk7CiB9CiAKK2F1dG8gQ1NTTWF0aFN1bTo6dG9TdW1WYWx1ZSgpIGNvbnN0IC0+IHN0ZDo6
b3B0aW9uYWw8U3VtVmFsdWU+Cit7CisgICAgYXV0byBjb252ZXJ0VG9OdW1lcmljVHlwZT0gW10g
KGNvbnN0IFVuaXRNYXAmIHVuaXRzKSAtPiBzdGQ6Om9wdGlvbmFsPENTU051bWVyaWNUeXBlPiB7
CisgICAgICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzcy1ob3VkaW5pLm9yZy9jc3MtdHlwZWQtb20v
I2NyZWF0ZS1hLXR5cGUtZnJvbS1hLXVuaXQtbWFwCisgICAgICAgIENTU051bWVyaWNUeXBlIHR5
cGU7CisgICAgICAgIGZvciAoYXV0byYgcGFpciA6IHVuaXRzKSB7CisgICAgICAgICAgICBhdXRv
IHVuaXQgPSBDU1NOdW1lcmljVHlwZTo6Y3JlYXRlKHBhaXIua2V5LCBwYWlyLnZhbHVlKTsKKyAg
ICAgICAgICAgIGlmICghdW5pdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgICAgICAgICAgYXV0byBtdWx0aXBsaWVkVHlwZSA9IENTU051bWVyaWNUeXBlOjptdWx0
aXBseVR5cGVzKHR5cGUsICp1bml0KTsKKyAgICAgICAgICAgIGlmICghbXVsdGlwbGllZFR5cGUp
CisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgIHR5cGUg
PSBXVEZNb3ZlKCptdWx0aXBsaWVkVHlwZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHR5
cGU7CisgICAgfTsKKworICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzcy1ob3VkaW5pLm9yZy9jc3Mt
dHlwZWQtb20vI2NyZWF0ZS1hLXN1bS12YWx1ZQorICAgIFN1bVZhbHVlIHZhbHVlczsKKyAgICBm
b3IgKGF1dG8mIGl0ZW0gOiBtX3ZhbHVlcy0+YXJyYXkoKSkgeworICAgICAgICBhdXRvIHZhbHVl
ID0gaXRlbS0+dG9TdW1WYWx1ZSgpOworICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgZm9yIChhdXRvJiBzdWJ2YWx1ZSA6ICp2YWx1
ZSkgeworICAgICAgICAgICAgYXV0byBpbmRleCA9IHZhbHVlcy5maW5kSWYoWyZdKGF1dG8mIHZh
bHVlKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnVuaXRzID09IHN1YnZhbHVlLnVu
aXRzOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQp
CisgICAgICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChXVEZNb3ZlKHN1YnZhbHVlKSk7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdmFsdWVzW2luZGV4XS52YWx1ZSArPSBzdWJ2
YWx1ZS52YWx1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGF1dG8gdHlwZSA9IGNvbnZlcnRU
b051bWVyaWNUeXBlKHZhbHVlc1swXS51bml0cyk7CisgICAgaWYgKCF0eXBlKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwgdmFsdWVzLnNp
emUoKTsgaSsrKSB7CisgICAgICAgIGF1dG8gdGhpc1R5cGUgPSBjb252ZXJ0VG9OdW1lcmljVHlw
ZSh2YWx1ZXNbaV0udW5pdHMpOworICAgICAgICBpZiAoIXRoaXNUeXBlKQorICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgdHlwZSA9IENTU051bWVyaWNUeXBlOjphZGRU
eXBlcygqdHlwZSwgKnRoaXNUeXBlKTsKKyAgICAgICAgaWYgKCF0eXBlKQorICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHsgV1RGTW92ZSh2
YWx1ZXMpIH07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhTdW0uaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aFN1bS5oCmluZGV4IDkxNjhh
NTIyYjM5Yy4uYzA1NWE0NjE0YmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlw
ZWRvbS9udW1lcmljL0NTU01hdGhTdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRv
bS9udW1lcmljL0NTU01hdGhTdW0uaApAQCAtNDYsNiArNDYsNyBAQCBwcml2YXRlOgogICAgIENT
U01hdGhPcGVyYXRvciBnZXRPcGVyYXRvcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENTU01hdGhP
cGVyYXRvcjo6U3VtOyB9CiAgICAgQ1NTU3R5bGVWYWx1ZVR5cGUgZ2V0VHlwZSgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIENTU1N0eWxlVmFsdWVUeXBlOjpDU1NNYXRoU3VtOyB9CiAgICAgdm9p
ZCBzZXJpYWxpemUoU3RyaW5nQnVpbGRlciYsIE9wdGlvblNldDxTZXJpYWxpemF0aW9uQXJndW1l
bnRzPikgY29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxTdW1WYWx1ZT4gdG9TdW1WYWx1
ZSgpIGNvbnN0IGZpbmFsOwogCiAgICAgQ1NTTWF0aFN1bShWZWN0b3I8UmVmPENTU051bWVyaWNW
YWx1ZT4+LCBDU1NOdW1lcmljVHlwZSk7CiAgICAgUmVmPENTU051bWVyaWNBcnJheT4gbV92YWx1
ZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU051
bWVyaWNUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTnVt
ZXJpY1R5cGUuY3BwCmluZGV4IGZjZDY5NGJkZDg5NC4uOTg2MGE5MWM1ZmU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU051bWVyaWNUeXBlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU051bWVyaWNUeXBlLmNw
cApAQCAtMjYsMTEgKzI2LDQ4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ1NT
TnVtZXJpY1R5cGUuaCIKICNpbmNsdWRlICJDU1NOdW1lcmljVmFsdWUuaCIKKyNpbmNsdWRlICJD
U1NVbml0cy5oIgogCiAjaWYgRU5BQkxFKENTU19UWVBFRF9PTSkKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitzdGQ6Om9wdGlvbmFsPENTU051bWVyaWNUeXBlPiBDU1NOdW1lcmljVHlwZTo6Y3Jl
YXRlKENTU1VuaXRUeXBlIHVuaXQsIGludCBleHBvbmVudCkKK3sKKyAgICAvLyBodHRwczovL2Ry
YWZ0cy5jc3MtaG91ZGluaS5vcmcvY3NzLXR5cGVkLW9tLyNjc3NudW1lcmljdmFsdWUtY3JlYXRl
LWEtdHlwZQorICAgIENTU051bWVyaWNUeXBlIHR5cGU7CisgICAgc3dpdGNoICh1bml0Q2F0ZWdv
cnkodW5pdCkpIHsKKyAgICBjYXNlIENTU1VuaXRDYXRlZ29yeTo6TnVtYmVyOgorICAgICAgICBy
ZXR1cm4geyBXVEZNb3ZlKHR5cGUpIH07CisgICAgY2FzZSBDU1NVbml0Q2F0ZWdvcnk6OlBlcmNl
bnQ6CisgICAgICAgIHR5cGUucGVyY2VudCA9IGV4cG9uZW50OworICAgICAgICByZXR1cm4geyBX
VEZNb3ZlKHR5cGUpIH07CisgICAgY2FzZSBDU1NVbml0Q2F0ZWdvcnk6Okxlbmd0aDoKKyAgICAg
ICAgdHlwZS5sZW5ndGggPSBleHBvbmVudDsKKyAgICAgICAgcmV0dXJuIHsgV1RGTW92ZSh0eXBl
KSB9OworICAgIGNhc2UgQ1NTVW5pdENhdGVnb3J5OjpBbmdsZToKKyAgICAgICAgdHlwZS5hbmds
ZSA9IGV4cG9uZW50OworICAgICAgICByZXR1cm4geyBXVEZNb3ZlKHR5cGUpIH07CisgICAgY2Fz
ZSBDU1NVbml0Q2F0ZWdvcnk6OlRpbWU6CisgICAgICAgIHR5cGUudGltZSA9IGV4cG9uZW50Owor
ICAgICAgICByZXR1cm4geyBXVEZNb3ZlKHR5cGUpIH07CisgICAgY2FzZSBDU1NVbml0Q2F0ZWdv
cnk6OkZyZXF1ZW5jeToKKyAgICAgICAgdHlwZS5mcmVxdWVuY3kgPSBleHBvbmVudDsKKyAgICAg
ICAgcmV0dXJuIHsgV1RGTW92ZSh0eXBlKSB9OworICAgIGNhc2UgQ1NTVW5pdENhdGVnb3J5OjpS
ZXNvbHV0aW9uOgorICAgICAgICB0eXBlLnJlc29sdXRpb24gPSBleHBvbmVudDsKKyAgICAgICAg
cmV0dXJuIHsgV1RGTW92ZSh0eXBlKSB9OworICAgIGNhc2UgQ1NTVW5pdENhdGVnb3J5OjpPdGhl
cjoKKyAgICAgICAgaWYgKHVuaXQgPT0gQ1NTVW5pdFR5cGU6OkNTU19GUikgeworICAgICAgICAg
ICAgdHlwZS5mbGV4ID0gZXhwb25lbnQ7CisgICAgICAgICAgICByZXR1cm4geyBXVEZNb3ZlKHR5
cGUpIH07CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIAorICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Cit9CisKIHN0ZDo6b3B0aW9uYWw8Q1NTTnVtZXJpY1R5cGU+IENTU051
bWVyaWNUeXBlOjphZGRUeXBlcyhDU1NOdW1lcmljVHlwZSBhLCBDU1NOdW1lcmljVHlwZSBiKQog
ewogICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzcy1ob3VkaW5pLm9yZy9jc3MtdHlwZWQtb20vI2Nz
c251bWVyaWN2YWx1ZS1hZGQtdHdvLXR5cGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvdHlwZWRvbS9udW1lcmljL0NTU051bWVyaWNUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
dHlwZWRvbS9udW1lcmljL0NTU051bWVyaWNUeXBlLmgKaW5kZXggZjc2NTg3NmFkZWNkLi45YmY1
OGRkMzYxNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMv
Q1NTTnVtZXJpY1R5cGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmlj
L0NTU051bWVyaWNUeXBlLmgKQEAgLTM1LDYgKzM1LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgQ1NTTnVtZXJpY1ZhbHVlOworZW51bSBjbGFzcyBDU1NVbml0VHlwZSA6IHVpbnQ4
X3Q7CiAKIC8vIGh0dHBzOi8vZHJhZnRzLmNzcy1ob3VkaW5pLm9yZy9jc3MtdHlwZWQtb20vI2Rv
bS1jc3NudW1lcmljdmFsdWUtdHlwZQogY2xhc3MgQ1NTTnVtZXJpY1R5cGUgewpAQCAtNDksOSAr
NTAsMTMgQEAgcHVibGljOgogICAgIEJhc2VUeXBlU3RvcmFnZSBwZXJjZW50OwogICAgIE1hcmth
YmxlPENTU051bWVyaWNCYXNlVHlwZSwgRW51bU1hcmthYmxlVHJhaXRzPENTU051bWVyaWNCYXNl
VHlwZT4+IHBlcmNlbnRIaW50OwogCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q1NTTnVtZXJp
Y1R5cGU+IGNyZWF0ZShDU1NVbml0VHlwZSwgaW50IGV4cG9uZW50ID0gMSk7CiAgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IENTU051bWVyaWNUeXBlJiBvdGhlcikgY29uc3Q7CisgICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IENTU051bWVyaWNUeXBlJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgq
dGhpcyA9PSBvdGhlcik7IH0KICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxDU1NOdW1lcmljVHlw
ZT4gYWRkVHlwZXMoY29uc3QgVmVjdG9yPFJlZjxDU1NOdW1lcmljVmFsdWU+PiYpOworICAgIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPENTU051bWVyaWNUeXBlPiBhZGRUeXBlcyhDU1NOdW1lcmljVHlw
ZSwgQ1NTTnVtZXJpY1R5cGUpOwogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENTU051bWVyaWNU
eXBlPiBtdWx0aXBseVR5cGVzKGNvbnN0IFZlY3RvcjxSZWY8Q1NTTnVtZXJpY1ZhbHVlPj4mKTsK
KyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxDU1NOdW1lcmljVHlwZT4gbXVsdGlwbHlUeXBlcyhj
b25zdCBDU1NOdW1lcmljVHlwZSYsIGNvbnN0IENTU051bWVyaWNUeXBlJik7CiAgICAgQmFzZVR5
cGVTdG9yYWdlJiB2YWx1ZUZvclR5cGUoQ1NTTnVtZXJpY0Jhc2VUeXBlKTsKICAgICBjb25zdCBC
YXNlVHlwZVN0b3JhZ2UmIHZhbHVlRm9yVHlwZShDU1NOdW1lcmljQmFzZVR5cGUgdHlwZSkgY29u
c3QgeyByZXR1cm4gY29uc3RfY2FzdDxDU1NOdW1lcmljVHlwZSo+KHRoaXMpLT52YWx1ZUZvclR5
cGUodHlwZSk7IH0KICAgICB2b2lkIGFwcGx5UGVyY2VudEhpbnQoQ1NTTnVtZXJpY0Jhc2VUeXBl
KTsKQEAgLTgwLDkgKzg1LDYgQEAgcHVibGljOgogICAgIH0KIAogICAgIFN0cmluZyBkZWJ1Z1N0
cmluZygpIGNvbnN0OwotcHJpdmF0ZToKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxDU1NOdW1l
cmljVHlwZT4gYWRkVHlwZXMoQ1NTTnVtZXJpY1R5cGUsIENTU051bWVyaWNUeXBlKTsKLSAgICBz
dGF0aWMgc3RkOjpvcHRpb25hbDxDU1NOdW1lcmljVHlwZT4gbXVsdGlwbHlUeXBlcyhjb25zdCBD
U1NOdW1lcmljVHlwZSYsIGNvbnN0IENTU051bWVyaWNUeXBlJik7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHlwZWQtb20vc3R5bGV2YWx1ZS1zdWJjbGFzc2VzL2Nzc1Jv
dGF0ZS50ZW50YXRpdmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXR5cGVkLW9tL3N0eWxldmFsdWUtc3ViY2xhc3Nlcy9j
c3NSb3RhdGUudGVudGF0aXZlLWV4cGVjdGVkLnR4dAppbmRleCAxZWI2ZDFjNjNkOTMuLjE4YzFm
MWE1NmViOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLXR5cGVkLW9tL3N0eWxldmFsdWUtc3ViY2xhc3Nlcy9jc3NSb3RhdGUu
dGVudGF0aXZlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHlwZWQtb20vc3R5bGV2YWx1ZS1zdWJjbGFzc2VzL2Nz
c1JvdGF0ZS50ZW50YXRpdmUtZXhwZWN0ZWQudHh0CkBAIC0xMyw3ICsxMyw3IEBAIFBBU1MgVXBk
YXRpbmcgQ1NTUm90YXRlLmFuZ2xlIHRvIGEgQ1NTVW5pdFZhbHVlIHdpdGggdHlwZSBvdGhlciB0
aGFuIGFuZ2xlIHRocm93CiBQQVNTIFVwZGF0aW5nIENTU1JvdGF0ZS5hbmdsZSB0byBhIENTU01h
dGhWYWx1ZSB0aGF0IGRvZXNuJ3QgbWF0Y2ggPGFuZ2xlPiB0aHJvd3MgYSBUeXBlRXJyb3IKIFBB
U1MgQ1NTUm90YXRlIGNhbiBiZSBjb25zdHJ1Y3RlZCBmcm9tIGEgc2luZ2xlIGFuZ2xlCiBQQVNT
IENTU1JvdGF0ZSBjYW4gYmUgY29uc3RydWN0ZWQgZnJvbSBudW1iZXJpc2ggY29vcmRpbmF0ZXMK
LUZBSUwgQ1NTUm90YXRlIGNhbiBiZSBjb25zdHJ1Y3RlZCBmcm9tIENTU01hdGhWYWx1ZXMgVHlw
ZSBlcnJvcgorUEFTUyBDU1NSb3RhdGUgY2FuIGJlIGNvbnN0cnVjdGVkIGZyb20gQ1NTTWF0aFZh
bHVlcwogUEFTUyBDU1NSb3RhdGUueCBjYW4gYmUgdXBkYXRlZCB0byBhIGRvdWJsZQogUEFTUyBD
U1NSb3RhdGUueCBjYW4gYmUgdXBkYXRlZCB0byBhIG51bWJlciBDU1NVbml0VmFsdWUKIFBBU1Mg
Q1NTUm90YXRlLnggY2FuIGJlIHVwZGF0ZWQgdG8gYSBDU1NNYXRoVmFsdWUgbWF0Y2hpbmcgPG51
bWJlcj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2Nzcy10eXBlZC1vbS9zdHlsZXZhbHVlLXN1YmNsYXNzZXMvbnVtZXJpYy1vYmpl
Y3RzL2Nzc01hdGhWYWx1ZS50ZW50YXRpdmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXR5cGVkLW9tL3N0eWxldmFsdWUt
c3ViY2xhc3Nlcy9udW1lcmljLW9iamVjdHMvY3NzTWF0aFZhbHVlLnRlbnRhdGl2ZS1leHBlY3Rl
ZC50eHQKaW5kZXggNGJlOGU3MWQ3YzYwLi4yMjYwYzhmNmUwZDIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10eXBlZC1vbS9z
dHlsZXZhbHVlLXN1YmNsYXNzZXMvbnVtZXJpYy1vYmplY3RzL2Nzc01hdGhWYWx1ZS50ZW50YXRp
dmUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy10eXBlZC1vbS9zdHlsZXZhbHVlLXN1YmNsYXNzZXMvbnVtZXJpYy1v
YmplY3RzL2Nzc01hdGhWYWx1ZS50ZW50YXRpdmUtZXhwZWN0ZWQudHh0CkBAIC03LDExICs3LDEx
IEBAIFBBU1MgQ29uc3RydWN0aW5nIGEgQ1NTTWF0aFByb2R1Y3Qgd2l0aCBubyBhcmd1bWVudHMg
dGhyb3dzIGEgU3ludGF4RXJyb3IKIFBBU1MgQ1NTTWF0aFByb2R1Y3QgY2FuIGJlIGNvbnN0cnVj
dGVkIGZyb20gYSBzaW5nbGUgbnVtYmVyIENTU1VuaXRWYWx1ZQogUEFTUyBDU1NNYXRoUHJvZHVj
dCBjYW4gYmUgY29uc3RydWN0ZWQgZnJvbSBtb3JlIHRoYW4gb25lIG51bWJlciBDU1NVbml0VmFs
dWUKIFBBU1MgQ1NTTWF0aFByb2R1Y3Qub3BlcmF0b3IgaXMgcmVhZG9ubHkKLUZBSUwgQ29uc3Ry
dWN0aW5nIGEgQ1NTTWF0aE1pbiB3aXRoIG5vIGFyZ3VtZW50cyB0aHJvd3MgYSBTeW50YXhFcnJv
ciBhc3NlcnRfdGhyb3dzX2RvbTogZnVuY3Rpb24gIigpID0+IG5ldyBzdWJjbGFzcygpIiBkaWQg
bm90IHRocm93CitQQVNTIENvbnN0cnVjdGluZyBhIENTU01hdGhNaW4gd2l0aCBubyBhcmd1bWVu
dHMgdGhyb3dzIGEgU3ludGF4RXJyb3IKIFBBU1MgQ1NTTWF0aE1pbiBjYW4gYmUgY29uc3RydWN0
ZWQgZnJvbSBhIHNpbmdsZSBudW1iZXIgQ1NTVW5pdFZhbHVlCiBQQVNTIENTU01hdGhNaW4gY2Fu
IGJlIGNvbnN0cnVjdGVkIGZyb20gbW9yZSB0aGFuIG9uZSBudW1iZXIgQ1NTVW5pdFZhbHVlCiBQ
QVNTIENTU01hdGhNaW4ub3BlcmF0b3IgaXMgcmVhZG9ubHkKLUZBSUwgQ29uc3RydWN0aW5nIGEg
Q1NTTWF0aE1heCB3aXRoIG5vIGFyZ3VtZW50cyB0aHJvd3MgYSBTeW50YXhFcnJvciBhc3NlcnRf
dGhyb3dzX2RvbTogZnVuY3Rpb24gIigpID0+IG5ldyBzdWJjbGFzcygpIiBkaWQgbm90IHRocm93
CitQQVNTIENvbnN0cnVjdGluZyBhIENTU01hdGhNYXggd2l0aCBubyBhcmd1bWVudHMgdGhyb3dz
IGEgU3ludGF4RXJyb3IKIFBBU1MgQ1NTTWF0aE1heCBjYW4gYmUgY29uc3RydWN0ZWQgZnJvbSBh
IHNpbmdsZSBudW1iZXIgQ1NTVW5pdFZhbHVlCiBQQVNTIENTU01hdGhNYXggY2FuIGJlIGNvbnN0
cnVjdGVkIGZyb20gbW9yZSB0aGFuIG9uZSBudW1iZXIgQ1NTVW5pdFZhbHVlCiBQQVNTIENTU01h
dGhNYXgub3BlcmF0b3IgaXMgcmVhZG9ubHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10eXBlZC1vbS9zdHlsZXZhbHVlLXN1
YmNsYXNzZXMvbnVtZXJpYy1vYmplY3RzL3RvLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHlwZWQtb20v
c3R5bGV2YWx1ZS1zdWJjbGFzc2VzL251bWVyaWMtb2JqZWN0cy90by50ZW50YXRpdmUtZXhwZWN0
ZWQudHh0CmluZGV4IDYzMDgwY2Q5OTVmYS4uNmJiYjE5NTFmYjI4IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHlwZWQtb20v
c3R5bGV2YWx1ZS1zdWJjbGFzc2VzL251bWVyaWMtb2JqZWN0cy90by50ZW50YXRpdmUtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2Nzcy10eXBlZC1vbS9zdHlsZXZhbHVlLXN1YmNsYXNzZXMvbnVtZXJpYy1vYmplY3RzL3Rv
LnRlbnRhdGl2ZS1leHBlY3RlZC50eHQKQEAgLTEsMTcgKzEsMTcgQEAKIAotRkFJTCBDb252ZXJ0
aW5nIGEgQ1NTVW5pdFZhbHVlIHRvIGFuIGludmFsaWQgdW5pdCB0aHJvd3MgU3ludGF4RXJyb3Ig
YXNzZXJ0X3Rocm93c19kb206IGZ1bmN0aW9uICIoKSA9PiBDU1MucHgoMSkudG8oJ2xlbW9uJyki
IGRpZCBub3QgdGhyb3cKLUZBSUwgQ29udmVydGluZyBhIENTU051bWVyaWNWYWx1ZSB3aXRoIGlu
dmFsaWQgc3VtIHZhbHVlIHRocm93cyBUeXBlRXJyb3IgYXNzZXJ0X3Rocm93c19qczogZnVuY3Rp
b24gIigpID0+IG5ldyBDU1NNYXRoTWF4KDEsIENTUy5weCgxKSkudG8oJ251bWJlcicpIiBkaWQg
bm90IHRocm93Ci1GQUlMIENvbnZlcnRpbmcgYSBDU1NOdW1lcmljVmFsdWUgd2l0aCBzdW0gdmFs
dWUgY29udGFpbmluZyBtb3JlIHRoYW4gb25lIHZhbHVlIHRocm93cyBUeXBlRXJyb3IgYXNzZXJ0
X3Rocm93c19qczogZnVuY3Rpb24gIigpID0+IG5ldyBDU1NNYXRoUHJvZHVjdChDU1MucHgoMSks
IENTUy5zKDEpKS50bygnbnVtYmVyJykiIGRpZCBub3QgdGhyb3cKLUZBSUwgQ29udmVydGluZyBh
IENTU1VuaXRWYWx1ZSB0byBhbiBpbmNvbXBhdGlibGUgdW5pdCB0aHJvd3MgVHlwZUVycm9yIGFz
c2VydF90aHJvd3NfanM6IGZ1bmN0aW9uICIoKSA9PiBDU1MucHgoMSkudG8oJ251bWJlcicpIiBk
aWQgbm90IHRocm93Ci1GQUlMIENvbnZlcnRpbmcgYSBDU1NVbml0VmFsdWUgdG8gaXRzIG93biB1
bml0IHJldHVybnMgaXRzZWxmIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJwZXJjZW50IiBidXQg
Z290ICJudW1iZXIiCi1GQUlMIENvbnZlcnRpbmcgYSBDU1NVbml0VmFsdWUgdG8gaXRzIGNhbm9u
aWNhbCB1bml0IHJldHVybnMgY29ycmVjdCB2YWx1ZSBhc3NlcnRfYXBwcm94X2VxdWFsczogZXhw
ZWN0ZWQgMzcuNzk1Mjc1NSArLy0gMC4wMDAwMDEgYnV0IGdvdCAxCi1GQUlMIENvbnZlcnRpbmcg
YSBDU1NNYXRoU3VtIHRvIGEgc2luZ2xlIHVuaXQgYWRkcyB0aGUgdmFsdWVzIGFzc2VydF9hcHBy
b3hfZXF1YWxzOiBleHBlY3RlZCAyICsvLSAwLjAwMDAwMSBidXQgZ290IDEKLUZBSUwgQ29udmVy
dGluZyBhIENTU01hdGhQcm9kdWN0IHRvIGEgc2luZ2xlIHVuaXQgbXVsdGlwbGllcyB0aGUgdmFs
dWVzIGFzc2VydF9hcHByb3hfZXF1YWxzOiBleHBlY3RlZCA2ICsvLSAwLjAwMDAwMSBidXQgZ290
IDEKLUZBSUwgQ29udmVydGluZyBhIENTU01hdGhNaW4gdG8gYSBzaW5nbGUgdW5pdCBmaW5kcyB0
aGUgbWluIHZhbHVlIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJtbSIgYnV0IGdvdCAibnVtYmVy
IgotRkFJTCBDb252ZXJ0aW5nIGEgQ1NTTWF0aE1pbiB0byBhIHNpbmdsZSB1bml0IHdpdGggZGlm
ZmVyZW50IHVuaXRzIHRocm93cyBhIFR5cGVFcnJvciBhc3NlcnRfdGhyb3dzX2pzOiBmdW5jdGlv
biAiKCkgPT4gbmV3IENTU01hdGhNaW4oQ1NTLnB4KDIpLCBDU1MucygzKSkudG8oJ3B4JykiIGRp
ZCBub3QgdGhyb3cKLUZBSUwgQ29udmVydGluZyBhIENTU01hdGhNYXggdG8gYSBzaW5nbGUgdW5p
dCBmaW5kcyB0aGUgbWF4IHZhbHVlIGFzc2VydF9hcHByb3hfZXF1YWxzOiBleHBlY3RlZCAxMCAr
Ly0gMC4wMDAwMDEgYnV0IGdvdCAxCi1GQUlMIENvbnZlcnRpbmcgYSBDU1NNYXRoTWF4IHRvIGEg
c2luZ2xlIHVuaXQgd2l0aCBkaWZmZXJlbnQgdW5pdHMgdGhyb3dzIGEgVHlwZUVycm9yIGFzc2Vy
dF90aHJvd3NfanM6IGZ1bmN0aW9uICIoKSA9PiBuZXcgQ1NTTWF0aE1heChDU1MucHgoMiksIENT
Uy5zKDMpKS50bygncHgnKSIgZGlkIG5vdCB0aHJvdwotRkFJTCBDb252ZXJ0aW5nIGEgQ1NTTWF0
aE5lZ2F0ZSB0byBhIHNpbmdsZSB1bml0IG5lZ2F0ZXMgaXRzIHZhbHVlIGFzc2VydF9hcHByb3hf
ZXF1YWxzOiBleHBlY3RlZCAtMSArLy0gMC4wMDAwMDEgYnV0IGdvdCAxCi1GQUlMIENvbnZlcnRp
bmcgYSBDU1NNYXRoSW52ZXJ0IHRvIGEgc2luZ2xlIHVuaXQgaW52ZXJ0cyBpdHMgdmFsdWUgYW5k
IHVuaXRzIGFzc2VydF9hcHByb3hfZXF1YWxzOiBleHBlY3RlZCAyICsvLSAwLjAwMDAwMSBidXQg
Z290IDEKLUZBSUwgQ29udmVydGluZyBhIGNvbXBsZXggZXhwcmVzc2lvbiB0byBhIHNpbmdsZSB1
bml0IFR5cGUgZXJyb3IKK1BBU1MgQ29udmVydGluZyBhIENTU1VuaXRWYWx1ZSB0byBhbiBpbnZh
bGlkIHVuaXQgdGhyb3dzIFN5bnRheEVycm9yCitQQVNTIENvbnZlcnRpbmcgYSBDU1NOdW1lcmlj
VmFsdWUgd2l0aCBpbnZhbGlkIHN1bSB2YWx1ZSB0aHJvd3MgVHlwZUVycm9yCitQQVNTIENvbnZl
cnRpbmcgYSBDU1NOdW1lcmljVmFsdWUgd2l0aCBzdW0gdmFsdWUgY29udGFpbmluZyBtb3JlIHRo
YW4gb25lIHZhbHVlIHRocm93cyBUeXBlRXJyb3IKK1BBU1MgQ29udmVydGluZyBhIENTU1VuaXRW
YWx1ZSB0byBhbiBpbmNvbXBhdGlibGUgdW5pdCB0aHJvd3MgVHlwZUVycm9yCitQQVNTIENvbnZl
cnRpbmcgYSBDU1NVbml0VmFsdWUgdG8gaXRzIG93biB1bml0IHJldHVybnMgaXRzZWxmCitQQVNT
IENvbnZlcnRpbmcgYSBDU1NVbml0VmFsdWUgdG8gaXRzIGNhbm9uaWNhbCB1bml0IHJldHVybnMg
Y29ycmVjdCB2YWx1ZQorUEFTUyBDb252ZXJ0aW5nIGEgQ1NTTWF0aFN1bSB0byBhIHNpbmdsZSB1
bml0IGFkZHMgdGhlIHZhbHVlcworUEFTUyBDb252ZXJ0aW5nIGEgQ1NTTWF0aFByb2R1Y3QgdG8g
YSBzaW5nbGUgdW5pdCBtdWx0aXBsaWVzIHRoZSB2YWx1ZXMKK1BBU1MgQ29udmVydGluZyBhIENT
U01hdGhNaW4gdG8gYSBzaW5nbGUgdW5pdCBmaW5kcyB0aGUgbWluIHZhbHVlCitQQVNTIENvbnZl
cnRpbmcgYSBDU1NNYXRoTWluIHRvIGEgc2luZ2xlIHVuaXQgd2l0aCBkaWZmZXJlbnQgdW5pdHMg
dGhyb3dzIGEgVHlwZUVycm9yCitQQVNTIENvbnZlcnRpbmcgYSBDU1NNYXRoTWF4IHRvIGEgc2lu
Z2xlIHVuaXQgZmluZHMgdGhlIG1heCB2YWx1ZQorUEFTUyBDb252ZXJ0aW5nIGEgQ1NTTWF0aE1h
eCB0byBhIHNpbmdsZSB1bml0IHdpdGggZGlmZmVyZW50IHVuaXRzIHRocm93cyBhIFR5cGVFcnJv
cgorUEFTUyBDb252ZXJ0aW5nIGEgQ1NTTWF0aE5lZ2F0ZSB0byBhIHNpbmdsZSB1bml0IG5lZ2F0
ZXMgaXRzIHZhbHVlCitQQVNTIENvbnZlcnRpbmcgYSBDU1NNYXRoSW52ZXJ0IHRvIGEgc2luZ2xl
IHVuaXQgaW52ZXJ0cyBpdHMgdmFsdWUgYW5kIHVuaXRzCitQQVNTIENvbnZlcnRpbmcgYSBjb21w
bGV4IGV4cHJlc3Npb24gdG8gYSBzaW5nbGUgdW5pdAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHlwZWQtb20vc3R5bGV2
YWx1ZS1zdWJjbGFzc2VzL251bWVyaWMtb2JqZWN0cy90b1N1bS50ZW50YXRpdmUtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nz
LXR5cGVkLW9tL3N0eWxldmFsdWUtc3ViY2xhc3Nlcy9udW1lcmljLW9iamVjdHMvdG9TdW0udGVu
dGF0aXZlLWV4cGVjdGVkLnR4dAppbmRleCBhZDdiMTRmM2U3NzUuLmFkNmE5NGQxMDQxYyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLXR5cGVkLW9tL3N0eWxldmFsdWUtc3ViY2xhc3Nlcy9udW1lcmljLW9iamVjdHMvdG9TdW0u
dGVudGF0aXZlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHlwZWQtb20vc3R5bGV2YWx1ZS1zdWJjbGFzc2VzL251
bWVyaWMtb2JqZWN0cy90b1N1bS50ZW50YXRpdmUtZXhwZWN0ZWQudHh0CkBAIC0xLDYgKzEsNiBA
QAogCiBGQUlMIENvbnZlcnRpbmcgYSBDU1NOdW1lcmljVmFsdWUgdG8gYSBzdW0gd2l0aCBpbnZh
bGlkIHVuaXRzIHRocm93cyBTeW50YXhFcnJvciBhc3NlcnRfdGhyb3dzX2RvbTogZnVuY3Rpb24g
IigpID0+IENTUy5weCgxKS50b1N1bSgncHgnLCAnbGVtb24nKSIgZGlkIG5vdCB0aHJvdwotRkFJ
TCBDb252ZXJ0aW5nIGEgQ1NTTnVtZXJpY1ZhbHVlIHdpdGggYW4gaW52YWxpZCBzdW0gdmFsdWUg
dG8gYSBzdW0gdGhyb3dzIFR5cGVFcnJvciBhc3NlcnRfdGhyb3dzX2pzOiBmdW5jdGlvbiAiKCkg
PT4gbmV3IENTU01hdGhNYXgoMSwgQ1NTLnB4KDEpKS50b1N1bSgnbnVtYmVyJykiIGRpZCBub3Qg
dGhyb3cKK1BBU1MgQ29udmVydGluZyBhIENTU051bWVyaWNWYWx1ZSB3aXRoIGFuIGludmFsaWQg
c3VtIHZhbHVlIHRvIGEgc3VtIHRocm93cyBUeXBlRXJyb3IKIEZBSUwgQ29udmVydGluZyBhIENT
U051bWVyaWNWYWx1ZSB3aXRoIGNvbXBvdW5kIHVuaXRzIHRvIGEgc3VtIHRocm93cyBUeXBlRXJy
b3IgYXNzZXJ0X3Rocm93c19qczogZnVuY3Rpb24gIigpID0+IG5ldyBDU1NNYXRoUHJvZHVjdChD
U1MucHgoMSksIENTUy5weCgxKSkudG8oJ3B4JykiIGRpZCBub3QgdGhyb3cKIEZBSUwgQ29udmVy
dGluZyBhIENTU051bWVyaWNWYWx1ZSB0byBhIHN1bSB3aXRoIGFuIGluY29tcGF0aWJsZSB1bml0
IHRocm93cyBUeXBlRXJyb3IgYXNzZXJ0X3Rocm93c19qczogZnVuY3Rpb24gIigpID0+IENTUy5w
eCgxKS50b1N1bSgnbnVtYmVyJykiIGRpZCBub3QgdGhyb3cKIEZBSUwgQ29udmVydGluZyBhIENT
U051bWVyaWNWYWx1ZSB0byBhIHN1bSB3aXRoIHVuaXRzIHRoYXQgYXJlIG5vdCBhZGRhYmxlIHRo
cm93cyBUeXBlRXJyb3IgYXNzZXJ0X3Rocm93c19qczogZnVuY3Rpb24gIigpID0+IENTUy5weCgx
KS50b1N1bSgncHgnLCAncycpIiBkaWQgbm90IHRocm93Ci0tIAoyLjMyLjAgKEFwcGxlIEdpdC0x
MzIpCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>460018</attachid>
            <date>2022-06-03 11:47:11 -0700</date>
            <delta_ts>2022-06-03 12:59:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-241167-20220603114710.patch</filename>
            <type>text/plain</type>
            <size>46247</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">RnJvbSBlMDYyMzFmMjA4N2E4NzBlZGYwNTUzYzQwNzhjZDc1NGE2YzMwOTA5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4IENocmlzdGVuc2VuIDxhY2hyaXN0ZW5zZW5AYXBwbGUu
Y29tPgpEYXRlOiBGcmksIDMgSnVuIDIwMjIgMTE6MzI6NTMgLTA3MDAKU3ViamVjdDogW1BBVENI
XSBJbXBsZW1lbnQgQ1NTTnVtZXJpY1ZhbHVlLnRvCiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjQxMTY3CgpSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KCiogTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXR5cGVkLW9tL3N0
eWxldmFsdWUtc3ViY2xhc3Nlcy9jc3NSb3RhdGUudGVudGF0aXZlLWV4cGVjdGVkLnR4dDoKKiBM
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHlwZWQt
b20vc3R5bGV2YWx1ZS1zdWJjbGFzc2VzL251bWVyaWMtb2JqZWN0cy9jc3NNYXRoVmFsdWUudGVu
dGF0aXZlLWV4cGVjdGVkLnR4dDoKKiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2Nzcy9jc3MtdHlwZWQtb20vc3R5bGV2YWx1ZS1zdWJjbGFzc2VzL251bWVyaWMt
b2JqZWN0cy90by50ZW50YXRpdmUtZXhwZWN0ZWQudHh0OgoqIExheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10eXBlZC1vbS9zdHlsZXZhbHVlLXN1YmNs
YXNzZXMvbnVtZXJpYy1vYmplY3RzL3RvU3VtLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQ6CiogU291
cmNlL1dlYkNvcmUvY3NzL0NTU1VuaXRzLmNwcDoKKFdlYkNvcmU6OmNhbm9uaWNhbFVuaXRUeXBl
KTogRGVsZXRlZC4KKiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5pdHMuaDoKKiBTb3VyY2UvV2Vi
Q29yZS9jc3MvdHlwZWRvbS9DU1NOdW1lcmljVmFsdWUuY3BwOgooV2ViQ29yZTo6b3BlcmF0aW9u
T25WYWx1ZXNPZlNhbWVVbml0KToKKFdlYkNvcmU6OkNTU051bWVyaWNWYWx1ZTo6bXVsdGlwbHlJ
bnRlcm5hbCk6CihXZWJDb3JlOjpDU1NOdW1lcmljVmFsdWU6Om1pbik6CihXZWJDb3JlOjpDU1NO
dW1lcmljVmFsdWU6Om1heCk6CihXZWJDb3JlOjpDU1NOdW1lcmljVmFsdWU6OnRvKToKKiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9DU1NOdW1lcmljVmFsdWUuaDoKKiBTb3VyY2UvV2ViQ29y
ZS9jc3MvdHlwZWRvbS9DU1NVbml0VmFsdWUuY3BwOgooV2ViQ29yZTo6Q1NTVW5pdFZhbHVlOjpw
YXJzZVVuaXQpOgooV2ViQ29yZTo6Q1NTVW5pdFZhbHVlOjpjcmVhdGUpOgooV2ViQ29yZTo6Q1NT
VW5pdFZhbHVlOjpDU1NVbml0VmFsdWUpOgooV2ViQ29yZTo6Y29udmVyc2lvblRvQ2Fub25pY2Fs
VW5pdHNTY2FsZUZhY3Rvcik6CihXZWJDb3JlOjpDU1NVbml0VmFsdWU6OmNvbnZlcnRUbyBjb25z
dCk6CihXZWJDb3JlOjpDU1NVbml0VmFsdWU6OnRvU3VtVmFsdWUgY29uc3QpOgooV2ViQ29yZTo6
bnVtZXJpY1R5cGUpOiBEZWxldGVkLgooV2ViQ29yZTo6cGFyc2VVbml0KTogRGVsZXRlZC4KKiBT
b3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9DU1NVbml0VmFsdWUuaDoKKiBTb3VyY2UvV2ViQ29y
ZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhJbnZlcnQuY3BwOgooV2ViQ29yZTo6Q1NTTWF0
aEludmVydDo6dG9TdW1WYWx1ZSBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20v
bnVtZXJpYy9DU1NNYXRoSW52ZXJ0Lmg6CiogU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVt
ZXJpYy9DU1NNYXRoTWF4LmNwcDoKKFdlYkNvcmU6OkNTU01hdGhNYXg6OmNyZWF0ZSk6CihXZWJD
b3JlOjpDU1NNYXRoTWF4OjpDU1NNYXRoTWF4KToKKFdlYkNvcmU6OkNTU01hdGhNYXg6OnRvU3Vt
VmFsdWUgY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0
aE1heC5oOgoqIFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aE1pbi5j
cHA6CihXZWJDb3JlOjpDU1NNYXRoTWluOjpjcmVhdGUpOgooV2ViQ29yZTo6Q1NTTWF0aE1pbjo6
Q1NTTWF0aE1pbik6CihXZWJDb3JlOjpDU1NNYXRoTWluOjp0b1N1bVZhbHVlIGNvbnN0KToKKiBT
b3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhNaW4uaDoKKiBTb3VyY2Uv
V2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhOZWdhdGUuY3BwOgooV2ViQ29yZTo6
Q1NTTWF0aE5lZ2F0ZTo6dG9TdW1WYWx1ZSBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvY3NzL3R5
cGVkb20vbnVtZXJpYy9DU1NNYXRoTmVnYXRlLmg6CiogU291cmNlL1dlYkNvcmUvY3NzL3R5cGVk
b20vbnVtZXJpYy9DU1NNYXRoUHJvZHVjdC5jcHA6CihXZWJDb3JlOjpDU1NNYXRoUHJvZHVjdDo6
dG9TdW1WYWx1ZSBjb25zdCk6CiogU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9D
U1NNYXRoUHJvZHVjdC5oOgoqIFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NT
TWF0aFN1bS5jcHA6CihXZWJDb3JlOjpDU1NNYXRoU3VtOjp0b1N1bVZhbHVlIGNvbnN0KToKKiBT
b3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhTdW0uaDoKKiBTb3VyY2Uv
V2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU051bWVyaWNBcnJheS5jcHA6CihXZWJDb3Jl
OjpDU1NOdW1lcmljQXJyYXk6OmZvckVhY2gpOgoqIFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9t
L251bWVyaWMvQ1NTTnVtZXJpY1R5cGUuY3BwOgooV2ViQ29yZTo6Q1NTTnVtZXJpY1R5cGU6OmNy
ZWF0ZSk6CihXZWJDb3JlOjp0eXBlRnJvbVZlY3Rvcik6CiogU291cmNlL1dlYkNvcmUvY3NzL3R5
cGVkb20vbnVtZXJpYy9DU1NOdW1lcmljVHlwZS5oOgooV2ViQ29yZTo6Q1NTTnVtZXJpY1R5cGU6
Om9wZXJhdG9yIT0gY29uc3QpOgoqIFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL3RyYW5zZm9y
bS9DU1NUcmFuc2Zvcm1WYWx1ZS5jcHA6CihXZWJDb3JlOjpDU1NUcmFuc2Zvcm1WYWx1ZTo6c2Vy
aWFsaXplIGNvbnN0KToKLS0tCiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5pdHMuY3BwICAgICAg
ICAgICAgICAgfCAgIDUgLQogU291cmNlL1dlYkNvcmUvY3NzL0NTU1VuaXRzLmggICAgICAgICAg
ICAgICAgIHwgICAxIC0KIC4uLi9XZWJDb3JlL2Nzcy90eXBlZG9tL0NTU051bWVyaWNWYWx1ZS5j
cHAgICB8ICA1NyArKysrKystLS0KIFNvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL0NTU051bWVy
aWNWYWx1ZS5oICB8ICAxMiArLQogU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vQ1NTVW5pdFZh
bHVlLmNwcCAgIHwgMTE1ICsrKysrKysrKysrKy0tLS0tLQogU291cmNlL1dlYkNvcmUvY3NzL3R5
cGVkb20vQ1NTVW5pdFZhbHVlLmggICAgIHwgICA0ICsKIC4uLi9jc3MvdHlwZWRvbS9udW1lcmlj
L0NTU01hdGhJbnZlcnQuY3BwICAgICB8ICAyMSArKysrCiAuLi4vY3NzL3R5cGVkb20vbnVtZXJp
Yy9DU1NNYXRoSW52ZXJ0LmggICAgICAgfCAgIDEgKwogLi4uL2Nzcy90eXBlZG9tL251bWVyaWMv
Q1NTTWF0aE1heC5jcHAgICAgICAgIHwgIDQyICsrKysrKy0KIC4uLi9XZWJDb3JlL2Nzcy90eXBl
ZG9tL251bWVyaWMvQ1NTTWF0aE1heC5oICB8ICAgNyArLQogLi4uL2Nzcy90eXBlZG9tL251bWVy
aWMvQ1NTTWF0aE1pbi5jcHAgICAgICAgIHwgIDQ0ICsrKysrKy0KIC4uLi9XZWJDb3JlL2Nzcy90
eXBlZG9tL251bWVyaWMvQ1NTTWF0aE1pbi5oICB8ICAgNyArLQogLi4uL2Nzcy90eXBlZG9tL251
bWVyaWMvQ1NTTWF0aE5lZ2F0ZS5jcHAgICAgIHwgIDExICsrCiAuLi4vY3NzL3R5cGVkb20vbnVt
ZXJpYy9DU1NNYXRoTmVnYXRlLmggICAgICAgfCAgIDEgKwogLi4uL2Nzcy90eXBlZG9tL251bWVy
aWMvQ1NTTWF0aFByb2R1Y3QuY3BwICAgIHwgIDMzICsrKysrCiAuLi4vY3NzL3R5cGVkb20vbnVt
ZXJpYy9DU1NNYXRoUHJvZHVjdC5oICAgICAgfCAgIDEgKwogLi4uL2Nzcy90eXBlZG9tL251bWVy
aWMvQ1NTTWF0aFN1bS5jcHAgICAgICAgIHwgIDQ5ICsrKysrKysrCiAuLi4vV2ViQ29yZS9jc3Mv
dHlwZWRvbS9udW1lcmljL0NTU01hdGhTdW0uaCAgfCAgIDEgKwogLi4uL2Nzcy90eXBlZG9tL251
bWVyaWMvQ1NTTnVtZXJpY0FycmF5LmNwcCAgIHwgICAyICstCiAuLi4vY3NzL3R5cGVkb20vbnVt
ZXJpYy9DU1NOdW1lcmljVHlwZS5jcHAgICAgfCAgMzkgKysrKystCiAuLi4vY3NzL3R5cGVkb20v
bnVtZXJpYy9DU1NOdW1lcmljVHlwZS5oICAgICAgfCAgIDggKy0KIC4uLi90eXBlZG9tL3RyYW5z
Zm9ybS9DU1NUcmFuc2Zvcm1WYWx1ZS5jcHAgICB8ICAgMiArLQogLi4uL2Nzc1JvdGF0ZS50ZW50
YXRpdmUtZXhwZWN0ZWQudHh0ICAgICAgICAgIHwgICAyICstCiAuLi4vY3NzTWF0aFZhbHVlLnRl
bnRhdGl2ZS1leHBlY3RlZC50eHQgICAgICAgfCAgIDQgKy0KIC4uLi9udW1lcmljLW9iamVjdHMv
dG8udGVudGF0aXZlLWV4cGVjdGVkLnR4dCB8ICAzMCArKy0tLQogLi4uL3RvU3VtLnRlbnRhdGl2
ZS1leHBlY3RlZC50eHQgICAgICAgICAgICAgIHwgICAyICstCiAyNiBmaWxlcyBjaGFuZ2VkLCA0
MDAgaW5zZXJ0aW9ucygrKSwgMTAxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NVbml0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5pdHMuY3Bw
CmluZGV4IDVmZGE0NTI2ZTJlYi4uMTFkNTRhMjYzNzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTVW5pdHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbml0cy5j
cHAKQEAgLTE0NywxMSArMTQ3LDYgQEAgQ1NTVW5pdFR5cGUgY2Fub25pY2FsVW5pdFR5cGVGb3JD
YXRlZ29yeShDU1NVbml0Q2F0ZWdvcnkgY2F0ZWdvcnkpCiAgICAgcmV0dXJuIENTU1VuaXRUeXBl
OjpDU1NfVU5LTk9XTjsKIH0KIAotQ1NTVW5pdFR5cGUgY2Fub25pY2FsVW5pdFR5cGUoQ1NTVW5p
dFR5cGUgdW5pdFR5cGUpCi17Ci0gICAgcmV0dXJuIGNhbm9uaWNhbFVuaXRUeXBlRm9yQ2F0ZWdv
cnkodW5pdENhdGVnb3J5KHVuaXRUeXBlKSk7Ci19Ci0KIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYgdHMsIENTU1VuaXRDYXRlZ29yeSBjYXRlZ29yeSkKIHsKICAgICBzd2l0Y2gg
KGNhdGVnb3J5KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5pdHMuaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NVbml0cy5oCmluZGV4IDVkYTBhY2ZiMTE0MC4uMjBlNjI2
MWU1OGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5pdHMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTVW5pdHMuaApAQCAtMTQ2LDcgKzE0Niw2IEBAIGVudW0gY2xh
c3MgQ1NTVW5pdENhdGVnb3J5IDogdWludDhfdCB7CiAKIENTU1VuaXRDYXRlZ29yeSB1bml0Q2F0
ZWdvcnkoQ1NTVW5pdFR5cGUpOwogQ1NTVW5pdFR5cGUgY2Fub25pY2FsVW5pdFR5cGVGb3JDYXRl
Z29yeShDU1NVbml0Q2F0ZWdvcnkpOwotQ1NTVW5pdFR5cGUgY2Fub25pY2FsVW5pdFR5cGUoQ1NT
VW5pdFR5cGUpOwogCiBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFt
JiwgQ1NTVW5pdENhdGVnb3J5KTsKIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRl
eHRTdHJlYW0mLCBDU1NVbml0VHlwZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
dHlwZWRvbS9DU1NOdW1lcmljVmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20v
Q1NTTnVtZXJpY1ZhbHVlLmNwcAppbmRleCBiZjVmZDA4OGIwYzMuLjI1N2MxZDg3NGU2YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vQ1NTTnVtZXJpY1ZhbHVlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9DU1NOdW1lcmljVmFsdWUuY3BwCkBAIC04
OCw3ICs4OCw3IEBAIHN0YXRpYyBSZWZQdHI8Q1NTTnVtZXJpY1ZhbHVlPiBvcGVyYXRpb25PblZh
bHVlc09mU2FtZVVuaXQoVCYmIG9wZXJhdGlvbiwgY29uc3QKICAgICAgICAgYXV0byYgZmlyc3RV
bml0VmFsdWUgPSBkb3duY2FzdDxDU1NVbml0VmFsdWU+KHZhbHVlc1swXS5nZXQoKSk7CiAgICAg
ICAgIGF1dG8gdW5pdCA9IGZpcnN0VW5pdFZhbHVlLnVuaXRFbnVtKCk7CiAgICAgICAgIGRvdWJs
ZSByZXN1bHQgPSBmaXJzdFVuaXRWYWx1ZS52YWx1ZSgpOwotICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMTsgaSA8IHZhbHVlcy5zaXplKCk7IGkrKykKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDE7
IGkgPCB2YWx1ZXMuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICByZXN1bHQgPSBvcGVyYXRpb24o
cmVzdWx0LCBkb3duY2FzdDxDU1NVbml0VmFsdWU+KHZhbHVlc1tpXS5nZXQoKSkudmFsdWUoKSk7
CiAgICAgICAgIHJldHVybiBDU1NVbml0VmFsdWU6OmNyZWF0ZShyZXN1bHQsIHVuaXQpOwogICAg
IH0KQEAgLTE0Myw3ICsxNDMsNyBAQCBFeGNlcHRpb25PcjxSZWY8Q1NTTnVtZXJpY1ZhbHVlPj4g
Q1NTTnVtZXJpY1ZhbHVlOjptdWx0aXBseUludGVybmFsKFZlY3RvcjxSZWY8QwogICAgIGlmIChh
bGxVbml0VmFsdWVzKSB7CiAgICAgICAgIGJvb2wgbXVsdGlwbGVVbml0c0ZvdW5kIHsgZmFsc2Ug
fTsKICAgICAgICAgc3RkOjpvcHRpb25hbDxzaXplX3Q+IG5vbk51bWJlclVuaXRJbmRleDsKLSAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZXMuc2l6ZSgpOyBpKyspIHsKKyAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAg
ICAgIGF1dG8gdW5pdCA9IGRvd25jYXN0PENTU1VuaXRWYWx1ZT4odmFsdWVzW2ldLmdldCgpKS51
bml0RW51bSgpOwogICAgICAgICAgICAgaWYgKHVuaXQgPT0gQ1NTVW5pdFR5cGU6OkNTU19OVU1C
RVIpCiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0xOTQsMTAgKzE5NCwxMCBAQCBFeGNl
cHRpb25PcjxSZWY8Q1NTTnVtZXJpY1ZhbHVlPj4gQ1NTTnVtZXJpY1ZhbHVlOjptaW4oRml4ZWRW
ZWN0b3I8Q1NTTnVtYmVyaXNoPgogICAgIGlmIChhdXRvIHJlc3VsdCA9IG9wZXJhdGlvbk9uVmFs
dWVzT2ZTYW1lVW5pdDxjb25zdCBkb3VibGUmKCopKGNvbnN0IGRvdWJsZSYsIGNvbnN0IGRvdWJs
ZSYpPihzdGQ6Om1pbjxkb3VibGU+LCB2YWx1ZXMpKQogICAgICAgICByZXR1cm4geyAqcmVzdWx0
IH07CiAKLSAgICBpZiAoIUNTU051bWVyaWNUeXBlOjphZGRUeXBlcyh2YWx1ZXMpKQotICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yIH07Ci0KLSAgICByZXR1cm4geyBDU1NNYXRo
TWluOjpjcmVhdGUoV1RGTW92ZSh2YWx1ZXMpKSB9OworICAgIGF1dG8gcmVzdWx0ID0gQ1NTTWF0
aE1pbjo6Y3JlYXRlKFdURk1vdmUodmFsdWVzKSk7CisgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRp
b24oKSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisgICAgcmV0
dXJuIHsgcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpIH07CiB9CiAKIEV4Y2VwdGlvbk9yPFJl
ZjxDU1NOdW1lcmljVmFsdWU+PiBDU1NOdW1lcmljVmFsdWU6Om1heChGaXhlZFZlY3RvcjxDU1NO
dW1iZXJpc2g+JiYgbnVtYmVyaXNoZXMpCkBAIC0yMDgsMTAgKzIwOCwxMCBAQCBFeGNlcHRpb25P
cjxSZWY8Q1NTTnVtZXJpY1ZhbHVlPj4gQ1NTTnVtZXJpY1ZhbHVlOjptYXgoRml4ZWRWZWN0b3I8
Q1NTTnVtYmVyaXNoPgogICAgIGlmIChhdXRvIHJlc3VsdCA9IG9wZXJhdGlvbk9uVmFsdWVzT2ZT
YW1lVW5pdDxjb25zdCBkb3VibGUmKCopKGNvbnN0IGRvdWJsZSYsIGNvbnN0IGRvdWJsZSYpPihz
dGQ6Om1heDxkb3VibGU+LCB2YWx1ZXMpKQogICAgICAgICByZXR1cm4geyAqcmVzdWx0IH07CiAK
LSAgICBpZiAoIUNTU051bWVyaWNUeXBlOjphZGRUeXBlcyh2YWx1ZXMpKQotICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yIH07Ci0KLSAgICByZXR1cm4geyBDU1NNYXRoTWF4Ojpj
cmVhdGUoV1RGTW92ZSh2YWx1ZXMpKSB9OworICAgIGF1dG8gcmVzdWx0ID0gQ1NTTWF0aE1heDo6
Y3JlYXRlKFdURk1vdmUodmFsdWVzKSk7CisgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkK
KyAgICAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisgICAgcmV0dXJuIHsg
cmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpIH07CiB9CiAKIFJlZjxDU1NOdW1lcmljVmFsdWU+
IENTU051bWVyaWNWYWx1ZTo6cmVjdGlmeU51bWJlcmlzaChDU1NOdW1iZXJpc2gmJiBudW1iZXJp
c2gpCkBAIC0yMzMsMTIgKzIzMyw0MSBAQCBib29sIENTU051bWVyaWNWYWx1ZTo6ZXF1YWxzKEZp
eGVkVmVjdG9yPENTU051bWJlcmlzaD4mJiB2YWx1ZSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LVJlZjxDU1NVbml0VmFsdWU+IENTU051bWVyaWNWYWx1ZTo6dG8oU3RyaW5nJiYgdW5pdCkKK0V4
Y2VwdGlvbk9yPFJlZjxDU1NVbml0VmFsdWU+PiBDU1NOdW1lcmljVmFsdWU6OnRvKFN0cmluZyYm
IHVuaXQpCit7CisgICAgcmV0dXJuIHRvKENTU1VuaXRWYWx1ZTo6cGFyc2VVbml0KHVuaXQpKTsK
K30KKworRXhjZXB0aW9uT3I8UmVmPENTU1VuaXRWYWx1ZT4+IENTU051bWVyaWNWYWx1ZTo6dG8o
Q1NTVW5pdFR5cGUgdW5pdCkKIHsKLSAgICBVTlVTRURfUEFSQU0odW5pdCk7CiAgICAgLy8gaHR0
cHM6Ly9kcmFmdHMuY3NzLWhvdWRpbmkub3JnL2Nzcy10eXBlZC1vbS8jZG9tLWNzc251bWVyaWN2
YWx1ZS10bwotICAgIC8vIEZJWE1FOiBhZGQgaW1wbC4KLSAgICByZXR1cm4gQ1NTVW5pdFZhbHVl
OjpjcmVhdGUoMS4wLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJFUik7CisgICAgYXV0byB0eXBlID0g
Q1NTTnVtZXJpY1R5cGU6OmNyZWF0ZSh1bml0KTsKKyAgICBpZiAoIXR5cGUpCisgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBTeW50YXhFcnJvciB9OworCisgICAgYXV0byBzdW1WYWx1ZSA9IHRv
U3VtVmFsdWUoKTsKKyAgICBpZiAoIXN1bVZhbHVlIHx8IHN1bVZhbHVlLT5zaXplKCkgIT0gMSkK
KyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9OworCisgICAgYXV0byYgYWRk
ZW5kID0gKCpzdW1WYWx1ZSlbMF07CisgICAgYXV0byB1bmNvbnZlcnRlZCA9IFtdIChjb25zdCBh
dXRvJiBhZGRlbmQpIC0+IFJlZlB0cjxDU1NVbml0VmFsdWU+IHsKKyAgICAgICAgc3dpdGNoIChh
ZGRlbmQudW5pdHMuc2l6ZSgpKSB7CisgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgIHJldHVy
biBDU1NVbml0VmFsdWU6OmNyZWF0ZShhZGRlbmQudmFsdWUsIENTU1VuaXRUeXBlOjpDU1NfTlVN
QkVSKTsKKyAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgcmV0dXJuIENTU1VuaXRWYWx1ZTo6
Y3JlYXRlKGFkZGVuZC52YWx1ZSwgYWRkZW5kLnVuaXRzLmJlZ2luKCktPmtleSk7CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKyAgICB9IChhZGRlbmQpOworICAgIGlmICghdW5jb252ZXJ0ZWQpCisgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IgfTsKKworICAgIGF1dG8gY29udmVydGVkID0g
dW5jb252ZXJ0ZWQtPmNvbnZlcnRUbyh1bml0KTsKKyAgICBpZiAoIWNvbnZlcnRlZCkKKyAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9OworICAgIHJldHVybiBjb252ZXJ0ZWQu
cmVsZWFzZU5vbk51bGwoKTsKIH0KIAogRXhjZXB0aW9uT3I8UmVmPENTU01hdGhTdW0+PiBDU1NO
dW1lcmljVmFsdWU6OnRvU3VtKEZpeGVkVmVjdG9yPFN0cmluZz4mJiB1bml0cykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL0NTU051bWVyaWNWYWx1ZS5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL3R5cGVkb20vQ1NTTnVtZXJpY1ZhbHVlLmgKaW5kZXggMmRlMmIzNzNkNDA2
Li5jMTNhNWM2Y2VhNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL0NT
U051bWVyaWNWYWx1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL0NTU051bWVy
aWNWYWx1ZS5oCkBAIC01NSw3ICs1NSw4IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIGVxdWFs
cyhGaXhlZFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOwogICAgIAotICAgIFJlZjxDU1NVbml0VmFs
dWU+IHRvKFN0cmluZyYmKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8Q1NTVW5pdFZhbHVlPj4gdG8o
U3RyaW5nJiYpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxDU1NVbml0VmFsdWU+PiB0byhDU1NVbml0
VHlwZSk7CiAgICAgRXhjZXB0aW9uT3I8UmVmPENTU01hdGhTdW0+PiB0b1N1bShGaXhlZFZlY3Rv
cjxTdHJpbmc+JiYpOwogCiAgICAgY29uc3QgQ1NTTnVtZXJpY1R5cGUmIHR5cGUoKSBjb25zdCB7
IHJldHVybiBtX3R5cGU7IH0KQEAgLTY1LDYgKzY2LDE1IEBAIHB1YmxpYzoKIAogICAgIENTU1N0
eWxlVmFsdWVUeXBlIGdldFR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBDU1NTdHlsZVZh
bHVlVHlwZTo6Q1NTTnVtZXJpY1ZhbHVlOyB9CiAKKyAgICAvLyBodHRwczovL2RyYWZ0cy5jc3Mt
aG91ZGluaS5vcmcvY3NzLXR5cGVkLW9tLyNzdW0tdmFsdWUtdmFsdWUKKyAgICB1c2luZyBVbml0
TWFwID0gSGFzaE1hcDxDU1NVbml0VHlwZSwgaW50LCBXVEY6OkludEhhc2g8Q1NTVW5pdFR5cGU+
LCBXVEY6OlN0cm9uZ0VudW1IYXNoVHJhaXRzPENTU1VuaXRUeXBlPj47CisgICAgc3RydWN0IEFk
ZGVuZCB7CisgICAgICAgIGRvdWJsZSB2YWx1ZTsKKyAgICAgICAgVW5pdE1hcCB1bml0czsKKyAg
ICB9OworICAgIHVzaW5nIFN1bVZhbHVlID0gVmVjdG9yPEFkZGVuZD47CisgICAgdmlydHVhbCBz
dGQ6Om9wdGlvbmFsPFN1bVZhbHVlPiB0b1N1bVZhbHVlKCkgY29uc3QgPSAwOworCiBwcm90ZWN0
ZWQ6CiAgICAgRXhjZXB0aW9uT3I8UmVmPENTU051bWVyaWNWYWx1ZT4+IGFkZEludGVybmFsKFZl
Y3RvcjxSZWY8Q1NTTnVtZXJpY1ZhbHVlPj4mJik7CiAgICAgRXhjZXB0aW9uT3I8UmVmPENTU051
bWVyaWNWYWx1ZT4+IG11bHRpcGx5SW50ZXJuYWwoVmVjdG9yPFJlZjxDU1NOdW1lcmljVmFsdWU+
PiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL0NTU1VuaXRWYWx1
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9DU1NVbml0VmFsdWUuY3BwCmluZGV4
IDNlMjAxOGRlNjZkZi4uMTU4YWQxODM0YjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvdHlwZWRvbS9DU1NVbml0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBl
ZG9tL0NTU1VuaXRWYWx1ZS5jcHAKQEAgLTQwLDQzICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKENTU1VuaXRWYWx1ZSk7CiAKLXN0YXRp
YyBzdGQ6Om9wdGlvbmFsPENTU051bWVyaWNUeXBlPiBudW1lcmljVHlwZShDU1NVbml0VHlwZSB1
bml0KQotewotICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzcy1ob3VkaW5pLm9yZy9jc3MtdHlwZWQt
b20vI2Nzc251bWVyaWN2YWx1ZS1jcmVhdGUtYS10eXBlCi0gICAgQ1NTTnVtZXJpY1R5cGUgdHlw
ZTsKLSAgICBzd2l0Y2ggKHVuaXRDYXRlZ29yeSh1bml0KSkgewotICAgIGNhc2UgQ1NTVW5pdENh
dGVnb3J5OjpOdW1iZXI6Ci0gICAgICAgIHJldHVybiB7IFdURk1vdmUodHlwZSkgfTsKLSAgICBj
YXNlIENTU1VuaXRDYXRlZ29yeTo6UGVyY2VudDoKLSAgICAgICAgdHlwZS5wZXJjZW50ID0gMTsK
LSAgICAgICAgcmV0dXJuIHsgV1RGTW92ZSh0eXBlKSB9OwotICAgIGNhc2UgQ1NTVW5pdENhdGVn
b3J5OjpMZW5ndGg6Ci0gICAgICAgIHR5cGUubGVuZ3RoID0gMTsKLSAgICAgICAgcmV0dXJuIHsg
V1RGTW92ZSh0eXBlKSB9OwotICAgIGNhc2UgQ1NTVW5pdENhdGVnb3J5OjpBbmdsZToKLSAgICAg
ICAgdHlwZS5hbmdsZSA9IDE7Ci0gICAgICAgIHJldHVybiB7IFdURk1vdmUodHlwZSkgfTsKLSAg
ICBjYXNlIENTU1VuaXRDYXRlZ29yeTo6VGltZToKLSAgICAgICAgdHlwZS50aW1lID0gMTsKLSAg
ICAgICAgcmV0dXJuIHsgV1RGTW92ZSh0eXBlKSB9OwotICAgIGNhc2UgQ1NTVW5pdENhdGVnb3J5
OjpGcmVxdWVuY3k6Ci0gICAgICAgIHR5cGUuZnJlcXVlbmN5ID0gMTsKLSAgICAgICAgcmV0dXJu
IHsgV1RGTW92ZSh0eXBlKSB9OwotICAgIGNhc2UgQ1NTVW5pdENhdGVnb3J5OjpSZXNvbHV0aW9u
OgotICAgICAgICB0eXBlLnJlc29sdXRpb24gPSAxOwotICAgICAgICByZXR1cm4geyBXVEZNb3Zl
KHR5cGUpIH07Ci0gICAgY2FzZSBDU1NVbml0Q2F0ZWdvcnk6Ok90aGVyOgotICAgICAgICBpZiAo
dW5pdCA9PSBDU1NVbml0VHlwZTo6Q1NTX0ZSKSB7Ci0gICAgICAgICAgICB0eXBlLmZsZXggPSAx
OwotICAgICAgICAgICAgcmV0dXJuIHsgV1RGTW92ZSh0eXBlKSB9OwotICAgICAgICB9Ci0gICAg
ICAgIGJyZWFrOwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotfQotCi1z
dGF0aWMgQ1NTVW5pdFR5cGUgcGFyc2VVbml0KGNvbnN0IFN0cmluZyYgdW5pdCkKK0NTU1VuaXRU
eXBlIENTU1VuaXRWYWx1ZTo6cGFyc2VVbml0KGNvbnN0IFN0cmluZyYgdW5pdCkKIHsKICAgICBp
ZiAodW5pdCA9PSAibnVtYmVyIl9zKQogICAgICAgICByZXR1cm4gQ1NTVW5pdFR5cGU6OkNTU19O
VU1CRVI7CkBAIC0xMjIsNyArODYsNyBAQCBFeGNlcHRpb25PcjxSZWY8Q1NTVW5pdFZhbHVlPj4g
Q1NTVW5pdFZhbHVlOjpjcmVhdGUoZG91YmxlIHZhbHVlLCBjb25zdCBTdHJpbmcmCiAgICAgYXV0
byBwYXJzZWRVbml0ID0gcGFyc2VVbml0KHVuaXQpOwogICAgIGlmIChwYXJzZWRVbml0ID09IENT
U1VuaXRUeXBlOjpDU1NfVU5LTk9XTikKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVF
cnJvciB9OwotICAgIGF1dG8gdHlwZSA9IG51bWVyaWNUeXBlKHBhcnNlZFVuaXQpOworICAgIGF1
dG8gdHlwZSA9IENTU051bWVyaWNUeXBlOjpjcmVhdGUocGFyc2VkVW5pdCk7CiAgICAgaWYgKCF0
eXBlKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yIH07CiAgICAgYXV0byB1
bml0VmFsdWUgPSBhZG9wdFJlZigqbmV3IENTU1VuaXRWYWx1ZSh2YWx1ZSwgcGFyc2VkVW5pdCkp
OwpAQCAtMTMxLDEyICs5NSw4NSBAQCBFeGNlcHRpb25PcjxSZWY8Q1NTVW5pdFZhbHVlPj4gQ1NT
VW5pdFZhbHVlOjpjcmVhdGUoZG91YmxlIHZhbHVlLCBjb25zdCBTdHJpbmcmCiB9CiAKIENTU1Vu
aXRWYWx1ZTo6Q1NTVW5pdFZhbHVlKGRvdWJsZSB2YWx1ZSwgQ1NTVW5pdFR5cGUgdW5pdCkKLSAg
ICA6IENTU051bWVyaWNWYWx1ZShudW1lcmljVHlwZSh1bml0KS52YWx1ZV9vcihDU1NOdW1lcmlj
VHlwZSgpKSkKKyAgICA6IENTU051bWVyaWNWYWx1ZShDU1NOdW1lcmljVHlwZTo6Y3JlYXRlKHVu
aXQpLnZhbHVlX29yKENTU051bWVyaWNUeXBlKCkpKQogICAgICwgbV92YWx1ZSh2YWx1ZSkKICAg
ICAsIG1fdW5pdCh1bml0KQogewogfQogCitzdGF0aWMgZG91YmxlIGNvbnZlcnNpb25Ub0Nhbm9u
aWNhbFVuaXRzU2NhbGVGYWN0b3IoQ1NTVW5pdFR5cGUgdW5pdCkKK3sKKyAgICBjb25zdGV4cHIg
ZG91YmxlIHBpeGVsc1BlckluY2ggPSA5NjsKKyAgICBjb25zdGV4cHIgZG91YmxlIHBpeGVsc1Bl
ckNlbnRpbWV0ZXIgPSBwaXhlbHNQZXJJbmNoIC8gMi41NDsKKyAgICBjb25zdGV4cHIgZG91Ymxl
IHBvaW50c1BlckluY2ggPSA3MjsKKyAgICBjb25zdGV4cHIgZG91YmxlIHBpY2FzUGVySW5jaCA9
IDY7CisKKyAgICBzd2l0Y2ggKHVuaXQpIHsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfTVM6
CisgICAgICAgIHJldHVybiAwLjAwMTsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfQ006Cisg
ICAgICAgIHJldHVybiBwaXhlbHNQZXJDZW50aW1ldGVyOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6
OkNTU19EUENNOgorICAgICAgICByZXR1cm4gMS4wIC8gcGl4ZWxzUGVyQ2VudGltZXRlcjsKKyAg
ICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfTU06CisgICAgICAgIHJldHVybiBwaXhlbHNQZXJDZW50
aW1ldGVyIC8gMTA7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX1E6CisgICAgICAgIHJldHVy
biBwaXhlbHNQZXJDZW50aW1ldGVyIC8gNDA7CisgICAgY2FzZSBDU1NVbml0VHlwZTo6Q1NTX0lO
OgorICAgICAgICByZXR1cm4gcGl4ZWxzUGVySW5jaDsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpD
U1NfRFBJOgorICAgICAgICByZXR1cm4gMS4wIC8gcGl4ZWxzUGVySW5jaDsKKyAgICBjYXNlIENT
U1VuaXRUeXBlOjpDU1NfUFQ6CisgICAgICAgIHJldHVybiBwaXhlbHNQZXJJbmNoIC8gcG9pbnRz
UGVySW5jaDsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1NfUEM6CisgICAgICAgIHJldHVybiBw
aXhlbHNQZXJJbmNoIC8gcGljYXNQZXJJbmNoOworICAgIGNhc2UgQ1NTVW5pdFR5cGU6OkNTU19S
QUQ6CisgICAgICAgIHJldHVybiAxODAgLyBwaURvdWJsZTsKKyAgICBjYXNlIENTU1VuaXRUeXBl
OjpDU1NfR1JBRDoKKyAgICAgICAgcmV0dXJuIDAuOTsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpD
U1NfVFVSTjoKKyAgICAgICAgcmV0dXJuIDM2MDsKKyAgICBjYXNlIENTU1VuaXRUeXBlOjpDU1Nf
S0haOgorICAgICAgICByZXR1cm4gMTAwMDsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4g
MS4wOworICAgIH0KK30KKworUmVmUHRyPENTU1VuaXRWYWx1ZT4gQ1NTVW5pdFZhbHVlOjpjb252
ZXJ0VG8oQ1NTVW5pdFR5cGUgdW5pdCkgY29uc3QKK3sKKyAgICAvLyBodHRwczovL2RyYWZ0cy5j
c3MtaG91ZGluaS5vcmcvY3NzLXR5cGVkLW9tLyNjb252ZXJ0LWEtY3NzdW5pdHZhbHVlCisgICAg
aWYgKHVuaXRDYXRlZ29yeSh1bml0RW51bSgpKSAhPSB1bml0Q2F0ZWdvcnkodW5pdCkpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIGNyZWF0ZShtX3ZhbHVlICogY29udmVy
c2lvblRvQ2Fub25pY2FsVW5pdHNTY2FsZUZhY3Rvcih1bml0RW51bSgpKSAvIGNvbnZlcnNpb25U
b0Nhbm9uaWNhbFVuaXRzU2NhbGVGYWN0b3IodW5pdCksIHVuaXQpOworfQorCithdXRvIENTU1Vu
aXRWYWx1ZTo6dG9TdW1WYWx1ZSgpIGNvbnN0IC0+IHN0ZDo6b3B0aW9uYWw8U3VtVmFsdWU+Cit7
CisgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3NzLWhvdWRpbmkub3JnL2Nzcy10eXBlZC1vbS8jY3Jl
YXRlLWEtc3VtLXZhbHVlCisgICAgYXV0byBjYW5vbmljYWxVbml0ID0gW10gKENTU1VuaXRUeXBl
IHVuaXQpIHsKKyAgICAgICAgLy8gRklYTUU6IFdlIHByb2JhYmx5IHdhbnQgdG8gY2hhbmdlIHRo
ZSBkZWZpbml0aW9uIG9mIGNhbm9uaWNhbFVuaXRUeXBlRm9yQ2F0ZWdvcnkgc28gdGhpcyBsYW1i
ZGEgaXNuJ3QgbmVjZXNzYXJ5LgorICAgICAgICBhdXRvIGNhdGVnb3J5ID0gdW5pdENhdGVnb3J5
KHVuaXQpOworICAgICAgICBzd2l0Y2ggKGNhdGVnb3J5KSB7CisgICAgICAgIGNhc2UgQ1NTVW5p
dENhdGVnb3J5OjpQZXJjZW50OgorICAgICAgICAgICAgcmV0dXJuIENTU1VuaXRUeXBlOjpDU1Nf
UEVSQ0VOVEFHRTsKKyAgICAgICAgY2FzZSBDU1NVbml0Q2F0ZWdvcnk6Ok90aGVyOgorICAgICAg
ICAgICAgaWYgKHVuaXQgPT0gQ1NTVW5pdFR5cGU6OkNTU19GUikKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gQ1NTVW5pdFR5cGU6OkNTU19GUjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGNh
bm9uaWNhbFVuaXRUeXBlRm9yQ2F0ZWdvcnkoY2F0ZWdvcnkpOworICAgIH0gKG1fdW5pdCk7Cisg
ICAgYXV0byBjb252ZXJ0ZWRWYWx1ZSA9IG1fdmFsdWUgKiBjb252ZXJzaW9uVG9DYW5vbmljYWxV
bml0c1NjYWxlRmFjdG9yKHVuaXRFbnVtKCkpIC8gY29udmVyc2lvblRvQ2Fub25pY2FsVW5pdHNT
Y2FsZUZhY3RvcihjYW5vbmljYWxVbml0KTsKKworICAgIGlmIChtX3VuaXQgPT0gQ1NTVW5pdFR5
cGU6OkNTU19OVU1CRVIpCisgICAgICAgIHJldHVybiB7IHsgeyBjb252ZXJ0ZWRWYWx1ZSwgeyB9
IH0gfSB9OworICAgIHJldHVybiB7IHsgeyBjb252ZXJ0ZWRWYWx1ZSwgeyB7IGNhbm9uaWNhbFVu
aXQsIDEgfSB9IH0gfSB9OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vQ1NTVW5pdFZhbHVlLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9DU1NVbml0VmFsdWUuaAppbmRleCBhZmNjOGU0MzUy
NjIuLjRmZTI4MjAwZTk3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20v
Q1NTVW5pdFZhbHVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vQ1NTVW5pdFZh
bHVlLmgKQEAgLTUwLDkgKzUwLDEzIEBAIHB1YmxpYzoKICAgICBBU0NJSUxpdGVyYWwgdW5pdFNl
cmlhbGl6YXRpb24oKSBjb25zdDsKICAgICBDU1NVbml0VHlwZSB1bml0RW51bSgpIGNvbnN0IHsg
cmV0dXJuIG1fdW5pdDsgfQogCisgICAgUmVmUHRyPENTU1VuaXRWYWx1ZT4gY29udmVydFRvKENT
U1VuaXRUeXBlKSBjb25zdDsKKyAgICBzdGF0aWMgQ1NTVW5pdFR5cGUgcGFyc2VVbml0KGNvbnN0
IFN0cmluZyYgdW5pdCk7CisKIHByaXZhdGU6CiAgICAgQ1NTVW5pdFZhbHVlKGRvdWJsZSwgQ1NT
VW5pdFR5cGUpOwogCisgICAgc3RkOjpvcHRpb25hbDxTdW1WYWx1ZT4gdG9TdW1WYWx1ZSgpIGNv
bnN0IGZpbmFsOwogICAgIENTU1N0eWxlVmFsdWVUeXBlIGdldFR5cGUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBDU1NTdHlsZVZhbHVlVHlwZTo6Q1NTVW5pdFZhbHVlOyB9CiAKICAgICBkb3VibGUg
bV92YWx1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMv
Q1NTTWF0aEludmVydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NT
U01hdGhJbnZlcnQuY3BwCmluZGV4IGU2MDk2NTEwOTM3MC4uNzdhOTE4YjU0YjU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhJbnZlcnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aEludmVydC5j
cHAKQEAgLTg0LDYgKzg0LDI3IEBAIHZvaWQgQ1NTTWF0aEludmVydDo6c2VyaWFsaXplKFN0cmlu
Z0J1aWxkZXImIGJ1aWxkZXIsIE9wdGlvblNldDxTZXJpYWxpemF0aW9uQXJnCiAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCcpJyk7CiB9CiAKK2F1dG8gQ1NTTWF0aEludmVydDo6dG9TdW1WYWx1ZSgp
IGNvbnN0IC0+IHN0ZDo6b3B0aW9uYWw8U3VtVmFsdWU+Cit7CisgICAgLy8gaHR0cHM6Ly9kcmFm
dHMuY3NzLWhvdWRpbmkub3JnL2Nzcy10eXBlZC1vbS8jY3JlYXRlLWEtc3VtLXZhbHVlCisgICAg
YXV0byB2YWx1ZXMgPSBtX3ZhbHVlLT50b1N1bVZhbHVlKCk7CisgICAgaWYgKCF2YWx1ZXMpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKHZhbHVlcy0+c2l6ZSgpICE9IDEp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgYXV0byYgdmFsdWUgPSAoKnZhbHVl
cylbMF07CisgICAgaWYgKCF2YWx1ZS52YWx1ZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKyAgICB2YWx1ZS52YWx1ZSA9IDEuMCAvIHZhbHVlLnZhbHVlOworCisgICAgVW5pdE1hcCBu
ZWdhdGVkRXhwb25lbnRzOworICAgIGZvciAoYXV0byYgcGFpciA6IHZhbHVlLnVuaXRzKQorICAg
ICAgICBuZWdhdGVkRXhwb25lbnRzLmFkZChwYWlyLmtleSwgLTEgKiBwYWlyLnZhbHVlKTsKKyAg
ICB2YWx1ZS51bml0cyA9IFdURk1vdmUobmVnYXRlZEV4cG9uZW50cyk7CisKKyAgICByZXR1cm4g
dmFsdWVzOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoSW52ZXJ0LmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhJbnZlcnQuaAppbmRleCBj
YjkyMDY5ZDJhNGIuLjFiZjhkYmIzZjU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoSW52ZXJ0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoSW52ZXJ0LmgKQEAgLTQyLDYgKzQyLDcgQEAgcHJpdmF0
ZToKICAgICBDU1NNYXRoT3BlcmF0b3IgZ2V0T3BlcmF0b3IoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBDU1NNYXRoT3BlcmF0b3I6OkludmVydDsgfQogICAgIENTU1N0eWxlVmFsdWVUeXBlIGdldFR5
cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBDU1NTdHlsZVZhbHVlVHlwZTo6Q1NTTWF0aEludmVy
dDsgfQogICAgIHZvaWQgc2VyaWFsaXplKFN0cmluZ0J1aWxkZXImLCBPcHRpb25TZXQ8U2VyaWFs
aXphdGlvbkFyZ3VtZW50cz4pIGNvbnN0IGZpbmFsOworICAgIHN0ZDo6b3B0aW9uYWw8U3VtVmFs
dWU+IHRvU3VtVmFsdWUoKSBjb25zdCBmaW5hbDsKIAogICAgIENTU01hdGhJbnZlcnQoQ1NTTnVt
YmVyaXNoJiYpOwogICAgIFJlZjxDU1NOdW1lcmljVmFsdWU+IG1fdmFsdWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhNYXguY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoTWF4LmNwcAppbmRleCA5ZmVl
NDg0ZmYyY2EuLjVmMWQ2ZjQ3MmE0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3R5
cGVkb20vbnVtZXJpYy9DU1NNYXRoTWF4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlw
ZWRvbS9udW1lcmljL0NTU01hdGhNYXguY3BwCkBAIC0zMCw2ICszMCw4IEBACiAKICNpZiBFTkFC
TEUoQ1NTX1RZUEVEX09NKQogCisjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKKyNpbmNsdWRlIDx3
dGYvQWxnb3JpdGhtcy5oPgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC0zNywxMyArMzksMjYgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQ1NTTWF0aE1h
eCk7CiAKLUNTU01hdGhNYXg6OkNTU01hdGhNYXgoRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYm
IG51bWJlcmlzaGVzKQotICAgIDogbV92YWx1ZXMoQ1NTTnVtZXJpY0FycmF5OjpjcmVhdGUoV1RG
TW92ZShudW1iZXJpc2hlcykpKQorRXhjZXB0aW9uT3I8UmVmPENTU01hdGhNYXg+PiBDU1NNYXRo
TWF4OjpjcmVhdGUoRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIG51bWJlcmlzaGVzKQogewor
ICAgIHJldHVybiBjcmVhdGUoV1RGOjptYXAoV1RGTW92ZShudW1iZXJpc2hlcyksIHJlY3RpZnlO
dW1iZXJpc2gpKTsKIH0KIAotQ1NTTWF0aE1heDo6Q1NTTWF0aE1heChWZWN0b3I8UmVmPENTU051
bWVyaWNWYWx1ZT4+JiYgdmFsdWVzKQotICAgIDogbV92YWx1ZXMoQ1NTTnVtZXJpY0FycmF5Ojpj
cmVhdGUoV1RGTW92ZSh2YWx1ZXMpKSkKK0V4Y2VwdGlvbk9yPFJlZjxDU1NNYXRoTWF4Pj4gQ1NT
TWF0aE1heDo6Y3JlYXRlKFZlY3RvcjxSZWY8Q1NTTnVtZXJpY1ZhbHVlPj4mJiB2YWx1ZXMpCit7
CisgICAgaWYgKHZhbHVlcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBT
eW50YXhFcnJvciB9OworCisgICAgYXV0byB0eXBlID0gQ1NTTnVtZXJpY1R5cGU6OmFkZFR5cGVz
KHZhbHVlcyk7CisgICAgaWYgKCF0eXBlKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlw
ZUVycm9yIH07CisKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NNYXRoTWF4KFdURk1vdmUo
dmFsdWVzKSwgV1RGTW92ZSgqdHlwZSkpKTsKK30KKworQ1NTTWF0aE1heDo6Q1NTTWF0aE1heChW
ZWN0b3I8UmVmPENTU051bWVyaWNWYWx1ZT4+JiYgdmFsdWVzLCBDU1NOdW1lcmljVHlwZSYmIHR5
cGUpCisgICAgOiBDU1NNYXRoVmFsdWUoV1RGTW92ZSh0eXBlKSkKKyAgICAsIG1fdmFsdWVzKENT
U051bWVyaWNBcnJheTo6Y3JlYXRlKFdURk1vdmUodmFsdWVzKSkpCiB7CiB9CiAKQEAgLTY2LDYg
KzgxLDI1IEBAIHZvaWQgQ1NTTWF0aE1heDo6c2VyaWFsaXplKFN0cmluZ0J1aWxkZXImIGJ1aWxk
ZXIsIE9wdGlvblNldDxTZXJpYWxpemF0aW9uQXJndW1lCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5k
KCcpJyk7CiB9CiAKK2F1dG8gQ1NTTWF0aE1heDo6dG9TdW1WYWx1ZSgpIGNvbnN0IC0+IHN0ZDo6
b3B0aW9uYWw8U3VtVmFsdWU+Cit7CisgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3NzLWhvdWRpbmku
b3JnL2Nzcy10eXBlZC1vbS8jY3JlYXRlLWEtc3VtLXZhbHVlCisgICAgYXV0byYgdmFsdWVzQXJy
YXkgPSBtX3ZhbHVlcy0+YXJyYXkoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN1bVZhbHVlPiBjdXJy
ZW50TWF4ID0gdmFsdWVzQXJyYXlbMF0tPnRvU3VtVmFsdWUoKTsKKyAgICBpZiAoIWN1cnJlbnRN
YXggfHwgY3VycmVudE1heC0+c2l6ZSgpICE9IDEpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCB2YWx1ZXNBcnJheS5zaXplKCk7ICsraSkg
eworICAgICAgICBhdXRvIGN1cnJlbnRWYWx1ZSA9IHZhbHVlc0FycmF5W2ldLT50b1N1bVZhbHVl
KCk7CisgICAgICAgIGlmICghY3VycmVudFZhbHVlCisgICAgICAgICAgICB8fCBjdXJyZW50VmFs
dWUtPnNpemUoKSAhPSAxCisgICAgICAgICAgICB8fCAoKmN1cnJlbnRWYWx1ZSlbMF0udW5pdHMg
IT0gKCpjdXJyZW50TWF4KVswXS51bml0cykKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgICAgIGlmICgoKmN1cnJlbnRWYWx1ZSlbMF0udmFsdWUgPiAoKmN1cnJlbnRNYXgp
WzBdLnZhbHVlKQorICAgICAgICAgICAgY3VycmVudE1heCA9IFdURk1vdmUoY3VycmVudFZhbHVl
KTsKKyAgICB9CisgICAgcmV0dXJuIGN1cnJlbnRNYXg7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9u
dW1lcmljL0NTU01hdGhNYXguaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMv
Q1NTTWF0aE1heC5oCmluZGV4IDM3MWU2MzU5YmIyNS4uMGE4YTcwOTE2NDViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhNYXguaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhNYXguaApAQCAtMzcsMTYg
KzM3LDE3IEBAIGNsYXNzIENTU051bWVyaWNBcnJheTsKIGNsYXNzIENTU01hdGhNYXggZmluYWwg
OiBwdWJsaWMgQ1NTTWF0aFZhbHVlIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKENTU01h
dGhNYXgpOwogcHVibGljOgotICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3M+IHN0YXRpYyBS
ZWY8Q1NTTWF0aE1heD4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKSB7IHJldHVybiBhZG9wdFJlZigq
bmV3IENTU01hdGhNYXgoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7IH0KKyAgICBzdGF0
aWMgRXhjZXB0aW9uT3I8UmVmPENTU01hdGhNYXg+PiBjcmVhdGUoRml4ZWRWZWN0b3I8Q1NTTnVt
YmVyaXNoPiYmKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPENTU01hdGhNYXg+PiBjcmVh
dGUoVmVjdG9yPFJlZjxDU1NOdW1lcmljVmFsdWU+PiYmKTsKICAgICBjb25zdCBDU1NOdW1lcmlj
QXJyYXkmIHZhbHVlcygpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIENTU01hdGhPcGVyYXRvciBn
ZXRPcGVyYXRvcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENTU01hdGhPcGVyYXRvcjo6TWF4OyB9
CiAgICAgQ1NTU3R5bGVWYWx1ZVR5cGUgZ2V0VHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENT
U1N0eWxlVmFsdWVUeXBlOjpDU1NNYXRoTWF4OyB9CiAgICAgdm9pZCBzZXJpYWxpemUoU3RyaW5n
QnVpbGRlciYsIE9wdGlvblNldDxTZXJpYWxpemF0aW9uQXJndW1lbnRzPikgY29uc3QgZmluYWw7
CisgICAgc3RkOjpvcHRpb25hbDxTdW1WYWx1ZT4gdG9TdW1WYWx1ZSgpIGNvbnN0IGZpbmFsOwog
Ci0gICAgQ1NTTWF0aE1heChGaXhlZFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYpOwotICAgIENTU01h
dGhNYXgoVmVjdG9yPFJlZjxDU1NOdW1lcmljVmFsdWU+PiYmKTsKKyAgICBDU1NNYXRoTWF4KFZl
Y3RvcjxSZWY8Q1NTTnVtZXJpY1ZhbHVlPj4mJiwgQ1NTTnVtZXJpY1R5cGUmJik7CiAgICAgUmVm
PENTU051bWVyaWNBcnJheT4gbV92YWx1ZXM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhNaW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoTWluLmNwcAppbmRleCA5YTkxNDZhYmMwMGMuLmQy
NTJiNzg0Yzk2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJp
Yy9DU1NNYXRoTWluLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmlj
L0NTU01hdGhNaW4uY3BwCkBAIC0yNiwxMCArMjYsMTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIK
ICNpbmNsdWRlICJDU1NNYXRoTWluLmgiCiAKLSNpbmNsdWRlICJDU1NOdW1lcmljQXJyYXkuaCIK
LQogI2lmIEVOQUJMRShDU1NfVFlQRURfT00pCiAKKyNpbmNsdWRlICJDU1NOdW1lcmljQXJyYXku
aCIKKyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxp
bmVzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCkBAIC0zNywxMyAr
MzcsMjYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lN
UEwoQ1NTTWF0aE1pbik7CiAKLUNTU01hdGhNaW46OkNTU01hdGhNaW4oRml4ZWRWZWN0b3I8Q1NT
TnVtYmVyaXNoPiYmIG51bWJlcmlzaGVzKQotICAgIDogbV92YWx1ZXMoQ1NTTnVtZXJpY0FycmF5
OjpjcmVhdGUoV1RGTW92ZShudW1iZXJpc2hlcykpKQorRXhjZXB0aW9uT3I8UmVmPENTU01hdGhN
aW4+PiBDU1NNYXRoTWluOjpjcmVhdGUoRml4ZWRWZWN0b3I8Q1NTTnVtYmVyaXNoPiYmIG51bWJl
cmlzaGVzKQogeworICAgIHJldHVybiBjcmVhdGUoV1RGOjptYXAoV1RGTW92ZShudW1iZXJpc2hl
cyksIHJlY3RpZnlOdW1iZXJpc2gpKTsKIH0KIAotQ1NTTWF0aE1pbjo6Q1NTTWF0aE1pbihWZWN0
b3I8UmVmPENTU051bWVyaWNWYWx1ZT4+JiYgdmFsdWVzKQotICAgIDogbV92YWx1ZXMoQ1NTTnVt
ZXJpY0FycmF5OjpjcmVhdGUoV1RGTW92ZSh2YWx1ZXMpKSkKK0V4Y2VwdGlvbk9yPFJlZjxDU1NN
YXRoTWluPj4gQ1NTTWF0aE1pbjo6Y3JlYXRlKFZlY3RvcjxSZWY8Q1NTTnVtZXJpY1ZhbHVlPj4m
JiB2YWx1ZXMpCit7CisgICAgaWYgKHZhbHVlcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBTeW50YXhFcnJvciB9OworCisgICAgYXV0byB0eXBlID0gQ1NTTnVtZXJpY1R5
cGU6OmFkZFR5cGVzKHZhbHVlcyk7CisgICAgaWYgKCF0eXBlKQorICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgVHlwZUVycm9yIH07CisKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NNYXRo
TWluKFdURk1vdmUodmFsdWVzKSwgV1RGTW92ZSgqdHlwZSkpKTsKK30KKworQ1NTTWF0aE1pbjo6
Q1NTTWF0aE1pbihWZWN0b3I8UmVmPENTU051bWVyaWNWYWx1ZT4+JiYgdmFsdWVzLCBDU1NOdW1l
cmljVHlwZSYmIHR5cGUpCisgICAgOiBDU1NNYXRoVmFsdWUoV1RGTW92ZSh0eXBlKSkKKyAgICAs
IG1fdmFsdWVzKENTU051bWVyaWNBcnJheTo6Y3JlYXRlKFdURk1vdmUodmFsdWVzKSkpCiB7CiB9
CiAKQEAgLTY2LDYgKzc5LDI1IEBAIHZvaWQgQ1NTTWF0aE1pbjo6c2VyaWFsaXplKFN0cmluZ0J1
aWxkZXImIGJ1aWxkZXIsIE9wdGlvblNldDxTZXJpYWxpemF0aW9uQXJndW1lCiAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCcpJyk7CiB9CiAKK2F1dG8gQ1NTTWF0aE1pbjo6dG9TdW1WYWx1ZSgpIGNv
bnN0IC0+IHN0ZDo6b3B0aW9uYWw8U3VtVmFsdWU+Cit7CisgICAgLy8gaHR0cHM6Ly9kcmFmdHMu
Y3NzLWhvdWRpbmkub3JnL2Nzcy10eXBlZC1vbS8jY3JlYXRlLWEtc3VtLXZhbHVlCisgICAgYXV0
byYgdmFsdWVzQXJyYXkgPSBtX3ZhbHVlcy0+YXJyYXkoKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFN1
bVZhbHVlPiBjdXJyZW50TWF4ID0gdmFsdWVzQXJyYXlbMF0tPnRvU3VtVmFsdWUoKTsKKyAgICBp
ZiAoIWN1cnJlbnRNYXggfHwgY3VycmVudE1heC0+c2l6ZSgpICE9IDEpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCB2YWx1ZXNBcnJheS5z
aXplKCk7ICsraSkgeworICAgICAgICBhdXRvIGN1cnJlbnRWYWx1ZSA9IHZhbHVlc0FycmF5W2ld
LT50b1N1bVZhbHVlKCk7CisgICAgICAgIGlmICghY3VycmVudFZhbHVlCisgICAgICAgICAgICB8
fCBjdXJyZW50VmFsdWUtPnNpemUoKSAhPSAxCisgICAgICAgICAgICB8fCAoKmN1cnJlbnRWYWx1
ZSlbMF0udW5pdHMgIT0gKCpjdXJyZW50TWF4KVswXS51bml0cykKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGlmICgoKmN1cnJlbnRWYWx1ZSlbMF0udmFsdWUgPCAo
KmN1cnJlbnRNYXgpWzBdLnZhbHVlKQorICAgICAgICAgICAgY3VycmVudE1heCA9IFdURk1vdmUo
Y3VycmVudFZhbHVlKTsKKyAgICB9CisgICAgcmV0dXJuIGN1cnJlbnRNYXg7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhNaW4uaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBl
ZG9tL251bWVyaWMvQ1NTTWF0aE1pbi5oCmluZGV4IDE4M2RkNGRhNTYwYS4uNGZmNWY5MDc3NDc1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhN
aW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhNaW4u
aApAQCAtMzcsMTYgKzM3LDE3IEBAIGNsYXNzIENTU051bWVyaWNBcnJheTsKIGNsYXNzIENTU01h
dGhNaW4gZmluYWwgOiBwdWJsaWMgQ1NTTWF0aFZhbHVlIHsKICAgICBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEKENTU01hdGhNaW4pOwogcHVibGljOgotICAgIHRlbXBsYXRlPHR5cGVuYW1lLi4uIEFy
Z3M+IHN0YXRpYyBSZWY8Q1NTTWF0aE1pbj4gY3JlYXRlKEFyZ3MmJi4uLiBhcmdzKSB7IHJldHVy
biBhZG9wdFJlZigqbmV3IENTU01hdGhNaW4oc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7
IH0KKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPENTU01hdGhNaW4+PiBjcmVhdGUoRml4ZWRW
ZWN0b3I8Q1NTTnVtYmVyaXNoPiYmKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPENTU01h
dGhNaW4+PiBjcmVhdGUoVmVjdG9yPFJlZjxDU1NOdW1lcmljVmFsdWU+PiYmKTsKICAgICBjb25z
dCBDU1NOdW1lcmljQXJyYXkmIHZhbHVlcygpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIENTU01h
dGhPcGVyYXRvciBnZXRPcGVyYXRvcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIENTU01hdGhPcGVy
YXRvcjo6TWluOyB9CiAgICAgQ1NTU3R5bGVWYWx1ZVR5cGUgZ2V0VHlwZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIENTU1N0eWxlVmFsdWVUeXBlOjpDU1NNYXRoTWluOyB9CiAgICAgdm9pZCBzZXJp
YWxpemUoU3RyaW5nQnVpbGRlciYsIE9wdGlvblNldDxTZXJpYWxpemF0aW9uQXJndW1lbnRzPikg
Y29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxTdW1WYWx1ZT4gdG9TdW1WYWx1ZSgpIGNv
bnN0IGZpbmFsOwogCi0gICAgQ1NTTWF0aE1pbihGaXhlZFZlY3RvcjxDU1NOdW1iZXJpc2g+JiYp
OwotICAgIENTU01hdGhNaW4oVmVjdG9yPFJlZjxDU1NOdW1lcmljVmFsdWU+PiYmKTsKKyAgICBD
U1NNYXRoTWluKFZlY3RvcjxSZWY8Q1NTTnVtZXJpY1ZhbHVlPj4mJiwgQ1NTTnVtZXJpY1R5cGUm
Jik7CiAgICAgUmVmPENTU051bWVyaWNBcnJheT4gbV92YWx1ZXM7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhOZWdhdGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoTmVnYXRlLmNwcAppbmRl
eCA2ODIxYThlN2JmYTcuLjIzYWM4ZDIzYWEzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoTmVnYXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhOZWdhdGUuY3BwCkBAIC02Niw2ICs2NiwxNyBA
QCB2b2lkIENTU01hdGhOZWdhdGU6OnNlcmlhbGl6ZShTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBP
cHRpb25TZXQ8U2VyaWFsaXphdGlvbkFyZwogICAgICAgICBidWlsZGVyLmFwcGVuZCgnKScpOwog
fQogCithdXRvIENTU01hdGhOZWdhdGU6OnRvU3VtVmFsdWUoKSBjb25zdCAtPiBzdGQ6Om9wdGlv
bmFsPFN1bVZhbHVlPgoreworICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzcy1ob3VkaW5pLm9yZy9j
c3MtdHlwZWQtb20vI2NyZWF0ZS1hLXN1bS12YWx1ZQorICAgIGF1dG8gdmFsdWVzID0gbV92YWx1
ZS0+dG9TdW1WYWx1ZSgpOworICAgIGlmICghdmFsdWVzKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgIGZvciAoYXV0byYgdmFsdWUgOiAqdmFsdWVzKQorICAgICAgICB2YWx1ZS52
YWx1ZSA9IHZhbHVlLnZhbHVlICogLTE7CisgICAgcmV0dXJuIHZhbHVlczsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aE5lZ2F0ZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL3R5
cGVkb20vbnVtZXJpYy9DU1NNYXRoTmVnYXRlLmgKaW5kZXggYzE1ZTYwYTEwOWE3Li5kMTNiZDQ1
M2IwZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NT
TWF0aE5lZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NT
TWF0aE5lZ2F0ZS5oCkBAIC00NSw2ICs0NSw3IEBAIHByaXZhdGU6CiAgICAgQ1NTTWF0aE9wZXJh
dG9yIGdldE9wZXJhdG9yKCkgY29uc3QgZmluYWwgeyByZXR1cm4gQ1NTTWF0aE9wZXJhdG9yOjpO
ZWdhdGU7IH0KICAgICBDU1NTdHlsZVZhbHVlVHlwZSBnZXRUeXBlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gQ1NTU3R5bGVWYWx1ZVR5cGU6OkNTU01hdGhOZWdhdGU7IH0KICAgICB2b2lkIHNlcmlh
bGl6ZShTdHJpbmdCdWlsZGVyJiwgT3B0aW9uU2V0PFNlcmlhbGl6YXRpb25Bcmd1bWVudHM+KSBj
b25zdCBmaW5hbDsKKyAgICBzdGQ6Om9wdGlvbmFsPFN1bVZhbHVlPiB0b1N1bVZhbHVlKCkgY29u
c3QgZmluYWw7CiAKICAgICBDU1NNYXRoTmVnYXRlKENTU051bWJlcmlzaCYmKTsKICAgICBSZWY8
Q1NTTnVtZXJpY1ZhbHVlPiBtX3ZhbHVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoUHJvZHVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
dHlwZWRvbS9udW1lcmljL0NTU01hdGhQcm9kdWN0LmNwcAppbmRleCA0MTIzYzI5ZTk4MTYuLmFj
ZTY4ZmVlNzQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJp
Yy9DU1NNYXRoUHJvZHVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVt
ZXJpYy9DU1NNYXRoUHJvZHVjdC5jcHAKQEAgLTgyLDYgKzgyLDM5IEBAIHZvaWQgQ1NTTWF0aFBy
b2R1Y3Q6OnNlcmlhbGl6ZShTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBPcHRpb25TZXQ8U2VyaWFs
aXphdGlvbkFyCiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcpJyk7CiB9CiAKK2F1dG8gQ1NTTWF0
aFByb2R1Y3Q6OnRvU3VtVmFsdWUoKSBjb25zdCAtPiBzdGQ6Om9wdGlvbmFsPFN1bVZhbHVlPgor
eworICAgIGF1dG8gcHJvZHVjdE9mVW5pdHMgPSBbXSAoY29uc3QgYXV0byYgdW5pdHMxLCBjb25z
dCBhdXRvJiB1bml0czIpIHsKKyAgICAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3NzLWhvdWRpbmku
b3JnL2Nzcy10eXBlZC1vbS8jcHJvZHVjdC1vZi10d28tdW5pdC1tYXBzCisgICAgICAgIGF1dG8g
cmVzdWx0ID0gdW5pdHMxOworICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiB1bml0czIpIHsKKyAg
ICAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gcmVzdWx0LmFkZChwYWlyLmtleSwgcGFpci52YWx1
ZSk7CisgICAgICAgICAgICBpZiAoIWFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICAgICAg
ICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgKz0gcGFpci52YWx1ZTsKKyAgICAgICAgICAg
IGlmICghYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSkKKyAgICAgICAgICAgICAgICByZXN1bHQu
cmVtb3ZlKHBhaXIua2V5KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
IH07CisgICAgCisgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3NzLWhvdWRpbmkub3JnL2Nzcy10eXBl
ZC1vbS8jY3JlYXRlLWEtc3VtLXZhbHVlCisgICAgU3VtVmFsdWUgdmFsdWVzIHsgQWRkZW5kIHsg
MS4wLCB7IH0gfSB9OworICAgIGZvciAoYXV0byYgaXRlbSA6IG1fdmFsdWVzLT5hcnJheSgpKSB7
CisgICAgICAgIGF1dG8gbmV3VmFsdWVzID0gaXRlbS0+dG9TdW1WYWx1ZSgpOworICAgICAgICBp
ZiAoIW5ld1ZhbHVlcykKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAg
IFN1bVZhbHVlIHRlbXA7CisgICAgICAgIGZvciAoYXV0byYgaXRlbTEgOiB2YWx1ZXMpIHsKKyAg
ICAgICAgICAgIGZvciAoYXV0byYgaXRlbTIgOiAqbmV3VmFsdWVzKSB7CisgICAgICAgICAgICAg
ICAgQWRkZW5kIGl0ZW0geyBpdGVtMS52YWx1ZSAqIGl0ZW0yLnZhbHVlLCBwcm9kdWN0T2ZVbml0
cyhpdGVtMS51bml0cywgaXRlbTIudW5pdHMpIH07CisgICAgICAgICAgICAgICAgdGVtcC5hcHBl
bmQoV1RGTW92ZShpdGVtKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgdmFs
dWVzID0gV1RGTW92ZSh0ZW1wKTsKKyAgICB9CisgICAgcmV0dXJuIHsgV1RGTW92ZSh2YWx1ZXMp
IH07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhQcm9kdWN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhQcm9kdWN0LmgKaW5kZXggMTAy
YWM1YzBmYjY3Li5kMWVlYmIxZDg4YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy90
eXBlZG9tL251bWVyaWMvQ1NTTWF0aFByb2R1Y3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
dHlwZWRvbS9udW1lcmljL0NTU01hdGhQcm9kdWN0LmgKQEAgLTQ1LDYgKzQ1LDcgQEAgcHJpdmF0
ZToKICAgICBDU1NNYXRoT3BlcmF0b3IgZ2V0T3BlcmF0b3IoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBDU1NNYXRoT3BlcmF0b3I6OlByb2R1Y3Q7IH0KICAgICBDU1NTdHlsZVZhbHVlVHlwZSBnZXRU
eXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gQ1NTU3R5bGVWYWx1ZVR5cGU6OkNTU01hdGhQcm9k
dWN0OyB9CiAgICAgdm9pZCBzZXJpYWxpemUoU3RyaW5nQnVpbGRlciYsIE9wdGlvblNldDxTZXJp
YWxpemF0aW9uQXJndW1lbnRzPikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxTdW1WYWx1ZT4g
dG9TdW1WYWx1ZSgpIGNvbnN0IGZpbmFsOwogCiAgICAgQ1NTTWF0aFByb2R1Y3QoVmVjdG9yPFJl
ZjxDU1NOdW1lcmljVmFsdWU+PiwgQ1NTTnVtZXJpY1R5cGUpOwogICAgIFJlZjxDU1NOdW1lcmlj
QXJyYXk+IG1fdmFsdWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20v
bnVtZXJpYy9DU1NNYXRoU3VtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVy
aWMvQ1NTTWF0aFN1bS5jcHAKaW5kZXggMGFhYWFiNzU2ZWM5Li43NzBhNjcxNTE3MDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aFN1bS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NNYXRoU3VtLmNwcApA
QCAtODMsNiArODMsNTUgQEAgdm9pZCBDU1NNYXRoU3VtOjpzZXJpYWxpemUoU3RyaW5nQnVpbGRl
ciYgYnVpbGRlciwgT3B0aW9uU2V0PFNlcmlhbGl6YXRpb25Bcmd1bWUKICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoJyknKTsKIH0KIAorYXV0byBDU1NNYXRoU3VtOjp0b1N1bVZhbHVlKCkgY29uc3Qg
LT4gc3RkOjpvcHRpb25hbDxTdW1WYWx1ZT4KK3sKKyAgICBhdXRvIGNvbnZlcnRUb051bWVyaWNU
eXBlID0gW10gKGNvbnN0IFVuaXRNYXAmIHVuaXRzKSAtPiBzdGQ6Om9wdGlvbmFsPENTU051bWVy
aWNUeXBlPiB7CisgICAgICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzcy1ob3VkaW5pLm9yZy9jc3Mt
dHlwZWQtb20vI2NyZWF0ZS1hLXR5cGUtZnJvbS1hLXVuaXQtbWFwCisgICAgICAgIENTU051bWVy
aWNUeXBlIHR5cGU7CisgICAgICAgIGZvciAoYXV0byYgcGFpciA6IHVuaXRzKSB7CisgICAgICAg
ICAgICBhdXRvIHVuaXQgPSBDU1NOdW1lcmljVHlwZTo6Y3JlYXRlKHBhaXIua2V5LCBwYWlyLnZh
bHVlKTsKKyAgICAgICAgICAgIGlmICghdW5pdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworICAgICAgICAgICAgYXV0byBtdWx0aXBsaWVkVHlwZSA9IENTU051bWVyaWNU
eXBlOjptdWx0aXBseVR5cGVzKHR5cGUsICp1bml0KTsKKyAgICAgICAgICAgIGlmICghbXVsdGlw
bGllZFR5cGUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIHR5cGUgPSBXVEZNb3ZlKCptdWx0aXBsaWVkVHlwZSk7CisgICAgICAgIH0KKyAgICAgICAg
cmV0dXJuIHR5cGU7CisgICAgfTsKKworICAgIC8vIGh0dHBzOi8vZHJhZnRzLmNzcy1ob3VkaW5p
Lm9yZy9jc3MtdHlwZWQtb20vI2NyZWF0ZS1hLXN1bS12YWx1ZQorICAgIFN1bVZhbHVlIHZhbHVl
czsKKyAgICBmb3IgKGF1dG8mIGl0ZW0gOiBtX3ZhbHVlcy0+YXJyYXkoKSkgeworICAgICAgICBh
dXRvIHZhbHVlID0gaXRlbS0+dG9TdW1WYWx1ZSgpOworICAgICAgICBpZiAoIXZhbHVlKQorICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgZm9yIChhdXRvJiBzdWJ2YWx1
ZSA6ICp2YWx1ZSkgeworICAgICAgICAgICAgYXV0byBpbmRleCA9IHZhbHVlcy5maW5kSWYoWyZd
KGF1dG8mIHZhbHVlKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnVuaXRzID09IHN1
YnZhbHVlLnVuaXRzOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBpZiAoaW5kZXggPT0g
bm90Rm91bmQpCisgICAgICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChXVEZNb3ZlKHN1YnZhbHVl
KSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdmFsdWVzW2luZGV4XS52YWx1
ZSArPSBzdWJ2YWx1ZS52YWx1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGF1dG8gdHlwZSA9
IGNvbnZlcnRUb051bWVyaWNUeXBlKHZhbHVlc1swXS51bml0cyk7CisgICAgaWYgKCF0eXBlKQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGZvciAoc2l6ZV90IGkgPSAxOyBpIDwg
dmFsdWVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGF1dG8gdGhpc1R5cGUgPSBjb252ZXJ0VG9O
dW1lcmljVHlwZSh2YWx1ZXNbaV0udW5pdHMpOworICAgICAgICBpZiAoIXRoaXNUeXBlKQorICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgdHlwZSA9IENTU051bWVyaWNU
eXBlOjphZGRUeXBlcygqdHlwZSwgKnRoaXNUeXBlKTsKKyAgICAgICAgaWYgKCF0eXBlKQorICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHsg
V1RGTW92ZSh2YWx1ZXMpIH07Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhT
dW0uaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTWF0aFN1bS5oCmlu
ZGV4IDkxNjhhNTIyYjM5Yy4uYzA1NWE0NjE0YmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhTdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvdHlwZWRvbS9udW1lcmljL0NTU01hdGhTdW0uaApAQCAtNDYsNiArNDYsNyBAQCBwcml2YXRl
OgogICAgIENTU01hdGhPcGVyYXRvciBnZXRPcGVyYXRvcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IENTU01hdGhPcGVyYXRvcjo6U3VtOyB9CiAgICAgQ1NTU3R5bGVWYWx1ZVR5cGUgZ2V0VHlwZSgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIENTU1N0eWxlVmFsdWVUeXBlOjpDU1NNYXRoU3VtOyB9
CiAgICAgdm9pZCBzZXJpYWxpemUoU3RyaW5nQnVpbGRlciYsIE9wdGlvblNldDxTZXJpYWxpemF0
aW9uQXJndW1lbnRzPikgY29uc3QgZmluYWw7CisgICAgc3RkOjpvcHRpb25hbDxTdW1WYWx1ZT4g
dG9TdW1WYWx1ZSgpIGNvbnN0IGZpbmFsOwogCiAgICAgQ1NTTWF0aFN1bShWZWN0b3I8UmVmPENT
U051bWVyaWNWYWx1ZT4+LCBDU1NOdW1lcmljVHlwZSk7CiAgICAgUmVmPENTU051bWVyaWNBcnJh
eT4gbV92YWx1ZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1l
cmljL0NTU051bWVyaWNBcnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1l
cmljL0NTU051bWVyaWNBcnJheS5jcHAKaW5kZXggMjI5Nzc2MzUwNDI4Li4wZDE2NGE4ZjNmZWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTnVtZXJp
Y0FycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU051
bWVyaWNBcnJheS5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgRXhjZXB0aW9uT3I8UmVmPENTU051bWVy
aWNWYWx1ZT4+IENTU051bWVyaWNBcnJheTo6aXRlbShzaXplX3QgaW5kZXgpCiAKIHZvaWQgQ1NT
TnVtZXJpY0FycmF5Ojpmb3JFYWNoKEZ1bmN0aW9uPHZvaWQoY29uc3QgQ1NTTnVtZXJpY1ZhbHVl
JiwgYm9vbCBmaXJzdCk+IGZ1bmN0aW9uKQogewotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9hcnJheS5zaXplKCk7IGkrKykKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYXJyYXku
c2l6ZSgpOyArK2kpCiAgICAgICAgIGZ1bmN0aW9uKG1fYXJyYXlbaV0sICFpKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NOdW1lcmljVHlw
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvdHlwZWRvbS9udW1lcmljL0NTU051bWVyaWNUeXBl
LmNwcAppbmRleCBmY2Q2OTRiZGQ4OTQuLmUxMDM3YTkxNTA5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NOdW1lcmljVHlwZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL3R5cGVkb20vbnVtZXJpYy9DU1NOdW1lcmljVHlwZS5jcHAKQEAgLTI2
LDExICsyNiw0OCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNTU051bWVyaWNU
eXBlLmgiCiAjaW5jbHVkZSAiQ1NTTnVtZXJpY1ZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTVW5pdHMu
aCIKIAogI2lmIEVOQUJMRShDU1NfVFlQRURfT00pCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAor
c3RkOjpvcHRpb25hbDxDU1NOdW1lcmljVHlwZT4gQ1NTTnVtZXJpY1R5cGU6OmNyZWF0ZShDU1NV
bml0VHlwZSB1bml0LCBpbnQgZXhwb25lbnQpCit7CisgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nz
LWhvdWRpbmkub3JnL2Nzcy10eXBlZC1vbS8jY3NzbnVtZXJpY3ZhbHVlLWNyZWF0ZS1hLXR5cGUK
KyAgICBDU1NOdW1lcmljVHlwZSB0eXBlOworICAgIHN3aXRjaCAodW5pdENhdGVnb3J5KHVuaXQp
KSB7CisgICAgY2FzZSBDU1NVbml0Q2F0ZWdvcnk6Ok51bWJlcjoKKyAgICAgICAgcmV0dXJuIHsg
V1RGTW92ZSh0eXBlKSB9OworICAgIGNhc2UgQ1NTVW5pdENhdGVnb3J5OjpQZXJjZW50OgorICAg
ICAgICB0eXBlLnBlcmNlbnQgPSBleHBvbmVudDsKKyAgICAgICAgcmV0dXJuIHsgV1RGTW92ZSh0
eXBlKSB9OworICAgIGNhc2UgQ1NTVW5pdENhdGVnb3J5OjpMZW5ndGg6CisgICAgICAgIHR5cGUu
bGVuZ3RoID0gZXhwb25lbnQ7CisgICAgICAgIHJldHVybiB7IFdURk1vdmUodHlwZSkgfTsKKyAg
ICBjYXNlIENTU1VuaXRDYXRlZ29yeTo6QW5nbGU6CisgICAgICAgIHR5cGUuYW5nbGUgPSBleHBv
bmVudDsKKyAgICAgICAgcmV0dXJuIHsgV1RGTW92ZSh0eXBlKSB9OworICAgIGNhc2UgQ1NTVW5p
dENhdGVnb3J5OjpUaW1lOgorICAgICAgICB0eXBlLnRpbWUgPSBleHBvbmVudDsKKyAgICAgICAg
cmV0dXJuIHsgV1RGTW92ZSh0eXBlKSB9OworICAgIGNhc2UgQ1NTVW5pdENhdGVnb3J5OjpGcmVx
dWVuY3k6CisgICAgICAgIHR5cGUuZnJlcXVlbmN5ID0gZXhwb25lbnQ7CisgICAgICAgIHJldHVy
biB7IFdURk1vdmUodHlwZSkgfTsKKyAgICBjYXNlIENTU1VuaXRDYXRlZ29yeTo6UmVzb2x1dGlv
bjoKKyAgICAgICAgdHlwZS5yZXNvbHV0aW9uID0gZXhwb25lbnQ7CisgICAgICAgIHJldHVybiB7
IFdURk1vdmUodHlwZSkgfTsKKyAgICBjYXNlIENTU1VuaXRDYXRlZ29yeTo6T3RoZXI6CisgICAg
ICAgIGlmICh1bml0ID09IENTU1VuaXRUeXBlOjpDU1NfRlIpIHsKKyAgICAgICAgICAgIHR5cGUu
ZmxleCA9IGV4cG9uZW50OworICAgICAgICAgICAgcmV0dXJuIHsgV1RGTW92ZSh0eXBlKSB9Owor
ICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworfQorCiBzdGQ6Om9wdGlvbmFsPENTU051bWVyaWNUeXBlPiBDU1NOdW1lcmljVHlw
ZTo6YWRkVHlwZXMoQ1NTTnVtZXJpY1R5cGUgYSwgQ1NTTnVtZXJpY1R5cGUgYikKIHsKICAgICAv
LyBodHRwczovL2RyYWZ0cy5jc3MtaG91ZGluaS5vcmcvY3NzLXR5cGVkLW9tLyNjc3NudW1lcmlj
dmFsdWUtYWRkLXR3by10eXBlcwpAQCAtNjQsNyArMTAxLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUg
QXJndW1lbnQ+IHN0ZDo6b3B0aW9uYWw8Q1NTTnVtZXJpY1R5cGU+IHR5cGVGcm9tVmVjdG9yKGNv
bnN0IFYKICAgICBpZiAodmFsdWVzLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBzdGQ6Om9wdGlvbmFsPENTU051bWVyaWNUeXBlPiB0eXBlID0gdmFsdWVzWzBd
LT50eXBlKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCB2YWx1ZXMuc2l6ZSgpOyBpKysp
IHsKKyAgICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IHZhbHVlcy5zaXplKCk7ICsraSkgewogICAg
ICAgICB0eXBlID0gZnVuY3Rpb24oKnR5cGUsIHZhbHVlc1tpXS0+dHlwZSgpKTsKICAgICAgICAg
aWYgKCF0eXBlKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTnVtZXJpY1R5cGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy90eXBlZG9tL251bWVyaWMvQ1NTTnVtZXJpY1R5cGUuaAppbmRleCBm
NzY1ODc2YWRlY2QuLjliZjU4ZGQzNjE2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L3R5cGVkb20vbnVtZXJpYy9DU1NOdW1lcmljVHlwZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy90eXBlZG9tL251bWVyaWMvQ1NTTnVtZXJpY1R5cGUuaApAQCAtMzUsNiArMzUsNyBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDU1NOdW1lcmljVmFsdWU7CitlbnVtIGNsYXNzIENT
U1VuaXRUeXBlIDogdWludDhfdDsKIAogLy8gaHR0cHM6Ly9kcmFmdHMuY3NzLWhvdWRpbmkub3Jn
L2Nzcy10eXBlZC1vbS8jZG9tLWNzc251bWVyaWN2YWx1ZS10eXBlCiBjbGFzcyBDU1NOdW1lcmlj
VHlwZSB7CkBAIC00OSw5ICs1MCwxMyBAQCBwdWJsaWM6CiAgICAgQmFzZVR5cGVTdG9yYWdlIHBl
cmNlbnQ7CiAgICAgTWFya2FibGU8Q1NTTnVtZXJpY0Jhc2VUeXBlLCBFbnVtTWFya2FibGVUcmFp
dHM8Q1NTTnVtZXJpY0Jhc2VUeXBlPj4gcGVyY2VudEhpbnQ7CiAKKyAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxDU1NOdW1lcmljVHlwZT4gY3JlYXRlKENTU1VuaXRUeXBlLCBpbnQgZXhwb25lbnQg
PSAxKTsKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ1NTTnVtZXJpY1R5cGUmIG90aGVyKSBj
b25zdDsKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQ1NTTnVtZXJpY1R5cGUmIG90aGVyKSBj
b25zdCB7IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsgfQogICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPENTU051bWVyaWNUeXBlPiBhZGRUeXBlcyhjb25zdCBWZWN0b3I8UmVmPENTU051bWVyaWNW
YWx1ZT4+Jik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q1NTTnVtZXJpY1R5cGU+IGFkZFR5
cGVzKENTU051bWVyaWNUeXBlLCBDU1NOdW1lcmljVHlwZSk7CiAgICAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8Q1NTTnVtZXJpY1R5cGU+IG11bHRpcGx5VHlwZXMoY29uc3QgVmVjdG9yPFJlZjxDU1NO
dW1lcmljVmFsdWU+PiYpOworICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENTU051bWVyaWNUeXBl
PiBtdWx0aXBseVR5cGVzKGNvbnN0IENTU051bWVyaWNUeXBlJiwgY29uc3QgQ1NTTnVtZXJpY1R5
cGUmKTsKICAgICBCYXNlVHlwZVN0b3JhZ2UmIHZhbHVlRm9yVHlwZShDU1NOdW1lcmljQmFzZVR5
cGUpOwogICAgIGNvbnN0IEJhc2VUeXBlU3RvcmFnZSYgdmFsdWVGb3JUeXBlKENTU051bWVyaWNC
YXNlVHlwZSB0eXBlKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PENTU051bWVyaWNUeXBlKj4o
dGhpcyktPnZhbHVlRm9yVHlwZSh0eXBlKTsgfQogICAgIHZvaWQgYXBwbHlQZXJjZW50SGludChD
U1NOdW1lcmljQmFzZVR5cGUpOwpAQCAtODAsOSArODUsNiBAQCBwdWJsaWM6CiAgICAgfQogCiAg
ICAgU3RyaW5nIGRlYnVnU3RyaW5nKCkgY29uc3Q7Ci1wcml2YXRlOgotICAgIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPENTU051bWVyaWNUeXBlPiBhZGRUeXBlcyhDU1NOdW1lcmljVHlwZSwgQ1NTTnVt
ZXJpY1R5cGUpOwotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENTU051bWVyaWNUeXBlPiBtdWx0
aXBseVR5cGVzKGNvbnN0IENTU051bWVyaWNUeXBlJiwgY29uc3QgQ1NTTnVtZXJpY1R5cGUmKTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy90eXBlZG9tL3RyYW5zZm9ybS9DU1NUcmFuc2Zvcm1WYWx1ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvdHlwZWRvbS90cmFuc2Zvcm0vQ1NTVHJhbnNmb3JtVmFsdWUuY3BwCmluZGV4IDk4
ZGNmNzc2MmY4ZS4uNDQ3MzI0YjQ0YTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
dHlwZWRvbS90cmFuc2Zvcm0vQ1NTVHJhbnNmb3JtVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy90eXBlZG9tL3RyYW5zZm9ybS9DU1NUcmFuc2Zvcm1WYWx1ZS5jcHAKQEAgLTk0LDcg
Kzk0LDcgQEAgQ1NTVHJhbnNmb3JtVmFsdWU6OkNTU1RyYW5zZm9ybVZhbHVlKFZlY3RvcjxSZWZQ
dHI8Q1NTVHJhbnNmb3JtQ29tcG9uZW50Pj4mJiB0cmEKIHZvaWQgQ1NTVHJhbnNmb3JtVmFsdWU6
OnNlcmlhbGl6ZShTdHJpbmdCdWlsZGVyJiBidWlsZGVyLCBPcHRpb25TZXQ8U2VyaWFsaXphdGlv
bkFyZ3VtZW50cz4pIGNvbnN0CiB7CiAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3NzLWhvdWRpbmku
b3JnL2Nzcy10eXBlZC1vbS8jc2VyaWFsaXplLWEtY3NzdHJhbnNmb3JtdmFsdWUKLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fY29tcG9uZW50cy5zaXplKCk7IGkrKykgeworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV9jb21wb25lbnRzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGlm
IChpKQogICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKICAgICAgICAgbV9jb21wb25l
bnRzW2ldLT5zZXJpYWxpemUoYnVpbGRlcik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHlwZWQtb20vc3R5bGV2YWx1ZS1z
dWJjbGFzc2VzL2Nzc1JvdGF0ZS50ZW50YXRpdmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXR5cGVkLW9tL3N0eWxldmFs
dWUtc3ViY2xhc3Nlcy9jc3NSb3RhdGUudGVudGF0aXZlLWV4cGVjdGVkLnR4dAppbmRleCAxZWI2
ZDFjNjNkOTMuLjE4YzFmMWE1NmViOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXR5cGVkLW9tL3N0eWxldmFsdWUtc3ViY2xh
c3Nlcy9jc3NSb3RhdGUudGVudGF0aXZlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHlwZWQtb20vc3R5bGV2YWx1
ZS1zdWJjbGFzc2VzL2Nzc1JvdGF0ZS50ZW50YXRpdmUtZXhwZWN0ZWQudHh0CkBAIC0xMyw3ICsx
Myw3IEBAIFBBU1MgVXBkYXRpbmcgQ1NTUm90YXRlLmFuZ2xlIHRvIGEgQ1NTVW5pdFZhbHVlIHdp
dGggdHlwZSBvdGhlciB0aGFuIGFuZ2xlIHRocm93CiBQQVNTIFVwZGF0aW5nIENTU1JvdGF0ZS5h
bmdsZSB0byBhIENTU01hdGhWYWx1ZSB0aGF0IGRvZXNuJ3QgbWF0Y2ggPGFuZ2xlPiB0aHJvd3Mg
YSBUeXBlRXJyb3IKIFBBU1MgQ1NTUm90YXRlIGNhbiBiZSBjb25zdHJ1Y3RlZCBmcm9tIGEgc2lu
Z2xlIGFuZ2xlCiBQQVNTIENTU1JvdGF0ZSBjYW4gYmUgY29uc3RydWN0ZWQgZnJvbSBudW1iZXJp
c2ggY29vcmRpbmF0ZXMKLUZBSUwgQ1NTUm90YXRlIGNhbiBiZSBjb25zdHJ1Y3RlZCBmcm9tIENT
U01hdGhWYWx1ZXMgVHlwZSBlcnJvcgorUEFTUyBDU1NSb3RhdGUgY2FuIGJlIGNvbnN0cnVjdGVk
IGZyb20gQ1NTTWF0aFZhbHVlcwogUEFTUyBDU1NSb3RhdGUueCBjYW4gYmUgdXBkYXRlZCB0byBh
IGRvdWJsZQogUEFTUyBDU1NSb3RhdGUueCBjYW4gYmUgdXBkYXRlZCB0byBhIG51bWJlciBDU1NV
bml0VmFsdWUKIFBBU1MgQ1NTUm90YXRlLnggY2FuIGJlIHVwZGF0ZWQgdG8gYSBDU1NNYXRoVmFs
dWUgbWF0Y2hpbmcgPG51bWJlcj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10eXBlZC1vbS9zdHlsZXZhbHVlLXN1YmNsYXNz
ZXMvbnVtZXJpYy1vYmplY3RzL2Nzc01hdGhWYWx1ZS50ZW50YXRpdmUtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXR5cGVk
LW9tL3N0eWxldmFsdWUtc3ViY2xhc3Nlcy9udW1lcmljLW9iamVjdHMvY3NzTWF0aFZhbHVlLnRl
bnRhdGl2ZS1leHBlY3RlZC50eHQKaW5kZXggNGJlOGU3MWQ3YzYwLi4yMjYwYzhmNmUwZDIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy10eXBlZC1vbS9zdHlsZXZhbHVlLXN1YmNsYXNzZXMvbnVtZXJpYy1vYmplY3RzL2Nzc01h
dGhWYWx1ZS50ZW50YXRpdmUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10eXBlZC1vbS9zdHlsZXZhbHVlLXN1YmNs
YXNzZXMvbnVtZXJpYy1vYmplY3RzL2Nzc01hdGhWYWx1ZS50ZW50YXRpdmUtZXhwZWN0ZWQudHh0
CkBAIC03LDExICs3LDExIEBAIFBBU1MgQ29uc3RydWN0aW5nIGEgQ1NTTWF0aFByb2R1Y3Qgd2l0
aCBubyBhcmd1bWVudHMgdGhyb3dzIGEgU3ludGF4RXJyb3IKIFBBU1MgQ1NTTWF0aFByb2R1Y3Qg
Y2FuIGJlIGNvbnN0cnVjdGVkIGZyb20gYSBzaW5nbGUgbnVtYmVyIENTU1VuaXRWYWx1ZQogUEFT
UyBDU1NNYXRoUHJvZHVjdCBjYW4gYmUgY29uc3RydWN0ZWQgZnJvbSBtb3JlIHRoYW4gb25lIG51
bWJlciBDU1NVbml0VmFsdWUKIFBBU1MgQ1NTTWF0aFByb2R1Y3Qub3BlcmF0b3IgaXMgcmVhZG9u
bHkKLUZBSUwgQ29uc3RydWN0aW5nIGEgQ1NTTWF0aE1pbiB3aXRoIG5vIGFyZ3VtZW50cyB0aHJv
d3MgYSBTeW50YXhFcnJvciBhc3NlcnRfdGhyb3dzX2RvbTogZnVuY3Rpb24gIigpID0+IG5ldyBz
dWJjbGFzcygpIiBkaWQgbm90IHRocm93CitQQVNTIENvbnN0cnVjdGluZyBhIENTU01hdGhNaW4g
d2l0aCBubyBhcmd1bWVudHMgdGhyb3dzIGEgU3ludGF4RXJyb3IKIFBBU1MgQ1NTTWF0aE1pbiBj
YW4gYmUgY29uc3RydWN0ZWQgZnJvbSBhIHNpbmdsZSBudW1iZXIgQ1NTVW5pdFZhbHVlCiBQQVNT
IENTU01hdGhNaW4gY2FuIGJlIGNvbnN0cnVjdGVkIGZyb20gbW9yZSB0aGFuIG9uZSBudW1iZXIg
Q1NTVW5pdFZhbHVlCiBQQVNTIENTU01hdGhNaW4ub3BlcmF0b3IgaXMgcmVhZG9ubHkKLUZBSUwg
Q29uc3RydWN0aW5nIGEgQ1NTTWF0aE1heCB3aXRoIG5vIGFyZ3VtZW50cyB0aHJvd3MgYSBTeW50
YXhFcnJvciBhc3NlcnRfdGhyb3dzX2RvbTogZnVuY3Rpb24gIigpID0+IG5ldyBzdWJjbGFzcygp
IiBkaWQgbm90IHRocm93CitQQVNTIENvbnN0cnVjdGluZyBhIENTU01hdGhNYXggd2l0aCBubyBh
cmd1bWVudHMgdGhyb3dzIGEgU3ludGF4RXJyb3IKIFBBU1MgQ1NTTWF0aE1heCBjYW4gYmUgY29u
c3RydWN0ZWQgZnJvbSBhIHNpbmdsZSBudW1iZXIgQ1NTVW5pdFZhbHVlCiBQQVNTIENTU01hdGhN
YXggY2FuIGJlIGNvbnN0cnVjdGVkIGZyb20gbW9yZSB0aGFuIG9uZSBudW1iZXIgQ1NTVW5pdFZh
bHVlCiBQQVNTIENTU01hdGhNYXgub3BlcmF0b3IgaXMgcmVhZG9ubHkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10eXBlZC1v
bS9zdHlsZXZhbHVlLXN1YmNsYXNzZXMvbnVtZXJpYy1vYmplY3RzL3RvLnRlbnRhdGl2ZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtdHlwZWQtb20vc3R5bGV2YWx1ZS1zdWJjbGFzc2VzL251bWVyaWMtb2JqZWN0cy90by50
ZW50YXRpdmUtZXhwZWN0ZWQudHh0CmluZGV4IDYzMDgwY2Q5OTVmYS4uNmJiYjE5NTFmYjI4IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nz
cy9jc3MtdHlwZWQtb20vc3R5bGV2YWx1ZS1zdWJjbGFzc2VzL251bWVyaWMtb2JqZWN0cy90by50
ZW50YXRpdmUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10eXBlZC1vbS9zdHlsZXZhbHVlLXN1YmNsYXNzZXMvbnVt
ZXJpYy1vYmplY3RzL3RvLnRlbnRhdGl2ZS1leHBlY3RlZC50eHQKQEAgLTEsMTcgKzEsMTcgQEAK
IAotRkFJTCBDb252ZXJ0aW5nIGEgQ1NTVW5pdFZhbHVlIHRvIGFuIGludmFsaWQgdW5pdCB0aHJv
d3MgU3ludGF4RXJyb3IgYXNzZXJ0X3Rocm93c19kb206IGZ1bmN0aW9uICIoKSA9PiBDU1MucHgo
MSkudG8oJ2xlbW9uJykiIGRpZCBub3QgdGhyb3cKLUZBSUwgQ29udmVydGluZyBhIENTU051bWVy
aWNWYWx1ZSB3aXRoIGludmFsaWQgc3VtIHZhbHVlIHRocm93cyBUeXBlRXJyb3IgYXNzZXJ0X3Ro
cm93c19qczogZnVuY3Rpb24gIigpID0+IG5ldyBDU1NNYXRoTWF4KDEsIENTUy5weCgxKSkudG8o
J251bWJlcicpIiBkaWQgbm90IHRocm93Ci1GQUlMIENvbnZlcnRpbmcgYSBDU1NOdW1lcmljVmFs
dWUgd2l0aCBzdW0gdmFsdWUgY29udGFpbmluZyBtb3JlIHRoYW4gb25lIHZhbHVlIHRocm93cyBU
eXBlRXJyb3IgYXNzZXJ0X3Rocm93c19qczogZnVuY3Rpb24gIigpID0+IG5ldyBDU1NNYXRoUHJv
ZHVjdChDU1MucHgoMSksIENTUy5zKDEpKS50bygnbnVtYmVyJykiIGRpZCBub3QgdGhyb3cKLUZB
SUwgQ29udmVydGluZyBhIENTU1VuaXRWYWx1ZSB0byBhbiBpbmNvbXBhdGlibGUgdW5pdCB0aHJv
d3MgVHlwZUVycm9yIGFzc2VydF90aHJvd3NfanM6IGZ1bmN0aW9uICIoKSA9PiBDU1MucHgoMSku
dG8oJ251bWJlcicpIiBkaWQgbm90IHRocm93Ci1GQUlMIENvbnZlcnRpbmcgYSBDU1NVbml0VmFs
dWUgdG8gaXRzIG93biB1bml0IHJldHVybnMgaXRzZWxmIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVk
ICJwZXJjZW50IiBidXQgZ290ICJudW1iZXIiCi1GQUlMIENvbnZlcnRpbmcgYSBDU1NVbml0VmFs
dWUgdG8gaXRzIGNhbm9uaWNhbCB1bml0IHJldHVybnMgY29ycmVjdCB2YWx1ZSBhc3NlcnRfYXBw
cm94X2VxdWFsczogZXhwZWN0ZWQgMzcuNzk1Mjc1NSArLy0gMC4wMDAwMDEgYnV0IGdvdCAxCi1G
QUlMIENvbnZlcnRpbmcgYSBDU1NNYXRoU3VtIHRvIGEgc2luZ2xlIHVuaXQgYWRkcyB0aGUgdmFs
dWVzIGFzc2VydF9hcHByb3hfZXF1YWxzOiBleHBlY3RlZCAyICsvLSAwLjAwMDAwMSBidXQgZ290
IDEKLUZBSUwgQ29udmVydGluZyBhIENTU01hdGhQcm9kdWN0IHRvIGEgc2luZ2xlIHVuaXQgbXVs
dGlwbGllcyB0aGUgdmFsdWVzIGFzc2VydF9hcHByb3hfZXF1YWxzOiBleHBlY3RlZCA2ICsvLSAw
LjAwMDAwMSBidXQgZ290IDEKLUZBSUwgQ29udmVydGluZyBhIENTU01hdGhNaW4gdG8gYSBzaW5n
bGUgdW5pdCBmaW5kcyB0aGUgbWluIHZhbHVlIGFzc2VydF9lcXVhbHM6IGV4cGVjdGVkICJtbSIg
YnV0IGdvdCAibnVtYmVyIgotRkFJTCBDb252ZXJ0aW5nIGEgQ1NTTWF0aE1pbiB0byBhIHNpbmds
ZSB1bml0IHdpdGggZGlmZmVyZW50IHVuaXRzIHRocm93cyBhIFR5cGVFcnJvciBhc3NlcnRfdGhy
b3dzX2pzOiBmdW5jdGlvbiAiKCkgPT4gbmV3IENTU01hdGhNaW4oQ1NTLnB4KDIpLCBDU1Mucygz
KSkudG8oJ3B4JykiIGRpZCBub3QgdGhyb3cKLUZBSUwgQ29udmVydGluZyBhIENTU01hdGhNYXgg
dG8gYSBzaW5nbGUgdW5pdCBmaW5kcyB0aGUgbWF4IHZhbHVlIGFzc2VydF9hcHByb3hfZXF1YWxz
OiBleHBlY3RlZCAxMCArLy0gMC4wMDAwMDEgYnV0IGdvdCAxCi1GQUlMIENvbnZlcnRpbmcgYSBD
U1NNYXRoTWF4IHRvIGEgc2luZ2xlIHVuaXQgd2l0aCBkaWZmZXJlbnQgdW5pdHMgdGhyb3dzIGEg
VHlwZUVycm9yIGFzc2VydF90aHJvd3NfanM6IGZ1bmN0aW9uICIoKSA9PiBuZXcgQ1NTTWF0aE1h
eChDU1MucHgoMiksIENTUy5zKDMpKS50bygncHgnKSIgZGlkIG5vdCB0aHJvdwotRkFJTCBDb252
ZXJ0aW5nIGEgQ1NTTWF0aE5lZ2F0ZSB0byBhIHNpbmdsZSB1bml0IG5lZ2F0ZXMgaXRzIHZhbHVl
IGFzc2VydF9hcHByb3hfZXF1YWxzOiBleHBlY3RlZCAtMSArLy0gMC4wMDAwMDEgYnV0IGdvdCAx
Ci1GQUlMIENvbnZlcnRpbmcgYSBDU1NNYXRoSW52ZXJ0IHRvIGEgc2luZ2xlIHVuaXQgaW52ZXJ0
cyBpdHMgdmFsdWUgYW5kIHVuaXRzIGFzc2VydF9hcHByb3hfZXF1YWxzOiBleHBlY3RlZCAyICsv
LSAwLjAwMDAwMSBidXQgZ290IDEKLUZBSUwgQ29udmVydGluZyBhIGNvbXBsZXggZXhwcmVzc2lv
biB0byBhIHNpbmdsZSB1bml0IFR5cGUgZXJyb3IKK1BBU1MgQ29udmVydGluZyBhIENTU1VuaXRW
YWx1ZSB0byBhbiBpbnZhbGlkIHVuaXQgdGhyb3dzIFN5bnRheEVycm9yCitQQVNTIENvbnZlcnRp
bmcgYSBDU1NOdW1lcmljVmFsdWUgd2l0aCBpbnZhbGlkIHN1bSB2YWx1ZSB0aHJvd3MgVHlwZUVy
cm9yCitQQVNTIENvbnZlcnRpbmcgYSBDU1NOdW1lcmljVmFsdWUgd2l0aCBzdW0gdmFsdWUgY29u
dGFpbmluZyBtb3JlIHRoYW4gb25lIHZhbHVlIHRocm93cyBUeXBlRXJyb3IKK1BBU1MgQ29udmVy
dGluZyBhIENTU1VuaXRWYWx1ZSB0byBhbiBpbmNvbXBhdGlibGUgdW5pdCB0aHJvd3MgVHlwZUVy
cm9yCitQQVNTIENvbnZlcnRpbmcgYSBDU1NVbml0VmFsdWUgdG8gaXRzIG93biB1bml0IHJldHVy
bnMgaXRzZWxmCitQQVNTIENvbnZlcnRpbmcgYSBDU1NVbml0VmFsdWUgdG8gaXRzIGNhbm9uaWNh
bCB1bml0IHJldHVybnMgY29ycmVjdCB2YWx1ZQorUEFTUyBDb252ZXJ0aW5nIGEgQ1NTTWF0aFN1
bSB0byBhIHNpbmdsZSB1bml0IGFkZHMgdGhlIHZhbHVlcworUEFTUyBDb252ZXJ0aW5nIGEgQ1NT
TWF0aFByb2R1Y3QgdG8gYSBzaW5nbGUgdW5pdCBtdWx0aXBsaWVzIHRoZSB2YWx1ZXMKK1BBU1Mg
Q29udmVydGluZyBhIENTU01hdGhNaW4gdG8gYSBzaW5nbGUgdW5pdCBmaW5kcyB0aGUgbWluIHZh
bHVlCitQQVNTIENvbnZlcnRpbmcgYSBDU1NNYXRoTWluIHRvIGEgc2luZ2xlIHVuaXQgd2l0aCBk
aWZmZXJlbnQgdW5pdHMgdGhyb3dzIGEgVHlwZUVycm9yCitQQVNTIENvbnZlcnRpbmcgYSBDU1NN
YXRoTWF4IHRvIGEgc2luZ2xlIHVuaXQgZmluZHMgdGhlIG1heCB2YWx1ZQorUEFTUyBDb252ZXJ0
aW5nIGEgQ1NTTWF0aE1heCB0byBhIHNpbmdsZSB1bml0IHdpdGggZGlmZmVyZW50IHVuaXRzIHRo
cm93cyBhIFR5cGVFcnJvcgorUEFTUyBDb252ZXJ0aW5nIGEgQ1NTTWF0aE5lZ2F0ZSB0byBhIHNp
bmdsZSB1bml0IG5lZ2F0ZXMgaXRzIHZhbHVlCitQQVNTIENvbnZlcnRpbmcgYSBDU1NNYXRoSW52
ZXJ0IHRvIGEgc2luZ2xlIHVuaXQgaW52ZXJ0cyBpdHMgdmFsdWUgYW5kIHVuaXRzCitQQVNTIENv
bnZlcnRpbmcgYSBjb21wbGV4IGV4cHJlc3Npb24gdG8gYSBzaW5nbGUgdW5pdAogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
dHlwZWQtb20vc3R5bGV2YWx1ZS1zdWJjbGFzc2VzL251bWVyaWMtb2JqZWN0cy90b1N1bS50ZW50
YXRpdmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLXR5cGVkLW9tL3N0eWxldmFsdWUtc3ViY2xhc3Nlcy9udW1lcmljLW9i
amVjdHMvdG9TdW0udGVudGF0aXZlLWV4cGVjdGVkLnR4dAppbmRleCBhZDdiMTRmM2U3NzUuLmFk
NmE5NGQxMDQxYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvY3NzLXR5cGVkLW9tL3N0eWxldmFsdWUtc3ViY2xhc3Nlcy9udW1lcmlj
LW9iamVjdHMvdG9TdW0udGVudGF0aXZlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHlwZWQtb20vc3R5bGV2YWx1
ZS1zdWJjbGFzc2VzL251bWVyaWMtb2JqZWN0cy90b1N1bS50ZW50YXRpdmUtZXhwZWN0ZWQudHh0
CkBAIC0xLDYgKzEsNiBAQAogCiBGQUlMIENvbnZlcnRpbmcgYSBDU1NOdW1lcmljVmFsdWUgdG8g
YSBzdW0gd2l0aCBpbnZhbGlkIHVuaXRzIHRocm93cyBTeW50YXhFcnJvciBhc3NlcnRfdGhyb3dz
X2RvbTogZnVuY3Rpb24gIigpID0+IENTUy5weCgxKS50b1N1bSgncHgnLCAnbGVtb24nKSIgZGlk
IG5vdCB0aHJvdwotRkFJTCBDb252ZXJ0aW5nIGEgQ1NTTnVtZXJpY1ZhbHVlIHdpdGggYW4gaW52
YWxpZCBzdW0gdmFsdWUgdG8gYSBzdW0gdGhyb3dzIFR5cGVFcnJvciBhc3NlcnRfdGhyb3dzX2pz
OiBmdW5jdGlvbiAiKCkgPT4gbmV3IENTU01hdGhNYXgoMSwgQ1NTLnB4KDEpKS50b1N1bSgnbnVt
YmVyJykiIGRpZCBub3QgdGhyb3cKK1BBU1MgQ29udmVydGluZyBhIENTU051bWVyaWNWYWx1ZSB3
aXRoIGFuIGludmFsaWQgc3VtIHZhbHVlIHRvIGEgc3VtIHRocm93cyBUeXBlRXJyb3IKIEZBSUwg
Q29udmVydGluZyBhIENTU051bWVyaWNWYWx1ZSB3aXRoIGNvbXBvdW5kIHVuaXRzIHRvIGEgc3Vt
IHRocm93cyBUeXBlRXJyb3IgYXNzZXJ0X3Rocm93c19qczogZnVuY3Rpb24gIigpID0+IG5ldyBD
U1NNYXRoUHJvZHVjdChDU1MucHgoMSksIENTUy5weCgxKSkudG8oJ3B4JykiIGRpZCBub3QgdGhy
b3cKIEZBSUwgQ29udmVydGluZyBhIENTU051bWVyaWNWYWx1ZSB0byBhIHN1bSB3aXRoIGFuIGlu
Y29tcGF0aWJsZSB1bml0IHRocm93cyBUeXBlRXJyb3IgYXNzZXJ0X3Rocm93c19qczogZnVuY3Rp
b24gIigpID0+IENTUy5weCgxKS50b1N1bSgnbnVtYmVyJykiIGRpZCBub3QgdGhyb3cKIEZBSUwg
Q29udmVydGluZyBhIENTU051bWVyaWNWYWx1ZSB0byBhIHN1bSB3aXRoIHVuaXRzIHRoYXQgYXJl
IG5vdCBhZGRhYmxlIHRocm93cyBUeXBlRXJyb3IgYXNzZXJ0X3Rocm93c19qczogZnVuY3Rpb24g
IigpID0+IENTUy5weCgxKS50b1N1bSgncHgnLCAncycpIiBkaWQgbm90IHRocm93Ci0tIAoyLjMy
LjAgKEFwcGxlIEdpdC0xMzIpCgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>