<?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>190774</bug_id>
          
          <creation_ts>2018-10-20 10:40:36 -0700</creation_ts>
          <short_desc>Implement text-underline-offset and text-decoration-thickness</short_desc>
          <delta_ts>2019-04-11 17:44:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>190764</dependson>
    
    <dependson>191215</dependson>
    
    <dependson>191239</dependson>
    
    <dependson>191242</dependson>
    
    <dependson>191245</dependson>
    
    <dependson>196841</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>dbates</cc>
    
    <cc>dino</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jonlee</cc>
    
    <cc>saam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1471106</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-10-20 10:40:36 -0700</bug_when>
    <thetext>Implement text-decoration-offset and text-decoration-width</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471107</commentid>
    <comment_count>1</comment_count>
      <attachid>352858</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-10-20 10:41:43 -0700</bug_when>
    <thetext>Created attachment 352858
Parsing support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471108</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-10-20 10:43:14 -0700</bug_when>
    <thetext>Attachment 352858 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471112</commentid>
    <comment_count>3</comment_count>
      <attachid>352859</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-10-20 11:57:14 -0700</bug_when>
    <thetext>Created attachment 352859
Needs to actually move/resize the decorations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471113</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-10-20 11:58:27 -0700</bug_when>
    <thetext>Attachment 352859 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471266</commentid>
    <comment_count>5</comment_count>
      <attachid>352859</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2018-10-22 11:31:18 -0700</bug_when>
    <thetext>Comment on attachment 352859
Needs to actually move/resize the decorations

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

Informal review

One question is whether there can just be a common base class here since they just mirror each other.

&gt; Source/WebCore/rendering/style/TextDecorationOffset.h:99
&gt; +    enum class Type {
&gt; +        Auto,
&gt; +        FromFont,
&gt; +        Length
&gt; +    };

Do you want to type this into a uint8_t?

&gt; Source/WebCore/rendering/style/TextDecorationThickness.h:102
&gt; +        : m_type(type)

We want to use {} for these now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471514</commentid>
    <comment_count>6</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-10-23 00:22:10 -0700</bug_when>
    <thetext>(In reply to Don Olmstead from comment #5)
&gt; Comment on attachment 352859 [details]
&gt; Needs to actually move/resize the decorations
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=352859&amp;action=review
&gt; 
&gt; Informal review
&gt; 
&gt; One question is whether there can just be a common base class here since
&gt; they just mirror each other.

Yeah, my first version of the patch had them be the same class. However, due to https://github.com/w3c/csswg-drafts/issues/3118 I wanted to keep the implementation as flexible as possible in case the whole feature changes.

&gt; 
&gt; &gt; Source/WebCore/rendering/style/TextDecorationOffset.h:99
&gt; &gt; +    enum class Type {
&gt; &gt; +        Auto,
&gt; &gt; +        FromFont,
&gt; &gt; +        Length
&gt; &gt; +    };
&gt; 
&gt; Do you want to type this into a uint8_t?

Yes, you&apos;re right!
&gt; 
&gt; &gt; Source/WebCore/rendering/style/TextDecorationThickness.h:102
&gt; &gt; +        : m_type(type)
&gt; 
&gt; We want to use {} for these now?

Yes!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472807</commentid>
    <comment_count>7</comment_count>
      <attachid>353253</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-10-28 03:30:27 -0700</bug_when>
    <thetext>Created attachment 353253
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472808</commentid>
    <comment_count>8</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-10-28 03:32:49 -0700</bug_when>
    <thetext>Things remaining to do:

1. Make sure the repaint rects are correct (investigate RenderStyle::changeAffectsVisualOverflow(), visualOverflowForDecorations() and TextDecorationPainter::paintTextDecoration(), and computeUnderlineOffset())

2. Figure out what to do with maxLogicalBottomForTextDecorationLine()

3. Make sure flipped writing modes (like Mongolian) work

4. Make sure baselines (like CJK centered baseline) work correctly

5. Don&apos;s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473127</commentid>
    <comment_count>9</comment_count>
      <attachid>353335</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-10-29 17:10:56 -0700</bug_when>
    <thetext>Created attachment 353335
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474012</commentid>
    <comment_count>10</comment_count>
      <attachid>353579</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-10-31 20:50:29 -0700</bug_when>
    <thetext>Created attachment 353579
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474014</commentid>
    <comment_count>11</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-10-31 21:04:52 -0700</bug_when>
    <thetext>Things remaining to do:

1. Add some repaint rect code in addTextBoxVisualOverflow()
2. Split this patch up so it&apos;s easier to review
3. Write some tests
3a. Tests for animations
3b. Tests for text-shadow and underlines
3c. Tests for flipped writing-mode
3d. Tests for ideographic baseline
3e. Tests for the direction the decoration is offset in the various modes
4. (Optional) Make the underline go behind the text (See https://bugs.webkit.org/show_bug.cgi?id=190764)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475452</commentid>
    <comment_count>12</comment_count>
      <attachid>353951</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-11-06 01:21:08 -0800</bug_when>
    <thetext>Created attachment 353951
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475566</commentid>
    <comment_count>13</comment_count>
      <attachid>353951</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2018-11-06 10:22:05 -0800</bug_when>
    <thetext>Comment on attachment 353951
Patch

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

LGTM. Just wondering about that constant.

&gt; Source/WebCore/rendering/TextDecorationPainter.cpp:288
&gt; +            int offset = computeUnderlineOffset(m_lineStyle.textUnderlinePosition(), m_lineStyle.textUnderlineOffset(), m_lineStyle.fontMetrics(), m_inlineTextBox, m_lineStyle.computedFontSize() / 16);

It worth moving from a magic number to a constant to give some meaning here?

&gt; Source/WebCore/rendering/style/TextDecorationThickness.h:81
&gt; +            const float textDecorationBaseFontSize = 16;

Here&apos;s that 16 again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475593</commentid>
    <comment_count>14</comment_count>
      <attachid>353951</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2018-11-06 11:19:53 -0800</bug_when>
    <thetext>Comment on attachment 353951
Patch

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

&gt; Source/WebCore/page/animation/CSSPropertyAnimation.cpp:1703
&gt; +        new PropertyWrapper&lt;TextDecorationThickness&gt;(CSSPropertyTextDecorationThickness, &amp;RenderStyle::textDecorationThickness, &amp;RenderStyle::setTextDecorationThickness),
&gt; +        new PropertyWrapper&lt;TextUnderlineOffset&gt;(CSSPropertyTextUnderlineOffset, &amp;RenderStyle::textUnderlineOffset, &amp;RenderStyle::setTextUnderlineOffset),

Animation! very nice.

&gt;&gt; Source/WebCore/rendering/TextDecorationPainter.cpp:288
&gt;&gt; +            int offset = computeUnderlineOffset(m_lineStyle.textUnderlinePosition(), m_lineStyle.textUnderlineOffset(), m_lineStyle.fontMetrics(), m_inlineTextBox, m_lineStyle.computedFontSize() / 16);
&gt; 
&gt; It worth moving from a magic number to a constant to give some meaning here?

Agreed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475783</commentid>
    <comment_count>15</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-11-06 17:22:53 -0800</bug_when>
    <thetext>Committed r237903: &lt;https://trac.webkit.org/changeset/237903&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475784</commentid>
    <comment_count>16</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-06 17:23:25 -0800</bug_when>
    <thetext>&lt;rdar://problem/45861917&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475786</commentid>
    <comment_count>17</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-11-06 17:24:57 -0800</bug_when>
    <thetext>*** Bug 167326 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475788</commentid>
    <comment_count>18</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-11-06 17:25:12 -0800</bug_when>
    <thetext>*** Bug 167327 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476690</commentid>
    <comment_count>19</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-11-08 15:31:15 -0800</bug_when>
    <thetext>Could this change have a performance impact? It&apos;s in the range where we have a 1-1.5% speedometer 2 regression on iOS.

https://trac.webkit.org/log/webkit/trunk?verbose=on&amp;rev=237910&amp;stop_rev=237896</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1476696</commentid>
    <comment_count>20</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-11-08 15:38:44 -0800</bug_when>
    <thetext>(In reply to Saam Barati from comment #19)
&gt; Could this change have a performance impact? It&apos;s in the range where we have
&gt; a 1-1.5% speedometer 2 regression on iOS.
&gt; 
&gt; https://trac.webkit.org/log/webkit/
&gt; trunk?verbose=on&amp;rev=237910&amp;stop_rev=237896

This is an even narrower range:
https://trac.webkit.org/log/webkit/trunk?verbose=on&amp;rev=237903&amp;stop_rev=237899

This patch seems like the likely culprit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1477102</commentid>
    <comment_count>21</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-11-09 14:24:50 -0800</bug_when>
    <thetext>(In reply to Saam Barati from comment #20)
&gt; (In reply to Saam Barati from comment #19)
&gt; &gt; Could this change have a performance impact? It&apos;s in the range where we have
&gt; &gt; a 1-1.5% speedometer 2 regression on iOS.
&gt; &gt; 
&gt; &gt; https://trac.webkit.org/log/webkit/
&gt; &gt; trunk?verbose=on&amp;rev=237910&amp;stop_rev=237896
&gt; 
&gt; This is an even narrower range:
&gt; https://trac.webkit.org/log/webkit/
&gt; trunk?verbose=on&amp;rev=237903&amp;stop_rev=237899
&gt; 
&gt; This patch seems like the likely culprit.

I could believe it. This patch deals with repaint rects of text; causing text to repaint more often could be a regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1526526</commentid>
    <comment_count>22</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-04-11 16:17:59 -0700</bug_when>
    <thetext>Confirmed as a PLT regression.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352858</attachid>
            <date>2018-10-20 10:41:43 -0700</date>
            <delta_ts>2018-10-20 11:57:09 -0700</delta_ts>
            <desc>Parsing support</desc>
            <filename>bug-190774-20181020184141.patch</filename>
            <type>text/plain</type>
            <size>31489</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MzA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2U4Y2M4YjIzZmQ2ODA4
Mzk1NjhkNzgxNTMwZjQ5Nzk2ODlkZGQ4Mi4uYTdmMWQ1NGU0ODYxYzkzY2NkY2Q4NmFmNjdiNzAy
OTE1ZGRiYTYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE4LTEwLTIwICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
IHRleHQtZGVjb3JhdGlvbi1vZmZzZXQgYW5kIHRleHQtZGVjb3JhdGlvbi13aWR0aAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNzc0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChP
T1BTISkuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0ZXh0RGVjb3JhdGlvbk9mZnNldFRvQ1NT
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6dGV4dERlY29yYXRpb25UaGlja25lc3NUb0NTU1Zh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9y
UHJvcGVydHlpblN0eWxlKToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydGllcy5qc29uOgorICAg
ICAgICAqIGNzcy9DU1NWYWx1ZUtleXdvcmRzLmluOgorICAgICAgICAqIGNzcy9TdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydFRleHREZWNvcmF0aW9uT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydFRleHREZWNvcmF0aW9uVGhpY2tuZXNzKToKKyAgICAgICAg
KiBjc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNv
bnN1bWVUZXh0RGVjb3JhdGlvbk9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lVGV4
dERlY29yYXRpb25UaGlja25lc3MpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJz
ZXI6OnBhcnNlU2luZ2xlVmFsdWUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnRleHREZWNvcmF0aW9uT2Zm
c2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjp0ZXh0RGVjb3JhdGlv
blRoaWNrbmVzcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0VGV4
dERlY29yYXRpb25PZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFRl
eHREZWNvcmF0aW9uVGhpY2tuZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpp
bml0aWFsVGV4dERlY29yYXRpb25PZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OmluaXRpYWxUZXh0RGVjb3JhdGlvblRoaWNrbmVzcyk6CisgICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9UZXh0RGVjb3JhdGlvbk9mZnNldC5jcHA6IEFkZGVkLgorICAgICAg
ICAqIHJlbmRlcmluZy9zdHlsZS9UZXh0RGVjb3JhdGlvbk9mZnNldC5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlRleHREZWNvcmF0aW9uT2Zmc2V0OjpjcmVhdGVXaXRoQXV0byk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvbk9mZnNldDo6Y3JlYXRlRnJvbUZvbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dERlY29yYXRpb25PZmZzZXQ6OmNyZWF0ZVdpdGhMZW5ndGgpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dERlY29yYXRpb25PZmZzZXQ6OmlzQXV0byBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvbk9mZnNldDo6aXNGcm9tRm9udCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvbk9mZnNldDo6aXNMZW5ndGggY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dERlY29yYXRpb25PZmZzZXQ6OnNldExlbmd0aFZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHREZWNvcmF0aW9uT2Zmc2V0OjpsZW5ndGhWYWx1ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvbk9mZnNldDo6b3BlcmF0b3I9
PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvbk9mZnNldDo6b3BlcmF0
b3IhPSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvbk9mZnNldDo6VGV4
dERlY29yYXRpb25PZmZzZXQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9UZXh0RGVjb3Jh
dGlvblRoaWNrbmVzcy5jcHA6IEFkZGVkLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9UZXh0
RGVjb3JhdGlvblRoaWNrbmVzcy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHREZWNv
cmF0aW9uVGhpY2tuZXNzOjpjcmVhdGVXaXRoQXV0byk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
RGVjb3JhdGlvblRoaWNrbmVzczo6Y3JlYXRlRnJvbUZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dERlY29yYXRpb25UaGlja25lc3M6OmNyZWF0ZVdpdGhMZW5ndGgpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dERlY29yYXRpb25UaGlja25lc3M6OmlzQXV0byBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0RGVjb3JhdGlvblRoaWNrbmVzczo6aXNGcm9tRm9udCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvblRoaWNrbmVzczo6aXNMZW5ndGggY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dERlY29yYXRpb25UaGlja25lc3M6OnNldExlbmd0aFZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHREZWNvcmF0aW9uVGhpY2tuZXNzOjpsZW5ndGhWYWx1
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvblRoaWNrbmVzczo6b3Bl
cmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvblRoaWNrbmVz
czo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvblRo
aWNrbmVzczo6VGV4dERlY29yYXRpb25UaGlja25lc3MpOgorCiAyMDE4LTEwLTE5ICBKdXN0aW4g
RmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkdQVV0gQWRkIHN0dWJz
IGZvciBXZWJHUFVTd2FwQ2hhaW4gYW5kIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKaW5kZXggYjc4MTFhMzM5ZWI2NWRiMTVjYWVlYTE3Zjc5YmUyNDg3OTU5ZWMzZi4uZmIwZTcy
NWQ1ZmE0NGUyMDkwYmFhNDM4ZTBiZmYzNTE0ZGNkYjc1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTIw
NTUsNiArMjA1NSw4IEBAIHJlbmRlcmluZy9zdHlsZS9TdHlsZVNjcm9sbFNuYXBQb2ludHMuY3Bw
CiByZW5kZXJpbmcvc3R5bGUvU3R5bGVTdXJyb3VuZERhdGEuY3BwCiByZW5kZXJpbmcvc3R5bGUv
U3R5bGVUcmFuc2Zvcm1EYXRhLmNwcAogcmVuZGVyaW5nL3N0eWxlL1N0eWxlVmlzdWFsRGF0YS5j
cHAKK3JlbmRlcmluZy9zdHlsZS9UZXh0RGVjb3JhdGlvbk9mZnNldC5jcHAKK3JlbmRlcmluZy9z
dHlsZS9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcy5jcHAKIHJlbmRlcmluZy9zdHlsZS9XaWxsQ2hh
bmdlRGF0YS5jcHAKIAogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdCbG9jay5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkNjUw
MWViODY4YjI1OTRiYjU5NzExMTg3M2JiYTI5MGQwZGEyOTc5Li42YmFiMDk2N2RiYzdjZGI3YmY3
Yzc3MjM3YWM1ZDk0ZTVhZGNmMWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02Mzc3LDYgKzYzNzcsMTAgQEAKIAkJMUNBRjM0
N0UwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJTY3JpcHRPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUNBRjM0N0YwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlNjcmlwdE9iamVjdC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBRjM0ODAwQTZDNDA1MjAwQUJFMDZF
IC8qIFdlYlNjcmlwdE9iamVjdFByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxQ0I2QjRGODIxN0I4MzkzMDA5M0I5Q0QgLyogVGV4dERlY29yYXRpb25UaGlja25lc3Mu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVGV4dERlY29yYXRpb25UaGlja25lc3MuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMUNCNkI0RkEyMTdCODM5MzAwOTNCOUNEIC8qIFRleHREZWNvcmF0
aW9uT2Zmc2V0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRleHREZWNvcmF0aW9uT2Zmc2V0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUNCNkI0RkIyMTdCODM5NDAwOTNCOUNE
IC8qIFRleHREZWNvcmF0aW9uT2Zmc2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHREZWNvcmF0aW9u
T2Zmc2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFDQjZCNEZDMjE3QjgzOTQw
MDkzQjlDRCAvKiBUZXh0RGVjb3JhdGlvblRoaWNrbmVzcy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBUZXh0RGVjb3JhdGlvblRoaWNrbmVzcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFDQ0RGNUJCMTk5MDMzMjQwMEJDRUJBRCAvKiBTVkdUb09URkZvbnRDb252ZXJzaW9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1RvT1RGRm9udENvbnZl
cnNpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0NERjVCQzE5OTAzMzI0
MDBCQ0VCQUQgLyogU1ZHVG9PVEZGb250Q29udmVyc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTVkdUb09URkZvbnRDb252ZXJzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTFDREQ0NUU0MEJBOUM4NDYwMEY5MDE0NyAvKiBEZWJ1Z1JlbGVhc2UueGNj
b25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gRGVidWdSZWxlYXNlLnhjY29u
ZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTk4MTksOSArMTk4MjMsNyBAQAog
CQkJCUU0MjA1MDE2MjE0MTkwMUIwMDY2RUYzQiAvKiBQcm9jZXNzV2FybWluZy5jcHAgKi8sCiAJ
CQkJRTQyMDUwMTQyMTQxOTAxQTAwNjZFRjNCIC8qIFByb2Nlc3NXYXJtaW5nLmggKi8sCiAJCQkJ
Q0Q5QTg3RjkyMTVENkNGMzAwNkYxN0I1IC8qIFF1aXJrcy5jcHAgKi8sCi0JCQkJQ0Q5QTg3RjIy
MTVENDNBNjAwNkYxN0I1IC8qIFF1aXJrcy5jcHAgKi8sCiAJCQkJQ0Q5QTg3RkIyMTVENkNGMzAw
NkYxN0I1IC8qIFF1aXJrcy5oICovLAotCQkJCUNEOUE4N0YxMjE1RDQzQTYwMDZGMTdCNSAvKiBR
dWlya3MuaCAqLywKIAkJCQk0NkI5NTE4RDIwN0Q2MzJBMDBBN0QyREQgLyogUmVtb3RlRE9NV2lu
ZG93LmNwcCAqLywKIAkJCQk0NkI5NTE4RTIwN0Q2MzJBMDBBN0QyREQgLyogUmVtb3RlRE9NV2lu
ZG93LmggKi8sCiAJCQkJNDZCQ0JCQzMyMDg1MDBBNzAwNzEwNjM4IC8qIFJlbW90ZURPTVdpbmRv
dy5pZGwgKi8sCkBAIC0yNDUzNyw2ICsyNDUzOSwxMCBAQAogCQkJCUJDMjI3NDc1MEU4MzY2RTIw
MEU3Rjk3NSAvKiBTVkdSZW5kZXJTdHlsZS5oICovLAogCQkJCUJDMjI3NDc2MEU4MzY2RTIwMEU3
Rjk3NSAvKiBTVkdSZW5kZXJTdHlsZURlZnMuY3BwICovLAogCQkJCUJDMjI3NDc3MEU4MzY2RTIw
MEU3Rjk3NSAvKiBTVkdSZW5kZXJTdHlsZURlZnMuaCAqLywKKwkJCQkxQ0I2QjRGQTIxN0I4Mzkz
MDA5M0I5Q0QgLyogVGV4dERlY29yYXRpb25PZmZzZXQuY3BwICovLAorCQkJCTFDQjZCNEZCMjE3
QjgzOTQwMDkzQjlDRCAvKiBUZXh0RGVjb3JhdGlvbk9mZnNldC5oICovLAorCQkJCTFDQjZCNEZD
MjE3QjgzOTQwMDkzQjlDRCAvKiBUZXh0RGVjb3JhdGlvblRoaWNrbmVzcy5jcHAgKi8sCisJCQkJ
MUNCNkI0RjgyMTdCODM5MzAwOTNCOUNEIC8qIFRleHREZWNvcmF0aW9uVGhpY2tuZXNzLmggKi8s
CiAJCQkJNDQ4QjFCNzgwRjNBMkY5QjAwNDdBOUUyIC8qIFRleHRTaXplQWRqdXN0bWVudC5oICov
LAogCQkJCTBGMTVFRDU5MUI3RUM3QzUwMEVEREZFQiAvKiBXaWxsQ2hhbmdlRGF0YS5jcHAgKi8s
CiAJCQkJMEYxNUVENUExQjdFQzdDNTAwRURERkVCIC8qIFdpbGxDaGFuZ2VEYXRhLmggKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3Bw
CmluZGV4IGM3NzY0OGVlMWQ4MzQ5ZmIzNmIxMDcxNTQ1YzM4MWZhNzMyNzA5YzguLmRkZjg2M2Qw
ODVjMTIxMGVjZDIwZTU2ZGQzNDAzOGNhNmJiNTFhMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0xODAyLDYgKzE4MDIs
MjYgQEAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gcmVuZGVyVGV4dERlY29yYXRpb25Ta2lwRmxhZ3NU
b0NTU1ZhbHVlKE9wdGlvblNldDxUZXh0RGVjb3IKICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpz
aW5nbGV0b24oKS5jcmVhdGVFeHBsaWNpdEluaXRpYWxWYWx1ZSgpOwogfQogCitzdGF0aWMgUmVm
PENTU1ZhbHVlPiB0ZXh0RGVjb3JhdGlvbk9mZnNldFRvQ1NTVmFsdWUoY29uc3QgVGV4dERlY29y
YXRpb25PZmZzZXQmIHRleHREZWNvcmF0aW9uT2Zmc2V0LCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5
bGUpCit7CisgICAgaWYgKHRleHREZWNvcmF0aW9uT2Zmc2V0LmlzQXV0bygpKQorICAgICAgICBy
ZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NT
VmFsdWVBdXRvKTsKKyAgICBpZiAodGV4dERlY29yYXRpb25PZmZzZXQuaXNGcm9tRm9udCgpKQor
ICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVy
VmFsdWUoQ1NTVmFsdWVGcm9tRm9udCk7CisgICAgQVNTRVJUKHRleHREZWNvcmF0aW9uT2Zmc2V0
LmlzTGVuZ3RoKCkpOworICAgIHJldHVybiB6b29tQWRqdXN0ZWRQaXhlbFZhbHVlRm9yTGVuZ3Ro
KHRleHREZWNvcmF0aW9uT2Zmc2V0Lmxlbmd0aFZhbHVlKCksIHN0eWxlKTsKK30KKworc3RhdGlj
IFJlZjxDU1NWYWx1ZT4gdGV4dERlY29yYXRpb25UaGlja25lc3NUb0NTU1ZhbHVlKGNvbnN0IFRl
eHREZWNvcmF0aW9uVGhpY2tuZXNzJiB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcywgY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlKQoreworICAgIGlmICh0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcy5pc0F1
dG8oKSkKKyAgICAgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRl
bnRpZmllclZhbHVlKENTU1ZhbHVlQXV0byk7CisgICAgaWYgKHRleHREZWNvcmF0aW9uVGhpY2tu
ZXNzLmlzRnJvbUZvbnQoKSkKKyAgICAgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9u
KCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlRnJvbUZvbnQpOworICAgIEFTU0VSVCh0
ZXh0RGVjb3JhdGlvblRoaWNrbmVzcy5pc0xlbmd0aCgpKTsKKyAgICByZXR1cm4gem9vbUFkanVz
dGVkUGl4ZWxWYWx1ZUZvckxlbmd0aCh0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcy5sZW5ndGhWYWx1
ZSgpLCBzdHlsZSk7Cit9CisKIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IHJlbmRlckVtcGhhc2lzUG9z
aXRpb25GbGFnc1RvQ1NTVmFsdWUoT3B0aW9uU2V0PFRleHRFbXBoYXNpc1Bvc2l0aW9uPiB0ZXh0
RW1waGFzaXNQb3NpdGlvbikKIHsKICAgICBBU1NFUlQoISgodGV4dEVtcGhhc2lzUG9zaXRpb24g
JiBUZXh0RW1waGFzaXNQb3NpdGlvbjo6T3ZlcikgJiYgKHRleHRFbXBoYXNpc1Bvc2l0aW9uICYg
VGV4dEVtcGhhc2lzUG9zaXRpb246OlVuZGVyKSkpOwpAQCAtMzMzMSw2ICszMzUxLDEwIEBAIFJl
ZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JQcm9wZXJ0eWlu
U3R5bGUoY29uc3QgUmVuZGVyU3R5CiAgICAgICAgICAgICByZXR1cm4gcmVuZGVyVGV4dERlY29y
YXRpb25Ta2lwRmxhZ3NUb0NTU1ZhbHVlKHN0eWxlLnRleHREZWNvcmF0aW9uU2tpcCgpKTsKICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRVbmRlcmxpbmVQb3NpdGlvbjoKICAgICAg
ICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUudGV4dFVuZGVybGlu
ZVBvc2l0aW9uKCkpOworICAgICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dERlY29yYXRpb25PZmZz
ZXQ6CisgICAgICAgICAgICByZXR1cm4gdGV4dERlY29yYXRpb25PZmZzZXRUb0NTU1ZhbHVlKHN0
eWxlLnRleHREZWNvcmF0aW9uT2Zmc2V0KCksIHN0eWxlKTsKKyAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVRleHREZWNvcmF0aW9uV2lkdGg6CisgICAgICAgICAgICByZXR1cm4gdGV4dERlY29yYXRp
b25UaGlja25lc3NUb0NTU1ZhbHVlKHN0eWxlLnRleHREZWNvcmF0aW9uVGhpY2tuZXNzKCksIHN0
eWxlKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZm
ZWN0OgogICAgICAgICAgICAgcmV0dXJuIHJlbmRlclRleHREZWNvcmF0aW9uRmxhZ3NUb0NTU1Zh
bHVlKHN0eWxlLnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCkpOwogICAgICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcm9wZXJ0aWVzLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydGllcy5q
c29uCmluZGV4IGJjNmI1NzhiOGRlMGM0NTIwZjhhOTM1OTU3NTE1MGE5MGY3NWRlNWUuLjkwYzI2
ZjEyMGRkNGYyZTA4ZWY1YjI4YzFjYTNiMjcyYjE4ZGM2ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0aWVzLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1Byb3BlcnRpZXMuanNvbgpAQCAtNTkzOSw2ICs1OTM5LDM0IEBACiAgICAgICAgICAgICAgICAg
InVybCI6ICJodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXRleHQtZGVjb3ItMy8jdGV4dC11bmRl
cmxpbmUtcG9zaXRpb24iCiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCisgICAgICAgICJ0ZXh0
LWRlY29yYXRpb24tb2Zmc2V0IjogeworICAgICAgICAgICAgImluaGVyaXRlZCI6IHRydWUsCisg
ICAgICAgICAgICAiY29kZWdlbi1wcm9wZXJ0aWVzIjogeworICAgICAgICAgICAgICAgICJuYW1l
LWZvci1tZXRob2RzIjogIlRleHREZWNvcmF0aW9uT2Zmc2V0IiwKKyAgICAgICAgICAgICAgICAi
Y29udmVydGVyIjogIlRleHREZWNvcmF0aW9uT2Zmc2V0IgorICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgICJzdGF0dXMiOiB7CisgICAgICAgICAgICAgICAgInN0YXR1cyI6ICJleHBlcmltZW50
YWwiCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInNwZWNpZmljYXRpb24iOiB7CisgICAg
ICAgICAgICAgICAgImNhdGVnb3J5IjogImNzcy10ZXh0LWRlY29yIiwKKyAgICAgICAgICAgICAg
ICAidXJsIjogImh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtdGV4dC1kZWNvci00LyN0ZXh0LWRl
Y29yYXRpb24tb2Zmc2V0IgorICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAidGV4
dC1kZWNvcmF0aW9uLXdpZHRoIjogeworICAgICAgICAgICAgImluaGVyaXRlZCI6IHRydWUsCisg
ICAgICAgICAgICAiY29kZWdlbi1wcm9wZXJ0aWVzIjogeworICAgICAgICAgICAgICAgICJuYW1l
LWZvci1tZXRob2RzIjogIlRleHREZWNvcmF0aW9uVGhpY2tuZXNzIiwKKyAgICAgICAgICAgICAg
ICAiY29udmVydGVyIjogIlRleHREZWNvcmF0aW9uVGhpY2tuZXNzIgorICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICJzdGF0dXMiOiB7CisgICAgICAgICAgICAgICAgInN0YXR1cyI6ICJleHBl
cmltZW50YWwiCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInNwZWNpZmljYXRpb24iOiB7
CisgICAgICAgICAgICAgICAgImNhdGVnb3J5IjogImNzcy10ZXh0LWRlY29yIiwKKyAgICAgICAg
ICAgICAgICAidXJsIjogImh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtdGV4dC1kZWNvci00LyN0
ZXh0LWRlY29yYXRpb24td2lkdGgiCisgICAgICAgICAgICB9CisgICAgICAgIH0sCiAgICAgICAg
ICItd2Via2l0LXRleHQtZGVjb3JhdGlvbnMtaW4tZWZmZWN0IjogewogICAgICAgICAgICAgImlu
aGVyaXRlZCI6IHRydWUsCiAgICAgICAgICAgICAiY29kZWdlbi1wcm9wZXJ0aWVzIjogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4gYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgppbmRleCA0NjMyMzYzZjk0MTI5N2E2MTBi
ZjZiNjc3ODBhODc0ZmM5NTAwYTM2Li5iNDMyZWVmZDE5MTY1ZDFmZjkzYWVhZTg4NGIzOTM1YTFl
MThjZDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5p
bgorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgpAQCAtMTQwMywz
ICsxNDAzLDYgQEAgc3RhbmRhbG9uZQogbWluaW1hbC11aQogYnJvd3NlcgogI2VuZGlmCisKKy8v
IHRleHQtZGVjb3JhdGlvbi13aWR0aCwgdGV4dC1kZWNvcmF0aW9uLW9mZnNldAorZnJvbS1mb250
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKaW5kZXggMjJhY2Jj
MjkwMTA2NWI0Y2I3NjdjZTI3ZDQ1ZDlmNmE5NTBjZTI4Yi4uODljMWIyMWQ3YmQ1ZjFhYjUzNzli
NzY2MTIzZDAxMzkxMWI5MmFiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
QnVpbGRlckNvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJD
b252ZXJ0ZXIuaApAQCAtODgsNiArODgsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGludCBjb252
ZXJ0TWFycXVlZVNwZWVkKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwogICAgIHN0
YXRpYyBSZWY8UXVvdGVzRGF0YT4gY29udmVydFF1b3RlcyhTdHlsZVJlc29sdmVyJiwgY29uc3Qg
Q1NTVmFsdWUmKTsKICAgICBzdGF0aWMgT3B0aW9uU2V0PFRleHRVbmRlcmxpbmVQb3NpdGlvbj4g
Y29udmVydFRleHRVbmRlcmxpbmVQb3NpdGlvbihTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFs
dWUmKTsKKyAgICBzdGF0aWMgVGV4dERlY29yYXRpb25PZmZzZXQgY29udmVydFRleHREZWNvcmF0
aW9uT2Zmc2V0KFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBU
ZXh0RGVjb3JhdGlvblRoaWNrbmVzcyBjb252ZXJ0VGV4dERlY29yYXRpb25UaGlja25lc3MoU3R5
bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CiAgICAgc3RhdGljIFJlZlB0cjxTdHlsZVJl
ZmxlY3Rpb24+IGNvbnZlcnRSZWZsZWN0aW9uKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1
ZSYpOwogICAgIHN0YXRpYyBJbnRTaXplIGNvbnZlcnRJbml0aWFsTGV0dGVyKFN0eWxlUmVzb2x2
ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBmbG9hdCBjb252ZXJ0VGV4dFN0cm9r
ZVdpZHRoKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwpAQCAtNjQ5LDYgKzY1MSwx
OSBAQCBpbmxpbmUgT3B0aW9uU2V0PFRleHRVbmRlcmxpbmVQb3NpdGlvbj4gU3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0VGV4dFVuZGVybAogICAgIHJldHVybiBjb21iaW5lZFBvc2l0aW9u
OwogfQogCisKK2lubGluZSBUZXh0RGVjb3JhdGlvbk9mZnNldCBTdHlsZUJ1aWxkZXJDb252ZXJ0
ZXI6OmNvbnZlcnRUZXh0RGVjb3JhdGlvbk9mZnNldChTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NT
VmFsdWUmKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KKyAgICByZXR1cm4gVGV4
dERlY29yYXRpb25PZmZzZXQ6OmNyZWF0ZVdpdGhBdXRvKCk7Cit9CisKK2lubGluZSBUZXh0RGVj
b3JhdGlvblRoaWNrbmVzcyBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0RGVjb3Jh
dGlvblRoaWNrbmVzcyhTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKQoreworICAgIC8v
IEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KKyAgICByZXR1cm4gVGV4dERlY29yYXRpb25UaGlja25l
c3M6OmNyZWF0ZVdpdGhBdXRvKCk7Cit9CisKIGlubGluZSBSZWZQdHI8U3R5bGVSZWZsZWN0aW9u
PiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRSZWZsZWN0aW9uKFN0eWxlUmVzb2x2ZXIm
IHN0eWxlUmVzb2x2ZXIsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAoaXM8Q1NT
UHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2Vy
L0NTU1Byb3BlcnR5UGFyc2VyLmNwcAppbmRleCAyMWZlYmFjYzRjZmJhYTUxMWJiYWVhNjQ3NWYx
NjBkNTMyNWRjMGY2Li40NmJiY2NhZjUwYTMzYWY5ZjA4MjA4NWQyMjE0NDlmNTBkYmRhMGI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcApA
QCAtMjMxMiw2ICsyMzEyLDIwIEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVCb3Jk
ZXJSYWRpdXNDb3JuZXIoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTCiAgICAgcmV0dXJu
IGNyZWF0ZVByaW1pdGl2ZVZhbHVlUGFpcihwYXJzZWRWYWx1ZTEucmVsZWFzZU5vbk51bGwoKSwg
cGFyc2VkVmFsdWUyLnJlbGVhc2VOb25OdWxsKCksIFBhaXI6OklkZW50aWNhbFZhbHVlRW5jb2Rp
bmc6OkNvYWxlc2NlKTsKIH0KIAorc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVRleHRE
ZWNvcmF0aW9uT2Zmc2V0KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2Rl
IGNzc1BhcnNlck1vZGUpCit7CisgICAgaWYgKGF1dG8gdmFsdWUgPSBjb25zdW1lSWRlbnQ8Q1NT
VmFsdWVBdXRvLCBDU1NWYWx1ZUZyb21Gb250PihyYW5nZSkpCisgICAgICAgIHJldHVybiB2YWx1
ZTsKKyAgICByZXR1cm4gY29uc3VtZUxlbmd0aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVS
YW5nZUFsbCk7Cit9CisKK3N0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVUZXh0RGVjb3Jh
dGlvblRoaWNrbmVzcyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBj
c3NQYXJzZXJNb2RlKQoreworICAgIGlmIChhdXRvIHZhbHVlID0gY29uc3VtZUlkZW50PENTU1Zh
bHVlQXV0bywgQ1NTVmFsdWVGcm9tRm9udD4ocmFuZ2UpKQorICAgICAgICByZXR1cm4gdmFsdWU7
CisgICAgcmV0dXJuIGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFu
Z2VBbGwpOworfQorCiBzdGF0aWMgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lVmVy
dGljYWxBbGlnbihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQ
YXJzZXJNb2RlKQogewogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcGFyc2VkVmFsdWUg
PSBjb25zdW1lSWRlbnRSYW5nZShyYW5nZSwgQ1NTVmFsdWVCYXNlbGluZSwgQ1NTVmFsdWVXZWJr
aXRCYXNlbGluZU1pZGRsZSk7CkBAIC00MTQ0LDYgKzQxNTgsMTAgQEAgUmVmUHRyPENTU1ZhbHVl
PiBDU1NQcm9wZXJ0eVBhcnNlcjo6cGFyc2VTaW5nbGVWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3Bl
cnR5LCBDU1MKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFVuZGVybGluZVBvc2l0aW9u
OgogICAgICAgICAvLyBhdXRvIHwgYWxwaGFiZXRpYyB8IFsgdW5kZXIgfHwgWyBsZWZ0IHwgcmln
aHQgXSBdLCBidXQgd2Ugb25seSBzdXBwb3J0IGF1dG8gfCBhbHBoYWJldGljIHwgdW5kZXIgZm9y
IG5vdwogICAgICAgICByZXR1cm4gY29uc3VtZUlkZW50PENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVV
bmRlciwgQ1NTVmFsdWVBbHBoYWJldGljPihtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5
VGV4dERlY29yYXRpb25PZmZzZXQ6CisgICAgICAgIHJldHVybiBjb25zdW1lVGV4dERlY29yYXRp
b25PZmZzZXQobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUpOworICAgIGNhc2UgQ1NTUHJvcGVydHlU
ZXh0RGVjb3JhdGlvbldpZHRoOgorICAgICAgICByZXR1cm4gY29uc3VtZVRleHREZWNvcmF0aW9u
VGhpY2tuZXNzKG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKTsKICAgICBjYXNlIENTU1Byb3BlcnR5
VmVydGljYWxBbGlnbjoKICAgICAgICAgcmV0dXJuIGNvbnN1bWVWZXJ0aWNhbEFsaWduKG1fcmFu
Z2UsIG1fY29udGV4dC5tb2RlKTsKICAgICBjYXNlIENTU1Byb3BlcnR5U2hhcGVPdXRzaWRlOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCBkZDI0
MmU3NmQzZTgxMDljYjg5MDc4NTc5YjJjOGFiNDFiZDg3ZTUwLi4yNmIxZDk2YmM2ZTQwNDc3NGM1
N2RjYzBiNjRiMjg4NGM1YTIyMjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuaApAQCAtMzc1LDYgKzM3NSw4IEBAIHB1YmxpYzoKICAgICBUZXh0RGVj
b3JhdGlvblN0eWxlIHRleHREZWNvcmF0aW9uU3R5bGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNf
Y2FzdDxUZXh0RGVjb3JhdGlvblN0eWxlPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50ZXh0RGVj
b3JhdGlvblN0eWxlKTsgfQogICAgIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvblNraXA+IHRleHRE
ZWNvcmF0aW9uU2tpcCgpIGNvbnN0IHsgcmV0dXJuIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvblNr
aXA+Ojpmcm9tUmF3KG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHREZWNvcmF0aW9uU2tpcCk7IH0K
ICAgICBPcHRpb25TZXQ8VGV4dFVuZGVybGluZVBvc2l0aW9uPiB0ZXh0VW5kZXJsaW5lUG9zaXRp
b24oKSBjb25zdCB7IHJldHVybiBPcHRpb25TZXQ8VGV4dFVuZGVybGluZVBvc2l0aW9uPjo6ZnJv
bVJhdyhtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0VW5kZXJsaW5lUG9zaXRpb24pOyB9CisgICAg
VGV4dERlY29yYXRpb25PZmZzZXQgdGV4dERlY29yYXRpb25PZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0RGVjb3JhdGlvbk9mZnNldDsgfQorICAgIFRleHRE
ZWNvcmF0aW9uVGhpY2tuZXNzIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzKCkgY29uc3QgeyByZXR1
cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dERlY29yYXRpb25UaGlja25lc3M7IH0KIAogI2lm
IEVOQUJMRShDU1MzX1RFWFQpCiAgICAgVGV4dEluZGVudExpbmUgdGV4dEluZGVudExpbmUoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0SW5kZW50TGluZT4obV9yYXJlSW5oZXJpdGVk
RGF0YS0+dGV4dEluZGVudExpbmUpOyB9CkBAIC05MjQsNiArOTI2LDggQEAgcHVibGljOgogICAg
IHZvaWQgc2V0VGV4dERlY29yYXRpb25TdHlsZShUZXh0RGVjb3JhdGlvblN0eWxlIHYpIHsgU0VU
X1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCB0ZXh0RGVjb3JhdGlvblN0eWxlLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4odikpOyB9CiAgICAgdm9pZCBzZXRUZXh0RGVjb3JhdGlvblNraXAoT3B0
aW9uU2V0PFRleHREZWNvcmF0aW9uU2tpcD4gc2tpcCkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRl
ZERhdGEsIHRleHREZWNvcmF0aW9uU2tpcCwgc2tpcC50b1JhdygpKTsgfQogICAgIHZvaWQgc2V0
VGV4dFVuZGVybGluZVBvc2l0aW9uKE9wdGlvblNldDxUZXh0VW5kZXJsaW5lUG9zaXRpb24+IHYp
IHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0VW5kZXJsaW5lUG9zaXRpb24sIHYu
dG9SYXcoKSk7IH0KKyAgICB2b2lkIHNldFRleHREZWNvcmF0aW9uT2Zmc2V0KFRleHREZWNvcmF0
aW9uT2Zmc2V0JiYgdGV4dERlY29yYXRpb25PZmZzZXQpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0
ZWREYXRhLCB0ZXh0RGVjb3JhdGlvbk9mZnNldCwgV1RGTW92ZSh0ZXh0RGVjb3JhdGlvbk9mZnNl
dCkpOyB9CisgICAgdm9pZCBzZXRUZXh0RGVjb3JhdGlvblRoaWNrbmVzcyhUZXh0RGVjb3JhdGlv
blRoaWNrbmVzcyYmIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzKSB7IFNFVF9WQVIobV9yYXJlSW5o
ZXJpdGVkRGF0YSwgdGV4dERlY29yYXRpb25UaGlja25lc3MsIFdURk1vdmUodGV4dERlY29yYXRp
b25UaGlja25lc3MpKTsgfQogICAgIHZvaWQgc2V0RGlyZWN0aW9uKFRleHREaXJlY3Rpb24gdikg
eyBtX2luaGVyaXRlZEZsYWdzLmRpcmVjdGlvbiA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih2KTsg
fQogICAgIHZvaWQgc2V0SGFzRXhwbGljaXRseVNldERpcmVjdGlvbihib29sIHYpIHsgbV9ub25J
bmhlcml0ZWRGbGFncy5oYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9uID0gdjsgfQogICAgIHZvaWQg
c2V0TGluZUhlaWdodChMZW5ndGgmJik7CkBAIC0xNDg1LDYgKzE0ODksOCBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIFRleHREZWNvcmF0aW9uU3R5bGUgaW5pdGlhbFRleHREZWNvcmF0aW9uU3R5bGUo
KSB7IHJldHVybiBUZXh0RGVjb3JhdGlvblN0eWxlOjpTb2xpZDsgfQogICAgIHN0YXRpYyBPcHRp
b25TZXQ8VGV4dERlY29yYXRpb25Ta2lwPiBpbml0aWFsVGV4dERlY29yYXRpb25Ta2lwKCkgeyBy
ZXR1cm4gVGV4dERlY29yYXRpb25Ta2lwOjpBdXRvOyB9CiAgICAgc3RhdGljIE9wdGlvblNldDxU
ZXh0VW5kZXJsaW5lUG9zaXRpb24+IGluaXRpYWxUZXh0VW5kZXJsaW5lUG9zaXRpb24oKSB7IHJl
dHVybiBUZXh0VW5kZXJsaW5lUG9zaXRpb246OkF1dG87IH0KKyAgICBzdGF0aWMgVGV4dERlY29y
YXRpb25PZmZzZXQgaW5pdGlhbFRleHREZWNvcmF0aW9uT2Zmc2V0KCkgeyByZXR1cm4gVGV4dERl
Y29yYXRpb25PZmZzZXQ6OmNyZWF0ZVdpdGhBdXRvKCk7IH0KKyAgICBzdGF0aWMgVGV4dERlY29y
YXRpb25UaGlja25lc3MgaW5pdGlhbFRleHREZWNvcmF0aW9uVGhpY2tuZXNzKCkgeyByZXR1cm4g
VGV4dERlY29yYXRpb25UaGlja25lc3M6OmNyZWF0ZVdpdGhBdXRvKCk7IH0KICAgICBzdGF0aWMg
ZmxvYXQgaW5pdGlhbFpvb20oKSB7IHJldHVybiAxLjBmOyB9CiAgICAgc3RhdGljIFRleHRab29t
IGluaXRpYWxUZXh0Wm9vbSgpIHsgcmV0dXJuIFRleHRab29tOjpOb3JtYWw7IH0KICAgICBzdGF0
aWMgZmxvYXQgaW5pdGlhbE91dGxpbmVPZmZzZXQoKSB7IHJldHVybiAwOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0
YS5jcHAKaW5kZXggMmFhZGExYzI3MGEzOWY4ZmFhZDE4NTUyMDBmYmMxNjA0NmI4OGUwNi4uNzUw
YWQ4OTNmOWM1MGNhOTJjNGY1ODcxNTJlYjc0NjIzNmIyNzJkMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNw
cApAQCAtNDUsNiArNDUsOCBAQCBzdHJ1Y3QgR3JlYXRlclRoYW5PclNhbWVTaXplQXNTdHlsZVJh
cmVJbmhlcml0ZWREYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8R3JlYXRlcgogICAgIHZvaWQqIHJl
ZlB0cnNbM107CiAgICAgTGVuZ3RoIGxlbmd0aHNbMl07CiAgICAgZmxvYXQgc2Vjb25kRmxvYXQ7
CisgICAgVGV4dERlY29yYXRpb25PZmZzZXQgb2Zmc2V0OworICAgIFRleHREZWNvcmF0aW9uVGhp
Y2tuZXNzIHRoaWNrbmVzczsKICAgICB1bnNpZ25lZCBiaXRmaWVsZHNbNF07CiAgICAgc2hvcnQg
cGFnZWRNZWRpYVNob3J0c1syXTsKICAgICB1bnNpZ25lZCB1bnNpZ25lZHNbMV07CkBAIC03NSw2
ICs3Nyw4IEBAIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6OlN0eWxlUmFyZUluaGVyaXRlZERhdGEo
KQogICAgICwgdGV4dFN0cm9rZVdpZHRoKFJlbmRlclN0eWxlOjppbml0aWFsVGV4dFN0cm9rZVdp
ZHRoKCkpCiAgICAgLCBpbmRlbnQoUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0SW5kZW50KCkpCiAg
ICAgLCBlZmZlY3RpdmVab29tKFJlbmRlclN0eWxlOjppbml0aWFsWm9vbSgpKQorICAgICwgdGV4
dERlY29yYXRpb25PZmZzZXQoUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RGVjb3JhdGlvbk9mZnNl
dCgpKQorICAgICwgdGV4dERlY29yYXRpb25UaGlja25lc3MoUmVuZGVyU3R5bGU6OmluaXRpYWxU
ZXh0RGVjb3JhdGlvblRoaWNrbmVzcygpKQogICAgICwgY3VzdG9tUHJvcGVydGllcyhTdHlsZUN1
c3RvbVByb3BlcnR5RGF0YTo6Y3JlYXRlKCkpCiAgICAgLCB3aWRvd3MoUmVuZGVyU3R5bGU6Omlu
aXRpYWxXaWRvd3MoKSkKICAgICAsIG9ycGhhbnMoUmVuZGVyU3R5bGU6OmluaXRpYWxPcnBoYW5z
KCkpCkBAIC0xNjgsNiArMTcyLDggQEAgaW5saW5lIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6OlN0
eWxlUmFyZUluaGVyaXRlZERhdGEoY29uc3QgU3R5bGVSYXJlSW5oZXJpdGVkRGEKICAgICAsIGN1
cnNvckRhdGEoby5jdXJzb3JEYXRhKQogICAgICwgaW5kZW50KG8uaW5kZW50KQogICAgICwgZWZm
ZWN0aXZlWm9vbShvLmVmZmVjdGl2ZVpvb20pCisgICAgLCB0ZXh0RGVjb3JhdGlvbk9mZnNldChv
LnRleHREZWNvcmF0aW9uT2Zmc2V0KQorICAgICwgdGV4dERlY29yYXRpb25UaGlja25lc3Moby50
ZXh0RGVjb3JhdGlvblRoaWNrbmVzcykKICAgICAsIGN1c3RvbVByb3BlcnRpZXMoby5jdXN0b21Q
cm9wZXJ0aWVzKQogICAgICwgd2lkb3dzKG8ud2lkb3dzKQogICAgICwgb3JwaGFucyhvLm9ycGhh
bnMpCkBAIC0yNzMsNiArMjc5LDggQEAgYm9vbCBTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpvcGVy
YXRvcj09KGNvbnN0IFN0eWxlUmFyZUluaGVyaXRlZERhdGEmIG8pIGNvbnN0CiAgICAgICAgICYm
IGFyZVBvaW50aW5nVG9FcXVhbERhdGEoY3Vyc29yRGF0YSwgby5jdXJzb3JEYXRhKQogICAgICAg
ICAmJiBpbmRlbnQgPT0gby5pbmRlbnQKICAgICAgICAgJiYgZWZmZWN0aXZlWm9vbSA9PSBvLmVm
ZmVjdGl2ZVpvb20KKyAgICAgICAgJiYgdGV4dERlY29yYXRpb25PZmZzZXQgPT0gby50ZXh0RGVj
b3JhdGlvbk9mZnNldAorICAgICAgICAmJiB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcyA9PSBvLnRl
eHREZWNvcmF0aW9uVGhpY2tuZXNzCiAgICAgICAgICYmIHdpZG93cyA9PSBvLndpZG93cwogICAg
ICAgICAmJiBvcnBoYW5zID09IG8ub3JwaGFucwogICAgICAgICAmJiBoYXNBdXRvV2lkb3dzID09
IG8uaGFzQXV0b1dpZG93cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgKaW5kZXggYjgzYThjMGFjODFjODA2ZGQxNmI3
ZGZlMmJhZDgwYjgzM2Q5ZjJjNC4uODAyMWQ3ZjU3NDMxMjI1ZTM0Y2IzNDk3NTczOGNhNDg2MDNj
OTM0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFy
ZUluaGVyaXRlZERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5
bGVSYXJlSW5oZXJpdGVkRGF0YS5oCkBAIC0yOCw2ICsyOCw4IEBACiAjaW5jbHVkZSAiRGF0YVJl
Zi5oIgogI2luY2x1ZGUgIkxlbmd0aC5oIgogI2luY2x1ZGUgIlN0eWxlQ3VzdG9tUHJvcGVydHlE
YXRhLmgiCisjaW5jbHVkZSAiVGV4dERlY29yYXRpb25PZmZzZXQuaCIKKyNpbmNsdWRlICJUZXh0
RGVjb3JhdGlvblRoaWNrbmVzcy5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAKQEAgLTc5LDYgKzgxLDkgQEAgcHVibGlj
OgogICAgIFJlZlB0cjxDdXJzb3JMaXN0PiBjdXJzb3JEYXRhOwogICAgIExlbmd0aCBpbmRlbnQ7
CiAgICAgZmxvYXQgZWZmZWN0aXZlWm9vbTsKKworICAgIFRleHREZWNvcmF0aW9uT2Zmc2V0IHRl
eHREZWNvcmF0aW9uT2Zmc2V0OworICAgIFRleHREZWNvcmF0aW9uVGhpY2tuZXNzIHRleHREZWNv
cmF0aW9uVGhpY2tuZXNzOwogICAgIAogICAgIExlbmd0aCB3b3JkU3BhY2luZzsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1RleHREZWNvcmF0aW9uT2Zmc2V0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9UZXh0RGVjb3JhdGlvbk9mZnNl
dC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjdiNTk0MzNiOTFlZTE0MWI3NDdkNGE4NGVjYzQzNzc3ODAwMmRh
YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9UZXh0
RGVjb3JhdGlvbk9mZnNldC5jcHAKQEAgLTAsMCArMSwyNyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKKyAqIENvcHlyaWdodCAo
QykgMjAwNC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJUZXh0RGVjb3JhdGlvbk9mZnNldC5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9UZXh0RGVjb3JhdGlvbk9mZnNldC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1RleHREZWNvcmF0aW9uT2Zmc2V0LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDhhNzFhMmRkYzAzM2ZjZmEyYmVlNzdlMjc4MjZhYjgwM2UzNTdiMQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9UZXh0RGVjb3JhdGlvbk9mZnNl
dC5oCkBAIC0wLDAgKzEsMTEwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJMZW5ndGguaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBUZXh0RGVjb3Jh
dGlvbk9mZnNldCB7CitwdWJsaWM6CisgICAgc3RhdGljIFRleHREZWNvcmF0aW9uT2Zmc2V0IGNy
ZWF0ZVdpdGhBdXRvKCkKKyAgICB7CisgICAgICAgIHJldHVybiBUZXh0RGVjb3JhdGlvbk9mZnNl
dChUeXBlOjpBdXRvKTsKKyAgICB9CisgICAgc3RhdGljIFRleHREZWNvcmF0aW9uT2Zmc2V0IGNy
ZWF0ZUZyb21Gb250KCkKKyAgICB7CisgICAgICAgIHJldHVybiBUZXh0RGVjb3JhdGlvbk9mZnNl
dChUeXBlOjpBdXRvKTsKKyAgICB9CisgICAgc3RhdGljIFRleHREZWNvcmF0aW9uT2Zmc2V0IGNy
ZWF0ZVdpdGhMZW5ndGgoTGVuZ3RoJiYgbGVuZ3RoKQorICAgIHsKKyAgICAgICAgVGV4dERlY29y
YXRpb25PZmZzZXQgcmVzdWx0KFR5cGU6Okxlbmd0aCk7CisgICAgICAgIHJlc3VsdC5zZXRMZW5n
dGhWYWx1ZShXVEZNb3ZlKGxlbmd0aCkpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0K
KworICAgIGJvb2wgaXNBdXRvKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3R5cGUg
PT0gVHlwZTo6QXV0bzsKKyAgICB9CisKKyAgICBib29sIGlzRnJvbUZvbnQoKSBjb25zdAorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1fdHlwZSA9PSBUeXBlOjpGcm9tRm9udDsKKyAgICB9CisKKyAg
ICBib29sIGlzTGVuZ3RoKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3R5cGUgPT0g
VHlwZTo6TGVuZ3RoOworICAgIH0KKworICAgIHZvaWQgc2V0TGVuZ3RoVmFsdWUoTGVuZ3RoJiYg
bGVuZ3RoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzTGVuZ3RoKCkpOworICAgICAgICBtX2xl
bmd0aCA9IFdURk1vdmUobGVuZ3RoKTsKKyAgICB9CisKKyAgICBjb25zdCBMZW5ndGgmIGxlbmd0
aFZhbHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChpc0xlbmd0aCgpKTsKKyAgICAg
ICAgcmV0dXJuIG1fbGVuZ3RoOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBU
ZXh0RGVjb3JhdGlvbk9mZnNldCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBzd2l0Y2gg
KG1fdHlwZSkgeworICAgICAgICBjYXNlIFR5cGU6OkF1dG86CisgICAgICAgIGNhc2UgVHlwZTo6
RnJvbUZvbnQ6CisgICAgICAgICAgICByZXR1cm4gbV90eXBlID09IG90aGVyLm1fdHlwZTsKKyAg
ICAgICAgY2FzZSBUeXBlOjpMZW5ndGg6CisgICAgICAgICAgICByZXR1cm4gbV90eXBlID09IG90
aGVyLm1fdHlwZSAmJiBtX2xlbmd0aCA9PSBvdGhlci5tX2xlbmd0aDsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQor
CisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFRleHREZWNvcmF0aW9uT2Zmc2V0JiBvdGhlcikg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKKyAgICB9CisK
K3ByaXZhdGU6CisgICAgZW51bSBjbGFzcyBUeXBlIHsKKyAgICAgICAgQXV0bywKKyAgICAgICAg
RnJvbUZvbnQsCisgICAgICAgIExlbmd0aAorICAgIH07CisKKyAgICBUZXh0RGVjb3JhdGlvbk9m
ZnNldChUeXBlIHR5cGUpCisgICAgICAgIDogbV90eXBlKHR5cGUpCisgICAgeworICAgIH0KKwor
ICAgIFR5cGUgbV90eXBlOworICAgIExlbmd0aCBtX2xlbmd0aDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9U
ZXh0RGVjb3JhdGlvblRoaWNrbmVzcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvVGV4dERlY29yYXRpb25UaGlja25lc3MuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4NTExYjBlYzdiOTUx
M2EwOTU2ZWI4Y2U4NjYzYWNiN2U0NWU0NTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvVGV4dERlY29yYXRpb25UaGlja25lc3MuY3BwCkBAIC0wLDAg
KzEsMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZp
c3RvQGtkZS5vcmcpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGV4dERl
Y29yYXRpb25UaGlja25lc3MuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
VGV4dERlY29yYXRpb25UaGlja25lc3MuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkMzI0Mjg4MGY1ZWMyM2Yx
YjVlOGUwMzIwMTkxMTQ1OGJmMzNjNTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvVGV4dERlY29yYXRpb25UaGlja25lc3MuaApAQCAtMCwwICsxLDEx
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTGVuZ3RoLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVGV4dERlY29yYXRpb25UaGlja25lc3Mgewor
cHVibGljOgorICAgIHN0YXRpYyBUZXh0RGVjb3JhdGlvblRoaWNrbmVzcyBjcmVhdGVXaXRoQXV0
bygpCisgICAgeworICAgICAgICByZXR1cm4gVGV4dERlY29yYXRpb25UaGlja25lc3MoVHlwZTo6
QXV0byk7CisgICAgfQorICAgIHN0YXRpYyBUZXh0RGVjb3JhdGlvblRoaWNrbmVzcyBjcmVhdGVG
cm9tRm9udCgpCisgICAgeworICAgICAgICByZXR1cm4gVGV4dERlY29yYXRpb25UaGlja25lc3Mo
VHlwZTo6QXV0byk7CisgICAgfQorICAgIHN0YXRpYyBUZXh0RGVjb3JhdGlvblRoaWNrbmVzcyBj
cmVhdGVXaXRoTGVuZ3RoKExlbmd0aCYmIGxlbmd0aCkKKyAgICB7CisgICAgICAgIFRleHREZWNv
cmF0aW9uVGhpY2tuZXNzIHJlc3VsdChUeXBlOjpMZW5ndGgpOworICAgICAgICByZXN1bHQuc2V0
TGVuZ3RoVmFsdWUoV1RGTW92ZShsZW5ndGgpKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICB9CisKKyAgICBib29sIGlzQXV0bygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV90
eXBlID09IFR5cGU6OkF1dG87CisgICAgfQorCisgICAgYm9vbCBpc0Zyb21Gb250KCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBtX3R5cGUgPT0gVHlwZTo6RnJvbUZvbnQ7CisgICAgfQor
CisgICAgYm9vbCBpc0xlbmd0aCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV90eXBl
ID09IFR5cGU6Okxlbmd0aDsKKyAgICB9CisKKyAgICB2b2lkIHNldExlbmd0aFZhbHVlKExlbmd0
aCYmIGxlbmd0aCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpc0xlbmd0aCgpKTsKKyAgICAgICAg
bV9sZW5ndGggPSBXVEZNb3ZlKGxlbmd0aCk7CisgICAgfQorCisgICAgY29uc3QgTGVuZ3RoJiBs
ZW5ndGhWYWx1ZSgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaXNMZW5ndGgoKSk7Cisg
ICAgICAgIHJldHVybiBtX2xlbmd0aDsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29u
c3QgVGV4dERlY29yYXRpb25UaGlja25lc3MmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAg
c3dpdGNoIChtX3R5cGUpIHsKKyAgICAgICAgY2FzZSBUeXBlOjpBdXRvOgorICAgICAgICBjYXNl
IFR5cGU6OkZyb21Gb250OgorICAgICAgICAgICAgcmV0dXJuIG1fdHlwZSA9PSBvdGhlci5tX3R5
cGU7CisgICAgICAgIGNhc2UgVHlwZTo6TGVuZ3RoOgorICAgICAgICAgICAgcmV0dXJuIG1fdHlw
ZSA9PSBvdGhlci5tX3R5cGUgJiYgbV9sZW5ndGggPT0gb3RoZXIubV9sZW5ndGg7CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUZXh0RGVjb3JhdGlvblRoaWNrbmVz
cyYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7
CisgICAgfQorCitwcml2YXRlOgorICAgIGVudW0gY2xhc3MgVHlwZSB7CisgICAgICAgIEF1dG8s
CisgICAgICAgIEZyb21Gb250LAorICAgICAgICBMZW5ndGgKKyAgICB9OworCisgICAgVGV4dERl
Y29yYXRpb25UaGlja25lc3MoVHlwZSB0eXBlKQorICAgICAgICA6IG1fdHlwZSh0eXBlKQorICAg
IHsKKyAgICB9CisKKyAgICBUeXBlIG1fdHlwZTsKKyAgICBMZW5ndGggbV9sZW5ndGg7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352859</attachid>
            <date>2018-10-20 11:57:14 -0700</date>
            <delta_ts>2018-10-28 03:30:17 -0700</delta_ts>
            <desc>Needs to actually move/resize the decorations</desc>
            <filename>bug-190774-20181020195712.patch</filename>
            <type>text/plain</type>
            <size>30635</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MzA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2U4Y2M4YjIzZmQ2ODA4
Mzk1NjhkNzgxNTMwZjQ5Nzk2ODlkZGQ4Mi4uYTdmMWQ1NGU0ODYxYzkzY2NkY2Q4NmFmNjdiNzAy
OTE1ZGRiYTYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE4LTEwLTIwICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
IHRleHQtZGVjb3JhdGlvbi1vZmZzZXQgYW5kIHRleHQtZGVjb3JhdGlvbi13aWR0aAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNzc0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChP
T1BTISkuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0ZXh0RGVjb3JhdGlvbk9mZnNldFRvQ1NT
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6dGV4dERlY29yYXRpb25UaGlja25lc3NUb0NTU1Zh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9y
UHJvcGVydHlpblN0eWxlKToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydGllcy5qc29uOgorICAg
ICAgICAqIGNzcy9DU1NWYWx1ZUtleXdvcmRzLmluOgorICAgICAgICAqIGNzcy9TdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydFRleHREZWNvcmF0aW9uT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydFRleHREZWNvcmF0aW9uVGhpY2tuZXNzKToKKyAgICAgICAg
KiBjc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNv
bnN1bWVUZXh0RGVjb3JhdGlvbk9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lVGV4
dERlY29yYXRpb25UaGlja25lc3MpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJz
ZXI6OnBhcnNlU2luZ2xlVmFsdWUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnRleHREZWNvcmF0aW9uT2Zm
c2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjp0ZXh0RGVjb3JhdGlv
blRoaWNrbmVzcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0VGV4
dERlY29yYXRpb25PZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFRl
eHREZWNvcmF0aW9uVGhpY2tuZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpp
bml0aWFsVGV4dERlY29yYXRpb25PZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OmluaXRpYWxUZXh0RGVjb3JhdGlvblRoaWNrbmVzcyk6CisgICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9UZXh0RGVjb3JhdGlvbk9mZnNldC5jcHA6IEFkZGVkLgorICAgICAg
ICAqIHJlbmRlcmluZy9zdHlsZS9UZXh0RGVjb3JhdGlvbk9mZnNldC5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlRleHREZWNvcmF0aW9uT2Zmc2V0OjpjcmVhdGVXaXRoQXV0byk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvbk9mZnNldDo6Y3JlYXRlRnJvbUZvbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dERlY29yYXRpb25PZmZzZXQ6OmNyZWF0ZVdpdGhMZW5ndGgpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dERlY29yYXRpb25PZmZzZXQ6OmlzQXV0byBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvbk9mZnNldDo6aXNGcm9tRm9udCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvbk9mZnNldDo6aXNMZW5ndGggY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dERlY29yYXRpb25PZmZzZXQ6OnNldExlbmd0aFZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHREZWNvcmF0aW9uT2Zmc2V0OjpsZW5ndGhWYWx1ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvbk9mZnNldDo6b3BlcmF0b3I9
PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvbk9mZnNldDo6b3BlcmF0
b3IhPSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvbk9mZnNldDo6VGV4
dERlY29yYXRpb25PZmZzZXQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9UZXh0RGVjb3Jh
dGlvblRoaWNrbmVzcy5jcHA6IEFkZGVkLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9UZXh0
RGVjb3JhdGlvblRoaWNrbmVzcy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHREZWNv
cmF0aW9uVGhpY2tuZXNzOjpjcmVhdGVXaXRoQXV0byk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
RGVjb3JhdGlvblRoaWNrbmVzczo6Y3JlYXRlRnJvbUZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dERlY29yYXRpb25UaGlja25lc3M6OmNyZWF0ZVdpdGhMZW5ndGgpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dERlY29yYXRpb25UaGlja25lc3M6OmlzQXV0byBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0RGVjb3JhdGlvblRoaWNrbmVzczo6aXNGcm9tRm9udCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvblRoaWNrbmVzczo6aXNMZW5ndGggY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dERlY29yYXRpb25UaGlja25lc3M6OnNldExlbmd0aFZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHREZWNvcmF0aW9uVGhpY2tuZXNzOjpsZW5ndGhWYWx1
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvblRoaWNrbmVzczo6b3Bl
cmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvblRoaWNrbmVz
czo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvblRo
aWNrbmVzczo6VGV4dERlY29yYXRpb25UaGlja25lc3MpOgorCiAyMDE4LTEwLTE5ICBKdXN0aW4g
RmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkdQVV0gQWRkIHN0dWJz
IGZvciBXZWJHUFVTd2FwQ2hhaW4gYW5kIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkNjUw
MWViODY4YjI1OTRiYjU5NzExMTg3M2JiYTI5MGQwZGEyOTc5Li4xZDZhNDE2NjY5ZTg4ZmY2ZmM5
NDJiMWJlZGM3NDE4NTkxZGM2M2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02Mzc3LDYgKzYzNzcsOCBAQAogCQkxQ0FGMzQ3
RTBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYlNjcmlwdE9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxQ0FGMzQ3RjBBNkM0MDUyMDBBQkUwNkUgLyogV2ViU2NyaXB0T2JqZWN0Lm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViU2NyaXB0T2JqZWN0Lm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0FGMzQ4MDBBNkM0MDUyMDBBQkUwNkUg
LyogV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJTY3JpcHRPYmplY3RQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTFDQjZCNEY4MjE3QjgzOTMwMDkzQjlDRCAvKiBUZXh0RGVjb3JhdGlvblRoaWNrbmVzcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBUZXh0RGVjb3JhdGlvblRoaWNrbmVzcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkxQ0I2QjRGQjIxN0I4Mzk0MDA5M0I5Q0QgLyogVGV4dERlY29yYXRp
b25PZmZzZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dERlY29yYXRpb25PZmZzZXQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNDREY1QkIxOTkwMzMyNDAwQkNFQkFEIC8qIFNWR1Rv
T1RGRm9udENvbnZlcnNpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFDQ0RGNUJDMTk5MDMzMjQwMEJDRUJBRCAvKiBTVkdUb09URkZvbnRDb252ZXJzaW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1RvT1RGRm9udENvbnZlcnNpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNERDQ1RTQwQkE5Qzg0NjAwRjkwMTQ3
IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGgg
PSBEZWJ1Z1JlbGVhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
OTgxOSw5ICsxOTgyMSw3IEBACiAJCQkJRTQyMDUwMTYyMTQxOTAxQjAwNjZFRjNCIC8qIFByb2Nl
c3NXYXJtaW5nLmNwcCAqLywKIAkJCQlFNDIwNTAxNDIxNDE5MDFBMDA2NkVGM0IgLyogUHJvY2Vz
c1dhcm1pbmcuaCAqLywKIAkJCQlDRDlBODdGOTIxNUQ2Q0YzMDA2RjE3QjUgLyogUXVpcmtzLmNw
cCAqLywKLQkJCQlDRDlBODdGMjIxNUQ0M0E2MDA2RjE3QjUgLyogUXVpcmtzLmNwcCAqLywKIAkJ
CQlDRDlBODdGQjIxNUQ2Q0YzMDA2RjE3QjUgLyogUXVpcmtzLmggKi8sCi0JCQkJQ0Q5QTg3RjEy
MTVENDNBNjAwNkYxN0I1IC8qIFF1aXJrcy5oICovLAogCQkJCTQ2Qjk1MThEMjA3RDYzMkEwMEE3
RDJERCAvKiBSZW1vdGVET01XaW5kb3cuY3BwICovLAogCQkJCTQ2Qjk1MThFMjA3RDYzMkEwMEE3
RDJERCAvKiBSZW1vdGVET01XaW5kb3cuaCAqLywKIAkJCQk0NkJDQkJDMzIwODUwMEE3MDA3MTA2
MzggLyogUmVtb3RlRE9NV2luZG93LmlkbCAqLywKQEAgLTI0NTM3LDYgKzI0NTM3LDggQEAKIAkJ
CQlCQzIyNzQ3NTBFODM2NkUyMDBFN0Y5NzUgLyogU1ZHUmVuZGVyU3R5bGUuaCAqLywKIAkJCQlC
QzIyNzQ3NjBFODM2NkUyMDBFN0Y5NzUgLyogU1ZHUmVuZGVyU3R5bGVEZWZzLmNwcCAqLywKIAkJ
CQlCQzIyNzQ3NzBFODM2NkUyMDBFN0Y5NzUgLyogU1ZHUmVuZGVyU3R5bGVEZWZzLmggKi8sCisJ
CQkJMUNCNkI0RkIyMTdCODM5NDAwOTNCOUNEIC8qIFRleHREZWNvcmF0aW9uT2Zmc2V0LmggKi8s
CisJCQkJMUNCNkI0RjgyMTdCODM5MzAwOTNCOUNEIC8qIFRleHREZWNvcmF0aW9uVGhpY2tuZXNz
LmggKi8sCiAJCQkJNDQ4QjFCNzgwRjNBMkY5QjAwNDdBOUUyIC8qIFRleHRTaXplQWRqdXN0bWVu
dC5oICovLAogCQkJCTBGMTVFRDU5MUI3RUM3QzUwMEVEREZFQiAvKiBXaWxsQ2hhbmdlRGF0YS5j
cHAgKi8sCiAJCQkJMEYxNUVENUExQjdFQzdDNTAwRURERkVCIC8qIFdpbGxDaGFuZ2VEYXRhLmgg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24uY3BwCmluZGV4IGM3NzY0OGVlMWQ4MzQ5ZmIzNmIxMDcxNTQ1YzM4MWZhNzMyNzA5YzguLjA0
NTg1YTZiZWI1N2U5NTQ2MGRlMWE1ODhiNzhhYzk2ZjIwNjlkMzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0xODAyLDYg
KzE4MDIsMjYgQEAgc3RhdGljIFJlZjxDU1NWYWx1ZT4gcmVuZGVyVGV4dERlY29yYXRpb25Ta2lw
RmxhZ3NUb0NTU1ZhbHVlKE9wdGlvblNldDxUZXh0RGVjb3IKICAgICByZXR1cm4gQ1NTVmFsdWVQ
b29sOjpzaW5nbGV0b24oKS5jcmVhdGVFeHBsaWNpdEluaXRpYWxWYWx1ZSgpOwogfQogCitzdGF0
aWMgUmVmPENTU1ZhbHVlPiB0ZXh0RGVjb3JhdGlvbk9mZnNldFRvQ1NTVmFsdWUoY29uc3QgVGV4
dERlY29yYXRpb25PZmZzZXQmIHRleHREZWNvcmF0aW9uT2Zmc2V0KQoreworICAgIGlmICh0ZXh0
RGVjb3JhdGlvbk9mZnNldC5pc0F1dG8oKSkKKyAgICAgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6
c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQXV0byk7CisgICAgaWYg
KHRleHREZWNvcmF0aW9uT2Zmc2V0LmlzRnJvbUZvbnQoKSkKKyAgICAgICAgcmV0dXJuIENTU1Zh
bHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlRnJvbUZv
bnQpOworICAgIEFTU0VSVCh0ZXh0RGVjb3JhdGlvbk9mZnNldC5pc0xlbmd0aCgpKTsKKyAgICBy
ZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZSh0ZXh0RGVjb3JhdGlv
bk9mZnNldC5sZW5ndGhWYWx1ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKK30KKwor
c3RhdGljIFJlZjxDU1NWYWx1ZT4gdGV4dERlY29yYXRpb25UaGlja25lc3NUb0NTU1ZhbHVlKGNv
bnN0IFRleHREZWNvcmF0aW9uVGhpY2tuZXNzJiB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcykKK3sK
KyAgICBpZiAodGV4dERlY29yYXRpb25UaGlja25lc3MuaXNBdXRvKCkpCisgICAgICAgIHJldHVy
biBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1
ZUF1dG8pOworICAgIGlmICh0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcy5pc0Zyb21Gb250KCkpCisg
ICAgICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJW
YWx1ZShDU1NWYWx1ZUZyb21Gb250KTsKKyAgICBBU1NFUlQodGV4dERlY29yYXRpb25UaGlja25l
c3MuaXNMZW5ndGgoKSk7CisgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3Jl
YXRlVmFsdWUodGV4dERlY29yYXRpb25UaGlja25lc3MubGVuZ3RoVmFsdWUoKSwgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19QWCk7Cit9CisKIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IHJlbmRlckVtcGhh
c2lzUG9zaXRpb25GbGFnc1RvQ1NTVmFsdWUoT3B0aW9uU2V0PFRleHRFbXBoYXNpc1Bvc2l0aW9u
PiB0ZXh0RW1waGFzaXNQb3NpdGlvbikKIHsKICAgICBBU1NFUlQoISgodGV4dEVtcGhhc2lzUG9z
aXRpb24gJiBUZXh0RW1waGFzaXNQb3NpdGlvbjo6T3ZlcikgJiYgKHRleHRFbXBoYXNpc1Bvc2l0
aW9uICYgVGV4dEVtcGhhc2lzUG9zaXRpb246OlVuZGVyKSkpOwpAQCAtMzMzMSw2ICszMzUxLDEw
IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JQcm9w
ZXJ0eWluU3R5bGUoY29uc3QgUmVuZGVyU3R5CiAgICAgICAgICAgICByZXR1cm4gcmVuZGVyVGV4
dERlY29yYXRpb25Ta2lwRmxhZ3NUb0NTU1ZhbHVlKHN0eWxlLnRleHREZWNvcmF0aW9uU2tpcCgp
KTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRVbmRlcmxpbmVQb3NpdGlvbjoK
ICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUudGV4dFVu
ZGVybGluZVBvc2l0aW9uKCkpOworICAgICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dERlY29yYXRp
b25PZmZzZXQ6CisgICAgICAgICAgICByZXR1cm4gdGV4dERlY29yYXRpb25PZmZzZXRUb0NTU1Zh
bHVlKHN0eWxlLnRleHREZWNvcmF0aW9uT2Zmc2V0KCkpOworICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5VGV4dERlY29yYXRpb25XaWR0aDoKKyAgICAgICAgICAgIHJldHVybiB0ZXh0RGVjb3JhdGlv
blRoaWNrbmVzc1RvQ1NTVmFsdWUoc3R5bGUudGV4dERlY29yYXRpb25UaGlja25lc3MoKSk7CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdDoKICAg
ICAgICAgICAgIHJldHVybiByZW5kZXJUZXh0RGVjb3JhdGlvbkZsYWdzVG9DU1NWYWx1ZShzdHls
ZS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFRleHRGaWxsQ29sb3I6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJv
cGVydGllcy5qc29uIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnRpZXMuanNvbgppbmRl
eCBiYzZiNTc4YjhkZTBjNDUyMGY4YTkzNTk1NzUxNTBhOTBmNzVkZTVlLi45MGMyNmYxMjBkZDRm
MmUwOGVmNWIyOGMxY2EzYjI3MmIxOGRjNmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJvcGVydGllcy5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0
aWVzLmpzb24KQEAgLTU5MzksNiArNTkzOSwzNCBAQAogICAgICAgICAgICAgICAgICJ1cmwiOiAi
aHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy10ZXh0LWRlY29yLTMvI3RleHQtdW5kZXJsaW5lLXBv
c2l0aW9uIgogICAgICAgICAgICAgfQogICAgICAgICB9LAorICAgICAgICAidGV4dC1kZWNvcmF0
aW9uLW9mZnNldCI6IHsKKyAgICAgICAgICAgICJpbmhlcml0ZWQiOiB0cnVlLAorICAgICAgICAg
ICAgImNvZGVnZW4tcHJvcGVydGllcyI6IHsKKyAgICAgICAgICAgICAgICAibmFtZS1mb3ItbWV0
aG9kcyI6ICJUZXh0RGVjb3JhdGlvbk9mZnNldCIsCisgICAgICAgICAgICAgICAgImNvbnZlcnRl
ciI6ICJUZXh0RGVjb3JhdGlvbk9mZnNldCIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAi
c3RhdHVzIjogeworICAgICAgICAgICAgICAgICJzdGF0dXMiOiAiZXhwZXJpbWVudGFsIgorICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICJzcGVjaWZpY2F0aW9uIjogeworICAgICAgICAgICAg
ICAgICJjYXRlZ29yeSI6ICJjc3MtdGV4dC1kZWNvciIsCisgICAgICAgICAgICAgICAgInVybCI6
ICJodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXRleHQtZGVjb3ItNC8jdGV4dC1kZWNvcmF0aW9u
LW9mZnNldCIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInRleHQtZGVjb3Jh
dGlvbi13aWR0aCI6IHsKKyAgICAgICAgICAgICJpbmhlcml0ZWQiOiB0cnVlLAorICAgICAgICAg
ICAgImNvZGVnZW4tcHJvcGVydGllcyI6IHsKKyAgICAgICAgICAgICAgICAibmFtZS1mb3ItbWV0
aG9kcyI6ICJUZXh0RGVjb3JhdGlvblRoaWNrbmVzcyIsCisgICAgICAgICAgICAgICAgImNvbnZl
cnRlciI6ICJUZXh0RGVjb3JhdGlvblRoaWNrbmVzcyIKKyAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICAic3RhdHVzIjogeworICAgICAgICAgICAgICAgICJzdGF0dXMiOiAiZXhwZXJpbWVudGFs
IgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzcGVjaWZpY2F0aW9uIjogeworICAgICAg
ICAgICAgICAgICJjYXRlZ29yeSI6ICJjc3MtdGV4dC1kZWNvciIsCisgICAgICAgICAgICAgICAg
InVybCI6ICJodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXRleHQtZGVjb3ItNC8jdGV4dC1kZWNv
cmF0aW9uLXdpZHRoIgorICAgICAgICAgICAgfQorICAgICAgICB9LAogICAgICAgICAiLXdlYmtp
dC10ZXh0LWRlY29yYXRpb25zLWluLWVmZmVjdCI6IHsKICAgICAgICAgICAgICJpbmhlcml0ZWQi
OiB0cnVlLAogICAgICAgICAgICAgImNvZGVnZW4tcHJvcGVydGllcyI6IHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KaW5kZXggNDYzMjM2M2Y5NDEyOTdhNjEwYmY2YjY3Nzgw
YTg3NGZjOTUwMGEzNi4uYjQzMmVlZmQxOTE2NWQxZmY5M2FlYWU4ODRiMzkzNWExZTE4Y2QwOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KQEAgLTE0MDMsMyArMTQwMyw2
IEBAIHN0YW5kYWxvbmUKIG1pbmltYWwtdWkKIGJyb3dzZXIKICNlbmRpZgorCisvLyB0ZXh0LWRl
Y29yYXRpb24td2lkdGgsIHRleHQtZGVjb3JhdGlvbi1vZmZzZXQKK2Zyb20tZm9udApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oIGIvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCmluZGV4IDIyYWNiYzI5MDEwNjVi
NGNiNzY3Y2UyN2Q0NWQ5ZjZhOTUwY2UyOGIuLjJmMDg0YmNkZDJjZGFkZTMyYzkwZWRmYmMxOGZk
ZWJiNmNkNTQ3N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJD
b252ZXJ0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVy
LmgKQEAgLTg4LDYgKzg4LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBpbnQgY29udmVydE1hcnF1
ZWVTcGVlZChTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgUmVm
PFF1b3Rlc0RhdGE+IGNvbnZlcnRRdW90ZXMoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVl
Jik7CiAgICAgc3RhdGljIE9wdGlvblNldDxUZXh0VW5kZXJsaW5lUG9zaXRpb24+IGNvbnZlcnRU
ZXh0VW5kZXJsaW5lUG9zaXRpb24oU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7Cisg
ICAgc3RhdGljIFRleHREZWNvcmF0aW9uT2Zmc2V0IGNvbnZlcnRUZXh0RGVjb3JhdGlvbk9mZnNl
dChTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgVGV4dERlY29y
YXRpb25UaGlja25lc3MgY29udmVydFRleHREZWNvcmF0aW9uVGhpY2tuZXNzKFN0eWxlUmVzb2x2
ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBSZWZQdHI8U3R5bGVSZWZsZWN0aW9u
PiBjb252ZXJ0UmVmbGVjdGlvbihTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKICAg
ICBzdGF0aWMgSW50U2l6ZSBjb252ZXJ0SW5pdGlhbExldHRlcihTdHlsZVJlc29sdmVyJiwgY29u
c3QgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgZmxvYXQgY29udmVydFRleHRTdHJva2VXaWR0aChT
dHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKQEAgLTY0OSw2ICs2NTEsMzkgQEAgaW5s
aW5lIE9wdGlvblNldDxUZXh0VW5kZXJsaW5lUG9zaXRpb24+IFN0eWxlQnVpbGRlckNvbnZlcnRl
cjo6Y29udmVydFRleHRVbmRlcmwKICAgICByZXR1cm4gY29tYmluZWRQb3NpdGlvbjsKIH0KIAor
CitpbmxpbmUgVGV4dERlY29yYXRpb25PZmZzZXQgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252
ZXJ0VGV4dERlY29yYXRpb25PZmZzZXQoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgY29u
c3QgQ1NTVmFsdWUmIHZhbHVlKQoreworICAgIEFTU0VSVChpczxDU1NQcmltaXRpdmVWYWx1ZT4o
dmFsdWUpKTsKKyAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPih2YWx1ZSk7CisgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkpIHsK
KyAgICBjYXNlIENTU1ZhbHVlQXV0bzoKKyAgICAgICAgcmV0dXJuIFRleHREZWNvcmF0aW9uT2Zm
c2V0OjpjcmVhdGVXaXRoQXV0bygpOworICAgIGNhc2UgQ1NTVmFsdWVGcm9tRm9udDoKKyAgICAg
ICAgcmV0dXJuIFRleHREZWNvcmF0aW9uT2Zmc2V0OjpjcmVhdGVGcm9tRm9udCgpOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIEFTU0VSVChwcmltaXRpdmVWYWx1ZS5pc0xlbmd0aCgpKTsKKyAgICAg
ICAgYXV0byBjb21wdXRlZExlbmd0aCA9IHByaW1pdGl2ZVZhbHVlLmNvbXB1dGVMZW5ndGg8Zmxv
YXQ+KHN0eWxlUmVzb2x2ZXIuc3RhdGUoKS5jc3NUb0xlbmd0aENvbnZlcnNpb25EYXRhKCkpOwor
ICAgICAgICByZXR1cm4gVGV4dERlY29yYXRpb25PZmZzZXQ6OmNyZWF0ZVdpdGhMZW5ndGgoY29t
cHV0ZWRMZW5ndGgpOworICAgIH0KK30KKworaW5saW5lIFRleHREZWNvcmF0aW9uVGhpY2tuZXNz
IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHREZWNvcmF0aW9uVGhpY2tuZXNzKFN0
eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK3sKKyAg
ICBBU1NFUlQoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSk7CisgICAgYXV0byYgcHJpbWl0
aXZlVmFsdWUgPSBkb3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOworICAgIHN3aXRj
aCAocHJpbWl0aXZlVmFsdWUudmFsdWVJRCgpKSB7CisgICAgY2FzZSBDU1NWYWx1ZUF1dG86Cisg
ICAgICAgIHJldHVybiBUZXh0RGVjb3JhdGlvblRoaWNrbmVzczo6Y3JlYXRlV2l0aEF1dG8oKTsK
KyAgICBjYXNlIENTU1ZhbHVlRnJvbUZvbnQ6CisgICAgICAgIHJldHVybiBUZXh0RGVjb3JhdGlv
blRoaWNrbmVzczo6Y3JlYXRlRnJvbUZvbnQoKTsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NF
UlQocHJpbWl0aXZlVmFsdWUuaXNMZW5ndGgoKSk7CisgICAgICAgIGF1dG8gY29tcHV0ZWRMZW5n
dGggPSBwcmltaXRpdmVWYWx1ZS5jb21wdXRlTGVuZ3RoPGZsb2F0PihzdHlsZVJlc29sdmVyLnN0
YXRlKCkuY3NzVG9MZW5ndGhDb252ZXJzaW9uRGF0YSgpKTsKKyAgICAgICAgcmV0dXJuIFRleHRE
ZWNvcmF0aW9uVGhpY2tuZXNzOjpjcmVhdGVXaXRoTGVuZ3RoKGNvbXB1dGVkTGVuZ3RoKTsKKyAg
ICB9Cit9CisKIGlubGluZSBSZWZQdHI8U3R5bGVSZWZsZWN0aW9uPiBTdHlsZUJ1aWxkZXJDb252
ZXJ0ZXI6OmNvbnZlcnRSZWZsZWN0aW9uKFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIsIGNv
bnN0IENTU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZh
bHVlKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0
eVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2Vy
LmNwcAppbmRleCAyMWZlYmFjYzRjZmJhYTUxMWJiYWVhNjQ3NWYxNjBkNTMyNWRjMGY2Li40NmJi
Y2NhZjUwYTMzYWY5ZjA4MjA4NWQyMjE0NDlmNTBkYmRhMGI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcApAQCAtMjMxMiw2ICsyMzEyLDIw
IEBAIHN0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVCb3JkZXJSYWRpdXNDb3JuZXIoQ1NT
UGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTCiAgICAgcmV0dXJuIGNyZWF0ZVByaW1pdGl2ZVZh
bHVlUGFpcihwYXJzZWRWYWx1ZTEucmVsZWFzZU5vbk51bGwoKSwgcGFyc2VkVmFsdWUyLnJlbGVh
c2VOb25OdWxsKCksIFBhaXI6OklkZW50aWNhbFZhbHVlRW5jb2Rpbmc6OkNvYWxlc2NlKTsKIH0K
IAorc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29uc3VtZVRleHREZWNvcmF0aW9uT2Zmc2V0KENT
U1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7
CisgICAgaWYgKGF1dG8gdmFsdWUgPSBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVBdXRvLCBDU1NWYWx1
ZUZyb21Gb250PihyYW5nZSkpCisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICByZXR1cm4gY29u
c3VtZUxlbmd0aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7Cit9CisKK3N0
YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVUZXh0RGVjb3JhdGlvblRoaWNrbmVzcyhDU1NQ
YXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQorewor
ICAgIGlmIChhdXRvIHZhbHVlID0gY29uc3VtZUlkZW50PENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVG
cm9tRm9udD4ocmFuZ2UpKQorICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgcmV0dXJuIGNvbnN1
bWVMZW5ndGgocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwpOworfQorCiBzdGF0
aWMgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lVmVydGljYWxBbGlnbihDU1NQYXJz
ZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQogewogICAg
IFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcGFyc2VkVmFsdWUgPSBjb25zdW1lSWRlbnRSYW5n
ZShyYW5nZSwgQ1NTVmFsdWVCYXNlbGluZSwgQ1NTVmFsdWVXZWJraXRCYXNlbGluZU1pZGRsZSk7
CkBAIC00MTQ0LDYgKzQxNTgsMTAgQEAgUmVmUHRyPENTU1ZhbHVlPiBDU1NQcm9wZXJ0eVBhcnNl
cjo6cGFyc2VTaW5nbGVWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1MKICAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0VGV4dFVuZGVybGluZVBvc2l0aW9uOgogICAgICAgICAvLyBhdXRv
IHwgYWxwaGFiZXRpYyB8IFsgdW5kZXIgfHwgWyBsZWZ0IHwgcmlnaHQgXSBdLCBidXQgd2Ugb25s
eSBzdXBwb3J0IGF1dG8gfCBhbHBoYWJldGljIHwgdW5kZXIgZm9yIG5vdwogICAgICAgICByZXR1
cm4gY29uc3VtZUlkZW50PENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVVbmRlciwgQ1NTVmFsdWVBbHBo
YWJldGljPihtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dERlY29yYXRpb25PZmZz
ZXQ6CisgICAgICAgIHJldHVybiBjb25zdW1lVGV4dERlY29yYXRpb25PZmZzZXQobV9yYW5nZSwg
bV9jb250ZXh0Lm1vZGUpOworICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbldpZHRo
OgorICAgICAgICByZXR1cm4gY29uc3VtZVRleHREZWNvcmF0aW9uVGhpY2tuZXNzKG1fcmFuZ2Us
IG1fY29udGV4dC5tb2RlKTsKICAgICBjYXNlIENTU1Byb3BlcnR5VmVydGljYWxBbGlnbjoKICAg
ICAgICAgcmV0dXJuIGNvbnN1bWVWZXJ0aWNhbEFsaWduKG1fcmFuZ2UsIG1fY29udGV4dC5tb2Rl
KTsKICAgICBjYXNlIENTU1Byb3BlcnR5U2hhcGVPdXRzaWRlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCBkZDI0MmU3NmQzZTgxMDljYjg5MDc4
NTc5YjJjOGFiNDFiZDg3ZTUwLi4yNmIxZDk2YmM2ZTQwNDc3NGM1N2RjYzBiNjRiMjg4NGM1YTIy
MjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApA
QCAtMzc1LDYgKzM3NSw4IEBAIHB1YmxpYzoKICAgICBUZXh0RGVjb3JhdGlvblN0eWxlIHRleHRE
ZWNvcmF0aW9uU3R5bGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0RGVjb3JhdGlv
blN0eWxlPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50ZXh0RGVjb3JhdGlvblN0eWxlKTsgfQog
ICAgIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvblNraXA+IHRleHREZWNvcmF0aW9uU2tpcCgpIGNv
bnN0IHsgcmV0dXJuIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvblNraXA+Ojpmcm9tUmF3KG1fcmFy
ZUluaGVyaXRlZERhdGEtPnRleHREZWNvcmF0aW9uU2tpcCk7IH0KICAgICBPcHRpb25TZXQ8VGV4
dFVuZGVybGluZVBvc2l0aW9uPiB0ZXh0VW5kZXJsaW5lUG9zaXRpb24oKSBjb25zdCB7IHJldHVy
biBPcHRpb25TZXQ8VGV4dFVuZGVybGluZVBvc2l0aW9uPjo6ZnJvbVJhdyhtX3JhcmVJbmhlcml0
ZWREYXRhLT50ZXh0VW5kZXJsaW5lUG9zaXRpb24pOyB9CisgICAgVGV4dERlY29yYXRpb25PZmZz
ZXQgdGV4dERlY29yYXRpb25PZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3JhcmVJbmhlcml0ZWRE
YXRhLT50ZXh0RGVjb3JhdGlvbk9mZnNldDsgfQorICAgIFRleHREZWNvcmF0aW9uVGhpY2tuZXNz
IHRleHREZWNvcmF0aW9uVGhpY2tuZXNzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVk
RGF0YS0+dGV4dERlY29yYXRpb25UaGlja25lc3M7IH0KIAogI2lmIEVOQUJMRShDU1MzX1RFWFQp
CiAgICAgVGV4dEluZGVudExpbmUgdGV4dEluZGVudExpbmUoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxUZXh0SW5kZW50TGluZT4obV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEluZGVudExp
bmUpOyB9CkBAIC05MjQsNiArOTI2LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0VGV4dERlY29y
YXRpb25TdHlsZShUZXh0RGVjb3JhdGlvblN0eWxlIHYpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhl
cml0ZWREYXRhLCB0ZXh0RGVjb3JhdGlvblN0eWxlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odikp
OyB9CiAgICAgdm9pZCBzZXRUZXh0RGVjb3JhdGlvblNraXAoT3B0aW9uU2V0PFRleHREZWNvcmF0
aW9uU2tpcD4gc2tpcCkgeyBTRVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRleHREZWNvcmF0
aW9uU2tpcCwgc2tpcC50b1JhdygpKTsgfQogICAgIHZvaWQgc2V0VGV4dFVuZGVybGluZVBvc2l0
aW9uKE9wdGlvblNldDxUZXh0VW5kZXJsaW5lUG9zaXRpb24+IHYpIHsgU0VUX1ZBUihtX3JhcmVJ
bmhlcml0ZWREYXRhLCB0ZXh0VW5kZXJsaW5lUG9zaXRpb24sIHYudG9SYXcoKSk7IH0KKyAgICB2
b2lkIHNldFRleHREZWNvcmF0aW9uT2Zmc2V0KFRleHREZWNvcmF0aW9uT2Zmc2V0JiYgdGV4dERl
Y29yYXRpb25PZmZzZXQpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0RGVjb3Jh
dGlvbk9mZnNldCwgV1RGTW92ZSh0ZXh0RGVjb3JhdGlvbk9mZnNldCkpOyB9CisgICAgdm9pZCBz
ZXRUZXh0RGVjb3JhdGlvblRoaWNrbmVzcyhUZXh0RGVjb3JhdGlvblRoaWNrbmVzcyYmIHRleHRE
ZWNvcmF0aW9uVGhpY2tuZXNzKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4dERl
Y29yYXRpb25UaGlja25lc3MsIFdURk1vdmUodGV4dERlY29yYXRpb25UaGlja25lc3MpKTsgfQog
ICAgIHZvaWQgc2V0RGlyZWN0aW9uKFRleHREaXJlY3Rpb24gdikgeyBtX2luaGVyaXRlZEZsYWdz
LmRpcmVjdGlvbiA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPih2KTsgfQogICAgIHZvaWQgc2V0SGFz
RXhwbGljaXRseVNldERpcmVjdGlvbihib29sIHYpIHsgbV9ub25Jbmhlcml0ZWRGbGFncy5oYXNF
eHBsaWNpdGx5U2V0RGlyZWN0aW9uID0gdjsgfQogICAgIHZvaWQgc2V0TGluZUhlaWdodChMZW5n
dGgmJik7CkBAIC0xNDg1LDYgKzE0ODksOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFRleHREZWNv
cmF0aW9uU3R5bGUgaW5pdGlhbFRleHREZWNvcmF0aW9uU3R5bGUoKSB7IHJldHVybiBUZXh0RGVj
b3JhdGlvblN0eWxlOjpTb2xpZDsgfQogICAgIHN0YXRpYyBPcHRpb25TZXQ8VGV4dERlY29yYXRp
b25Ta2lwPiBpbml0aWFsVGV4dERlY29yYXRpb25Ta2lwKCkgeyByZXR1cm4gVGV4dERlY29yYXRp
b25Ta2lwOjpBdXRvOyB9CiAgICAgc3RhdGljIE9wdGlvblNldDxUZXh0VW5kZXJsaW5lUG9zaXRp
b24+IGluaXRpYWxUZXh0VW5kZXJsaW5lUG9zaXRpb24oKSB7IHJldHVybiBUZXh0VW5kZXJsaW5l
UG9zaXRpb246OkF1dG87IH0KKyAgICBzdGF0aWMgVGV4dERlY29yYXRpb25PZmZzZXQgaW5pdGlh
bFRleHREZWNvcmF0aW9uT2Zmc2V0KCkgeyByZXR1cm4gVGV4dERlY29yYXRpb25PZmZzZXQ6OmNy
ZWF0ZVdpdGhBdXRvKCk7IH0KKyAgICBzdGF0aWMgVGV4dERlY29yYXRpb25UaGlja25lc3MgaW5p
dGlhbFRleHREZWNvcmF0aW9uVGhpY2tuZXNzKCkgeyByZXR1cm4gVGV4dERlY29yYXRpb25UaGlj
a25lc3M6OmNyZWF0ZVdpdGhBdXRvKCk7IH0KICAgICBzdGF0aWMgZmxvYXQgaW5pdGlhbFpvb20o
KSB7IHJldHVybiAxLjBmOyB9CiAgICAgc3RhdGljIFRleHRab29tIGluaXRpYWxUZXh0Wm9vbSgp
IHsgcmV0dXJuIFRleHRab29tOjpOb3JtYWw7IH0KICAgICBzdGF0aWMgZmxvYXQgaW5pdGlhbE91
dGxpbmVPZmZzZXQoKSB7IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAKaW5kZXggMmFhZGEx
YzI3MGEzOWY4ZmFhZDE4NTUyMDBmYmMxNjA0NmI4OGUwNi4uNzUwYWQ4OTNmOWM1MGNhOTJjNGY1
ODcxNTJlYjc0NjIzNmIyNzJkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmNwcApAQCAtNDUsNiArNDUsOCBA
QCBzdHJ1Y3QgR3JlYXRlclRoYW5PclNhbWVTaXplQXNTdHlsZVJhcmVJbmhlcml0ZWREYXRhIDog
cHVibGljIFJlZkNvdW50ZWQ8R3JlYXRlcgogICAgIHZvaWQqIHJlZlB0cnNbM107CiAgICAgTGVu
Z3RoIGxlbmd0aHNbMl07CiAgICAgZmxvYXQgc2Vjb25kRmxvYXQ7CisgICAgVGV4dERlY29yYXRp
b25PZmZzZXQgb2Zmc2V0OworICAgIFRleHREZWNvcmF0aW9uVGhpY2tuZXNzIHRoaWNrbmVzczsK
ICAgICB1bnNpZ25lZCBiaXRmaWVsZHNbNF07CiAgICAgc2hvcnQgcGFnZWRNZWRpYVNob3J0c1sy
XTsKICAgICB1bnNpZ25lZCB1bnNpZ25lZHNbMV07CkBAIC03NSw2ICs3Nyw4IEBAIFN0eWxlUmFy
ZUluaGVyaXRlZERhdGE6OlN0eWxlUmFyZUluaGVyaXRlZERhdGEoKQogICAgICwgdGV4dFN0cm9r
ZVdpZHRoKFJlbmRlclN0eWxlOjppbml0aWFsVGV4dFN0cm9rZVdpZHRoKCkpCiAgICAgLCBpbmRl
bnQoUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0SW5kZW50KCkpCiAgICAgLCBlZmZlY3RpdmVab29t
KFJlbmRlclN0eWxlOjppbml0aWFsWm9vbSgpKQorICAgICwgdGV4dERlY29yYXRpb25PZmZzZXQo
UmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RGVjb3JhdGlvbk9mZnNldCgpKQorICAgICwgdGV4dERl
Y29yYXRpb25UaGlja25lc3MoUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RGVjb3JhdGlvblRoaWNr
bmVzcygpKQogICAgICwgY3VzdG9tUHJvcGVydGllcyhTdHlsZUN1c3RvbVByb3BlcnR5RGF0YTo6
Y3JlYXRlKCkpCiAgICAgLCB3aWRvd3MoUmVuZGVyU3R5bGU6OmluaXRpYWxXaWRvd3MoKSkKICAg
ICAsIG9ycGhhbnMoUmVuZGVyU3R5bGU6OmluaXRpYWxPcnBoYW5zKCkpCkBAIC0xNjgsNiArMTcy
LDggQEAgaW5saW5lIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6OlN0eWxlUmFyZUluaGVyaXRlZERh
dGEoY29uc3QgU3R5bGVSYXJlSW5oZXJpdGVkRGEKICAgICAsIGN1cnNvckRhdGEoby5jdXJzb3JE
YXRhKQogICAgICwgaW5kZW50KG8uaW5kZW50KQogICAgICwgZWZmZWN0aXZlWm9vbShvLmVmZmVj
dGl2ZVpvb20pCisgICAgLCB0ZXh0RGVjb3JhdGlvbk9mZnNldChvLnRleHREZWNvcmF0aW9uT2Zm
c2V0KQorICAgICwgdGV4dERlY29yYXRpb25UaGlja25lc3Moby50ZXh0RGVjb3JhdGlvblRoaWNr
bmVzcykKICAgICAsIGN1c3RvbVByb3BlcnRpZXMoby5jdXN0b21Qcm9wZXJ0aWVzKQogICAgICwg
d2lkb3dzKG8ud2lkb3dzKQogICAgICwgb3JwaGFucyhvLm9ycGhhbnMpCkBAIC0yNzMsNiArMjc5
LDggQEAgYm9vbCBTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09KGNvbnN0IFN0eWxl
UmFyZUluaGVyaXRlZERhdGEmIG8pIGNvbnN0CiAgICAgICAgICYmIGFyZVBvaW50aW5nVG9FcXVh
bERhdGEoY3Vyc29yRGF0YSwgby5jdXJzb3JEYXRhKQogICAgICAgICAmJiBpbmRlbnQgPT0gby5p
bmRlbnQKICAgICAgICAgJiYgZWZmZWN0aXZlWm9vbSA9PSBvLmVmZmVjdGl2ZVpvb20KKyAgICAg
ICAgJiYgdGV4dERlY29yYXRpb25PZmZzZXQgPT0gby50ZXh0RGVjb3JhdGlvbk9mZnNldAorICAg
ICAgICAmJiB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcyA9PSBvLnRleHREZWNvcmF0aW9uVGhpY2tu
ZXNzCiAgICAgICAgICYmIHdpZG93cyA9PSBvLndpZG93cwogICAgICAgICAmJiBvcnBoYW5zID09
IG8ub3JwaGFucwogICAgICAgICAmJiBoYXNBdXRvV2lkb3dzID09IG8uaGFzQXV0b1dpZG93cwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVy
aXRlZERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhl
cml0ZWREYXRhLmgKaW5kZXggYjgzYThjMGFjODFjODA2ZGQxNmI3ZGZlMmJhZDgwYjgzM2Q5ZjJj
NC4uODAyMWQ3ZjU3NDMxMjI1ZTM0Y2IzNDk3NTczOGNhNDg2MDNjOTM0ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0
YS5oCkBAIC0yOCw2ICsyOCw4IEBACiAjaW5jbHVkZSAiRGF0YVJlZi5oIgogI2luY2x1ZGUgIkxl
bmd0aC5oIgogI2luY2x1ZGUgIlN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmgiCisjaW5jbHVkZSAi
VGV4dERlY29yYXRpb25PZmZzZXQuaCIKKyNpbmNsdWRlICJUZXh0RGVjb3JhdGlvblRoaWNrbmVz
cy5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRv
bWljU3RyaW5nLmg+CiAKQEAgLTc5LDYgKzgxLDkgQEAgcHVibGljOgogICAgIFJlZlB0cjxDdXJz
b3JMaXN0PiBjdXJzb3JEYXRhOwogICAgIExlbmd0aCBpbmRlbnQ7CiAgICAgZmxvYXQgZWZmZWN0
aXZlWm9vbTsKKworICAgIFRleHREZWNvcmF0aW9uT2Zmc2V0IHRleHREZWNvcmF0aW9uT2Zmc2V0
OworICAgIFRleHREZWNvcmF0aW9uVGhpY2tuZXNzIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzOwog
ICAgIAogICAgIExlbmd0aCB3b3JkU3BhY2luZzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1RleHREZWNvcmF0aW9uT2Zmc2V0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvVGV4dERlY29yYXRpb25PZmZzZXQuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDVi
YTBiNDhmNDQ3MzQzZmZmYjhkODU3MGY1YTYzNjYwY2NmOWU1Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1RleHREZWNvcmF0aW9uT2Zmc2V0LmgKQEAg
LTAsMCArMSwxMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkxl
bmd0aC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFRleHREZWNvcmF0aW9uT2Zm
c2V0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgVGV4dERlY29yYXRpb25PZmZzZXQgY3JlYXRlV2l0
aEF1dG8oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFRleHREZWNvcmF0aW9uT2Zmc2V0KFR5cGU6
OkF1dG8pOworICAgIH0KKyAgICBzdGF0aWMgVGV4dERlY29yYXRpb25PZmZzZXQgY3JlYXRlRnJv
bUZvbnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFRleHREZWNvcmF0aW9uT2Zmc2V0KFR5cGU6
OkZyb21Gb250KTsKKyAgICB9CisgICAgc3RhdGljIFRleHREZWNvcmF0aW9uT2Zmc2V0IGNyZWF0
ZVdpdGhMZW5ndGgoZmxvYXQgbGVuZ3RoKQorICAgIHsKKyAgICAgICAgVGV4dERlY29yYXRpb25P
ZmZzZXQgcmVzdWx0KFR5cGU6Okxlbmd0aCk7CisgICAgICAgIHJlc3VsdC5zZXRMZW5ndGhWYWx1
ZShsZW5ndGgpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGJvb2wgaXNB
dXRvKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3R5cGUgPT0gVHlwZTo6QXV0bzsK
KyAgICB9CisKKyAgICBib29sIGlzRnJvbUZvbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fdHlwZSA9PSBUeXBlOjpGcm9tRm9udDsKKyAgICB9CisKKyAgICBib29sIGlzTGVuZ3Ro
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3R5cGUgPT0gVHlwZTo6TGVuZ3RoOwor
ICAgIH0KKworICAgIHZvaWQgc2V0TGVuZ3RoVmFsdWUoZmxvYXQgbGVuZ3RoKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKGlzTGVuZ3RoKCkpOworICAgICAgICBtX2xlbmd0aCA9IGxlbmd0aDsKKyAg
ICB9CisKKyAgICBmbG9hdCBsZW5ndGhWYWx1ZSgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NF
UlQoaXNMZW5ndGgoKSk7CisgICAgICAgIHJldHVybiBtX2xlbmd0aDsKKyAgICB9CisKKyAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgVGV4dERlY29yYXRpb25PZmZzZXQmIG90aGVyKSBjb25zdAor
ICAgIHsKKyAgICAgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICAgICAgY2FzZSBUeXBlOjpBdXRv
OgorICAgICAgICBjYXNlIFR5cGU6OkZyb21Gb250OgorICAgICAgICAgICAgcmV0dXJuIG1fdHlw
ZSA9PSBvdGhlci5tX3R5cGU7CisgICAgICAgIGNhc2UgVHlwZTo6TGVuZ3RoOgorICAgICAgICAg
ICAgcmV0dXJuIG1fdHlwZSA9PSBvdGhlci5tX3R5cGUgJiYgbV9sZW5ndGggPT0gb3RoZXIubV9s
ZW5ndGg7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUZXh0RGVj
b3JhdGlvbk9mZnNldCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gISgqdGhp
cyA9PSBvdGhlcik7CisgICAgfQorCitwcml2YXRlOgorICAgIGVudW0gY2xhc3MgVHlwZSB7Cisg
ICAgICAgIEF1dG8sCisgICAgICAgIEZyb21Gb250LAorICAgICAgICBMZW5ndGgKKyAgICB9Owor
CisgICAgVGV4dERlY29yYXRpb25PZmZzZXQoVHlwZSB0eXBlKQorICAgICAgICA6IG1fdHlwZSh0
eXBlKQorICAgIHsKKyAgICB9CisKKyAgICBUeXBlIG1fdHlwZTsKKyAgICBmbG9hdCBtX2xlbmd0
aDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcy5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1RleHREZWNvcmF0aW9uVGhpY2tuZXNzLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uN2QwMmU2ODVkNjU0Yzk5ZWVlMDg0Zjg3Y2RlZTRhODAzNTE1NTE3YwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9UZXh0RGVjb3JhdGlvblRoaWNr
bmVzcy5oCkBAIC0wLDAgKzEsMTEwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJMZW5ndGguaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBUZXh0RGVj
b3JhdGlvblRoaWNrbmVzcyB7CitwdWJsaWM6CisgICAgc3RhdGljIFRleHREZWNvcmF0aW9uVGhp
Y2tuZXNzIGNyZWF0ZVdpdGhBdXRvKCkKKyAgICB7CisgICAgICAgIHJldHVybiBUZXh0RGVjb3Jh
dGlvblRoaWNrbmVzcyhUeXBlOjpBdXRvKTsKKyAgICB9CisgICAgc3RhdGljIFRleHREZWNvcmF0
aW9uVGhpY2tuZXNzIGNyZWF0ZUZyb21Gb250KCkKKyAgICB7CisgICAgICAgIHJldHVybiBUZXh0
RGVjb3JhdGlvblRoaWNrbmVzcyhUeXBlOjpGcm9tRm9udCk7CisgICAgfQorICAgIHN0YXRpYyBU
ZXh0RGVjb3JhdGlvblRoaWNrbmVzcyBjcmVhdGVXaXRoTGVuZ3RoKGZsb2F0IGxlbmd0aCkKKyAg
ICB7CisgICAgICAgIFRleHREZWNvcmF0aW9uVGhpY2tuZXNzIHJlc3VsdChUeXBlOjpMZW5ndGgp
OworICAgICAgICByZXN1bHQuc2V0TGVuZ3RoVmFsdWUobGVuZ3RoKTsKKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICB9CisKKyAgICBib29sIGlzQXV0bygpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gbV90eXBlID09IFR5cGU6OkF1dG87CisgICAgfQorCisgICAgYm9vbCBpc0Zyb21G
b250KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3R5cGUgPT0gVHlwZTo6RnJvbUZv
bnQ7CisgICAgfQorCisgICAgYm9vbCBpc0xlbmd0aCgpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gbV90eXBlID09IFR5cGU6Okxlbmd0aDsKKyAgICB9CisKKyAgICB2b2lkIHNldExlbmd0
aFZhbHVlKGZsb2F0IGxlbmd0aCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpc0xlbmd0aCgpKTsK
KyAgICAgICAgbV9sZW5ndGggPSBsZW5ndGg7CisgICAgfQorCisgICAgZmxvYXQgbGVuZ3RoVmFs
dWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzTGVuZ3RoKCkpOworICAgICAgICBy
ZXR1cm4gbV9sZW5ndGg7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRleHRE
ZWNvcmF0aW9uVGhpY2tuZXNzJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHN3aXRjaCAo
bV90eXBlKSB7CisgICAgICAgIGNhc2UgVHlwZTo6QXV0bzoKKyAgICAgICAgY2FzZSBUeXBlOjpG
cm9tRm9udDoKKyAgICAgICAgICAgIHJldHVybiBtX3R5cGUgPT0gb3RoZXIubV90eXBlOworICAg
ICAgICBjYXNlIFR5cGU6Okxlbmd0aDoKKyAgICAgICAgICAgIHJldHVybiBtX3R5cGUgPT0gb3Ro
ZXIubV90eXBlICYmIG1fbGVuZ3RoID09IG90aGVyLm1fbGVuZ3RoOworICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgVGV4dERlY29yYXRpb25UaGlja25lc3MmIG90aGVy
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0K
KworcHJpdmF0ZToKKyAgICBlbnVtIGNsYXNzIFR5cGUgeworICAgICAgICBBdXRvLAorICAgICAg
ICBGcm9tRm9udCwKKyAgICAgICAgTGVuZ3RoCisgICAgfTsKKworICAgIFRleHREZWNvcmF0aW9u
VGhpY2tuZXNzKFR5cGUgdHlwZSkKKyAgICAgICAgOiBtX3R5cGUodHlwZSkKKyAgICB7CisgICAg
fQorCisgICAgVHlwZSBtX3R5cGU7CisgICAgZmxvYXQgbV9sZW5ndGg7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NzczMtdGV4dC9j
c3MzLXRleHQtZGVjb3JhdGlvbi90ZXh0LWRlY29yYXRpb24tb2Zmc2V0LXBhcnNlLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2NzczMtdGV4dC9jc3MzLXRleHQtZGVjb3JhdGlvbi90ZXh0LWRlY29y
YXRpb24tb2Zmc2V0LXBhcnNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWRkZDcyYTBlOTA2Y2RiODdmZDg5
OTdiNGYzOTBlMTRkZGRhNDVjZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzMy10ZXh0L2NzczMtdGV4dC1kZWNvcmF0aW9uL3RleHQtZGVjb3JhdGlvbi1vZmZzZXQtcGFy
c2UuaHRtbApAQCAtMCwwICsxLDI1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0idGVzdDEiPjwvZGl2PgorPGRpdiBpZD0idGVz
dDIiIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb24tb2Zmc2V0OiBhdXRvOyI+PC9kaXY+Cis8ZGl2IGlk
PSJ0ZXN0MyIgc3R5bGU9InRleHQtZGVjb3JhdGlvbi1vZmZzZXQ6IGF1dG8gZnJvbS1mb250OyI+
PC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0NCIgc3R5bGU9InRleHQtZGVjb3JhdGlvbi1vZmZzZXQ6IGdh
cmJhZ2U7Ij48L2Rpdj4KKzxkaXYgaWQ9InRlc3Q1IiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uLW9m
ZnNldDogZnJvbS1mb250OyI+PC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0NiIgc3R5bGU9InRleHQtZGVj
b3JhdGlvbi1vZmZzZXQ6IDM3cHg7Ij48L2Rpdj4KKzxkaXYgaWQ9InRlc3Q3IiBzdHlsZT0iZm9u
dC1zaXplOiAxMDBweDsgdGV4dC1kZWNvcmF0aW9uLW9mZnNldDogMmVtOyI+PC9kaXY+Cis8c2Ny
aXB0Pgorc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdDEnKSkuZ2V0UHJvcGVydHlWYWx1ZSgndGV4dC1kZWNv
cmF0aW9uLW9mZnNldCcpIiwgImF1dG8iKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93
LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QyJykpLmdldFBy
b3BlcnR5VmFsdWUoJ3RleHQtZGVjb3JhdGlvbi1vZmZzZXQnKSIsICJhdXRvIik7CitzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCd0ZXN0MycpKS5nZXRQcm9wZXJ0eVZhbHVlKCd0ZXh0LWRlY29yYXRpb24tb2Zmc2V0
JykiLCAiYXV0byIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ3aW5kb3cuZ2V0Q29tcHV0ZWRT
dHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdDQnKSkuZ2V0UHJvcGVydHlWYWx1ZSgn
dGV4dC1kZWNvcmF0aW9uLW9mZnNldCcpIiwgImF1dG8iKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmlu
Zygid2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3Q1
JykpLmdldFByb3BlcnR5VmFsdWUoJ3RleHQtZGVjb3JhdGlvbi1vZmZzZXQnKSIsICJmcm9tLWZv
bnQiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3Q2JykpLmdldFByb3BlcnR5VmFsdWUoJ3RleHQtZGVj
b3JhdGlvbi1vZmZzZXQnKSIsICIzN3B4Iik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRv
dy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0NycpKS5nZXRQ
cm9wZXJ0eVZhbHVlKCd0ZXh0LWRlY29yYXRpb24tb2Zmc2V0JykiLCAiMjAwcHgiKTsKKzwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353253</attachid>
            <date>2018-10-28 03:30:27 -0700</date>
            <delta_ts>2018-10-29 17:10:54 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-190774-20181028103021.patch</filename>
            <type>text/plain</type>
            <size>55698</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MzA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2U4Y2M4YjIzZmQ2ODA4
Mzk1NjhkNzgxNTMwZjQ5Nzk2ODlkZGQ4Mi4uYTdmMWQ1NGU0ODYxYzkzY2NkY2Q4NmFmNjdiNzAy
OTE1ZGRiYTYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE4LTEwLTIwICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
IHRleHQtZGVjb3JhdGlvbi1vZmZzZXQgYW5kIHRleHQtZGVjb3JhdGlvbi13aWR0aAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNzc0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChP
T1BTISkuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0ZXh0RGVjb3JhdGlvbk9mZnNldFRvQ1NT
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6dGV4dERlY29yYXRpb25UaGlja25lc3NUb0NTU1Zh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9y
UHJvcGVydHlpblN0eWxlKToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydGllcy5qc29uOgorICAg
ICAgICAqIGNzcy9DU1NWYWx1ZUtleXdvcmRzLmluOgorICAgICAgICAqIGNzcy9TdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydFRleHREZWNvcmF0aW9uT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydFRleHREZWNvcmF0aW9uVGhpY2tuZXNzKToKKyAgICAgICAg
KiBjc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNv
bnN1bWVUZXh0RGVjb3JhdGlvbk9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lVGV4
dERlY29yYXRpb25UaGlja25lc3MpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJz
ZXI6OnBhcnNlU2luZ2xlVmFsdWUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnRleHREZWNvcmF0aW9uT2Zm
c2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjp0ZXh0RGVjb3JhdGlv
blRoaWNrbmVzcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0VGV4
dERlY29yYXRpb25PZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFRl
eHREZWNvcmF0aW9uVGhpY2tuZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpp
bml0aWFsVGV4dERlY29yYXRpb25PZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OmluaXRpYWxUZXh0RGVjb3JhdGlvblRoaWNrbmVzcyk6CisgICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9UZXh0RGVjb3JhdGlvbk9mZnNldC5jcHA6IEFkZGVkLgorICAgICAg
ICAqIHJlbmRlcmluZy9zdHlsZS9UZXh0RGVjb3JhdGlvbk9mZnNldC5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlRleHREZWNvcmF0aW9uT2Zmc2V0OjpjcmVhdGVXaXRoQXV0byk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvbk9mZnNldDo6Y3JlYXRlRnJvbUZvbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dERlY29yYXRpb25PZmZzZXQ6OmNyZWF0ZVdpdGhMZW5ndGgpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dERlY29yYXRpb25PZmZzZXQ6OmlzQXV0byBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvbk9mZnNldDo6aXNGcm9tRm9udCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvbk9mZnNldDo6aXNMZW5ndGggY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dERlY29yYXRpb25PZmZzZXQ6OnNldExlbmd0aFZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHREZWNvcmF0aW9uT2Zmc2V0OjpsZW5ndGhWYWx1ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvbk9mZnNldDo6b3BlcmF0b3I9
PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvbk9mZnNldDo6b3BlcmF0
b3IhPSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvbk9mZnNldDo6VGV4
dERlY29yYXRpb25PZmZzZXQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9UZXh0RGVjb3Jh
dGlvblRoaWNrbmVzcy5jcHA6IEFkZGVkLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9UZXh0
RGVjb3JhdGlvblRoaWNrbmVzcy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHREZWNv
cmF0aW9uVGhpY2tuZXNzOjpjcmVhdGVXaXRoQXV0byk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
RGVjb3JhdGlvblRoaWNrbmVzczo6Y3JlYXRlRnJvbUZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dERlY29yYXRpb25UaGlja25lc3M6OmNyZWF0ZVdpdGhMZW5ndGgpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dERlY29yYXRpb25UaGlja25lc3M6OmlzQXV0byBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0RGVjb3JhdGlvblRoaWNrbmVzczo6aXNGcm9tRm9udCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvblRoaWNrbmVzczo6aXNMZW5ndGggY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dERlY29yYXRpb25UaGlja25lc3M6OnNldExlbmd0aFZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHREZWNvcmF0aW9uVGhpY2tuZXNzOjpsZW5ndGhWYWx1
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvblRoaWNrbmVzczo6b3Bl
cmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvblRoaWNrbmVz
czo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvblRo
aWNrbmVzczo6VGV4dERlY29yYXRpb25UaGlja25lc3MpOgorCiAyMDE4LTEwLTE5ICBKdXN0aW4g
RmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkdQVV0gQWRkIHN0dWJz
IGZvciBXZWJHUFVTd2FwQ2hhaW4gYW5kIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBkNjUw
MWViODY4YjI1OTRiYjU5NzExMTg3M2JiYTI5MGQwZGEyOTc5Li5jY2Y4MWYyMWUwNzdjZmZkMTIy
ZmNmYWIzODQzZDRlN2EzMGYwNjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02MzEsNiArNjMxLDggQEAKIAkJMUMyNEVFQTUx
QzcyOUNFNDAwODBGOEZDIC8qIEZvbnRGYWNlU2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzI0RUVBMzFDNzI5Q0U0MDA4MEY4RkMgLyogRm9udEZh
Y2VTZXQuaCAqLzsgfTsKIAkJMUMyNEVFQTkxQzcyQTdCNDAwODBGOEZDIC8qIEpTRm9udEZhY2VT
ZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMjRF
RUE3MUM3MkE3QjQwMDgwRjhGQyAvKiBKU0ZvbnRGYWNlU2V0LmggKi87IH07CiAJCTFDNjYyNjEx
MUM2RTdDQTYwMEFCNTI3QyAvKiBGb250RmFjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUM2NjI2MEYxQzZFN0NBNjAwQUI1MjdDIC8qIEZvbnRGYWNl
LmggKi87IH07CisJCTFDNzNBNzEzMjE4NTc1N0UwMDRDQ0VBNSAvKiBUZXh0VW5kZXJsaW5lT2Zm
c2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0I2
QjRGQjIxN0I4Mzk0MDA5M0I5Q0QgLyogVGV4dFVuZGVybGluZU9mZnNldC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTFDNzNBNzE1MjE4NTc1ODcw
MDRDQ0VBNSAvKiBUZXh0RGVjb3JhdGlvblRoaWNrbmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNCNkI0RjgyMTdCODM5MzAwOTNCOUNEIC8qIFRl
eHREZWNvcmF0aW9uVGhpY2tuZXNzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMUM4MUI5NUEwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNv
bnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFDODFCOTU2MEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDb250cm9sbGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUM4MUI5NUMwRTk3
MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUM4MUI5NTgwRTk3MzMwODAwMjY2RTA3IC8qIEluc3Bl
Y3RvckNsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTFDQTE5RTE2MERDMjU1Q0EwMDY1QTk5NCAvKiBFdmVudExvb3AuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQTE5RTE1MERDMjU1Q0EwMDY1
QTk5NCAvKiBFdmVudExvb3AuaCAqLzsgfTsKQEAgLTYzNzcsNiArNjM3OSw4IEBACiAJCTFDQUYz
NDdFMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViU2NyaXB0T2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFDQUYzNDdGMEE2QzQwNTIwMEFCRTA2RSAvKiBXZWJTY3JpcHRPYmplY3QubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJTY3JpcHRPYmplY3Qu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDQUYzNDgwMEE2QzQwNTIwMEFCRTA2
RSAvKiBXZWJTY3JpcHRPYmplY3RQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYlNjcmlwdE9iamVjdFByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMUNCNkI0RjgyMTdCODM5MzAwOTNCOUNEIC8qIFRleHREZWNvcmF0aW9uVGhpY2tuZXNz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFRleHREZWNvcmF0aW9uVGhpY2tuZXNzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTFDQjZCNEZCMjE3QjgzOTQwMDkzQjlDRCAvKiBUZXh0VW5kZXJs
aW5lT2Zmc2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRVbmRlcmxpbmVPZmZzZXQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNDREY1QkIxOTkwMzMyNDAwQkNFQkFEIC8qIFNWR1Rv
T1RGRm9udENvbnZlcnNpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gU1ZHVG9PVEZGb250Q29udmVyc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFDQ0RGNUJDMTk5MDMzMjQwMEJDRUJBRCAvKiBTVkdUb09URkZvbnRDb252ZXJzaW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1RvT1RGRm9udENvbnZlcnNpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNERDQ1RTQwQkE5Qzg0NjAwRjkwMTQ3
IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGgg
PSBEZWJ1Z1JlbGVhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
OTgxOSw5ICsxOTgyMyw3IEBACiAJCQkJRTQyMDUwMTYyMTQxOTAxQjAwNjZFRjNCIC8qIFByb2Nl
c3NXYXJtaW5nLmNwcCAqLywKIAkJCQlFNDIwNTAxNDIxNDE5MDFBMDA2NkVGM0IgLyogUHJvY2Vz
c1dhcm1pbmcuaCAqLywKIAkJCQlDRDlBODdGOTIxNUQ2Q0YzMDA2RjE3QjUgLyogUXVpcmtzLmNw
cCAqLywKLQkJCQlDRDlBODdGMjIxNUQ0M0E2MDA2RjE3QjUgLyogUXVpcmtzLmNwcCAqLywKIAkJ
CQlDRDlBODdGQjIxNUQ2Q0YzMDA2RjE3QjUgLyogUXVpcmtzLmggKi8sCi0JCQkJQ0Q5QTg3RjEy
MTVENDNBNjAwNkYxN0I1IC8qIFF1aXJrcy5oICovLAogCQkJCTQ2Qjk1MThEMjA3RDYzMkEwMEE3
RDJERCAvKiBSZW1vdGVET01XaW5kb3cuY3BwICovLAogCQkJCTQ2Qjk1MThFMjA3RDYzMkEwMEE3
RDJERCAvKiBSZW1vdGVET01XaW5kb3cuaCAqLywKIAkJCQk0NkJDQkJDMzIwODUwMEE3MDA3MTA2
MzggLyogUmVtb3RlRE9NV2luZG93LmlkbCAqLywKQEAgLTI0NTM3LDcgKzI0NTM5LDkgQEAKIAkJ
CQlCQzIyNzQ3NTBFODM2NkUyMDBFN0Y5NzUgLyogU1ZHUmVuZGVyU3R5bGUuaCAqLywKIAkJCQlC
QzIyNzQ3NjBFODM2NkUyMDBFN0Y5NzUgLyogU1ZHUmVuZGVyU3R5bGVEZWZzLmNwcCAqLywKIAkJ
CQlCQzIyNzQ3NzBFODM2NkUyMDBFN0Y5NzUgLyogU1ZHUmVuZGVyU3R5bGVEZWZzLmggKi8sCisJ
CQkJMUNCNkI0RjgyMTdCODM5MzAwOTNCOUNEIC8qIFRleHREZWNvcmF0aW9uVGhpY2tuZXNzLmgg
Ki8sCiAJCQkJNDQ4QjFCNzgwRjNBMkY5QjAwNDdBOUUyIC8qIFRleHRTaXplQWRqdXN0bWVudC5o
ICovLAorCQkJCTFDQjZCNEZCMjE3QjgzOTQwMDkzQjlDRCAvKiBUZXh0VW5kZXJsaW5lT2Zmc2V0
LmggKi8sCiAJCQkJMEYxNUVENTkxQjdFQzdDNTAwRURERkVCIC8qIFdpbGxDaGFuZ2VEYXRhLmNw
cCAqLywKIAkJCQkwRjE1RUQ1QTFCN0VDN0M1MDBFRERGRUIgLyogV2lsbENoYW5nZURhdGEuaCAq
LywKIAkJCSk7CkBAIC0zMTE4MSw2ICszMTE4NSw3IEBACiAJCQkJOTM0M0NCODIxMkYyNUU1MTAw
MzNDNUVFIC8qIFRleHRDb2RlY1VURjguaCBpbiBIZWFkZXJzICovLAogCQkJCTE0MkI5N0NBMTMx
Mzg5NDMwMDhCRUY0QiAvKiBUZXh0Q29udHJvbElubmVyRWxlbWVudHMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTU4MkRFMzI1MUMzMEM4NTQwMEJFMDJBOCAvKiBUZXh0RGVjb3JhdGlvblBhaW50ZXIu
aCBpbiBIZWFkZXJzICovLAorCQkJCTFDNzNBNzE1MjE4NTc1ODcwMDRDQ0VBNSAvKiBUZXh0RGVj
b3JhdGlvblRoaWNrbmVzcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdCQzg0QjQxMjM3MTE4MDAw
MEM2MTYxIC8qIFRleHREb2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdCQzg0ODQxMjM2
RkQ5MzAwMEM2MTYxIC8qIFRleHREb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QjJDM0RBNDcwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRFbmNvZGluZy5oIGluIEhlYWRlcnMgKi8s
CkBAIC0zMTIxMSw2ICszMTIxNiw3IEBACiAJCQkJMDc2OTcwODcxNDYzQUQ4NzAwRjUwMkNGIC8q
IFRleHRUcmFja0xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUIxQUQ0RTc0MTNBMTJBNDYwMDg0
NkIyNyAvKiBUZXh0VHJhY2tMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEOEI1QTQ5MTgw
RTEzOEIwMDhCOEU2NSAvKiBUZXh0VHJhY2tNZWRpYVNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMUM3M0E3MTMyMTg1NzU3RTAwNENDRUE1IC8qIFRleHRVbmRlcmxpbmVPZmZzZXQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTI5RkFGNEI2MTk1QUIwODkwMEE1MjJEQyAvKiBUZXh0VW5kb0luc2Vy
dGlvbk1hcmt1cE1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDk4NzcwRjExMjQyQzUzNTAwMjIy
NkJBIC8qIFRleHR1cmUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEOUQ4Mjc2MUM3QUU1MzUwMDZG
RjA2NiAvKiBUZXh0dXJlQ2FjaGVDVi5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IGM3NzY0OGVl
MWQ4MzQ5ZmIzNmIxMDcxNTQ1YzM4MWZhNzMyNzA5YzguLjdlMTEzZTUxZjM3ZjhkYzZkODU3MjBk
YzY5OTcwMWMyNDhlNzI0MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0yMTUsNyArMjE1LDcgQEAgc3RhdGljIGNvbnN0
IENTU1Byb3BlcnR5SUQgY29tcHV0ZWRQcm9wZXJ0aWVzW10gPSB7CiAgICAgQ1NTUHJvcGVydHlX
ZWJraXRUZXh0RGVjb3JhdGlvblN0eWxlLAogICAgIENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29y
YXRpb25Db2xvciwKICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uU2tpcCwKLSAg
ICBDU1NQcm9wZXJ0eVdlYmtpdFRleHRVbmRlcmxpbmVQb3NpdGlvbiwKKyAgICBDU1NQcm9wZXJ0
eVRleHRVbmRlcmxpbmVQb3NpdGlvbiwKICAgICBDU1NQcm9wZXJ0eVRleHRJbmRlbnQsCiAgICAg
Q1NTUHJvcGVydHlUZXh0UmVuZGVyaW5nLAogICAgIENTU1Byb3BlcnR5VGV4dFNoYWRvdywKQEAg
LTE4MDIsNiArMTgwMiwyNCBAQCBzdGF0aWMgUmVmPENTU1ZhbHVlPiByZW5kZXJUZXh0RGVjb3Jh
dGlvblNraXBGbGFnc1RvQ1NTVmFsdWUoT3B0aW9uU2V0PFRleHREZWNvcgogICAgIHJldHVybiBD
U1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUV4cGxpY2l0SW5pdGlhbFZhbHVlKCk7CiB9
CiAKK3N0YXRpYyBSZWY8Q1NTVmFsdWU+IHRleHRVbmRlcmxpbmVPZmZzZXRUb0NTU1ZhbHVlKGNv
bnN0IFRleHRVbmRlcmxpbmVPZmZzZXQmIHRleHRVbmRlcmxpbmVPZmZzZXQpCit7CisgICAgaWYg
KHRleHRVbmRlcmxpbmVPZmZzZXQuaXNBdXRvKCkpCisgICAgICAgIHJldHVybiBDU1NWYWx1ZVBv
b2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUF1dG8pOworICAg
IEFTU0VSVCh0ZXh0VW5kZXJsaW5lT2Zmc2V0LmlzTGVuZ3RoKCkpOworICAgIHJldHVybiBDU1NW
YWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKHRleHRVbmRlcmxpbmVPZmZzZXQubGVu
Z3RoVmFsdWUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7Cit9CisKK3N0YXRpYyBSZWY8
Q1NTVmFsdWU+IHRleHREZWNvcmF0aW9uVGhpY2tuZXNzVG9DU1NWYWx1ZShjb25zdCBUZXh0RGVj
b3JhdGlvblRoaWNrbmVzcyYgdGV4dERlY29yYXRpb25UaGlja25lc3MpCit7CisgICAgaWYgKHRl
eHREZWNvcmF0aW9uVGhpY2tuZXNzLmlzQXV0bygpKQorICAgICAgICByZXR1cm4gQ1NTVmFsdWVQ
b29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVBdXRvKTsKKyAg
ICBpZiAodGV4dERlY29yYXRpb25UaGlja25lc3MuaXNGcm9tRm9udCgpKQorICAgICAgICByZXR1
cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFs
dWVGcm9tRm9udCk7CisgICAgQVNTRVJUKHRleHREZWNvcmF0aW9uVGhpY2tuZXNzLmlzTGVuZ3Ro
KCkpOworICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZhbHVlKHRl
eHREZWNvcmF0aW9uVGhpY2tuZXNzLmxlbmd0aFZhbHVlKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfUFgpOworfQorCiBzdGF0aWMgUmVmPENTU1ZhbHVlPiByZW5kZXJFbXBoYXNpc1Bvc2l0aW9u
RmxhZ3NUb0NTU1ZhbHVlKE9wdGlvblNldDxUZXh0RW1waGFzaXNQb3NpdGlvbj4gdGV4dEVtcGhh
c2lzUG9zaXRpb24pCiB7CiAgICAgQVNTRVJUKCEoKHRleHRFbXBoYXNpc1Bvc2l0aW9uICYgVGV4
dEVtcGhhc2lzUG9zaXRpb246Ok92ZXIpICYmICh0ZXh0RW1waGFzaXNQb3NpdGlvbiAmIFRleHRF
bXBoYXNpc1Bvc2l0aW9uOjpVbmRlcikpKTsKQEAgLTMzMjksOCArMzM0NywxMiBAQCBSZWZQdHI8
Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yUHJvcGVydHlpblN0eWxl
KGNvbnN0IFJlbmRlclN0eQogICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRDb2xvck9yVmFsaWRD
b2xvcigmc3R5bGUsIHN0eWxlLnRleHREZWNvcmF0aW9uQ29sb3IoKSk7CiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvblNraXA6CiAgICAgICAgICAgICByZXR1cm4g
cmVuZGVyVGV4dERlY29yYXRpb25Ta2lwRmxhZ3NUb0NTU1ZhbHVlKHN0eWxlLnRleHREZWNvcmF0
aW9uU2tpcCgpKTsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRVbmRlcmxpbmVQ
b3NpdGlvbjoKKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRVbmRlcmxpbmVQb3NpdGlvbjoK
ICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUudGV4dFVu
ZGVybGluZVBvc2l0aW9uKCkpOworICAgICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGlu
ZU9mZnNldDoKKyAgICAgICAgICAgIHJldHVybiB0ZXh0VW5kZXJsaW5lT2Zmc2V0VG9DU1NWYWx1
ZShzdHlsZS50ZXh0VW5kZXJsaW5lT2Zmc2V0KCkpOworICAgICAgICBjYXNlIENTU1Byb3BlcnR5
VGV4dERlY29yYXRpb25UaGlja25lc3M6CisgICAgICAgICAgICByZXR1cm4gdGV4dERlY29yYXRp
b25UaGlja25lc3NUb0NTU1ZhbHVlKHN0eWxlLnRleHREZWNvcmF0aW9uVGhpY2tuZXNzKCkpOwog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3Q6CiAg
ICAgICAgICAgICByZXR1cm4gcmVuZGVyVGV4dERlY29yYXRpb25GbGFnc1RvQ1NTVmFsdWUoc3R5
bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSk7CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRUZXh0RmlsbENvbG9yOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1By
aW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVW
YWx1ZU1hcHBpbmdzLmgKaW5kZXggNzg3NWZkYTdlMGQxMzhhYjlkMWVlYmUyMjcwYmQ4MDEzYmNh
NzY3Ny4uYzk1ZmY2NWE4MzViYTc2NDNlZGI4ZDJiYjI1ZDE2ZjE2YmM2MjExNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCkBAIC0yNjM2LDQy
ICsyNjM2LDQxIEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRv
ciBUZXh0RGVjb3JhdGlvblN0eWxlKCkgY29uc3QKICAgICByZXR1cm4gVGV4dERlY29yYXRpb25T
dHlsZTo6U29saWQ7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NQcmltaXRpdmVWYWx1ZShPcHRpb25TZXQ8VGV4dFVuZGVybGluZVBvc2l0aW9uPiBlKQordGVt
cGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKFRleHRV
bmRlcmxpbmVQb3NpdGlvbiBwb3NpdGlvbikKICAgICA6IENTU1ZhbHVlKFByaW1pdGl2ZUNsYXNz
KQogewogICAgIG1fcHJpbWl0aXZlVW5pdFR5cGUgPSBDU1NfVkFMVUVfSUQ7Ci0gICAgc3dpdGNo
IChzdGF0aWNfY2FzdDxUZXh0VW5kZXJsaW5lUG9zaXRpb24+KGUudG9SYXcoKSkpIHsKKyAgICBz
d2l0Y2ggKHBvc2l0aW9uKSB7CiAgICAgY2FzZSBUZXh0VW5kZXJsaW5lUG9zaXRpb246OkF1dG86
CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQXV0bzsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBUZXh0VW5kZXJsaW5lUG9zaXRpb246OkFscGhhYmV0aWM6Ci0gICAgICAgIG1f
dmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQWxwaGFiZXRpYzsKLSAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBUZXh0VW5kZXJsaW5lUG9zaXRpb246OlVuZGVyOgogICAgICAgICBtX3ZhbHVlLnZhbHVl
SUQgPSBDU1NWYWx1ZVVuZGVyOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFRleHRVbmRlcmxp
bmVQb3NpdGlvbjo6RnJvbUZvbnQ6CisgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVl
RnJvbUZvbnQ7CisgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgc3VwcG9ydCBmb3IgJ3VuZGVyIGxlZnQnIGFuZCAndW5kZXIgcmlnaHQnIHZhbHVlcy4KIH0K
IAotdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9yIE9wdGlvblNl
dDxUZXh0VW5kZXJsaW5lUG9zaXRpb24+KCkgY29uc3QKK3RlbXBsYXRlPD4gaW5saW5lIENTU1By
aW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBUZXh0VW5kZXJsaW5lUG9zaXRpb24oKSBjb25zdAogewog
ICAgIEFTU0VSVChpc1ZhbHVlSUQoKSk7CiAKICAgICBzd2l0Y2ggKG1fdmFsdWUudmFsdWVJRCkg
ewogICAgIGNhc2UgQ1NTVmFsdWVBdXRvOgogICAgICAgICByZXR1cm4gVGV4dFVuZGVybGluZVBv
c2l0aW9uOjpBdXRvOwotICAgIGNhc2UgQ1NTVmFsdWVBbHBoYWJldGljOgotICAgICAgICByZXR1
cm4gVGV4dFVuZGVybGluZVBvc2l0aW9uOjpBbHBoYWJldGljOwogICAgIGNhc2UgQ1NTVmFsdWVV
bmRlcjoKICAgICAgICAgcmV0dXJuIFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6VW5kZXI7CisgICAg
Y2FzZSBDU1NWYWx1ZUZyb21Gb250OgorICAgICAgICByZXR1cm4gVGV4dFVuZGVybGluZVBvc2l0
aW9uOjpGcm9tRm9udDsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CiAKICAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IHN1cHBvcnQgZm9yICd1bmRlciBsZWZ0JyBhbmQgJ3VuZGVy
IHJpZ2h0JyB2YWx1ZXMuCi0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4g
VGV4dFVuZGVybGluZVBvc2l0aW9uOjpBdXRvOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1Byb3BlcnRpZXMuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0
aWVzLmpzb24KaW5kZXggYmM2YjU3OGI4ZGUwYzQ1MjBmOGE5MzU5NTc1MTUwYTkwZjc1ZGU1ZS4u
NjU2NTEwYzJhMmE4MTYwOTdmNzNkZTEwY2EzYmI3N2Q3NzMwODI3OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnRpZXMuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUHJvcGVydGllcy5qc29uCkBAIC01OTI2LDE3ICs1OTI2LDQwIEBACiAgICAgICAgICAg
ICAgICAgInVybCI6ICJodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXRleHQtZGVjb3ItMy8jdGV4
dC1kZWNvcmF0aW9uLXNraXAiCiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAgICAgICIt
d2Via2l0LXRleHQtdW5kZXJsaW5lLXBvc2l0aW9uIjogeworICAgICAgICAidGV4dC11bmRlcmxp
bmUtcG9zaXRpb24iOiB7CisgICAgICAgICAgICAiaW5oZXJpdGVkIjogdHJ1ZSwKKyAgICAgICAg
ICAgICJzdGF0dXMiOiB7CisgICAgICAgICAgICAgICAgInN0YXR1cyI6ICJleHBlcmltZW50YWwi
CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInNwZWNpZmljYXRpb24iOiB7CisgICAgICAg
ICAgICAgICAgImNhdGVnb3J5IjogImNzcy10ZXh0LWRlY29yIiwKKyAgICAgICAgICAgICAgICAi
dXJsIjogImh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtdGV4dC1kZWNvci0zLyN0ZXh0LXVuZGVy
bGluZS1wb3NpdGlvbi1wcm9wZXJ0eSIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAg
ICAgInRleHQtdW5kZXJsaW5lLW9mZnNldCI6IHsKKyAgICAgICAgICAgICJpbmhlcml0ZWQiOiB0
cnVlLAorICAgICAgICAgICAgImNvZGVnZW4tcHJvcGVydGllcyI6IHsKKyAgICAgICAgICAgICAg
ICAiY29udmVydGVyIjogIlRleHRVbmRlcmxpbmVPZmZzZXQiCisgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgInN0YXR1cyI6IHsKKyAgICAgICAgICAgICAgICAic3RhdHVzIjogImV4cGVyaW1l
bnRhbCIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAic3BlY2lmaWNhdGlvbiI6IHsKKyAg
ICAgICAgICAgICAgICAiY2F0ZWdvcnkiOiAiY3NzLXRleHQtZGVjb3IiLAorICAgICAgICAgICAg
ICAgICJ1cmwiOiAiaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy10ZXh0LWRlY29yLTQvI3VuZGVy
bGluZS1vZmZzZXQiCisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJ0ZXh0LWRl
Y29yYXRpb24tdGhpY2tuZXNzIjogewogICAgICAgICAgICAgImluaGVyaXRlZCI6IHRydWUsCiAg
ICAgICAgICAgICAiY29kZWdlbi1wcm9wZXJ0aWVzIjogewotICAgICAgICAgICAgICAgICJjb252
ZXJ0ZXIiOiAiVGV4dFVuZGVybGluZVBvc2l0aW9uIgorICAgICAgICAgICAgICAgICJjb252ZXJ0
ZXIiOiAiVGV4dERlY29yYXRpb25UaGlja25lc3MiCiAgICAgICAgICAgICB9LAogICAgICAgICAg
ICAgInN0YXR1cyI6IHsKICAgICAgICAgICAgICAgICAic3RhdHVzIjogImV4cGVyaW1lbnRhbCIK
ICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAic3BlY2lmaWNhdGlvbiI6IHsKICAgICAgICAg
ICAgICAgICAiY2F0ZWdvcnkiOiAiY3NzLXRleHQtZGVjb3IiLAotICAgICAgICAgICAgICAgICJ1
cmwiOiAiaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy10ZXh0LWRlY29yLTMvI3RleHQtdW5kZXJs
aW5lLXBvc2l0aW9uIgorICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly93d3cudzMub3Jn
L1RSL2Nzcy10ZXh0LWRlY29yLTQvI3RleHQtZGVjb3JhdGlvbi10aGlja25lc3MiCiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0sCiAgICAgICAgICItd2Via2l0LXRleHQtZGVjb3JhdGlvbnMtaW4t
ZWZmZWN0IjogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29y
ZHMuaW4gYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbgppbmRleCA0NjMy
MzYzZjk0MTI5N2E2MTBiZjZiNjc3ODBhODc0ZmM5NTAwYTM2Li45MGY5MTJhY2ViNTVhMWFmZGJh
YWIwOTViNjJmYmM1NGFiYjNkMjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
VmFsdWVLZXl3b3Jkcy5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jk
cy5pbgpAQCAtMTQwMywzICsxNDAzLDYgQEAgc3RhbmRhbG9uZQogbWluaW1hbC11aQogYnJvd3Nl
cgogI2VuZGlmCisKKy8vIHRleHQtZGVjb3JhdGlvbi10aGlja25lc3MsIHRleHQtdW5kZXJsaW5l
LW9mZnNldAorZnJvbS1mb250CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVC
dWlsZGVyQ29udmVydGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVy
dGVyLmgKaW5kZXggMjJhY2JjMjkwMTA2NWI0Y2I3NjdjZTI3ZDQ1ZDlmNmE5NTBjZTI4Yi4uYTAw
M2EzZjQ5Y2NmZDcxYzMxMmZmNDg1NzZkOWJkY2ViNTc3NmJiMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0ZXIuaApAQCAtODcsNyArODcsOSBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIGludCBjb252ZXJ0TWFycXVlZVJlcGV0aXRpb24oU3R5bGVSZXNvbHZlciYsIGNv
bnN0IENTU1ZhbHVlJik7CiAgICAgc3RhdGljIGludCBjb252ZXJ0TWFycXVlZVNwZWVkKFN0eWxl
UmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwogICAgIHN0YXRpYyBSZWY8UXVvdGVzRGF0YT4g
Y29udmVydFF1b3RlcyhTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKLSAgICBzdGF0
aWMgT3B0aW9uU2V0PFRleHRVbmRlcmxpbmVQb3NpdGlvbj4gY29udmVydFRleHRVbmRlcmxpbmVQ
b3NpdGlvbihTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgVGV4
dFVuZGVybGluZVBvc2l0aW9uIGNvbnZlcnRUZXh0VW5kZXJsaW5lUG9zaXRpb24oU3R5bGVSZXNv
bHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CisgICAgc3RhdGljIFRleHRVbmRlcmxpbmVPZmZzZXQg
Y29udmVydFRleHRVbmRlcmxpbmVPZmZzZXQoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVl
Jik7CisgICAgc3RhdGljIFRleHREZWNvcmF0aW9uVGhpY2tuZXNzIGNvbnZlcnRUZXh0RGVjb3Jh
dGlvblRoaWNrbmVzcyhTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKICAgICBzdGF0
aWMgUmVmUHRyPFN0eWxlUmVmbGVjdGlvbj4gY29udmVydFJlZmxlY3Rpb24oU3R5bGVSZXNvbHZl
ciYsIGNvbnN0IENTU1ZhbHVlJik7CiAgICAgc3RhdGljIEludFNpemUgY29udmVydEluaXRpYWxM
ZXR0ZXIoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CiAgICAgc3RhdGljIGZsb2F0
IGNvbnZlcnRUZXh0U3Ryb2tlV2lkdGgoU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7
CkBAIC02MzcsMTYgKzYzOSw0MCBAQCBpbmxpbmUgUmVmPFF1b3Rlc0RhdGE+IFN0eWxlQnVpbGRl
ckNvbnZlcnRlcjo6Y29udmVydFF1b3RlcyhTdHlsZVJlc29sdmVyJiwgY29ucwogICAgIHJldHVy
biBRdW90ZXNEYXRhOjpjcmVhdGUocXVvdGVzKTsKIH0KIAotaW5saW5lIE9wdGlvblNldDxUZXh0
VW5kZXJsaW5lUG9zaXRpb24+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRleHRVbmRl
cmxpbmVQb3NpdGlvbihTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoraW5s
aW5lIFRleHRVbmRlcmxpbmVQb3NpdGlvbiBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRU
ZXh0VW5kZXJsaW5lUG9zaXRpb24oU3R5bGVSZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJiB2YWx1
ZSkKIHsKLSAgICAvLyBUaGlzIGlzIHRydWUgaWYgdmFsdWUgaXMgJ2F1dG8nIG9yICdhbHBoYWJl
dGljJy4KLSAgICBpZiAoaXM8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSkKLSAgICAgICAgcmV0
dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CisgICAgQVNTRVJUKGlzPENT
U1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkpOworICAgIHJldHVybiBkb3duY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZT4odmFsdWUpOworfQogCi0gICAgT3B0aW9uU2V0PFRleHRVbmRlcmxpbmVQb3NpdGlv
bj4gY29tYmluZWRQb3NpdGlvbjsKLSAgICBmb3IgKGF1dG8mIGN1cnJlbnRWYWx1ZSA6IGRvd25j
YXN0PENTU1ZhbHVlTGlzdD4odmFsdWUpKQotICAgICAgICBjb21iaW5lZFBvc2l0aW9uLmFkZChk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4oY3VycmVudFZhbHVlLmdldCgpKSk7Ci0gICAgcmV0
dXJuIGNvbWJpbmVkUG9zaXRpb247CitpbmxpbmUgVGV4dFVuZGVybGluZU9mZnNldCBTdHlsZUJ1
aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0VW5kZXJsaW5lT2Zmc2V0KFN0eWxlUmVzb2x2ZXIm
IHN0eWxlUmVzb2x2ZXIsIGNvbnN0IENTU1ZhbHVlJiB2YWx1ZSkKK3sKKyAgICBBU1NFUlQoaXM8
Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKSk7CisgICAgYXV0byYgcHJpbWl0aXZlVmFsdWUgPSBk
b3duY2FzdDxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpOworICAgIHN3aXRjaCAocHJpbWl0aXZl
VmFsdWUudmFsdWVJRCgpKSB7CisgICAgY2FzZSBDU1NWYWx1ZUF1dG86CisgICAgICAgIHJldHVy
biBUZXh0VW5kZXJsaW5lT2Zmc2V0OjpjcmVhdGVXaXRoQXV0bygpOworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIEFTU0VSVChwcmltaXRpdmVWYWx1ZS5pc0xlbmd0aCgpKTsKKyAgICAgICAgYXV0byBj
b21wdXRlZExlbmd0aCA9IGNvbnZlcnRDb21wdXRlZExlbmd0aDxmbG9hdD4oc3R5bGVSZXNvbHZl
ciwgcHJpbWl0aXZlVmFsdWUpOworICAgICAgICByZXR1cm4gVGV4dFVuZGVybGluZU9mZnNldDo6
Y3JlYXRlV2l0aExlbmd0aChjb21wdXRlZExlbmd0aCk7CisgICAgfQorfQorCitpbmxpbmUgVGV4
dERlY29yYXRpb25UaGlja25lc3MgU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dERl
Y29yYXRpb25UaGlja25lc3MoU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgY29uc3QgQ1NT
VmFsdWUmIHZhbHVlKQoreworICAgIEFTU0VSVChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUp
KTsKKyAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRvd25jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Pih2YWx1ZSk7CisgICAgc3dpdGNoIChwcmltaXRpdmVWYWx1ZS52YWx1ZUlEKCkpIHsKKyAgICBj
YXNlIENTU1ZhbHVlQXV0bzoKKyAgICAgICAgcmV0dXJuIFRleHREZWNvcmF0aW9uVGhpY2tuZXNz
OjpjcmVhdGVXaXRoQXV0bygpOworICAgIGNhc2UgQ1NTVmFsdWVGcm9tRm9udDoKKyAgICAgICAg
cmV0dXJuIFRleHREZWNvcmF0aW9uVGhpY2tuZXNzOjpjcmVhdGVGcm9tRm9udCgpOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIEFTU0VSVChwcmltaXRpdmVWYWx1ZS5pc0xlbmd0aCgpKTsKKyAgICAg
ICAgYXV0byBjb21wdXRlZExlbmd0aCA9IGNvbnZlcnRDb21wdXRlZExlbmd0aDxmbG9hdD4oc3R5
bGVSZXNvbHZlciwgcHJpbWl0aXZlVmFsdWUpOworICAgICAgICByZXR1cm4gVGV4dERlY29yYXRp
b25UaGlja25lc3M6OmNyZWF0ZVdpdGhMZW5ndGgoY29tcHV0ZWRMZW5ndGgpOworICAgIH0KIH0K
IAogaW5saW5lIFJlZlB0cjxTdHlsZVJlZmxlY3Rpb24+IFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydFJlZmxlY3Rpb24oU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciwgY29uc3QgQ1NT
VmFsdWUmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IGQ0ZTA2
YmNjZjMzNjBkMWNhNDBjMDcyODAyZjQ1MDBjNTlmZGEwNWIuLjI4NzQ4MGU1ZjkyODg1N2M3NDlk
NjZkMzgxZTA3NjdmNDEyNDgzZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAK
QEAgLTExNzQsNyArMTE3NCw5IEBAIHN0YXRpYyBib29sIHNob3VsZEFwcGx5UHJvcGVydHlJblBh
cnNlT3JkZXIoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlEKQogICAgIGNhc2UgQ1NTUHJvcGVydHlX
ZWJraXRUZXh0RGVjb3JhdGlvblN0eWxlOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0
RGVjb3JhdGlvbkNvbG9yOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlv
blNraXA6Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRVbmRlcmxpbmVQb3NpdGlvbjoK
KyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZVBvc2l0aW9uOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlUZXh0VW5kZXJsaW5lT2Zmc2V0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0RGVj
b3JhdGlvblRoaWNrbmVzczoKICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dERlY29yYXRpb246CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCmluZGV4IDIxZmViYWNjNGNmYmFhNTExYmJh
ZWE2NDc1ZjE2MGQ1MzI1ZGMwZjYuLjI0MmI4Y2Y0ZTUwMmU5ZWE2NzcxMDE3ZTY4NTIyYjQyNmYx
OWE1NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQ
YXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJz
ZXIuY3BwCkBAIC0yMzEyLDYgKzIzMTIsMjAgQEAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gY29u
c3VtZUJvcmRlclJhZGl1c0Nvcm5lcihDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1MKICAg
ICByZXR1cm4gY3JlYXRlUHJpbWl0aXZlVmFsdWVQYWlyKHBhcnNlZFZhbHVlMS5yZWxlYXNlTm9u
TnVsbCgpLCBwYXJzZWRWYWx1ZTIucmVsZWFzZU5vbk51bGwoKSwgUGFpcjo6SWRlbnRpY2FsVmFs
dWVFbmNvZGluZzo6Q29hbGVzY2UpOwogfQogCitzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25z
dW1lVGV4dFVuZGVybGluZU9mZnNldChDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFy
c2VyTW9kZSBjc3NQYXJzZXJNb2RlKQoreworICAgIGlmIChhdXRvIHZhbHVlID0gY29uc3VtZUlk
ZW50PENTU1ZhbHVlQXV0bz4ocmFuZ2UpKQorICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgcmV0
dXJuIGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwpOwor
fQorCitzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25zdW1lVGV4dERlY29yYXRpb25UaGlja25l
c3MoQ1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9k
ZSkKK3sKKyAgICBpZiAoYXV0byB2YWx1ZSA9IGNvbnN1bWVJZGVudDxDU1NWYWx1ZUF1dG8sIENT
U1ZhbHVlRnJvbUZvbnQ+KHJhbmdlKSkKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIHJldHVy
biBjb25zdW1lTGVuZ3RoKHJhbmdlLCBjc3NQYXJzZXJNb2RlLCBWYWx1ZVJhbmdlQWxsKTsKK30K
Kwogc3RhdGljIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gY29uc3VtZVZlcnRpY2FsQWxpZ24o
Q1NTUGFyc2VyVG9rZW5SYW5nZSYgcmFuZ2UsIENTU1BhcnNlck1vZGUgY3NzUGFyc2VyTW9kZSkK
IHsKICAgICBSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+IHBhcnNlZFZhbHVlID0gY29uc3VtZUlk
ZW50UmFuZ2UocmFuZ2UsIENTU1ZhbHVlQmFzZWxpbmUsIENTU1ZhbHVlV2Via2l0QmFzZWxpbmVN
aWRkbGUpOwpAQCAtNDE0MSw5ICs0MTU1LDEzIEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ1NTUHJvcGVy
dHlQYXJzZXI6OnBhcnNlU2luZ2xlVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTCiAg
ICAgICAgIHJldHVybiBjb25zdW1lSW50ZWdlcihtX3JhbmdlLCAwKTsKICAgICBjYXNlIENTU1By
b3BlcnR5T3JkZXI6CiAgICAgICAgIHJldHVybiBjb25zdW1lSW50ZWdlcihtX3JhbmdlKTsKLSAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFVuZGVybGluZVBvc2l0aW9uOgotICAgICAgICAv
LyBhdXRvIHwgYWxwaGFiZXRpYyB8IFsgdW5kZXIgfHwgWyBsZWZ0IHwgcmlnaHQgXSBdLCBidXQg
d2Ugb25seSBzdXBwb3J0IGF1dG8gfCBhbHBoYWJldGljIHwgdW5kZXIgZm9yIG5vdwotICAgICAg
ICByZXR1cm4gY29uc3VtZUlkZW50PENTU1ZhbHVlQXV0bywgQ1NTVmFsdWVVbmRlciwgQ1NTVmFs
dWVBbHBoYWJldGljPihtX3JhbmdlKTsKKyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGlu
ZVBvc2l0aW9uOgorICAgICAgICAvLyBhdXRvIHwgWyBbIHVuZGVyIHwgZnJvbS1mb250IF0gfHwg
WyBsZWZ0IHwgcmlnaHQgXSBdLCBidXQgd2Ugb25seSBzdXBwb3J0IGF1dG8gfCB1bmRlciB8IGZy
b20tZm9udCBmb3Igbm93CisgICAgICAgIHJldHVybiBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVBdXRv
LCBDU1NWYWx1ZVVuZGVyLCBDU1NWYWx1ZUZyb21Gb250PihtX3JhbmdlKTsKKyAgICBjYXNlIENT
U1Byb3BlcnR5VGV4dFVuZGVybGluZU9mZnNldDoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVUZXh0
VW5kZXJsaW5lT2Zmc2V0KG1fcmFuZ2UsIG1fY29udGV4dC5tb2RlKTsKKyAgICBjYXNlIENTU1By
b3BlcnR5VGV4dERlY29yYXRpb25UaGlja25lc3M6CisgICAgICAgIHJldHVybiBjb25zdW1lVGV4
dERlY29yYXRpb25UaGlja25lc3MobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUpOwogICAgIGNhc2Ug
Q1NTUHJvcGVydHlWZXJ0aWNhbEFsaWduOgogICAgICAgICByZXR1cm4gY29uc3VtZVZlcnRpY2Fs
QWxpZ24obV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUpOwogICAgIGNhc2UgQ1NTUHJvcGVydHlTaGFw
ZU91dHNpZGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250TWV0cmljcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udE1ldHJp
Y3MuaAppbmRleCBlOGRkZWNkNzJlMThjYjMxMWNhNjY4NDM1ZDYxYWM1NzBhMTM4MGY2Li5iMTBm
ZTViZTViMzRiZTIyZDI0NTJiNjZiNWIwNTliZTRkNGI5ODg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250TWV0cmljcy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRNZXRyaWNzLmgKQEAgLTEwMiw2ICsxMDIsMTIgQEAg
cHVibGljOgogICAgIGZsb2F0IHplcm9XaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1femVyb1dpZHRo
OyB9CiAgICAgdm9pZCBzZXRaZXJvV2lkdGgoZmxvYXQgemVyb1dpZHRoKSB7IG1femVyb1dpZHRo
ID0gemVyb1dpZHRoOyB9CiAKKyAgICBmbG9hdCB1bmRlcmxpbmVQb3NpdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fdW5kZXJsaW5lUG9zaXRpb247IH0KKyAgICB2b2lkIHNldFVuZGVybGluZVBvc2l0
aW9uKGZsb2F0IHVuZGVybGluZVBvc2l0aW9uKSB7IG1fdW5kZXJsaW5lUG9zaXRpb24gPSB1bmRl
cmxpbmVQb3NpdGlvbjsgfQorCisgICAgZmxvYXQgdW5kZXJsaW5lVGhpY2tuZXNzKCkgY29uc3Qg
eyByZXR1cm4gbV91bmRlcmxpbmVUaGlja25lc3M7IH0KKyAgICB2b2lkIHNldFVuZGVybGluZVRo
aWNrbmVzcyhmbG9hdCB1bmRlcmxpbmVUaGlja25lc3MpIHsgbV91bmRlcmxpbmVUaGlja25lc3Mg
PSB1bmRlcmxpbmVUaGlja25lc3M7IH0KKwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRm9u
dDsKIApAQCAtMTI1LDYgKzEzMSw4IEBAIHByaXZhdGU6CiAgICAgZmxvYXQgbV96ZXJvV2lkdGgg
eyAwIH07CiAgICAgZmxvYXQgbV94SGVpZ2h0IHsgMCB9OwogICAgIGZsb2F0IG1fY2FwSGVpZ2h0
IHsgMCB9OworICAgIGZsb2F0IG1fdW5kZXJsaW5lUG9zaXRpb24geyAwIH07CisgICAgZmxvYXQg
bV91bmRlcmxpbmVUaGlja25lc3MgeyAwIH07CiB9OwogCiBzdGF0aWMgaW5saW5lIGZsb2F0IHNj
YWxlRW1Ub1VuaXRzKGZsb2F0IHgsIHVuc2lnbmVkIHVuaXRzUGVyRW0pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q29jb2EubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q29jb2EubW0KaW5kZXggY2Ri
N2UxMThmOTE5Njc4ZGYwMzlhOGExN2I4Nzc0MDk2NWY1OTM3NC4uZGMzNjVhZDRlMzEzZDAyNjAz
ZjcwODA2Njk1ZWFkNzU2YjNhNDk0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvRm9udENvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDb2NvYS5tbQpAQCAtMTk4LDYgKzE5OCw4IEBAIHZvaWQg
Rm9udDo6cGxhdGZvcm1Jbml0KCkKICAgICBtX2ZvbnRNZXRyaWNzLnNldExpbmVHYXAobGluZUdh
cCk7CiAgICAgbV9mb250TWV0cmljcy5zZXRYSGVpZ2h0KHhIZWlnaHQpOwogICAgIG1fZm9udE1l
dHJpY3Muc2V0TGluZVNwYWNpbmcobGluZVNwYWNpbmcpOworICAgIG1fZm9udE1ldHJpY3Muc2V0
VW5kZXJsaW5lUG9zaXRpb24oQ1RGb250R2V0VW5kZXJsaW5lUG9zaXRpb24obV9wbGF0Zm9ybURh
dGEuZm9udCgpKSk7CisgICAgbV9mb250TWV0cmljcy5zZXRVbmRlcmxpbmVUaGlja25lc3MoQ1RG
b250R2V0VW5kZXJsaW5lVGhpY2tuZXNzKG1fcGxhdGZvcm1EYXRhLmZvbnQoKSkpOwogfQogCiB2
b2lkIEZvbnQ6OnBsYXRmb3JtQ2hhcldpZHRoSW5pdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0lubGluZUZsb3dCb3guaAppbmRleCAyN2M2MjI5NDY2Y2E1MWQ0N2E4MmE1YTMyZTM1MThhMmJi
YTQ3ZjM1Li4wOTkxYWE3MzRmYWEzNmJjZWRhNzhmNzNlYzViNDhhODYzYThjNTY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmgKQEAgLTI5Miw4ICsyOTIsNyBAQCBw
dWJsaWM6CiAgICAgfQogCiAgICAgdm9pZCBjb21wdXRlUmVwbGFjZWRBbmRUZXh0TGluZVRvcEFu
ZEJvdHRvbShMYXlvdXRVbml0JiBsaW5lVG9wLCBMYXlvdXRVbml0JiBsaW5lQm90dG9tKSBjb25z
dDsKLSAgICAKLSAgICAvLyBVc2VkIHRvIGNhbGN1bGF0ZSB0aGUgdW5kZXJsaW5lIG9mZnNldCBm
b3IgVGV4dFVuZGVybGluZVBvc2l0aW9uOjpVbmRlci4KKwogICAgIHZvaWQgbWF4TG9naWNhbEJv
dHRvbUZvclRleHREZWNvcmF0aW9uTGluZShmbG9hdCYgbWF4TG9naWNhbEJvdHRvbSwgY29uc3Qg
UmVuZGVyRWxlbWVudCogZGVjb3JhdGlvblJlbmRlcmVyLCBPcHRpb25TZXQ8VGV4dERlY29yYXRp
b24+KSBjb25zdDsKICAgICB2b2lkIG1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVjb3JhdGlvbkxpbmUo
ZmxvYXQmIG1pbkxvZ2ljYWxUb3AsIGNvbnN0IFJlbmRlckVsZW1lbnQqIGRlY29yYXRpb25SZW5k
ZXJlciwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcAppbmRleCBlMGM3YmVhNzFhMGNmMDdh
ZjNlYjA0MmFmNzIzYTk5NmNkNTNjOGJiLi5hZjBhNzZkNTY4YjM2ZWMzYjMzY2I1YmQwMGE0YmY5
NjUzN2Y4ZTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGlu
ZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlv
dXQuY3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgc3RhdGljIEF2b2lkYW5jZVJlYXNvbkZsYWdzIGNh
blVzZUZvclN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgSW5jbHVkZVJlYXMKICAgICBB
dm9pZGFuY2VSZWFzb25GbGFncyByZWFzb25zID0geyB9OwogICAgIGlmIChzdHlsZS50ZXh0T3Zl
cmZsb3coKSA9PSBUZXh0T3ZlcmZsb3c6OkVsbGlwc2lzKQogICAgICAgICBTRVRfUkVBU09OX0FO
RF9SRVRVUk5fSUZfTkVFREVEKEZsb3dIYXNUZXh0T3ZlcmZsb3csIHJlYXNvbnMsIGluY2x1ZGVS
ZWFzb25zKTsKLSAgICBpZiAoKHN0eWxlLnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCkgJiBUZXh0
RGVjb3JhdGlvbjo6VW5kZXJsaW5lKSAmJiBzdHlsZS50ZXh0VW5kZXJsaW5lUG9zaXRpb24oKSA9
PSBUZXh0VW5kZXJsaW5lUG9zaXRpb246OlVuZGVyKQorICAgIGlmICgoc3R5bGUudGV4dERlY29y
YXRpb25zSW5FZmZlY3QoKSAmIFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUpICYmIChzdHlsZS50
ZXh0VW5kZXJsaW5lUG9zaXRpb24oKSAhPSBUZXh0VW5kZXJsaW5lUG9zaXRpb246OkF1dG8gfHwg
IXN0eWxlLnRleHRVbmRlcmxpbmVPZmZzZXQoKS5pc0F1dG8oKSB8fCAhc3R5bGUudGV4dERlY29y
YXRpb25UaGlja25lc3MoKS5pc0F1dG8oKSkpCiAgICAgICAgIFNFVF9SRUFTT05fQU5EX1JFVFVS
Tl9JRl9ORUVERUQoRmxvd0hhc1Vuc3VwcG9ydGVkVW5kZXJsaW5lRGVjb3JhdGlvbiwgcmVhc29u
cywgaW5jbHVkZVJlYXNvbnMpOwogICAgIC8vIE5vbi12aXNpYmxlIG92ZXJmbG93IHNob3VsZCBi
ZSBwcmV0dHkgZWFzeSB0byBzdXBwb3J0LgogICAgIGlmIChzdHlsZS5vdmVyZmxvd1goKSAhPSBP
dmVyZmxvdzo6VmlzaWJsZSB8fCBzdHlsZS5vdmVyZmxvd1koKSAhPSBPdmVyZmxvdzo6VmlzaWJs
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBh
aW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRl
ci5jcHAKaW5kZXggOThlODhkYzQ4MDVkNmE1ZGE3YWE1NDIwNWRkYjE2ZTc0MTY5ODk4MC4uYTIw
MGM4MTdiYWYzOWZkY2MwYzQwYTRkZDUwYzBhZmQxZDU0OTliZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHAKQEAgLTIwNSwxMCAr
MjA1LDEwIEBAIHN0YXRpYyBEYXNoQXJyYXkgdHJhbnNsYXRlSW50ZXJzZWN0aW9uUG9pbnRzVG9T
a2lwSW5rQm91bmRhcmllcyhjb25zdCBEYXNoQXJyYXkmCiB9CiAKIHN0YXRpYyB2b2lkIGRyYXdT
a2lwSW5rVW5kZXJsaW5lKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udENhc2Nh
ZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRP
cmlnaW4sIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsT3JpZ2luLAotICAgIGZsb2F0IHVuZGVybGlu
ZU9mZnNldCwgZmxvYXQgd2lkdGgsIGJvb2wgaXNQcmludGluZywgYm9vbCBkb3VibGVMaW5lcywg
U3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUpCisgICAgZmxvYXQgdW5kZXJsaW5lR2FwLCBmbG9hdCB3
aWR0aCwgYm9vbCBpc1ByaW50aW5nLCBib29sIGRvdWJsZUxpbmVzLCBTdHJva2VTdHlsZSBzdHJv
a2VTdHlsZSkKIHsKICAgICBGbG9hdFBvaW50IGFkanVzdGVkTG9jYWxPcmlnaW4gPSBsb2NhbE9y
aWdpbjsKLSAgICBhZGp1c3RlZExvY2FsT3JpZ2luLm1vdmUoMCwgdW5kZXJsaW5lT2Zmc2V0KTsK
KyAgICBhZGp1c3RlZExvY2FsT3JpZ2luLm1vdmUoMCwgdW5kZXJsaW5lR2FwKTsKICAgICBGbG9h
dFJlY3QgdW5kZXJsaW5lQm91bmRpbmdCb3ggPSBjb250ZXh0LmNvbXB1dGVVbmRlcmxpbmVCb3Vu
ZHNGb3JUZXh0KGFkanVzdGVkTG9jYWxPcmlnaW4sIHdpZHRoLCBpc1ByaW50aW5nKTsKICAgICBE
YXNoQXJyYXkgaW50ZXJzZWN0aW9ucyA9IGZvbnQuZGFzaGVzRm9ySW50ZXJzZWN0aW9uc1dpdGhS
ZWN0KHRleHRSdW4sIHRleHRPcmlnaW4sIHVuZGVybGluZUJvdW5kaW5nQm94KTsKICAgICBEYXNo
QXJyYXkgYSA9IHRyYW5zbGF0ZUludGVyc2VjdGlvblBvaW50c1RvU2tpcElua0JvdW5kYXJpZXMo
aW50ZXJzZWN0aW9ucywgdW5kZXJsaW5lQm91bmRpbmdCb3guaGVpZ2h0KCksIHdpZHRoKTsKQEAg
LTI2NCwxMSArMjY0LDExIEBAIHZvaWQgVGV4dERlY29yYXRpb25QYWludGVyOjpwYWludFRleHRE
ZWNvcmF0aW9uKGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IEZsCiAgICAgVU5VU0VEX1BB
UkFNKHRleHRPcmlnaW4pOwogI2VuZGlmCiAgICAgQVNTRVJUKG1fZm9udCk7Ci0gICAgZmxvYXQg
dGV4dERlY29yYXRpb25UaGlja25lc3MgPSB0ZXh0RGVjb3JhdGlvblN0cm9rZVRoaWNrbmVzcyht
X2xpbmVTdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSk7CisgICAgZmxvYXQgdGV4dERlY29y
YXRpb25UaGlja25lc3MgPSBtX2xpbmVTdHlsZS50ZXh0RGVjb3JhdGlvblRoaWNrbmVzcygpLnJl
c29sdmUobV9saW5lU3R5bGUuY29tcHV0ZWRGb250U2l6ZSgpLCBtX2xpbmVTdHlsZS5mb250TWV0
cmljcygpKTsKICAgICBtX2NvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKHRleHREZWNvcmF0aW9u
VGhpY2tuZXNzKTsKICAgICBGbG9hdFBvaW50IGxvY2FsT3JpZ2luID0gYm94T3JpZ2luOwogCi0g
ICAgYXV0byBwYWludERlY29yYXRpb24gPSBbJl0gKE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4g
ZGVjb3JhdGlvbiwgVGV4dERlY29yYXRpb25TdHlsZSBzdHlsZSwgY29uc3QgQ29sb3ImIGNvbG9y
LCBjb25zdCBGbG9hdFBvaW50JiBzdGFydCwgY29uc3QgRmxvYXRQb2ludCYgZW5kLCBpbnQgb2Zm
c2V0KSB7CisgICAgYXV0byBwYWludERlY29yYXRpb24gPSBbJl0gKE9wdGlvblNldDxUZXh0RGVj
b3JhdGlvbj4gZGVjb3JhdGlvbiwgVGV4dERlY29yYXRpb25TdHlsZSBzdHlsZSwgY29uc3QgQ29s
b3ImIGNvbG9yLCBjb25zdCBGbG9hdFBvaW50JiBzdGFydCwgY29uc3QgRmxvYXRQb2ludCYgZW5k
LCBmbG9hdCBnYXApIHsKICAgICAgICAgbV9jb250ZXh0LnNldFN0cm9rZUNvbG9yKGNvbG9yKTsK
IAogICAgICAgICBhdXRvIHN0cm9rZVN0eWxlID0gdGV4dERlY29yYXRpb25TdHlsZVRvU3Ryb2tl
U3R5bGUoc3R5bGUpOwpAQCAtMjc5LDcgKzI3OSw3IEBAIHZvaWQgVGV4dERlY29yYXRpb25QYWlu
dGVyOjpwYWludFRleHREZWNvcmF0aW9uKGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IEZs
CiAjaWYgRU5BQkxFKENTUzNfVEVYVF9ERUNPUkFUSU9OX1NLSVBfSU5LKQogICAgICAgICAgICAg
aWYgKChtX2xpbmVTdHlsZS50ZXh0RGVjb3JhdGlvblNraXAoKSA9PSBUZXh0RGVjb3JhdGlvblNr
aXA6OkluayB8fCBtX2xpbmVTdHlsZS50ZXh0RGVjb3JhdGlvblNraXAoKSA9PSBUZXh0RGVjb3Jh
dGlvblNraXA6OkF1dG8pICYmIG1faXNIb3Jpem9udGFsKSB7CiAgICAgICAgICAgICAgICAgaWYg
KCFtX2NvbnRleHQucGFpbnRpbmdEaXNhYmxlZCgpKQotICAgICAgICAgICAgICAgICAgICBkcmF3
U2tpcElua1VuZGVybGluZShtX2NvbnRleHQsICptX2ZvbnQsIHRleHRSdW4sIHRleHRPcmlnaW4s
IGxvY2FsT3JpZ2luLCBvZmZzZXQsIG1fd2lkdGgsIG1faXNQcmludGluZywgc3R5bGUgPT0gVGV4
dERlY29yYXRpb25TdHlsZTo6RG91YmxlLCBzdHJva2VTdHlsZSk7CisgICAgICAgICAgICAgICAg
ICAgIGRyYXdTa2lwSW5rVW5kZXJsaW5lKG1fY29udGV4dCwgKm1fZm9udCwgdGV4dFJ1biwgdGV4
dE9yaWdpbiwgbG9jYWxPcmlnaW4sIGdhcCwgbV93aWR0aCwgbV9pc1ByaW50aW5nLCBzdHlsZSA9
PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpEb3VibGUsIHN0cm9rZVN0eWxlKTsKICAgICAgICAgICAg
IH0gZWxzZQogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBOZWVkIHRvIHN1cHBvcnQgdGV4dC1k
ZWNvcmF0aW9uLXNraXA6IG5vbmUuCiAjZW5kaWYKQEAgLTMzNSwxMSArMzM1LDExIEBAIHZvaWQg
VGV4dERlY29yYXRpb25QYWludGVyOjpwYWludFRleHREZWNvcmF0aW9uKGNvbnN0IFRleHRSdW4m
IHRleHRSdW4sIGNvbnN0IEZsCiAKICAgICAgICAgLy8gVGhlc2UgZGVjb3JhdGlvbnMgc2hvdWxk
IG1hdGNoIHRoZSB2aXN1YWwgb3ZlcmZsb3dzIGNvbXB1dGVkIGluIHZpc3VhbE92ZXJmbG93Rm9y
RGVjb3JhdGlvbnMoKS4KICAgICAgICAgaWYgKG1fZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERl
Y29yYXRpb246OlVuZGVybGluZSkpIHsKLSAgICAgICAgICAgIGludCBvZmZzZXQgPSBjb21wdXRl
VW5kZXJsaW5lT2Zmc2V0KG1fbGluZVN0eWxlLnRleHRVbmRlcmxpbmVQb3NpdGlvbigpLCBtX2xp
bmVTdHlsZS5mb250TWV0cmljcygpLCBtX2lubGluZVRleHRCb3gsIHRleHREZWNvcmF0aW9uVGhp
Y2tuZXNzKTsKKyAgICAgICAgICAgIGZsb2F0IGdhcCA9IGNvbXB1dGVVbmRlcmxpbmVHYXAobV9s
aW5lU3R5bGUudGV4dFVuZGVybGluZVBvc2l0aW9uKCksIG1fbGluZVN0eWxlLnRleHRVbmRlcmxp
bmVPZmZzZXQoKSwgdGV4dERlY29yYXRpb25UaGlja25lc3MsIG1fbGluZVN0eWxlLmZvbnRNZXRy
aWNzKCksIG1faW5saW5lVGV4dEJveCk7CiAgICAgICAgICAgICBmbG9hdCB3YXZ5T2Zmc2V0ID0g
bV9zdHlsZXMudW5kZXJsaW5lU3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZTo6V2F2eSA/IG1f
d2F2eU9mZnNldCA6IDA7Ci0gICAgICAgICAgICBGbG9hdFBvaW50IHN0YXJ0ID0gbG9jYWxPcmln
aW4gKyBGbG9hdFNpemUoMCwgb2Zmc2V0ICsgd2F2eU9mZnNldCk7Ci0gICAgICAgICAgICBGbG9h
dFBvaW50IGVuZCA9IGxvY2FsT3JpZ2luICsgRmxvYXRTaXplKG1fd2lkdGgsIG9mZnNldCArIHdh
dnlPZmZzZXQpOwotICAgICAgICAgICAgcGFpbnREZWNvcmF0aW9uKFRleHREZWNvcmF0aW9uOjpV
bmRlcmxpbmUsIG1fc3R5bGVzLnVuZGVybGluZVN0eWxlLCBtX3N0eWxlcy51bmRlcmxpbmVDb2xv
ciwgc3RhcnQsIGVuZCwgb2Zmc2V0KTsKKyAgICAgICAgICAgIEZsb2F0UG9pbnQgc3RhcnQgPSBs
b2NhbE9yaWdpbiArIEZsb2F0U2l6ZSgwLCBnYXAgKyB3YXZ5T2Zmc2V0KTsKKyAgICAgICAgICAg
IEZsb2F0UG9pbnQgZW5kID0gbG9jYWxPcmlnaW4gKyBGbG9hdFNpemUobV93aWR0aCwgZ2FwICsg
d2F2eU9mZnNldCk7CisgICAgICAgICAgICBwYWludERlY29yYXRpb24oVGV4dERlY29yYXRpb246
OlVuZGVybGluZSwgbV9zdHlsZXMudW5kZXJsaW5lU3R5bGUsIG1fc3R5bGVzLnVuZGVybGluZUNv
bG9yLCBzdGFydCwgZW5kLCBnYXApOwogICAgICAgICB9CiAgICAgICAgIGlmIChtX2RlY29yYXRp
b25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uOjpPdmVybGluZSkpIHsKICAgICAgICAgICAgIGZs
b2F0IHdhdnlPZmZzZXQgPSBtX3N0eWxlcy5vdmVybGluZVN0eWxlID09IFRleHREZWNvcmF0aW9u
U3R5bGU6OldhdnkgPyBtX3dhdnlPZmZzZXQgOiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCBkZDI0MmU3NmQzZTgxMDljYjg5MDc4NTc5YjJj
OGFiNDFiZDg3ZTUwLi5lYzY2OWE1ZGQ3NjNmOWNiYWNmNjUzNmE1NDcyY2I3ODE2ZTA4MWZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtMzc0
LDcgKzM3NCw5IEBAIHB1YmxpYzoKICAgICBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+IHRleHRE
ZWNvcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPjo6ZnJv
bVJhdyhtX3Zpc3VhbERhdGEtPnRleHREZWNvcmF0aW9uKTsgfQogICAgIFRleHREZWNvcmF0aW9u
U3R5bGUgdGV4dERlY29yYXRpb25TdHlsZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRl
eHREZWNvcmF0aW9uU3R5bGU+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRleHREZWNvcmF0aW9u
U3R5bGUpOyB9CiAgICAgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uU2tpcD4gdGV4dERlY29yYXRp
b25Ta2lwKCkgY29uc3QgeyByZXR1cm4gT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uU2tpcD46OmZy
b21SYXcobV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dERlY29yYXRpb25Ta2lwKTsgfQotICAgIE9w
dGlvblNldDxUZXh0VW5kZXJsaW5lUG9zaXRpb24+IHRleHRVbmRlcmxpbmVQb3NpdGlvbigpIGNv
bnN0IHsgcmV0dXJuIE9wdGlvblNldDxUZXh0VW5kZXJsaW5lUG9zaXRpb24+Ojpmcm9tUmF3KG1f
cmFyZUluaGVyaXRlZERhdGEtPnRleHRVbmRlcmxpbmVQb3NpdGlvbik7IH0KKyAgICBUZXh0VW5k
ZXJsaW5lUG9zaXRpb24gdGV4dFVuZGVybGluZVBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8VGV4dFVuZGVybGluZVBvc2l0aW9uPihtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0
VW5kZXJsaW5lUG9zaXRpb24pOyB9CisgICAgVGV4dFVuZGVybGluZU9mZnNldCB0ZXh0VW5kZXJs
aW5lT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFVuZGVy
bGluZU9mZnNldDsgfQorICAgIFRleHREZWNvcmF0aW9uVGhpY2tuZXNzIHRleHREZWNvcmF0aW9u
VGhpY2tuZXNzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dERlY29y
YXRpb25UaGlja25lc3M7IH0KIAogI2lmIEVOQUJMRShDU1MzX1RFWFQpCiAgICAgVGV4dEluZGVu
dExpbmUgdGV4dEluZGVudExpbmUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0SW5k
ZW50TGluZT4obV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dEluZGVudExpbmUpOyB9CkBAIC05MjMs
NyArOTI1LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VGV4dERlY29yYXRpb24oT3B0aW9uU2V0
PFRleHREZWNvcmF0aW9uPiB2KSB7IFNFVF9WQVIobV92aXN1YWxEYXRhLCB0ZXh0RGVjb3JhdGlv
biwgdi50b1JhdygpKTsgfQogICAgIHZvaWQgc2V0VGV4dERlY29yYXRpb25TdHlsZShUZXh0RGVj
b3JhdGlvblN0eWxlIHYpIHsgU0VUX1ZBUihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLCB0ZXh0RGVj
b3JhdGlvblN0eWxlLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4odikpOyB9CiAgICAgdm9pZCBzZXRU
ZXh0RGVjb3JhdGlvblNraXAoT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uU2tpcD4gc2tpcCkgeyBT
RVRfVkFSKG1fcmFyZUluaGVyaXRlZERhdGEsIHRleHREZWNvcmF0aW9uU2tpcCwgc2tpcC50b1Jh
dygpKTsgfQotICAgIHZvaWQgc2V0VGV4dFVuZGVybGluZVBvc2l0aW9uKE9wdGlvblNldDxUZXh0
VW5kZXJsaW5lUG9zaXRpb24+IHYpIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0
VW5kZXJsaW5lUG9zaXRpb24sIHYudG9SYXcoKSk7IH0KKyAgICB2b2lkIHNldFRleHRVbmRlcmxp
bmVQb3NpdGlvbihUZXh0VW5kZXJsaW5lUG9zaXRpb24gcG9zaXRpb24pIHsgU0VUX1ZBUihtX3Jh
cmVJbmhlcml0ZWREYXRhLCB0ZXh0VW5kZXJsaW5lUG9zaXRpb24sIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihwb3NpdGlvbikpOyB9CisgICAgdm9pZCBzZXRUZXh0VW5kZXJsaW5lT2Zmc2V0KFRleHRV
bmRlcmxpbmVPZmZzZXQmJiB0ZXh0VW5kZXJsaW5lT2Zmc2V0KSB7IFNFVF9WQVIobV9yYXJlSW5o
ZXJpdGVkRGF0YSwgdGV4dFVuZGVybGluZU9mZnNldCwgV1RGTW92ZSh0ZXh0VW5kZXJsaW5lT2Zm
c2V0KSk7IH0KKyAgICB2b2lkIHNldFRleHREZWNvcmF0aW9uVGhpY2tuZXNzKFRleHREZWNvcmF0
aW9uVGhpY2tuZXNzJiYgdGV4dERlY29yYXRpb25UaGlja25lc3MpIHsgU0VUX1ZBUihtX3JhcmVJ
bmhlcml0ZWREYXRhLCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcywgV1RGTW92ZSh0ZXh0RGVjb3Jh
dGlvblRoaWNrbmVzcykpOyB9CiAgICAgdm9pZCBzZXREaXJlY3Rpb24oVGV4dERpcmVjdGlvbiB2
KSB7IG1faW5oZXJpdGVkRmxhZ3MuZGlyZWN0aW9uID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHYp
OyB9CiAgICAgdm9pZCBzZXRIYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9uKGJvb2wgdikgeyBtX25v
bkluaGVyaXRlZEZsYWdzLmhhc0V4cGxpY2l0bHlTZXREaXJlY3Rpb24gPSB2OyB9CiAgICAgdm9p
ZCBzZXRMaW5lSGVpZ2h0KExlbmd0aCYmKTsKQEAgLTE0ODQsNyArMTQ4OCw5IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiBpbml0aWFsVGV4dERlY29yYXRp
b24oKSB7IHJldHVybiBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+IHsgfTsgfQogICAgIHN0YXRp
YyBUZXh0RGVjb3JhdGlvblN0eWxlIGluaXRpYWxUZXh0RGVjb3JhdGlvblN0eWxlKCkgeyByZXR1
cm4gVGV4dERlY29yYXRpb25TdHlsZTo6U29saWQ7IH0KICAgICBzdGF0aWMgT3B0aW9uU2V0PFRl
eHREZWNvcmF0aW9uU2tpcD4gaW5pdGlhbFRleHREZWNvcmF0aW9uU2tpcCgpIHsgcmV0dXJuIFRl
eHREZWNvcmF0aW9uU2tpcDo6QXV0bzsgfQotICAgIHN0YXRpYyBPcHRpb25TZXQ8VGV4dFVuZGVy
bGluZVBvc2l0aW9uPiBpbml0aWFsVGV4dFVuZGVybGluZVBvc2l0aW9uKCkgeyByZXR1cm4gVGV4
dFVuZGVybGluZVBvc2l0aW9uOjpBdXRvOyB9CisgICAgc3RhdGljIFRleHRVbmRlcmxpbmVQb3Np
dGlvbiBpbml0aWFsVGV4dFVuZGVybGluZVBvc2l0aW9uKCkgeyByZXR1cm4gVGV4dFVuZGVybGlu
ZVBvc2l0aW9uOjpBdXRvOyB9CisgICAgc3RhdGljIFRleHRVbmRlcmxpbmVPZmZzZXQgaW5pdGlh
bFRleHRVbmRlcmxpbmVPZmZzZXQoKSB7IHJldHVybiBUZXh0VW5kZXJsaW5lT2Zmc2V0OjpjcmVh
dGVXaXRoQXV0bygpOyB9CisgICAgc3RhdGljIFRleHREZWNvcmF0aW9uVGhpY2tuZXNzIGluaXRp
YWxUZXh0RGVjb3JhdGlvblRoaWNrbmVzcygpIHsgcmV0dXJuIFRleHREZWNvcmF0aW9uVGhpY2tu
ZXNzOjpjcmVhdGVXaXRoQXV0bygpOyB9CiAgICAgc3RhdGljIGZsb2F0IGluaXRpYWxab29tKCkg
eyByZXR1cm4gMS4wZjsgfQogICAgIHN0YXRpYyBUZXh0Wm9vbSBpbml0aWFsVGV4dFpvb20oKSB7
IHJldHVybiBUZXh0Wm9vbTo6Tm9ybWFsOyB9CiAgICAgc3RhdGljIGZsb2F0IGluaXRpYWxPdXRs
aW5lT2Zmc2V0KCkgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAppbmRleCAzZWRlZTA5OWZlODU0ZmNm
MmUwMzU5ZmI2MmRkNTU3YTMxZDhkM2JjLi4xNzZlYjIxM2E3YTZlNzgyZTMxMDc5MGQ1MTBmMGNk
MWIzZDllMDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGVDb25zdGFudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGVDb25zdGFudHMuaApAQCAtNzMxLDEyICs3MzEsMTEgQEAgZW51bSBjbGFzcyBU
ZXh0RGVjb3JhdGlvblNraXAgOiB1aW50OF90IHsKICAgICBBdXRvICAgICAgPSAxIDw8IDIKIH07
CiAKLS8vIEZJWE1FOiBUaGVyZSBpcyBubyByZWFzb24gZm9yIHRoZSB2YWx1ZXMgaW4gdGhlIGVu
dW0gdG8gYmUgcG93ZXJzIG9mIHR3by4KIGVudW0gY2xhc3MgVGV4dFVuZGVybGluZVBvc2l0aW9u
IDogdWludDhfdCB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBzdXBwb3J0IGZvciAndW5kZXIg
bGVmdCcgYW5kICd1bmRlciByaWdodCcgdmFsdWVzLgotICAgIEF1dG8gICAgICAgPSAxIDw8IDAs
Ci0gICAgQWxwaGFiZXRpYyA9IDEgPDwgMSwKLSAgICBVbmRlciAgICAgID0gMSA8PCAyCisgICAg
QXV0bywKKyAgICBVbmRlciwKKyAgICBGcm9tRm9udAogfTsKIAogZW51bSBjbGFzcyBUZXh0Wm9v
bSA6IHVpbnQ4X3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCmluZGV4IDJhYWRhMWMyNzBhMzlmOGZhYWQx
ODU1MjAwZmJjMTYwNDZiODhlMDYuLjVmYjc5YjNmOTQ3ZTQ0NmI3MGVmMzM4MjdjYzcyOGNiYzgw
ZWIwNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJh
cmVJbmhlcml0ZWREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAKQEAgLTQ1LDYgKzQ1LDggQEAgc3RydWN0IEdyZWF0
ZXJUaGFuT3JTYW1lU2l6ZUFzU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPEdyZWF0ZXIKICAgICB2b2lkKiByZWZQdHJzWzNdOwogICAgIExlbmd0aCBsZW5ndGhzWzJd
OwogICAgIGZsb2F0IHNlY29uZEZsb2F0OworICAgIFRleHRVbmRlcmxpbmVPZmZzZXQgb2Zmc2V0
OworICAgIFRleHREZWNvcmF0aW9uVGhpY2tuZXNzIHRoaWNrbmVzczsKICAgICB1bnNpZ25lZCBi
aXRmaWVsZHNbNF07CiAgICAgc2hvcnQgcGFnZWRNZWRpYVNob3J0c1syXTsKICAgICB1bnNpZ25l
ZCB1bnNpZ25lZHNbMV07CkBAIC03NSw2ICs3Nyw4IEBAIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6
OlN0eWxlUmFyZUluaGVyaXRlZERhdGEoKQogICAgICwgdGV4dFN0cm9rZVdpZHRoKFJlbmRlclN0
eWxlOjppbml0aWFsVGV4dFN0cm9rZVdpZHRoKCkpCiAgICAgLCBpbmRlbnQoUmVuZGVyU3R5bGU6
OmluaXRpYWxUZXh0SW5kZW50KCkpCiAgICAgLCBlZmZlY3RpdmVab29tKFJlbmRlclN0eWxlOjpp
bml0aWFsWm9vbSgpKQorICAgICwgdGV4dFVuZGVybGluZU9mZnNldChSZW5kZXJTdHlsZTo6aW5p
dGlhbFRleHRVbmRlcmxpbmVPZmZzZXQoKSkKKyAgICAsIHRleHREZWNvcmF0aW9uVGhpY2tuZXNz
KFJlbmRlclN0eWxlOjppbml0aWFsVGV4dERlY29yYXRpb25UaGlja25lc3MoKSkKICAgICAsIGN1
c3RvbVByb3BlcnRpZXMoU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE6OmNyZWF0ZSgpKQogICAgICwg
d2lkb3dzKFJlbmRlclN0eWxlOjppbml0aWFsV2lkb3dzKCkpCiAgICAgLCBvcnBoYW5zKFJlbmRl
clN0eWxlOjppbml0aWFsT3JwaGFucygpKQpAQCAtMTE2LDcgKzEyMCw3IEBAIFN0eWxlUmFyZUlu
aGVyaXRlZERhdGE6OlN0eWxlUmFyZUluaGVyaXRlZERhdGEoKQogICAgICwgdGV4dEp1c3RpZnko
UmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0SnVzdGlmeSgpKQogI2VuZGlmCiAgICAgLCB0ZXh0RGVj
b3JhdGlvblNraXAoUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RGVjb3JhdGlvblNraXAoKS50b1Jh
dygpKQotICAgICwgdGV4dFVuZGVybGluZVBvc2l0aW9uKFJlbmRlclN0eWxlOjppbml0aWFsVGV4
dFVuZGVybGluZVBvc2l0aW9uKCkudG9SYXcoKSkKKyAgICAsIHRleHRVbmRlcmxpbmVQb3NpdGlv
bihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0VW5kZXJsaW5l
UG9zaXRpb24oKSkpCiAgICAgLCBydWJ5UG9zaXRpb24oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJl
bmRlclN0eWxlOjppbml0aWFsUnVieVBvc2l0aW9uKCkpKQogICAgICwgdGV4dFpvb20oc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFJlbmRlclN0eWxlOjppbml0aWFsVGV4dFpvb20oKSkpCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTE2OCw2ICsxNzIsOCBAQCBpbmxpbmUgU3R5bGVSYXJlSW5o
ZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZVJhcmVJbmhlcml0
ZWREYQogICAgICwgY3Vyc29yRGF0YShvLmN1cnNvckRhdGEpCiAgICAgLCBpbmRlbnQoby5pbmRl
bnQpCiAgICAgLCBlZmZlY3RpdmVab29tKG8uZWZmZWN0aXZlWm9vbSkKKyAgICAsIHRleHRVbmRl
cmxpbmVPZmZzZXQoby50ZXh0VW5kZXJsaW5lT2Zmc2V0KQorICAgICwgdGV4dERlY29yYXRpb25U
aGlja25lc3Moby50ZXh0RGVjb3JhdGlvblRoaWNrbmVzcykKICAgICAsIGN1c3RvbVByb3BlcnRp
ZXMoby5jdXN0b21Qcm9wZXJ0aWVzKQogICAgICwgd2lkb3dzKG8ud2lkb3dzKQogICAgICwgb3Jw
aGFucyhvLm9ycGhhbnMpCkBAIC0yNzMsNiArMjc5LDggQEAgYm9vbCBTdHlsZVJhcmVJbmhlcml0
ZWREYXRhOjpvcGVyYXRvcj09KGNvbnN0IFN0eWxlUmFyZUluaGVyaXRlZERhdGEmIG8pIGNvbnN0
CiAgICAgICAgICYmIGFyZVBvaW50aW5nVG9FcXVhbERhdGEoY3Vyc29yRGF0YSwgby5jdXJzb3JE
YXRhKQogICAgICAgICAmJiBpbmRlbnQgPT0gby5pbmRlbnQKICAgICAgICAgJiYgZWZmZWN0aXZl
Wm9vbSA9PSBvLmVmZmVjdGl2ZVpvb20KKyAgICAgICAgJiYgdGV4dFVuZGVybGluZU9mZnNldCA9
PSBvLnRleHRVbmRlcmxpbmVPZmZzZXQKKyAgICAgICAgJiYgdGV4dERlY29yYXRpb25UaGlja25l
c3MgPT0gby50ZXh0RGVjb3JhdGlvblRoaWNrbmVzcwogICAgICAgICAmJiB3aWRvd3MgPT0gby53
aWRvd3MKICAgICAgICAgJiYgb3JwaGFucyA9PSBvLm9ycGhhbnMKICAgICAgICAgJiYgaGFzQXV0
b1dpZG93cyA9PSBvLmhhc0F1dG9XaWRvd3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oCmluZGV4IGI4M2E4YzBhYzgx
YzgwNmRkMTZiN2RmZTJiYWQ4MGI4MzNkOWYyYzQuLjFlMTA1YmIxZWY0MzJiOTA5MTg3YzU4YmM3
ZTVlMWYyZWI3NzA5MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaApAQCAtMjgsNiArMjgsOCBAQAogI2luY2x1
ZGUgIkRhdGFSZWYuaCIKICNpbmNsdWRlICJMZW5ndGguaCIKICNpbmNsdWRlICJTdHlsZUN1c3Rv
bVByb3BlcnR5RGF0YS5oIgorI2luY2x1ZGUgIlRleHRVbmRlcmxpbmVPZmZzZXQuaCIKKyNpbmNs
dWRlICJUZXh0RGVjb3JhdGlvblRoaWNrbmVzcy5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAKQEAgLTc5LDYgKzgxLDkg
QEAgcHVibGljOgogICAgIFJlZlB0cjxDdXJzb3JMaXN0PiBjdXJzb3JEYXRhOwogICAgIExlbmd0
aCBpbmRlbnQ7CiAgICAgZmxvYXQgZWZmZWN0aXZlWm9vbTsKKworICAgIFRleHRVbmRlcmxpbmVP
ZmZzZXQgdGV4dFVuZGVybGluZU9mZnNldDsKKyAgICBUZXh0RGVjb3JhdGlvblRoaWNrbmVzcyB0
ZXh0RGVjb3JhdGlvblRoaWNrbmVzczsKICAgICAKICAgICBMZW5ndGggd29yZFNwYWNpbmc7CiAK
QEAgLTEyOCw3ICsxMzMsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgdGV4dEp1c3RpZnkgOiAy
OyAvLyBUZXh0SnVzdGlmeQogI2VuZGlmCiAgICAgdW5zaWduZWQgdGV4dERlY29yYXRpb25Ta2lw
IDogNTsgLy8gVGV4dERlY29yYXRpb25Ta2lwCi0gICAgdW5zaWduZWQgdGV4dFVuZGVybGluZVBv
c2l0aW9uIDogMzsgLy8gVGV4dFVuZGVybGluZVBvc2l0aW9uCisgICAgdW5zaWduZWQgdGV4dFVu
ZGVybGluZVBvc2l0aW9uIDogMjsgLy8gVGV4dFVuZGVybGluZVBvc2l0aW9uCiAgICAgdW5zaWdu
ZWQgcnVieVBvc2l0aW9uIDogMjsgLy8gUnVieVBvc2l0aW9uCiAgICAgdW5zaWduZWQgdGV4dFpv
b206IDE7IC8vIFRleHRab29tCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1RleHREZWNvcmF0aW9uVGhpY2tuZXNzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2M3MGZmMTYx
ZTc3OWM3NWJkZDkxNWE4YWE4ODJhZmFkNTkxYjE1NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcy5oCkBAIC0w
LDAgKzEsMTIxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJMZW5n
dGguaCIKKyNpbmNsdWRlICJGb250TWV0cmljcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFRleHREZWNvcmF0aW9uVGhpY2tuZXNzIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgVGV4
dERlY29yYXRpb25UaGlja25lc3MgY3JlYXRlV2l0aEF1dG8oKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIFRleHREZWNvcmF0aW9uVGhpY2tuZXNzKFR5cGU6OkF1dG8pOworICAgIH0KKyAgICBzdGF0
aWMgVGV4dERlY29yYXRpb25UaGlja25lc3MgY3JlYXRlRnJvbUZvbnQoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIFRleHREZWNvcmF0aW9uVGhpY2tuZXNzKFR5cGU6OkZyb21Gb250KTsKKyAgICB9
CisgICAgc3RhdGljIFRleHREZWNvcmF0aW9uVGhpY2tuZXNzIGNyZWF0ZVdpdGhMZW5ndGgoZmxv
YXQgbGVuZ3RoKQorICAgIHsKKyAgICAgICAgVGV4dERlY29yYXRpb25UaGlja25lc3MgcmVzdWx0
KFR5cGU6Okxlbmd0aCk7CisgICAgICAgIHJlc3VsdC5zZXRMZW5ndGhWYWx1ZShsZW5ndGgpOwor
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGJvb2wgaXNBdXRvKCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBtX3R5cGUgPT0gVHlwZTo6QXV0bzsKKyAgICB9CisKKyAg
ICBib29sIGlzRnJvbUZvbnQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fdHlwZSA9
PSBUeXBlOjpGcm9tRm9udDsKKyAgICB9CisKKyAgICBib29sIGlzTGVuZ3RoKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX3R5cGUgPT0gVHlwZTo6TGVuZ3RoOworICAgIH0KKworICAg
IHZvaWQgc2V0TGVuZ3RoVmFsdWUoZmxvYXQgbGVuZ3RoKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KGlzTGVuZ3RoKCkpOworICAgICAgICBtX2xlbmd0aCA9IGxlbmd0aDsKKyAgICB9CisKKyAgICBm
bG9hdCBsZW5ndGhWYWx1ZSgpIGNvbnN0CisgICAgeworICAgICAgICBBU1NFUlQoaXNMZW5ndGgo
KSk7CisgICAgICAgIHJldHVybiBtX2xlbmd0aDsKKyAgICB9CisKKyAgICBmbG9hdCByZXNvbHZl
KGZsb2F0IGZvbnRTaXplLCBjb25zdCBGb250TWV0cmljcyYgbWV0cmljcykgY29uc3QKKyAgICB7
CisgICAgICAgIGlmIChpc0F1dG8oKSkKKyAgICAgICAgICAgIHJldHVybiBmb250U2l6ZSAvIDE2
OworICAgICAgICBpZiAoaXNGcm9tRm9udCgpKQorICAgICAgICAgICAgcmV0dXJuIG1ldHJpY3Mu
dW5kZXJsaW5lVGhpY2tuZXNzKCk7CisgICAgICAgIEFTU0VSVChpc0xlbmd0aCgpKTsKKyAgICAg
ICAgcmV0dXJuIG1fbGVuZ3RoOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBU
ZXh0RGVjb3JhdGlvblRoaWNrbmVzcyYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBzd2l0
Y2ggKG1fdHlwZSkgeworICAgICAgICBjYXNlIFR5cGU6OkF1dG86CisgICAgICAgIGNhc2UgVHlw
ZTo6RnJvbUZvbnQ6CisgICAgICAgICAgICByZXR1cm4gbV90eXBlID09IG90aGVyLm1fdHlwZTsK
KyAgICAgICAgY2FzZSBUeXBlOjpMZW5ndGg6CisgICAgICAgICAgICByZXR1cm4gbV90eXBlID09
IG90aGVyLm1fdHlwZSAmJiBtX2xlbmd0aCA9PSBvdGhlci5tX2xlbmd0aDsKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAg
fQorCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFRleHREZWNvcmF0aW9uVGhpY2tuZXNzJiBv
dGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKKyAg
ICB9CisKK3ByaXZhdGU6CisgICAgZW51bSBjbGFzcyBUeXBlIHsKKyAgICAgICAgQXV0bywKKyAg
ICAgICAgRnJvbUZvbnQsCisgICAgICAgIExlbmd0aAorICAgIH07CisKKyAgICBUZXh0RGVjb3Jh
dGlvblRoaWNrbmVzcyhUeXBlIHR5cGUpCisgICAgICAgIDogbV90eXBlKHR5cGUpCisgICAgewor
ICAgIH0KKworICAgIFR5cGUgbV90eXBlOworICAgIGZsb2F0IG1fbGVuZ3RoOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1RleHRVbmRlcmxpbmVPZmZzZXQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9UZXh0VW5kZXJsaW5lT2Zmc2V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTI4MzBlOTdiMDczZWZhNmVh
NWMzMWNlMzFjOGI1NDRkODdiYmExOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9UZXh0VW5kZXJsaW5lT2Zmc2V0LmgKQEAgLTAsMCArMSw5MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiTGVuZ3RoLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVGV4dFVuZGVybGluZU9mZnNldCB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFRleHRVbmRlcmxpbmVPZmZzZXQgY3JlYXRlV2l0aEF1dG8oKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIFRleHRVbmRlcmxpbmVPZmZzZXQoZmFsc2UpOworICAgIH0KKworICAgIHN0
YXRpYyBUZXh0VW5kZXJsaW5lT2Zmc2V0IGNyZWF0ZVdpdGhMZW5ndGgoZmxvYXQgbGVuZ3RoKQor
ICAgIHsKKyAgICAgICAgVGV4dFVuZGVybGluZU9mZnNldCByZXN1bHQodHJ1ZSk7CisgICAgICAg
IHJlc3VsdC5zZXRMZW5ndGhWYWx1ZShsZW5ndGgpOworICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIH0KKworICAgIGJvb2wgaXNBdXRvKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAh
aXNMZW5ndGgoKTsKKyAgICB9CisKKyAgICBib29sIGlzTGVuZ3RoKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtX2xlbmd0aCk7CisgICAgfQorCisgICAg
dm9pZCBzZXRMZW5ndGhWYWx1ZShmbG9hdCBsZW5ndGgpCisgICAgeworICAgICAgICBBU1NFUlQo
aXNMZW5ndGgoKSk7CisgICAgICAgIG1fbGVuZ3RoID0gbGVuZ3RoOworICAgIH0KKworICAgIGZs
b2F0IGxlbmd0aFZhbHVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChpc0xlbmd0aCgp
KTsKKyAgICAgICAgcmV0dXJuICptX2xlbmd0aDsKKyAgICB9CisKKyAgICBmbG9hdCBsZW5ndGhP
cihmbG9hdCBkZWZhdWx0VmFsdWUpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9sZW5n
dGgudmFsdWVfb3IoZGVmYXVsdFZhbHVlKTsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yPT0o
Y29uc3QgVGV4dFVuZGVybGluZU9mZnNldCYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gbV9sZW5ndGggPT0gb3RoZXIubV9sZW5ndGg7CisgICAgfQorCisgICAgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IFRleHRVbmRlcmxpbmVPZmZzZXQmIG90aGVyKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBU
ZXh0VW5kZXJsaW5lT2Zmc2V0KGJvb2wgaXNBdXRvKQorICAgIHsKKyAgICAgICAgaWYgKCFpc0F1
dG8pCisgICAgICAgICAgICBtX2xlbmd0aCA9IDA7CisgICAgfQorCisgICAgc3RkOjpvcHRpb25h
bDxmbG9hdD4gbV9sZW5ndGg7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcAppbmRleCAxMzZmMzFhOGViYjkw
YmNjMjhkYTA3Njk4NjczMGMxN2M5ODIzMTE4Li5iM2JjNjg5NzNkYWNiNzEwYTE4YjA3NWIzY2U4
ZDIxNmMyZjgyNzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0
Qm94U3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHls
ZS5jcHAKQEAgLTMxLDEyICszMSwxMCBAQAogI2luY2x1ZGUgIlJvb3RJbmxpbmVCb3guaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAotaW50IGNvbXB1dGVVbmRlcmxpbmVPZmZzZXQoT3B0
aW9uU2V0PFRleHRVbmRlcmxpbmVQb3NpdGlvbj4gdW5kZXJsaW5lUG9zaXRpb24sIGNvbnN0IEZv
bnRNZXRyaWNzJiBmb250TWV0cmljcywgY29uc3QgSW5saW5lVGV4dEJveCogaW5saW5lVGV4dEJv
eCwgaW50IHRleHREZWNvcmF0aW9uVGhpY2tuZXNzKQorCisvLyBUaGUgZGlzdGFuY2UgYmV0d2Vl
biB0aGUgYmFzZWxpbmUgYW5kIHRoZSBuZWFyZXN0IGVkZ2Ugb2YgdGhlIHVuZGVybGluZS4KK2Zs
b2F0IGNvbXB1dGVVbmRlcmxpbmVHYXAoVGV4dFVuZGVybGluZVBvc2l0aW9uIHVuZGVybGluZVBv
c2l0aW9uLCBUZXh0VW5kZXJsaW5lT2Zmc2V0IHVuZGVybGluZU9mZnNldCwgZmxvYXQgdGV4dERl
Y29yYXRpb25UaGlja25lc3MsIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcywgY29uc3Qg
SW5saW5lVGV4dEJveCogaW5saW5lVGV4dEJveCkKIHsKLSAgICAvLyBUaGlzIHJlcHJlc2VudHMg
dGhlIGdhcCBiZXR3ZWVuIHRoZSBiYXNlbGluZSBhbmQgdGhlIGNsb3Nlc3QgZWRnZSBvZiB0aGUg
dW5kZXJsaW5lLgotICAgIGludCBnYXAgPSBzdGQ6Om1heDxpbnQ+KDEsIGNlaWxmKHRleHREZWNv
cmF0aW9uVGhpY2tuZXNzIC8gMi4wKSk7Ci0gICAgCiAgICAgLy8gRklYTUU6IFRoZSBjb2RlIGZv
ciB2aXN1YWwgb3ZlcmZsb3cgZGV0ZWN0aW9uIHBhc3NlcyBpbiBhIG51bGwgaW5saW5lIHRleHQg
Ym94LiBUaGlzIG1lYW5zIGl0IGlzIG5vdwogICAgIC8vIGJyb2tlbiBmb3IgdGhlIGNhc2Ugd2hl
cmUgYXV0byBuZWVkcyB0byBiZWhhdmUgbGlrZSAidW5kZXIiLgogICAgIApAQCAtNDYsMjEgKzQ0
LDI3IEBAIGludCBjb21wdXRlVW5kZXJsaW5lT2Zmc2V0KE9wdGlvblNldDxUZXh0VW5kZXJsaW5l
UG9zaXRpb24+IHVuZGVybGluZVBvc2l0aW9uLCBjCiAgICAgLy8gZXZlbiBpZiBpdCBpcyBob3Jp
em9udGFsLCBidXQgZGV0ZWN0aW5nIHRoaXMgaGFzIHBlcmZvcm1hbmNlIGltcGxpY2F0aW9ucy4g
Rm9yIG5vdyB3ZSBvbmx5IHdvcmsgd2l0aAogICAgIC8vIHZlcnRpY2FsIHRleHQsIHNpbmNlIHdl
IGFscmVhZHkgZGV0ZXJtaW5lZCB0aGUgYmFzZWxpbmUgdHlwZSB0byBiZSBpZGVvZ3JhcGhpYyBp
biB0aGF0CiAgICAgLy8gY2FzZS4KLSAgICAKLSAgICBhdXRvIHJlc29sdmVkVW5kZXJsaW5lUG9z
aXRpb24gPSB1bmRlcmxpbmVQb3NpdGlvbjsKLSAgICBpZiAocmVzb2x2ZWRVbmRlcmxpbmVQb3Np
dGlvbiA9PSBUZXh0VW5kZXJsaW5lUG9zaXRpb246OkF1dG8pIHsKLSAgICAgICAgaWYgKGlubGlu
ZVRleHRCb3gpCi0gICAgICAgICAgICByZXNvbHZlZFVuZGVybGluZVBvc2l0aW9uID0gaW5saW5l
VGV4dEJveC0+cm9vdCgpLmJhc2VsaW5lVHlwZSgpID09IElkZW9ncmFwaGljQmFzZWxpbmUgPyBU
ZXh0VW5kZXJsaW5lUG9zaXRpb246OlVuZGVyIDogVGV4dFVuZGVybGluZVBvc2l0aW9uOjpBbHBo
YWJldGljOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXNvbHZlZFVuZGVybGluZVBvc2l0
aW9uID0gVGV4dFVuZGVybGluZVBvc2l0aW9uOjpBbHBoYWJldGljOwotICAgIH0KLSAgICAKLSAg
ICBzd2l0Y2ggKHN0YXRpY19jYXN0PFRleHRVbmRlcmxpbmVQb3NpdGlvbj4ocmVzb2x2ZWRVbmRl
cmxpbmVQb3NpdGlvbi50b1JhdygpKSkgewotICAgIGNhc2UgVGV4dFVuZGVybGluZVBvc2l0aW9u
OjpBbHBoYWJldGljOgotICAgICAgICByZXR1cm4gZm9udE1ldHJpY3MuYXNjZW50KCkgKyBnYXA7
CisKKyAgICBzd2l0Y2ggKHVuZGVybGluZVBvc2l0aW9uKSB7CisgICAgY2FzZSBUZXh0VW5kZXJs
aW5lUG9zaXRpb246OkF1dG86CisgICAgICAgIGlmICh1bmRlcmxpbmVPZmZzZXQuaXNBdXRvKCkp
IHsKKyAgICAgICAgICAgIGF1dG8gcmVzb2x2ZVBvc2l0aW9uID0gWyZdKCkgLT4gVGV4dFVuZGVy
bGluZVBvc2l0aW9uIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQodW5kZXJsaW5lUG9zaXRpb24g
PT0gVGV4dFVuZGVybGluZVBvc2l0aW9uOjpBdXRvKTsKKyAgICAgICAgICAgICAgICBpZiAoaW5s
aW5lVGV4dEJveCAmJiBpbmxpbmVUZXh0Qm94LT5yb290KCkuYmFzZWxpbmVUeXBlKCkgPT0gSWRl
b2dyYXBoaWNCYXNlbGluZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRleHRVbmRlcmxp
bmVQb3NpdGlvbjo6VW5kZXI7CisgICAgICAgICAgICAgICAgcmV0dXJuIFRleHRVbmRlcmxpbmVQ
b3NpdGlvbjo6QXV0bzsKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBhdXRvIHJlc29sdmVk
UG9zaXRpb24gPSByZXNvbHZlUG9zaXRpb24oKTsKKyAgICAgICAgICAgIGlmIChyZXNvbHZlZFBv
c2l0aW9uID09IFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6VW5kZXIpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGNvbXB1dGVVbmRlcmxpbmVHYXAocmVzb2x2ZWRQb3NpdGlvbiwgVGV4dFVuZGVybGlu
ZU9mZnNldDo6Y3JlYXRlV2l0aEF1dG8oKSwgdGV4dERlY29yYXRpb25UaGlja25lc3MsIGZvbnRN
ZXRyaWNzLCBpbmxpbmVUZXh0Qm94KTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6OmZsb29yKHN0
ZDo6bWF4KDEuMGYsIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzIC8gMikpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgQVNTRVJUKHVuZGVybGluZU9mZnNldC5pc0xlbmd0aCgpKTsKKyAg
ICAgICAgICAgIHJldHVybiB1bmRlcmxpbmVPZmZzZXQubGVuZ3RoVmFsdWUoKTsKKyAgICAgICAg
fQogICAgIGNhc2UgVGV4dFVuZGVybGluZVBvc2l0aW9uOjpVbmRlcjogewogICAgICAgICBBU1NF
UlQoaW5saW5lVGV4dEJveCk7Ci0gICAgICAgIC8vIFBvc2l0aW9uIHVuZGVybGluZSByZWxhdGl2
ZSB0byB0aGUgYm90dG9tIGVkZ2Ugb2YgdGhlIGxvd2VzdCBlbGVtZW50J3MgY29udGVudCBib3gu
CisgICAgICAgIC8qLy8gUG9zaXRpb24gdW5kZXJsaW5lIHJlbGF0aXZlIHRvIHRoZSBib3R0b20g
ZWRnZSBvZiB0aGUgbG93ZXN0IGVsZW1lbnQncyBjb250ZW50IGJveC4KICAgICAgICAgY29uc3Qg
Um9vdElubGluZUJveCYgcm9vdEJveCA9IGlubGluZVRleHRCb3gtPnJvb3QoKTsKICAgICAgICAg
Y29uc3QgUmVuZGVyRWxlbWVudCogZGVjb3JhdGlvblJlbmRlcmVyID0gaW5saW5lVGV4dEJveC0+
cGFyZW50KCktPnJlbmRlcmVyKCkuZW5jbG9zaW5nUmVuZGVyZXJXaXRoVGV4dERlY29yYXRpb24o
VGV4dERlY29yYXRpb246OlVuZGVybGluZSwgaW5saW5lVGV4dEJveC0+aXNGaXJzdExpbmUoKSk7
CiAgICAgICAgIApAQCAtNzMsMTUgKzc3LDIwIEBAIGludCBjb21wdXRlVW5kZXJsaW5lT2Zmc2V0
KE9wdGlvblNldDxUZXh0VW5kZXJsaW5lUG9zaXRpb24+IHVuZGVybGluZVBvc2l0aW9uLCBjCiAg
ICAgICAgICAgICBvZmZzZXQgPSBpbmxpbmVUZXh0Qm94LT5sb2dpY2FsQm90dG9tKCk7CiAgICAg
ICAgICAgICByb290Qm94Lm1heExvZ2ljYWxCb3R0b21Gb3JUZXh0RGVjb3JhdGlvbkxpbmUob2Zm
c2V0LCBkZWNvcmF0aW9uUmVuZGVyZXIsIFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUpOwogICAg
ICAgICAgICAgb2Zmc2V0IC09IGlubGluZVRleHRCb3gtPmxvZ2ljYWxCb3R0b20oKTsKLSAgICAg
ICAgfQotICAgICAgICByZXR1cm4gaW5saW5lVGV4dEJveC0+bG9naWNhbEhlaWdodCgpICsgZ2Fw
ICsgc3RkOjptYXg8ZmxvYXQ+KG9mZnNldCwgMCk7CisgICAgICAgIH0qLworICAgICAgICBhdXRv
IHJlc3VsdCA9IGlubGluZVRleHRCb3gtPmxvZ2ljYWxIZWlnaHQoKTsKKyAgICAgICAgcmVzdWx0
ICs9IHVuZGVybGluZU9mZnNldC5sZW5ndGhPcigwKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICB9CisgICAgY2FzZSBUZXh0VW5kZXJsaW5lUG9zaXRpb246OkZyb21Gb250OiB7CisgICAg
ICAgIGF1dG8gcmVzdWx0ID0gZm9udE1ldHJpY3MudW5kZXJsaW5lUG9zaXRpb24oKTsKKyAgICAg
ICAgcmVzdWx0ICs9IHVuZGVybGluZU9mZnNldC5sZW5ndGhPcigwKTsKKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9Ci0gICAgY2FzZSBUZXh0VW5kZXJsaW5lUG9zaXRpb246OkF1dG86Ci0g
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIHJldHVybiBmb250TWV0cmljcy5hc2NlbnQoKSArIGdhcDsKKyAgICByZXR1
cm4gMDsKIH0KICAgICAKIHZvaWQgZ2V0V2F2eVN0cm9rZVBhcmFtZXRlcnMoZmxvYXQgZm9udFNp
emUsIGZsb2F0JiBjb250cm9sUG9pbnREaXN0YW5jZSwgZmxvYXQmIHN0ZXApCkBAIC0xMTAsNyAr
MTE5LDcgQEAgR2x5cGhPdmVyZmxvdyB2aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKGNvbnN0
IFJlbmRlclN0eWxlJiBsaW5lU3R5bGUsIGNvbnN0IEkKICAgICBpZiAoZGVjb3JhdGlvbi5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiBHbHlwaE92ZXJmbG93KCk7CiAKLSAgICBmbG9hdCBzdHJv
a2VUaGlja25lc3MgPSB0ZXh0RGVjb3JhdGlvblN0cm9rZVRoaWNrbmVzcyhsaW5lU3R5bGUuY29t
cHV0ZWRGb250UGl4ZWxTaXplKCkpOworICAgIGZsb2F0IHN0cm9rZVRoaWNrbmVzcyA9IGxpbmVT
dHlsZS50ZXh0RGVjb3JhdGlvblRoaWNrbmVzcygpLnJlc29sdmUobGluZVN0eWxlLmNvbXB1dGVk
Rm9udFNpemUoKSwgbGluZVN0eWxlLmZvbnRNZXRyaWNzKCkpOwogICAgIGZsb2F0IGNvbnRyb2xQ
b2ludERpc3RhbmNlID0gMDsKICAgICBmbG9hdCBzdGVwOwogICAgIGZsb2F0IHdhdnlPZmZzZXQg
PSAwOwpAQCAtMTI5LDggKzEzOCw4IEBAIEdseXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZsb3dGb3JE
ZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlLCBjb25zdCBJCiAgICAgLy8g
VGhlc2UgbWV0cmljcyBtdXN0IG1hdGNoIHdoZXJlIHVuZGVybGluZXMgZ2V0IGRyYXduLgogICAg
IGlmIChkZWNvcmF0aW9uICYgVGV4dERlY29yYXRpb246OlVuZGVybGluZSkgewogICAgICAgICAv
LyBDb21wZW5zYXRlIGZvciB0aGUgaW50ZWdyYWwgY2VpbGluZyBpbiBHcmFwaGljc0NvbnRleHQ6
OmNvbXB1dGVMaW5lQm91bmRzQW5kQW50aWFsaWFzaW5nTW9kZUZvclRleHQoKQotICAgICAgICBp
bnQgdW5kZXJsaW5lT2Zmc2V0ID0gMTsKLSAgICAgICAgdW5kZXJsaW5lT2Zmc2V0ICs9IGNvbXB1
dGVVbmRlcmxpbmVPZmZzZXQobGluZVN0eWxlLnRleHRVbmRlcmxpbmVQb3NpdGlvbigpLCBsaW5l
U3R5bGUuZm9udE1ldHJpY3MoKSwgaW5saW5lVGV4dEJveCwgc3Ryb2tlVGhpY2tuZXNzKTsKKyAg
ICAgICAgZmxvYXQgdW5kZXJsaW5lT2Zmc2V0ID0gMTsKKyAgICAgICAgdW5kZXJsaW5lT2Zmc2V0
ICs9IGNvbXB1dGVVbmRlcmxpbmVHYXAobGluZVN0eWxlLnRleHRVbmRlcmxpbmVQb3NpdGlvbigp
LCBsaW5lU3R5bGUudGV4dFVuZGVybGluZU9mZnNldCgpLCBzdHJva2VUaGlja25lc3MsIGxpbmVT
dHlsZS5mb250TWV0cmljcygpLCBpbmxpbmVUZXh0Qm94KTsKICAgICAgICAgaWYgKGRlY29yYXRp
b25TdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpXYXZ5KSB7CiAgICAgICAgICAgICBleHRl
bmRJbnRUb0Zsb2F0KG92ZXJmbG93UmVzdWx0LmJvdHRvbSwgdW5kZXJsaW5lT2Zmc2V0ICsgd2F2
eU9mZnNldCArIGNvbnRyb2xQb2ludERpc3RhbmNlICsgc3Ryb2tlVGhpY2tuZXNzIC0gaGVpZ2h0
KTsKICAgICAgICAgICAgIGV4dGVuZEludFRvRmxvYXQob3ZlcmZsb3dSZXN1bHQudG9wLCAtKHVu
ZGVybGluZU9mZnNldCArIHdhdnlPZmZzZXQgLSBjb250cm9sUG9pbnREaXN0YW5jZSAtIHN0cm9r
ZVRoaWNrbmVzcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4
dEJveFN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuaApp
bmRleCBjYzUzMTJhNDg3ZGE4NTE5ZGQ2ZDUwNzA0YTc2MDc3YmE5N2EzZDI2Li4wN2RkMTM4MWY2
OTNmZWQ4OTIyMzIyMzM5ZjA1NGU5MGY0YjhiZDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9J
bmxpbmVUZXh0Qm94U3R5bGUuaApAQCAtMzMsMTIgKzMzLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgSW5saW5lVGV4dEJveDsKIGNsYXNzIFJlbmRlclN0eWxlOwogCi1pbmxpbmUgZmxv
YXQgdGV4dERlY29yYXRpb25TdHJva2VUaGlja25lc3MoZmxvYXQgZm9udFNpemUpCi17Ci0gICAg
Y29uc3QgZmxvYXQgdGV4dERlY29yYXRpb25CYXNlRm9udFNpemUgPSAxNjsKLSAgICByZXR1cm4g
Zm9udFNpemUgLyB0ZXh0RGVjb3JhdGlvbkJhc2VGb250U2l6ZTsKLX0KLQogaW5saW5lIGZsb2F0
IHdhdnlPZmZzZXRGcm9tRGVjb3JhdGlvbigpCiB7CiAgICAgcmV0dXJuIDE7CkBAIC00Niw2ICs0
MCw2IEBAIGlubGluZSBmbG9hdCB3YXZ5T2Zmc2V0RnJvbURlY29yYXRpb24oKQogCiBHbHlwaE92
ZXJmbG93IHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyU3R5bGUmIGxp
bmVTdHlsZSwgY29uc3QgSW5saW5lVGV4dEJveCopOwogdm9pZCBnZXRXYXZ5U3Ryb2tlUGFyYW1l
dGVycyhmbG9hdCBmb250U2l6ZSwgZmxvYXQmIGNvbnRyb2xQb2ludERpc3RhbmNlLCBmbG9hdCYg
c3RlcCk7Ci1pbnQgY29tcHV0ZVVuZGVybGluZU9mZnNldChPcHRpb25TZXQ8VGV4dFVuZGVybGlu
ZVBvc2l0aW9uPiwgY29uc3QgRm9udE1ldHJpY3MmLCBjb25zdCBJbmxpbmVUZXh0Qm94KiwgaW50
IHRleHREZWNvcmF0aW9uVGhpY2tuZXNzKTsKK2Zsb2F0IGNvbXB1dGVVbmRlcmxpbmVHYXAoVGV4
dFVuZGVybGluZVBvc2l0aW9uLCBUZXh0VW5kZXJsaW5lT2Zmc2V0LCBmbG9hdCB0ZXh0RGVjb3Jh
dGlvblRoaWNrbmVzcywgY29uc3QgRm9udE1ldHJpY3MmLCBjb25zdCBJbmxpbmVUZXh0Qm94Kik7
CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2NzczMtdGV4dC9jc3MzLXRleHQtZGVjb3JhdGlvbi90ZXh0LWRlY29yYXRpb24tb2Zmc2V0
LXBhcnNlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2NzczMtdGV4dC9jc3MzLXRleHQtZGVjb3Jh
dGlvbi90ZXh0LWRlY29yYXRpb24tb2Zmc2V0LXBhcnNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWZmNTIz
NjBkZmY2ZDYxOWZjNjIyNWFhZjY4ZDI3OTEyZjliNTAwYgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvY3NzMy10ZXh0L2NzczMtdGV4dC1kZWNvcmF0aW9uL3RleHQtZGVjb3Jh
dGlvbi1vZmZzZXQtcGFyc2UuaHRtbApAQCAtMCwwICsxLDI1IEBACis8IURPQ1RZUEUgaHRtbD4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0idGVzdDEiPjwvZGl2
PgorPGRpdiBpZD0idGVzdDIiIHN0eWxlPSJ0ZXh0LXVuZGVybGluZS1vZmZzZXQ6IGF1dG87Ij48
L2Rpdj4KKzxkaXYgaWQ9InRlc3QzIiBzdHlsZT0idGV4dC11bmRlcmxpbmUtb2Zmc2V0OiBhdXRv
IDM3cHg7Ij48L2Rpdj4KKzxkaXYgaWQ9InRlc3Q0IiBzdHlsZT0idGV4dC11bmRlcmxpbmUtb2Zm
c2V0OiBnYXJiYWdlOyI+PC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0NSIgc3R5bGU9InRleHQtdW5kZXJs
aW5lLW9mZnNldDogMzdweDsiPjwvZGl2PgorPGRpdiBpZD0idGVzdDYiIHN0eWxlPSJmb250LXNp
emU6IDEwMHB4OyB0ZXh0LXVuZGVybGluZS1vZmZzZXQ6IDJlbTsiPjwvZGl2PgorPGRpdiBzdHls
ZT0iZm9udC1zaXplOiAyMHB4OyB0ZXh0LXVuZGVybGluZS1vZmZzZXQ6IDJlbTsiPjxkaXYgaWQ9
InRlc3Q3IiBzdHlsZT0iZm9udC1zaXplOiAxMDBweDsiPjwvZGl2PjwvZGl2PgorPHNjcmlwdD4K
K3Nob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3Rlc3QxJykpLmdldFByb3BlcnR5VmFsdWUoJ3RleHQtdW5kZXJsaW5l
LW9mZnNldCcpIiwgImF1dG8iKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldENv
bXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QyJykpLmdldFByb3BlcnR5
VmFsdWUoJ3RleHQtdW5kZXJsaW5lLW9mZnNldCcpIiwgImF1dG8iKTsKK3Nob3VsZEJlRXF1YWxU
b1N0cmluZygid2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3Rlc3QzJykpLmdldFByb3BlcnR5VmFsdWUoJ3RleHQtdW5kZXJsaW5lLW9mZnNldCcpIiwgImF1
dG8iKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3Q0JykpLmdldFByb3BlcnR5VmFsdWUoJ3RleHQtdW5k
ZXJsaW5lLW9mZnNldCcpIiwgImF1dG8iKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93
LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3Q1JykpLmdldFBy
b3BlcnR5VmFsdWUoJ3RleHQtdW5kZXJsaW5lLW9mZnNldCcpIiwgIjM3cHgiKTsKK3Nob3VsZEJl
RXF1YWxUb1N0cmluZygid2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Rlc3Q2JykpLmdldFByb3BlcnR5VmFsdWUoJ3RleHQtdW5kZXJsaW5lLW9mZnNldCcp
IiwgIjIwMHB4Iik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5nZXRDb21wdXRlZFN0
eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0NycpKS5nZXRQcm9wZXJ0eVZhbHVlKCd0
ZXh0LXVuZGVybGluZS1vZmZzZXQnKSIsICI0MHB4Iik7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353335</attachid>
            <date>2018-10-29 17:10:56 -0700</date>
            <delta_ts>2018-10-31 20:50:28 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-190774-20181029171054.patch</filename>
            <type>text/plain</type>
            <size>128271</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MzA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2U4Y2M4YjIzZmQ2ODA4
Mzk1NjhkNzgxNTMwZjQ5Nzk2ODlkZGQ4Mi4uYTdmMWQ1NGU0ODYxYzkzY2NkY2Q4NmFmNjdiNzAy
OTE1ZGRiYTYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE4LTEwLTIwICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
IHRleHQtZGVjb3JhdGlvbi1vZmZzZXQgYW5kIHRleHQtZGVjb3JhdGlvbi13aWR0aAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNzc0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChP
T1BTISkuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0ZXh0RGVjb3JhdGlvbk9mZnNldFRvQ1NT
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6dGV4dERlY29yYXRpb25UaGlja25lc3NUb0NTU1Zh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9y
UHJvcGVydHlpblN0eWxlKToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydGllcy5qc29uOgorICAg
ICAgICAqIGNzcy9DU1NWYWx1ZUtleXdvcmRzLmluOgorICAgICAgICAqIGNzcy9TdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydFRleHREZWNvcmF0aW9uT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydFRleHREZWNvcmF0aW9uVGhpY2tuZXNzKToKKyAgICAgICAg
KiBjc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNv
bnN1bWVUZXh0RGVjb3JhdGlvbk9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lVGV4
dERlY29yYXRpb25UaGlja25lc3MpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJz
ZXI6OnBhcnNlU2luZ2xlVmFsdWUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnRleHREZWNvcmF0aW9uT2Zm
c2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjp0ZXh0RGVjb3JhdGlv
blRoaWNrbmVzcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0VGV4
dERlY29yYXRpb25PZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFRl
eHREZWNvcmF0aW9uVGhpY2tuZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpp
bml0aWFsVGV4dERlY29yYXRpb25PZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OmluaXRpYWxUZXh0RGVjb3JhdGlvblRoaWNrbmVzcyk6CisgICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9UZXh0RGVjb3JhdGlvbk9mZnNldC5jcHA6IEFkZGVkLgorICAgICAg
ICAqIHJlbmRlcmluZy9zdHlsZS9UZXh0RGVjb3JhdGlvbk9mZnNldC5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlRleHREZWNvcmF0aW9uT2Zmc2V0OjpjcmVhdGVXaXRoQXV0byk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvbk9mZnNldDo6Y3JlYXRlRnJvbUZvbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dERlY29yYXRpb25PZmZzZXQ6OmNyZWF0ZVdpdGhMZW5ndGgpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dERlY29yYXRpb25PZmZzZXQ6OmlzQXV0byBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvbk9mZnNldDo6aXNGcm9tRm9udCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvbk9mZnNldDo6aXNMZW5ndGggY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dERlY29yYXRpb25PZmZzZXQ6OnNldExlbmd0aFZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHREZWNvcmF0aW9uT2Zmc2V0OjpsZW5ndGhWYWx1ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvbk9mZnNldDo6b3BlcmF0b3I9
PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvbk9mZnNldDo6b3BlcmF0
b3IhPSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvbk9mZnNldDo6VGV4
dERlY29yYXRpb25PZmZzZXQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9UZXh0RGVjb3Jh
dGlvblRoaWNrbmVzcy5jcHA6IEFkZGVkLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9UZXh0
RGVjb3JhdGlvblRoaWNrbmVzcy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHREZWNv
cmF0aW9uVGhpY2tuZXNzOjpjcmVhdGVXaXRoQXV0byk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
RGVjb3JhdGlvblRoaWNrbmVzczo6Y3JlYXRlRnJvbUZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dERlY29yYXRpb25UaGlja25lc3M6OmNyZWF0ZVdpdGhMZW5ndGgpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dERlY29yYXRpb25UaGlja25lc3M6OmlzQXV0byBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0RGVjb3JhdGlvblRoaWNrbmVzczo6aXNGcm9tRm9udCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvblRoaWNrbmVzczo6aXNMZW5ndGggY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dERlY29yYXRpb25UaGlja25lc3M6OnNldExlbmd0aFZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHREZWNvcmF0aW9uVGhpY2tuZXNzOjpsZW5ndGhWYWx1
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvblRoaWNrbmVzczo6b3Bl
cmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvblRoaWNrbmVz
czo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvblRo
aWNrbmVzczo6VGV4dERlY29yYXRpb25UaGlja25lc3MpOgorCiAyMDE4LTEwLTE5ICBKdXN0aW4g
RmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkdQVV0gQWRkIHN0dWJz
IGZvciBXZWJHUFVTd2FwQ2hhaW4gYW5kIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5o
CmluZGV4IDk2OGMxN2MyOGNmMjZlZjU5ODVhNGQzOThmNzdlNWVhMThlY2M1M2MuLmY3ZWIwNzg5
OTIzMjA0MTcwYmI0NTZlMTgwN2E4MTE1Zjg3M2QyNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApAQCAtMTI1OCwx
MSArMTI1OCw2IEBACiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCiAjdW5kZWYg
RU5BQkxFX09QRU5UWVBFX1ZFUlRJQ0FMCiAjZGVmaW5lIEVOQUJMRV9PUEVOVFlQRV9WRVJUSUNB
TCAxCi0jZGVmaW5lIEVOQUJMRV9DU1MzX1RFWFRfREVDT1JBVElPTl9TS0lQX0lOSyAxCi0jZW5k
aWYKLQotI2lmIFBMQVRGT1JNKENPQ09BKQotI2RlZmluZSBFTkFCTEVfQ1NTM19URVhUX0RFQ09S
QVRJT05fU0tJUF9JTksgMQogI2VuZGlmCiAKICNpZiBDT01QSUxFUihNU1ZDKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQ2NTAx
ZWI4NjhiMjU5NGJiNTk3MTExODczYmJhMjkwZDBkYTI5NzkuLmNjZjgxZjIxZTA3N2NmZmQxMjJm
Y2ZhYjM4NDNkNGU3YTMwZjA2ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTYzMSw2ICs2MzEsOCBAQAogCQkxQzI0RUVBNTFD
NzI5Q0U0MDA4MEY4RkMgLyogRm9udEZhY2VTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMjRFRUEzMUM3MjlDRTQwMDgwRjhGQyAvKiBGb250RmFj
ZVNldC5oICovOyB9OwogCQkxQzI0RUVBOTFDNzJBN0I0MDA4MEY4RkMgLyogSlNGb250RmFjZVNl
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMyNEVF
QTcxQzcyQTdCNDAwODBGOEZDIC8qIEpTRm9udEZhY2VTZXQuaCAqLzsgfTsKIAkJMUM2NjI2MTEx
QzZFN0NBNjAwQUI1MjdDIC8qIEZvbnRGYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQzY2MjYwRjFDNkU3Q0E2MDBBQjUyN0MgLyogRm9udEZhY2Uu
aCAqLzsgfTsKKwkJMUM3M0E3MTMyMTg1NzU3RTAwNENDRUE1IC8qIFRleHRVbmRlcmxpbmVPZmZz
ZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQjZC
NEZCMjE3QjgzOTQwMDkzQjlDRCAvKiBUZXh0VW5kZXJsaW5lT2Zmc2V0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMUM3M0E3MTUyMTg1NzU4NzAw
NENDRUE1IC8qIFRleHREZWNvcmF0aW9uVGhpY2tuZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0I2QjRGODIxN0I4MzkzMDA5M0I5Q0QgLyogVGV4
dERlY29yYXRpb25UaGlja25lc3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkxQzgxQjk1QTBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ29u
dHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUM4MUI5NTYwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNvbnRyb2xsZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQzgxQjk1QzBFOTcz
MzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzgxQjk1ODBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVj
dG9yQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMUNBMTlFMTYwREMyNTVDQTAwNjVBOTk0IC8qIEV2ZW50TG9vcC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBMTlFMTUwREMyNTVDQTAwNjVB
OTk0IC8qIEV2ZW50TG9vcC5oICovOyB9OwpAQCAtNjM3Nyw2ICs2Mzc5LDggQEAKIAkJMUNBRjM0
N0UwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJTY3JpcHRPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUNBRjM0N0YwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlNjcmlwdE9iamVjdC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBRjM0ODAwQTZDNDA1MjAwQUJFMDZF
IC8qIFdlYlNjcmlwdE9iamVjdFByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxQ0I2QjRGODIxN0I4MzkzMDA5M0I5Q0QgLyogVGV4dERlY29yYXRpb25UaGlja25lc3Mu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVGV4dERlY29yYXRpb25UaGlja25lc3MuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMUNCNkI0RkIyMTdCODM5NDAwOTNCOUNEIC8qIFRleHRVbmRlcmxp
bmVPZmZzZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dFVuZGVybGluZU9mZnNldC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0NERjVCQjE5OTAzMzI0MDBCQ0VCQUQgLyogU1ZHVG9P
VEZGb250Q29udmVyc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUNDREY1QkMxOTkwMzMyNDAwQkNFQkFEIC8qIFNWR1RvT1RGRm9udENvbnZlcnNpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHVG9PVEZGb250Q29udmVyc2lvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0RENDVFNDBCQTlDODQ2MDBGOTAxNDcg
LyogRGVidWdSZWxlYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9
IERlYnVnUmVsZWFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5
ODE5LDkgKzE5ODIzLDcgQEAKIAkJCQlFNDIwNTAxNjIxNDE5MDFCMDA2NkVGM0IgLyogUHJvY2Vz
c1dhcm1pbmcuY3BwICovLAogCQkJCUU0MjA1MDE0MjE0MTkwMUEwMDY2RUYzQiAvKiBQcm9jZXNz
V2FybWluZy5oICovLAogCQkJCUNEOUE4N0Y5MjE1RDZDRjMwMDZGMTdCNSAvKiBRdWlya3MuY3Bw
ICovLAotCQkJCUNEOUE4N0YyMjE1RDQzQTYwMDZGMTdCNSAvKiBRdWlya3MuY3BwICovLAogCQkJ
CUNEOUE4N0ZCMjE1RDZDRjMwMDZGMTdCNSAvKiBRdWlya3MuaCAqLywKLQkJCQlDRDlBODdGMTIx
NUQ0M0E2MDA2RjE3QjUgLyogUXVpcmtzLmggKi8sCiAJCQkJNDZCOTUxOEQyMDdENjMyQTAwQTdE
MkREIC8qIFJlbW90ZURPTVdpbmRvdy5jcHAgKi8sCiAJCQkJNDZCOTUxOEUyMDdENjMyQTAwQTdE
MkREIC8qIFJlbW90ZURPTVdpbmRvdy5oICovLAogCQkJCTQ2QkNCQkMzMjA4NTAwQTcwMDcxMDYz
OCAvKiBSZW1vdGVET01XaW5kb3cuaWRsICovLApAQCAtMjQ1MzcsNyArMjQ1MzksOSBAQAogCQkJ
CUJDMjI3NDc1MEU4MzY2RTIwMEU3Rjk3NSAvKiBTVkdSZW5kZXJTdHlsZS5oICovLAogCQkJCUJD
MjI3NDc2MEU4MzY2RTIwMEU3Rjk3NSAvKiBTVkdSZW5kZXJTdHlsZURlZnMuY3BwICovLAogCQkJ
CUJDMjI3NDc3MEU4MzY2RTIwMEU3Rjk3NSAvKiBTVkdSZW5kZXJTdHlsZURlZnMuaCAqLywKKwkJ
CQkxQ0I2QjRGODIxN0I4MzkzMDA5M0I5Q0QgLyogVGV4dERlY29yYXRpb25UaGlja25lc3MuaCAq
LywKIAkJCQk0NDhCMUI3ODBGM0EyRjlCMDA0N0E5RTIgLyogVGV4dFNpemVBZGp1c3RtZW50Lmgg
Ki8sCisJCQkJMUNCNkI0RkIyMTdCODM5NDAwOTNCOUNEIC8qIFRleHRVbmRlcmxpbmVPZmZzZXQu
aCAqLywKIAkJCQkwRjE1RUQ1OTFCN0VDN0M1MDBFRERGRUIgLyogV2lsbENoYW5nZURhdGEuY3Bw
ICovLAogCQkJCTBGMTVFRDVBMUI3RUM3QzUwMEVEREZFQiAvKiBXaWxsQ2hhbmdlRGF0YS5oICov
LAogCQkJKTsKQEAgLTMxMTgxLDYgKzMxMTg1LDcgQEAKIAkJCQk5MzQzQ0I4MjEyRjI1RTUxMDAz
M0M1RUUgLyogVGV4dENvZGVjVVRGOC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQyQjk3Q0ExMzEz
ODk0MzAwOEJFRjRCIC8qIFRleHRDb250cm9sSW5uZXJFbGVtZW50cy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTgyREUzMjUxQzMwQzg1NDAwQkUwMkE4IC8qIFRleHREZWNvcmF0aW9uUGFpbnRlci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMUM3M0E3MTUyMTg1NzU4NzAwNENDRUE1IC8qIFRleHREZWNv
cmF0aW9uVGhpY2tuZXNzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0JDODRCNDEyMzcxMTgwMDAw
QzYxNjEgLyogVGV4dERvY3VtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0JDODQ4NDEyMzZG
RDkzMDAwQzYxNjEgLyogVGV4dERvY3VtZW50UGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
MkMzREE0NzBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dEVuY29kaW5nLmggaW4gSGVhZGVycyAqLywK
QEAgLTMxMjExLDYgKzMxMjE2LDcgQEAKIAkJCQkwNzY5NzA4NzE0NjNBRDg3MDBGNTAyQ0YgLyog
VGV4dFRyYWNrTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjFBRDRFNzQxM0ExMkE0NjAwODQ2
QjI3IC8qIFRleHRUcmFja0xvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q4QjVBNDkxODBF
MTM4QjAwOEI4RTY1IC8qIFRleHRUcmFja01lZGlhU291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkxQzczQTcxMzIxODU3NTdFMDA0Q0NFQTUgLyogVGV4dFVuZGVybGluZU9mZnNldC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMjlGQUY0QjYxOTVBQjA4OTAwQTUyMkRDIC8qIFRleHRVbmRvSW5zZXJ0
aW9uTWFya3VwTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTg3NzBGMTEyNDJDNTM1MDAyMjI2
QkEgLyogVGV4dHVyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q5RDgyNzYxQzdBRTUzNTAwNkZG
MDY2IC8qIFRleHR1cmVDYWNoZUNWLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggYzc3NjQ4ZWUx
ZDgzNDlmYjM2YjEwNzE1NDVjMzgxZmE3MzI3MDljOC4uN2UxMTNlNTFmMzdmOGRjNmQ4NTcyMGRj
Njk5NzAxYzI0OGU3MjQxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTIxNSw3ICsyMTUsNyBAQCBzdGF0aWMgY29uc3Qg
Q1NTUHJvcGVydHlJRCBjb21wdXRlZFByb3BlcnRpZXNbXSA9IHsKICAgICBDU1NQcm9wZXJ0eVdl
YmtpdFRleHREZWNvcmF0aW9uU3R5bGUsCiAgICAgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3Jh
dGlvbkNvbG9yLAogICAgIENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25Ta2lwLAotICAg
IENTU1Byb3BlcnR5V2Via2l0VGV4dFVuZGVybGluZVBvc2l0aW9uLAorICAgIENTU1Byb3BlcnR5
VGV4dFVuZGVybGluZVBvc2l0aW9uLAogICAgIENTU1Byb3BlcnR5VGV4dEluZGVudCwKICAgICBD
U1NQcm9wZXJ0eVRleHRSZW5kZXJpbmcsCiAgICAgQ1NTUHJvcGVydHlUZXh0U2hhZG93LApAQCAt
MTgwMiw2ICsxODAyLDI0IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IHJlbmRlclRleHREZWNvcmF0
aW9uU2tpcEZsYWdzVG9DU1NWYWx1ZShPcHRpb25TZXQ8VGV4dERlY29yCiAgICAgcmV0dXJuIENT
U1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlRXhwbGljaXRJbml0aWFsVmFsdWUoKTsKIH0K
IAorc3RhdGljIFJlZjxDU1NWYWx1ZT4gdGV4dFVuZGVybGluZU9mZnNldFRvQ1NTVmFsdWUoY29u
c3QgVGV4dFVuZGVybGluZU9mZnNldCYgdGV4dFVuZGVybGluZU9mZnNldCkKK3sKKyAgICBpZiAo
dGV4dFVuZGVybGluZU9mZnNldC5pc0F1dG8oKSkKKyAgICAgICAgcmV0dXJuIENTU1ZhbHVlUG9v
bDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQXV0byk7CisgICAg
QVNTRVJUKHRleHRVbmRlcmxpbmVPZmZzZXQuaXNMZW5ndGgoKSk7CisgICAgcmV0dXJuIENTU1Zh
bHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUodGV4dFVuZGVybGluZU9mZnNldC5sZW5n
dGhWYWx1ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKK30KKworc3RhdGljIFJlZjxD
U1NWYWx1ZT4gdGV4dERlY29yYXRpb25UaGlja25lc3NUb0NTU1ZhbHVlKGNvbnN0IFRleHREZWNv
cmF0aW9uVGhpY2tuZXNzJiB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcykKK3sKKyAgICBpZiAodGV4
dERlY29yYXRpb25UaGlja25lc3MuaXNBdXRvKCkpCisgICAgICAgIHJldHVybiBDU1NWYWx1ZVBv
b2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUF1dG8pOworICAg
IGlmICh0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcy5pc0Zyb21Gb250KCkpCisgICAgICAgIHJldHVy
biBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1
ZUZyb21Gb250KTsKKyAgICBBU1NFUlQodGV4dERlY29yYXRpb25UaGlja25lc3MuaXNMZW5ndGgo
KSk7CisgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUodGV4
dERlY29yYXRpb25UaGlja25lc3MubGVuZ3RoVmFsdWUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19QWCk7Cit9CisKIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IHJlbmRlckVtcGhhc2lzUG9zaXRpb25G
bGFnc1RvQ1NTVmFsdWUoT3B0aW9uU2V0PFRleHRFbXBoYXNpc1Bvc2l0aW9uPiB0ZXh0RW1waGFz
aXNQb3NpdGlvbikKIHsKICAgICBBU1NFUlQoISgodGV4dEVtcGhhc2lzUG9zaXRpb24gJiBUZXh0
RW1waGFzaXNQb3NpdGlvbjo6T3ZlcikgJiYgKHRleHRFbXBoYXNpc1Bvc2l0aW9uICYgVGV4dEVt
cGhhc2lzUG9zaXRpb246OlVuZGVyKSkpOwpAQCAtMzMyOSw4ICszMzQ3LDEyIEBAIFJlZlB0cjxD
U1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JQcm9wZXJ0eWluU3R5bGUo
Y29uc3QgUmVuZGVyU3R5CiAgICAgICAgICAgICByZXR1cm4gY3VycmVudENvbG9yT3JWYWxpZENv
bG9yKCZzdHlsZSwgc3R5bGUudGV4dERlY29yYXRpb25Db2xvcigpKTsKICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uU2tpcDoKICAgICAgICAgICAgIHJldHVybiBy
ZW5kZXJUZXh0RGVjb3JhdGlvblNraXBGbGFnc1RvQ1NTVmFsdWUoc3R5bGUudGV4dERlY29yYXRp
b25Ta2lwKCkpOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFVuZGVybGluZVBv
c2l0aW9uOgorICAgICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZVBvc2l0aW9uOgog
ICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS50ZXh0VW5k
ZXJsaW5lUG9zaXRpb24oKSk7CisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5l
T2Zmc2V0OgorICAgICAgICAgICAgcmV0dXJuIHRleHRVbmRlcmxpbmVPZmZzZXRUb0NTU1ZhbHVl
KHN0eWxlLnRleHRVbmRlcmxpbmVPZmZzZXQoKSk7CisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlU
ZXh0RGVjb3JhdGlvblRoaWNrbmVzczoKKyAgICAgICAgICAgIHJldHVybiB0ZXh0RGVjb3JhdGlv
blRoaWNrbmVzc1RvQ1NTVmFsdWUoc3R5bGUudGV4dERlY29yYXRpb25UaGlja25lc3MoKSk7CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdDoKICAg
ICAgICAgICAgIHJldHVybiByZW5kZXJUZXh0RGVjb3JhdGlvbkZsYWdzVG9DU1NWYWx1ZShzdHls
ZS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFRleHRGaWxsQ29sb3I6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJp
bWl0aXZlVmFsdWVNYXBwaW5ncy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlTWFwcGluZ3MuaAppbmRleCA3ODc1ZmRhN2UwZDEzOGFiOWQxZWViZTIyNzBiZDgwMTNiY2E3
Njc3Li5jOTVmZjY1YTgzNWJhNzY0M2VkYjhkMmJiMjVkMTZmMTZiYzYyMTE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgKQEAgLTI2MzYsNDIg
KzI2MzYsNDEgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9y
IFRleHREZWNvcmF0aW9uU3R5bGUoKSBjb25zdAogICAgIHJldHVybiBUZXh0RGVjb3JhdGlvblN0
eWxlOjpTb2xpZDsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U1ByaW1pdGl2ZVZhbHVlKE9wdGlvblNldDxUZXh0VW5kZXJsaW5lUG9zaXRpb24+IGUpCit0ZW1w
bGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoVGV4dFVu
ZGVybGluZVBvc2l0aW9uIHBvc2l0aW9uKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3Mp
CiB7CiAgICAgbV9wcmltaXRpdmVVbml0VHlwZSA9IENTU19WQUxVRV9JRDsKLSAgICBzd2l0Y2gg
KHN0YXRpY19jYXN0PFRleHRVbmRlcmxpbmVQb3NpdGlvbj4oZS50b1JhdygpKSkgeworICAgIHN3
aXRjaCAocG9zaXRpb24pIHsKICAgICBjYXNlIFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6QXV0bzoK
ICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVBdXRvOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6QWxwaGFiZXRpYzoKLSAgICAgICAgbV92
YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVBbHBoYWJldGljOwotICAgICAgICBicmVhazsKICAgICBj
YXNlIFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6VW5kZXI6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJ
RCA9IENTU1ZhbHVlVW5kZXI7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgVGV4dFVuZGVybGlu
ZVBvc2l0aW9uOjpGcm9tRm9udDoKKyAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVG
cm9tRm9udDsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IEltcGxlbWVu
dCBzdXBwb3J0IGZvciAndW5kZXIgbGVmdCcgYW5kICd1bmRlciByaWdodCcgdmFsdWVzLgogfQog
Ci10ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgT3B0aW9uU2V0
PFRleHRVbmRlcmxpbmVQb3NpdGlvbj4oKSBjb25zdAordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJp
bWl0aXZlVmFsdWU6Om9wZXJhdG9yIFRleHRVbmRlcmxpbmVQb3NpdGlvbigpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKGlzVmFsdWVJRCgpKTsKIAogICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlEKSB7
CiAgICAgY2FzZSBDU1NWYWx1ZUF1dG86CiAgICAgICAgIHJldHVybiBUZXh0VW5kZXJsaW5lUG9z
aXRpb246OkF1dG87Ci0gICAgY2FzZSBDU1NWYWx1ZUFscGhhYmV0aWM6Ci0gICAgICAgIHJldHVy
biBUZXh0VW5kZXJsaW5lUG9zaXRpb246OkFscGhhYmV0aWM7CiAgICAgY2FzZSBDU1NWYWx1ZVVu
ZGVyOgogICAgICAgICByZXR1cm4gVGV4dFVuZGVybGluZVBvc2l0aW9uOjpVbmRlcjsKKyAgICBj
YXNlIENTU1ZhbHVlRnJvbUZvbnQ6CisgICAgICAgIHJldHVybiBUZXh0VW5kZXJsaW5lUG9zaXRp
b246OkZyb21Gb250OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgJ3VuZGVyIGxlZnQnIGFuZCAndW5kZXIg
cmlnaHQnIHZhbHVlcy4KLQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBU
ZXh0VW5kZXJsaW5lUG9zaXRpb246OkF1dG87CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUHJvcGVydGllcy5qc29uIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnRp
ZXMuanNvbgppbmRleCBiYzZiNTc4YjhkZTBjNDUyMGY4YTkzNTk1NzUxNTBhOTBmNzVkZTVlLi42
NTY1MTBjMmEyYTgxNjA5N2Y3M2RlMTBjYTNiYjc3ZDc3MzA4Mjc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydGllcy5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcm9wZXJ0aWVzLmpzb24KQEAgLTU5MjYsMTcgKzU5MjYsNDAgQEAKICAgICAgICAgICAg
ICAgICAidXJsIjogImh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtdGV4dC1kZWNvci0zLyN0ZXh0
LWRlY29yYXRpb24tc2tpcCIKICAgICAgICAgICAgIH0KICAgICAgICAgfSwKLSAgICAgICAgIi13
ZWJraXQtdGV4dC11bmRlcmxpbmUtcG9zaXRpb24iOiB7CisgICAgICAgICJ0ZXh0LXVuZGVybGlu
ZS1wb3NpdGlvbiI6IHsKKyAgICAgICAgICAgICJpbmhlcml0ZWQiOiB0cnVlLAorICAgICAgICAg
ICAgInN0YXR1cyI6IHsKKyAgICAgICAgICAgICAgICAic3RhdHVzIjogImV4cGVyaW1lbnRhbCIK
KyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAic3BlY2lmaWNhdGlvbiI6IHsKKyAgICAgICAg
ICAgICAgICAiY2F0ZWdvcnkiOiAiY3NzLXRleHQtZGVjb3IiLAorICAgICAgICAgICAgICAgICJ1
cmwiOiAiaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy10ZXh0LWRlY29yLTMvI3RleHQtdW5kZXJs
aW5lLXBvc2l0aW9uLXByb3BlcnR5IgorICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAg
ICAidGV4dC11bmRlcmxpbmUtb2Zmc2V0IjogeworICAgICAgICAgICAgImluaGVyaXRlZCI6IHRy
dWUsCisgICAgICAgICAgICAiY29kZWdlbi1wcm9wZXJ0aWVzIjogeworICAgICAgICAgICAgICAg
ICJjb252ZXJ0ZXIiOiAiVGV4dFVuZGVybGluZU9mZnNldCIKKyAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICAic3RhdHVzIjogeworICAgICAgICAgICAgICAgICJzdGF0dXMiOiAiZXhwZXJpbWVu
dGFsIgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzcGVjaWZpY2F0aW9uIjogeworICAg
ICAgICAgICAgICAgICJjYXRlZ29yeSI6ICJjc3MtdGV4dC1kZWNvciIsCisgICAgICAgICAgICAg
ICAgInVybCI6ICJodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXRleHQtZGVjb3ItNC8jdW5kZXJs
aW5lLW9mZnNldCIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInRleHQtZGVj
b3JhdGlvbi10aGlja25lc3MiOiB7CiAgICAgICAgICAgICAiaW5oZXJpdGVkIjogdHJ1ZSwKICAg
ICAgICAgICAgICJjb2RlZ2VuLXByb3BlcnRpZXMiOiB7Ci0gICAgICAgICAgICAgICAgImNvbnZl
cnRlciI6ICJUZXh0VW5kZXJsaW5lUG9zaXRpb24iCisgICAgICAgICAgICAgICAgImNvbnZlcnRl
ciI6ICJUZXh0RGVjb3JhdGlvblRoaWNrbmVzcyIKICAgICAgICAgICAgIH0sCiAgICAgICAgICAg
ICAic3RhdHVzIjogewogICAgICAgICAgICAgICAgICJzdGF0dXMiOiAiZXhwZXJpbWVudGFsIgog
ICAgICAgICAgICAgfSwKICAgICAgICAgICAgICJzcGVjaWZpY2F0aW9uIjogewogICAgICAgICAg
ICAgICAgICJjYXRlZ29yeSI6ICJjc3MtdGV4dC1kZWNvciIsCi0gICAgICAgICAgICAgICAgInVy
bCI6ICJodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXRleHQtZGVjb3ItMy8jdGV4dC11bmRlcmxp
bmUtcG9zaXRpb24iCisgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL3d3dy53My5vcmcv
VFIvY3NzLXRleHQtZGVjb3ItNC8jdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzcyIKICAgICAgICAg
ICAgIH0KICAgICAgICAgfSwKICAgICAgICAgIi13ZWJraXQtdGV4dC1kZWNvcmF0aW9ucy1pbi1l
ZmZlY3QiOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jk
cy5pbiBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCmluZGV4IDQ2MzIz
NjNmOTQxMjk3YTYxMGJmNmI2Nzc4MGE4NzRmYzk1MDBhMzYuLjkwZjkxMmFjZWI1NWExYWZkYmFh
YjA5NWI2MmZiYzU0YWJiM2QyNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NW
YWx1ZUtleXdvcmRzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRz
LmluCkBAIC0xNDAzLDMgKzE0MDMsNiBAQCBzdGFuZGFsb25lCiBtaW5pbWFsLXVpCiBicm93c2Vy
CiAjZW5kaWYKKworLy8gdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzcywgdGV4dC11bmRlcmxpbmUt
b2Zmc2V0Citmcm9tLWZvbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1
aWxkZXJDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0
ZXIuaAppbmRleCAyMmFjYmMyOTAxMDY1YjRjYjc2N2NlMjdkNDVkOWY2YTk1MGNlMjhiLi5hMDAz
YTNmNDljY2ZkNzFjMzEyZmY0ODU3NmQ5YmRjZWI1Nzc2YmIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCkBAIC04Nyw3ICs4Nyw5IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgaW50IGNvbnZlcnRNYXJxdWVlUmVwZXRpdGlvbihTdHlsZVJlc29sdmVyJiwgY29u
c3QgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgaW50IGNvbnZlcnRNYXJxdWVlU3BlZWQoU3R5bGVS
ZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CiAgICAgc3RhdGljIFJlZjxRdW90ZXNEYXRhPiBj
b252ZXJ0UXVvdGVzKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRp
YyBPcHRpb25TZXQ8VGV4dFVuZGVybGluZVBvc2l0aW9uPiBjb252ZXJ0VGV4dFVuZGVybGluZVBv
c2l0aW9uKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBUZXh0
VW5kZXJsaW5lUG9zaXRpb24gY29udmVydFRleHRVbmRlcmxpbmVQb3NpdGlvbihTdHlsZVJlc29s
dmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgVGV4dFVuZGVybGluZU9mZnNldCBj
b252ZXJ0VGV4dFVuZGVybGluZU9mZnNldChTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUm
KTsKKyAgICBzdGF0aWMgVGV4dERlY29yYXRpb25UaGlja25lc3MgY29udmVydFRleHREZWNvcmF0
aW9uVGhpY2tuZXNzKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwogICAgIHN0YXRp
YyBSZWZQdHI8U3R5bGVSZWZsZWN0aW9uPiBjb252ZXJ0UmVmbGVjdGlvbihTdHlsZVJlc29sdmVy
JiwgY29uc3QgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgSW50U2l6ZSBjb252ZXJ0SW5pdGlhbExl
dHRlcihTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgZmxvYXQg
Y29udmVydFRleHRTdHJva2VXaWR0aChTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsK
QEAgLTYzNywxNiArNjM5LDQwIEBAIGlubGluZSBSZWY8UXVvdGVzRGF0YT4gU3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0UXVvdGVzKFN0eWxlUmVzb2x2ZXImLCBjb25zCiAgICAgcmV0dXJu
IFF1b3Rlc0RhdGE6OmNyZWF0ZShxdW90ZXMpOwogfQogCi1pbmxpbmUgT3B0aW9uU2V0PFRleHRV
bmRlcmxpbmVQb3NpdGlvbj4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dFVuZGVy
bGluZVBvc2l0aW9uKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxp
bmUgVGV4dFVuZGVybGluZVBvc2l0aW9uIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRl
eHRVbmRlcmxpbmVQb3NpdGlvbihTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVl
KQogewotICAgIC8vIFRoaXMgaXMgdHJ1ZSBpZiB2YWx1ZSBpcyAnYXV0bycgb3IgJ2FscGhhYmV0
aWMnLgotICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKQotICAgICAgICByZXR1
cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKKyAgICBBU1NFUlQoaXM8Q1NT
UHJpbWl0aXZlVmFsdWU+KHZhbHVlKSk7CisgICAgcmV0dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPih2YWx1ZSk7Cit9CiAKLSAgICBPcHRpb25TZXQ8VGV4dFVuZGVybGluZVBvc2l0aW9u
PiBjb21iaW5lZFBvc2l0aW9uOwotICAgIGZvciAoYXV0byYgY3VycmVudFZhbHVlIDogZG93bmNh
c3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpCi0gICAgICAgIGNvbWJpbmVkUG9zaXRpb24uYWRkKGRv
d25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihjdXJyZW50VmFsdWUuZ2V0KCkpKTsKLSAgICByZXR1
cm4gY29tYmluZWRQb3NpdGlvbjsKK2lubGluZSBUZXh0VW5kZXJsaW5lT2Zmc2V0IFN0eWxlQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydFRleHRVbmRlcmxpbmVPZmZzZXQoU3R5bGVSZXNvbHZlciYg
c3R5bGVSZXNvbHZlciwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoreworICAgIEFTU0VSVChpczxD
U1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKTsKKyAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRv
d25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CisgICAgc3dpdGNoIChwcmltaXRpdmVW
YWx1ZS52YWx1ZUlEKCkpIHsKKyAgICBjYXNlIENTU1ZhbHVlQXV0bzoKKyAgICAgICAgcmV0dXJu
IFRleHRVbmRlcmxpbmVPZmZzZXQ6OmNyZWF0ZVdpdGhBdXRvKCk7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgQVNTRVJUKHByaW1pdGl2ZVZhbHVlLmlzTGVuZ3RoKCkpOworICAgICAgICBhdXRvIGNv
bXB1dGVkTGVuZ3RoID0gY29udmVydENvbXB1dGVkTGVuZ3RoPGZsb2F0PihzdHlsZVJlc29sdmVy
LCBwcmltaXRpdmVWYWx1ZSk7CisgICAgICAgIHJldHVybiBUZXh0VW5kZXJsaW5lT2Zmc2V0Ojpj
cmVhdGVXaXRoTGVuZ3RoKGNvbXB1dGVkTGVuZ3RoKTsKKyAgICB9Cit9CisKK2lubGluZSBUZXh0
RGVjb3JhdGlvblRoaWNrbmVzcyBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0RGVj
b3JhdGlvblRoaWNrbmVzcyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBjb25zdCBDU1NW
YWx1ZSYgdmFsdWUpCit7CisgICAgQVNTRVJUKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkp
OworICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KHZhbHVlKTsKKyAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSkgeworICAgIGNh
c2UgQ1NTVmFsdWVBdXRvOgorICAgICAgICByZXR1cm4gVGV4dERlY29yYXRpb25UaGlja25lc3M6
OmNyZWF0ZVdpdGhBdXRvKCk7CisgICAgY2FzZSBDU1NWYWx1ZUZyb21Gb250OgorICAgICAgICBy
ZXR1cm4gVGV4dERlY29yYXRpb25UaGlja25lc3M6OmNyZWF0ZUZyb21Gb250KCk7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgQVNTRVJUKHByaW1pdGl2ZVZhbHVlLmlzTGVuZ3RoKCkpOworICAgICAg
ICBhdXRvIGNvbXB1dGVkTGVuZ3RoID0gY29udmVydENvbXB1dGVkTGVuZ3RoPGZsb2F0PihzdHls
ZVJlc29sdmVyLCBwcmltaXRpdmVWYWx1ZSk7CisgICAgICAgIHJldHVybiBUZXh0RGVjb3JhdGlv
blRoaWNrbmVzczo6Y3JlYXRlV2l0aExlbmd0aChjb21wdXRlZExlbmd0aCk7CisgICAgfQogfQog
CiBpbmxpbmUgUmVmUHRyPFN0eWxlUmVmbGVjdGlvbj4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0UmVmbGVjdGlvbihTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBjb25zdCBDU1NW
YWx1ZSYgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggZDRlMDZi
Y2NmMzM2MGQxY2E0MGMwNzI4MDJmNDUwMGM1OWZkYTA1Yi4uMjg3NDgwZTVmOTI4ODU3Yzc0OWQ2
NmQzODFlMDc2N2Y0MTI0ODNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApA
QCAtMTE3NCw3ICsxMTc0LDkgQEAgc3RhdGljIGJvb2wgc2hvdWxkQXBwbHlQcm9wZXJ0eUluUGFy
c2VPcmRlcihDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFRleHREZWNvcmF0aW9uU3R5bGU6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRE
ZWNvcmF0aW9uQ29sb3I6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9u
U2tpcDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFVuZGVybGluZVBvc2l0aW9uOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lUG9zaXRpb246CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVRleHRVbmRlcmxpbmVPZmZzZXQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHREZWNv
cmF0aW9uVGhpY2tuZXNzOgogICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbjoKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKaW5kZXggMjFmZWJhY2M0Y2ZiYWE1MTFiYmFl
YTY0NzVmMTYwZDUzMjVkYzBmNi4uMjQyYjhjZjRlNTAyZTllYTY3NzEwMTdlNjg1MjJiNDI2ZjE5
YTU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBh
cnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNl
ci5jcHAKQEAgLTIzMTIsNiArMjMxMiwyMCBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25z
dW1lQm9yZGVyUmFkaXVzQ29ybmVyKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDUwogICAg
IHJldHVybiBjcmVhdGVQcmltaXRpdmVWYWx1ZVBhaXIocGFyc2VkVmFsdWUxLnJlbGVhc2VOb25O
dWxsKCksIHBhcnNlZFZhbHVlMi5yZWxlYXNlTm9uTnVsbCgpLCBQYWlyOjpJZGVudGljYWxWYWx1
ZUVuY29kaW5nOjpDb2FsZXNjZSk7CiB9CiAKK3N0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1
bWVUZXh0VW5kZXJsaW5lT2Zmc2V0KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJz
ZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgaWYgKGF1dG8gdmFsdWUgPSBjb25zdW1lSWRl
bnQ8Q1NTVmFsdWVBdXRvPihyYW5nZSkpCisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICByZXR1
cm4gY29uc3VtZUxlbmd0aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7Cit9
CisKK3N0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVUZXh0RGVjb3JhdGlvblRoaWNrbmVz
cyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2Rl
KQoreworICAgIGlmIChhdXRvIHZhbHVlID0gY29uc3VtZUlkZW50PENTU1ZhbHVlQXV0bywgQ1NT
VmFsdWVGcm9tRm9udD4ocmFuZ2UpKQorICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgcmV0dXJu
IGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwpOworfQor
CiBzdGF0aWMgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lVmVydGljYWxBbGlnbihD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQog
ewogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcGFyc2VkVmFsdWUgPSBjb25zdW1lSWRl
bnRSYW5nZShyYW5nZSwgQ1NTVmFsdWVCYXNlbGluZSwgQ1NTVmFsdWVXZWJraXRCYXNlbGluZU1p
ZGRsZSk7CkBAIC00MTQxLDkgKzQxNTUsMTMgQEAgUmVmUHRyPENTU1ZhbHVlPiBDU1NQcm9wZXJ0
eVBhcnNlcjo6cGFyc2VTaW5nbGVWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1MKICAg
ICAgICAgcmV0dXJuIGNvbnN1bWVJbnRlZ2VyKG1fcmFuZ2UsIDApOwogICAgIGNhc2UgQ1NTUHJv
cGVydHlPcmRlcjoKICAgICAgICAgcmV0dXJuIGNvbnN1bWVJbnRlZ2VyKG1fcmFuZ2UpOwotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0VW5kZXJsaW5lUG9zaXRpb246Ci0gICAgICAgIC8v
IGF1dG8gfCBhbHBoYWJldGljIHwgWyB1bmRlciB8fCBbIGxlZnQgfCByaWdodCBdIF0sIGJ1dCB3
ZSBvbmx5IHN1cHBvcnQgYXV0byB8IGFscGhhYmV0aWMgfCB1bmRlciBmb3Igbm93Ci0gICAgICAg
IHJldHVybiBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVBdXRvLCBDU1NWYWx1ZVVuZGVyLCBDU1NWYWx1
ZUFscGhhYmV0aWM+KG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5l
UG9zaXRpb246CisgICAgICAgIC8vIGF1dG8gfCBbIFsgdW5kZXIgfCBmcm9tLWZvbnQgXSB8fCBb
IGxlZnQgfCByaWdodCBdIF0sIGJ1dCB3ZSBvbmx5IHN1cHBvcnQgYXV0byB8IHVuZGVyIHwgZnJv
bS1mb250IGZvciBub3cKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudDxDU1NWYWx1ZUF1dG8s
IENTU1ZhbHVlVW5kZXIsIENTU1ZhbHVlRnJvbUZvbnQ+KG1fcmFuZ2UpOworICAgIGNhc2UgQ1NT
UHJvcGVydHlUZXh0VW5kZXJsaW5lT2Zmc2V0OgorICAgICAgICByZXR1cm4gY29uc3VtZVRleHRV
bmRlcmxpbmVPZmZzZXQobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUpOworICAgIGNhc2UgQ1NTUHJv
cGVydHlUZXh0RGVjb3JhdGlvblRoaWNrbmVzczoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVUZXh0
RGVjb3JhdGlvblRoaWNrbmVzcyhtX3JhbmdlLCBtX2NvbnRleHQubW9kZSk7CiAgICAgY2FzZSBD
U1NQcm9wZXJ0eVZlcnRpY2FsQWxpZ246CiAgICAgICAgIHJldHVybiBjb25zdW1lVmVydGljYWxB
bGlnbihtX3JhbmdlLCBtX2NvbnRleHQubW9kZSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVNoYXBl
T3V0c2lkZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1By
b3BlcnR5QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1By
b3BlcnR5QW5pbWF0aW9uLmNwcAppbmRleCBkNjUxZDU2NzE3ZGFmZjAzMjBhOTc1ZWJkYTI3Yjlm
YWFjNjhjZjQzLi5iNDYyYjlmNTVmYTYzZmIyYjM5MzM4ZDIwMzc3NjlkYjJmZDkwZjQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmlt
YXRpb24uY3BwCkBAIC0yNjAsNiArMjYwLDIwIEBAIHN0YXRpYyBpbmxpbmUgVmlzaWJpbGl0eSBi
bGVuZEZ1bmMoY29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NsaWVudCogYW5pbSwgVmlzaWJpCiAg
ICAgcmV0dXJuIHJlc3VsdCA+IDAuID8gVmlzaWJpbGl0eTo6VmlzaWJsZSA6ICh0byAhPSBWaXNp
YmlsaXR5OjpWaXNpYmxlID8gdG8gOiBmcm9tKTsKIH0KIAorc3RhdGljIGlubGluZSBUZXh0VW5k
ZXJsaW5lT2Zmc2V0IGJsZW5kRnVuYyhjb25zdCBDU1NQcm9wZXJ0eUJsZW5kaW5nQ2xpZW50KiBh
bmltLCBjb25zdCBUZXh0VW5kZXJsaW5lT2Zmc2V0JiBmcm9tLCBjb25zdCBUZXh0VW5kZXJsaW5l
T2Zmc2V0JiB0bywgZG91YmxlIHByb2dyZXNzKQoreworICAgIGlmIChmcm9tLmlzTGVuZ3RoKCkg
JiYgdG8uaXNMZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIFRleHRVbmRlcmxpbmVPZmZzZXQ6OmNy
ZWF0ZVdpdGhMZW5ndGgoYmxlbmRGdW5jKGFuaW0sIGZyb20ubGVuZ3RoVmFsdWUoKSwgdG8ubGVu
Z3RoVmFsdWUoKSwgcHJvZ3Jlc3MpKTsKKyAgICByZXR1cm4gVGV4dFVuZGVybGluZU9mZnNldDo6
Y3JlYXRlV2l0aEF1dG8oKTsKK30KKworc3RhdGljIGlubGluZSBUZXh0RGVjb3JhdGlvblRoaWNr
bmVzcyBibGVuZEZ1bmMoY29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NsaWVudCogYW5pbSwgY29u
c3QgVGV4dERlY29yYXRpb25UaGlja25lc3MmIGZyb20sIGNvbnN0IFRleHREZWNvcmF0aW9uVGhp
Y2tuZXNzJiB0bywgZG91YmxlIHByb2dyZXNzKQoreworICAgIGlmIChmcm9tLmlzTGVuZ3RoKCkg
JiYgdG8uaXNMZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIFRleHREZWNvcmF0aW9uVGhpY2tuZXNz
OjpjcmVhdGVXaXRoTGVuZ3RoKGJsZW5kRnVuYyhhbmltLCBmcm9tLmxlbmd0aFZhbHVlKCksIHRv
Lmxlbmd0aFZhbHVlKCksIHByb2dyZXNzKSk7CisgICAgcmV0dXJuIFRleHREZWNvcmF0aW9uVGhp
Y2tuZXNzOjpjcmVhdGVXaXRoQXV0bygpOworfQorCiBzdGF0aWMgaW5saW5lIExlbmd0aEJveCBi
bGVuZEZ1bmMoY29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NsaWVudCogYW5pbSwgY29uc3QgTGVu
Z3RoQm94JiBmcm9tLCBjb25zdCBMZW5ndGhCb3gmIHRvLCBkb3VibGUgcHJvZ3Jlc3MpCiB7CiAg
ICAgTGVuZ3RoQm94IHJlc3VsdChibGVuZEZ1bmMoYW5pbSwgZnJvbS50b3AoKSwgdG8udG9wKCks
IHByb2dyZXNzKSwKQEAgLTE2ODUsNiArMTY5OSw4IEBAIENTU1Byb3BlcnR5QW5pbWF0aW9uV3Jh
cHBlck1hcDo6Q1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwKCkKICAgICAgICAgbmV3IFBy
b3BlcnR5V3JhcHBlcjxGb250U2VsZWN0aW9uVmFsdWU+KENTU1Byb3BlcnR5Rm9udFdlaWdodCwg
JlJlbmRlclN0eWxlOjpmb250V2VpZ2h0LCAmUmVuZGVyU3R5bGU6OnNldEZvbnRXZWlnaHQpLAog
ICAgICAgICBuZXcgUHJvcGVydHlXcmFwcGVyPEZvbnRTZWxlY3Rpb25WYWx1ZT4oQ1NTUHJvcGVy
dHlGb250U3RyZXRjaCwgJlJlbmRlclN0eWxlOjpmb250U3RyZXRjaCwgJlJlbmRlclN0eWxlOjpz
ZXRGb250U3RyZXRjaCksCiAgICAgICAgIG5ldyBQcm9wZXJ0eVdyYXBwZXJGb250U3R5bGUoKSwK
KyAgICAgICAgbmV3IFByb3BlcnR5V3JhcHBlcjxUZXh0RGVjb3JhdGlvblRoaWNrbmVzcz4oQ1NT
UHJvcGVydHlUZXh0RGVjb3JhdGlvblRoaWNrbmVzcywgJlJlbmRlclN0eWxlOjp0ZXh0RGVjb3Jh
dGlvblRoaWNrbmVzcywgJlJlbmRlclN0eWxlOjpzZXRUZXh0RGVjb3JhdGlvblRoaWNrbmVzcyks
CisgICAgICAgIG5ldyBQcm9wZXJ0eVdyYXBwZXI8VGV4dFVuZGVybGluZU9mZnNldD4oQ1NTUHJv
cGVydHlUZXh0VW5kZXJsaW5lT2Zmc2V0LCAmUmVuZGVyU3R5bGU6OnRleHRVbmRlcmxpbmVPZmZz
ZXQsICZSZW5kZXJTdHlsZTo6c2V0VGV4dFVuZGVybGluZU9mZnNldCksCiAgICAgfTsKICAgICBj
b25zdCB1bnNpZ25lZCBhbmltYXRhYmxlTG9uZ2hhbmRQcm9wZXJ0aWVzQ291bnQgPSBXVEZfQVJS
QVlfTEVOR1RIKGFuaW1hdGFibGVMb25naGFuZFByb3BlcnR5V3JhcHBlcnMpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCmluZGV4IDFkOTkwNjViZjJhNTU0NmQ4
MjdjZTEyNTkyNDAxN2I5ZTVhZTYyOTUuLjEzODRmNjkyNGQ4YzNmMTlkZTkzYTM4MTZhOTc0Njhh
MTcxNmU2YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBA
IC02NjMsNCArNjYzLDE1IEBAIGJvb2wgRm9udDo6Y2FuUmVuZGVyQ29tYmluaW5nQ2hhcmFjdGVy
U2VxdWVuY2UoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBsCiAgICAgfQogICAgIHJl
dHVybiB0cnVlOwogfQorCisvLyBEb24ndCBzdG9yZSB0aGUgcmVzdWx0IG9mIHRoaXMhIFRoZSBo
YXNoIG1hcCBpcyBmcmVlIHRvIHJlaGFzaCBhdCBhbnkgcG9pbnQsIGxlYXZpbmcgdGhpcyByZWZl
cmVuY2UgZGFuZ2xpbmcuCitjb25zdCBQYXRoJiBGb250OjpwYXRoRm9yR2x5cGgoR2x5cGggZ2x5
cGgpIGNvbnN0Cit7CisgICAgaWYgKGNvbnN0IGF1dG8mIHBhdGggPSBtX2dseXBoUGF0aE1hcC5l
eGlzdGluZ01ldHJpY3NGb3JHbHlwaChnbHlwaCkpCisgICAgICAgIHJldHVybiAqcGF0aDsKKyAg
ICBhdXRvIHBhdGggPSBwbGF0Zm9ybVBhdGhGb3JHbHlwaChnbHlwaCk7CisgICAgbV9nbHlwaFBh
dGhNYXAuc2V0TWV0cmljc0ZvckdseXBoKGdseXBoLCBwYXRoKTsKKyAgICByZXR1cm4gKm1fZ2x5
cGhQYXRoTWFwLmV4aXN0aW5nTWV0cmljc0ZvckdseXBoKGdseXBoKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCmluZGV4
IDk4OTBiZWUzZGQ1ODJjNjRkNDNmNmJkOTNmYTI5ZmU0M2RjYzIyZDYuLmYyMTZiODlkM2E1NTFl
MDE4YWM2NzMwNzI1MTJmNmZkYWI1YzIzYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250LmgKQEAgLTE0Niw4ICsxNDYsMTAgQEAgcHVibGljOgogCiAgICAgRmxvYXRSZWN0
IGJvdW5kc0ZvckdseXBoKEdseXBoKSBjb25zdDsKICAgICBmbG9hdCB3aWR0aEZvckdseXBoKEds
eXBoKSBjb25zdDsKKyAgICBjb25zdCBQYXRoJiBwYXRoRm9yR2x5cGgoR2x5cGggZ2x5cGgpIGNv
bnN0OyAvLyBEb24ndCBzdG9yZSB0aGUgcmVzdWx0IG9mIHRoaXMhIFRoZSBoYXNoIG1hcCBpcyBm
cmVlIHRvIHJlaGFzaCBhdCBhbnkgcG9pbnQsIGxlYXZpbmcgdGhpcyByZWZlcmVuY2UgZGFuZ2xp
bmcuCiAgICAgRmxvYXRSZWN0IHBsYXRmb3JtQm91bmRzRm9yR2x5cGgoR2x5cGgpIGNvbnN0Owog
ICAgIGZsb2F0IHBsYXRmb3JtV2lkdGhGb3JHbHlwaChHbHlwaCkgY29uc3Q7CisgICAgUGF0aCBw
bGF0Zm9ybVBhdGhGb3JHbHlwaChHbHlwaCBnbHlwaCkgY29uc3Q7CiAKICAgICBmbG9hdCBzcGFj
ZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9zcGFjZVdpZHRoOyB9CiAgICAgZmxvYXQgYWRqdXN0
ZWRTcGFjZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9hZGp1c3RlZFNwYWNlV2lkdGg7IH0KQEAg
LTI1Myw2ICsyNTUsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgSGFzaE1hcDx1bnNpZ25lZCwg
UmVmUHRyPEdseXBoUGFnZT4+IG1fZ2x5cGhQYWdlczsKICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVl
X3B0cjxHbHlwaE1ldHJpY3NNYXA8RmxvYXRSZWN0Pj4gbV9nbHlwaFRvQm91bmRzTWFwOwogICAg
IG11dGFibGUgR2x5cGhNZXRyaWNzTWFwPGZsb2F0PiBtX2dseXBoVG9XaWR0aE1hcDsKKyAgICBt
dXRhYmxlIEdseXBoTWV0cmljc01hcDxzdGQ6Om9wdGlvbmFsPFBhdGg+PiBtX2dseXBoUGF0aE1h
cDsKICAgICBtdXRhYmxlIEJpdFZlY3RvciBtX2NvZGVQb2ludFN1cHBvcnQ7CiAKICAgICBtdXRh
YmxlIFJlZlB0cjxPcGVuVHlwZU1hdGhEYXRhPiBtX21hdGhEYXRhOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCmluZGV4IDA2NjIwY2YwNDQ0
MzU5NTE3YTQ3ZGRjMjQ5YzAyYmUyMWFiZWFhOTIuLjY3NDk1YzIyOGE0N2UwYzM2OWRkNDBhZDU0
NWE0YjIwMTBhYjI2MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYXNjYWRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FzY2FkZS5jcHAKQEAgLTEyMzcsMTggKzEyMzcsMjUgQEAgYm9vbCBGb250Q2FzY2Fk
ZTo6aXNMb2FkaW5nQ3VzdG9tRm9udHMoKSBjb25zdAogewogICAgIHJldHVybiBtX2ZvbnRzICYm
IG1fZm9udHMtPmlzTG9hZGluZ0N1c3RvbUZvbnRzKCk7CiB9CisKK2VudW0gY2xhc3MgR2x5cGhV
bmRlcmxpbmVUeXBlIHsKKyAgICBTa2lwRGVzY2VuZGVycywKKyAgICBTa2lwR2x5cGgsCisgICAg
RHJhd092ZXJHbHlwaAorfTsKICAgICAKLUdseXBoVG9QYXRoVHJhbnNsYXRvcjo6R2x5cGhVbmRl
cmxpbmVUeXBlIGNvbXB1dGVVbmRlcmxpbmVUeXBlKGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGNv
bnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgdW5zaWduZWQgaW5kZXgpCitzdGF0aWMgR2x5
cGhVbmRlcmxpbmVUeXBlIGNvbXB1dGVVbmRlcmxpbmVUeXBlKGNvbnN0IFRleHRSdW4mIHRleHRS
dW4sIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgdW5zaWduZWQgaW5kZXgpCiB7CiAg
ICAgLy8gSW4gZ2VuZXJhbCwgd2Ugd2FudCB0byBza2lwIGRlc2NlbmRlcnMuIEhvd2V2ZXIsIHNr
aXBwaW5nIGRlc2NlbmRlcnMgb24gQ0pLIGNoYXJhY3RlcnMgbGVhZHMgdG8gdW5kZXNpcmFibGUg
cmVuZGVyaW5ncywKICAgICAvLyBzbyB3ZSB3YW50IHRvIGRyYXcgdGhyb3VnaCBDSksgY2hhcmFj
dGVycyAob24gYSBjaGFyYWN0ZXItYnktY2hhcmFjdGVyIGJhc2lzKS4KKyAgICAvLyBGSVhNRTog
VGhlIENTUyBzcGVjIHNheXMgdGhpcyBzaG91bGQgaW5zdGVhZCBiZSBkb25lIGJ5IHRoZSB1c2Vy
LWFnZW50IHN0eWxlc2hlZXQgdXNpbmcgdGhlIGxhbmc9IGF0dHJpYnV0ZS4KICAgICBVQ2hhcjMy
IGJhc2VDaGFyYWN0ZXI7CiAgICAgdW5zaWduZWQgb2Zmc2V0SW5TdHJpbmcgPSBnbHlwaEJ1ZmZl
ci5vZmZzZXRJblN0cmluZyhpbmRleCk7CiAKICAgICBpZiAob2Zmc2V0SW5TdHJpbmcgPT0gR2x5
cGhCdWZmZXI6Om5vT2Zmc2V0IHx8IG9mZnNldEluU3RyaW5nID49IHRleHRSdW4ubGVuZ3RoKCkp
IHsKICAgICAgICAgLy8gV2UgaGF2ZSBubyBpZGVhIHdoaWNoIGNoYXJhY3RlciBzcGF3bmVkIHRo
aXMgZ2x5cGguIEJhaWwuCiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KG9mZnNldEluU3RyaW5nIDwgdGV4dFJ1bi5sZW5ndGgoKSk7Ci0gICAgICAgIHJldHVybiBHbHlw
aFRvUGF0aFRyYW5zbGF0b3I6OkdseXBoVW5kZXJsaW5lVHlwZTo6RHJhd092ZXJHbHlwaDsKKyAg
ICAgICAgcmV0dXJuIEdseXBoVW5kZXJsaW5lVHlwZTo6RHJhd092ZXJHbHlwaDsKICAgICB9CiAg
ICAgCiAgICAgaWYgKHRleHRSdW4uaXM4Qml0KCkpCkBAIC0xMjg1LDkgKzEyOTIsOSBAQCBHbHlw
aFRvUGF0aFRyYW5zbGF0b3I6OkdseXBoVW5kZXJsaW5lVHlwZSBjb21wdXRlVW5kZXJsaW5lVHlw
ZShjb25zdCBUZXh0UnVuJiB0ZQogICAgIGNhc2UgVUJMT0NLX0hBTkdVTF9TWUxMQUJMRVM6CiAg
ICAgY2FzZSBVQkxPQ0tfSEFOR1VMX0pBTU9fRVhURU5ERURfQToKICAgICBjYXNlIFVCTE9DS19I
QU5HVUxfSkFNT19FWFRFTkRFRF9COgotICAgICAgICByZXR1cm4gR2x5cGhUb1BhdGhUcmFuc2xh
dG9yOjpHbHlwaFVuZGVybGluZVR5cGU6OkRyYXdPdmVyR2x5cGg7CisgICAgICAgIHJldHVybiBH
bHlwaFVuZGVybGluZVR5cGU6OkRyYXdPdmVyR2x5cGg7CiAgICAgZGVmYXVsdDoKLSAgICAgICAg
cmV0dXJuIEdseXBoVG9QYXRoVHJhbnNsYXRvcjo6R2x5cGhVbmRlcmxpbmVUeXBlOjpTa2lwRGVz
Y2VuZGVyczsKKyAgICAgICAgcmV0dXJuIEdseXBoVW5kZXJsaW5lVHlwZTo6U2tpcERlc2NlbmRl
cnM7CiAgICAgfQogfQogCkBAIC0xNjU4LDQgKzE2NjUsMTg3IEBAIHZvaWQgRm9udENhc2NhZGU6
OmRyYXdFbXBoYXNpc01hcmtzRm9yQ29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zCiAgICAgZHJhd0VtcGhhc2lzTWFya3MoY29udGV4dCwgZ2x5cGhCdWZmZXIsIG1hcmss
IEZsb2F0UG9pbnQocG9pbnQueCgpICsgaW5pdGlhbEFkdmFuY2UsIHBvaW50LnkoKSkpOwogfQog
CitzdHJ1Y3QgR2x5cGhJdGVyYXRpb25TdGF0ZSB7CisgICAgR2x5cGhJdGVyYXRpb25TdGF0ZShG
bG9hdFBvaW50IHN0YXJ0aW5nUG9pbnQsIEZsb2F0UG9pbnQgY3VycmVudFBvaW50LCBmbG9hdCB5
MSwgZmxvYXQgeTIsIGZsb2F0IG1pblgsIGZsb2F0IG1heFgpCisgICAgICAgIDogc3RhcnRpbmdQ
b2ludChzdGFydGluZ1BvaW50KQorICAgICAgICAsIGN1cnJlbnRQb2ludChjdXJyZW50UG9pbnQp
CisgICAgICAgICwgeTEoeTEpCisgICAgICAgICwgeTIoeTIpCisgICAgICAgICwgbWluWChtaW5Y
KQorICAgICAgICAsIG1heFgobWF4WCkKKyAgICB7CisgICAgfQorICAgIEZsb2F0UG9pbnQgc3Rh
cnRpbmdQb2ludDsKKyAgICBGbG9hdFBvaW50IGN1cnJlbnRQb2ludDsKKyAgICBmbG9hdCB5MTsK
KyAgICBmbG9hdCB5MjsKKyAgICBmbG9hdCBtaW5YOworICAgIGZsb2F0IG1heFg7Cit9OworCitz
dGF0aWMgc3RkOjpvcHRpb25hbDxmbG9hdD4gZmluZEludGVyc2VjdGlvblBvaW50KGZsb2F0IHks
IEZsb2F0UG9pbnQgcDEsIEZsb2F0UG9pbnQgcDIpCit7CisgICAgaWYgKChwMS55KCkgPCB5ICYm
IHAyLnkoKSA+IHkpIHx8IChwMS55KCkgPiB5ICYmIHAyLnkoKSA8IHkpKQorICAgICAgICByZXR1
cm4gcDEueCgpICsgKHkgLSBwMS55KCkpICogKHAyLngoKSAtIHAxLngoKSkgLyAocDIueSgpIC0g
cDEueSgpKTsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQorCitzdGF0aWMgdm9pZCB1cGRh
dGVYKEdseXBoSXRlcmF0aW9uU3RhdGUmIHN0YXRlLCBmbG9hdCB4KQoreworICAgIHN0YXRlLm1p
blggPSBzdGQ6Om1pbihzdGF0ZS5taW5YLCB4KTsKKyAgICBzdGF0ZS5tYXhYID0gc3RkOjptYXgo
c3RhdGUubWF4WCwgeCk7Cit9CisKKy8vIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IENHUGF0
aEFwcGx5IGFuZCBpcyB0aGVyZWZvcmUgaW52b2tlZCBmb3IgZWFjaAorLy8gY29udG91ciBpbiBh
IGdseXBoLiBUaGlzIGZ1bmN0aW9uIG1vZGVscyBlYWNoIGNvbnRvdXJzIGFzIGEgc3RyYWlnaHQg
bGluZQorLy8gYW5kIGNhbGN1bGF0ZXMgdGhlIGludGVyc2VjdGlvbnMgYmV0d2VlbiBlYWNoIHBz
ZXVkby1jb250b3VyIGFuZAorLy8gdHdvIGhvcml6b250YWwgbGluZXMgKHRoZSB1cHBlciBhbmQg
bG93ZXIgYm91bmRzIG9mIGFuIHVuZGVybGluZSkgZm91bmQgaW4KKy8vIEdseXBoSXRlcmF0aW9u
U3RhdGU6OnkxIGFuZCBHbHlwaEl0ZXJhdGlvblN0YXRlOjp5Mi4gSXQga2VlcHMgdHJhY2sgb2Yg
dGhlCisvLyBsZWZ0bW9zdCBhbmQgcmlnaHRtb3N0IGludGVyc2VjdGlvbiBpbiBHbHlwaEl0ZXJh
dGlvblN0YXRlOjptaW5YIGFuZAorLy8gR2x5cGhJdGVyYXRpb25TdGF0ZTo6bWF4WC4KK3N0YXRp
YyB2b2lkIGZpbmRQYXRoSW50ZXJzZWN0aW9ucyhHbHlwaEl0ZXJhdGlvblN0YXRlJiBzdGF0ZSwg
Y29uc3QgUGF0aEVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgYm9vbCBkb0ludGVyc2VjdGlvbiA9
IGZhbHNlOworICAgIEZsb2F0UG9pbnQgcG9pbnQgPSBGbG9hdFBvaW50KCk7CisgICAgc3dpdGNo
IChlbGVtZW50LnR5cGUpIHsKKyAgICBjYXNlIFBhdGhFbGVtZW50TW92ZVRvUG9pbnQ6CisgICAg
ICAgIHN0YXRlLnN0YXJ0aW5nUG9pbnQgPSBlbGVtZW50LnBvaW50c1swXTsKKyAgICAgICAgc3Rh
dGUuY3VycmVudFBvaW50ID0gZWxlbWVudC5wb2ludHNbMF07CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgUGF0aEVsZW1lbnRBZGRMaW5lVG9Qb2ludDoKKyAgICAgICAgZG9JbnRlcnNlY3Rpb24g
PSB0cnVlOworICAgICAgICBwb2ludCA9IGVsZW1lbnQucG9pbnRzWzBdOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFBhdGhFbGVtZW50QWRkUXVhZEN1cnZlVG9Qb2ludDoKKyAgICAgICAgZG9J
bnRlcnNlY3Rpb24gPSB0cnVlOworICAgICAgICBwb2ludCA9IGVsZW1lbnQucG9pbnRzWzFdOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFBhdGhFbGVtZW50QWRkQ3VydmVUb1BvaW50OgorICAg
ICAgICBkb0ludGVyc2VjdGlvbiA9IHRydWU7CisgICAgICAgIHBvaW50ID0gZWxlbWVudC5wb2lu
dHNbMl07CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUGF0aEVsZW1lbnRDbG9zZVN1YnBhdGg6
CisgICAgICAgIGRvSW50ZXJzZWN0aW9uID0gdHJ1ZTsKKyAgICAgICAgcG9pbnQgPSBzdGF0ZS5z
dGFydGluZ1BvaW50OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgaWYgKCFkb0ludGVyc2Vj
dGlvbikKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChhdXRvIGludGVyc2VjdGlvblBvaW50ID0g
ZmluZEludGVyc2VjdGlvblBvaW50KHN0YXRlLnkxLCBzdGF0ZS5jdXJyZW50UG9pbnQsIHBvaW50
KSkKKyAgICAgICAgdXBkYXRlWChzdGF0ZSwgKmludGVyc2VjdGlvblBvaW50KTsKKyAgICBpZiAo
YXV0byBpbnRlcnNlY3Rpb25Qb2ludCA9IGZpbmRJbnRlcnNlY3Rpb25Qb2ludChzdGF0ZS55Miwg
c3RhdGUuY3VycmVudFBvaW50LCBwb2ludCkpCisgICAgICAgIHVwZGF0ZVgoc3RhdGUsICppbnRl
cnNlY3Rpb25Qb2ludCk7CisgICAgaWYgKChzdGF0ZS5jdXJyZW50UG9pbnQueSgpID49IHN0YXRl
LnkxICYmIHN0YXRlLmN1cnJlbnRQb2ludC55KCkgPD0gc3RhdGUueTIpCisgICAgICAgIHx8IChz
dGF0ZS5jdXJyZW50UG9pbnQueSgpIDw9IHN0YXRlLnkxICYmIHN0YXRlLmN1cnJlbnRQb2ludC55
KCkgPj0gc3RhdGUueTIpKQorICAgICAgICB1cGRhdGVYKHN0YXRlLCBzdGF0ZS5jdXJyZW50UG9p
bnQueCgpKTsKKyAgICBzdGF0ZS5jdXJyZW50UG9pbnQgPSBwb2ludDsKK30KKworY2xhc3MgR2x5
cGhUb1BhdGhUcmFuc2xhdG9yIHsKK3B1YmxpYzoKKyAgICBHbHlwaFRvUGF0aFRyYW5zbGF0b3Io
Y29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgY29uc3QgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCBj
b25zdCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luKQorICAgICAgICA6IG1faW5kZXgoMCkKKyAgICAg
ICAgLCBtX3RleHRSdW4odGV4dFJ1bikKKyAgICAgICAgLCBtX2dseXBoQnVmZmVyKGdseXBoQnVm
ZmVyKQorICAgICAgICAsIG1fZm9udERhdGEoZ2x5cGhCdWZmZXIuZm9udEF0KG1faW5kZXgpKQor
ICAgICAgICAsIG1fdHJhbnNsYXRpb24oQWZmaW5lVHJhbnNmb3JtOjp0cmFuc2xhdGlvbih0ZXh0
T3JpZ2luLngoKSwgdGV4dE9yaWdpbi55KCkpLnNjYWxlKDEsIC0xKSkKKyAgICB7CisgICAgfQor
CisgICAgYm9vbCBjb250YWluc01vcmVQYXRocygpIHsgcmV0dXJuIG1faW5kZXggIT0gbV9nbHlw
aEJ1ZmZlci5zaXplKCk7IH0KKyAgICBQYXRoIHBhdGgoKTsKKyAgICBzdGQ6OnBhaXI8ZmxvYXQs
IGZsb2F0PiBleHRlbnRzKCk7CisgICAgR2x5cGhVbmRlcmxpbmVUeXBlIHVuZGVybGluZVR5cGUo
KTsKKyAgICB2b2lkIGFkdmFuY2UoKTsKKworcHJpdmF0ZToKKyAgICB1bnNpZ25lZCBtX2luZGV4
OworICAgIGNvbnN0IFRleHRSdW4mIG1fdGV4dFJ1bjsKKyAgICBjb25zdCBHbHlwaEJ1ZmZlciYg
bV9nbHlwaEJ1ZmZlcjsKKyAgICBjb25zdCBGb250KiBtX2ZvbnREYXRhOworICAgIEFmZmluZVRy
YW5zZm9ybSBtX3RyYW5zbGF0aW9uOworfTsKKworUGF0aCBHbHlwaFRvUGF0aFRyYW5zbGF0b3I6
OnBhdGgoKQoreworICAgIFBhdGggcGF0aCA9IG1fZm9udERhdGEtPnBhdGhGb3JHbHlwaChtX2ds
eXBoQnVmZmVyLmdseXBoQXQobV9pbmRleCkpOworICAgIHBhdGgudHJhbnNmb3JtKG1fdHJhbnNs
YXRpb24pOworICAgIHJldHVybiBwYXRoOworfQorCitzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0PiBH
bHlwaFRvUGF0aFRyYW5zbGF0b3I6OmV4dGVudHMoKQoreworICAgIGF1dG8gYmVnaW5uaW5nID0g
bV90cmFuc2xhdGlvbi5tYXBQb2ludChGbG9hdFBvaW50KDAsIDApKTsKKyAgICBhdXRvIGFkdmFu
Y2UgPSBtX2dseXBoQnVmZmVyLmFkdmFuY2VBdChtX2luZGV4KTsKKyAgICBhdXRvIGVuZCA9IG1f
dHJhbnNsYXRpb24ubWFwU2l6ZShGbG9hdFNpemUoYWR2YW5jZS53aWR0aCgpLCBhZHZhbmNlLmhl
aWdodCgpKSk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGJlZ2lubmluZy54KCksIGJlZ2lu
bmluZy54KCkgKyBlbmQud2lkdGgoKSk7Cit9CisKK2F1dG8gR2x5cGhUb1BhdGhUcmFuc2xhdG9y
Ojp1bmRlcmxpbmVUeXBlKCkgLT4gR2x5cGhVbmRlcmxpbmVUeXBlCit7CisgICAgcmV0dXJuIGNv
bXB1dGVVbmRlcmxpbmVUeXBlKG1fdGV4dFJ1biwgbV9nbHlwaEJ1ZmZlciwgbV9pbmRleCk7Cit9
CisKK3ZvaWQgR2x5cGhUb1BhdGhUcmFuc2xhdG9yOjphZHZhbmNlKCkKK3sKKyAgICBHbHlwaEJ1
ZmZlckFkdmFuY2UgYWR2YW5jZSA9IG1fZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KG1faW5kZXgpOwor
ICAgIG1fdHJhbnNsYXRpb24udHJhbnNsYXRlKEZsb2F0U2l6ZShhZHZhbmNlLndpZHRoKCksIGFk
dmFuY2UuaGVpZ2h0KCkpKTsKKyAgICArK21faW5kZXg7CisgICAgaWYgKG1faW5kZXggPCBtX2ds
eXBoQnVmZmVyLnNpemUoKSkKKyAgICAgICAgbV9mb250RGF0YSA9IG1fZ2x5cGhCdWZmZXIuZm9u
dEF0KG1faW5kZXgpOworfQorCitEYXNoQXJyYXkgRm9udENhc2NhZGU6OmRhc2hlc0ZvckludGVy
c2VjdGlvbnNXaXRoUmVjdChjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHRl
eHRPcmlnaW4sIGNvbnN0IEZsb2F0UmVjdCYgbGluZUV4dGVudHMpIGNvbnN0Cit7CisgICAgaWYg
KGlzTG9hZGluZ0N1c3RvbUZvbnRzKCkpCisgICAgICAgIHJldHVybiBEYXNoQXJyYXkoKTsKKwor
ICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOworICAgIGdseXBoQnVmZmVyLnNhdmVPZmZzZXRz
SW5TdHJpbmcoKTsKKyAgICBmbG9hdCBkZWx0YVg7CisgICAgaWYgKGNvZGVQYXRoKHJ1bikgIT0g
Rm9udENhc2NhZGU6OkNvbXBsZXgpCisgICAgICAgIGRlbHRhWCA9IGdldEdseXBoc0FuZEFkdmFu
Y2VzRm9yU2ltcGxlVGV4dChydW4sIDAsIHJ1bi5sZW5ndGgoKSwgZ2x5cGhCdWZmZXIpOworICAg
IGVsc2UKKyAgICAgICAgZGVsdGFYID0gZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4
dChydW4sIDAsIHJ1bi5sZW5ndGgoKSwgZ2x5cGhCdWZmZXIpOworCisgICAgaWYgKCFnbHlwaEJ1
ZmZlci5zaXplKCkpCisgICAgICAgIHJldHVybiBEYXNoQXJyYXkoKTsKKworICAgIEZsb2F0UG9p
bnQgb3JpZ2luID0gRmxvYXRQb2ludCh0ZXh0T3JpZ2luLngoKSArIGRlbHRhWCwgdGV4dE9yaWdp
bi55KCkpOworICAgIEdseXBoVG9QYXRoVHJhbnNsYXRvciB0cmFuc2xhdG9yKHJ1biwgZ2x5cGhC
dWZmZXIsIG9yaWdpbik7CisgICAgRGFzaEFycmF5IHJlc3VsdDsKKyAgICBmb3IgKHVuc2lnbmVk
IGluZGV4ID0gMDsgdHJhbnNsYXRvci5jb250YWluc01vcmVQYXRocygpOyArK2luZGV4LCB0cmFu
c2xhdG9yLmFkdmFuY2UoKSkgeworICAgICAgICBhdXRvIGluZm8gPSBHbHlwaEl0ZXJhdGlvblN0
YXRlKENHUG9pbnRNYWtlKDAsIDApLCBDR1BvaW50TWFrZSgwLCAwKSwgbGluZUV4dGVudHMueSgp
LCBsaW5lRXh0ZW50cy55KCkgKyBsaW5lRXh0ZW50cy5oZWlnaHQoKSwgbGluZUV4dGVudHMueCgp
ICsgbGluZUV4dGVudHMud2lkdGgoKSwgbGluZUV4dGVudHMueCgpKTsKKyAgICAgICAgY29uc3Qg
Rm9udCogbG9jYWxGb250ID0gZ2x5cGhCdWZmZXIuZm9udEF0KGluZGV4KTsKKyAgICAgICAgaWYg
KCFsb2NhbEZvbnQpIHsKKyAgICAgICAgICAgIC8vIFRoZSBhZHZhbmNlcyB3aWxsIGdldCBhbGwg
bWVzc2VkIHVwIGlmIHdlIGRvIGFueXRoaW5nIG90aGVyIHRoYW4gYmFpbCBoZXJlLgorICAgICAg
ICAgICAgcmVzdWx0LmNsZWFyKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICBzd2l0Y2ggKHRyYW5zbGF0b3IudW5kZXJsaW5lVHlwZSgpKSB7CisgICAgICAgIGNhc2Ug
R2x5cGhVbmRlcmxpbmVUeXBlOjpTa2lwRGVzY2VuZGVyczogeworICAgICAgICAgICAgUGF0aCBw
YXRoID0gdHJhbnNsYXRvci5wYXRoKCk7CisgICAgICAgICAgICBwYXRoLmFwcGx5KFsmXShjb25z
dCBQYXRoRWxlbWVudCYgZWxlbWVudCkgeworICAgICAgICAgICAgICAgIGZpbmRQYXRoSW50ZXJz
ZWN0aW9ucyhpbmZvLCBlbGVtZW50KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgaWYg
KGluZm8ubWluWCA8IGluZm8ubWF4WCkgeworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
aW5mby5taW5YIC0gbGluZUV4dGVudHMueCgpKTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKGluZm8ubWF4WCAtIGxpbmVFeHRlbnRzLngoKSk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdseXBoVW5kZXJsaW5lVHlwZTo6
U2tpcEdseXBoOiB7CisgICAgICAgICAgICBzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0PiBleHRlbnRz
ID0gdHJhbnNsYXRvci5leHRlbnRzKCk7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGV4dGVu
dHMuZmlyc3QgLSBsaW5lRXh0ZW50cy54KCkpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChl
eHRlbnRzLnNlY29uZCAtIGxpbmVFeHRlbnRzLngoKSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIEdseXBoVW5kZXJsaW5lVHlwZTo6RHJhd092ZXJHbHlwaDoK
KyAgICAgICAgICAgIC8vIE5vdGhpbmcgdG8gZG8KKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCmluZGV4IDk3MDY5OGE0MzVmYTk4YjQ3
NGQ1MDdlNTZlY2E3NmY1OTIyMGRkZjQuLjc2NjMyY2YxMTYwNTliODU0YjBmODQ0ZTU1MmZkOGJh
MmRmNGQwM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYXNjYWRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENh
c2NhZGUuaApAQCAtODEsMTggKzgxLDYgQEAgc3RydWN0IEdseXBoT3ZlcmZsb3cgewogICAgIGJv
b2wgY29tcHV0ZUJvdW5kcyB7IGZhbHNlIH07CiB9OwogCi1jbGFzcyBHbHlwaFRvUGF0aFRyYW5z
bGF0b3IgewotcHVibGljOgotICAgIGVudW0gY2xhc3MgR2x5cGhVbmRlcmxpbmVUeXBlIHtTa2lw
RGVzY2VuZGVycywgU2tpcEdseXBoLCBEcmF3T3ZlckdseXBofTsKLSAgICB2aXJ0dWFsIGJvb2wg
Y29udGFpbnNNb3JlUGF0aHMoKSA9IDA7Ci0gICAgdmlydHVhbCBQYXRoIHBhdGgoKSA9IDA7Ci0g
ICAgdmlydHVhbCBzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0PiBleHRlbnRzKCkgPSAwOwotICAgIHZp
cnR1YWwgR2x5cGhVbmRlcmxpbmVUeXBlIHVuZGVybGluZVR5cGUoKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGFkdmFuY2UoKSA9IDA7Ci0gICAgdmlydHVhbCB+R2x5cGhUb1BhdGhUcmFuc2xhdG9y
KCkgPSBkZWZhdWx0OwotfTsKLUdseXBoVG9QYXRoVHJhbnNsYXRvcjo6R2x5cGhVbmRlcmxpbmVU
eXBlIGNvbXB1dGVVbmRlcmxpbmVUeXBlKGNvbnN0IFRleHRSdW4mLCBjb25zdCBHbHlwaEJ1ZmZl
ciYsIHVuc2lnbmVkIGluZGV4KTsKLQogY2xhc3MgVGV4dExheW91dERlbGV0ZXIgewogcHVibGlj
OgogICAgIHZvaWQgb3BlcmF0b3IoKShUZXh0TGF5b3V0KikgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250TWV0cmljcy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udE1ldHJpY3MuaAppbmRleCBlOGRkZWNkNzJlMThj
YjMxMWNhNjY4NDM1ZDYxYWM1NzBhMTM4MGY2Li5iMTBmZTViZTViMzRiZTIyZDI0NTJiNjZiNWIw
NTliZTRkNGI5ODg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250TWV0cmljcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRNZXRyaWNzLmgKQEAgLTEwMiw2ICsxMDIsMTIgQEAgcHVibGljOgogICAgIGZsb2F0IHplcm9X
aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1femVyb1dpZHRoOyB9CiAgICAgdm9pZCBzZXRaZXJvV2lk
dGgoZmxvYXQgemVyb1dpZHRoKSB7IG1femVyb1dpZHRoID0gemVyb1dpZHRoOyB9CiAKKyAgICBm
bG9hdCB1bmRlcmxpbmVQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5kZXJsaW5lUG9zaXRp
b247IH0KKyAgICB2b2lkIHNldFVuZGVybGluZVBvc2l0aW9uKGZsb2F0IHVuZGVybGluZVBvc2l0
aW9uKSB7IG1fdW5kZXJsaW5lUG9zaXRpb24gPSB1bmRlcmxpbmVQb3NpdGlvbjsgfQorCisgICAg
ZmxvYXQgdW5kZXJsaW5lVGhpY2tuZXNzKCkgY29uc3QgeyByZXR1cm4gbV91bmRlcmxpbmVUaGlj
a25lc3M7IH0KKyAgICB2b2lkIHNldFVuZGVybGluZVRoaWNrbmVzcyhmbG9hdCB1bmRlcmxpbmVU
aGlja25lc3MpIHsgbV91bmRlcmxpbmVUaGlja25lc3MgPSB1bmRlcmxpbmVUaGlja25lc3M7IH0K
KwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRm9udDsKIApAQCAtMTI1LDYgKzEzMSw4IEBA
IHByaXZhdGU6CiAgICAgZmxvYXQgbV96ZXJvV2lkdGggeyAwIH07CiAgICAgZmxvYXQgbV94SGVp
Z2h0IHsgMCB9OwogICAgIGZsb2F0IG1fY2FwSGVpZ2h0IHsgMCB9OworICAgIGZsb2F0IG1fdW5k
ZXJsaW5lUG9zaXRpb24geyAwIH07CisgICAgZmxvYXQgbV91bmRlcmxpbmVUaGlja25lc3MgeyAw
IH07CiB9OwogCiBzdGF0aWMgaW5saW5lIGZsb2F0IHNjYWxlRW1Ub1VuaXRzKGZsb2F0IHgsIHVu
c2lnbmVkIHVuaXRzUGVyRW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HbHlwaE1ldHJpY3NNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dseXBoTWV0cmljc01hcC5oCmluZGV4IDRmMGY1OGE1ODcyMTYwNjg3NzFjNGE0N2JjZjhk
OTJiYTVmNTg5OWIuLjNjOTJiNzY1ZWQ1Y2FmNjI1YmZiZTA2MjVjYjEwMWRlMzQ4MTg1ZDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01h
cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01h
cC5oCkBAIC0zMCw2ICszMCw3IEBACiAjZGVmaW5lIEdseXBoTWV0cmljc01hcF9oCiAKICNpbmNs
dWRlICJHbHlwaC5oIgorI2luY2x1ZGUgIlBhdGguaCIKICNpbmNsdWRlIDxhcnJheT4KICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogCkBAIC00NSw2ICs0NiwxMSBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBsb2NhdGVQYWdlKGdseXBoIC8gR2x5cGhNZXRyaWNzUGFnZTo6c2l6ZSkubWV0cmlj
c0ZvckdseXBoKGdseXBoKTsKICAgICB9CiAKKyAgICBjb25zdCBUJiBleGlzdGluZ01ldHJpY3NG
b3JHbHlwaChHbHlwaCBnbHlwaCkKKyAgICB7CisgICAgICAgIHJldHVybiBsb2NhdGVQYWdlKGds
eXBoIC8gR2x5cGhNZXRyaWNzUGFnZTo6c2l6ZSkuZXhpc3RpbmdNZXRyaWNzRm9yR2x5cGgoZ2x5
cGgpOworICAgIH0KKwogICAgIHZvaWQgc2V0TWV0cmljc0ZvckdseXBoKEdseXBoIGdseXBoLCBj
b25zdCBUJiBtZXRyaWNzKQogICAgIHsKICAgICAgICAgbG9jYXRlUGFnZShnbHlwaCAvIEdseXBo
TWV0cmljc1BhZ2U6OnNpemUpLnNldE1ldHJpY3NGb3JHbHlwaChnbHlwaCwgbWV0cmljcyk7CkBA
IC02OCw2ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBUIG1ldHJpY3NG
b3JHbHlwaChHbHlwaCBnbHlwaCkgY29uc3QgeyByZXR1cm4gbV9tZXRyaWNzW2dseXBoICUgc2l6
ZV07IH0KKyAgICAgICAgY29uc3QgVCYgZXhpc3RpbmdNZXRyaWNzRm9yR2x5cGgoR2x5cGggZ2x5
cGgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0cmljc1tnbHlwaCAlIHNpemVdOyB9CiAgICAgICAgIHZv
aWQgc2V0TWV0cmljc0ZvckdseXBoKEdseXBoIGdseXBoLCBjb25zdCBUJiBtZXRyaWNzKQogICAg
ICAgICB7CiAgICAgICAgICAgICBzZXRNZXRyaWNzRm9ySW5kZXgoZ2x5cGggJSBzaXplLCBtZXRy
aWNzKTsKQEAgLTEwOCw2ICsxMTUsMTEgQEAgdGVtcGxhdGU8PiBpbmxpbmUgRmxvYXRSZWN0IEds
eXBoTWV0cmljc01hcDxGbG9hdFJlY3Q+Ojp1bmtub3duTWV0cmljcygpCiAgICAgcmV0dXJuIEZs
b2F0UmVjdCgwLCAwLCBjR2x5cGhTaXplVW5rbm93biwgY0dseXBoU2l6ZVVua25vd24pOwogfQog
Cit0ZW1wbGF0ZTw+IGlubGluZSBzdGQ6Om9wdGlvbmFsPFBhdGg+IEdseXBoTWV0cmljc01hcDxz
dGQ6Om9wdGlvbmFsPFBhdGg+Pjo6dW5rbm93bk1ldHJpY3MoKQoreworICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7Cit9CisKIHRlbXBsYXRlPGNsYXNzIFQ+IHR5cGVuYW1lIEdseXBoTWV0cmljc01h
cDxUPjo6R2x5cGhNZXRyaWNzUGFnZSYgR2x5cGhNZXRyaWNzTWFwPFQ+Ojpsb2NhdGVQYWdlU2xv
d0Nhc2UodW5zaWduZWQgcGFnZU51bWJlcikKIHsKICAgICBpZiAoIXBhZ2VOdW1iZXIpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
Y3BwCmluZGV4IDVkNjZmYjg5NDIwYTFlYTA1NzEwOGRlZDQzMzVmYzZmZjQwMTBhMmUuLmU5YjQz
MDQ3MDk5MzgwMThlYjYwZjEyMmNiNDFkYmZiZGJkMjlkM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtOTcxLDM1
ICs5NzEsNiBAQCBib29sIEdyYXBoaWNzQ29udGV4dDo6aXNBY2NlbGVyYXRlZENvbnRleHQoKSBj
b25zdAogfQogI2VuZGlmCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjphZGp1c3RMaW5lVG9QaXhl
bEJvdW5kYXJpZXMoRmxvYXRQb2ludCYgcDEsIEZsb2F0UG9pbnQmIHAyLCBmbG9hdCBzdHJva2VX
aWR0aCwgU3Ryb2tlU3R5bGUgcGVuU3R5bGUpCi17Ci0gICAgLy8gRm9yIG9kZCB3aWR0aHMsIHdl
IGFkZCBpbiAwLjUgdG8gdGhlIGFwcHJvcHJpYXRlIHgveSBzbyB0aGF0IHRoZSBmbG9hdCBhcml0
aG1ldGljCi0gICAgLy8gd29ya3Mgb3V0LiAgRm9yIGV4YW1wbGUsIHdpdGggYSBib3JkZXIgd2lk
dGggb2YgMywgV2ViS2l0IHdpbGwgcGFzcyB1cyAoeTEreTIpLzIsIGUuZy4sCi0gICAgLy8gKDUw
KzUzKS8yID0gMTAzLzIgPSA1MSB3aGVuIHdlIHdhbnQgNTEuNS4gIEl0IGlzIGFsd2F5cyB0cnVl
IHRoYXQgYW4gZXZlbiB3aWR0aCBnYXZlCi0gICAgLy8gdXMgYSBwZXJmZWN0IHBvc2l0aW9uLCBi
dXQgYW4gb2RkIHdpZHRoIGdhdmUgdXMgYSBwb3NpdGlvbiB0aGF0IGlzIG9mZiBieSBleGFjdGx5
IDAuNS4KLSAgICBpZiAocGVuU3R5bGUgPT0gRG90dGVkU3Ryb2tlIHx8IHBlblN0eWxlID09IERh
c2hlZFN0cm9rZSkgewotICAgICAgICBpZiAocDEueCgpID09IHAyLngoKSkgewotICAgICAgICAg
ICAgcDEuc2V0WShwMS55KCkgKyBzdHJva2VXaWR0aCk7Ci0gICAgICAgICAgICBwMi5zZXRZKHAy
LnkoKSAtIHN0cm9rZVdpZHRoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHAxLnNl
dFgocDEueCgpICsgc3Ryb2tlV2lkdGgpOwotICAgICAgICAgICAgcDIuc2V0WChwMi54KCkgLSBz
dHJva2VXaWR0aCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoc3RhdGljX2Nhc3Q8aW50
PihzdHJva2VXaWR0aCkgJSAyKSB7IC8vb2RkCi0gICAgICAgIGlmIChwMS54KCkgPT0gcDIueCgp
KSB7Ci0gICAgICAgICAgICAvLyBXZSdyZSBhIHZlcnRpY2FsIGxpbmUuICBBZGp1c3Qgb3VyIHgu
Ci0gICAgICAgICAgICBwMS5zZXRYKHAxLngoKSArIDAuNWYpOwotICAgICAgICAgICAgcDIuc2V0
WChwMi54KCkgKyAwLjVmKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIFdlJ3Jl
IGEgaG9yaXpvbnRhbCBsaW5lLiBBZGp1c3Qgb3VyIHkuCi0gICAgICAgICAgICBwMS5zZXRZKHAx
LnkoKSArIDAuNWYpOwotICAgICAgICAgICAgcDIuc2V0WShwMi55KCkgKyAwLjVmKTsKLSAgICAg
ICAgfQotICAgIH0KLX0KLQogI2lmICFVU0UoQ0cpICYmICFVU0UoRElSRUNUMkQpCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6cGxhdGZvcm1BcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0KQogewpA
QCAtMTA4MywxOCArMTA1NCwxOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1TdHJv
a2VFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgZWxsaXBzZSkKIH0KICNlbmRpZgogCi1GbG9hdFJl
Y3QgR3JhcGhpY3NDb250ZXh0Ojpjb21wdXRlVW5kZXJsaW5lQm91bmRzRm9yVGV4dChjb25zdCBG
bG9hdFBvaW50JiBwb2ludCwgZmxvYXQgd2lkdGgsIGJvb2wgcHJpbnRpbmcpCitGbG9hdFJlY3Qg
R3JhcGhpY3NDb250ZXh0Ojpjb21wdXRlVW5kZXJsaW5lQm91bmRzRm9yVGV4dChjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIGJvb2wgcHJpbnRpbmcpCiB7CiAgICAgQ29sb3IgZHVtbXlDb2xvcjsKLSAg
ICByZXR1cm4gY29tcHV0ZUxpbmVCb3VuZHNBbmRBbnRpYWxpYXNpbmdNb2RlRm9yVGV4dChwb2lu
dCwgd2lkdGgsIHByaW50aW5nLCBkdW1teUNvbG9yKTsKKyAgICByZXR1cm4gY29tcHV0ZUxpbmVC
b3VuZHNBbmRBbnRpYWxpYXNpbmdNb2RlRm9yVGV4dChyZWN0LCBwcmludGluZywgZHVtbXlDb2xv
cik7CiB9CiAKLUZsb2F0UmVjdCBHcmFwaGljc0NvbnRleHQ6OmNvbXB1dGVMaW5lQm91bmRzQW5k
QW50aWFsaWFzaW5nTW9kZUZvclRleHQoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGZsb2F0IHdp
ZHRoLCBib29sIHByaW50aW5nLCBDb2xvciYgY29sb3IpCisvLyBJbiBjb250cmFzdCB0byBjb21w
dXRlVW5kZXJsaW5lR2FwKCksIHRoaXMgbnVkZ2VzIHRoZSB1bmRlcmxpbmUgcmVjdCBhcm91bmQg
c28gaXQgbG9va3MgY3Jpc3Agb24gY29tcHV0ZXIgbW9uaXRvcnMuCitGbG9hdFJlY3QgR3JhcGhp
Y3NDb250ZXh0Ojpjb21wdXRlTGluZUJvdW5kc0FuZEFudGlhbGlhc2luZ01vZGVGb3JUZXh0KGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgYm9vbCBwcmludGluZywgQ29sb3ImIGNvbG9yKQogewotICAg
IEZsb2F0UG9pbnQgb3JpZ2luID0gcG9pbnQ7Ci0gICAgZmxvYXQgdGhpY2tuZXNzID0gc3RkOjpt
YXgoc3Ryb2tlVGhpY2tuZXNzKCksIDAuNWYpOworICAgIEZsb2F0UG9pbnQgb3JpZ2luID0gcmVj
dC5sb2NhdGlvbigpOworICAgIGZsb2F0IHRoaWNrbmVzcyA9IHN0ZDo6bWF4KHJlY3QuaGVpZ2h0
KCksIDAuNWYpOwogICAgIGlmIChwcmludGluZykKLSAgICAgICAgcmV0dXJuIEZsb2F0UmVjdChv
cmlnaW4sIEZsb2F0U2l6ZSh3aWR0aCwgdGhpY2tuZXNzKSk7CisgICAgICAgIHJldHVybiBGbG9h
dFJlY3Qob3JpZ2luLCBGbG9hdFNpemUocmVjdC53aWR0aCgpLCB0aGlja25lc3MpKTsKIAogICAg
IEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBnZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpEZWZp
bml0ZWx5SW5jbHVkZURldmljZVNjYWxlKTsKICAgICAvLyBKdXN0IGNvbXB1dGUgc2NhbGUgaW4g
eCBkaW1lbnNpb24sIGFzc3VtaW5nIHggYW5kIHkgc2NhbGVzIGFyZSBlcXVhbC4KQEAgLTExMDgs
MTIgKzEwODAsMTIgQEAgRmxvYXRSZWN0IEdyYXBoaWNzQ29udGV4dDo6Y29tcHV0ZUxpbmVCb3Vu
ZHNBbmRBbnRpYWxpYXNpbmdNb2RlRm9yVGV4dChjb25zdCBGbG8KICAgICAgICAgY29sb3IgPSBj
b2xvci5jb2xvcldpdGhBbHBoYU11bHRpcGxpZWRCeShzaGFkZSk7CiAgICAgfQogCi0gICAgRmxv
YXRQb2ludCBkZXZpY2VQb2ludCA9IHRyYW5zZm9ybS5tYXBQb2ludChwb2ludCk7CisgICAgRmxv
YXRQb2ludCBkZXZpY2VQb2ludCA9IHRyYW5zZm9ybS5tYXBQb2ludChyZWN0LmxvY2F0aW9uKCkp
OwogICAgIC8vIFZpc3VhbCBvdmVyZmxvdyBtaWdodCBvY2N1ciBoZXJlIGR1ZSB0byBpbnRlZ3Jh
bCByb3VuZGYvY2VpbGYuIHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMgYWRqdXN0cyB0aGUg
b3ZlcmZsb3cgdmFsdWUgZm9yIHVuZGVybGluZSBkZWNvcmF0aW9uLgogICAgIEZsb2F0UG9pbnQg
ZGV2aWNlT3JpZ2luID0gRmxvYXRQb2ludChyb3VuZGYoZGV2aWNlUG9pbnQueCgpKSwgY2VpbGYo
ZGV2aWNlUG9pbnQueSgpKSk7CiAgICAgaWYgKGF1dG8gaW52ZXJzZSA9IHRyYW5zZm9ybS5pbnZl
cnNlKCkpCiAgICAgICAgIG9yaWdpbiA9IGludmVyc2UudmFsdWUoKS5tYXBQb2ludChkZXZpY2VP
cmlnaW4pOwotICAgIHJldHVybiBGbG9hdFJlY3Qob3JpZ2luLCBGbG9hdFNpemUod2lkdGgsIHRo
aWNrbmVzcykpOworICAgIHJldHVybiBGbG9hdFJlY3Qob3JpZ2luLCBGbG9hdFNpemUocmVjdC53
aWR0aCgpLCB0aGlja25lc3MpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmFwcGx5U3Rh
dGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCA0OTdkMmM3OWZk
MmNiMDhmYzNkMGNjYmY4ZjhlYTIyNzNjNDMxMDFjLi43OTlmOTMyNDRlODExODBkOThiN2NlN2Vl
ZDQ3MjdiNGU0ZGUwZGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtNDE5LDkgKzQxOSw5IEBAIHB1YmxpYzoKICAgICB9
OwogICAgIEZsb2F0UmVjdCByb3VuZFRvRGV2aWNlUGl4ZWxzKGNvbnN0IEZsb2F0UmVjdCYsIFJv
dW5kaW5nTW9kZSA9IFJvdW5kQWxsU2lkZXMpOwogCi0gICAgRmxvYXRSZWN0IGNvbXB1dGVVbmRl
cmxpbmVCb3VuZHNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmLCBmbG9hdCB3aWR0aCwgYm9vbCBw
cmludGluZyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TGluZUZvclRleHQoY29uc3Qg
RmxvYXRQb2ludCYsIGZsb2F0IHdpZHRoLCBib29sIHByaW50aW5nLCBib29sIGRvdWJsZUxpbmVz
ID0gZmFsc2UsIFN0cm9rZVN0eWxlID0gU29saWRTdHJva2UpOwotICAgIHZvaWQgZHJhd0xpbmVz
Rm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRGFzaEFycmF5JiB3aWR0aHMsIGJvb2wg
cHJpbnRpbmcsIGJvb2wgZG91YmxlTGluZXMgPSBmYWxzZSwgU3Ryb2tlU3R5bGUgPSBTb2xpZFN0
cm9rZSk7CisgICAgRmxvYXRSZWN0IGNvbXB1dGVVbmRlcmxpbmVCb3VuZHNGb3JUZXh0KGNvbnN0
IEZsb2F0UmVjdCYsIGJvb2wgcHJpbnRpbmcpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJh
d0xpbmVGb3JUZXh0KGNvbnN0IEZsb2F0UmVjdCYsIGJvb2wgcHJpbnRpbmcsIGJvb2wgZG91Ymxl
TGluZXMgPSBmYWxzZSwgU3Ryb2tlU3R5bGUgPSBTb2xpZFN0cm9rZSk7CisgICAgdm9pZCBkcmF3
TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmLCBmbG9hdCB0aGlja25lc3MsIGNvbnN0IERh
c2hBcnJheSYgd2lkdGhzLCBib29sIHByaW50aW5nLCBib29sIGRvdWJsZUxpbmVzID0gZmFsc2Us
IFN0cm9rZVN0eWxlID0gU29saWRTdHJva2UpOwogICAgIHZvaWQgZHJhd0xpbmVGb3JEb2N1bWVu
dE1hcmtlcihjb25zdCBGbG9hdFBvaW50JiwgZmxvYXQgd2lkdGgsIERvY3VtZW50TWFya2VyTGlu
ZVN0eWxlKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYmVnaW5UcmFuc3BhcmVuY3lMYXll
cihmbG9hdCBvcGFjaXR5KTsKQEAgLTU3Niw4ICs1NzYsNiBAQCBwdWJsaWM6CiAjZW5kaWYgLy8g
UExBVEZPUk0oV0lOKQogI2VuZGlmIC8vIE9TKFdJTkRPV1MpCiAKLSAgICBzdGF0aWMgdm9pZCBh
ZGp1c3RMaW5lVG9QaXhlbEJvdW5kYXJpZXMoRmxvYXRQb2ludCYgcDEsIEZsb2F0UG9pbnQmIHAy
LCBmbG9hdCBzdHJva2VXaWR0aCwgU3Ryb2tlU3R5bGUpOwotCiAgICAgYm9vbCBzdXBwb3J0c0lu
dGVybmFsTGlua3MoKSBjb25zdDsKIAogcHJpdmF0ZToKQEAgLTYyNyw3ICs2MjUsNyBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5k
ZWRSZWN0JiwgY29uc3QgQ29sb3ImKTsKIAotICAgIEZsb2F0UmVjdCBjb21wdXRlTGluZUJvdW5k
c0FuZEFudGlhbGlhc2luZ01vZGVGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmLCBmbG9hdCB3aWR0
aCwgYm9vbCBwcmludGluZywgQ29sb3ImKTsKKyAgICBGbG9hdFJlY3QgY29tcHV0ZUxpbmVCb3Vu
ZHNBbmRBbnRpYWxpYXNpbmdNb2RlRm9yVGV4dChjb25zdCBGbG9hdFJlY3QmLCBib29sIHByaW50
aW5nLCBDb2xvciYpOwogCiAgICAgZmxvYXQgZGFzaGVkTGluZUNvcm5lcldpZHRoRm9yU3Ryb2tl
V2lkdGgoZmxvYXQpIGNvbnN0OwogICAgIGZsb2F0IGRhc2hlZExpbmVQYXR0ZXJuV2lkdGhGb3JT
dHJva2VXaWR0aChmbG9hdCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKaW5kZXggNDdmYjRhNDJlZTQzYjRl
ZmQxNmZiYmI0NDQ4ZWMxZDkxZjhkYTM3Ny4uODZhZjlhNWJjODY1OWM3M2VhMGM1YWVhNDU1MTJl
ZTA1ZTJmMWEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaApAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgYm9yZGVyVGhp
Y2tuZXNzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdMaW5lKGNvbnN0IEZsb2F0UG9pbnQm
LCBjb25zdCBGbG9hdFBvaW50JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3TGluZXNGb3JU
ZXh0KGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBEYXNoQXJyYXkmIHdpZHRocywgYm9vbCBwcmlu
dGluZywgYm9vbCBkb3VibGVMaW5lcywgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGRyYXdMaW5lc0ZvclRleHQoY29uc3QgRmxvYXRQb2ludCYsIGZsb2F0IHRo
aWNrbmVzcywgY29uc3QgRGFzaEFycmF5JiB3aWR0aHMsIGJvb2wgcHJpbnRpbmcsIGJvb2wgZG91
YmxlTGluZXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0xpbmVGb3JEb2N1bWVudE1hcmtl
cihjb25zdCBGbG9hdFBvaW50JiwgZmxvYXQgd2lkdGgsIERvY3VtZW50TWFya2VyTGluZVN0eWxl
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdGgoY29uc3QgUGF0aCYpID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaAppbmRleCBlMmJiNGJlNGRmOGM5ZWIx
NjE2N2VjM2M4MWExZGJjZjMwYmYzYWNhLi44MGQyODE3ODM3MGMyNDgwMzM1MmM0OWE1MGQzYTU4
MzYxNWYzZWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9U
ZXh0UnVuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5o
CkBAIC0zNSw3ICszNSw2IEBAIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIEZvbnRDYXNjYWRlOwog
Y2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgR2x5cGhCdWZmZXI7Ci1jbGFzcyBHbHlwaFRv
UGF0aFRyYW5zbGF0b3I7CiBjbGFzcyBGb250OwogCiBzdHJ1Y3QgR2x5cGhEYXRhOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAK
aW5kZXggMjg2YmM2ZDhlM2MyNjUzMDQ2YzYzYjUyYjM2ZDA5MDMxZjIwOGQ5MC4uNGQ1MTBiOTY3
NDk2MmRkNzA4OWVmNjQzOWVjYWI5ZmI2NDg3NDFjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCkBAIC03OCwxMDMgKzc4
LDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEcKICAgICAgICAgc3RhdGUudGV4dERyYXdpbmdN
b2RlLCBzdGF0ZS5zdHJva2VUaGlja25lc3MsIHN0YXRlLnNoYWRvd09mZnNldCwgc3RhdGUuc2hh
ZG93Q29sb3IpOwogfQogCi0jaWYgRU5BQkxFKENTUzNfVEVYVF9ERUNPUkFUSU9OX1NLSVBfSU5L
KQotc3RydWN0IEdseXBoSXRlcmF0aW9uU3RhdGUgewotICAgIEdseXBoSXRlcmF0aW9uU3RhdGUo
RmxvYXRQb2ludCBzdGFydGluZ1BvaW50LCBGbG9hdFBvaW50IGN1cnJlbnRQb2ludCwgZmxvYXQg
Y2VudGVyT2ZMaW5lLCBmbG9hdCBtaW5YLCBmbG9hdCBtYXhYKQotICAgICAgICA6IHN0YXJ0aW5n
UG9pbnQoc3RhcnRpbmdQb2ludCkKLSAgICAgICAgLCBjdXJyZW50UG9pbnQoY3VycmVudFBvaW50
KQotICAgICAgICAsIGNlbnRlck9mTGluZShjZW50ZXJPZkxpbmUpCi0gICAgICAgICwgbWluWCht
aW5YKQotICAgICAgICAsIG1heFgobWF4WCkKLSAgICB7Ci0gICAgfQotICAgIEZsb2F0UG9pbnQg
c3RhcnRpbmdQb2ludDsKLSAgICBGbG9hdFBvaW50IGN1cnJlbnRQb2ludDsKLSAgICBmbG9hdCBj
ZW50ZXJPZkxpbmU7Ci0gICAgZmxvYXQgbWluWDsKLSAgICBmbG9hdCBtYXhYOwotfTsKLQotc3Rh
dGljIGJvb2wgZmluZEludGVyc2VjdGlvblBvaW50KGZsb2F0IHksIEZsb2F0UG9pbnQgcDEsIEZs
b2F0UG9pbnQgcDIsIGZsb2F0JiB4KQotewotICAgIHggPSBwMS54KCkgKyAoeSAtIHAxLnkoKSkg
KiAocDIueCgpIC0gcDEueCgpKSAvIChwMi55KCkgLSBwMS55KCkpOwotICAgIHJldHVybiAocDEu
eSgpIDwgeSAmJiBwMi55KCkgPiB5KSB8fCAocDEueSgpID4geSAmJiBwMi55KCkgPCB5KTsKLX0K
LQotc3RhdGljIHZvaWQgdXBkYXRlWChHbHlwaEl0ZXJhdGlvblN0YXRlJiBzdGF0ZSwgZmxvYXQg
eCkKLXsKLSAgICBzdGF0ZS5taW5YID0gc3RkOjptaW4oc3RhdGUubWluWCwgeCk7Ci0gICAgc3Rh
dGUubWF4WCA9IHN0ZDo6bWF4KHN0YXRlLm1heFgsIHgpOwotfQotCi0vLyBUaGlzIGZ1bmN0aW9u
IGlzIGNhbGxlZCBieSBQYXRoOjphcHBseSBhbmQgaXMgdGhlcmVmb3JlIGludm9rZWQgZm9yIGVh
Y2ggY29udG91ciBpbiBhIGdseXBoLiBUaGlzCi0vLyBmdW5jdGlvbiBtb2RlbHMgZWFjaCBjb250
b3VycyBhcyBhIHN0cmFpZ2h0IGxpbmUgYW5kIGNhbGN1bGF0ZXMgdGhlIGludGVyc2VjdGlvbnMg
YmV0d2VlbiBlYWNoCi0vLyBwc2V1ZG8tY29udG91ciBhbmQgdGhlIHZlcnRpY2FsIGNlbnRlciBv
ZiB0aGUgdW5kZXJsaW5lIGZvdW5kIGluIEdseXBoSXRlcmF0aW9uU3RhdGU6OmNlbnRlck9mTGlu
ZS4KLS8vIEl0IGtlZXBzIHRyYWNrIG9mIHRoZSBsZWZ0bW9zdCBhbmQgcmlnaHRtb3N0IGludGVy
c2VjdGlvbiBpbiAgR2x5cGhJdGVyYXRpb25TdGF0ZTo6bWluWCBhbmQgCi0vLyBHbHlwaEl0ZXJh
dGlvblN0YXRlOjptYXhYLgotc3RhdGljIHZvaWQgZmluZFBhdGhJbnRlcnNlY3Rpb25zKEdseXBo
SXRlcmF0aW9uU3RhdGUmIHN0YXRlLCBjb25zdCBQYXRoRWxlbWVudCYgZWxlbWVudCkKLXsKLSAg
ICBib29sIGRvSW50ZXJzZWN0aW9uID0gZmFsc2U7Ci0gICAgRmxvYXRQb2ludCBwb2ludCA9IEZs
b2F0UG9pbnQoKTsKLSAgICBzd2l0Y2ggKGVsZW1lbnQudHlwZSkgewotICAgIGNhc2UgUGF0aEVs
ZW1lbnRNb3ZlVG9Qb2ludDoKLSAgICAgICAgc3RhdGUuc3RhcnRpbmdQb2ludCA9IGVsZW1lbnQu
cG9pbnRzWzBdOwotICAgICAgICBzdGF0ZS5jdXJyZW50UG9pbnQgPSBlbGVtZW50LnBvaW50c1sw
XTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQYXRoRWxlbWVudEFkZExpbmVUb1BvaW50Ogot
ICAgICAgICBkb0ludGVyc2VjdGlvbiA9IHRydWU7Ci0gICAgICAgIHBvaW50ID0gZWxlbWVudC5w
b2ludHNbMF07Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGF0aEVsZW1lbnRBZGRRdWFkQ3Vy
dmVUb1BvaW50OgotICAgICAgICBkb0ludGVyc2VjdGlvbiA9IHRydWU7Ci0gICAgICAgIHBvaW50
ID0gZWxlbWVudC5wb2ludHNbMV07Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGF0aEVsZW1l
bnRBZGRDdXJ2ZVRvUG9pbnQ6Ci0gICAgICAgIGRvSW50ZXJzZWN0aW9uID0gdHJ1ZTsKLSAgICAg
ICAgcG9pbnQgPSBlbGVtZW50LnBvaW50c1syXTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQ
YXRoRWxlbWVudENsb3NlU3VicGF0aDoKLSAgICAgICAgZG9JbnRlcnNlY3Rpb24gPSB0cnVlOwot
ICAgICAgICBwb2ludCA9IHN0YXRlLnN0YXJ0aW5nUG9pbnQ7Ci0gICAgICAgIGJyZWFrOwotICAg
IH0KLQotICAgIGlmICghZG9JbnRlcnNlY3Rpb24pCi0gICAgICAgIHJldHVybjsKLQotICAgIGZs
b2F0IHg7Ci0gICAgaWYgKGZpbmRJbnRlcnNlY3Rpb25Qb2ludChzdGF0ZS5jZW50ZXJPZkxpbmUs
IHN0YXRlLmN1cnJlbnRQb2ludCwgcG9pbnQsIHgpKQotICAgICAgICB1cGRhdGVYKHN0YXRlLCB4
KTsKLQotICAgIHN0YXRlLmN1cnJlbnRQb2ludCA9IHBvaW50OwotfQotCi1jbGFzcyBDYWlyb0ds
eXBoVG9QYXRoVHJhbnNsYXRvciBmaW5hbCA6IHB1YmxpYyBHbHlwaFRvUGF0aFRyYW5zbGF0b3Ig
ewotcHVibGljOgotICAgIENhaXJvR2x5cGhUb1BhdGhUcmFuc2xhdG9yKGNvbnN0IFRleHRSdW4m
IHRleHRSdW4sIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgY29uc3QgRmxvYXRQb2lu
dCYgdGV4dE9yaWdpbikKLSAgICAgICAgOiBtX2luZGV4KDApCi0gICAgICAgICwgbV90ZXh0UnVu
KHRleHRSdW4pCi0gICAgICAgICwgbV9nbHlwaEJ1ZmZlcihnbHlwaEJ1ZmZlcikKLSAgICAgICAg
LCBtX2ZvbnREYXRhKGdseXBoQnVmZmVyLmZvbnRBdChtX2luZGV4KSkKLSAgICAgICAgLCBtX3Ry
YW5zbGF0aW9uKEFmZmluZVRyYW5zZm9ybSgpLnRyYW5zbGF0ZSh0ZXh0T3JpZ2luLngoKSwgdGV4
dE9yaWdpbi55KCkpKQotICAgIHsKLSAgICB9Ci0KLSAgICBib29sIGNvbnRhaW5zTW9yZVBhdGhz
KCkgZmluYWwgeyByZXR1cm4gbV9pbmRleCAhPSBtX2dseXBoQnVmZmVyLnNpemUoKTsgfQotICAg
IFBhdGggcGF0aCgpIGZpbmFsOwotICAgIHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+IGV4dGVudHMo
KSBmaW5hbDsKLSAgICBHbHlwaFVuZGVybGluZVR5cGUgdW5kZXJsaW5lVHlwZSgpIGZpbmFsOwot
ICAgIHZvaWQgYWR2YW5jZSgpIGZpbmFsOwotCi1wcml2YXRlOgotICAgIHVuc2lnbmVkIG1faW5k
ZXg7Ci0gICAgY29uc3QgVGV4dFJ1biYgbV90ZXh0UnVuOwotICAgIGNvbnN0IEdseXBoQnVmZmVy
JiBtX2dseXBoQnVmZmVyOwotICAgIGNvbnN0IEZvbnQqIG1fZm9udERhdGE7Ci0gICAgQWZmaW5l
VHJhbnNmb3JtIG1fdHJhbnNsYXRpb247Ci19OwotCi1QYXRoIENhaXJvR2x5cGhUb1BhdGhUcmFu
c2xhdG9yOjpwYXRoKCkKK1BhdGggRm9udDo6cGxhdGZvcm1QYXRoRm9yR2x5cGgoR2x5cGggZ2x5
cGgpIGNvbnN0CiB7CiAgICAgUGF0aCBwYXRoOwogICAgIHBhdGguZW5zdXJlUGxhdGZvcm1QYXRo
KCk7CkBAIC0xODgsODcgKzkyLDcgQEAgUGF0aCBDYWlyb0dseXBoVG9QYXRoVHJhbnNsYXRvcjo6
cGF0aCgpCiAgICAgICAgIGNhaXJvX3RyYW5zbGF0ZShwYXRoLnBsYXRmb3JtUGF0aCgpLT5jb250
ZXh0KCksIHN5bnRoZXRpY0JvbGRPZmZzZXQsIDApOwogICAgICAgICBjYWlyb19nbHlwaF9wYXRo
KHBhdGgucGxhdGZvcm1QYXRoKCktPmNvbnRleHQoKSwgJmNhaXJvR2x5cGgsIDEpOwogICAgIH0K
LQotICAgIHBhdGgudHJhbnNmb3JtKG1fdHJhbnNsYXRpb24pOwotICAgIHJldHVybiBwYXRoOwot
fQotCi1zdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0PiBDYWlyb0dseXBoVG9QYXRoVHJhbnNsYXRvcjo6
ZXh0ZW50cygpCi17Ci0gICAgRmxvYXRQb2ludCBiZWdpbm5pbmcgPSBtX3RyYW5zbGF0aW9uLm1h
cFBvaW50KEZsb2F0UG9pbnQoKSk7Ci0gICAgRmxvYXRTaXplIGVuZCA9IG1fdHJhbnNsYXRpb24u
bWFwU2l6ZShtX2dseXBoQnVmZmVyLmFkdmFuY2VBdChtX2luZGV4KSk7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PGZsb2F0PihiZWdpbm5pbmcueCgpKSwgc3RhdGljX2Nh
c3Q8ZmxvYXQ+KGJlZ2lubmluZy54KCkgKyBlbmQud2lkdGgoKSkpOwotfQotCi1HbHlwaFRvUGF0
aFRyYW5zbGF0b3I6OkdseXBoVW5kZXJsaW5lVHlwZSBDYWlyb0dseXBoVG9QYXRoVHJhbnNsYXRv
cjo6dW5kZXJsaW5lVHlwZSgpCi17Ci0gICAgcmV0dXJuIGNvbXB1dGVVbmRlcmxpbmVUeXBlKG1f
dGV4dFJ1biwgbV9nbHlwaEJ1ZmZlciwgbV9pbmRleCk7Ci19Ci0KLXZvaWQgQ2Fpcm9HbHlwaFRv
UGF0aFRyYW5zbGF0b3I6OmFkdmFuY2UoKQotewotICAgIEdseXBoQnVmZmVyQWR2YW5jZSBhZHZh
bmNlID0gbV9nbHlwaEJ1ZmZlci5hZHZhbmNlQXQobV9pbmRleCk7Ci0gICAgbV90cmFuc2xhdGlv
biA9IG1fdHJhbnNsYXRpb24udHJhbnNsYXRlKGFkdmFuY2Uud2lkdGgoKSwgYWR2YW5jZS5oZWln
aHQoKSk7Ci0gICAgKyttX2luZGV4OwotICAgIGlmIChtX2luZGV4IDwgbV9nbHlwaEJ1ZmZlci5z
aXplKCkpCi0gICAgICAgIG1fZm9udERhdGEgPSBtX2dseXBoQnVmZmVyLmZvbnRBdChtX2luZGV4
KTsKLX0KLQotRGFzaEFycmF5IEZvbnRDYXNjYWRlOjpkYXNoZXNGb3JJbnRlcnNlY3Rpb25zV2l0
aFJlY3QoY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luLCBj
b25zdCBGbG9hdFJlY3QmIGxpbmVFeHRlbnRzKSBjb25zdAotewotICAgIGlmIChpc0xvYWRpbmdD
dXN0b21Gb250cygpKQotICAgICAgICByZXR1cm4gRGFzaEFycmF5KCk7Ci0KLSAgICBHbHlwaEJ1
ZmZlciBnbHlwaEJ1ZmZlcjsKLSAgICBnbHlwaEJ1ZmZlci5zYXZlT2Zmc2V0c0luU3RyaW5nKCk7
Ci0gICAgZmxvYXQgZGVsdGFYOwotICAgIGlmIChjb2RlUGF0aChydW4pICE9IEZvbnRDYXNjYWRl
OjpDb21wbGV4KQotICAgICAgICBkZWx0YVggPSBnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvclNpbXBs
ZVRleHQocnVuLCAwLCBydW4ubGVuZ3RoKCksIGdseXBoQnVmZmVyKTsKLSAgICBlbHNlCi0gICAg
ICAgIGRlbHRhWCA9IGdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQocnVuLCAwLCBy
dW4ubGVuZ3RoKCksIGdseXBoQnVmZmVyKTsKLQotICAgIGlmICghZ2x5cGhCdWZmZXIuc2l6ZSgp
KQotICAgICAgICByZXR1cm4gRGFzaEFycmF5KCk7Ci0KLSAgICAvLyBGSVhNRTogSGFuZGxlIFNW
RyArIG5vbi1TVkcgaW50ZXJsZWF2ZWQgcnVucy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzMzc3OAotICAgIEZsb2F0UG9pbnQgb3JpZ2luID0gRmxvYXRQb2ludCh0
ZXh0T3JpZ2luLngoKSArIGRlbHRhWCwgdGV4dE9yaWdpbi55KCkpOwotICAgIENhaXJvR2x5cGhU
b1BhdGhUcmFuc2xhdG9yIHRyYW5zbGF0b3IocnVuLCBnbHlwaEJ1ZmZlciwgb3JpZ2luKTsKLSAg
ICBEYXNoQXJyYXkgcmVzdWx0OwotICAgIGZvciAoaW50IGluZGV4ID0gMDsgdHJhbnNsYXRvci5j
b250YWluc01vcmVQYXRocygpOyArK2luZGV4LCB0cmFuc2xhdG9yLmFkdmFuY2UoKSkgewotICAg
ICAgICBmbG9hdCBjZW50ZXJPZkxpbmUgPSBsaW5lRXh0ZW50cy55KCkgKyAobGluZUV4dGVudHMu
aGVpZ2h0KCkgLyAyKTsKLSAgICAgICAgR2x5cGhJdGVyYXRpb25TdGF0ZSBpbmZvID0gR2x5cGhJ
dGVyYXRpb25TdGF0ZShGbG9hdFBvaW50KCksIEZsb2F0UG9pbnQoKSwgY2VudGVyT2ZMaW5lLCBs
aW5lRXh0ZW50cy54KCkgKyBsaW5lRXh0ZW50cy53aWR0aCgpLCBsaW5lRXh0ZW50cy54KCkpOwot
ICAgICAgICBjb25zdCBGb250KiBsb2NhbEZvbnREYXRhID0gZ2x5cGhCdWZmZXIuZm9udEF0KGlu
ZGV4KTsKLSAgICAgICAgaWYgKCFsb2NhbEZvbnREYXRhKSB7Ci0gICAgICAgICAgICAvLyBUaGUg
YWR2YW5jZXMgd2lsbCBnZXQgYWxsIG1lc3NlZCB1cCBpZiB3ZSBkbyBhbnl0aGluZyBvdGhlciB0
aGFuIGJhaWwgaGVyZS4KLSAgICAgICAgICAgIHJlc3VsdC5jbGVhcigpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgc3dpdGNoICh0cmFuc2xhdG9yLnVuZGVybGluZVR5
cGUoKSkgewotICAgICAgICBjYXNlIEdseXBoVG9QYXRoVHJhbnNsYXRvcjo6R2x5cGhVbmRlcmxp
bmVUeXBlOjpTa2lwRGVzY2VuZGVyczogewotICAgICAgICAgICAgUGF0aCBwYXRoID0gdHJhbnNs
YXRvci5wYXRoKCk7Ci0gICAgICAgICAgICBwYXRoLmFwcGx5KFsmaW5mb10oY29uc3QgUGF0aEVs
ZW1lbnQmIHBhdGhFbGVtZW50KSB7Ci0gICAgICAgICAgICAgICAgZmluZFBhdGhJbnRlcnNlY3Rp
b25zKGluZm8sIHBhdGhFbGVtZW50KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgaWYg
KGluZm8ubWluWCA8IGluZm8ubWF4WCkgewotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
aW5mby5taW5YIC0gbGluZUV4dGVudHMueCgpKTsKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKGluZm8ubWF4WCAtIGxpbmVFeHRlbnRzLngoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEdseXBoVG9QYXRoVHJhbnNsYXRv
cjo6R2x5cGhVbmRlcmxpbmVUeXBlOjpTa2lwR2x5cGg6IHsKLSAgICAgICAgICAgIHN0ZDo6cGFp
cjxmbG9hdCwgZmxvYXQ+IGV4dGVudHMgPSB0cmFuc2xhdG9yLmV4dGVudHMoKTsKLSAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoZXh0ZW50cy5maXJzdCAtIGxpbmVFeHRlbnRzLngoKSk7Ci0gICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKGV4dGVudHMuc2Vjb25kIC0gbGluZUV4dGVudHMueCgpKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgR2x5cGhUb1BhdGhU
cmFuc2xhdG9yOjpHbHlwaFVuZGVybGluZVR5cGU6OkRyYXdPdmVyR2x5cGg6Ci0gICAgICAgICAg
ICAvLyBOb3RoaW5nIHRvIGRvCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0K
LSAgICByZXR1cm4gcmVzdWx0OwogfQotI2VuZGlmIC8vIEVOQUJMRShDU1MzX1RFWFRfREVDT1JB
VElPTl9TS0lQX0lOSykKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5j
cHAKaW5kZXggMjdmYmNiYjYxNWMxMDI1YjM0NTYzMjdiYWM4MmQ3ZWJiZTc2ZDU5Yi4uZDc2MWI1
NTI2MjQ1YTE2YjY3NmM5NGI5NjAxZjFiOTBmMWQxNmRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApA
QCAtMTU3MCwxNSArMTU3MCwxNSBAQCBGbG9hdFJlY3QgR3JhcGhpY3NDb250ZXh0Ojpyb3VuZFRv
RGV2aWNlUGl4ZWxzKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgUm91bmRpbmdNbwogICAgIHJldHVy
biBGbG9hdFJlY3Qocm91bmRlZE9yaWdpbiwgcm91bmRlZExvd2VyUmlnaHQgLSByb3VuZGVkT3Jp
Z2luKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lRm9yVGV4dChjb25zdCBG
bG9hdFBvaW50JiBwb2ludCwgZmxvYXQgd2lkdGgsIGJvb2wgcHJpbnRpbmcsIGJvb2wgZG91Ymxl
TGluZXMsIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdMaW5lRm9yVGV4dChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGJvb2wgcHJpbnRpbmcsIGJvb2wg
ZG91YmxlTGluZXMsIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlKQogewogICAgIERhc2hBcnJheSB3
aWR0aHM7Ci0gICAgd2lkdGhzLmFwcGVuZCh3aWR0aCk7CisgICAgd2lkdGhzLmFwcGVuZChyZWN0
LndpZHRoKCkpOwogICAgIHdpZHRocy5hcHBlbmQoMCk7Ci0gICAgZHJhd0xpbmVzRm9yVGV4dChw
b2ludCwgd2lkdGhzLCBwcmludGluZywgZG91YmxlTGluZXMsIHN0cm9rZVN0eWxlKTsKKyAgICBk
cmF3TGluZXNGb3JUZXh0KHJlY3QubG9jYXRpb24oKSwgcmVjdC5oZWlnaHQoKSwgd2lkdGhzLCBw
cmludGluZywgZG91YmxlTGluZXMsIHN0cm9rZVN0eWxlKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdMaW5lc0ZvclRleHQoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGNvbnN0IERh
c2hBcnJheSYgd2lkdGhzLCBib29sIHByaW50aW5nLCBib29sIGRvdWJsZUxpbmVzLCBTdHJva2VT
dHlsZSBzdHJva2VTdHlsZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZXNGb3JUZXh0
KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBmbG9hdCB0aGlja25lc3MsIGNvbnN0IERhc2hBcnJh
eSYgd2lkdGhzLCBib29sIHByaW50aW5nLCBib29sIGRvdWJsZUxpbmVzLCBTdHJva2VTdHlsZSBz
dHJva2VTdHlsZSkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1
cm47CkBAIC0xNTg3LDEzICsxNTg3LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGlu
ZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBjb25zdCBEYXNoQXJyYXkmCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGlmIChtX2ltcGwpIHsKLSAgICAgICAgbV9pbXBsLT5kcmF3TGlu
ZXNGb3JUZXh0KHBvaW50LCB3aWR0aHMsIHByaW50aW5nLCBkb3VibGVMaW5lcywgc3Ryb2tlVGhp
Y2tuZXNzKCkpOworICAgICAgICBtX2ltcGwtPmRyYXdMaW5lc0ZvclRleHQocG9pbnQsIHRoaWNr
bmVzcywgd2lkdGhzLCBwcmludGluZywgZG91YmxlTGluZXMpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgQ29sb3IgbG9jYWxTdHJva2VDb2xvcihzdHJva2VDb2xvcigpKTsKIAotICAg
IEZsb2F0UmVjdCBib3VuZHMgPSBjb21wdXRlTGluZUJvdW5kc0FuZEFudGlhbGlhc2luZ01vZGVG
b3JUZXh0KHBvaW50LCB3aWR0aHMubGFzdCgpLCBwcmludGluZywgbG9jYWxTdHJva2VDb2xvcik7
CisgICAgRmxvYXRSZWN0IGJvdW5kcyA9IGNvbXB1dGVMaW5lQm91bmRzQW5kQW50aWFsaWFzaW5n
TW9kZUZvclRleHQoRmxvYXRSZWN0KHBvaW50LCBGbG9hdFNpemUod2lkdGhzLmxhc3QoKSwgdGhp
Y2tuZXNzKSksIHByaW50aW5nLCBsb2NhbFN0cm9rZUNvbG9yKTsKICAgICBib29sIGZpbGxDb2xv
cklzTm90RXF1YWxUb1N0cm9rZUNvbG9yID0gZmlsbENvbG9yKCkgIT0gbG9jYWxTdHJva2VDb2xv
cjsKICAgICAKICAgICBWZWN0b3I8Q0dSZWN0LCA0PiBkYXNoQm91bmRzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYXNjYWRlQ29j
b2EubW0KaW5kZXggYTA4OTJkYzBlMWI3N2IxYjJjNjQ1ZmI1MjQxNDE0MjY4MThiZjM2Yi4uZWQ2
YzRjZjE3MmI2MWQxNzEyYmRlZjY3ZmQ5ZGY5Njk1NDAzNDQ1ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FzY2FkZUNvY29h
Lm1tCkBAIC0zMDIsMTg4ICszMDIsNiBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udCYgZm9udCwgY29uc3QgRwogI2VuZGlm
CiB9CiAKLSNpZiBFTkFCTEUoQ1NTM19URVhUX0RFQ09SQVRJT05fU0tJUF9JTkspCi1zdHJ1Y3Qg
R2x5cGhJdGVyYXRpb25TdGF0ZSB7Ci0gICAgR2x5cGhJdGVyYXRpb25TdGF0ZShDR1BvaW50IHN0
YXJ0aW5nUG9pbnQsIENHUG9pbnQgY3VycmVudFBvaW50LCBDR0Zsb2F0IHkxLCBDR0Zsb2F0IHky
LCBDR0Zsb2F0IG1pblgsIENHRmxvYXQgbWF4WCkKLSAgICAgICAgOiBzdGFydGluZ1BvaW50KHN0
YXJ0aW5nUG9pbnQpCi0gICAgICAgICwgY3VycmVudFBvaW50KGN1cnJlbnRQb2ludCkKLSAgICAg
ICAgLCB5MSh5MSkKLSAgICAgICAgLCB5Mih5MikKLSAgICAgICAgLCBtaW5YKG1pblgpCi0gICAg
ICAgICwgbWF4WChtYXhYKQotICAgIHsKLSAgICB9Ci0gICAgQ0dQb2ludCBzdGFydGluZ1BvaW50
OwotICAgIENHUG9pbnQgY3VycmVudFBvaW50OwotICAgIENHRmxvYXQgeTE7Ci0gICAgQ0dGbG9h
dCB5MjsKLSAgICBDR0Zsb2F0IG1pblg7Ci0gICAgQ0dGbG9hdCBtYXhYOwotfTsKLQotc3RhdGlj
IGJvb2wgZmluZEludGVyc2VjdGlvblBvaW50KGZsb2F0IHksIENHUG9pbnQgcDEsIENHUG9pbnQg
cDIsIENHRmxvYXQmIHgpCi17Ci0gICAgeCA9IHAxLnggKyAoeSAtIHAxLnkpICogKHAyLnggLSBw
MS54KSAvIChwMi55IC0gcDEueSk7Ci0gICAgcmV0dXJuIChwMS55IDwgeSAmJiBwMi55ID4geSkg
fHwgKHAxLnkgPiB5ICYmIHAyLnkgPCB5KTsKLX0KLQotc3RhdGljIHZvaWQgdXBkYXRlWChHbHlw
aEl0ZXJhdGlvblN0YXRlJiBzdGF0ZSwgQ0dGbG9hdCB4KQotewotICAgIHN0YXRlLm1pblggPSBz
dGQ6Om1pbihzdGF0ZS5taW5YLCB4KTsKLSAgICBzdGF0ZS5tYXhYID0gc3RkOjptYXgoc3RhdGUu
bWF4WCwgeCk7Ci19Ci0KLS8vIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IENHUGF0aEFwcGx5
IGFuZCBpcyB0aGVyZWZvcmUgaW52b2tlZCBmb3IgZWFjaAotLy8gY29udG91ciBpbiBhIGdseXBo
LiBUaGlzIGZ1bmN0aW9uIG1vZGVscyBlYWNoIGNvbnRvdXJzIGFzIGEgc3RyYWlnaHQgbGluZQot
Ly8gYW5kIGNhbGN1bGF0ZXMgdGhlIGludGVyc2VjdGlvbnMgYmV0d2VlbiBlYWNoIHBzZXVkby1j
b250b3VyIGFuZAotLy8gdHdvIGhvcml6b250YWwgbGluZXMgKHRoZSB1cHBlciBhbmQgbG93ZXIg
Ym91bmRzIG9mIGFuIHVuZGVybGluZSkgZm91bmQgaW4KLS8vIEdseXBoSXRlcmF0aW9uU3RhdGU6
OnkxIGFuZCBHbHlwaEl0ZXJhdGlvblN0YXRlOjp5Mi4gSXQga2VlcHMgdHJhY2sgb2YgdGhlCi0v
LyBsZWZ0bW9zdCBhbmQgcmlnaHRtb3N0IGludGVyc2VjdGlvbiBpbiBHbHlwaEl0ZXJhdGlvblN0
YXRlOjptaW5YIGFuZAotLy8gR2x5cGhJdGVyYXRpb25TdGF0ZTo6bWF4WC4KLXN0YXRpYyB2b2lk
IGZpbmRQYXRoSW50ZXJzZWN0aW9ucyh2b2lkKiBzdGF0ZUFzVm9pZFBvaW50ZXIsIGNvbnN0IENH
UGF0aEVsZW1lbnQqIGUpCi17Ci0gICAgYXV0byYgc3RhdGUgPSAqc3RhdGljX2Nhc3Q8R2x5cGhJ
dGVyYXRpb25TdGF0ZSo+KHN0YXRlQXNWb2lkUG9pbnRlcik7Ci0gICAgYm9vbCBkb0ludGVyc2Vj
dGlvbiA9IGZhbHNlOwotICAgIENHUG9pbnQgcG9pbnQgPSBDR1BvaW50WmVybzsKLSAgICBzd2l0
Y2ggKGUtPnR5cGUpIHsKLSAgICBjYXNlIGtDR1BhdGhFbGVtZW50TW92ZVRvUG9pbnQ6Ci0gICAg
ICAgIHN0YXRlLnN0YXJ0aW5nUG9pbnQgPSBlLT5wb2ludHNbMF07Ci0gICAgICAgIHN0YXRlLmN1
cnJlbnRQb2ludCA9IGUtPnBvaW50c1swXTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBrQ0dQ
YXRoRWxlbWVudEFkZExpbmVUb1BvaW50OgotICAgICAgICBkb0ludGVyc2VjdGlvbiA9IHRydWU7
Ci0gICAgICAgIHBvaW50ID0gZS0+cG9pbnRzWzBdOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IGtDR1BhdGhFbGVtZW50QWRkUXVhZEN1cnZlVG9Qb2ludDoKLSAgICAgICAgZG9JbnRlcnNlY3Rp
b24gPSB0cnVlOwotICAgICAgICBwb2ludCA9IGUtPnBvaW50c1sxXTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBrQ0dQYXRoRWxlbWVudEFkZEN1cnZlVG9Qb2ludDoKLSAgICAgICAgZG9JbnRl
cnNlY3Rpb24gPSB0cnVlOwotICAgICAgICBwb2ludCA9IGUtPnBvaW50c1syXTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBrQ0dQYXRoRWxlbWVudENsb3NlU3VicGF0aDoKLSAgICAgICAgZG9J
bnRlcnNlY3Rpb24gPSB0cnVlOwotICAgICAgICBwb2ludCA9IHN0YXRlLnN0YXJ0aW5nUG9pbnQ7
Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBpZiAoIWRvSW50ZXJzZWN0aW9uKQotICAgICAg
ICByZXR1cm47Ci0gICAgQ0dGbG9hdCB4OwotICAgIGlmIChmaW5kSW50ZXJzZWN0aW9uUG9pbnQo
c3RhdGUueTEsIHN0YXRlLmN1cnJlbnRQb2ludCwgcG9pbnQsIHgpKQotICAgICAgICB1cGRhdGVY
KHN0YXRlLCB4KTsKLSAgICBpZiAoZmluZEludGVyc2VjdGlvblBvaW50KHN0YXRlLnkyLCBzdGF0
ZS5jdXJyZW50UG9pbnQsIHBvaW50LCB4KSkKLSAgICAgICAgdXBkYXRlWChzdGF0ZSwgeCk7Ci0g
ICAgaWYgKChzdGF0ZS5jdXJyZW50UG9pbnQueSA+PSBzdGF0ZS55MSAmJiBzdGF0ZS5jdXJyZW50
UG9pbnQueSA8PSBzdGF0ZS55MikKLSAgICAgICAgfHwgKHN0YXRlLmN1cnJlbnRQb2ludC55IDw9
IHN0YXRlLnkxICYmIHN0YXRlLmN1cnJlbnRQb2ludC55ID49IHN0YXRlLnkyKSkKLSAgICAgICAg
dXBkYXRlWChzdGF0ZSwgc3RhdGUuY3VycmVudFBvaW50LngpOwotICAgIHN0YXRlLmN1cnJlbnRQ
b2ludCA9IHBvaW50OwotfQotCi1jbGFzcyBNYWNHbHlwaFRvUGF0aFRyYW5zbGF0b3IgZmluYWwg
OiBwdWJsaWMgR2x5cGhUb1BhdGhUcmFuc2xhdG9yIHsKLXB1YmxpYzoKLSAgICBNYWNHbHlwaFRv
UGF0aFRyYW5zbGF0b3IoY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgY29uc3QgR2x5cGhCdWZmZXIm
IGdseXBoQnVmZmVyLCBjb25zdCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luKQotICAgICAgICA6IG1f
aW5kZXgoMCkKLSAgICAgICAgLCBtX3RleHRSdW4odGV4dFJ1bikKLSAgICAgICAgLCBtX2dseXBo
QnVmZmVyKGdseXBoQnVmZmVyKQotICAgICAgICAsIG1fZm9udERhdGEoZ2x5cGhCdWZmZXIuZm9u
dEF0KG1faW5kZXgpKQotICAgICAgICAsIG1fdHJhbnNsYXRpb24oQ0dBZmZpbmVUcmFuc2Zvcm1T
Y2FsZShDR0FmZmluZVRyYW5zZm9ybU1ha2VUcmFuc2xhdGlvbih0ZXh0T3JpZ2luLngoKSwgdGV4
dE9yaWdpbi55KCkpLCAxLCAtMSkpCi0gICAgewotICAgIH0KLSAgICBib29sIGNvbnRhaW5zTW9y
ZVBhdGhzKCkgZmluYWwgeyByZXR1cm4gbV9pbmRleCAhPSBtX2dseXBoQnVmZmVyLnNpemUoKTsg
fQotICAgIFBhdGggcGF0aCgpIGZpbmFsOwotICAgIHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+IGV4
dGVudHMoKSBmaW5hbDsKLSAgICBHbHlwaFVuZGVybGluZVR5cGUgdW5kZXJsaW5lVHlwZSgpIGZp
bmFsOwotICAgIHZvaWQgYWR2YW5jZSgpIGZpbmFsOwotCi1wcml2YXRlOgotICAgIHVuc2lnbmVk
IG1faW5kZXg7Ci0gICAgY29uc3QgVGV4dFJ1biYgbV90ZXh0UnVuOwotICAgIGNvbnN0IEdseXBo
QnVmZmVyJiBtX2dseXBoQnVmZmVyOwotICAgIGNvbnN0IEZvbnQqIG1fZm9udERhdGE7Ci0gICAg
Q0dBZmZpbmVUcmFuc2Zvcm0gbV90cmFuc2xhdGlvbjsKLX07Ci0KLVBhdGggTWFjR2x5cGhUb1Bh
dGhUcmFuc2xhdG9yOjpwYXRoKCkKLXsKLSAgICBSZXRhaW5QdHI8Q0dQYXRoUmVmPiByZXN1bHQg
PSBhZG9wdENGKENURm9udENyZWF0ZVBhdGhGb3JHbHlwaChtX2ZvbnREYXRhLT5wbGF0Zm9ybURh
dGEoKS5jdEZvbnQoKSwgbV9nbHlwaEJ1ZmZlci5nbHlwaEF0KG1faW5kZXgpLCAmbV90cmFuc2xh
dGlvbikpOwotICAgIHJldHVybiBhZG9wdENGKENHUGF0aENyZWF0ZU11dGFibGVDb3B5KHJlc3Vs
dC5nZXQoKSkpOwotfQotCi1zdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0PiBNYWNHbHlwaFRvUGF0aFRy
YW5zbGF0b3I6OmV4dGVudHMoKQotewotICAgIENHUG9pbnQgYmVnaW5uaW5nID0gQ0dQb2ludEFw
cGx5QWZmaW5lVHJhbnNmb3JtKENHUG9pbnRNYWtlKDAsIDApLCBtX3RyYW5zbGF0aW9uKTsKLSAg
ICBDR1NpemUgZW5kID0gQ0dTaXplQXBwbHlBZmZpbmVUcmFuc2Zvcm0obV9nbHlwaEJ1ZmZlci5h
ZHZhbmNlQXQobV9pbmRleCksIG1fdHJhbnNsYXRpb24pOwotICAgIHJldHVybiBzdGQ6Om1ha2Vf
cGFpcihzdGF0aWNfY2FzdDxmbG9hdD4oYmVnaW5uaW5nLngpLCBzdGF0aWNfY2FzdDxmbG9hdD4o
YmVnaW5uaW5nLnggKyBlbmQud2lkdGgpKTsKLX0KLQotYXV0byBNYWNHbHlwaFRvUGF0aFRyYW5z
bGF0b3I6OnVuZGVybGluZVR5cGUoKSAtPiBHbHlwaFVuZGVybGluZVR5cGUKLXsKLSAgICByZXR1
cm4gY29tcHV0ZVVuZGVybGluZVR5cGUobV90ZXh0UnVuLCBtX2dseXBoQnVmZmVyLCBtX2luZGV4
KTsKLX0KLQotdm9pZCBNYWNHbHlwaFRvUGF0aFRyYW5zbGF0b3I6OmFkdmFuY2UoKQotewotICAg
IEdseXBoQnVmZmVyQWR2YW5jZSBhZHZhbmNlID0gbV9nbHlwaEJ1ZmZlci5hZHZhbmNlQXQobV9p
bmRleCk7Ci0gICAgbV90cmFuc2xhdGlvbiA9IENHQWZmaW5lVHJhbnNmb3JtVHJhbnNsYXRlKG1f
dHJhbnNsYXRpb24sIGFkdmFuY2Uud2lkdGgoKSwgYWR2YW5jZS5oZWlnaHQoKSk7Ci0gICAgKytt
X2luZGV4OwotICAgIGlmIChtX2luZGV4IDwgbV9nbHlwaEJ1ZmZlci5zaXplKCkpCi0gICAgICAg
IG1fZm9udERhdGEgPSBtX2dseXBoQnVmZmVyLmZvbnRBdChtX2luZGV4KTsKLX0KLQotRGFzaEFy
cmF5IEZvbnRDYXNjYWRlOjpkYXNoZXNGb3JJbnRlcnNlY3Rpb25zV2l0aFJlY3QoY29uc3QgVGV4
dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luLCBjb25zdCBGbG9hdFJlY3Qm
IGxpbmVFeHRlbnRzKSBjb25zdAotewotICAgIGlmIChpc0xvYWRpbmdDdXN0b21Gb250cygpKQot
ICAgICAgICByZXR1cm4gRGFzaEFycmF5KCk7Ci0KLSAgICBHbHlwaEJ1ZmZlciBnbHlwaEJ1ZmZl
cjsKLSAgICBnbHlwaEJ1ZmZlci5zYXZlT2Zmc2V0c0luU3RyaW5nKCk7Ci0gICAgZmxvYXQgZGVs
dGFYOwotICAgIGlmIChjb2RlUGF0aChydW4pICE9IEZvbnRDYXNjYWRlOjpDb21wbGV4KQotICAg
ICAgICBkZWx0YVggPSBnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvclNpbXBsZVRleHQocnVuLCAwLCBy
dW4ubGVuZ3RoKCksIGdseXBoQnVmZmVyKTsKLSAgICBlbHNlCi0gICAgICAgIGRlbHRhWCA9IGdl
dEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQocnVuLCAwLCBydW4ubGVuZ3RoKCksIGds
eXBoQnVmZmVyKTsKLQotICAgIGlmICghZ2x5cGhCdWZmZXIuc2l6ZSgpKQotICAgICAgICByZXR1
cm4gRGFzaEFycmF5KCk7Ci0gICAgCi0gICAgLy8gRklYTUU6IEhhbmRsZSBTVkcgKyBub24tU1ZH
IGludGVybGVhdmVkIHJ1bnMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzM3NzgKLSAgICBGbG9hdFBvaW50IG9yaWdpbiA9IEZsb2F0UG9pbnQodGV4dE9yaWdpbi54
KCkgKyBkZWx0YVgsIHRleHRPcmlnaW4ueSgpKTsKLSAgICBNYWNHbHlwaFRvUGF0aFRyYW5zbGF0
b3IgdHJhbnNsYXRvcihydW4sIGdseXBoQnVmZmVyLCBvcmlnaW4pOwotICAgIERhc2hBcnJheSBy
ZXN1bHQ7Ci0gICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IHRyYW5zbGF0b3IuY29udGFpbnNN
b3JlUGF0aHMoKTsgKytpbmRleCwgdHJhbnNsYXRvci5hZHZhbmNlKCkpIHsKLSAgICAgICAgR2x5
cGhJdGVyYXRpb25TdGF0ZSBpbmZvID0gR2x5cGhJdGVyYXRpb25TdGF0ZShDR1BvaW50TWFrZSgw
LCAwKSwgQ0dQb2ludE1ha2UoMCwgMCksIGxpbmVFeHRlbnRzLnkoKSwgbGluZUV4dGVudHMueSgp
ICsgbGluZUV4dGVudHMuaGVpZ2h0KCksIGxpbmVFeHRlbnRzLngoKSArIGxpbmVFeHRlbnRzLndp
ZHRoKCksIGxpbmVFeHRlbnRzLngoKSk7Ci0gICAgICAgIGNvbnN0IEZvbnQqIGxvY2FsRm9udCA9
IGdseXBoQnVmZmVyLmZvbnRBdChpbmRleCk7Ci0gICAgICAgIGlmICghbG9jYWxGb250KSB7Ci0g
ICAgICAgICAgICAvLyBUaGUgYWR2YW5jZXMgd2lsbCBnZXQgYWxsIG1lc3NlZCB1cCBpZiB3ZSBk
byBhbnl0aGluZyBvdGhlciB0aGFuIGJhaWwgaGVyZS4KLSAgICAgICAgICAgIHJlc3VsdC5jbGVh
cigpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgc3dpdGNoICh0cmFu
c2xhdG9yLnVuZGVybGluZVR5cGUoKSkgewotICAgICAgICBjYXNlIEdseXBoVG9QYXRoVHJhbnNs
YXRvcjo6R2x5cGhVbmRlcmxpbmVUeXBlOjpTa2lwRGVzY2VuZGVyczogewotICAgICAgICAgICAg
UGF0aCBwYXRoID0gdHJhbnNsYXRvci5wYXRoKCk7Ci0gICAgICAgICAgICBDR1BhdGhBcHBseShw
YXRoLnBsYXRmb3JtUGF0aCgpLCAmaW5mbywgJmZpbmRQYXRoSW50ZXJzZWN0aW9ucyk7Ci0gICAg
ICAgICAgICBpZiAoaW5mby5taW5YIDwgaW5mby5tYXhYKSB7Ci0gICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZChpbmZvLm1pblggLSBsaW5lRXh0ZW50cy54KCkpOwotICAgICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoaW5mby5tYXhYIC0gbGluZUV4dGVudHMueCgpKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgR2x5cGhUb1Bh
dGhUcmFuc2xhdG9yOjpHbHlwaFVuZGVybGluZVR5cGU6OlNraXBHbHlwaDogewotICAgICAgICAg
ICAgc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4gZXh0ZW50cyA9IHRyYW5zbGF0b3IuZXh0ZW50cygp
OwotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChleHRlbnRzLmZpcnN0IC0gbGluZUV4dGVudHMu
eCgpKTsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZXh0ZW50cy5zZWNvbmQgLSBsaW5lRXh0
ZW50cy54KCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBH
bHlwaFRvUGF0aFRyYW5zbGF0b3I6OkdseXBoVW5kZXJsaW5lVHlwZTo6RHJhd092ZXJHbHlwaDoK
LSAgICAgICAgICAgIC8vIE5vdGhpbmcgdG8gZG8KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0jZW5kaWYKLQogYm9vbCBGb250Q2Fz
Y2FkZTo6cHJpbWFyeUZvbnRJc1N5c3RlbUZvbnQoKSBjb25zdAogewogICAgIGNvbnN0IGF1dG8m
IGZvbnREYXRhID0gcHJpbWFyeUZvbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDb2NvYS5tbQppbmRleCBjZGI3ZTExOGY5MTk2NzhkZjAz
OWE4YTE3Yjg3NzQwOTY1ZjU5Mzc0Li41ZDQzMDAwMjRhZGNlMjhlY2VmODg5MzNhMmVjOWZlNTQ5
ZTNlMWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Gb250Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvRm9udENvY29hLm1tCkBAIC0xOTgsNiArMTk4LDggQEAgdm9pZCBGb250OjpwbGF0Zm9ybUlu
aXQoKQogICAgIG1fZm9udE1ldHJpY3Muc2V0TGluZUdhcChsaW5lR2FwKTsKICAgICBtX2ZvbnRN
ZXRyaWNzLnNldFhIZWlnaHQoeEhlaWdodCk7CiAgICAgbV9mb250TWV0cmljcy5zZXRMaW5lU3Bh
Y2luZyhsaW5lU3BhY2luZyk7CisgICAgbV9mb250TWV0cmljcy5zZXRVbmRlcmxpbmVQb3NpdGlv
bigtQ1RGb250R2V0VW5kZXJsaW5lUG9zaXRpb24obV9wbGF0Zm9ybURhdGEuZm9udCgpKSk7Cisg
ICAgbV9mb250TWV0cmljcy5zZXRVbmRlcmxpbmVUaGlja25lc3MoQ1RGb250R2V0VW5kZXJsaW5l
VGhpY2tuZXNzKG1fcGxhdGZvcm1EYXRhLmZvbnQoKSkpOwogfQogCiB2b2lkIEZvbnQ6OnBsYXRm
b3JtQ2hhcldpZHRoSW5pdCgpCkBAIC01OTcsNiArNTk5LDIwIEBAIGZsb2F0IEZvbnQ6OnBsYXRm
b3JtV2lkdGhGb3JHbHlwaChHbHlwaCBnbHlwaCkgY29uc3QKICAgICByZXR1cm4gYWR2YW5jZS53
aWR0aCArIG1fc3ludGhldGljQm9sZE9mZnNldDsKIH0KIAorUGF0aCBGb250OjpwbGF0Zm9ybVBh
dGhGb3JHbHlwaChHbHlwaCBnbHlwaCkgY29uc3QKK3sKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0
Q0YoQ1RGb250Q3JlYXRlUGF0aEZvckdseXBoKHBsYXRmb3JtRGF0YSgpLmN0Rm9udCgpLCBnbHlw
aCwgbnVsbHB0cikpOworICAgIGF1dG8gc3ludGhldGljQm9sZE9mZnNldCA9IHRoaXMtPnN5bnRo
ZXRpY0JvbGRPZmZzZXQoKTsKKyAgICBpZiAoc3ludGhldGljQm9sZE9mZnNldCkgeworICAgICAg
ICBhdXRvIG5ld1BhdGggPSBhZG9wdENGKENHUGF0aENyZWF0ZU11dGFibGUoKSk7CisgICAgICAg
IENHUGF0aEFkZFBhdGgobmV3UGF0aC5nZXQoKSwgbnVsbHB0ciwgcmVzdWx0LmdldCgpKTsKKyAg
ICAgICAgYXV0byB0cmFuc2xhdGlvbiA9IENHQWZmaW5lVHJhbnNmb3JtTWFrZVRyYW5zbGF0aW9u
KHN5bnRoZXRpY0JvbGRPZmZzZXQsIDApOworICAgICAgICBDR1BhdGhBZGRQYXRoKG5ld1BhdGgu
Z2V0KCksICZ0cmFuc2xhdGlvbiwgcmVzdWx0LmdldCgpKTsKKyAgICAgICAgcmV0dXJuIG5ld1Bh
dGg7CisgICAgfQorICAgIHJldHVybiBhZG9wdENGKENHUGF0aENyZWF0ZU11dGFibGVDb3B5KHJl
c3VsdC5nZXQoKSkpOworfQorCiBib29sIEZvbnQ6OnBsYXRmb3JtU3VwcG9ydHNDb2RlUG9pbnQo
VUNoYXIzMiBjaGFyYWN0ZXIpIGNvbnN0CiB7CiAgICAgVW5pQ2hhciBjb2RlVW5pdHNbMl07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggMWZjZWU4YjM4NDM3MzAzNmQy
M2YwOTExMmFiNjNlNzk2OTVlYzA0My4uODE1N2Y5MTg0YzgyNGNhYzE2MzZlNmZhOWY3N2ZkYjQ5
MmEyM2E1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtNTkzLDcg
KzU5Myw3IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBj
b25zdCBEcmF3TGluZSYgaXRlbSkKIAogdm9pZCBEcmF3TGluZXNGb3JUZXh0OjphcHBseShHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7Ci0gICAgY29udGV4dC5kcmF3TGluZXNGb3JU
ZXh0KHBvaW50KCksIG1fd2lkdGhzLCBtX3ByaW50aW5nLCBtX2RvdWJsZUxpbmVzKTsKKyAgICBj
b250ZXh0LmRyYXdMaW5lc0ZvclRleHQocG9pbnQoKSwgbV90aGlja25lc3MsIG1fd2lkdGhzLCBt
X3ByaW50aW5nLCBtX2RvdWJsZUxpbmVzKTsKIH0KIAogc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+
IERyYXdMaW5lc0ZvclRleHQ6OmxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNv
bnN0CkBAIC02MDMsNyArNjAzLDcgQEAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IERyYXdMaW5l
c0ZvclRleHQ6OmxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGMKICAgICBpZiAo
IW1fd2lkdGhzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIEZsb2F0UmVjdCgpOwogCi0gICAgRmxv
YXRSZWN0IHJlc3VsdChwb2ludCgpLCBGbG9hdFNpemUobV93aWR0aHMubGFzdCgpLCBtX3N0cm9r
ZVdpZHRoKSk7CisgICAgRmxvYXRSZWN0IHJlc3VsdChwb2ludCgpLCBGbG9hdFNpemUobV93aWR0
aHMubGFzdCgpLCBtX3RoaWNrbmVzcykpOwogICAgIHJlc3VsdC5pbmZsYXRlKDEpOyAvLyBBY2Nv
dW50IGZvciBwaXhlbCBzbmFwcGluZy4gRklYTUU6IFRoaXMgaXNuJ3QgcGVyZmVjdCwgYXMgaXQg
ZG9lc24ndCB0YWtlIHRoZSBDVE0gaW50byBhY2NvdW50LgogICAgIHJldHVybiByZXN1bHQ7CiB9
CkBAIC02MTQsNiArNjE0LDcgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IERyYXdMaW5lc0ZvclRleHQmIGl0ZW0pCiAgICAgdHMuZHVtcFByb3Bl
cnR5KCJibG9jay1sb2NhdGlvbiIsIGl0ZW0uYmxvY2tMb2NhdGlvbigpKTsKICAgICB0cy5kdW1w
UHJvcGVydHkoImxvY2FsLWFuY2hvciIsIGl0ZW0ubG9jYWxBbmNob3IoKSk7CiAgICAgdHMuZHVt
cFByb3BlcnR5KCJwb2ludCIsIGl0ZW0ucG9pbnQoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJ0
aGlja25lc3MiLCBpdGVtLnRoaWNrbmVzcygpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoImRvdWJs
ZSIsIGl0ZW0uZG91YmxlTGluZXMoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJ3aWR0aHMiLCBp
dGVtLndpZHRocygpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoImlzLXByaW50aW5nIiwgaXRlbS5p
c1ByaW50aW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXggODcyZTMw
ZGNlOGI3MzEyNGY0MWQ5Mjc4MWM1MmQ0YzZhNmVhNjg4MC4uZTVjNTVmZjllYzVjOTI0ZDJiYmE5
NGVjNTU2M2U3ZTY1NjUxNmQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBA
IC03OTEsMjYgKzc5MSwyNyBAQCBwcml2YXRlOgogCiBjbGFzcyBEcmF3TGluZXNGb3JUZXh0IDog
cHVibGljIERyYXdpbmdJdGVtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPERyYXdMaW5lc0Zv
clRleHQ+IGNyZWF0ZShjb25zdCBGbG9hdFBvaW50JiBibG9ja0xvY2F0aW9uLCBjb25zdCBGbG9h
dFNpemUmIGxvY2FsQW5jaG9yLCBjb25zdCBEYXNoQXJyYXkmIHdpZHRocywgYm9vbCBwcmludGlu
ZywgYm9vbCBkb3VibGVMaW5lcywgZmxvYXQgc3Ryb2tlV2lkdGgpCisgICAgc3RhdGljIFJlZjxE
cmF3TGluZXNGb3JUZXh0PiBjcmVhdGUoY29uc3QgRmxvYXRQb2ludCYgYmxvY2tMb2NhdGlvbiwg
Y29uc3QgRmxvYXRTaXplJiBsb2NhbEFuY2hvciwgZmxvYXQgdGhpY2tuZXNzLCBjb25zdCBEYXNo
QXJyYXkmIHdpZHRocywgYm9vbCBwcmludGluZywgYm9vbCBkb3VibGVMaW5lcykKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERyYXdMaW5lc0ZvclRleHQoYmxvY2tMb2NhdGlv
biwgbG9jYWxBbmNob3IsIHdpZHRocywgcHJpbnRpbmcsIGRvdWJsZUxpbmVzLCBzdHJva2VXaWR0
aCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEcmF3TGluZXNGb3JUZXh0KGJsb2Nr
TG9jYXRpb24sIGxvY2FsQW5jaG9yLCB0aGlja25lc3MsIHdpZHRocywgcHJpbnRpbmcsIGRvdWJs
ZUxpbmVzKSk7CiAgICAgfQogCiAgICAgdm9pZCBzZXRCbG9ja0xvY2F0aW9uKGNvbnN0IEZsb2F0
UG9pbnQmIGJsb2NrTG9jYXRpb24pIHsgbV9ibG9ja0xvY2F0aW9uID0gYmxvY2tMb2NhdGlvbjsg
fQogICAgIGNvbnN0IEZsb2F0UG9pbnQmIGJsb2NrTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBt
X2Jsb2NrTG9jYXRpb247IH0KICAgICBjb25zdCBGbG9hdFNpemUmIGxvY2FsQW5jaG9yKCkgY29u
c3QgeyByZXR1cm4gbV9sb2NhbEFuY2hvcjsgfQogICAgIEZsb2F0UG9pbnQgcG9pbnQoKSBjb25z
dCB7IHJldHVybiBtX2Jsb2NrTG9jYXRpb24gKyBtX2xvY2FsQW5jaG9yOyB9CisgICAgZmxvYXQg
dGhpY2tuZXNzKCkgY29uc3QgeyByZXR1cm4gbV90aGlja25lc3M7IH0KICAgICBjb25zdCBEYXNo
QXJyYXkmIHdpZHRocygpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGhzOyB9CiAgICAgYm9vbCBpc1By
aW50aW5nKCkgY29uc3QgeyByZXR1cm4gbV9wcmludGluZzsgfQogICAgIGJvb2wgZG91YmxlTGlu
ZXMoKSBjb25zdCB7IHJldHVybiBtX2RvdWJsZUxpbmVzOyB9CiAKIHByaXZhdGU6Ci0gICAgRHJh
d0xpbmVzRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiBibG9ja0xvY2F0aW9uLCBjb25zdCBGbG9h
dFNpemUmIGxvY2FsQW5jaG9yLCBjb25zdCBEYXNoQXJyYXkmIHdpZHRocywgYm9vbCBwcmludGlu
ZywgYm9vbCBkb3VibGVMaW5lcywgZmxvYXQgc3Ryb2tlV2lkdGgpCisgICAgRHJhd0xpbmVzRm9y
VGV4dChjb25zdCBGbG9hdFBvaW50JiBibG9ja0xvY2F0aW9uLCBjb25zdCBGbG9hdFNpemUmIGxv
Y2FsQW5jaG9yLCBmbG9hdCB0aGlja25lc3MsIGNvbnN0IERhc2hBcnJheSYgd2lkdGhzLCBib29s
IHByaW50aW5nLCBib29sIGRvdWJsZUxpbmVzKQogICAgICAgICA6IERyYXdpbmdJdGVtKEl0ZW1U
eXBlOjpEcmF3TGluZXNGb3JUZXh0KQogICAgICAgICAsIG1fYmxvY2tMb2NhdGlvbihibG9ja0xv
Y2F0aW9uKQogICAgICAgICAsIG1fbG9jYWxBbmNob3IobG9jYWxBbmNob3IpCiAgICAgICAgICwg
bV93aWR0aHMod2lkdGhzKQotICAgICAgICAsIG1fc3Ryb2tlV2lkdGgoc3Ryb2tlV2lkdGgpCisg
ICAgICAgICwgbV90aGlja25lc3ModGhpY2tuZXNzKQogICAgICAgICAsIG1fcHJpbnRpbmcocHJp
bnRpbmcpCiAgICAgICAgICwgbV9kb3VibGVMaW5lcyhkb3VibGVMaW5lcykKICAgICB7CkBAIC04
MjMsNyArODI0LDcgQEAgcHJpdmF0ZToKICAgICBGbG9hdFBvaW50IG1fYmxvY2tMb2NhdGlvbjsK
ICAgICBGbG9hdFNpemUgbV9sb2NhbEFuY2hvcjsKICAgICBEYXNoQXJyYXkgbV93aWR0aHM7Ci0g
ICAgZmxvYXQgbV9zdHJva2VXaWR0aDsKKyAgICBmbG9hdCBtX3RoaWNrbmVzczsKICAgICBib29s
IG1fcHJpbnRpbmc7CiAgICAgYm9vbCBtX2RvdWJsZUxpbmVzOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCBlYTI3MzI2YjU2MWYxOWRlMjI0NzNlM2Jh
YzgzZjQ0ZmFhMDkyZmZkLi4yOWIyZjE5NGQzMzdkNDA5M2RiOWJkM2E3ZWVkZWU1NjlkNTFkZDJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0yMzAsOSAr
MjMwLDkgQEAgdm9pZCBSZWNvcmRlcjo6ZHJhd0xpbmUoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQx
LCBjb25zdCBGbG9hdFBvaW50JiBwb2ludDIpCiAgICAgdXBkYXRlSXRlbUV4dGVudChuZXdJdGVt
KTsKIH0KIAotdm9pZCBSZWNvcmRlcjo6ZHJhd0xpbmVzRm9yVGV4dChjb25zdCBGbG9hdFBvaW50
JiBwb2ludCwgY29uc3QgRGFzaEFycmF5JiB3aWR0aHMsIGJvb2wgcHJpbnRpbmcsIGJvb2wgZG91
YmxlTGluZXMsIGZsb2F0IHN0cm9rZVRoaWNrbmVzcykKK3ZvaWQgUmVjb3JkZXI6OmRyYXdMaW5l
c0ZvclRleHQoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGZsb2F0IHRoaWNrbmVzcywgY29uc3Qg
RGFzaEFycmF5JiB3aWR0aHMsIGJvb2wgcHJpbnRpbmcsIGJvb2wgZG91YmxlTGluZXMpCiB7Ci0g
ICAgRHJhd2luZ0l0ZW0mIG5ld0l0ZW0gPSBkb3duY2FzdDxEcmF3aW5nSXRlbT4oYXBwZW5kSXRl
bShEcmF3TGluZXNGb3JUZXh0OjpjcmVhdGUoRmxvYXRQb2ludCgpLCB0b0Zsb2F0U2l6ZShwb2lu
dCksIHdpZHRocywgcHJpbnRpbmcsIGRvdWJsZUxpbmVzLCBzdHJva2VUaGlja25lc3MpKSk7Cisg
ICAgRHJhd2luZ0l0ZW0mIG5ld0l0ZW0gPSBkb3duY2FzdDxEcmF3aW5nSXRlbT4oYXBwZW5kSXRl
bShEcmF3TGluZXNGb3JUZXh0OjpjcmVhdGUoRmxvYXRQb2ludCgpLCB0b0Zsb2F0U2l6ZShwb2lu
dCksIHRoaWNrbmVzcywgd2lkdGhzLCBwcmludGluZywgZG91YmxlTGluZXMpKSk7CiAgICAgdXBk
YXRlSXRlbUV4dGVudChuZXdJdGVtKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmgKaW5kZXggNWMxYzA2NjBjN2U1N2RkNTRlYmFlZDJiYWMzODA0N2YxMzkwZjk3MS4u
NTg4NTc5ZTQ1ZjhiZTJlZDIyM2E3YzU5ZGExNWJmZTk0OWViZmY1YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC05Nyw3ICs5Nyw3IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3TGluZShjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxv
YXRQb2ludCYpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd0xpbmVzRm9yVGV4dChjb25zdCBGbG9h
dFBvaW50JiwgY29uc3QgRGFzaEFycmF5JiB3aWR0aHMsIGJvb2wgcHJpbnRpbmcsIGJvb2wgZG91
YmxlTGluZXMsIGZsb2F0IHN0cm9rZVRoaWNrbmVzcykgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3
TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmLCBmbG9hdCB0aGlja25lc3MsIGNvbnN0IERh
c2hBcnJheSYgd2lkdGhzLCBib29sIHByaW50aW5nLCBib29sIGRvdWJsZUxpbmVzKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRyYXdMaW5lRm9yRG9jdW1lbnRNYXJrZXIoY29uc3QgRmxvYXRQb2ludCYs
IGZsb2F0IHdpZHRoLCBEb2N1bWVudE1hcmtlckxpbmVTdHlsZSkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkcmF3RWxsaXBzZShjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdQ
YXRoKGNvbnN0IFBhdGgmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Jbmxp
bmVGbG93Qm94LmNwcAppbmRleCAyODc2YjE3YTA4ZDk0NTIxNTI3ZjczMTFlNDI4MDQwMmI5ZTFl
MWE3Li5mNzZjMDdhOGU3ZjZjNDIyYzA3Y2VlODc1N2E0MmE5OGNkNzA4MmYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCkBAIC0xNTgsNyArMTU4LDkgQEAg
dm9pZCBJbmxpbmVGbG93Qm94OjphZGRUb0xpbmUoSW5saW5lQm94KiBjaGlsZCkKICAgICAgICAg
Y29uc3QgUmVuZGVyU3R5bGUmIGNoaWxkU3R5bGUgPSBjaGlsZC0+bGluZVN0eWxlKCk7CiAgICAg
ICAgIGlmIChjaGlsZC0+YmVoYXZlc0xpa2VUZXh0KCkpIHsKICAgICAgICAgICAgIGNvbnN0IFJl
bmRlclN0eWxlKiBjaGlsZFN0eWxlID0gJmNoaWxkLT5saW5lU3R5bGUoKTsKLSAgICAgICAgICAg
IGlmIChjaGlsZFN0eWxlLT5sZXR0ZXJTcGFjaW5nKCkgPCAwIHx8IGNoaWxkU3R5bGUtPnRleHRT
aGFkb3coKSB8fCBjaGlsZFN0eWxlLT50ZXh0RW1waGFzaXNNYXJrKCkgIT0gVGV4dEVtcGhhc2lz
TWFyazo6Tm9uZSB8fCBjaGlsZFN0eWxlLT5oYXNQb3NpdGl2ZVN0cm9rZVdpZHRoKCkpCisgICAg
ICAgICAgICBpZiAoIWNoaWxkU3R5bGUtPnRleHRVbmRlcmxpbmVPZmZzZXQoKS5pc0F1dG8oKSB8
fCAhY2hpbGRTdHlsZS0+dGV4dERlY29yYXRpb25UaGlja25lc3MoKS5pc0F1dG8oKSB8fCBjaGls
ZFN0eWxlLT50ZXh0VW5kZXJsaW5lUG9zaXRpb24oKSAhPSBUZXh0VW5kZXJsaW5lUG9zaXRpb246
OkF1dG8pCisgICAgICAgICAgICAgICAgY2hpbGQtPmNsZWFyS25vd25Ub0hhdmVOb092ZXJmbG93
KCk7CisgICAgICAgICAgICBlbHNlIGlmIChjaGlsZFN0eWxlLT5sZXR0ZXJTcGFjaW5nKCkgPCAw
IHx8IGNoaWxkU3R5bGUtPnRleHRTaGFkb3coKSB8fCBjaGlsZFN0eWxlLT50ZXh0RW1waGFzaXNN
YXJrKCkgIT0gVGV4dEVtcGhhc2lzTWFyazo6Tm9uZSB8fCBjaGlsZFN0eWxlLT5oYXNQb3NpdGl2
ZVN0cm9rZVdpZHRoKCkpCiAgICAgICAgICAgICAgICAgY2hpbGQtPmNsZWFyS25vd25Ub0hhdmVO
b092ZXJmbG93KCk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2hpbGQtPnJlbmRlcmVyKCkuaXNSZXBs
YWNlZCgpKSB7CiAgICAgICAgICAgICBjb25zdCBSZW5kZXJCb3gmIGJveCA9IGRvd25jYXN0PFJl
bmRlckJveD4oY2hpbGQtPnJlbmRlcmVyKCkpOwpAQCAtODk0LDcgKzg5Niw2IEBAIGlubGluZSB2
b2lkIElubGluZUZsb3dCb3g6OmFkZFRleHRCb3hWaXN1YWxPdmVyZmxvdyhJbmxpbmVUZXh0Qm94
JiB0ZXh0Qm94LCBHbHlwCiAgICAgaW50IGJvdHRvbUdseXBoT3ZlcmZsb3cgPSBzdHJva2VPdmVy
ZmxvdyArIGJvdHRvbUdseXBoRWRnZTsKICAgICBpbnQgbGVmdEdseXBoT3ZlcmZsb3cgPSAtc3Ry
b2tlT3ZlcmZsb3cgLSBsZWZ0R2x5cGhFZGdlOwogICAgIGludCByaWdodEdseXBoT3ZlcmZsb3cg
PSBzdHJva2VPdmVyZmxvdyArIHJpZ2h0R2x5cGhFZGdlOwotCiAgICAgaWYgKHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gbWFya0V4aXN0c0FuZElzQWJvdmUgPSB0ZXh0Qm94LmVtcGhhc2lzTWFya0V4aXN0
c0FuZElzQWJvdmUobGluZVN0eWxlKSkgewogICAgICAgICBpbnQgZW1waGFzaXNNYXJrSGVpZ2h0
ID0gbGluZVN0eWxlLmZvbnRDYXNjYWRlKCkuZW1waGFzaXNNYXJrSGVpZ2h0KGxpbmVTdHlsZS50
ZXh0RW1waGFzaXNNYXJrU3RyaW5nKCkpOwogICAgICAgICBpZiAoKm1hcmtFeGlzdHNBbmRJc0Fi
b3ZlID09ICFsaW5lU3R5bGUuaXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSgpKQpAQCAtOTI4LDYg
KzkyOSw4IEBAIGlubGluZSB2b2lkIElubGluZUZsb3dCb3g6OmFkZFRleHRCb3hWaXN1YWxPdmVy
ZmxvdyhJbmxpbmVUZXh0Qm94JiB0ZXh0Qm94LCBHbHlwCiAgICAgCiAgICAgbG9naWNhbFZpc3Vh
bE92ZXJmbG93ID0gTGF5b3V0UmVjdChsb2dpY2FsTGVmdFZpc3VhbE92ZXJmbG93LCBsb2dpY2Fs
VG9wVmlzdWFsT3ZlcmZsb3csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsb2dpY2FsUmlnaHRWaXN1YWxPdmVyZmxvdyAtIGxvZ2ljYWxMZWZ0VmlzdWFsT3ZlcmZsb3cs
IGxvZ2ljYWxCb3R0b21WaXN1YWxPdmVyZmxvdyAtIGxvZ2ljYWxUb3BWaXN1YWxPdmVyZmxvdyk7
CisKKyAgICBGSVhNRTogQWRkIHJlcGFpbnQgcmVjdCBpbmZvcm1hdGlvbiBoZXJlLgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgdGV4dEJveC5zZXRMb2dpY2FsT3Zl
cmZsb3dSZWN0KGxvZ2ljYWxWaXN1YWxPdmVyZmxvdyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZUZsb3dCb3guaAppbmRleCAyN2M2MjI5NDY2Y2E1MWQ0N2E4MmE1YTMyZTM1MThh
MmJiYTQ3ZjM1Li4wOTkxYWE3MzRmYWEzNmJjZWRhNzhmNzNlYzViNDhhODYzYThjNTY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmgKQEAgLTI5Miw4ICsyOTIsNyBA
QCBwdWJsaWM6CiAgICAgfQogCiAgICAgdm9pZCBjb21wdXRlUmVwbGFjZWRBbmRUZXh0TGluZVRv
cEFuZEJvdHRvbShMYXlvdXRVbml0JiBsaW5lVG9wLCBMYXlvdXRVbml0JiBsaW5lQm90dG9tKSBj
b25zdDsKLSAgICAKLSAgICAvLyBVc2VkIHRvIGNhbGN1bGF0ZSB0aGUgdW5kZXJsaW5lIG9mZnNl
dCBmb3IgVGV4dFVuZGVybGluZVBvc2l0aW9uOjpVbmRlci4KKwogICAgIHZvaWQgbWF4TG9naWNh
bEJvdHRvbUZvclRleHREZWNvcmF0aW9uTGluZShmbG9hdCYgbWF4TG9naWNhbEJvdHRvbSwgY29u
c3QgUmVuZGVyRWxlbWVudCogZGVjb3JhdGlvblJlbmRlcmVyLCBPcHRpb25TZXQ8VGV4dERlY29y
YXRpb24+KSBjb25zdDsKICAgICB2b2lkIG1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVjb3JhdGlvbkxp
bmUoZmxvYXQmIG1pbkxvZ2ljYWxUb3AsIGNvbnN0IFJlbmRlckVsZW1lbnQqIGRlY29yYXRpb25S
ZW5kZXJlciwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPikgY29uc3Q7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAppbmRleCBiZTdmOGQ0ZTVhNWMwMmZkMDNh
Y2Q5NjI0ZmNiMjY5N2I4NDJiMmQ4Li5mZGEyYWU0YmEwZTBmMjY1MjdmN2QwMTk5NTkyMjkxYjJj
YTVlZjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJv
eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBA
IC0xMDk3LDcgKzEwOTcsNiBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50TWFya2VkVGV4dERl
Y29yYXRpb24oUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEZsb2F0UgogICAgIGRlY29yYXRp
b25QYWludGVyLnNldElubGluZVRleHRCb3godGhpcyk7CiAgICAgZGVjb3JhdGlvblBhaW50ZXIu
c2V0Rm9udChsaW5lRm9udCgpKTsKICAgICBkZWNvcmF0aW9uUGFpbnRlci5zZXRXaWR0aChzbmFw
cGVkU2VsZWN0aW9uUmVjdC53aWR0aCgpKTsKLSAgICBkZWNvcmF0aW9uUGFpbnRlci5zZXRCYXNl
bGluZShsaW5lU3R5bGUoKS5mb250TWV0cmljcygpLmFzY2VudCgpKTsKICAgICBkZWNvcmF0aW9u
UGFpbnRlci5zZXRJc0hvcml6b250YWwoaXNIb3Jpem9udGFsKCkpOwogICAgIGlmIChtYXJrZWRU
ZXh0LnN0eWxlLnRleHRTaGFkb3cpIHsKICAgICAgICAgZGVjb3JhdGlvblBhaW50ZXIuc2V0VGV4
dFNoYWRvdygmbWFya2VkVGV4dC5zdHlsZS50ZXh0U2hhZG93LnZhbHVlKCkpOwpAQCAtMTIwMyw3
ICsxMjAyLDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludENvbXBvc2l0aW9uVW5kZXJsaW5l
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBGbG9hdFAKICAgICBDb2xvciB1bmRlcmxpbmVD
b2xvciA9IHVuZGVybGluZS5jb21wb3NpdGlvblVuZGVybGluZUNvbG9yID09IENvbXBvc2l0aW9u
VW5kZXJsaW5lQ29sb3I6OlRleHRDb2xvciA/IHJlbmRlcmVyKCkuc3R5bGUoKS52aXNpdGVkRGVw
ZW5kZW50Q29sb3JXaXRoQ29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9y
KSA6IHJlbmRlcmVyKCkuc3R5bGUoKS5jb2xvckJ5QXBwbHlpbmdDb2xvckZpbHRlcih1bmRlcmxp
bmUuY29sb3IpOwogICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IodW5kZXJsaW5lQ29sb3IpOwog
ICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKGxpbmVUaGlja25lc3MpOwotICAgIGNvbnRl
eHQuZHJhd0xpbmVGb3JUZXh0KEZsb2F0UG9pbnQoYm94T3JpZ2luLngoKSArIHN0YXJ0LCBib3hP
cmlnaW4ueSgpICsgbG9naWNhbEhlaWdodCgpIC0gbGluZVRoaWNrbmVzcyksIHdpZHRoLCByZW5k
ZXJlcigpLmRvY3VtZW50KCkucHJpbnRpbmcoKSk7CisgICAgY29udGV4dC5kcmF3TGluZUZvclRl
eHQoRmxvYXRSZWN0KGJveE9yaWdpbi54KCkgKyBzdGFydCwgYm94T3JpZ2luLnkoKSArIGxvZ2lj
YWxIZWlnaHQoKSAtIGxpbmVUaGlja25lc3MsIHdpZHRoLCBsaW5lVGhpY2tuZXNzKSwgcmVuZGVy
ZXIoKS5kb2N1bWVudCgpLnByaW50aW5nKCkpOwogfQogCiBpbnQgSW5saW5lVGV4dEJveDo6Y2Fy
ZXRNaW5PZmZzZXQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1NpbXBsZUxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxp
bmVMYXlvdXQuY3BwCmluZGV4IGUwYzdiZWE3MWEwY2YwN2FmM2ViMDQyYWY3MjNhOTk2Y2Q1M2M4
YmIuLmFmMGE3NmQ1NjhiMzZlYzNiMzNjYjViZDAwYTRiZjk2NTM3ZjhlOTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAKQEAgLTIwMCw3ICsyMDAs
NyBAQCBzdGF0aWMgQXZvaWRhbmNlUmVhc29uRmxhZ3MgY2FuVXNlRm9yU3R5bGUoY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlLCBJbmNsdWRlUmVhcwogICAgIEF2b2lkYW5jZVJlYXNvbkZsYWdzIHJl
YXNvbnMgPSB7IH07CiAgICAgaWYgKHN0eWxlLnRleHRPdmVyZmxvdygpID09IFRleHRPdmVyZmxv
dzo6RWxsaXBzaXMpCiAgICAgICAgIFNFVF9SRUFTT05fQU5EX1JFVFVSTl9JRl9ORUVERUQoRmxv
d0hhc1RleHRPdmVyZmxvdywgcmVhc29ucywgaW5jbHVkZVJlYXNvbnMpOwotICAgIGlmICgoc3R5
bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSAmIFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUp
ICYmIHN0eWxlLnRleHRVbmRlcmxpbmVQb3NpdGlvbigpID09IFRleHRVbmRlcmxpbmVQb3NpdGlv
bjo6VW5kZXIpCisgICAgaWYgKChzdHlsZS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpICYgVGV4
dERlY29yYXRpb246OlVuZGVybGluZSkgJiYgKHN0eWxlLnRleHRVbmRlcmxpbmVQb3NpdGlvbigp
ICE9IFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6QXV0byB8fCAhc3R5bGUudGV4dFVuZGVybGluZU9m
ZnNldCgpLmlzQXV0bygpIHx8ICFzdHlsZS50ZXh0RGVjb3JhdGlvblRoaWNrbmVzcygpLmlzQXV0
bygpKSkKICAgICAgICAgU0VUX1JFQVNPTl9BTkRfUkVUVVJOX0lGX05FRURFRChGbG93SGFzVW5z
dXBwb3J0ZWRVbmRlcmxpbmVEZWNvcmF0aW9uLCByZWFzb25zLCBpbmNsdWRlUmVhc29ucyk7CiAg
ICAgLy8gTm9uLXZpc2libGUgb3ZlcmZsb3cgc2hvdWxkIGJlIHByZXR0eSBlYXN5IHRvIHN1cHBv
cnQuCiAgICAgaWYgKHN0eWxlLm92ZXJmbG93WCgpICE9IE92ZXJmbG93OjpWaXNpYmxlIHx8IHN0
eWxlLm92ZXJmbG93WSgpICE9IE92ZXJmbG93OjpWaXNpYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCmluZGV4IDc1
NTFhOWZkNmNkNjA5MmE3ZWMwYmI2Njk3OTNhZmZhZDRlNGQ5ODMuLjZmN2VlNDYzYTJkMzMyMDEx
Y2NlYmIwOGNkZTIyMWE4OGM4NmZmODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKQEAgLTk5LDcgKzk5LDYgQEAg
dm9pZCBwYWludEZsb3coY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93LCBjb25zdCBMYXlvdXQm
IGxheW91dCwgUGFpbnRJbmZvJiBwYWkKICAgICAgICAgaWYgKHRleHRSZW5kZXJlcikgewogICAg
ICAgICAgICAgdGV4dERlY29yYXRpb25QYWludGVyLmVtcGxhY2UocGFpbnRJbmZvLmNvbnRleHQo
KSwgc3R5bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSwgKnRleHRSZW5kZXJlciwgZmFsc2Up
OwogICAgICAgICAgICAgdGV4dERlY29yYXRpb25QYWludGVyLT5zZXRGb250KHN0eWxlLmZvbnRD
YXNjYWRlKCkpOwotICAgICAgICAgICAgdGV4dERlY29yYXRpb25QYWludGVyLT5zZXRCYXNlbGlu
ZShzdHlsZS5mb250TWV0cmljcygpLmFzY2VudCgpKTsKICAgICAgICAgfQogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcApp
bmRleCA5OGU4OGRjNDgwNWQ2YTVkYTdhYTU0MjA1ZGRiMTZlNzQxNjk4OTgwLi5iNDYzODc5Mjlm
NzY3Y2JlYmM5YjFlYzcyMzY0ZmJmMjRmYTQ2NjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcApAQCAtMzYsMjIgKzM2LDE5IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIHZvaWQgYWRqdXN0U3RlcFRvRGVjb3Jh
dGlvbkxlbmd0aChmbG9hdCYgc3RlcCwgZmxvYXQmIGNvbnRyb2xQb2ludERpc3RhbmNlLCBmbG9h
dCBsZW5ndGgpCitzdGF0aWMgdm9pZCBhZGp1c3RTdGVwVG9EZWNvcmF0aW9uTGVuZ3RoKGZsb2F0
JiBzdGVwLCBmbG9hdCBsZW5ndGgpCiB7CiAgICAgQVNTRVJUKHN0ZXAgPiAwKTsKIAogICAgIGlm
IChsZW5ndGggPD0gMCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdW5zaWduZWQgc3RlcENvdW50
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0aCAvIHN0ZXApOworICAgIHVuc2lnbmVkIHN0
ZXBDb3VudCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihsZW5ndGggLyAoc3RlcCAqIDIpKTsKIAot
ICAgIC8vIEVhY2ggQmV6aWVyIGN1cnZlIHN0YXJ0cyBhdCB0aGUgc2FtZSBwaXhlbCB0aGF0IHRo
ZSBwcmV2aW91cyBvbmUKLSAgICAvLyBlbmRlZC4gV2UgbmVlZCB0byBzdWJ0cmFjdCAoc3RlcENv
dW50IC0gMSkgcGl4ZWxzIHdoZW4gY2FsY3VsYXRpbmcgdGhlCi0gICAgLy8gbGVuZ3RoIGNvdmVy
ZWQgdG8gYWNjb3VudCBmb3IgdGhhdC4KLSAgICBmbG9hdCB1bmNvdmVyZWRMZW5ndGggPSBsZW5n
dGggLSAoc3RlcENvdW50ICogc3RlcCAtIChzdGVwQ291bnQgLSAxKSk7Ci0gICAgZmxvYXQgYWRq
dXN0bWVudCA9IHVuY292ZXJlZExlbmd0aCAvIHN0ZXBDb3VudDsKLSAgICBzdGVwICs9IGFkanVz
dG1lbnQ7Ci0gICAgY29udHJvbFBvaW50RGlzdGFuY2UgKz0gYWRqdXN0bWVudDsKKyAgICBpZiAo
c3RlcENvdW50ID4gMCkgeworICAgICAgICAvLyBUcnkgdG8gZ2V0IHRoZSB3YXZlcyB0byBtYXRj
aCB1cCBvbiBhZGphY2VudCBlbGVtZW50cy4KKyAgICAgICAgc3RlcCA9IGxlbmd0aCAvIChzdGVw
Q291bnQgKiAyKTsKKyAgICB9CiB9CiAKIC8qCkBAIC04MSw3OCArNzgsNDAgQEAgc3RhdGljIHZv
aWQgYWRqdXN0U3RlcFRvRGVjb3JhdGlvbkxlbmd0aChmbG9hdCYgc3RlcCwgZmxvYXQmIGNvbnRy
b2xQb2ludERpc3RhbmMKICAqICAgICAgICAgICAgIHwtLS0tLS0tLS0tLXwKICAqICAgICAgICAg
ICAgICAgICBzdGVwCiAgKi8KLXN0YXRpYyB2b2lkIHN0cm9rZVdhdnlUZXh0RGVjb3JhdGlvbihH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0LCBjb25zdCBG
bG9hdFBvaW50JiBlbmQsIGZsb2F0IHN0cm9rZVRoaWNrbmVzcywgZmxvYXQgZm9udFNpemUpCitz
dGF0aWMgdm9pZCBzdHJva2VXYXZ5VGV4dERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGZvbnRTaXplKQogewotICAgIEZsb2F0
UG9pbnQgcDEgPSBzdGFydDsKLSAgICBGbG9hdFBvaW50IHAyID0gZW5kOwotICAgIGNvbnRleHQu
YWRqdXN0TGluZVRvUGl4ZWxCb3VuZGFyaWVzKHAxLCBwMiwgc3Ryb2tlVGhpY2tuZXNzLCBjb250
ZXh0LnN0cm9rZVN0eWxlKCkpOworICAgIEZsb2F0UG9pbnQgcDEgPSByZWN0LmxvY2F0aW9uKCk7
CisgICAgRmxvYXRQb2ludCBwMiA9IHJlY3QubG9jYXRpb24oKSArIEZsb2F0U2l6ZShyZWN0Lndp
ZHRoKCksIDApOwogCiAgICAgUGF0aCBwYXRoOwogICAgIHBhdGgubW92ZVRvKHAxKTsKIAotICAg
IGZsb2F0IGNvbnRyb2xQb2ludERpc3RhbmNlOwotICAgIGZsb2F0IHN0ZXA7Ci0gICAgZ2V0V2F2
eVN0cm9rZVBhcmFtZXRlcnMoZm9udFNpemUsIGNvbnRyb2xQb2ludERpc3RhbmNlLCBzdGVwKTsK
LQotICAgIGJvb2wgaXNWZXJ0aWNhbExpbmUgPSAocDEueCgpID09IHAyLngoKSk7Ci0KLSAgICBp
ZiAoaXNWZXJ0aWNhbExpbmUpIHsKLSAgICAgICAgQVNTRVJUKHAxLngoKSA9PSBwMi54KCkpOwot
Ci0gICAgICAgIGZsb2F0IHhBeGlzID0gcDEueCgpOwotICAgICAgICBmbG9hdCB5MTsKLSAgICAg
ICAgZmxvYXQgeTI7Ci0KLSAgICAgICAgaWYgKHAxLnkoKSA8IHAyLnkoKSkgewotICAgICAgICAg
ICAgeTEgPSBwMS55KCk7Ci0gICAgICAgICAgICB5MiA9IHAyLnkoKTsKLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIHkxID0gcDIueSgpOwotICAgICAgICAgICAgeTIgPSBwMS55KCk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBhZGp1c3RTdGVwVG9EZWNvcmF0aW9uTGVuZ3RoKHN0ZXAsIGNv
bnRyb2xQb2ludERpc3RhbmNlLCB5MiAtIHkxKTsKLSAgICAgICAgRmxvYXRQb2ludCBjb250cm9s
UG9pbnQxKHhBeGlzICsgY29udHJvbFBvaW50RGlzdGFuY2UsIDApOwotICAgICAgICBGbG9hdFBv
aW50IGNvbnRyb2xQb2ludDIoeEF4aXMgLSBjb250cm9sUG9pbnREaXN0YW5jZSwgMCk7CisgICAg
YXV0byB3YXZ5U3Ryb2tlUGFyYW1ldGVycyA9IGdldFdhdnlTdHJva2VQYXJhbWV0ZXJzKGZvbnRT
aXplKTsKIAotICAgICAgICBmb3IgKGZsb2F0IHkgPSB5MTsgeSArIDIgKiBzdGVwIDw9IHkyOykg
ewotICAgICAgICAgICAgY29udHJvbFBvaW50MS5zZXRZKHkgKyBzdGVwKTsKLSAgICAgICAgICAg
IGNvbnRyb2xQb2ludDIuc2V0WSh5ICsgc3RlcCk7Ci0gICAgICAgICAgICB5ICs9IDIgKiBzdGVw
OwotICAgICAgICAgICAgcGF0aC5hZGRCZXppZXJDdXJ2ZVRvKGNvbnRyb2xQb2ludDEsIGNvbnRy
b2xQb2ludDIsIEZsb2F0UG9pbnQoeEF4aXMsIHkpKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7
Ci0gICAgICAgIEFTU0VSVChwMS55KCkgPT0gcDIueSgpKTsKKyAgICBBU1NFUlQocDEueSgpID09
IHAyLnkoKSk7CiAKLSAgICAgICAgZmxvYXQgeUF4aXMgPSBwMS55KCk7Ci0gICAgICAgIGZsb2F0
IHgxOwotICAgICAgICBmbG9hdCB4MjsKKyAgICBmbG9hdCB5QXhpcyA9IHAxLnkoKTsKKyAgICBm
bG9hdCB4MSA9IHN0ZDo6bWluKHAxLngoKSwgcDIueCgpKTsKKyAgICBmbG9hdCB4MiA9IHN0ZDo6
bWF4KHAxLngoKSwgcDIueCgpKTsKIAotICAgICAgICBpZiAocDEueCgpIDwgcDIueCgpKSB7Ci0g
ICAgICAgICAgICB4MSA9IHAxLngoKTsKLSAgICAgICAgICAgIHgyID0gcDIueCgpOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgeDEgPSBwMi54KCk7Ci0gICAgICAgICAgICB4MiA9IHAx
LngoKTsKLSAgICAgICAgfQorICAgIGFkanVzdFN0ZXBUb0RlY29yYXRpb25MZW5ndGgod2F2eVN0
cm9rZVBhcmFtZXRlcnMuc3RlcCwgeDIgLSB4MSk7CisgICAgRmxvYXRQb2ludCBjb250cm9sUG9p
bnQxKDAsIHlBeGlzICsgd2F2eVN0cm9rZVBhcmFtZXRlcnMuY29udHJvbFBvaW50RGlzdGFuY2Up
OworICAgIEZsb2F0UG9pbnQgY29udHJvbFBvaW50MigwLCB5QXhpcyAtIHdhdnlTdHJva2VQYXJh
bWV0ZXJzLmNvbnRyb2xQb2ludERpc3RhbmNlKTsKIAotICAgICAgICBhZGp1c3RTdGVwVG9EZWNv
cmF0aW9uTGVuZ3RoKHN0ZXAsIGNvbnRyb2xQb2ludERpc3RhbmNlLCB4MiAtIHgxKTsKLSAgICAg
ICAgRmxvYXRQb2ludCBjb250cm9sUG9pbnQxKDAsIHlBeGlzICsgY29udHJvbFBvaW50RGlzdGFu
Y2UpOwotICAgICAgICBGbG9hdFBvaW50IGNvbnRyb2xQb2ludDIoMCwgeUF4aXMgLSBjb250cm9s
UG9pbnREaXN0YW5jZSk7Ci0KLSAgICAgICAgZm9yIChmbG9hdCB4ID0geDE7IHggKyAyICogc3Rl
cCA8PSB4MjspIHsKLSAgICAgICAgICAgIGNvbnRyb2xQb2ludDEuc2V0WCh4ICsgc3RlcCk7Ci0g
ICAgICAgICAgICBjb250cm9sUG9pbnQyLnNldFgoeCArIHN0ZXApOwotICAgICAgICAgICAgeCAr
PSAyICogc3RlcDsKLSAgICAgICAgICAgIHBhdGguYWRkQmV6aWVyQ3VydmVUbyhjb250cm9sUG9p
bnQxLCBjb250cm9sUG9pbnQyLCBGbG9hdFBvaW50KHgsIHlBeGlzKSk7Ci0gICAgICAgIH0KKyAg
ICBmb3IgKGZsb2F0IHggPSB4MTsgeCArIDIgKiB3YXZ5U3Ryb2tlUGFyYW1ldGVycy5zdGVwIDw9
IHgyOykgeworICAgICAgICBjb250cm9sUG9pbnQxLnNldFgoeCArIHdhdnlTdHJva2VQYXJhbWV0
ZXJzLnN0ZXApOworICAgICAgICBjb250cm9sUG9pbnQyLnNldFgoeCArIHdhdnlTdHJva2VQYXJh
bWV0ZXJzLnN0ZXApOworICAgICAgICB4ICs9IDIgKiB3YXZ5U3Ryb2tlUGFyYW1ldGVycy5zdGVw
OworICAgICAgICBwYXRoLmFkZEJlemllckN1cnZlVG8oY29udHJvbFBvaW50MSwgY29udHJvbFBv
aW50MiwgRmxvYXRQb2ludCh4LCB5QXhpcykpOwogICAgIH0KIAogICAgIGNvbnRleHQuc2V0U2hv
dWxkQW50aWFsaWFzKHRydWUpOworICAgIGF1dG8gc3Ryb2tlVGhpY2tuZXNzID0gY29udGV4dC5z
dHJva2VUaGlja25lc3MoKTsKKyAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcyhyZWN0Lmhl
aWdodCgpKTsKICAgICBjb250ZXh0LnN0cm9rZVBhdGgocGF0aCk7CisgICAgY29udGV4dC5zZXRT
dHJva2VUaGlja25lc3Moc3Ryb2tlVGhpY2tuZXNzKTsKIH0KIAotI2lmIEVOQUJMRShDU1MzX1RF
WFRfREVDT1JBVElPTl9TS0lQX0lOSykKIHN0YXRpYyBib29sIGNvbXBhcmVUdXBsZXMoc3RkOjpw
YWlyPGZsb2F0LCBmbG9hdD4gbCwgc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4gcikKIHsKICAgICBy
ZXR1cm4gbC5maXJzdCA8IHIuZmlyc3Q7CkBAIC0yMDQsMTggKzE2MywxNiBAQCBzdGF0aWMgRGFz
aEFycmF5IHRyYW5zbGF0ZUludGVyc2VjdGlvblBvaW50c1RvU2tpcElua0JvdW5kYXJpZXMoY29u
c3QgRGFzaEFycmF5JgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyB2b2lkIGRyYXdT
a2lwSW5rVW5kZXJsaW5lKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udENhc2Nh
ZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRP
cmlnaW4sIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsT3JpZ2luLAotICAgIGZsb2F0IHVuZGVybGlu
ZU9mZnNldCwgZmxvYXQgd2lkdGgsIGJvb2wgaXNQcmludGluZywgYm9vbCBkb3VibGVMaW5lcywg
U3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUpCitzdGF0aWMgdm9pZCBkcmF3U2tpcElua1VuZGVybGlu
ZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25z
dCBUZXh0UnVuJiB0ZXh0UnVuLAorICAgIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sIGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgYm9vbCBpc1ByaW50aW5nLCBib29sIGRvdWJsZUxpbmVzLAor
ICAgIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlKQogewotICAgIEZsb2F0UG9pbnQgYWRqdXN0ZWRM
b2NhbE9yaWdpbiA9IGxvY2FsT3JpZ2luOwotICAgIGFkanVzdGVkTG9jYWxPcmlnaW4ubW92ZSgw
LCB1bmRlcmxpbmVPZmZzZXQpOwotICAgIEZsb2F0UmVjdCB1bmRlcmxpbmVCb3VuZGluZ0JveCA9
IGNvbnRleHQuY29tcHV0ZVVuZGVybGluZUJvdW5kc0ZvclRleHQoYWRqdXN0ZWRMb2NhbE9yaWdp
biwgd2lkdGgsIGlzUHJpbnRpbmcpOworICAgIEZsb2F0UmVjdCB1bmRlcmxpbmVCb3VuZGluZ0Jv
eCA9IGNvbnRleHQuY29tcHV0ZVVuZGVybGluZUJvdW5kc0ZvclRleHQocmVjdCwgaXNQcmludGlu
Zyk7CiAgICAgRGFzaEFycmF5IGludGVyc2VjdGlvbnMgPSBmb250LmRhc2hlc0ZvckludGVyc2Vj
dGlvbnNXaXRoUmVjdCh0ZXh0UnVuLCB0ZXh0T3JpZ2luLCB1bmRlcmxpbmVCb3VuZGluZ0JveCk7
Ci0gICAgRGFzaEFycmF5IGEgPSB0cmFuc2xhdGVJbnRlcnNlY3Rpb25Qb2ludHNUb1NraXBJbmtC
b3VuZGFyaWVzKGludGVyc2VjdGlvbnMsIHVuZGVybGluZUJvdW5kaW5nQm94LmhlaWdodCgpLCB3
aWR0aCk7Ci0gICAgQVNTRVJUKCEoYS5zaXplKCkgJSAyKSk7Ci0gICAgY29udGV4dC5kcmF3TGlu
ZXNGb3JUZXh0KGFkanVzdGVkTG9jYWxPcmlnaW4sIGEsIGlzUHJpbnRpbmcsIGRvdWJsZUxpbmVz
LCBzdHJva2VTdHlsZSk7CisgICAgRGFzaEFycmF5IGJvdW5kYXJpZXMgPSB0cmFuc2xhdGVJbnRl
cnNlY3Rpb25Qb2ludHNUb1NraXBJbmtCb3VuZGFyaWVzKGludGVyc2VjdGlvbnMsIHVuZGVybGlu
ZUJvdW5kaW5nQm94LmhlaWdodCgpLCByZWN0LndpZHRoKCkpOworICAgIEFTU0VSVCghKGJvdW5k
YXJpZXMuc2l6ZSgpICUgMikpOworICAgIGNvbnRleHQuZHJhd0xpbmVzRm9yVGV4dChyZWN0Lmxv
Y2F0aW9uKCksIHJlY3QuaGVpZ2h0KCksIGJvdW5kYXJpZXMsIGlzUHJpbnRpbmcsIGRvdWJsZUxp
bmVzLCBzdHJva2VTdHlsZSk7CiB9Ci0jZW5kaWYKIAogc3RhdGljIFN0cm9rZVN0eWxlIHRleHRE
ZWNvcmF0aW9uU3R5bGVUb1N0cm9rZVN0eWxlKFRleHREZWNvcmF0aW9uU3R5bGUgZGVjb3JhdGlv
blN0eWxlKQogewpAQCAtMjU5LDM1ICsyMTYsMjggQEAgVGV4dERlY29yYXRpb25QYWludGVyOjpU
ZXh0RGVjb3JhdGlvblBhaW50ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBPcHRpb25TZXQK
IAogdm9pZCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50VGV4dERlY29yYXRpb24oY29uc3Qg
VGV4dFJ1biYgdGV4dFJ1biwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgY29uc3QgRmxv
YXRQb2ludCYgYm94T3JpZ2luKQogewotI2lmICFFTkFCTEUoQ1NTM19URVhUX0RFQ09SQVRJT05f
U0tJUF9JTkspCi0gICAgVU5VU0VEX1BBUkFNKHRleHRSdW4pOwotICAgIFVOVVNFRF9QQVJBTSh0
ZXh0T3JpZ2luKTsKLSNlbmRpZgogICAgIEFTU0VSVChtX2ZvbnQpOwotICAgIGZsb2F0IHRleHRE
ZWNvcmF0aW9uVGhpY2tuZXNzID0gdGV4dERlY29yYXRpb25TdHJva2VUaGlja25lc3MobV9saW5l
U3R5bGUuY29tcHV0ZWRGb250UGl4ZWxTaXplKCkpOwotICAgIG1fY29udGV4dC5zZXRTdHJva2VU
aGlja25lc3ModGV4dERlY29yYXRpb25UaGlja25lc3MpOwotICAgIEZsb2F0UG9pbnQgbG9jYWxP
cmlnaW4gPSBib3hPcmlnaW47CisgICAgY29uc3QgYXV0byYgZm9udE1ldHJpY3MgPSBtX2xpbmVT
dHlsZS5mb250TWV0cmljcygpOwogCi0gICAgYXV0byBwYWludERlY29yYXRpb24gPSBbJl0gKE9w
dGlvblNldDxUZXh0RGVjb3JhdGlvbj4gZGVjb3JhdGlvbiwgVGV4dERlY29yYXRpb25TdHlsZSBz
dHlsZSwgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBGbG9hdFBvaW50JiBzdGFydCwgY29uc3Qg
RmxvYXRQb2ludCYgZW5kLCBpbnQgb2Zmc2V0KSB7CisgICAgYXV0byBwYWludERlY29yYXRpb24g
PSBbJl0gKE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4gZGVjb3JhdGlvbiwgVGV4dERlY29yYXRp
b25TdHlsZSBzdHlsZSwgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBGbG9hdFJlY3QmIHJlY3Qp
IHsKICAgICAgICAgbV9jb250ZXh0LnNldFN0cm9rZUNvbG9yKGNvbG9yKTsKIAogICAgICAgICBh
dXRvIHN0cm9rZVN0eWxlID0gdGV4dERlY29yYXRpb25TdHlsZVRvU3Ryb2tlU3R5bGUoc3R5bGUp
OwogCiAgICAgICAgIGlmIChzdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpXYXZ5KQotICAg
ICAgICAgICAgc3Ryb2tlV2F2eVRleHREZWNvcmF0aW9uKG1fY29udGV4dCwgc3RhcnQsIGVuZCwg
dGV4dERlY29yYXRpb25UaGlja25lc3MsIG1fbGluZVN0eWxlLmNvbXB1dGVkRm9udFBpeGVsU2l6
ZSgpKTsKKyAgICAgICAgICAgIHN0cm9rZVdhdnlUZXh0RGVjb3JhdGlvbihtX2NvbnRleHQsIHJl
Y3QsIG1fbGluZVN0eWxlLmNvbXB1dGVkRm9udFNpemUoKSk7CiAgICAgICAgIGVsc2UgaWYgKGRl
Y29yYXRpb24gPT0gVGV4dERlY29yYXRpb246OlVuZGVybGluZSB8fCBkZWNvcmF0aW9uID09IFRl
eHREZWNvcmF0aW9uOjpPdmVybGluZSkgewotI2lmIEVOQUJMRShDU1MzX1RFWFRfREVDT1JBVElP
Tl9TS0lQX0lOSykKICAgICAgICAgICAgIGlmICgobV9saW5lU3R5bGUudGV4dERlY29yYXRpb25T
a2lwKCkgPT0gVGV4dERlY29yYXRpb25Ta2lwOjpJbmsgfHwgbV9saW5lU3R5bGUudGV4dERlY29y
YXRpb25Ta2lwKCkgPT0gVGV4dERlY29yYXRpb25Ta2lwOjpBdXRvKSAmJiBtX2lzSG9yaXpvbnRh
bCkgewogICAgICAgICAgICAgICAgIGlmICghbV9jb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkK
LSAgICAgICAgICAgICAgICAgICAgZHJhd1NraXBJbmtVbmRlcmxpbmUobV9jb250ZXh0LCAqbV9m
b250LCB0ZXh0UnVuLCB0ZXh0T3JpZ2luLCBsb2NhbE9yaWdpbiwgb2Zmc2V0LCBtX3dpZHRoLCBt
X2lzUHJpbnRpbmcsIHN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6OkRvdWJsZSwgc3Ryb2tl
U3R5bGUpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgLy8gRklYTUU6IE5l
ZWQgdG8gc3VwcG9ydCB0ZXh0LWRlY29yYXRpb24tc2tpcDogbm9uZS4KLSNlbmRpZgotICAgICAg
ICAgICAgICAgIG1fY29udGV4dC5kcmF3TGluZUZvclRleHQoc3RhcnQsIG1fd2lkdGgsIG1faXNQ
cmludGluZywgc3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZTo6RG91YmxlLCBzdHJva2VTdHls
ZSk7CisgICAgICAgICAgICAgICAgICAgIGRyYXdTa2lwSW5rVW5kZXJsaW5lKG1fY29udGV4dCwg
Km1fZm9udCwgdGV4dFJ1biwgdGV4dE9yaWdpbiwgcmVjdCwgbV9pc1ByaW50aW5nLCBzdHlsZSA9
PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpEb3VibGUsIHN0cm9rZVN0eWxlKTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gc3VwcG9ydCBvdGhl
ciB2YWx1ZXMgb2YgdGV4dC1kZWNvcmF0aW9uLXNraXAuCisgICAgICAgICAgICAgICAgbV9jb250
ZXh0LmRyYXdMaW5lRm9yVGV4dChyZWN0LCBtX2lzUHJpbnRpbmcsIHN0eWxlID09IFRleHREZWNv
cmF0aW9uU3R5bGU6OkRvdWJsZSwgc3Ryb2tlU3R5bGUpOworICAgICAgICAgICAgfQogICAgICAg
ICAgICAgCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQoZGVjb3JhdGlvbiA9
PSBUZXh0RGVjb3JhdGlvbjo6TGluZVRocm91Z2gpOwotICAgICAgICAgICAgbV9jb250ZXh0LmRy
YXdMaW5lRm9yVGV4dChzdGFydCwgbV93aWR0aCwgbV9pc1ByaW50aW5nLCBzdHlsZSA9PSBUZXh0
RGVjb3JhdGlvblN0eWxlOjpEb3VibGUsIHN0cm9rZVN0eWxlKTsKKyAgICAgICAgICAgIG1fY29u
dGV4dC5kcmF3TGluZUZvclRleHQocmVjdCwgbV9pc1ByaW50aW5nLCBzdHlsZSA9PSBUZXh0RGVj
b3JhdGlvblN0eWxlOjpEb3VibGUsIHN0cm9rZVN0eWxlKTsKICAgICAgICAgfQogICAgIH07CiAK
QEAgLTI5NSwxMyArMjQ1LDE1IEBAIHZvaWQgVGV4dERlY29yYXRpb25QYWludGVyOjpwYWludFRl
eHREZWNvcmF0aW9uKGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IEZsCiAgICAgICAgICYm
ICghbV9kZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvbjo6T3ZlcmxpbmUpIHx8IG1f
c3R5bGVzLm92ZXJsaW5lQ29sb3IuaXNPcGFxdWUoKSkKICAgICAgICAgJiYgKCFtX2RlY29yYXRp
b25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uOjpMaW5lVGhyb3VnaCkgfHwgbV9zdHlsZXMubGlu
ZXRocm91Z2hDb2xvci5pc09wYXF1ZSgpKTsKIAorICAgIGZsb2F0IHRleHREZWNvcmF0aW9uVGhp
Y2tuZXNzID0gbV9saW5lU3R5bGUudGV4dERlY29yYXRpb25UaGlja25lc3MoKS5yZXNvbHZlKG1f
bGluZVN0eWxlLmNvbXB1dGVkRm9udFNpemUoKSwgbV9saW5lU3R5bGUuZm9udE1ldHJpY3MoKSk7
CisgICAgRmxvYXRSZWN0IGJhc2VSZWN0ID0gRmxvYXRSZWN0KGJveE9yaWdpbiwgRmxvYXRTaXpl
KG1fd2lkdGgsIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzKSk7CiAgICAgaW50IGV4dHJhT2Zmc2V0
ID0gMDsKICAgICBib29sIGNsaXBwaW5nID0gIWFyZUxpbmVzT3BhcXVlICYmIG1fc2hhZG93ICYm
IG1fc2hhZG93LT5uZXh0KCk7CiAgICAgaWYgKGNsaXBwaW5nKSB7Ci0gICAgICAgIEZsb2F0UmVj
dCBjbGlwUmVjdChsb2NhbE9yaWdpbiwgRmxvYXRTaXplKG1fd2lkdGgsIG1fYmFzZWxpbmUgKyAy
KSk7CisgICAgICAgIEZsb2F0UmVjdCBjbGlwUmVjdCA9IGJhc2VSZWN0OwogICAgICAgICBmb3Ig
KGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdyA9IG1fc2hhZG93OyBzaGFkb3c7IHNoYWRvdyA9IHNo
YWRvdy0+bmV4dCgpKSB7CiAgICAgICAgICAgICBpbnQgc2hhZG93RXh0ZW50ID0gc2hhZG93LT5w
YWludGluZ0V4dGVudCgpOwotICAgICAgICAgICAgRmxvYXRSZWN0IHNoYWRvd1JlY3QobG9jYWxP
cmlnaW4sIEZsb2F0U2l6ZShtX3dpZHRoLCBtX2Jhc2VsaW5lICsgMikpOworICAgICAgICAgICAg
RmxvYXRSZWN0IHNoYWRvd1JlY3QoYmFzZVJlY3QubG9jYXRpb24oKSwgRmxvYXRTaXplKG1fd2lk
dGgsIGZvbnRNZXRyaWNzLmFzY2VudCgpICsgMikpOwogICAgICAgICAgICAgc2hhZG93UmVjdC5p
bmZsYXRlKHNoYWRvd0V4dGVudCk7CiAgICAgICAgICAgICBpbnQgc2hhZG93WCA9IG1faXNIb3Jp
em9udGFsID8gc2hhZG93LT54KCkgOiBzaGFkb3ctPnkoKTsKICAgICAgICAgICAgIGludCBzaGFk
b3dZID0gbV9pc0hvcml6b250YWwgPyBzaGFkb3ctPnkoKSA6IC1zaGFkb3ctPngoKTsKQEAgLTMx
MSw4ICsyNjMsOCBAQCB2b2lkIFRleHREZWNvcmF0aW9uUGFpbnRlcjo6cGFpbnRUZXh0RGVjb3Jh
dGlvbihjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBjb25zdCBGbAogICAgICAgICB9CiAgICAgICAg
IG1fY29udGV4dC5zYXZlKCk7CiAgICAgICAgIG1fY29udGV4dC5jbGlwKGNsaXBSZWN0KTsKLSAg
ICAgICAgZXh0cmFPZmZzZXQgKz0gbV9iYXNlbGluZSArIDI7Ci0gICAgICAgIGxvY2FsT3JpZ2lu
Lm1vdmUoMCwgZXh0cmFPZmZzZXQpOworICAgICAgICBleHRyYU9mZnNldCArPSBmb250TWV0cmlj
cy5hc2NlbnQoKSArIDI7CisgICAgICAgIGJhc2VSZWN0Lm1vdmUoMCwgZXh0cmFPZmZzZXQpOwog
ICAgIH0KIAogICAgIGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdyA9IG1fc2hhZG93OwpAQCAtMzIw
LDcgKzI3Miw3IEBAIHZvaWQgVGV4dERlY29yYXRpb25QYWludGVyOjpwYWludFRleHREZWNvcmF0
aW9uKGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IEZsCiAgICAgICAgIGlmIChzaGFkb3cp
IHsKICAgICAgICAgICAgIGlmICghc2hhZG93LT5uZXh0KCkpIHsKICAgICAgICAgICAgICAgICAv
LyBUaGUgbGFzdCBzZXQgb2YgbGluZXMgcGFpbnRzIG5vcm1hbGx5IGluc2lkZSB0aGUgY2xpcC4K
LSAgICAgICAgICAgICAgICBsb2NhbE9yaWdpbi5tb3ZlKDAsIC1leHRyYU9mZnNldCk7CisgICAg
ICAgICAgICAgICAgYmFzZVJlY3QubG9jYXRpb24oKS5tb3ZlKDAsIC1leHRyYU9mZnNldCk7CiAg
ICAgICAgICAgICAgICAgZXh0cmFPZmZzZXQgPSAwOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgaW50IHNoYWRvd1ggPSBtX2lzSG9yaXpvbnRhbCA/IHNoYWRvdy0+eCgpIDogc2hhZG93LT55
KCk7CkBAIC0zMzUsMjIgKzI4NywyNSBAQCB2b2lkIFRleHREZWNvcmF0aW9uUGFpbnRlcjo6cGFp
bnRUZXh0RGVjb3JhdGlvbihjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBjb25zdCBGbAogCiAgICAg
ICAgIC8vIFRoZXNlIGRlY29yYXRpb25zIHNob3VsZCBtYXRjaCB0aGUgdmlzdWFsIG92ZXJmbG93
cyBjb21wdXRlZCBpbiB2aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKCkuCiAgICAgICAgIGlm
IChtX2RlY29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUpKSB7Ci0g
ICAgICAgICAgICBpbnQgb2Zmc2V0ID0gY29tcHV0ZVVuZGVybGluZU9mZnNldChtX2xpbmVTdHls
ZS50ZXh0VW5kZXJsaW5lUG9zaXRpb24oKSwgbV9saW5lU3R5bGUuZm9udE1ldHJpY3MoKSwgbV9p
bmxpbmVUZXh0Qm94LCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcyk7Ci0gICAgICAgICAgICBmbG9h
dCB3YXZ5T2Zmc2V0ID0gbV9zdHlsZXMudW5kZXJsaW5lU3R5bGUgPT0gVGV4dERlY29yYXRpb25T
dHlsZTo6V2F2eSA/IG1fd2F2eU9mZnNldCA6IDA7Ci0gICAgICAgICAgICBGbG9hdFBvaW50IHN0
YXJ0ID0gbG9jYWxPcmlnaW4gKyBGbG9hdFNpemUoMCwgb2Zmc2V0ICsgd2F2eU9mZnNldCk7Ci0g
ICAgICAgICAgICBGbG9hdFBvaW50IGVuZCA9IGxvY2FsT3JpZ2luICsgRmxvYXRTaXplKG1fd2lk
dGgsIG9mZnNldCArIHdhdnlPZmZzZXQpOwotICAgICAgICAgICAgcGFpbnREZWNvcmF0aW9uKFRl
eHREZWNvcmF0aW9uOjpVbmRlcmxpbmUsIG1fc3R5bGVzLnVuZGVybGluZVN0eWxlLCBtX3N0eWxl
cy51bmRlcmxpbmVDb2xvciwgc3RhcnQsIGVuZCwgb2Zmc2V0KTsKKyAgICAgICAgICAgIGZsb2F0
IGdhcCA9IGNvbXB1dGVVbmRlcmxpbmVHYXAobV9saW5lU3R5bGUudGV4dFVuZGVybGluZVBvc2l0
aW9uKCksIG1fbGluZVN0eWxlLnRleHRVbmRlcmxpbmVPZmZzZXQoKSwgdGV4dERlY29yYXRpb25U
aGlja25lc3MsIG1fbGluZVN0eWxlLmZvbnRNZXRyaWNzKCksIG1faW5saW5lVGV4dEJveCk7Cisg
ICAgICAgICAgICBmbG9hdCB3YXZ5T2Zmc2V0ID0gbV9zdHlsZXMudW5kZXJsaW5lU3R5bGUgPT0g
VGV4dERlY29yYXRpb25TdHlsZTo6V2F2eSA/IG1fd2F2eU9mZnNldCAqIDMgOiAwOworICAgICAg
ICAgICAgYXV0byB5UG9zaXRpb24gPSBmb250TWV0cmljcy5hc2NlbnQoKSArIGdhcCArIHdhdnlP
ZmZzZXQ7CisgICAgICAgICAgICBhdXRvIHJlY3QgPSBiYXNlUmVjdDsKKyAgICAgICAgICAgIHJl
Y3QubW92ZShGbG9hdFNpemUoMCwgeVBvc2l0aW9uKSk7CisgICAgICAgICAgICBwYWludERlY29y
YXRpb24oVGV4dERlY29yYXRpb246OlVuZGVybGluZSwgbV9zdHlsZXMudW5kZXJsaW5lU3R5bGUs
IG1fc3R5bGVzLnVuZGVybGluZUNvbG9yLCByZWN0KTsKICAgICAgICAgfQogICAgICAgICBpZiAo
bV9kZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvbjo6T3ZlcmxpbmUpKSB7Ci0gICAg
ICAgICAgICBmbG9hdCB3YXZ5T2Zmc2V0ID0gbV9zdHlsZXMub3ZlcmxpbmVTdHlsZSA9PSBUZXh0
RGVjb3JhdGlvblN0eWxlOjpXYXZ5ID8gbV93YXZ5T2Zmc2V0IDogMDsKLSAgICAgICAgICAgIEZs
b2F0UG9pbnQgc3RhcnQgPSBsb2NhbE9yaWdpbiAtIEZsb2F0U2l6ZSgwLCB3YXZ5T2Zmc2V0KTsK
LSAgICAgICAgICAgIEZsb2F0UG9pbnQgZW5kID0gbG9jYWxPcmlnaW4gKyBGbG9hdFNpemUobV93
aWR0aCwgLXdhdnlPZmZzZXQpOwotICAgICAgICAgICAgcGFpbnREZWNvcmF0aW9uKFRleHREZWNv
cmF0aW9uOjpPdmVybGluZSwgbV9zdHlsZXMub3ZlcmxpbmVTdHlsZSwgbV9zdHlsZXMub3Zlcmxp
bmVDb2xvciwgc3RhcnQsIGVuZCwgMCk7CisgICAgICAgICAgICBmbG9hdCB3YXZ5T2Zmc2V0ID0g
bV9zdHlsZXMub3ZlcmxpbmVTdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpXYXZ5ID8gbV93
YXZ5T2Zmc2V0ICogMyA6IDA7CisgICAgICAgICAgICBhdXRvIHlQb3NpdGlvbiA9IC13YXZ5T2Zm
c2V0OworICAgICAgICAgICAgYXV0byByZWN0ID0gYmFzZVJlY3Q7CisgICAgICAgICAgICByZWN0
Lm1vdmUoRmxvYXRTaXplKDAsIHlQb3NpdGlvbikpOworICAgICAgICAgICAgcGFpbnREZWNvcmF0
aW9uKFRleHREZWNvcmF0aW9uOjpPdmVybGluZSwgbV9zdHlsZXMub3ZlcmxpbmVTdHlsZSwgbV9z
dHlsZXMub3ZlcmxpbmVDb2xvciwgcmVjdCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1fZGVj
b3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb246OkxpbmVUaHJvdWdoKSkgewotICAgICAg
ICAgICAgRmxvYXRQb2ludCBzdGFydCA9IGxvY2FsT3JpZ2luICsgRmxvYXRTaXplKDAsIDIgKiBt
X2Jhc2VsaW5lIC8gMyk7Ci0gICAgICAgICAgICBGbG9hdFBvaW50IGVuZCA9IGxvY2FsT3JpZ2lu
ICsgRmxvYXRTaXplKG1fd2lkdGgsIDIgKiBtX2Jhc2VsaW5lIC8gMyk7Ci0gICAgICAgICAgICBw
YWludERlY29yYXRpb24oVGV4dERlY29yYXRpb246OkxpbmVUaHJvdWdoLCBtX3N0eWxlcy5saW5l
dGhyb3VnaFN0eWxlLCBtX3N0eWxlcy5saW5ldGhyb3VnaENvbG9yLCBzdGFydCwgZW5kLCAwKTsK
KyAgICAgICAgICAgIGF1dG8geVBvc2l0aW9uID0gMiAqIGZvbnRNZXRyaWNzLmFzY2VudCgpIC8g
MzsKKyAgICAgICAgICAgIGF1dG8gcmVjdCA9IGJhc2VSZWN0OworICAgICAgICAgICAgcmVjdC5t
b3ZlKEZsb2F0U2l6ZSgwLCB5UG9zaXRpb24pKTsKKyAgICAgICAgICAgIHBhaW50RGVjb3JhdGlv
bihUZXh0RGVjb3JhdGlvbjo6TGluZVRocm91Z2gsIG1fc3R5bGVzLmxpbmV0aHJvdWdoU3R5bGUs
IG1fc3R5bGVzLmxpbmV0aHJvdWdoQ29sb3IsIHJlY3QpOwogICAgICAgICB9CiAgICAgfSB3aGls
ZSAoc2hhZG93KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRE
ZWNvcmF0aW9uUGFpbnRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0
aW9uUGFpbnRlci5oCmluZGV4IDAyOTRhNDYzYzdmNGI0OWJjOTg1MTFlZmQyY2ZhMDg1N2RkY2Mz
MTQuLmFjZGZmYmE3Nzc1MzI4NGVkZGUyNTRjZGYyNzlkYjZjM2Q1NDNlYTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmgKQEAgLTQ4LDcg
KzQ4LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Rm9udChjb25zdCBGb250Q2FzY2FkZSYgZm9u
dCkgeyBtX2ZvbnQgPSAmZm9udDsgfQogICAgIHZvaWQgc2V0SXNIb3Jpem9udGFsKGJvb2wgaXNI
b3Jpem9udGFsKSB7IG1faXNIb3Jpem9udGFsID0gaXNIb3Jpem9udGFsOyB9CiAgICAgdm9pZCBz
ZXRXaWR0aChmbG9hdCB3aWR0aCkgeyBtX3dpZHRoID0gd2lkdGg7IH0KLSAgICB2b2lkIHNldEJh
c2VsaW5lKGZsb2F0IGJhc2VsaW5lKSB7IG1fYmFzZWxpbmUgPSBiYXNlbGluZTsgfQogICAgIHZv
aWQgc2V0VGV4dFNoYWRvdyhjb25zdCBTaGFkb3dEYXRhKiB0ZXh0U2hhZG93KSB7IG1fc2hhZG93
ID0gdGV4dFNoYWRvdzsgfQogICAgIHZvaWQgc2V0U2hhZG93Q29sb3JGaWx0ZXIoY29uc3QgRmls
dGVyT3BlcmF0aW9ucyogY29sb3JGaWx0ZXIpIHsgbV9zaGFkb3dDb2xvckZpbHRlciA9IGNvbG9y
RmlsdGVyOyB9CiAKQEAgLTcyLDcgKzcxLDYgQEAgcHJpdmF0ZToKICAgICBPcHRpb25TZXQ8VGV4
dERlY29yYXRpb24+IG1fZGVjb3JhdGlvbnM7CiAgICAgZmxvYXQgbV93YXZ5T2Zmc2V0OwogICAg
IGZsb2F0IG1fd2lkdGggeyAwIH07Ci0gICAgZmxvYXQgbV9iYXNlbGluZSB7IDAgfTsKICAgICBG
bG9hdFBvaW50IG1fYm94T3JpZ2luOwogICAgIGJvb2wgbV9pc1ByaW50aW5nOwogICAgIGJvb2wg
bV9pc0hvcml6b250YWwgeyB0cnVlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCBkYjg1ZDdkMDkzZjUyODRjYmViODAyZWU4NzAwODA4
ZTM5MmE3MWVkLi43ZTY4ZDYwMWU2ZWE3ZjM0MTZjMGY2MWRjMzc4NjBhMjE1NmI3NTdhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTUz
NywxMyArNTM3LDExIEBAIGlubGluZSBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VBZmZlY3RzVmlz
dWFsT3ZlcmZsb3coY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyKSBjCiAKICAgICBpZiAobV9pbmhl
cml0ZWRGbGFncy50ZXh0RGVjb3JhdGlvbnMgIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy50ZXh0
RGVjb3JhdGlvbnMKICAgICAgICAgfHwgbV92aXN1YWxEYXRhLT50ZXh0RGVjb3JhdGlvbiAhPSBv
dGhlci5tX3Zpc3VhbERhdGEtPnRleHREZWNvcmF0aW9uCi0gICAgICAgIHx8IG1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPnRleHREZWNvcmF0aW9uU3R5bGUgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+dGV4dERlY29yYXRpb25TdHlsZSkgewotICAgICAgICAvLyBVbmRlcmxpbmVzIGFy
ZSBhbHdheXMgZHJhd24gb3V0c2lkZSBvZiB0aGVpciB0ZXh0Ym94IGJvdW5kcyB3aGVuIHRleHQt
dW5kZXJsaW5lLXBvc2l0aW9uOiB1bmRlcjsKLSAgICAgICAgLy8gaXMgc3BlY2lmaWVkLiBXZSBj
YW4gdGFrZSBhbiBlYXJseSBvdXQgaGVyZS4KLSAgICAgICAgaWYgKHRleHRVbmRlcmxpbmVQb3Np
dGlvbigpID09IFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6VW5kZXIKLSAgICAgICAgICAgIHx8IG90
aGVyLnRleHRVbmRlcmxpbmVQb3NpdGlvbigpID09IFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6VW5k
ZXIpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIHZpc3VhbE92ZXJm
bG93Rm9yRGVjb3JhdGlvbnMoKnRoaXMsIG51bGxwdHIpICE9IHZpc3VhbE92ZXJmbG93Rm9yRGVj
b3JhdGlvbnMob3RoZXIsIG51bGxwdHIpOworICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLT50ZXh0RGVjb3JhdGlvblN0eWxlICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEt
PnRleHREZWNvcmF0aW9uU3R5bGUKKyAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4
dERlY29yYXRpb25UaGlja25lc3MgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dERl
Y29yYXRpb25UaGlja25lc3MKKyAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFVu
ZGVybGluZU9mZnNldCAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0VW5kZXJsaW5l
T2Zmc2V0CisgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRVbmRlcmxpbmVQb3Np
dGlvbiAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0VW5kZXJsaW5lUG9zaXRpb24p
IHsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgaWYgKGhhc091dGxpbmVJblZp
c3VhbE92ZXJmbG93KCkgIT0gb3RoZXIuaGFzT3V0bGluZUluVmlzdWFsT3ZlcmZsb3coKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggZGQyNDJl
NzZkM2U4MTA5Y2I4OTA3ODU3OWIyYzhhYjQxYmQ4N2U1MC4uMzJkZGYxYzIyODI2N2ZkNjI1YjNh
NjJjMmNhODY1NTBlZDI1NzlmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmgKQEAgLTM3NCw3ICszNzQsOSBAQCBwdWJsaWM6CiAgICAgT3B0aW9uU2V0
PFRleHREZWNvcmF0aW9uPiB0ZXh0RGVjb3JhdGlvbigpIGNvbnN0IHsgcmV0dXJuIE9wdGlvblNl
dDxUZXh0RGVjb3JhdGlvbj46OmZyb21SYXcobV92aXN1YWxEYXRhLT50ZXh0RGVjb3JhdGlvbik7
IH0KICAgICBUZXh0RGVjb3JhdGlvblN0eWxlIHRleHREZWNvcmF0aW9uU3R5bGUoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0RGVjb3JhdGlvblN0eWxlPihtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT50ZXh0RGVjb3JhdGlvblN0eWxlKTsgfQogICAgIE9wdGlvblNldDxUZXh0RGVjb3Jh
dGlvblNraXA+IHRleHREZWNvcmF0aW9uU2tpcCgpIGNvbnN0IHsgcmV0dXJuIE9wdGlvblNldDxU
ZXh0RGVjb3JhdGlvblNraXA+Ojpmcm9tUmF3KG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHREZWNv
cmF0aW9uU2tpcCk7IH0KLSAgICBPcHRpb25TZXQ8VGV4dFVuZGVybGluZVBvc2l0aW9uPiB0ZXh0
VW5kZXJsaW5lUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBPcHRpb25TZXQ8VGV4dFVuZGVybGlu
ZVBvc2l0aW9uPjo6ZnJvbVJhdyhtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0VW5kZXJsaW5lUG9z
aXRpb24pOyB9CisgICAgVGV4dFVuZGVybGluZVBvc2l0aW9uIHRleHRVbmRlcmxpbmVQb3NpdGlv
bigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRVbmRlcmxpbmVQb3NpdGlvbj4obV9y
YXJlSW5oZXJpdGVkRGF0YS0+dGV4dFVuZGVybGluZVBvc2l0aW9uKTsgfQorICAgIFRleHRVbmRl
cmxpbmVPZmZzZXQgdGV4dFVuZGVybGluZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUlu
aGVyaXRlZERhdGEtPnRleHRVbmRlcmxpbmVPZmZzZXQ7IH0KKyAgICBUZXh0RGVjb3JhdGlvblRo
aWNrbmVzcyB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUlu
aGVyaXRlZERhdGEtPnRleHREZWNvcmF0aW9uVGhpY2tuZXNzOyB9CiAKICNpZiBFTkFCTEUoQ1NT
M19URVhUKQogICAgIFRleHRJbmRlbnRMaW5lIHRleHRJbmRlbnRMaW5lKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8VGV4dEluZGVudExpbmU+KG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRJ
bmRlbnRMaW5lKTsgfQpAQCAtOTIzLDcgKzkyNSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRl
eHREZWNvcmF0aW9uKE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4gdikgeyBTRVRfVkFSKG1fdmlz
dWFsRGF0YSwgdGV4dERlY29yYXRpb24sIHYudG9SYXcoKSk7IH0KICAgICB2b2lkIHNldFRleHRE
ZWNvcmF0aW9uU3R5bGUoVGV4dERlY29yYXRpb25TdHlsZSB2KSB7IFNFVF9WQVIobV9yYXJlTm9u
SW5oZXJpdGVkRGF0YSwgdGV4dERlY29yYXRpb25TdHlsZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHYpKTsgfQogICAgIHZvaWQgc2V0VGV4dERlY29yYXRpb25Ta2lwKE9wdGlvblNldDxUZXh0RGVj
b3JhdGlvblNraXA+IHNraXApIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0RGVj
b3JhdGlvblNraXAsIHNraXAudG9SYXcoKSk7IH0KLSAgICB2b2lkIHNldFRleHRVbmRlcmxpbmVQ
b3NpdGlvbihPcHRpb25TZXQ8VGV4dFVuZGVybGluZVBvc2l0aW9uPiB2KSB7IFNFVF9WQVIobV9y
YXJlSW5oZXJpdGVkRGF0YSwgdGV4dFVuZGVybGluZVBvc2l0aW9uLCB2LnRvUmF3KCkpOyB9Cisg
ICAgdm9pZCBzZXRUZXh0VW5kZXJsaW5lUG9zaXRpb24oVGV4dFVuZGVybGluZVBvc2l0aW9uIHBv
c2l0aW9uKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4dFVuZGVybGluZVBvc2l0
aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocG9zaXRpb24pKTsgfQorICAgIHZvaWQgc2V0VGV4
dFVuZGVybGluZU9mZnNldChUZXh0VW5kZXJsaW5lT2Zmc2V0IHRleHRVbmRlcmxpbmVPZmZzZXQp
IHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0VW5kZXJsaW5lT2Zmc2V0LCB0ZXh0
VW5kZXJsaW5lT2Zmc2V0KTsgfQorICAgIHZvaWQgc2V0VGV4dERlY29yYXRpb25UaGlja25lc3Mo
VGV4dERlY29yYXRpb25UaGlja25lc3MgdGV4dERlY29yYXRpb25UaGlja25lc3MpIHsgU0VUX1ZB
UihtX3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcywgdGV4dERlY29y
YXRpb25UaGlja25lc3MpOyB9CiAgICAgdm9pZCBzZXREaXJlY3Rpb24oVGV4dERpcmVjdGlvbiB2
KSB7IG1faW5oZXJpdGVkRmxhZ3MuZGlyZWN0aW9uID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHYp
OyB9CiAgICAgdm9pZCBzZXRIYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9uKGJvb2wgdikgeyBtX25v
bkluaGVyaXRlZEZsYWdzLmhhc0V4cGxpY2l0bHlTZXREaXJlY3Rpb24gPSB2OyB9CiAgICAgdm9p
ZCBzZXRMaW5lSGVpZ2h0KExlbmd0aCYmKTsKQEAgLTE0ODQsNyArMTQ4OCw5IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiBpbml0aWFsVGV4dERlY29yYXRp
b24oKSB7IHJldHVybiBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+IHsgfTsgfQogICAgIHN0YXRp
YyBUZXh0RGVjb3JhdGlvblN0eWxlIGluaXRpYWxUZXh0RGVjb3JhdGlvblN0eWxlKCkgeyByZXR1
cm4gVGV4dERlY29yYXRpb25TdHlsZTo6U29saWQ7IH0KICAgICBzdGF0aWMgT3B0aW9uU2V0PFRl
eHREZWNvcmF0aW9uU2tpcD4gaW5pdGlhbFRleHREZWNvcmF0aW9uU2tpcCgpIHsgcmV0dXJuIFRl
eHREZWNvcmF0aW9uU2tpcDo6QXV0bzsgfQotICAgIHN0YXRpYyBPcHRpb25TZXQ8VGV4dFVuZGVy
bGluZVBvc2l0aW9uPiBpbml0aWFsVGV4dFVuZGVybGluZVBvc2l0aW9uKCkgeyByZXR1cm4gVGV4
dFVuZGVybGluZVBvc2l0aW9uOjpBdXRvOyB9CisgICAgc3RhdGljIFRleHRVbmRlcmxpbmVQb3Np
dGlvbiBpbml0aWFsVGV4dFVuZGVybGluZVBvc2l0aW9uKCkgeyByZXR1cm4gVGV4dFVuZGVybGlu
ZVBvc2l0aW9uOjpBdXRvOyB9CisgICAgc3RhdGljIFRleHRVbmRlcmxpbmVPZmZzZXQgaW5pdGlh
bFRleHRVbmRlcmxpbmVPZmZzZXQoKSB7IHJldHVybiBUZXh0VW5kZXJsaW5lT2Zmc2V0OjpjcmVh
dGVXaXRoQXV0bygpOyB9CisgICAgc3RhdGljIFRleHREZWNvcmF0aW9uVGhpY2tuZXNzIGluaXRp
YWxUZXh0RGVjb3JhdGlvblRoaWNrbmVzcygpIHsgcmV0dXJuIFRleHREZWNvcmF0aW9uVGhpY2tu
ZXNzOjpjcmVhdGVXaXRoQXV0bygpOyB9CiAgICAgc3RhdGljIGZsb2F0IGluaXRpYWxab29tKCkg
eyByZXR1cm4gMS4wZjsgfQogICAgIHN0YXRpYyBUZXh0Wm9vbSBpbml0aWFsVGV4dFpvb20oKSB7
IHJldHVybiBUZXh0Wm9vbTo6Tm9ybWFsOyB9CiAgICAgc3RhdGljIGZsb2F0IGluaXRpYWxPdXRs
aW5lT2Zmc2V0KCkgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAppbmRleCAzZWRlZTA5OWZlODU0ZmNm
MmUwMzU5ZmI2MmRkNTU3YTMxZDhkM2JjLi4xNzZlYjIxM2E3YTZlNzgyZTMxMDc5MGQ1MTBmMGNk
MWIzZDllMDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGVDb25zdGFudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGVDb25zdGFudHMuaApAQCAtNzMxLDEyICs3MzEsMTEgQEAgZW51bSBjbGFzcyBU
ZXh0RGVjb3JhdGlvblNraXAgOiB1aW50OF90IHsKICAgICBBdXRvICAgICAgPSAxIDw8IDIKIH07
CiAKLS8vIEZJWE1FOiBUaGVyZSBpcyBubyByZWFzb24gZm9yIHRoZSB2YWx1ZXMgaW4gdGhlIGVu
dW0gdG8gYmUgcG93ZXJzIG9mIHR3by4KIGVudW0gY2xhc3MgVGV4dFVuZGVybGluZVBvc2l0aW9u
IDogdWludDhfdCB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBzdXBwb3J0IGZvciAndW5kZXIg
bGVmdCcgYW5kICd1bmRlciByaWdodCcgdmFsdWVzLgotICAgIEF1dG8gICAgICAgPSAxIDw8IDAs
Ci0gICAgQWxwaGFiZXRpYyA9IDEgPDwgMSwKLSAgICBVbmRlciAgICAgID0gMSA8PCAyCisgICAg
QXV0bywKKyAgICBVbmRlciwKKyAgICBGcm9tRm9udAogfTsKIAogZW51bSBjbGFzcyBUZXh0Wm9v
bSA6IHVpbnQ4X3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCmluZGV4IDJhYWRhMWMyNzBhMzlmOGZhYWQx
ODU1MjAwZmJjMTYwNDZiODhlMDYuLjVmYjc5YjNmOTQ3ZTQ0NmI3MGVmMzM4MjdjYzcyOGNiYzgw
ZWIwNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJh
cmVJbmhlcml0ZWREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAKQEAgLTQ1LDYgKzQ1LDggQEAgc3RydWN0IEdyZWF0
ZXJUaGFuT3JTYW1lU2l6ZUFzU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPEdyZWF0ZXIKICAgICB2b2lkKiByZWZQdHJzWzNdOwogICAgIExlbmd0aCBsZW5ndGhzWzJd
OwogICAgIGZsb2F0IHNlY29uZEZsb2F0OworICAgIFRleHRVbmRlcmxpbmVPZmZzZXQgb2Zmc2V0
OworICAgIFRleHREZWNvcmF0aW9uVGhpY2tuZXNzIHRoaWNrbmVzczsKICAgICB1bnNpZ25lZCBi
aXRmaWVsZHNbNF07CiAgICAgc2hvcnQgcGFnZWRNZWRpYVNob3J0c1syXTsKICAgICB1bnNpZ25l
ZCB1bnNpZ25lZHNbMV07CkBAIC03NSw2ICs3Nyw4IEBAIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6
OlN0eWxlUmFyZUluaGVyaXRlZERhdGEoKQogICAgICwgdGV4dFN0cm9rZVdpZHRoKFJlbmRlclN0
eWxlOjppbml0aWFsVGV4dFN0cm9rZVdpZHRoKCkpCiAgICAgLCBpbmRlbnQoUmVuZGVyU3R5bGU6
OmluaXRpYWxUZXh0SW5kZW50KCkpCiAgICAgLCBlZmZlY3RpdmVab29tKFJlbmRlclN0eWxlOjpp
bml0aWFsWm9vbSgpKQorICAgICwgdGV4dFVuZGVybGluZU9mZnNldChSZW5kZXJTdHlsZTo6aW5p
dGlhbFRleHRVbmRlcmxpbmVPZmZzZXQoKSkKKyAgICAsIHRleHREZWNvcmF0aW9uVGhpY2tuZXNz
KFJlbmRlclN0eWxlOjppbml0aWFsVGV4dERlY29yYXRpb25UaGlja25lc3MoKSkKICAgICAsIGN1
c3RvbVByb3BlcnRpZXMoU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE6OmNyZWF0ZSgpKQogICAgICwg
d2lkb3dzKFJlbmRlclN0eWxlOjppbml0aWFsV2lkb3dzKCkpCiAgICAgLCBvcnBoYW5zKFJlbmRl
clN0eWxlOjppbml0aWFsT3JwaGFucygpKQpAQCAtMTE2LDcgKzEyMCw3IEBAIFN0eWxlUmFyZUlu
aGVyaXRlZERhdGE6OlN0eWxlUmFyZUluaGVyaXRlZERhdGEoKQogICAgICwgdGV4dEp1c3RpZnko
UmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0SnVzdGlmeSgpKQogI2VuZGlmCiAgICAgLCB0ZXh0RGVj
b3JhdGlvblNraXAoUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RGVjb3JhdGlvblNraXAoKS50b1Jh
dygpKQotICAgICwgdGV4dFVuZGVybGluZVBvc2l0aW9uKFJlbmRlclN0eWxlOjppbml0aWFsVGV4
dFVuZGVybGluZVBvc2l0aW9uKCkudG9SYXcoKSkKKyAgICAsIHRleHRVbmRlcmxpbmVQb3NpdGlv
bihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0VW5kZXJsaW5l
UG9zaXRpb24oKSkpCiAgICAgLCBydWJ5UG9zaXRpb24oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJl
bmRlclN0eWxlOjppbml0aWFsUnVieVBvc2l0aW9uKCkpKQogICAgICwgdGV4dFpvb20oc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFJlbmRlclN0eWxlOjppbml0aWFsVGV4dFpvb20oKSkpCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTE2OCw2ICsxNzIsOCBAQCBpbmxpbmUgU3R5bGVSYXJlSW5o
ZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZVJhcmVJbmhlcml0
ZWREYQogICAgICwgY3Vyc29yRGF0YShvLmN1cnNvckRhdGEpCiAgICAgLCBpbmRlbnQoby5pbmRl
bnQpCiAgICAgLCBlZmZlY3RpdmVab29tKG8uZWZmZWN0aXZlWm9vbSkKKyAgICAsIHRleHRVbmRl
cmxpbmVPZmZzZXQoby50ZXh0VW5kZXJsaW5lT2Zmc2V0KQorICAgICwgdGV4dERlY29yYXRpb25U
aGlja25lc3Moby50ZXh0RGVjb3JhdGlvblRoaWNrbmVzcykKICAgICAsIGN1c3RvbVByb3BlcnRp
ZXMoby5jdXN0b21Qcm9wZXJ0aWVzKQogICAgICwgd2lkb3dzKG8ud2lkb3dzKQogICAgICwgb3Jw
aGFucyhvLm9ycGhhbnMpCkBAIC0yNzMsNiArMjc5LDggQEAgYm9vbCBTdHlsZVJhcmVJbmhlcml0
ZWREYXRhOjpvcGVyYXRvcj09KGNvbnN0IFN0eWxlUmFyZUluaGVyaXRlZERhdGEmIG8pIGNvbnN0
CiAgICAgICAgICYmIGFyZVBvaW50aW5nVG9FcXVhbERhdGEoY3Vyc29yRGF0YSwgby5jdXJzb3JE
YXRhKQogICAgICAgICAmJiBpbmRlbnQgPT0gby5pbmRlbnQKICAgICAgICAgJiYgZWZmZWN0aXZl
Wm9vbSA9PSBvLmVmZmVjdGl2ZVpvb20KKyAgICAgICAgJiYgdGV4dFVuZGVybGluZU9mZnNldCA9
PSBvLnRleHRVbmRlcmxpbmVPZmZzZXQKKyAgICAgICAgJiYgdGV4dERlY29yYXRpb25UaGlja25l
c3MgPT0gby50ZXh0RGVjb3JhdGlvblRoaWNrbmVzcwogICAgICAgICAmJiB3aWRvd3MgPT0gby53
aWRvd3MKICAgICAgICAgJiYgb3JwaGFucyA9PSBvLm9ycGhhbnMKICAgICAgICAgJiYgaGFzQXV0
b1dpZG93cyA9PSBvLmhhc0F1dG9XaWRvd3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oCmluZGV4IGI4M2E4YzBhYzgx
YzgwNmRkMTZiN2RmZTJiYWQ4MGI4MzNkOWYyYzQuLjFlMTA1YmIxZWY0MzJiOTA5MTg3YzU4YmM3
ZTVlMWYyZWI3NzA5MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaApAQCAtMjgsNiArMjgsOCBAQAogI2luY2x1
ZGUgIkRhdGFSZWYuaCIKICNpbmNsdWRlICJMZW5ndGguaCIKICNpbmNsdWRlICJTdHlsZUN1c3Rv
bVByb3BlcnR5RGF0YS5oIgorI2luY2x1ZGUgIlRleHRVbmRlcmxpbmVPZmZzZXQuaCIKKyNpbmNs
dWRlICJUZXh0RGVjb3JhdGlvblRoaWNrbmVzcy5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAKQEAgLTc5LDYgKzgxLDkg
QEAgcHVibGljOgogICAgIFJlZlB0cjxDdXJzb3JMaXN0PiBjdXJzb3JEYXRhOwogICAgIExlbmd0
aCBpbmRlbnQ7CiAgICAgZmxvYXQgZWZmZWN0aXZlWm9vbTsKKworICAgIFRleHRVbmRlcmxpbmVP
ZmZzZXQgdGV4dFVuZGVybGluZU9mZnNldDsKKyAgICBUZXh0RGVjb3JhdGlvblRoaWNrbmVzcyB0
ZXh0RGVjb3JhdGlvblRoaWNrbmVzczsKICAgICAKICAgICBMZW5ndGggd29yZFNwYWNpbmc7CiAK
QEAgLTEyOCw3ICsxMzMsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgdGV4dEp1c3RpZnkgOiAy
OyAvLyBUZXh0SnVzdGlmeQogI2VuZGlmCiAgICAgdW5zaWduZWQgdGV4dERlY29yYXRpb25Ta2lw
IDogNTsgLy8gVGV4dERlY29yYXRpb25Ta2lwCi0gICAgdW5zaWduZWQgdGV4dFVuZGVybGluZVBv
c2l0aW9uIDogMzsgLy8gVGV4dFVuZGVybGluZVBvc2l0aW9uCisgICAgdW5zaWduZWQgdGV4dFVu
ZGVybGluZVBvc2l0aW9uIDogMjsgLy8gVGV4dFVuZGVybGluZVBvc2l0aW9uCiAgICAgdW5zaWdu
ZWQgcnVieVBvc2l0aW9uIDogMjsgLy8gUnVieVBvc2l0aW9uCiAgICAgdW5zaWduZWQgdGV4dFpv
b206IDE7IC8vIFRleHRab29tCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1RleHREZWNvcmF0aW9uVGhpY2tuZXNzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWUwZDc4YTBh
ZjExY2Y1ZmQxYzUxMWNkZTI4MWQwM2UxYWVlNGNlNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcy5oCkBAIC0w
LDAgKzEsMTMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJGb250
TWV0cmljcy5oIgorI2luY2x1ZGUgIkxlbmd0aC5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRT
dHJlYW0uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBUZXh0RGVjb3JhdGlvblRo
aWNrbmVzcyB7CitwdWJsaWM6CisgICAgc3RhdGljIFRleHREZWNvcmF0aW9uVGhpY2tuZXNzIGNy
ZWF0ZVdpdGhBdXRvKCkKKyAgICB7CisgICAgICAgIHJldHVybiBUZXh0RGVjb3JhdGlvblRoaWNr
bmVzcyhUeXBlOjpBdXRvKTsKKyAgICB9CisgICAgc3RhdGljIFRleHREZWNvcmF0aW9uVGhpY2tu
ZXNzIGNyZWF0ZUZyb21Gb250KCkKKyAgICB7CisgICAgICAgIHJldHVybiBUZXh0RGVjb3JhdGlv
blRoaWNrbmVzcyhUeXBlOjpGcm9tRm9udCk7CisgICAgfQorICAgIHN0YXRpYyBUZXh0RGVjb3Jh
dGlvblRoaWNrbmVzcyBjcmVhdGVXaXRoTGVuZ3RoKGZsb2F0IGxlbmd0aCkKKyAgICB7CisgICAg
ICAgIFRleHREZWNvcmF0aW9uVGhpY2tuZXNzIHJlc3VsdChUeXBlOjpMZW5ndGgpOworICAgICAg
ICByZXN1bHQuc2V0TGVuZ3RoVmFsdWUobGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICB9CisKKyAgICBib29sIGlzQXV0bygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV90eXBlID09IFR5cGU6OkF1dG87CisgICAgfQorCisgICAgYm9vbCBpc0Zyb21Gb250KCkgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3R5cGUgPT0gVHlwZTo6RnJvbUZvbnQ7CisgICAg
fQorCisgICAgYm9vbCBpc0xlbmd0aCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV90
eXBlID09IFR5cGU6Okxlbmd0aDsKKyAgICB9CisKKyAgICB2b2lkIHNldExlbmd0aFZhbHVlKGZs
b2F0IGxlbmd0aCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpc0xlbmd0aCgpKTsKKyAgICAgICAg
bV9sZW5ndGggPSBsZW5ndGg7CisgICAgfQorCisgICAgZmxvYXQgbGVuZ3RoVmFsdWUoKSBjb25z
dAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzTGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gbV9s
ZW5ndGg7CisgICAgfQorCisgICAgZmxvYXQgcmVzb2x2ZShmbG9hdCBmb250U2l6ZSwgY29uc3Qg
Rm9udE1ldHJpY3MmIG1ldHJpY3MpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoaXNBdXRvKCkp
CisgICAgICAgICAgICByZXR1cm4gZm9udFNpemUgLyAxNjsKKyAgICAgICAgaWYgKGlzRnJvbUZv
bnQoKSkKKyAgICAgICAgICAgIHJldHVybiBtZXRyaWNzLnVuZGVybGluZVRoaWNrbmVzcygpOwor
ICAgICAgICBBU1NFUlQoaXNMZW5ndGgoKSk7CisgICAgICAgIHJldHVybiBtX2xlbmd0aDsKKyAg
ICB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVGV4dERlY29yYXRpb25UaGlja25lc3Mm
IG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICAgICAg
Y2FzZSBUeXBlOjpBdXRvOgorICAgICAgICBjYXNlIFR5cGU6OkZyb21Gb250OgorICAgICAgICAg
ICAgcmV0dXJuIG1fdHlwZSA9PSBvdGhlci5tX3R5cGU7CisgICAgICAgIGNhc2UgVHlwZTo6TGVu
Z3RoOgorICAgICAgICAgICAgcmV0dXJuIG1fdHlwZSA9PSBvdGhlci5tX3R5cGUgJiYgbV9sZW5n
dGggPT0gb3RoZXIubV9sZW5ndGg7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBUZXh0RGVjb3JhdGlvblRoaWNrbmVzcyYgb3RoZXIpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgfQorCitwcml2YXRlOgorICAgIGVu
dW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgeworICAgICAgICBBdXRvLAorICAgICAgICBGcm9tRm9u
dCwKKyAgICAgICAgTGVuZ3RoCisgICAgfTsKKworICAgIFRleHREZWNvcmF0aW9uVGhpY2tuZXNz
KFR5cGUgdHlwZSkKKyAgICAgICAgOiBtX3R5cGUgeyB0eXBlIH0KKyAgICB7CisgICAgfQorCisg
ICAgVHlwZSBtX3R5cGU7CisgICAgZmxvYXQgbV9sZW5ndGg7Cit9OworCitpbmxpbmUgVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgVGV4dERlY29yYXRpb25UaGlj
a25lc3MmIHRoaWNrbmVzcykKK3sKKyAgICBpZiAodGhpY2tuZXNzLmlzQXV0bygpKQorICAgICAg
ICB0cyA8PCAiYXV0byI7CisgICAgZWxzZSBpZiAodGhpY2tuZXNzLmlzRnJvbUZvbnQoKSkKKyAg
ICAgICAgdHMgPDwgImZyb20tZm9udCI7CisgICAgZWxzZQorICAgICAgICB0cyA8PCBUZXh0U3Ry
ZWFtOjpGb3JtYXROdW1iZXJSZXNwZWN0aW5nSW50ZWdlcnModGhpY2tuZXNzLmxlbmd0aFZhbHVl
KCkpOworICAgIHJldHVybiB0czsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1RleHRVbmRlcmxpbmVPZmZzZXQu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9UZXh0VW5kZXJsaW5lT2Zmc2V0LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTYxZTdiMmQ5MzEyZDJhMTk5MGQ4ZWFiNTY2OTAzMGRjOTMyNWEzYgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9UZXh0VW5kZXJs
aW5lT2Zmc2V0LmgKQEAgLTAsMCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIkxlbmd0aC5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBUZXh0VW5kZXJsaW5lT2Zmc2V0IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgVGV4dFVuZGVybGluZU9mZnNldCBjcmVhdGVXaXRoQXV0bygpCisg
ICAgeworICAgICAgICByZXR1cm4gVGV4dFVuZGVybGluZU9mZnNldChUeXBlOjpBdXRvKTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgVGV4dFVuZGVybGluZU9mZnNldCBjcmVhdGVXaXRoTGVuZ3RoKGZs
b2F0IGxlbmd0aCkKKyAgICB7CisgICAgICAgIFRleHRVbmRlcmxpbmVPZmZzZXQgcmVzdWx0KFR5
cGU6Okxlbmd0aCk7CisgICAgICAgIHJlc3VsdC5zZXRMZW5ndGhWYWx1ZShsZW5ndGgpOworICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGJvb2wgaXNBdXRvKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiAhaXNMZW5ndGgoKTsKKyAgICB9CisKKyAgICBib29sIGlzTGVu
Z3RoKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtX2xl
bmd0aCk7CisgICAgfQorCisgICAgdm9pZCBzZXRMZW5ndGhWYWx1ZShmbG9hdCBsZW5ndGgpCisg
ICAgeworICAgICAgICBBU1NFUlQoaXNMZW5ndGgoKSk7CisgICAgICAgIG1fbGVuZ3RoID0gbGVu
Z3RoOworICAgIH0KKworICAgIGZsb2F0IGxlbmd0aFZhbHVlKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIEFTU0VSVChpc0xlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJuICptX2xlbmd0aDsKKyAgICB9
CisKKyAgICBmbG9hdCBsZW5ndGhPcihmbG9hdCBkZWZhdWx0VmFsdWUpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gbV9sZW5ndGgudmFsdWVfb3IoZGVmYXVsdFZhbHVlKTsKKyAgICB9CisK
KyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVGV4dFVuZGVybGluZU9mZnNldCYgb3RoZXIpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9sZW5ndGggPT0gb3RoZXIubV9sZW5ndGg7Cisg
ICAgfQorCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFRleHRVbmRlcmxpbmVPZmZzZXQmIG90
aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAg
IH0KKworcHJpdmF0ZToKKyAgICBlbnVtIGNsYXNzIFR5cGUgeworICAgICAgICBBdXRvLAorICAg
ICAgICBMZW5ndGgKKyAgICB9OworCisgICAgVGV4dFVuZGVybGluZU9mZnNldChUeXBlIHR5cGUp
CisgICAgeworICAgICAgICBpZiAodHlwZSA9PSBUeXBlOjpMZW5ndGgpCisgICAgICAgICAgICBt
X2xlbmd0aCA9IDA7CisgICAgfQorCisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gbV9sZW5ndGg7
Cit9OworCitpbmxpbmUgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29u
c3QgVGV4dFVuZGVybGluZU9mZnNldCYgb2Zmc2V0KQoreworICAgIGlmIChvZmZzZXQuaXNBdXRv
KCkpCisgICAgICAgIHRzIDw8ICJhdXRvIjsKKyAgICBlbHNlCisgICAgICAgIHRzIDw8IFRleHRT
dHJlYW06OkZvcm1hdE51bWJlclJlc3BlY3RpbmdJbnRlZ2VycyhvZmZzZXQubGVuZ3RoVmFsdWUo
KSk7CisgICAgcmV0dXJuIHRzOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcAppbmRleCAxMzZmMzFhOGViYjkw
YmNjMjhkYTA3Njk4NjczMGMxN2M5ODIzMTE4Li5jN2Y0NzVhODQ3NjVhMzJjZGFmZjNlNmJjYTM0
NzFkMmZjMmZiOGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0
Qm94U3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHls
ZS5jcHAKQEAgLTMxLDEyICszMSwxMCBAQAogI2luY2x1ZGUgIlJvb3RJbmxpbmVCb3guaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAotaW50IGNvbXB1dGVVbmRlcmxpbmVPZmZzZXQoT3B0
aW9uU2V0PFRleHRVbmRlcmxpbmVQb3NpdGlvbj4gdW5kZXJsaW5lUG9zaXRpb24sIGNvbnN0IEZv
bnRNZXRyaWNzJiBmb250TWV0cmljcywgY29uc3QgSW5saW5lVGV4dEJveCogaW5saW5lVGV4dEJv
eCwgaW50IHRleHREZWNvcmF0aW9uVGhpY2tuZXNzKQorCisvLyBJbiBjb250cmFzdCB0byBjb21w
dXRlTGluZUJvdW5kc0FuZEFudGlhbGlhc2luZ01vZGVGb3JUZXh0KCksIHRoaXMgY2FsY3VsYXRl
cyB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgYmFzZWxpbmUgYW5kIHRoZSBuZWFyZXN0IGVkZ2Ug
b2YgdGhlIHVuZGVybGluZSwgYnV0IGRvZXNuJ3QgY29uc2lkZXIgdGhlIGNvbnRleHQncyBDVE0u
CitmbG9hdCBjb21wdXRlVW5kZXJsaW5lR2FwKFRleHRVbmRlcmxpbmVQb3NpdGlvbiB1bmRlcmxp
bmVQb3NpdGlvbiwgVGV4dFVuZGVybGluZU9mZnNldCB1bmRlcmxpbmVPZmZzZXQsIGZsb2F0IHRl
eHREZWNvcmF0aW9uVGhpY2tuZXNzLCBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MsIGNv
bnN0IElubGluZVRleHRCb3gqIGlubGluZVRleHRCb3gpCiB7Ci0gICAgLy8gVGhpcyByZXByZXNl
bnRzIHRoZSBnYXAgYmV0d2VlbiB0aGUgYmFzZWxpbmUgYW5kIHRoZSBjbG9zZXN0IGVkZ2Ugb2Yg
dGhlIHVuZGVybGluZS4KLSAgICBpbnQgZ2FwID0gc3RkOjptYXg8aW50PigxLCBjZWlsZih0ZXh0
RGVjb3JhdGlvblRoaWNrbmVzcyAvIDIuMCkpOwotICAgIAogICAgIC8vIEZJWE1FOiBUaGUgY29k
ZSBmb3IgdmlzdWFsIG92ZXJmbG93IGRldGVjdGlvbiBwYXNzZXMgaW4gYSBudWxsIGlubGluZSB0
ZXh0IGJveC4gVGhpcyBtZWFucyBpdCBpcyBub3cKICAgICAvLyBicm9rZW4gZm9yIHRoZSBjYXNl
IHdoZXJlIGF1dG8gbmVlZHMgdG8gYmVoYXZlIGxpa2UgInVuZGVyIi4KICAgICAKQEAgLTQ2LDIx
ICs0NCwyNyBAQCBpbnQgY29tcHV0ZVVuZGVybGluZU9mZnNldChPcHRpb25TZXQ8VGV4dFVuZGVy
bGluZVBvc2l0aW9uPiB1bmRlcmxpbmVQb3NpdGlvbiwgYwogICAgIC8vIGV2ZW4gaWYgaXQgaXMg
aG9yaXpvbnRhbCwgYnV0IGRldGVjdGluZyB0aGlzIGhhcyBwZXJmb3JtYW5jZSBpbXBsaWNhdGlv
bnMuIEZvciBub3cgd2Ugb25seSB3b3JrIHdpdGgKICAgICAvLyB2ZXJ0aWNhbCB0ZXh0LCBzaW5j
ZSB3ZSBhbHJlYWR5IGRldGVybWluZWQgdGhlIGJhc2VsaW5lIHR5cGUgdG8gYmUgaWRlb2dyYXBo
aWMgaW4gdGhhdAogICAgIC8vIGNhc2UuCi0gICAgCi0gICAgYXV0byByZXNvbHZlZFVuZGVybGlu
ZVBvc2l0aW9uID0gdW5kZXJsaW5lUG9zaXRpb247Ci0gICAgaWYgKHJlc29sdmVkVW5kZXJsaW5l
UG9zaXRpb24gPT0gVGV4dFVuZGVybGluZVBvc2l0aW9uOjpBdXRvKSB7Ci0gICAgICAgIGlmIChp
bmxpbmVUZXh0Qm94KQotICAgICAgICAgICAgcmVzb2x2ZWRVbmRlcmxpbmVQb3NpdGlvbiA9IGlu
bGluZVRleHRCb3gtPnJvb3QoKS5iYXNlbGluZVR5cGUoKSA9PSBJZGVvZ3JhcGhpY0Jhc2VsaW5l
ID8gVGV4dFVuZGVybGluZVBvc2l0aW9uOjpVbmRlciA6IFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6
QWxwaGFiZXRpYzsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzb2x2ZWRVbmRlcmxpbmVQ
b3NpdGlvbiA9IFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6QWxwaGFiZXRpYzsKLSAgICB9Ci0gICAg
Ci0gICAgc3dpdGNoIChzdGF0aWNfY2FzdDxUZXh0VW5kZXJsaW5lUG9zaXRpb24+KHJlc29sdmVk
VW5kZXJsaW5lUG9zaXRpb24udG9SYXcoKSkpIHsKLSAgICBjYXNlIFRleHRVbmRlcmxpbmVQb3Np
dGlvbjo6QWxwaGFiZXRpYzoKLSAgICAgICAgcmV0dXJuIGZvbnRNZXRyaWNzLmFzY2VudCgpICsg
Z2FwOworCisgICAgc3dpdGNoICh1bmRlcmxpbmVQb3NpdGlvbikgeworICAgIGNhc2UgVGV4dFVu
ZGVybGluZVBvc2l0aW9uOjpBdXRvOgorICAgICAgICBpZiAodW5kZXJsaW5lT2Zmc2V0LmlzQXV0
bygpKSB7CisgICAgICAgICAgICBhdXRvIHJlc29sdmVQb3NpdGlvbiA9IFsmXSgpIC0+IFRleHRV
bmRlcmxpbmVQb3NpdGlvbiB7CisgICAgICAgICAgICAgICAgQVNTRVJUKHVuZGVybGluZVBvc2l0
aW9uID09IFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6QXV0byk7CisgICAgICAgICAgICAgICAgaWYg
KGlubGluZVRleHRCb3ggJiYgaW5saW5lVGV4dEJveC0+cm9vdCgpLmJhc2VsaW5lVHlwZSgpID09
IElkZW9ncmFwaGljQmFzZWxpbmUpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBUZXh0VW5k
ZXJsaW5lUG9zaXRpb246OlVuZGVyOworICAgICAgICAgICAgICAgIHJldHVybiBUZXh0VW5kZXJs
aW5lUG9zaXRpb246OkF1dG87CisgICAgICAgICAgICB9OworICAgICAgICAgICAgYXV0byByZXNv
bHZlZFBvc2l0aW9uID0gcmVzb2x2ZVBvc2l0aW9uKCk7CisgICAgICAgICAgICBpZiAocmVzb2x2
ZWRQb3NpdGlvbiA9PSBUZXh0VW5kZXJsaW5lUG9zaXRpb246OlVuZGVyKQorICAgICAgICAgICAg
ICAgIHJldHVybiBjb21wdXRlVW5kZXJsaW5lR2FwKHJlc29sdmVkUG9zaXRpb24sIFRleHRVbmRl
cmxpbmVPZmZzZXQ6OmNyZWF0ZVdpdGhBdXRvKCksIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzLCBm
b250TWV0cmljcywgaW5saW5lVGV4dEJveCk7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpmbG9v
cihzdGQ6Om1heCgxLjBmLCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcyAvIDIpKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVCh1bmRlcmxpbmVPZmZzZXQuaXNMZW5ndGgoKSk7
CisgICAgICAgICAgICByZXR1cm4gdW5kZXJsaW5lT2Zmc2V0Lmxlbmd0aFZhbHVlKCk7CisgICAg
ICAgIH0KICAgICBjYXNlIFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6VW5kZXI6IHsKICAgICAgICAg
QVNTRVJUKGlubGluZVRleHRCb3gpOwotICAgICAgICAvLyBQb3NpdGlvbiB1bmRlcmxpbmUgcmVs
YXRpdmUgdG8gdGhlIGJvdHRvbSBlZGdlIG9mIHRoZSBsb3dlc3QgZWxlbWVudCdzIGNvbnRlbnQg
Ym94LgorICAgICAgICAvKi8vIFBvc2l0aW9uIHVuZGVybGluZSByZWxhdGl2ZSB0byB0aGUgYm90
dG9tIGVkZ2Ugb2YgdGhlIGxvd2VzdCBlbGVtZW50J3MgY29udGVudCBib3guCiAgICAgICAgIGNv
bnN0IFJvb3RJbmxpbmVCb3gmIHJvb3RCb3ggPSBpbmxpbmVUZXh0Qm94LT5yb290KCk7CiAgICAg
ICAgIGNvbnN0IFJlbmRlckVsZW1lbnQqIGRlY29yYXRpb25SZW5kZXJlciA9IGlubGluZVRleHRC
b3gtPnBhcmVudCgpLT5yZW5kZXJlcigpLmVuY2xvc2luZ1JlbmRlcmVyV2l0aFRleHREZWNvcmF0
aW9uKFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUsIGlubGluZVRleHRCb3gtPmlzRmlyc3RMaW5l
KCkpOwogICAgICAgICAKQEAgLTczLDI4ICs3NywyOSBAQCBpbnQgY29tcHV0ZVVuZGVybGluZU9m
ZnNldChPcHRpb25TZXQ8VGV4dFVuZGVybGluZVBvc2l0aW9uPiB1bmRlcmxpbmVQb3NpdGlvbiwg
YwogICAgICAgICAgICAgb2Zmc2V0ID0gaW5saW5lVGV4dEJveC0+bG9naWNhbEJvdHRvbSgpOwog
ICAgICAgICAgICAgcm9vdEJveC5tYXhMb2dpY2FsQm90dG9tRm9yVGV4dERlY29yYXRpb25MaW5l
KG9mZnNldCwgZGVjb3JhdGlvblJlbmRlcmVyLCBUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lKTsK
ICAgICAgICAgICAgIG9mZnNldCAtPSBpbmxpbmVUZXh0Qm94LT5sb2dpY2FsQm90dG9tKCk7Ci0g
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGlubGluZVRleHRCb3gtPmxvZ2ljYWxIZWlnaHQoKSAr
IGdhcCArIHN0ZDo6bWF4PGZsb2F0PihvZmZzZXQsIDApOworICAgICAgICB9Ki8KKyAgICAgICAg
YXV0byByZXN1bHQgPSBmb250TWV0cmljcy5kZXNjZW50KCk7CisgICAgICAgIHJlc3VsdCArPSB1
bmRlcmxpbmVPZmZzZXQubGVuZ3RoT3IoMCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
fQorICAgIGNhc2UgVGV4dFVuZGVybGluZVBvc2l0aW9uOjpGcm9tRm9udDogeworICAgICAgICBh
dXRvIHJlc3VsdCA9IGZvbnRNZXRyaWNzLnVuZGVybGluZVBvc2l0aW9uKCk7CisgICAgICAgIHJl
c3VsdCArPSB1bmRlcmxpbmVPZmZzZXQubGVuZ3RoT3IoMCk7CisgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQotICAgIGNhc2UgVGV4dFVuZGVybGluZVBvc2l0aW9uOjpBdXRvOgotICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICByZXR1cm4gZm9udE1ldHJpY3MuYXNjZW50KCkgKyBnYXA7CisgICAgcmV0dXJuIDA7
CiB9CiAgICAgCi12b2lkIGdldFdhdnlTdHJva2VQYXJhbWV0ZXJzKGZsb2F0IGZvbnRTaXplLCBm
bG9hdCYgY29udHJvbFBvaW50RGlzdGFuY2UsIGZsb2F0JiBzdGVwKQorV2F2eVN0cm9rZVBhcmFt
ZXRlcnMgZ2V0V2F2eVN0cm9rZVBhcmFtZXRlcnMoZmxvYXQgZm9udFNpemUpCiB7Ci0gICAgLy8g
RGlzdGFuY2UgYmV0d2VlbiBkZWNvcmF0aW9uJ3MgYXhpcyBhbmQgQmV6aWVyIGN1cnZlJ3MgY29u
dHJvbCBwb2ludHMuCi0gICAgLy8gVGhlIGhlaWdodCBvZiB0aGUgY3VydmUgaXMgYmFzZWQgb24g
dGhpcyBkaXN0YW5jZS4gSW5jcmVhc2VzIHRoZSBjdXJ2ZSdzIGhlaWdodAotICAgIC8vIGFzIGZv
bnRTaXplIGluY3JlYXNlcyB0byBtYWtlIHRoZSBjdXJ2ZSBsb29rIGJldHRlci4KLSAgICBjb250
cm9sUG9pbnREaXN0YW5jZSA9IDAuMDkzNzUgKiBmb250U2l6ZTsKLQotICAgIC8vIEluY3JlbWVu
dCB1c2VkIHRvIGZvcm0gdGhlIGRpYW1vbmQgc2hhcGUgYmV0d2VlbiBzdGFydCBwb2ludCAocDEp
LCBjb250cm9sCi0gICAgLy8gcG9pbnRzIGFuZCBlbmQgcG9pbnQgKHAyKSBhbG9uZyB0aGUgYXhp
cyBvZiB0aGUgZGVjb3JhdGlvbi4gVGhlIGN1cnZlIGdldHMKLSAgICAvLyB3aWRlciBhcyBmb250
IHNpemUgaW5jcmVhc2VzLgotICAgIHN0ZXAgPSBmb250U2l6ZSAvIDQuNTsKKyAgICBXYXZ5U3Ry
b2tlUGFyYW1ldGVycyByZXN1bHQ7CisgICAgLy8gTW9yZSBpbmZvcm1hdGlvbiBpcyBpbiB0aGUg
V2F2eVN0cm9rZVBhcmFtZXRlcnMgZGVmaW5pdGlvbi4KKyAgICByZXN1bHQuY29udHJvbFBvaW50
RGlzdGFuY2UgPSBmb250U2l6ZSAqIDEuNSAvIDE2OworICAgIHJlc3VsdC5zdGVwID0gZm9udFNp
emUgLyA0LjU7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIGV4
dGVuZEludFRvRmxvYXQoaW50JiBleHRlbmRNZSwgZmxvYXQgZXh0ZW5kVG8pCkBAIC0xMTAsOSAr
MTE1LDggQEAgR2x5cGhPdmVyZmxvdyB2aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKGNvbnN0
IFJlbmRlclN0eWxlJiBsaW5lU3R5bGUsIGNvbnN0IEkKICAgICBpZiAoZGVjb3JhdGlvbi5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiBHbHlwaE92ZXJmbG93KCk7CiAKLSAgICBmbG9hdCBzdHJv
a2VUaGlja25lc3MgPSB0ZXh0RGVjb3JhdGlvblN0cm9rZVRoaWNrbmVzcyhsaW5lU3R5bGUuY29t
cHV0ZWRGb250UGl4ZWxTaXplKCkpOwotICAgIGZsb2F0IGNvbnRyb2xQb2ludERpc3RhbmNlID0g
MDsKLSAgICBmbG9hdCBzdGVwOworICAgIGZsb2F0IHN0cm9rZVRoaWNrbmVzcyA9IGxpbmVTdHls
ZS50ZXh0RGVjb3JhdGlvblRoaWNrbmVzcygpLnJlc29sdmUobGluZVN0eWxlLmNvbXB1dGVkRm9u
dFNpemUoKSwgbGluZVN0eWxlLmZvbnRNZXRyaWNzKCkpOworICAgIFdhdnlTdHJva2VQYXJhbWV0
ZXJzIHdhdnlTdHJva2VQYXJhbWV0ZXJzIHsgMCwgMCB9OwogICAgIGZsb2F0IHdhdnlPZmZzZXQg
PSAwOwogICAgICAgICAKICAgICBUZXh0RGVjb3JhdGlvblN0eWxlIGRlY29yYXRpb25TdHlsZSA9
IGxpbmVTdHlsZS50ZXh0RGVjb3JhdGlvblN0eWxlKCk7CkBAIC0xMjAsNyArMTI0LDcgQEAgR2x5
cGhPdmVyZmxvdyB2aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKGNvbnN0IFJlbmRlclN0eWxl
JiBsaW5lU3R5bGUsIGNvbnN0IEkKICAgICBHbHlwaE92ZXJmbG93IG92ZXJmbG93UmVzdWx0Owog
ICAgIAogICAgIGlmIChkZWNvcmF0aW9uU3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZTo6V2F2
eSkgewotICAgICAgICBnZXRXYXZ5U3Ryb2tlUGFyYW1ldGVycyhsaW5lU3R5bGUuY29tcHV0ZWRG
b250UGl4ZWxTaXplKCksIGNvbnRyb2xQb2ludERpc3RhbmNlLCBzdGVwKTsKKyAgICAgICAgd2F2
eVN0cm9rZVBhcmFtZXRlcnMgPSBnZXRXYXZ5U3Ryb2tlUGFyYW1ldGVycyhsaW5lU3R5bGUuY29t
cHV0ZWRGb250U2l6ZSgpKTsKICAgICAgICAgd2F2eU9mZnNldCA9IHdhdnlPZmZzZXRGcm9tRGVj
b3JhdGlvbigpOwogICAgICAgICBvdmVyZmxvd1Jlc3VsdC5sZWZ0ID0gc3Ryb2tlVGhpY2tuZXNz
OwogICAgICAgICBvdmVyZmxvd1Jlc3VsdC5yaWdodCA9IHN0cm9rZVRoaWNrbmVzczsKQEAgLTEy
OSwxMSArMTMzLDExIEBAIEdseXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9u
cyhjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlLCBjb25zdCBJCiAgICAgLy8gVGhlc2UgbWV0
cmljcyBtdXN0IG1hdGNoIHdoZXJlIHVuZGVybGluZXMgZ2V0IGRyYXduLgogICAgIGlmIChkZWNv
cmF0aW9uICYgVGV4dERlY29yYXRpb246OlVuZGVybGluZSkgewogICAgICAgICAvLyBDb21wZW5z
YXRlIGZvciB0aGUgaW50ZWdyYWwgY2VpbGluZyBpbiBHcmFwaGljc0NvbnRleHQ6OmNvbXB1dGVM
aW5lQm91bmRzQW5kQW50aWFsaWFzaW5nTW9kZUZvclRleHQoKQotICAgICAgICBpbnQgdW5kZXJs
aW5lT2Zmc2V0ID0gMTsKLSAgICAgICAgdW5kZXJsaW5lT2Zmc2V0ICs9IGNvbXB1dGVVbmRlcmxp
bmVPZmZzZXQobGluZVN0eWxlLnRleHRVbmRlcmxpbmVQb3NpdGlvbigpLCBsaW5lU3R5bGUuZm9u
dE1ldHJpY3MoKSwgaW5saW5lVGV4dEJveCwgc3Ryb2tlVGhpY2tuZXNzKTsKKyAgICAgICAgZmxv
YXQgdW5kZXJsaW5lT2Zmc2V0ID0gMTsKKyAgICAgICAgdW5kZXJsaW5lT2Zmc2V0ICs9IGNvbXB1
dGVVbmRlcmxpbmVHYXAobGluZVN0eWxlLnRleHRVbmRlcmxpbmVQb3NpdGlvbigpLCBsaW5lU3R5
bGUudGV4dFVuZGVybGluZU9mZnNldCgpLCBzdHJva2VUaGlja25lc3MsIGxpbmVTdHlsZS5mb250
TWV0cmljcygpLCBpbmxpbmVUZXh0Qm94KTsKICAgICAgICAgaWYgKGRlY29yYXRpb25TdHlsZSA9
PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpXYXZ5KSB7Ci0gICAgICAgICAgICBleHRlbmRJbnRUb0Zs
b2F0KG92ZXJmbG93UmVzdWx0LmJvdHRvbSwgdW5kZXJsaW5lT2Zmc2V0ICsgd2F2eU9mZnNldCAr
IGNvbnRyb2xQb2ludERpc3RhbmNlICsgc3Ryb2tlVGhpY2tuZXNzIC0gaGVpZ2h0KTsKLSAgICAg
ICAgICAgIGV4dGVuZEludFRvRmxvYXQob3ZlcmZsb3dSZXN1bHQudG9wLCAtKHVuZGVybGluZU9m
ZnNldCArIHdhdnlPZmZzZXQgLSBjb250cm9sUG9pbnREaXN0YW5jZSAtIHN0cm9rZVRoaWNrbmVz
cykpOworICAgICAgICAgICAgZXh0ZW5kSW50VG9GbG9hdChvdmVyZmxvd1Jlc3VsdC5ib3R0b20s
IHVuZGVybGluZU9mZnNldCArIHdhdnlPZmZzZXQgKyB3YXZ5U3Ryb2tlUGFyYW1ldGVycy5jb250
cm9sUG9pbnREaXN0YW5jZSArIHN0cm9rZVRoaWNrbmVzcyAtIGhlaWdodCk7CisgICAgICAgICAg
ICBleHRlbmRJbnRUb0Zsb2F0KG92ZXJmbG93UmVzdWx0LnRvcCwgLSh1bmRlcmxpbmVPZmZzZXQg
KyB3YXZ5T2Zmc2V0IC0gd2F2eVN0cm9rZVBhcmFtZXRlcnMuY29udHJvbFBvaW50RGlzdGFuY2Ug
LSBzdHJva2VUaGlja25lc3MpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGV4dGVu
ZEludFRvRmxvYXQob3ZlcmZsb3dSZXN1bHQuYm90dG9tLCB1bmRlcmxpbmVPZmZzZXQgKyBzdHJv
a2VUaGlja25lc3MgLSBoZWlnaHQpOwogICAgICAgICAgICAgZXh0ZW5kSW50VG9GbG9hdChvdmVy
Zmxvd1Jlc3VsdC50b3AsIC11bmRlcmxpbmVPZmZzZXQpOwpAQCAtMTQxLDggKzE0NSw4IEBAIEds
eXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJTdHls
ZSYgbGluZVN0eWxlLCBjb25zdCBJCiAgICAgfQogICAgIGlmIChkZWNvcmF0aW9uICYgVGV4dERl
Y29yYXRpb246Ok92ZXJsaW5lKSB7CiAgICAgICAgIGlmIChkZWNvcmF0aW9uU3R5bGUgPT0gVGV4
dERlY29yYXRpb25TdHlsZTo6V2F2eSkgewotICAgICAgICAgICAgZXh0ZW5kSW50VG9GbG9hdChv
dmVyZmxvd1Jlc3VsdC5ib3R0b20sIC13YXZ5T2Zmc2V0ICsgY29udHJvbFBvaW50RGlzdGFuY2Ug
KyBzdHJva2VUaGlja25lc3MgLSBoZWlnaHQpOwotICAgICAgICAgICAgZXh0ZW5kSW50VG9GbG9h
dChvdmVyZmxvd1Jlc3VsdC50b3AsIHdhdnlPZmZzZXQgKyBjb250cm9sUG9pbnREaXN0YW5jZSAr
IHN0cm9rZVRoaWNrbmVzcyk7CisgICAgICAgICAgICBleHRlbmRJbnRUb0Zsb2F0KG92ZXJmbG93
UmVzdWx0LmJvdHRvbSwgLXdhdnlPZmZzZXQgKyB3YXZ5U3Ryb2tlUGFyYW1ldGVycy5jb250cm9s
UG9pbnREaXN0YW5jZSArIHN0cm9rZVRoaWNrbmVzcyAtIGhlaWdodCk7CisgICAgICAgICAgICBl
eHRlbmRJbnRUb0Zsb2F0KG92ZXJmbG93UmVzdWx0LnRvcCwgd2F2eU9mZnNldCArIHdhdnlTdHJv
a2VQYXJhbWV0ZXJzLmNvbnRyb2xQb2ludERpc3RhbmNlICsgc3Ryb2tlVGhpY2tuZXNzKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGV4dGVuZEludFRvRmxvYXQob3ZlcmZsb3dSZXN1
bHQuYm90dG9tLCBzdHJva2VUaGlja25lc3MgLSBoZWlnaHQpOwogICAgICAgICAgICAgLy8gdG9w
IGlzIHVudG91Y2hlZApAQCAtMTUxLDggKzE1NSw4IEBAIEdseXBoT3ZlcmZsb3cgdmlzdWFsT3Zl
cmZsb3dGb3JEZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlLCBjb25zdCBJ
CiAgICAgaWYgKGRlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvbjo6TGluZVRocm91Z2gpIHsKICAg
ICAgICAgZmxvYXQgYmFzZWxpbmUgPSBsaW5lU3R5bGUuZm9udE1ldHJpY3MoKS5mbG9hdEFzY2Vu
dCgpOwogICAgICAgICBpZiAoZGVjb3JhdGlvblN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6
OldhdnkpIHsKLSAgICAgICAgICAgIGV4dGVuZEludFRvRmxvYXQob3ZlcmZsb3dSZXN1bHQuYm90
dG9tLCAyICogYmFzZWxpbmUgLyAzICsgY29udHJvbFBvaW50RGlzdGFuY2UgKyBzdHJva2VUaGlj
a25lc3MgLSBoZWlnaHQpOwotICAgICAgICAgICAgZXh0ZW5kSW50VG9GbG9hdChvdmVyZmxvd1Jl
c3VsdC50b3AsIC0oMiAqIGJhc2VsaW5lIC8gMyAtIGNvbnRyb2xQb2ludERpc3RhbmNlIC0gc3Ry
b2tlVGhpY2tuZXNzKSk7CisgICAgICAgICAgICBleHRlbmRJbnRUb0Zsb2F0KG92ZXJmbG93UmVz
dWx0LmJvdHRvbSwgMiAqIGJhc2VsaW5lIC8gMyArIHdhdnlTdHJva2VQYXJhbWV0ZXJzLmNvbnRy
b2xQb2ludERpc3RhbmNlICsgc3Ryb2tlVGhpY2tuZXNzIC0gaGVpZ2h0KTsKKyAgICAgICAgICAg
IGV4dGVuZEludFRvRmxvYXQob3ZlcmZsb3dSZXN1bHQudG9wLCAtKDIgKiBiYXNlbGluZSAvIDMg
LSB3YXZ5U3Ryb2tlUGFyYW1ldGVycy5jb250cm9sUG9pbnREaXN0YW5jZSAtIHN0cm9rZVRoaWNr
bmVzcykpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZXh0ZW5kSW50VG9GbG9hdChv
dmVyZmxvd1Jlc3VsdC5ib3R0b20sIDIgKiBiYXNlbGluZSAvIDMgKyBzdHJva2VUaGlja25lc3Mg
LSBoZWlnaHQpOwogICAgICAgICAgICAgZXh0ZW5kSW50VG9GbG9hdChvdmVyZmxvd1Jlc3VsdC50
b3AsIC0oMiAqIGJhc2VsaW5lIC8gMykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvSW5saW5lVGV4dEJveFN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0
Qm94U3R5bGUuaAppbmRleCBjYzUzMTJhNDg3ZGE4NTE5ZGQ2ZDUwNzA0YTc2MDc3YmE5N2EzZDI2
Li5jZjA2MTBkYmRlNDMwMDMwNDA3YjU4MjkwZDhjNjkxNDFhZWE0ZjczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuaApAQCAtMzMsMTkgKzMzLDI0IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIElubGluZVRleHRCb3g7CiBjbGFzcyBSZW5kZXJTdHlsZTsK
IAotaW5saW5lIGZsb2F0IHRleHREZWNvcmF0aW9uU3Ryb2tlVGhpY2tuZXNzKGZsb2F0IGZvbnRT
aXplKQotewotICAgIGNvbnN0IGZsb2F0IHRleHREZWNvcmF0aW9uQmFzZUZvbnRTaXplID0gMTY7
Ci0gICAgcmV0dXJuIGZvbnRTaXplIC8gdGV4dERlY29yYXRpb25CYXNlRm9udFNpemU7Ci19Ci0K
IGlubGluZSBmbG9hdCB3YXZ5T2Zmc2V0RnJvbURlY29yYXRpb24oKQogewogICAgIHJldHVybiAx
OwogfQogCiBHbHlwaE92ZXJmbG93IHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMoY29uc3Qg
UmVuZGVyU3R5bGUmIGxpbmVTdHlsZSwgY29uc3QgSW5saW5lVGV4dEJveCopOwotdm9pZCBnZXRX
YXZ5U3Ryb2tlUGFyYW1ldGVycyhmbG9hdCBmb250U2l6ZSwgZmxvYXQmIGNvbnRyb2xQb2ludERp
c3RhbmNlLCBmbG9hdCYgc3RlcCk7Ci1pbnQgY29tcHV0ZVVuZGVybGluZU9mZnNldChPcHRpb25T
ZXQ8VGV4dFVuZGVybGluZVBvc2l0aW9uPiwgY29uc3QgRm9udE1ldHJpY3MmLCBjb25zdCBJbmxp
bmVUZXh0Qm94KiwgaW50IHRleHREZWNvcmF0aW9uVGhpY2tuZXNzKTsKK3N0cnVjdCBXYXZ5U3Ry
b2tlUGFyYW1ldGVycyB7CisgICAgLy8gRGlzdGFuY2UgYmV0d2VlbiBkZWNvcmF0aW9uJ3MgYXhp
cyBhbmQgQmV6aWVyIGN1cnZlJ3MgY29udHJvbCBwb2ludHMuCisgICAgLy8gVGhlIGhlaWdodCBv
ZiB0aGUgY3VydmUgaXMgYmFzZWQgb24gdGhpcyBkaXN0YW5jZS4gSW5jcmVhc2VzIHRoZSBjdXJ2
ZSdzIGhlaWdodAorICAgIC8vIGFzIGZvbnRTaXplIGluY3JlYXNlcyB0byBtYWtlIHRoZSBjdXJ2
ZSBsb29rIGJldHRlci4KKyAgICBmbG9hdCBjb250cm9sUG9pbnREaXN0YW5jZTsKKworICAgIC8v
IEluY3JlbWVudCB1c2VkIHRvIGZvcm0gdGhlIGRpYW1vbmQgc2hhcGUgYmV0d2VlbiBzdGFydCBw
b2ludCAocDEpLCBjb250cm9sCisgICAgLy8gcG9pbnRzIGFuZCBlbmQgcG9pbnQgKHAyKSBhbG9u
ZyB0aGUgYXhpcyBvZiB0aGUgZGVjb3JhdGlvbi4gVGhlIGN1cnZlIGdldHMKKyAgICAvLyB3aWRl
ciBhcyBmb250IHNpemUgaW5jcmVhc2VzLgorICAgIGZsb2F0IHN0ZXA7Cit9OworV2F2eVN0cm9r
ZVBhcmFtZXRlcnMgZ2V0V2F2eVN0cm9rZVBhcmFtZXRlcnMoZmxvYXQgZm9udFNpemUpOworZmxv
YXQgY29tcHV0ZVVuZGVybGluZUdhcChUZXh0VW5kZXJsaW5lUG9zaXRpb24sIFRleHRVbmRlcmxp
bmVPZmZzZXQsIGZsb2F0IHRleHREZWNvcmF0aW9uVGhpY2tuZXNzLCBjb25zdCBGb250TWV0cmlj
cyYsIGNvbnN0IElubGluZVRleHRCb3gqKTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzMy10ZXh0L2NzczMtdGV4dC1kZWNvcmF0
aW9uL3RleHQtZGVjb3JhdGlvbi1vZmZzZXQtcGFyc2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9jc3MzLXRleHQvY3NzMy10ZXh0LWRlY29yYXRpb24vdGV4dC1kZWNvcmF0aW9uLW9m
ZnNldC1wYXJzZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjMwYzQyOGVjYzM5NDUwYTU1Mjk2
N2ZlNjA0ZWViYzBhNjBjOWE5NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzMy10ZXh0L2NzczMtdGV4dC1kZWNvcmF0aW9uL3RleHQtZGVjb3JhdGlvbi1vZmZzZXQtcGFy
c2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1BBU1Mgd2luZG93LmdldENvbXB1dGVk
U3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QxJykpLmdldFByb3BlcnR5VmFsdWUo
J3RleHQtdW5kZXJsaW5lLW9mZnNldCcpIGlzICJhdXRvIgorUEFTUyB3aW5kb3cuZ2V0Q29tcHV0
ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdDInKSkuZ2V0UHJvcGVydHlWYWx1
ZSgndGV4dC11bmRlcmxpbmUtb2Zmc2V0JykgaXMgImF1dG8iCitQQVNTIHdpbmRvdy5nZXRDb21w
dXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0MycpKS5nZXRQcm9wZXJ0eVZh
bHVlKCd0ZXh0LXVuZGVybGluZS1vZmZzZXQnKSBpcyAiYXV0byIKK1BBU1Mgd2luZG93LmdldENv
bXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3Q0JykpLmdldFByb3BlcnR5
VmFsdWUoJ3RleHQtdW5kZXJsaW5lLW9mZnNldCcpIGlzICJhdXRvIgorUEFTUyB3aW5kb3cuZ2V0
Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdDUnKSkuZ2V0UHJvcGVy
dHlWYWx1ZSgndGV4dC11bmRlcmxpbmUtb2Zmc2V0JykgaXMgIjM3cHgiCitQQVNTIHdpbmRvdy5n
ZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0NicpKS5nZXRQcm9w
ZXJ0eVZhbHVlKCd0ZXh0LXVuZGVybGluZS1vZmZzZXQnKSBpcyAiMjAwcHgiCitQQVNTIHdpbmRv
dy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0NycpKS5nZXRQ
cm9wZXJ0eVZhbHVlKCd0ZXh0LXVuZGVybGluZS1vZmZzZXQnKSBpcyAiNDBweCIKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2NzczMtdGV4dC9jc3MzLXRleHQtZGVjb3JhdGlvbi90ZXh0LWRlY29y
YXRpb24tb2Zmc2V0LXBhcnNlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2NzczMtdGV4dC9jc3Mz
LXRleHQtZGVjb3JhdGlvbi90ZXh0LWRlY29yYXRpb24tb2Zmc2V0LXBhcnNlLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNWZmNTIzNjBkZmY2ZDYxOWZjNjIyNWFhZjY4ZDI3OTEyZjliNTAwYgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzMy10ZXh0L2NzczMtdGV4dC1kZWNvcmF0aW9u
L3RleHQtZGVjb3JhdGlvbi1vZmZzZXQtcGFyc2UuaHRtbApAQCAtMCwwICsxLDI1IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
dGVzdDEiPjwvZGl2PgorPGRpdiBpZD0idGVzdDIiIHN0eWxlPSJ0ZXh0LXVuZGVybGluZS1vZmZz
ZXQ6IGF1dG87Ij48L2Rpdj4KKzxkaXYgaWQ9InRlc3QzIiBzdHlsZT0idGV4dC11bmRlcmxpbmUt
b2Zmc2V0OiBhdXRvIDM3cHg7Ij48L2Rpdj4KKzxkaXYgaWQ9InRlc3Q0IiBzdHlsZT0idGV4dC11
bmRlcmxpbmUtb2Zmc2V0OiBnYXJiYWdlOyI+PC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0NSIgc3R5bGU9
InRleHQtdW5kZXJsaW5lLW9mZnNldDogMzdweDsiPjwvZGl2PgorPGRpdiBpZD0idGVzdDYiIHN0
eWxlPSJmb250LXNpemU6IDEwMHB4OyB0ZXh0LXVuZGVybGluZS1vZmZzZXQ6IDJlbTsiPjwvZGl2
PgorPGRpdiBzdHlsZT0iZm9udC1zaXplOiAyMHB4OyB0ZXh0LXVuZGVybGluZS1vZmZzZXQ6IDJl
bTsiPjxkaXYgaWQ9InRlc3Q3IiBzdHlsZT0iZm9udC1zaXplOiAxMDBweDsiPjwvZGl2PjwvZGl2
PgorPHNjcmlwdD4KK3Nob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldENvbXB1dGVkU3R5
bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QxJykpLmdldFByb3BlcnR5VmFsdWUoJ3Rl
eHQtdW5kZXJsaW5lLW9mZnNldCcpIiwgImF1dG8iKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygi
d2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QyJykp
LmdldFByb3BlcnR5VmFsdWUoJ3RleHQtdW5kZXJsaW5lLW9mZnNldCcpIiwgImF1dG8iKTsKK3No
b3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3Rlc3QzJykpLmdldFByb3BlcnR5VmFsdWUoJ3RleHQtdW5kZXJsaW5lLW9m
ZnNldCcpIiwgImF1dG8iKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldENvbXB1
dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3Q0JykpLmdldFByb3BlcnR5VmFs
dWUoJ3RleHQtdW5kZXJsaW5lLW9mZnNldCcpIiwgImF1dG8iKTsKK3Nob3VsZEJlRXF1YWxUb1N0
cmluZygid2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rl
c3Q1JykpLmdldFByb3BlcnR5VmFsdWUoJ3RleHQtdW5kZXJsaW5lLW9mZnNldCcpIiwgIjM3cHgi
KTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3Q2JykpLmdldFByb3BlcnR5VmFsdWUoJ3RleHQtdW5kZXJs
aW5lLW9mZnNldCcpIiwgIjIwMHB4Iik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5n
ZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0NycpKS5nZXRQcm9w
ZXJ0eVZhbHVlKCd0ZXh0LXVuZGVybGluZS1vZmZzZXQnKSIsICI0MHB4Iik7Cis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353579</attachid>
            <date>2018-10-31 20:50:29 -0700</date>
            <delta_ts>2018-11-06 01:21:06 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-190774-20181031205028.patch</filename>
            <type>text/plain</type>
            <size>128271</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3MzA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2U4Y2M4YjIzZmQ2ODA4
Mzk1NjhkNzgxNTMwZjQ5Nzk2ODlkZGQ4Mi4uYTdmMWQ1NGU0ODYxYzkzY2NkY2Q4NmFmNjdiNzAy
OTE1ZGRiYTYyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE4LTEwLTIwICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
IHRleHQtZGVjb3JhdGlvbi1vZmZzZXQgYW5kIHRleHQtZGVjb3JhdGlvbi13aWR0aAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNzc0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChP
T1BTISkuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNs
YXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0ZXh0RGVjb3JhdGlvbk9mZnNldFRvQ1NT
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6dGV4dERlY29yYXRpb25UaGlja25lc3NUb0NTU1Zh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9y
UHJvcGVydHlpblN0eWxlKToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydGllcy5qc29uOgorICAg
ICAgICAqIGNzcy9DU1NWYWx1ZUtleXdvcmRzLmluOgorICAgICAgICAqIGNzcy9TdHlsZUJ1aWxk
ZXJDb252ZXJ0ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVpbGRlckNvbnZlcnRlcjo6
Y29udmVydFRleHREZWNvcmF0aW9uT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydFRleHREZWNvcmF0aW9uVGhpY2tuZXNzKToKKyAgICAgICAg
KiBjc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNv
bnN1bWVUZXh0RGVjb3JhdGlvbk9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpjb25zdW1lVGV4
dERlY29yYXRpb25UaGlja25lc3MpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHlQYXJz
ZXI6OnBhcnNlU2luZ2xlVmFsdWUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnRleHREZWNvcmF0aW9uT2Zm
c2V0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjp0ZXh0RGVjb3JhdGlv
blRoaWNrbmVzcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0VGV4
dERlY29yYXRpb25PZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldFRl
eHREZWNvcmF0aW9uVGhpY2tuZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpp
bml0aWFsVGV4dERlY29yYXRpb25PZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OmluaXRpYWxUZXh0RGVjb3JhdGlvblRoaWNrbmVzcyk6CisgICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVSYXJlSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVJhcmVJbmhlcml0ZWREYXRhOjpvcGVyYXRvcj09IGNvbnN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9UZXh0RGVjb3JhdGlvbk9mZnNldC5jcHA6IEFkZGVkLgorICAgICAg
ICAqIHJlbmRlcmluZy9zdHlsZS9UZXh0RGVjb3JhdGlvbk9mZnNldC5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlRleHREZWNvcmF0aW9uT2Zmc2V0OjpjcmVhdGVXaXRoQXV0byk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvbk9mZnNldDo6Y3JlYXRlRnJvbUZvbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dERlY29yYXRpb25PZmZzZXQ6OmNyZWF0ZVdpdGhMZW5ndGgpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dERlY29yYXRpb25PZmZzZXQ6OmlzQXV0byBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvbk9mZnNldDo6aXNGcm9tRm9udCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvbk9mZnNldDo6aXNMZW5ndGggY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dERlY29yYXRpb25PZmZzZXQ6OnNldExlbmd0aFZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHREZWNvcmF0aW9uT2Zmc2V0OjpsZW5ndGhWYWx1ZSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvbk9mZnNldDo6b3BlcmF0b3I9
PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvbk9mZnNldDo6b3BlcmF0
b3IhPSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvbk9mZnNldDo6VGV4
dERlY29yYXRpb25PZmZzZXQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9UZXh0RGVjb3Jh
dGlvblRoaWNrbmVzcy5jcHA6IEFkZGVkLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9UZXh0
RGVjb3JhdGlvblRoaWNrbmVzcy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHREZWNv
cmF0aW9uVGhpY2tuZXNzOjpjcmVhdGVXaXRoQXV0byk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
RGVjb3JhdGlvblRoaWNrbmVzczo6Y3JlYXRlRnJvbUZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dERlY29yYXRpb25UaGlja25lc3M6OmNyZWF0ZVdpdGhMZW5ndGgpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dERlY29yYXRpb25UaGlja25lc3M6OmlzQXV0byBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0RGVjb3JhdGlvblRoaWNrbmVzczo6aXNGcm9tRm9udCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvblRoaWNrbmVzczo6aXNMZW5ndGggY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dERlY29yYXRpb25UaGlja25lc3M6OnNldExlbmd0aFZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHREZWNvcmF0aW9uVGhpY2tuZXNzOjpsZW5ndGhWYWx1
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvblRoaWNrbmVzczo6b3Bl
cmF0b3I9PSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvblRoaWNrbmVz
czo6b3BlcmF0b3IhPSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0RGVjb3JhdGlvblRo
aWNrbmVzczo6VGV4dERlY29yYXRpb25UaGlja25lc3MpOgorCiAyMDE4LTEwLTE5ICBKdXN0aW4g
RmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkdQVV0gQWRkIHN0dWJz
IGZvciBXZWJHUFVTd2FwQ2hhaW4gYW5kIFdlYkdQVVJlbmRlcmluZ0NvbnRleHQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5o
CmluZGV4IDk2OGMxN2MyOGNmMjZlZjU5ODVhNGQzOThmNzdlNWVhMThlY2M1M2MuLmY3ZWIwNzg5
OTIzMjA0MTcwYmI0NTZlMTgwN2E4MTE1Zjg3M2QyNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApAQCAtMTI1OCwx
MSArMTI1OCw2IEBACiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShXUEUpCiAjdW5kZWYg
RU5BQkxFX09QRU5UWVBFX1ZFUlRJQ0FMCiAjZGVmaW5lIEVOQUJMRV9PUEVOVFlQRV9WRVJUSUNB
TCAxCi0jZGVmaW5lIEVOQUJMRV9DU1MzX1RFWFRfREVDT1JBVElPTl9TS0lQX0lOSyAxCi0jZW5k
aWYKLQotI2lmIFBMQVRGT1JNKENPQ09BKQotI2RlZmluZSBFTkFCTEVfQ1NTM19URVhUX0RFQ09S
QVRJT05fU0tJUF9JTksgMQogI2VuZGlmCiAKICNpZiBDT01QSUxFUihNU1ZDKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQ2NTAx
ZWI4NjhiMjU5NGJiNTk3MTExODczYmJhMjkwZDBkYTI5NzkuLmNjZjgxZjIxZTA3N2NmZmQxMjJm
Y2ZhYjM4NDNkNGU3YTMwZjA2ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTYzMSw2ICs2MzEsOCBAQAogCQkxQzI0RUVBNTFD
NzI5Q0U0MDA4MEY4RkMgLyogRm9udEZhY2VTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDMjRFRUEzMUM3MjlDRTQwMDgwRjhGQyAvKiBGb250RmFj
ZVNldC5oICovOyB9OwogCQkxQzI0RUVBOTFDNzJBN0I0MDA4MEY4RkMgLyogSlNGb250RmFjZVNl
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUMyNEVF
QTcxQzcyQTdCNDAwODBGOEZDIC8qIEpTRm9udEZhY2VTZXQuaCAqLzsgfTsKIAkJMUM2NjI2MTEx
QzZFN0NBNjAwQUI1MjdDIC8qIEZvbnRGYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQzY2MjYwRjFDNkU3Q0E2MDBBQjUyN0MgLyogRm9udEZhY2Uu
aCAqLzsgfTsKKwkJMUM3M0E3MTMyMTg1NzU3RTAwNENDRUE1IC8qIFRleHRVbmRlcmxpbmVPZmZz
ZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQjZC
NEZCMjE3QjgzOTQwMDkzQjlDRCAvKiBUZXh0VW5kZXJsaW5lT2Zmc2V0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMUM3M0E3MTUyMTg1NzU4NzAw
NENDRUE1IC8qIFRleHREZWNvcmF0aW9uVGhpY2tuZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQ0I2QjRGODIxN0I4MzkzMDA5M0I5Q0QgLyogVGV4
dERlY29yYXRpb25UaGlja25lc3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkxQzgxQjk1QTBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ29u
dHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MUM4MUI5NTYwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNvbnRyb2xsZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQzgxQjk1QzBFOTcz
MzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQzgxQjk1ODBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVj
dG9yQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMUNBMTlFMTYwREMyNTVDQTAwNjVBOTk0IC8qIEV2ZW50TG9vcC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBMTlFMTUwREMyNTVDQTAwNjVB
OTk0IC8qIEV2ZW50TG9vcC5oICovOyB9OwpAQCAtNjM3Nyw2ICs2Mzc5LDggQEAKIAkJMUNBRjM0
N0UwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJTY3JpcHRPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUNBRjM0N0YwQTZDNDA1MjAwQUJFMDZFIC8qIFdlYlNjcmlwdE9iamVjdC5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlNjcmlwdE9iamVjdC5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNBRjM0ODAwQTZDNDA1MjAwQUJFMDZF
IC8qIFdlYlNjcmlwdE9iamVjdFByaXZhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxQ0I2QjRGODIxN0I4MzkzMDA5M0I5Q0QgLyogVGV4dERlY29yYXRpb25UaGlja25lc3Mu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVGV4dERlY29yYXRpb25UaGlja25lc3MuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMUNCNkI0RkIyMTdCODM5NDAwOTNCOUNEIC8qIFRleHRVbmRlcmxp
bmVPZmZzZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4dFVuZGVybGluZU9mZnNldC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0NERjVCQjE5OTAzMzI0MDBCQ0VCQUQgLyogU1ZHVG9P
VEZGb250Q29udmVyc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTVkdUb09URkZvbnRDb252ZXJzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMUNDREY1QkMxOTkwMzMyNDAwQkNFQkFEIC8qIFNWR1RvT1RGRm9udENvbnZlcnNpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHVG9PVEZGb250Q29udmVyc2lvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0RENDVFNDBCQTlDODQ2MDBGOTAxNDcg
LyogRGVidWdSZWxlYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9
IERlYnVnUmVsZWFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE5
ODE5LDkgKzE5ODIzLDcgQEAKIAkJCQlFNDIwNTAxNjIxNDE5MDFCMDA2NkVGM0IgLyogUHJvY2Vz
c1dhcm1pbmcuY3BwICovLAogCQkJCUU0MjA1MDE0MjE0MTkwMUEwMDY2RUYzQiAvKiBQcm9jZXNz
V2FybWluZy5oICovLAogCQkJCUNEOUE4N0Y5MjE1RDZDRjMwMDZGMTdCNSAvKiBRdWlya3MuY3Bw
ICovLAotCQkJCUNEOUE4N0YyMjE1RDQzQTYwMDZGMTdCNSAvKiBRdWlya3MuY3BwICovLAogCQkJ
CUNEOUE4N0ZCMjE1RDZDRjMwMDZGMTdCNSAvKiBRdWlya3MuaCAqLywKLQkJCQlDRDlBODdGMTIx
NUQ0M0E2MDA2RjE3QjUgLyogUXVpcmtzLmggKi8sCiAJCQkJNDZCOTUxOEQyMDdENjMyQTAwQTdE
MkREIC8qIFJlbW90ZURPTVdpbmRvdy5jcHAgKi8sCiAJCQkJNDZCOTUxOEUyMDdENjMyQTAwQTdE
MkREIC8qIFJlbW90ZURPTVdpbmRvdy5oICovLAogCQkJCTQ2QkNCQkMzMjA4NTAwQTcwMDcxMDYz
OCAvKiBSZW1vdGVET01XaW5kb3cuaWRsICovLApAQCAtMjQ1MzcsNyArMjQ1MzksOSBAQAogCQkJ
CUJDMjI3NDc1MEU4MzY2RTIwMEU3Rjk3NSAvKiBTVkdSZW5kZXJTdHlsZS5oICovLAogCQkJCUJD
MjI3NDc2MEU4MzY2RTIwMEU3Rjk3NSAvKiBTVkdSZW5kZXJTdHlsZURlZnMuY3BwICovLAogCQkJ
CUJDMjI3NDc3MEU4MzY2RTIwMEU3Rjk3NSAvKiBTVkdSZW5kZXJTdHlsZURlZnMuaCAqLywKKwkJ
CQkxQ0I2QjRGODIxN0I4MzkzMDA5M0I5Q0QgLyogVGV4dERlY29yYXRpb25UaGlja25lc3MuaCAq
LywKIAkJCQk0NDhCMUI3ODBGM0EyRjlCMDA0N0E5RTIgLyogVGV4dFNpemVBZGp1c3RtZW50Lmgg
Ki8sCisJCQkJMUNCNkI0RkIyMTdCODM5NDAwOTNCOUNEIC8qIFRleHRVbmRlcmxpbmVPZmZzZXQu
aCAqLywKIAkJCQkwRjE1RUQ1OTFCN0VDN0M1MDBFRERGRUIgLyogV2lsbENoYW5nZURhdGEuY3Bw
ICovLAogCQkJCTBGMTVFRDVBMUI3RUM3QzUwMEVEREZFQiAvKiBXaWxsQ2hhbmdlRGF0YS5oICov
LAogCQkJKTsKQEAgLTMxMTgxLDYgKzMxMTg1LDcgQEAKIAkJCQk5MzQzQ0I4MjEyRjI1RTUxMDAz
M0M1RUUgLyogVGV4dENvZGVjVVRGOC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQyQjk3Q0ExMzEz
ODk0MzAwOEJFRjRCIC8qIFRleHRDb250cm9sSW5uZXJFbGVtZW50cy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTgyREUzMjUxQzMwQzg1NDAwQkUwMkE4IC8qIFRleHREZWNvcmF0aW9uUGFpbnRlci5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMUM3M0E3MTUyMTg1NzU4NzAwNENDRUE1IC8qIFRleHREZWNv
cmF0aW9uVGhpY2tuZXNzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0JDODRCNDEyMzcxMTgwMDAw
QzYxNjEgLyogVGV4dERvY3VtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0JDODQ4NDEyMzZG
RDkzMDAwQzYxNjEgLyogVGV4dERvY3VtZW50UGFyc2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
MkMzREE0NzBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dEVuY29kaW5nLmggaW4gSGVhZGVycyAqLywK
QEAgLTMxMjExLDYgKzMxMjE2LDcgQEAKIAkJCQkwNzY5NzA4NzE0NjNBRDg3MDBGNTAyQ0YgLyog
VGV4dFRyYWNrTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjFBRDRFNzQxM0ExMkE0NjAwODQ2
QjI3IC8qIFRleHRUcmFja0xvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q4QjVBNDkxODBF
MTM4QjAwOEI4RTY1IC8qIFRleHRUcmFja01lZGlhU291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkxQzczQTcxMzIxODU3NTdFMDA0Q0NFQTUgLyogVGV4dFVuZGVybGluZU9mZnNldC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMjlGQUY0QjYxOTVBQjA4OTAwQTUyMkRDIC8qIFRleHRVbmRvSW5zZXJ0
aW9uTWFya3VwTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQk0OTg3NzBGMTEyNDJDNTM1MDAyMjI2
QkEgLyogVGV4dHVyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0Q5RDgyNzYxQzdBRTUzNTAwNkZG
MDY2IC8qIFRleHR1cmVDYWNoZUNWLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggYzc3NjQ4ZWUx
ZDgzNDlmYjM2YjEwNzE1NDVjMzgxZmE3MzI3MDljOC4uN2UxMTNlNTFmMzdmOGRjNmQ4NTcyMGRj
Njk5NzAxYzI0OGU3MjQxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTIxNSw3ICsyMTUsNyBAQCBzdGF0aWMgY29uc3Qg
Q1NTUHJvcGVydHlJRCBjb21wdXRlZFByb3BlcnRpZXNbXSA9IHsKICAgICBDU1NQcm9wZXJ0eVdl
YmtpdFRleHREZWNvcmF0aW9uU3R5bGUsCiAgICAgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3Jh
dGlvbkNvbG9yLAogICAgIENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25Ta2lwLAotICAg
IENTU1Byb3BlcnR5V2Via2l0VGV4dFVuZGVybGluZVBvc2l0aW9uLAorICAgIENTU1Byb3BlcnR5
VGV4dFVuZGVybGluZVBvc2l0aW9uLAogICAgIENTU1Byb3BlcnR5VGV4dEluZGVudCwKICAgICBD
U1NQcm9wZXJ0eVRleHRSZW5kZXJpbmcsCiAgICAgQ1NTUHJvcGVydHlUZXh0U2hhZG93LApAQCAt
MTgwMiw2ICsxODAyLDI0IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IHJlbmRlclRleHREZWNvcmF0
aW9uU2tpcEZsYWdzVG9DU1NWYWx1ZShPcHRpb25TZXQ8VGV4dERlY29yCiAgICAgcmV0dXJuIENT
U1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlRXhwbGljaXRJbml0aWFsVmFsdWUoKTsKIH0K
IAorc3RhdGljIFJlZjxDU1NWYWx1ZT4gdGV4dFVuZGVybGluZU9mZnNldFRvQ1NTVmFsdWUoY29u
c3QgVGV4dFVuZGVybGluZU9mZnNldCYgdGV4dFVuZGVybGluZU9mZnNldCkKK3sKKyAgICBpZiAo
dGV4dFVuZGVybGluZU9mZnNldC5pc0F1dG8oKSkKKyAgICAgICAgcmV0dXJuIENTU1ZhbHVlUG9v
bDo6c2luZ2xldG9uKCkuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlQXV0byk7CisgICAg
QVNTRVJUKHRleHRVbmRlcmxpbmVPZmZzZXQuaXNMZW5ndGgoKSk7CisgICAgcmV0dXJuIENTU1Zh
bHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUodGV4dFVuZGVybGluZU9mZnNldC5sZW5n
dGhWYWx1ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKK30KKworc3RhdGljIFJlZjxD
U1NWYWx1ZT4gdGV4dERlY29yYXRpb25UaGlja25lc3NUb0NTU1ZhbHVlKGNvbnN0IFRleHREZWNv
cmF0aW9uVGhpY2tuZXNzJiB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcykKK3sKKyAgICBpZiAodGV4
dERlY29yYXRpb25UaGlja25lc3MuaXNBdXRvKCkpCisgICAgICAgIHJldHVybiBDU1NWYWx1ZVBv
b2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZUF1dG8pOworICAg
IGlmICh0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcy5pc0Zyb21Gb250KCkpCisgICAgICAgIHJldHVy
biBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1
ZUZyb21Gb250KTsKKyAgICBBU1NFUlQodGV4dERlY29yYXRpb25UaGlja25lc3MuaXNMZW5ndGgo
KSk7CisgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUodGV4
dERlY29yYXRpb25UaGlja25lc3MubGVuZ3RoVmFsdWUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19QWCk7Cit9CisKIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IHJlbmRlckVtcGhhc2lzUG9zaXRpb25G
bGFnc1RvQ1NTVmFsdWUoT3B0aW9uU2V0PFRleHRFbXBoYXNpc1Bvc2l0aW9uPiB0ZXh0RW1waGFz
aXNQb3NpdGlvbikKIHsKICAgICBBU1NFUlQoISgodGV4dEVtcGhhc2lzUG9zaXRpb24gJiBUZXh0
RW1waGFzaXNQb3NpdGlvbjo6T3ZlcikgJiYgKHRleHRFbXBoYXNpc1Bvc2l0aW9uICYgVGV4dEVt
cGhhc2lzUG9zaXRpb246OlVuZGVyKSkpOwpAQCAtMzMyOSw4ICszMzQ3LDEyIEBAIFJlZlB0cjxD
U1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JQcm9wZXJ0eWluU3R5bGUo
Y29uc3QgUmVuZGVyU3R5CiAgICAgICAgICAgICByZXR1cm4gY3VycmVudENvbG9yT3JWYWxpZENv
bG9yKCZzdHlsZSwgc3R5bGUudGV4dERlY29yYXRpb25Db2xvcigpKTsKICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uU2tpcDoKICAgICAgICAgICAgIHJldHVybiBy
ZW5kZXJUZXh0RGVjb3JhdGlvblNraXBGbGFnc1RvQ1NTVmFsdWUoc3R5bGUudGV4dERlY29yYXRp
b25Ta2lwKCkpOwotICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFVuZGVybGluZVBv
c2l0aW9uOgorICAgICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFVuZGVybGluZVBvc2l0aW9uOgog
ICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShzdHlsZS50ZXh0VW5k
ZXJsaW5lUG9zaXRpb24oKSk7CisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5l
T2Zmc2V0OgorICAgICAgICAgICAgcmV0dXJuIHRleHRVbmRlcmxpbmVPZmZzZXRUb0NTU1ZhbHVl
KHN0eWxlLnRleHRVbmRlcmxpbmVPZmZzZXQoKSk7CisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlU
ZXh0RGVjb3JhdGlvblRoaWNrbmVzczoKKyAgICAgICAgICAgIHJldHVybiB0ZXh0RGVjb3JhdGlv
blRoaWNrbmVzc1RvQ1NTVmFsdWUoc3R5bGUudGV4dERlY29yYXRpb25UaGlja25lc3MoKSk7CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdDoKICAg
ICAgICAgICAgIHJldHVybiByZW5kZXJUZXh0RGVjb3JhdGlvbkZsYWdzVG9DU1NWYWx1ZShzdHls
ZS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFRleHRGaWxsQ29sb3I6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJp
bWl0aXZlVmFsdWVNYXBwaW5ncy5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlTWFwcGluZ3MuaAppbmRleCA3ODc1ZmRhN2UwZDEzOGFiOWQxZWViZTIyNzBiZDgwMTNiY2E3
Njc3Li5jOTVmZjY1YTgzNWJhNzY0M2VkYjhkMmJiMjVkMTZmMTZiYzYyMTE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgKQEAgLTI2MzYsNDIg
KzI2MzYsNDEgQEAgdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6Om9wZXJhdG9y
IFRleHREZWNvcmF0aW9uU3R5bGUoKSBjb25zdAogICAgIHJldHVybiBUZXh0RGVjb3JhdGlvblN0
eWxlOjpTb2xpZDsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U1ByaW1pdGl2ZVZhbHVlKE9wdGlvblNldDxUZXh0VW5kZXJsaW5lUG9zaXRpb24+IGUpCit0ZW1w
bGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoVGV4dFVu
ZGVybGluZVBvc2l0aW9uIHBvc2l0aW9uKQogICAgIDogQ1NTVmFsdWUoUHJpbWl0aXZlQ2xhc3Mp
CiB7CiAgICAgbV9wcmltaXRpdmVVbml0VHlwZSA9IENTU19WQUxVRV9JRDsKLSAgICBzd2l0Y2gg
KHN0YXRpY19jYXN0PFRleHRVbmRlcmxpbmVQb3NpdGlvbj4oZS50b1JhdygpKSkgeworICAgIHN3
aXRjaCAocG9zaXRpb24pIHsKICAgICBjYXNlIFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6QXV0bzoK
ICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVBdXRvOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6QWxwaGFiZXRpYzoKLSAgICAgICAgbV92
YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVBbHBoYWJldGljOwotICAgICAgICBicmVhazsKICAgICBj
YXNlIFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6VW5kZXI6CiAgICAgICAgIG1fdmFsdWUudmFsdWVJ
RCA9IENTU1ZhbHVlVW5kZXI7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgVGV4dFVuZGVybGlu
ZVBvc2l0aW9uOjpGcm9tRm9udDoKKyAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVG
cm9tRm9udDsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IEltcGxlbWVu
dCBzdXBwb3J0IGZvciAndW5kZXIgbGVmdCcgYW5kICd1bmRlciByaWdodCcgdmFsdWVzLgogfQog
Ci10ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlcmF0b3IgT3B0aW9uU2V0
PFRleHRVbmRlcmxpbmVQb3NpdGlvbj4oKSBjb25zdAordGVtcGxhdGU8PiBpbmxpbmUgQ1NTUHJp
bWl0aXZlVmFsdWU6Om9wZXJhdG9yIFRleHRVbmRlcmxpbmVQb3NpdGlvbigpIGNvbnN0CiB7CiAg
ICAgQVNTRVJUKGlzVmFsdWVJRCgpKTsKIAogICAgIHN3aXRjaCAobV92YWx1ZS52YWx1ZUlEKSB7
CiAgICAgY2FzZSBDU1NWYWx1ZUF1dG86CiAgICAgICAgIHJldHVybiBUZXh0VW5kZXJsaW5lUG9z
aXRpb246OkF1dG87Ci0gICAgY2FzZSBDU1NWYWx1ZUFscGhhYmV0aWM6Ci0gICAgICAgIHJldHVy
biBUZXh0VW5kZXJsaW5lUG9zaXRpb246OkFscGhhYmV0aWM7CiAgICAgY2FzZSBDU1NWYWx1ZVVu
ZGVyOgogICAgICAgICByZXR1cm4gVGV4dFVuZGVybGluZVBvc2l0aW9uOjpVbmRlcjsKKyAgICBj
YXNlIENTU1ZhbHVlRnJvbUZvbnQ6CisgICAgICAgIHJldHVybiBUZXh0VW5kZXJsaW5lUG9zaXRp
b246OkZyb21Gb250OwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQgc3VwcG9ydCBmb3IgJ3VuZGVyIGxlZnQnIGFuZCAndW5kZXIg
cmlnaHQnIHZhbHVlcy4KLQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBU
ZXh0VW5kZXJsaW5lUG9zaXRpb246OkF1dG87CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUHJvcGVydGllcy5qc29uIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnRp
ZXMuanNvbgppbmRleCBiYzZiNTc4YjhkZTBjNDUyMGY4YTkzNTk1NzUxNTBhOTBmNzVkZTVlLi42
NTY1MTBjMmEyYTgxNjA5N2Y3M2RlMTBjYTNiYjc3ZDc3MzA4Mjc5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydGllcy5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcm9wZXJ0aWVzLmpzb24KQEAgLTU5MjYsMTcgKzU5MjYsNDAgQEAKICAgICAgICAgICAg
ICAgICAidXJsIjogImh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtdGV4dC1kZWNvci0zLyN0ZXh0
LWRlY29yYXRpb24tc2tpcCIKICAgICAgICAgICAgIH0KICAgICAgICAgfSwKLSAgICAgICAgIi13
ZWJraXQtdGV4dC11bmRlcmxpbmUtcG9zaXRpb24iOiB7CisgICAgICAgICJ0ZXh0LXVuZGVybGlu
ZS1wb3NpdGlvbiI6IHsKKyAgICAgICAgICAgICJpbmhlcml0ZWQiOiB0cnVlLAorICAgICAgICAg
ICAgInN0YXR1cyI6IHsKKyAgICAgICAgICAgICAgICAic3RhdHVzIjogImV4cGVyaW1lbnRhbCIK
KyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAic3BlY2lmaWNhdGlvbiI6IHsKKyAgICAgICAg
ICAgICAgICAiY2F0ZWdvcnkiOiAiY3NzLXRleHQtZGVjb3IiLAorICAgICAgICAgICAgICAgICJ1
cmwiOiAiaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy10ZXh0LWRlY29yLTMvI3RleHQtdW5kZXJs
aW5lLXBvc2l0aW9uLXByb3BlcnR5IgorICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAg
ICAidGV4dC11bmRlcmxpbmUtb2Zmc2V0IjogeworICAgICAgICAgICAgImluaGVyaXRlZCI6IHRy
dWUsCisgICAgICAgICAgICAiY29kZWdlbi1wcm9wZXJ0aWVzIjogeworICAgICAgICAgICAgICAg
ICJjb252ZXJ0ZXIiOiAiVGV4dFVuZGVybGluZU9mZnNldCIKKyAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICAic3RhdHVzIjogeworICAgICAgICAgICAgICAgICJzdGF0dXMiOiAiZXhwZXJpbWVu
dGFsIgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzcGVjaWZpY2F0aW9uIjogeworICAg
ICAgICAgICAgICAgICJjYXRlZ29yeSI6ICJjc3MtdGV4dC1kZWNvciIsCisgICAgICAgICAgICAg
ICAgInVybCI6ICJodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXRleHQtZGVjb3ItNC8jdW5kZXJs
aW5lLW9mZnNldCIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInRleHQtZGVj
b3JhdGlvbi10aGlja25lc3MiOiB7CiAgICAgICAgICAgICAiaW5oZXJpdGVkIjogdHJ1ZSwKICAg
ICAgICAgICAgICJjb2RlZ2VuLXByb3BlcnRpZXMiOiB7Ci0gICAgICAgICAgICAgICAgImNvbnZl
cnRlciI6ICJUZXh0VW5kZXJsaW5lUG9zaXRpb24iCisgICAgICAgICAgICAgICAgImNvbnZlcnRl
ciI6ICJUZXh0RGVjb3JhdGlvblRoaWNrbmVzcyIKICAgICAgICAgICAgIH0sCiAgICAgICAgICAg
ICAic3RhdHVzIjogewogICAgICAgICAgICAgICAgICJzdGF0dXMiOiAiZXhwZXJpbWVudGFsIgog
ICAgICAgICAgICAgfSwKICAgICAgICAgICAgICJzcGVjaWZpY2F0aW9uIjogewogICAgICAgICAg
ICAgICAgICJjYXRlZ29yeSI6ICJjc3MtdGV4dC1kZWNvciIsCi0gICAgICAgICAgICAgICAgInVy
bCI6ICJodHRwczovL3d3dy53My5vcmcvVFIvY3NzLXRleHQtZGVjb3ItMy8jdGV4dC11bmRlcmxp
bmUtcG9zaXRpb24iCisgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL3d3dy53My5vcmcv
VFIvY3NzLXRleHQtZGVjb3ItNC8jdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzcyIKICAgICAgICAg
ICAgIH0KICAgICAgICAgfSwKICAgICAgICAgIi13ZWJraXQtdGV4dC1kZWNvcmF0aW9ucy1pbi1l
ZmZlY3QiOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jk
cy5pbiBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluCmluZGV4IDQ2MzIz
NjNmOTQxMjk3YTYxMGJmNmI2Nzc4MGE4NzRmYzk1MDBhMzYuLjkwZjkxMmFjZWI1NWExYWZkYmFh
YjA5NWI2MmZiYzU0YWJiM2QyNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NW
YWx1ZUtleXdvcmRzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRz
LmluCkBAIC0xNDAzLDMgKzE0MDMsNiBAQCBzdGFuZGFsb25lCiBtaW5pbWFsLXVpCiBicm93c2Vy
CiAjZW5kaWYKKworLy8gdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzcywgdGV4dC11bmRlcmxpbmUt
b2Zmc2V0Citmcm9tLWZvbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1
aWxkZXJDb252ZXJ0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUJ1aWxkZXJDb252ZXJ0
ZXIuaAppbmRleCAyMmFjYmMyOTAxMDY1YjRjYjc2N2NlMjdkNDVkOWY2YTk1MGNlMjhiLi5hMDAz
YTNmNDljY2ZkNzFjMzEyZmY0ODU3NmQ5YmRjZWI1Nzc2YmIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvU3R5bGVCdWlsZGVyQ29udmVydGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlQnVpbGRlckNvbnZlcnRlci5oCkBAIC04Nyw3ICs4Nyw5IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgaW50IGNvbnZlcnRNYXJxdWVlUmVwZXRpdGlvbihTdHlsZVJlc29sdmVyJiwgY29u
c3QgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgaW50IGNvbnZlcnRNYXJxdWVlU3BlZWQoU3R5bGVS
ZXNvbHZlciYsIGNvbnN0IENTU1ZhbHVlJik7CiAgICAgc3RhdGljIFJlZjxRdW90ZXNEYXRhPiBj
b252ZXJ0UXVvdGVzKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwotICAgIHN0YXRp
YyBPcHRpb25TZXQ8VGV4dFVuZGVybGluZVBvc2l0aW9uPiBjb252ZXJ0VGV4dFVuZGVybGluZVBv
c2l0aW9uKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOworICAgIHN0YXRpYyBUZXh0
VW5kZXJsaW5lUG9zaXRpb24gY29udmVydFRleHRVbmRlcmxpbmVQb3NpdGlvbihTdHlsZVJlc29s
dmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKKyAgICBzdGF0aWMgVGV4dFVuZGVybGluZU9mZnNldCBj
b252ZXJ0VGV4dFVuZGVybGluZU9mZnNldChTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUm
KTsKKyAgICBzdGF0aWMgVGV4dERlY29yYXRpb25UaGlja25lc3MgY29udmVydFRleHREZWNvcmF0
aW9uVGhpY2tuZXNzKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYpOwogICAgIHN0YXRp
YyBSZWZQdHI8U3R5bGVSZWZsZWN0aW9uPiBjb252ZXJ0UmVmbGVjdGlvbihTdHlsZVJlc29sdmVy
JiwgY29uc3QgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgSW50U2l6ZSBjb252ZXJ0SW5pdGlhbExl
dHRlcihTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsKICAgICBzdGF0aWMgZmxvYXQg
Y29udmVydFRleHRTdHJva2VXaWR0aChTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmKTsK
QEAgLTYzNywxNiArNjM5LDQwIEBAIGlubGluZSBSZWY8UXVvdGVzRGF0YT4gU3R5bGVCdWlsZGVy
Q29udmVydGVyOjpjb252ZXJ0UXVvdGVzKFN0eWxlUmVzb2x2ZXImLCBjb25zCiAgICAgcmV0dXJu
IFF1b3Rlc0RhdGE6OmNyZWF0ZShxdW90ZXMpOwogfQogCi1pbmxpbmUgT3B0aW9uU2V0PFRleHRV
bmRlcmxpbmVQb3NpdGlvbj4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpjb252ZXJ0VGV4dFVuZGVy
bGluZVBvc2l0aW9uKFN0eWxlUmVzb2x2ZXImLCBjb25zdCBDU1NWYWx1ZSYgdmFsdWUpCitpbmxp
bmUgVGV4dFVuZGVybGluZVBvc2l0aW9uIFN0eWxlQnVpbGRlckNvbnZlcnRlcjo6Y29udmVydFRl
eHRVbmRlcmxpbmVQb3NpdGlvbihTdHlsZVJlc29sdmVyJiwgY29uc3QgQ1NTVmFsdWUmIHZhbHVl
KQogewotICAgIC8vIFRoaXMgaXMgdHJ1ZSBpZiB2YWx1ZSBpcyAnYXV0bycgb3IgJ2FscGhhYmV0
aWMnLgotICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKQotICAgICAgICByZXR1
cm4gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KHZhbHVlKTsKKyAgICBBU1NFUlQoaXM8Q1NT
UHJpbWl0aXZlVmFsdWU+KHZhbHVlKSk7CisgICAgcmV0dXJuIGRvd25jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlPih2YWx1ZSk7Cit9CiAKLSAgICBPcHRpb25TZXQ8VGV4dFVuZGVybGluZVBvc2l0aW9u
PiBjb21iaW5lZFBvc2l0aW9uOwotICAgIGZvciAoYXV0byYgY3VycmVudFZhbHVlIDogZG93bmNh
c3Q8Q1NTVmFsdWVMaXN0Pih2YWx1ZSkpCi0gICAgICAgIGNvbWJpbmVkUG9zaXRpb24uYWRkKGRv
d25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPihjdXJyZW50VmFsdWUuZ2V0KCkpKTsKLSAgICByZXR1
cm4gY29tYmluZWRQb3NpdGlvbjsKK2lubGluZSBUZXh0VW5kZXJsaW5lT2Zmc2V0IFN0eWxlQnVp
bGRlckNvbnZlcnRlcjo6Y29udmVydFRleHRVbmRlcmxpbmVPZmZzZXQoU3R5bGVSZXNvbHZlciYg
c3R5bGVSZXNvbHZlciwgY29uc3QgQ1NTVmFsdWUmIHZhbHVlKQoreworICAgIEFTU0VSVChpczxD
U1NQcmltaXRpdmVWYWx1ZT4odmFsdWUpKTsKKyAgICBhdXRvJiBwcmltaXRpdmVWYWx1ZSA9IGRv
d25jYXN0PENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSk7CisgICAgc3dpdGNoIChwcmltaXRpdmVW
YWx1ZS52YWx1ZUlEKCkpIHsKKyAgICBjYXNlIENTU1ZhbHVlQXV0bzoKKyAgICAgICAgcmV0dXJu
IFRleHRVbmRlcmxpbmVPZmZzZXQ6OmNyZWF0ZVdpdGhBdXRvKCk7CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgQVNTRVJUKHByaW1pdGl2ZVZhbHVlLmlzTGVuZ3RoKCkpOworICAgICAgICBhdXRvIGNv
bXB1dGVkTGVuZ3RoID0gY29udmVydENvbXB1dGVkTGVuZ3RoPGZsb2F0PihzdHlsZVJlc29sdmVy
LCBwcmltaXRpdmVWYWx1ZSk7CisgICAgICAgIHJldHVybiBUZXh0VW5kZXJsaW5lT2Zmc2V0Ojpj
cmVhdGVXaXRoTGVuZ3RoKGNvbXB1dGVkTGVuZ3RoKTsKKyAgICB9Cit9CisKK2lubGluZSBUZXh0
RGVjb3JhdGlvblRoaWNrbmVzcyBTdHlsZUJ1aWxkZXJDb252ZXJ0ZXI6OmNvbnZlcnRUZXh0RGVj
b3JhdGlvblRoaWNrbmVzcyhTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBjb25zdCBDU1NW
YWx1ZSYgdmFsdWUpCit7CisgICAgQVNTRVJUKGlzPENTU1ByaW1pdGl2ZVZhbHVlPih2YWx1ZSkp
OworICAgIGF1dG8mIHByaW1pdGl2ZVZhbHVlID0gZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+
KHZhbHVlKTsKKyAgICBzd2l0Y2ggKHByaW1pdGl2ZVZhbHVlLnZhbHVlSUQoKSkgeworICAgIGNh
c2UgQ1NTVmFsdWVBdXRvOgorICAgICAgICByZXR1cm4gVGV4dERlY29yYXRpb25UaGlja25lc3M6
OmNyZWF0ZVdpdGhBdXRvKCk7CisgICAgY2FzZSBDU1NWYWx1ZUZyb21Gb250OgorICAgICAgICBy
ZXR1cm4gVGV4dERlY29yYXRpb25UaGlja25lc3M6OmNyZWF0ZUZyb21Gb250KCk7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgQVNTRVJUKHByaW1pdGl2ZVZhbHVlLmlzTGVuZ3RoKCkpOworICAgICAg
ICBhdXRvIGNvbXB1dGVkTGVuZ3RoID0gY29udmVydENvbXB1dGVkTGVuZ3RoPGZsb2F0PihzdHls
ZVJlc29sdmVyLCBwcmltaXRpdmVWYWx1ZSk7CisgICAgICAgIHJldHVybiBUZXh0RGVjb3JhdGlv
blRoaWNrbmVzczo6Y3JlYXRlV2l0aExlbmd0aChjb21wdXRlZExlbmd0aCk7CisgICAgfQogfQog
CiBpbmxpbmUgUmVmUHRyPFN0eWxlUmVmbGVjdGlvbj4gU3R5bGVCdWlsZGVyQ29udmVydGVyOjpj
b252ZXJ0UmVmbGVjdGlvbihTdHlsZVJlc29sdmVyJiBzdHlsZVJlc29sdmVyLCBjb25zdCBDU1NW
YWx1ZSYgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggZDRlMDZi
Y2NmMzM2MGQxY2E0MGMwNzI4MDJmNDUwMGM1OWZkYTA1Yi4uMjg3NDgwZTVmOTI4ODU3Yzc0OWQ2
NmQzODFlMDc2N2Y0MTI0ODNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApA
QCAtMTE3NCw3ICsxMTc0LDkgQEAgc3RhdGljIGJvb2wgc2hvdWxkQXBwbHlQcm9wZXJ0eUluUGFy
c2VPcmRlcihDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFRleHREZWNvcmF0aW9uU3R5bGU6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRE
ZWNvcmF0aW9uQ29sb3I6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9u
U2tpcDoKLSAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dFVuZGVybGluZVBvc2l0aW9uOgor
ICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5lUG9zaXRpb246CisgICAgY2FzZSBDU1NQ
cm9wZXJ0eVRleHRVbmRlcmxpbmVPZmZzZXQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHREZWNv
cmF0aW9uVGhpY2tuZXNzOgogICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbjoKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHAKaW5kZXggMjFmZWJhY2M0Y2ZiYWE1MTFiYmFl
YTY0NzVmMTYwZDUzMjVkYzBmNi4uMjQyYjhjZjRlNTAyZTllYTY3NzEwMTdlNjg1MjJiNDI2ZjE5
YTU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBh
cnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQcm9wZXJ0eVBhcnNl
ci5jcHAKQEAgLTIzMTIsNiArMjMxMiwyMCBAQCBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBjb25z
dW1lQm9yZGVyUmFkaXVzQ29ybmVyKENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDUwogICAg
IHJldHVybiBjcmVhdGVQcmltaXRpdmVWYWx1ZVBhaXIocGFyc2VkVmFsdWUxLnJlbGVhc2VOb25O
dWxsKCksIHBhcnNlZFZhbHVlMi5yZWxlYXNlTm9uTnVsbCgpLCBQYWlyOjpJZGVudGljYWxWYWx1
ZUVuY29kaW5nOjpDb2FsZXNjZSk7CiB9CiAKK3N0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1
bWVUZXh0VW5kZXJsaW5lT2Zmc2V0KENTU1BhcnNlclRva2VuUmFuZ2UmIHJhbmdlLCBDU1NQYXJz
ZXJNb2RlIGNzc1BhcnNlck1vZGUpCit7CisgICAgaWYgKGF1dG8gdmFsdWUgPSBjb25zdW1lSWRl
bnQ8Q1NTVmFsdWVBdXRvPihyYW5nZSkpCisgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICByZXR1
cm4gY29uc3VtZUxlbmd0aChyYW5nZSwgY3NzUGFyc2VyTW9kZSwgVmFsdWVSYW5nZUFsbCk7Cit9
CisKK3N0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IGNvbnN1bWVUZXh0RGVjb3JhdGlvblRoaWNrbmVz
cyhDU1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2Rl
KQoreworICAgIGlmIChhdXRvIHZhbHVlID0gY29uc3VtZUlkZW50PENTU1ZhbHVlQXV0bywgQ1NT
VmFsdWVGcm9tRm9udD4ocmFuZ2UpKQorICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgcmV0dXJu
IGNvbnN1bWVMZW5ndGgocmFuZ2UsIGNzc1BhcnNlck1vZGUsIFZhbHVlUmFuZ2VBbGwpOworfQor
CiBzdGF0aWMgUmVmUHRyPENTU1ByaW1pdGl2ZVZhbHVlPiBjb25zdW1lVmVydGljYWxBbGlnbihD
U1NQYXJzZXJUb2tlblJhbmdlJiByYW5nZSwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQog
ewogICAgIFJlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcGFyc2VkVmFsdWUgPSBjb25zdW1lSWRl
bnRSYW5nZShyYW5nZSwgQ1NTVmFsdWVCYXNlbGluZSwgQ1NTVmFsdWVXZWJraXRCYXNlbGluZU1p
ZGRsZSk7CkBAIC00MTQxLDkgKzQxNTUsMTMgQEAgUmVmUHRyPENTU1ZhbHVlPiBDU1NQcm9wZXJ0
eVBhcnNlcjo6cGFyc2VTaW5nbGVWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBDU1MKICAg
ICAgICAgcmV0dXJuIGNvbnN1bWVJbnRlZ2VyKG1fcmFuZ2UsIDApOwogICAgIGNhc2UgQ1NTUHJv
cGVydHlPcmRlcjoKICAgICAgICAgcmV0dXJuIGNvbnN1bWVJbnRlZ2VyKG1fcmFuZ2UpOwotICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0VW5kZXJsaW5lUG9zaXRpb246Ci0gICAgICAgIC8v
IGF1dG8gfCBhbHBoYWJldGljIHwgWyB1bmRlciB8fCBbIGxlZnQgfCByaWdodCBdIF0sIGJ1dCB3
ZSBvbmx5IHN1cHBvcnQgYXV0byB8IGFscGhhYmV0aWMgfCB1bmRlciBmb3Igbm93Ci0gICAgICAg
IHJldHVybiBjb25zdW1lSWRlbnQ8Q1NTVmFsdWVBdXRvLCBDU1NWYWx1ZVVuZGVyLCBDU1NWYWx1
ZUFscGhhYmV0aWM+KG1fcmFuZ2UpOworICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0VW5kZXJsaW5l
UG9zaXRpb246CisgICAgICAgIC8vIGF1dG8gfCBbIFsgdW5kZXIgfCBmcm9tLWZvbnQgXSB8fCBb
IGxlZnQgfCByaWdodCBdIF0sIGJ1dCB3ZSBvbmx5IHN1cHBvcnQgYXV0byB8IHVuZGVyIHwgZnJv
bS1mb250IGZvciBub3cKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVJZGVudDxDU1NWYWx1ZUF1dG8s
IENTU1ZhbHVlVW5kZXIsIENTU1ZhbHVlRnJvbUZvbnQ+KG1fcmFuZ2UpOworICAgIGNhc2UgQ1NT
UHJvcGVydHlUZXh0VW5kZXJsaW5lT2Zmc2V0OgorICAgICAgICByZXR1cm4gY29uc3VtZVRleHRV
bmRlcmxpbmVPZmZzZXQobV9yYW5nZSwgbV9jb250ZXh0Lm1vZGUpOworICAgIGNhc2UgQ1NTUHJv
cGVydHlUZXh0RGVjb3JhdGlvblRoaWNrbmVzczoKKyAgICAgICAgcmV0dXJuIGNvbnN1bWVUZXh0
RGVjb3JhdGlvblRoaWNrbmVzcyhtX3JhbmdlLCBtX2NvbnRleHQubW9kZSk7CiAgICAgY2FzZSBD
U1NQcm9wZXJ0eVZlcnRpY2FsQWxpZ246CiAgICAgICAgIHJldHVybiBjb25zdW1lVmVydGljYWxB
bGlnbihtX3JhbmdlLCBtX2NvbnRleHQubW9kZSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVNoYXBl
T3V0c2lkZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1By
b3BlcnR5QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1By
b3BlcnR5QW5pbWF0aW9uLmNwcAppbmRleCBkNjUxZDU2NzE3ZGFmZjAzMjBhOTc1ZWJkYTI3Yjlm
YWFjNjhjZjQzLi5iNDYyYjlmNTVmYTYzZmIyYjM5MzM4ZDIwMzc3NjlkYjJmZDkwZjQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmlt
YXRpb24uY3BwCkBAIC0yNjAsNiArMjYwLDIwIEBAIHN0YXRpYyBpbmxpbmUgVmlzaWJpbGl0eSBi
bGVuZEZ1bmMoY29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NsaWVudCogYW5pbSwgVmlzaWJpCiAg
ICAgcmV0dXJuIHJlc3VsdCA+IDAuID8gVmlzaWJpbGl0eTo6VmlzaWJsZSA6ICh0byAhPSBWaXNp
YmlsaXR5OjpWaXNpYmxlID8gdG8gOiBmcm9tKTsKIH0KIAorc3RhdGljIGlubGluZSBUZXh0VW5k
ZXJsaW5lT2Zmc2V0IGJsZW5kRnVuYyhjb25zdCBDU1NQcm9wZXJ0eUJsZW5kaW5nQ2xpZW50KiBh
bmltLCBjb25zdCBUZXh0VW5kZXJsaW5lT2Zmc2V0JiBmcm9tLCBjb25zdCBUZXh0VW5kZXJsaW5l
T2Zmc2V0JiB0bywgZG91YmxlIHByb2dyZXNzKQoreworICAgIGlmIChmcm9tLmlzTGVuZ3RoKCkg
JiYgdG8uaXNMZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIFRleHRVbmRlcmxpbmVPZmZzZXQ6OmNy
ZWF0ZVdpdGhMZW5ndGgoYmxlbmRGdW5jKGFuaW0sIGZyb20ubGVuZ3RoVmFsdWUoKSwgdG8ubGVu
Z3RoVmFsdWUoKSwgcHJvZ3Jlc3MpKTsKKyAgICByZXR1cm4gVGV4dFVuZGVybGluZU9mZnNldDo6
Y3JlYXRlV2l0aEF1dG8oKTsKK30KKworc3RhdGljIGlubGluZSBUZXh0RGVjb3JhdGlvblRoaWNr
bmVzcyBibGVuZEZ1bmMoY29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NsaWVudCogYW5pbSwgY29u
c3QgVGV4dERlY29yYXRpb25UaGlja25lc3MmIGZyb20sIGNvbnN0IFRleHREZWNvcmF0aW9uVGhp
Y2tuZXNzJiB0bywgZG91YmxlIHByb2dyZXNzKQoreworICAgIGlmIChmcm9tLmlzTGVuZ3RoKCkg
JiYgdG8uaXNMZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuIFRleHREZWNvcmF0aW9uVGhpY2tuZXNz
OjpjcmVhdGVXaXRoTGVuZ3RoKGJsZW5kRnVuYyhhbmltLCBmcm9tLmxlbmd0aFZhbHVlKCksIHRv
Lmxlbmd0aFZhbHVlKCksIHByb2dyZXNzKSk7CisgICAgcmV0dXJuIFRleHREZWNvcmF0aW9uVGhp
Y2tuZXNzOjpjcmVhdGVXaXRoQXV0bygpOworfQorCiBzdGF0aWMgaW5saW5lIExlbmd0aEJveCBi
bGVuZEZ1bmMoY29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NsaWVudCogYW5pbSwgY29uc3QgTGVu
Z3RoQm94JiBmcm9tLCBjb25zdCBMZW5ndGhCb3gmIHRvLCBkb3VibGUgcHJvZ3Jlc3MpCiB7CiAg
ICAgTGVuZ3RoQm94IHJlc3VsdChibGVuZEZ1bmMoYW5pbSwgZnJvbS50b3AoKSwgdG8udG9wKCks
IHByb2dyZXNzKSwKQEAgLTE2ODUsNiArMTY5OSw4IEBAIENTU1Byb3BlcnR5QW5pbWF0aW9uV3Jh
cHBlck1hcDo6Q1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwKCkKICAgICAgICAgbmV3IFBy
b3BlcnR5V3JhcHBlcjxGb250U2VsZWN0aW9uVmFsdWU+KENTU1Byb3BlcnR5Rm9udFdlaWdodCwg
JlJlbmRlclN0eWxlOjpmb250V2VpZ2h0LCAmUmVuZGVyU3R5bGU6OnNldEZvbnRXZWlnaHQpLAog
ICAgICAgICBuZXcgUHJvcGVydHlXcmFwcGVyPEZvbnRTZWxlY3Rpb25WYWx1ZT4oQ1NTUHJvcGVy
dHlGb250U3RyZXRjaCwgJlJlbmRlclN0eWxlOjpmb250U3RyZXRjaCwgJlJlbmRlclN0eWxlOjpz
ZXRGb250U3RyZXRjaCksCiAgICAgICAgIG5ldyBQcm9wZXJ0eVdyYXBwZXJGb250U3R5bGUoKSwK
KyAgICAgICAgbmV3IFByb3BlcnR5V3JhcHBlcjxUZXh0RGVjb3JhdGlvblRoaWNrbmVzcz4oQ1NT
UHJvcGVydHlUZXh0RGVjb3JhdGlvblRoaWNrbmVzcywgJlJlbmRlclN0eWxlOjp0ZXh0RGVjb3Jh
dGlvblRoaWNrbmVzcywgJlJlbmRlclN0eWxlOjpzZXRUZXh0RGVjb3JhdGlvblRoaWNrbmVzcyks
CisgICAgICAgIG5ldyBQcm9wZXJ0eVdyYXBwZXI8VGV4dFVuZGVybGluZU9mZnNldD4oQ1NTUHJv
cGVydHlUZXh0VW5kZXJsaW5lT2Zmc2V0LCAmUmVuZGVyU3R5bGU6OnRleHRVbmRlcmxpbmVPZmZz
ZXQsICZSZW5kZXJTdHlsZTo6c2V0VGV4dFVuZGVybGluZU9mZnNldCksCiAgICAgfTsKICAgICBj
b25zdCB1bnNpZ25lZCBhbmltYXRhYmxlTG9uZ2hhbmRQcm9wZXJ0aWVzQ291bnQgPSBXVEZfQVJS
QVlfTEVOR1RIKGFuaW1hdGFibGVMb25naGFuZFByb3BlcnR5V3JhcHBlcnMpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCmluZGV4IDFkOTkwNjViZjJhNTU0NmQ4
MjdjZTEyNTkyNDAxN2I5ZTVhZTYyOTUuLjEzODRmNjkyNGQ4YzNmMTlkZTkzYTM4MTZhOTc0Njhh
MTcxNmU2YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnQuY3BwCkBA
IC02NjMsNCArNjYzLDE1IEBAIGJvb2wgRm9udDo6Y2FuUmVuZGVyQ29tYmluaW5nQ2hhcmFjdGVy
U2VxdWVuY2UoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBsCiAgICAgfQogICAgIHJl
dHVybiB0cnVlOwogfQorCisvLyBEb24ndCBzdG9yZSB0aGUgcmVzdWx0IG9mIHRoaXMhIFRoZSBo
YXNoIG1hcCBpcyBmcmVlIHRvIHJlaGFzaCBhdCBhbnkgcG9pbnQsIGxlYXZpbmcgdGhpcyByZWZl
cmVuY2UgZGFuZ2xpbmcuCitjb25zdCBQYXRoJiBGb250OjpwYXRoRm9yR2x5cGgoR2x5cGggZ2x5
cGgpIGNvbnN0Cit7CisgICAgaWYgKGNvbnN0IGF1dG8mIHBhdGggPSBtX2dseXBoUGF0aE1hcC5l
eGlzdGluZ01ldHJpY3NGb3JHbHlwaChnbHlwaCkpCisgICAgICAgIHJldHVybiAqcGF0aDsKKyAg
ICBhdXRvIHBhdGggPSBwbGF0Zm9ybVBhdGhGb3JHbHlwaChnbHlwaCk7CisgICAgbV9nbHlwaFBh
dGhNYXAuc2V0TWV0cmljc0ZvckdseXBoKGdseXBoLCBwYXRoKTsKKyAgICByZXR1cm4gKm1fZ2x5
cGhQYXRoTWFwLmV4aXN0aW5nTWV0cmljc0ZvckdseXBoKGdseXBoKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRm9udC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5oCmluZGV4
IDk4OTBiZWUzZGQ1ODJjNjRkNDNmNmJkOTNmYTI5ZmU0M2RjYzIyZDYuLmYyMTZiODlkM2E1NTFl
MDE4YWM2NzMwNzI1MTJmNmZkYWI1YzIzYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250LmgKQEAgLTE0Niw4ICsxNDYsMTAgQEAgcHVibGljOgogCiAgICAgRmxvYXRSZWN0
IGJvdW5kc0ZvckdseXBoKEdseXBoKSBjb25zdDsKICAgICBmbG9hdCB3aWR0aEZvckdseXBoKEds
eXBoKSBjb25zdDsKKyAgICBjb25zdCBQYXRoJiBwYXRoRm9yR2x5cGgoR2x5cGggZ2x5cGgpIGNv
bnN0OyAvLyBEb24ndCBzdG9yZSB0aGUgcmVzdWx0IG9mIHRoaXMhIFRoZSBoYXNoIG1hcCBpcyBm
cmVlIHRvIHJlaGFzaCBhdCBhbnkgcG9pbnQsIGxlYXZpbmcgdGhpcyByZWZlcmVuY2UgZGFuZ2xp
bmcuCiAgICAgRmxvYXRSZWN0IHBsYXRmb3JtQm91bmRzRm9yR2x5cGgoR2x5cGgpIGNvbnN0Owog
ICAgIGZsb2F0IHBsYXRmb3JtV2lkdGhGb3JHbHlwaChHbHlwaCkgY29uc3Q7CisgICAgUGF0aCBw
bGF0Zm9ybVBhdGhGb3JHbHlwaChHbHlwaCBnbHlwaCkgY29uc3Q7CiAKICAgICBmbG9hdCBzcGFj
ZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9zcGFjZVdpZHRoOyB9CiAgICAgZmxvYXQgYWRqdXN0
ZWRTcGFjZVdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV9hZGp1c3RlZFNwYWNlV2lkdGg7IH0KQEAg
LTI1Myw2ICsyNTUsNyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgSGFzaE1hcDx1bnNpZ25lZCwg
UmVmUHRyPEdseXBoUGFnZT4+IG1fZ2x5cGhQYWdlczsKICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVl
X3B0cjxHbHlwaE1ldHJpY3NNYXA8RmxvYXRSZWN0Pj4gbV9nbHlwaFRvQm91bmRzTWFwOwogICAg
IG11dGFibGUgR2x5cGhNZXRyaWNzTWFwPGZsb2F0PiBtX2dseXBoVG9XaWR0aE1hcDsKKyAgICBt
dXRhYmxlIEdseXBoTWV0cmljc01hcDxzdGQ6Om9wdGlvbmFsPFBhdGg+PiBtX2dseXBoUGF0aE1h
cDsKICAgICBtdXRhYmxlIEJpdFZlY3RvciBtX2NvZGVQb2ludFN1cHBvcnQ7CiAKICAgICBtdXRh
YmxlIFJlZlB0cjxPcGVuVHlwZU1hdGhEYXRhPiBtX21hdGhEYXRhOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhc2NhZGUuY3BwCmluZGV4IDA2NjIwY2YwNDQ0
MzU5NTE3YTQ3ZGRjMjQ5YzAyYmUyMWFiZWFhOTIuLjY3NDk1YzIyOGE0N2UwYzM2OWRkNDBhZDU0
NWE0YjIwMTBhYjI2MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYXNjYWRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250Q2FzY2FkZS5jcHAKQEAgLTEyMzcsMTggKzEyMzcsMjUgQEAgYm9vbCBGb250Q2FzY2Fk
ZTo6aXNMb2FkaW5nQ3VzdG9tRm9udHMoKSBjb25zdAogewogICAgIHJldHVybiBtX2ZvbnRzICYm
IG1fZm9udHMtPmlzTG9hZGluZ0N1c3RvbUZvbnRzKCk7CiB9CisKK2VudW0gY2xhc3MgR2x5cGhV
bmRlcmxpbmVUeXBlIHsKKyAgICBTa2lwRGVzY2VuZGVycywKKyAgICBTa2lwR2x5cGgsCisgICAg
RHJhd092ZXJHbHlwaAorfTsKICAgICAKLUdseXBoVG9QYXRoVHJhbnNsYXRvcjo6R2x5cGhVbmRl
cmxpbmVUeXBlIGNvbXB1dGVVbmRlcmxpbmVUeXBlKGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGNv
bnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgdW5zaWduZWQgaW5kZXgpCitzdGF0aWMgR2x5
cGhVbmRlcmxpbmVUeXBlIGNvbXB1dGVVbmRlcmxpbmVUeXBlKGNvbnN0IFRleHRSdW4mIHRleHRS
dW4sIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgdW5zaWduZWQgaW5kZXgpCiB7CiAg
ICAgLy8gSW4gZ2VuZXJhbCwgd2Ugd2FudCB0byBza2lwIGRlc2NlbmRlcnMuIEhvd2V2ZXIsIHNr
aXBwaW5nIGRlc2NlbmRlcnMgb24gQ0pLIGNoYXJhY3RlcnMgbGVhZHMgdG8gdW5kZXNpcmFibGUg
cmVuZGVyaW5ncywKICAgICAvLyBzbyB3ZSB3YW50IHRvIGRyYXcgdGhyb3VnaCBDSksgY2hhcmFj
dGVycyAob24gYSBjaGFyYWN0ZXItYnktY2hhcmFjdGVyIGJhc2lzKS4KKyAgICAvLyBGSVhNRTog
VGhlIENTUyBzcGVjIHNheXMgdGhpcyBzaG91bGQgaW5zdGVhZCBiZSBkb25lIGJ5IHRoZSB1c2Vy
LWFnZW50IHN0eWxlc2hlZXQgdXNpbmcgdGhlIGxhbmc9IGF0dHJpYnV0ZS4KICAgICBVQ2hhcjMy
IGJhc2VDaGFyYWN0ZXI7CiAgICAgdW5zaWduZWQgb2Zmc2V0SW5TdHJpbmcgPSBnbHlwaEJ1ZmZl
ci5vZmZzZXRJblN0cmluZyhpbmRleCk7CiAKICAgICBpZiAob2Zmc2V0SW5TdHJpbmcgPT0gR2x5
cGhCdWZmZXI6Om5vT2Zmc2V0IHx8IG9mZnNldEluU3RyaW5nID49IHRleHRSdW4ubGVuZ3RoKCkp
IHsKICAgICAgICAgLy8gV2UgaGF2ZSBubyBpZGVhIHdoaWNoIGNoYXJhY3RlciBzcGF3bmVkIHRo
aXMgZ2x5cGguIEJhaWwuCiAgICAgICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KG9mZnNldEluU3RyaW5nIDwgdGV4dFJ1bi5sZW5ndGgoKSk7Ci0gICAgICAgIHJldHVybiBHbHlw
aFRvUGF0aFRyYW5zbGF0b3I6OkdseXBoVW5kZXJsaW5lVHlwZTo6RHJhd092ZXJHbHlwaDsKKyAg
ICAgICAgcmV0dXJuIEdseXBoVW5kZXJsaW5lVHlwZTo6RHJhd092ZXJHbHlwaDsKICAgICB9CiAg
ICAgCiAgICAgaWYgKHRleHRSdW4uaXM4Qml0KCkpCkBAIC0xMjg1LDkgKzEyOTIsOSBAQCBHbHlw
aFRvUGF0aFRyYW5zbGF0b3I6OkdseXBoVW5kZXJsaW5lVHlwZSBjb21wdXRlVW5kZXJsaW5lVHlw
ZShjb25zdCBUZXh0UnVuJiB0ZQogICAgIGNhc2UgVUJMT0NLX0hBTkdVTF9TWUxMQUJMRVM6CiAg
ICAgY2FzZSBVQkxPQ0tfSEFOR1VMX0pBTU9fRVhURU5ERURfQToKICAgICBjYXNlIFVCTE9DS19I
QU5HVUxfSkFNT19FWFRFTkRFRF9COgotICAgICAgICByZXR1cm4gR2x5cGhUb1BhdGhUcmFuc2xh
dG9yOjpHbHlwaFVuZGVybGluZVR5cGU6OkRyYXdPdmVyR2x5cGg7CisgICAgICAgIHJldHVybiBH
bHlwaFVuZGVybGluZVR5cGU6OkRyYXdPdmVyR2x5cGg7CiAgICAgZGVmYXVsdDoKLSAgICAgICAg
cmV0dXJuIEdseXBoVG9QYXRoVHJhbnNsYXRvcjo6R2x5cGhVbmRlcmxpbmVUeXBlOjpTa2lwRGVz
Y2VuZGVyczsKKyAgICAgICAgcmV0dXJuIEdseXBoVW5kZXJsaW5lVHlwZTo6U2tpcERlc2NlbmRl
cnM7CiAgICAgfQogfQogCkBAIC0xNjU4LDQgKzE2NjUsMTg3IEBAIHZvaWQgRm9udENhc2NhZGU6
OmRyYXdFbXBoYXNpc01hcmtzRm9yQ29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zCiAgICAgZHJhd0VtcGhhc2lzTWFya3MoY29udGV4dCwgZ2x5cGhCdWZmZXIsIG1hcmss
IEZsb2F0UG9pbnQocG9pbnQueCgpICsgaW5pdGlhbEFkdmFuY2UsIHBvaW50LnkoKSkpOwogfQog
CitzdHJ1Y3QgR2x5cGhJdGVyYXRpb25TdGF0ZSB7CisgICAgR2x5cGhJdGVyYXRpb25TdGF0ZShG
bG9hdFBvaW50IHN0YXJ0aW5nUG9pbnQsIEZsb2F0UG9pbnQgY3VycmVudFBvaW50LCBmbG9hdCB5
MSwgZmxvYXQgeTIsIGZsb2F0IG1pblgsIGZsb2F0IG1heFgpCisgICAgICAgIDogc3RhcnRpbmdQ
b2ludChzdGFydGluZ1BvaW50KQorICAgICAgICAsIGN1cnJlbnRQb2ludChjdXJyZW50UG9pbnQp
CisgICAgICAgICwgeTEoeTEpCisgICAgICAgICwgeTIoeTIpCisgICAgICAgICwgbWluWChtaW5Y
KQorICAgICAgICAsIG1heFgobWF4WCkKKyAgICB7CisgICAgfQorICAgIEZsb2F0UG9pbnQgc3Rh
cnRpbmdQb2ludDsKKyAgICBGbG9hdFBvaW50IGN1cnJlbnRQb2ludDsKKyAgICBmbG9hdCB5MTsK
KyAgICBmbG9hdCB5MjsKKyAgICBmbG9hdCBtaW5YOworICAgIGZsb2F0IG1heFg7Cit9OworCitz
dGF0aWMgc3RkOjpvcHRpb25hbDxmbG9hdD4gZmluZEludGVyc2VjdGlvblBvaW50KGZsb2F0IHks
IEZsb2F0UG9pbnQgcDEsIEZsb2F0UG9pbnQgcDIpCit7CisgICAgaWYgKChwMS55KCkgPCB5ICYm
IHAyLnkoKSA+IHkpIHx8IChwMS55KCkgPiB5ICYmIHAyLnkoKSA8IHkpKQorICAgICAgICByZXR1
cm4gcDEueCgpICsgKHkgLSBwMS55KCkpICogKHAyLngoKSAtIHAxLngoKSkgLyAocDIueSgpIC0g
cDEueSgpKTsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQorCitzdGF0aWMgdm9pZCB1cGRh
dGVYKEdseXBoSXRlcmF0aW9uU3RhdGUmIHN0YXRlLCBmbG9hdCB4KQoreworICAgIHN0YXRlLm1p
blggPSBzdGQ6Om1pbihzdGF0ZS5taW5YLCB4KTsKKyAgICBzdGF0ZS5tYXhYID0gc3RkOjptYXgo
c3RhdGUubWF4WCwgeCk7Cit9CisKKy8vIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IENHUGF0
aEFwcGx5IGFuZCBpcyB0aGVyZWZvcmUgaW52b2tlZCBmb3IgZWFjaAorLy8gY29udG91ciBpbiBh
IGdseXBoLiBUaGlzIGZ1bmN0aW9uIG1vZGVscyBlYWNoIGNvbnRvdXJzIGFzIGEgc3RyYWlnaHQg
bGluZQorLy8gYW5kIGNhbGN1bGF0ZXMgdGhlIGludGVyc2VjdGlvbnMgYmV0d2VlbiBlYWNoIHBz
ZXVkby1jb250b3VyIGFuZAorLy8gdHdvIGhvcml6b250YWwgbGluZXMgKHRoZSB1cHBlciBhbmQg
bG93ZXIgYm91bmRzIG9mIGFuIHVuZGVybGluZSkgZm91bmQgaW4KKy8vIEdseXBoSXRlcmF0aW9u
U3RhdGU6OnkxIGFuZCBHbHlwaEl0ZXJhdGlvblN0YXRlOjp5Mi4gSXQga2VlcHMgdHJhY2sgb2Yg
dGhlCisvLyBsZWZ0bW9zdCBhbmQgcmlnaHRtb3N0IGludGVyc2VjdGlvbiBpbiBHbHlwaEl0ZXJh
dGlvblN0YXRlOjptaW5YIGFuZAorLy8gR2x5cGhJdGVyYXRpb25TdGF0ZTo6bWF4WC4KK3N0YXRp
YyB2b2lkIGZpbmRQYXRoSW50ZXJzZWN0aW9ucyhHbHlwaEl0ZXJhdGlvblN0YXRlJiBzdGF0ZSwg
Y29uc3QgUGF0aEVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgYm9vbCBkb0ludGVyc2VjdGlvbiA9
IGZhbHNlOworICAgIEZsb2F0UG9pbnQgcG9pbnQgPSBGbG9hdFBvaW50KCk7CisgICAgc3dpdGNo
IChlbGVtZW50LnR5cGUpIHsKKyAgICBjYXNlIFBhdGhFbGVtZW50TW92ZVRvUG9pbnQ6CisgICAg
ICAgIHN0YXRlLnN0YXJ0aW5nUG9pbnQgPSBlbGVtZW50LnBvaW50c1swXTsKKyAgICAgICAgc3Rh
dGUuY3VycmVudFBvaW50ID0gZWxlbWVudC5wb2ludHNbMF07CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgUGF0aEVsZW1lbnRBZGRMaW5lVG9Qb2ludDoKKyAgICAgICAgZG9JbnRlcnNlY3Rpb24g
PSB0cnVlOworICAgICAgICBwb2ludCA9IGVsZW1lbnQucG9pbnRzWzBdOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFBhdGhFbGVtZW50QWRkUXVhZEN1cnZlVG9Qb2ludDoKKyAgICAgICAgZG9J
bnRlcnNlY3Rpb24gPSB0cnVlOworICAgICAgICBwb2ludCA9IGVsZW1lbnQucG9pbnRzWzFdOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFBhdGhFbGVtZW50QWRkQ3VydmVUb1BvaW50OgorICAg
ICAgICBkb0ludGVyc2VjdGlvbiA9IHRydWU7CisgICAgICAgIHBvaW50ID0gZWxlbWVudC5wb2lu
dHNbMl07CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUGF0aEVsZW1lbnRDbG9zZVN1YnBhdGg6
CisgICAgICAgIGRvSW50ZXJzZWN0aW9uID0gdHJ1ZTsKKyAgICAgICAgcG9pbnQgPSBzdGF0ZS5z
dGFydGluZ1BvaW50OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgaWYgKCFkb0ludGVyc2Vj
dGlvbikKKyAgICAgICAgcmV0dXJuOworICAgIGlmIChhdXRvIGludGVyc2VjdGlvblBvaW50ID0g
ZmluZEludGVyc2VjdGlvblBvaW50KHN0YXRlLnkxLCBzdGF0ZS5jdXJyZW50UG9pbnQsIHBvaW50
KSkKKyAgICAgICAgdXBkYXRlWChzdGF0ZSwgKmludGVyc2VjdGlvblBvaW50KTsKKyAgICBpZiAo
YXV0byBpbnRlcnNlY3Rpb25Qb2ludCA9IGZpbmRJbnRlcnNlY3Rpb25Qb2ludChzdGF0ZS55Miwg
c3RhdGUuY3VycmVudFBvaW50LCBwb2ludCkpCisgICAgICAgIHVwZGF0ZVgoc3RhdGUsICppbnRl
cnNlY3Rpb25Qb2ludCk7CisgICAgaWYgKChzdGF0ZS5jdXJyZW50UG9pbnQueSgpID49IHN0YXRl
LnkxICYmIHN0YXRlLmN1cnJlbnRQb2ludC55KCkgPD0gc3RhdGUueTIpCisgICAgICAgIHx8IChz
dGF0ZS5jdXJyZW50UG9pbnQueSgpIDw9IHN0YXRlLnkxICYmIHN0YXRlLmN1cnJlbnRQb2ludC55
KCkgPj0gc3RhdGUueTIpKQorICAgICAgICB1cGRhdGVYKHN0YXRlLCBzdGF0ZS5jdXJyZW50UG9p
bnQueCgpKTsKKyAgICBzdGF0ZS5jdXJyZW50UG9pbnQgPSBwb2ludDsKK30KKworY2xhc3MgR2x5
cGhUb1BhdGhUcmFuc2xhdG9yIHsKK3B1YmxpYzoKKyAgICBHbHlwaFRvUGF0aFRyYW5zbGF0b3Io
Y29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgY29uc3QgR2x5cGhCdWZmZXImIGdseXBoQnVmZmVyLCBj
b25zdCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luKQorICAgICAgICA6IG1faW5kZXgoMCkKKyAgICAg
ICAgLCBtX3RleHRSdW4odGV4dFJ1bikKKyAgICAgICAgLCBtX2dseXBoQnVmZmVyKGdseXBoQnVm
ZmVyKQorICAgICAgICAsIG1fZm9udERhdGEoZ2x5cGhCdWZmZXIuZm9udEF0KG1faW5kZXgpKQor
ICAgICAgICAsIG1fdHJhbnNsYXRpb24oQWZmaW5lVHJhbnNmb3JtOjp0cmFuc2xhdGlvbih0ZXh0
T3JpZ2luLngoKSwgdGV4dE9yaWdpbi55KCkpLnNjYWxlKDEsIC0xKSkKKyAgICB7CisgICAgfQor
CisgICAgYm9vbCBjb250YWluc01vcmVQYXRocygpIHsgcmV0dXJuIG1faW5kZXggIT0gbV9nbHlw
aEJ1ZmZlci5zaXplKCk7IH0KKyAgICBQYXRoIHBhdGgoKTsKKyAgICBzdGQ6OnBhaXI8ZmxvYXQs
IGZsb2F0PiBleHRlbnRzKCk7CisgICAgR2x5cGhVbmRlcmxpbmVUeXBlIHVuZGVybGluZVR5cGUo
KTsKKyAgICB2b2lkIGFkdmFuY2UoKTsKKworcHJpdmF0ZToKKyAgICB1bnNpZ25lZCBtX2luZGV4
OworICAgIGNvbnN0IFRleHRSdW4mIG1fdGV4dFJ1bjsKKyAgICBjb25zdCBHbHlwaEJ1ZmZlciYg
bV9nbHlwaEJ1ZmZlcjsKKyAgICBjb25zdCBGb250KiBtX2ZvbnREYXRhOworICAgIEFmZmluZVRy
YW5zZm9ybSBtX3RyYW5zbGF0aW9uOworfTsKKworUGF0aCBHbHlwaFRvUGF0aFRyYW5zbGF0b3I6
OnBhdGgoKQoreworICAgIFBhdGggcGF0aCA9IG1fZm9udERhdGEtPnBhdGhGb3JHbHlwaChtX2ds
eXBoQnVmZmVyLmdseXBoQXQobV9pbmRleCkpOworICAgIHBhdGgudHJhbnNmb3JtKG1fdHJhbnNs
YXRpb24pOworICAgIHJldHVybiBwYXRoOworfQorCitzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0PiBH
bHlwaFRvUGF0aFRyYW5zbGF0b3I6OmV4dGVudHMoKQoreworICAgIGF1dG8gYmVnaW5uaW5nID0g
bV90cmFuc2xhdGlvbi5tYXBQb2ludChGbG9hdFBvaW50KDAsIDApKTsKKyAgICBhdXRvIGFkdmFu
Y2UgPSBtX2dseXBoQnVmZmVyLmFkdmFuY2VBdChtX2luZGV4KTsKKyAgICBhdXRvIGVuZCA9IG1f
dHJhbnNsYXRpb24ubWFwU2l6ZShGbG9hdFNpemUoYWR2YW5jZS53aWR0aCgpLCBhZHZhbmNlLmhl
aWdodCgpKSk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKGJlZ2lubmluZy54KCksIGJlZ2lu
bmluZy54KCkgKyBlbmQud2lkdGgoKSk7Cit9CisKK2F1dG8gR2x5cGhUb1BhdGhUcmFuc2xhdG9y
Ojp1bmRlcmxpbmVUeXBlKCkgLT4gR2x5cGhVbmRlcmxpbmVUeXBlCit7CisgICAgcmV0dXJuIGNv
bXB1dGVVbmRlcmxpbmVUeXBlKG1fdGV4dFJ1biwgbV9nbHlwaEJ1ZmZlciwgbV9pbmRleCk7Cit9
CisKK3ZvaWQgR2x5cGhUb1BhdGhUcmFuc2xhdG9yOjphZHZhbmNlKCkKK3sKKyAgICBHbHlwaEJ1
ZmZlckFkdmFuY2UgYWR2YW5jZSA9IG1fZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KG1faW5kZXgpOwor
ICAgIG1fdHJhbnNsYXRpb24udHJhbnNsYXRlKEZsb2F0U2l6ZShhZHZhbmNlLndpZHRoKCksIGFk
dmFuY2UuaGVpZ2h0KCkpKTsKKyAgICArK21faW5kZXg7CisgICAgaWYgKG1faW5kZXggPCBtX2ds
eXBoQnVmZmVyLnNpemUoKSkKKyAgICAgICAgbV9mb250RGF0YSA9IG1fZ2x5cGhCdWZmZXIuZm9u
dEF0KG1faW5kZXgpOworfQorCitEYXNoQXJyYXkgRm9udENhc2NhZGU6OmRhc2hlc0ZvckludGVy
c2VjdGlvbnNXaXRoUmVjdChjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHRl
eHRPcmlnaW4sIGNvbnN0IEZsb2F0UmVjdCYgbGluZUV4dGVudHMpIGNvbnN0Cit7CisgICAgaWYg
KGlzTG9hZGluZ0N1c3RvbUZvbnRzKCkpCisgICAgICAgIHJldHVybiBEYXNoQXJyYXkoKTsKKwor
ICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOworICAgIGdseXBoQnVmZmVyLnNhdmVPZmZzZXRz
SW5TdHJpbmcoKTsKKyAgICBmbG9hdCBkZWx0YVg7CisgICAgaWYgKGNvZGVQYXRoKHJ1bikgIT0g
Rm9udENhc2NhZGU6OkNvbXBsZXgpCisgICAgICAgIGRlbHRhWCA9IGdldEdseXBoc0FuZEFkdmFu
Y2VzRm9yU2ltcGxlVGV4dChydW4sIDAsIHJ1bi5sZW5ndGgoKSwgZ2x5cGhCdWZmZXIpOworICAg
IGVsc2UKKyAgICAgICAgZGVsdGFYID0gZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4
dChydW4sIDAsIHJ1bi5sZW5ndGgoKSwgZ2x5cGhCdWZmZXIpOworCisgICAgaWYgKCFnbHlwaEJ1
ZmZlci5zaXplKCkpCisgICAgICAgIHJldHVybiBEYXNoQXJyYXkoKTsKKworICAgIEZsb2F0UG9p
bnQgb3JpZ2luID0gRmxvYXRQb2ludCh0ZXh0T3JpZ2luLngoKSArIGRlbHRhWCwgdGV4dE9yaWdp
bi55KCkpOworICAgIEdseXBoVG9QYXRoVHJhbnNsYXRvciB0cmFuc2xhdG9yKHJ1biwgZ2x5cGhC
dWZmZXIsIG9yaWdpbik7CisgICAgRGFzaEFycmF5IHJlc3VsdDsKKyAgICBmb3IgKHVuc2lnbmVk
IGluZGV4ID0gMDsgdHJhbnNsYXRvci5jb250YWluc01vcmVQYXRocygpOyArK2luZGV4LCB0cmFu
c2xhdG9yLmFkdmFuY2UoKSkgeworICAgICAgICBhdXRvIGluZm8gPSBHbHlwaEl0ZXJhdGlvblN0
YXRlKENHUG9pbnRNYWtlKDAsIDApLCBDR1BvaW50TWFrZSgwLCAwKSwgbGluZUV4dGVudHMueSgp
LCBsaW5lRXh0ZW50cy55KCkgKyBsaW5lRXh0ZW50cy5oZWlnaHQoKSwgbGluZUV4dGVudHMueCgp
ICsgbGluZUV4dGVudHMud2lkdGgoKSwgbGluZUV4dGVudHMueCgpKTsKKyAgICAgICAgY29uc3Qg
Rm9udCogbG9jYWxGb250ID0gZ2x5cGhCdWZmZXIuZm9udEF0KGluZGV4KTsKKyAgICAgICAgaWYg
KCFsb2NhbEZvbnQpIHsKKyAgICAgICAgICAgIC8vIFRoZSBhZHZhbmNlcyB3aWxsIGdldCBhbGwg
bWVzc2VkIHVwIGlmIHdlIGRvIGFueXRoaW5nIG90aGVyIHRoYW4gYmFpbCBoZXJlLgorICAgICAg
ICAgICAgcmVzdWx0LmNsZWFyKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICBzd2l0Y2ggKHRyYW5zbGF0b3IudW5kZXJsaW5lVHlwZSgpKSB7CisgICAgICAgIGNhc2Ug
R2x5cGhVbmRlcmxpbmVUeXBlOjpTa2lwRGVzY2VuZGVyczogeworICAgICAgICAgICAgUGF0aCBw
YXRoID0gdHJhbnNsYXRvci5wYXRoKCk7CisgICAgICAgICAgICBwYXRoLmFwcGx5KFsmXShjb25z
dCBQYXRoRWxlbWVudCYgZWxlbWVudCkgeworICAgICAgICAgICAgICAgIGZpbmRQYXRoSW50ZXJz
ZWN0aW9ucyhpbmZvLCBlbGVtZW50KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgaWYg
KGluZm8ubWluWCA8IGluZm8ubWF4WCkgeworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
aW5mby5taW5YIC0gbGluZUV4dGVudHMueCgpKTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKGluZm8ubWF4WCAtIGxpbmVFeHRlbnRzLngoKSk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdseXBoVW5kZXJsaW5lVHlwZTo6
U2tpcEdseXBoOiB7CisgICAgICAgICAgICBzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0PiBleHRlbnRz
ID0gdHJhbnNsYXRvci5leHRlbnRzKCk7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGV4dGVu
dHMuZmlyc3QgLSBsaW5lRXh0ZW50cy54KCkpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChl
eHRlbnRzLnNlY29uZCAtIGxpbmVFeHRlbnRzLngoKSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICBjYXNlIEdseXBoVW5kZXJsaW5lVHlwZTo6RHJhd092ZXJHbHlwaDoK
KyAgICAgICAgICAgIC8vIE5vdGhpbmcgdG8gZG8KKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYXNjYWRlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FzY2FkZS5oCmluZGV4IDk3MDY5OGE0MzVmYTk4YjQ3
NGQ1MDdlNTZlY2E3NmY1OTIyMGRkZjQuLjc2NjMyY2YxMTYwNTliODU0YjBmODQ0ZTU1MmZkOGJh
MmRmNGQwM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRDYXNjYWRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENh
c2NhZGUuaApAQCAtODEsMTggKzgxLDYgQEAgc3RydWN0IEdseXBoT3ZlcmZsb3cgewogICAgIGJv
b2wgY29tcHV0ZUJvdW5kcyB7IGZhbHNlIH07CiB9OwogCi1jbGFzcyBHbHlwaFRvUGF0aFRyYW5z
bGF0b3IgewotcHVibGljOgotICAgIGVudW0gY2xhc3MgR2x5cGhVbmRlcmxpbmVUeXBlIHtTa2lw
RGVzY2VuZGVycywgU2tpcEdseXBoLCBEcmF3T3ZlckdseXBofTsKLSAgICB2aXJ0dWFsIGJvb2wg
Y29udGFpbnNNb3JlUGF0aHMoKSA9IDA7Ci0gICAgdmlydHVhbCBQYXRoIHBhdGgoKSA9IDA7Ci0g
ICAgdmlydHVhbCBzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0PiBleHRlbnRzKCkgPSAwOwotICAgIHZp
cnR1YWwgR2x5cGhVbmRlcmxpbmVUeXBlIHVuZGVybGluZVR5cGUoKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGFkdmFuY2UoKSA9IDA7Ci0gICAgdmlydHVhbCB+R2x5cGhUb1BhdGhUcmFuc2xhdG9y
KCkgPSBkZWZhdWx0OwotfTsKLUdseXBoVG9QYXRoVHJhbnNsYXRvcjo6R2x5cGhVbmRlcmxpbmVU
eXBlIGNvbXB1dGVVbmRlcmxpbmVUeXBlKGNvbnN0IFRleHRSdW4mLCBjb25zdCBHbHlwaEJ1ZmZl
ciYsIHVuc2lnbmVkIGluZGV4KTsKLQogY2xhc3MgVGV4dExheW91dERlbGV0ZXIgewogcHVibGlj
OgogICAgIHZvaWQgb3BlcmF0b3IoKShUZXh0TGF5b3V0KikgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250TWV0cmljcy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udE1ldHJpY3MuaAppbmRleCBlOGRkZWNkNzJlMThj
YjMxMWNhNjY4NDM1ZDYxYWM1NzBhMTM4MGY2Li5iMTBmZTViZTViMzRiZTIyZDI0NTJiNjZiNWIw
NTliZTRkNGI5ODg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Gb250TWV0cmljcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zv
bnRNZXRyaWNzLmgKQEAgLTEwMiw2ICsxMDIsMTIgQEAgcHVibGljOgogICAgIGZsb2F0IHplcm9X
aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1femVyb1dpZHRoOyB9CiAgICAgdm9pZCBzZXRaZXJvV2lk
dGgoZmxvYXQgemVyb1dpZHRoKSB7IG1femVyb1dpZHRoID0gemVyb1dpZHRoOyB9CiAKKyAgICBm
bG9hdCB1bmRlcmxpbmVQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fdW5kZXJsaW5lUG9zaXRp
b247IH0KKyAgICB2b2lkIHNldFVuZGVybGluZVBvc2l0aW9uKGZsb2F0IHVuZGVybGluZVBvc2l0
aW9uKSB7IG1fdW5kZXJsaW5lUG9zaXRpb24gPSB1bmRlcmxpbmVQb3NpdGlvbjsgfQorCisgICAg
ZmxvYXQgdW5kZXJsaW5lVGhpY2tuZXNzKCkgY29uc3QgeyByZXR1cm4gbV91bmRlcmxpbmVUaGlj
a25lc3M7IH0KKyAgICB2b2lkIHNldFVuZGVybGluZVRoaWNrbmVzcyhmbG9hdCB1bmRlcmxpbmVU
aGlja25lc3MpIHsgbV91bmRlcmxpbmVUaGlja25lc3MgPSB1bmRlcmxpbmVUaGlja25lc3M7IH0K
KwogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRm9udDsKIApAQCAtMTI1LDYgKzEzMSw4IEBA
IHByaXZhdGU6CiAgICAgZmxvYXQgbV96ZXJvV2lkdGggeyAwIH07CiAgICAgZmxvYXQgbV94SGVp
Z2h0IHsgMCB9OwogICAgIGZsb2F0IG1fY2FwSGVpZ2h0IHsgMCB9OworICAgIGZsb2F0IG1fdW5k
ZXJsaW5lUG9zaXRpb24geyAwIH07CisgICAgZmxvYXQgbV91bmRlcmxpbmVUaGlja25lc3MgeyAw
IH07CiB9OwogCiBzdGF0aWMgaW5saW5lIGZsb2F0IHNjYWxlRW1Ub1VuaXRzKGZsb2F0IHgsIHVu
c2lnbmVkIHVuaXRzUGVyRW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HbHlwaE1ldHJpY3NNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dseXBoTWV0cmljc01hcC5oCmluZGV4IDRmMGY1OGE1ODcyMTYwNjg3NzFjNGE0N2JjZjhk
OTJiYTVmNTg5OWIuLjNjOTJiNzY1ZWQ1Y2FmNjI1YmZiZTA2MjVjYjEwMWRlMzQ4MTg1ZDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01h
cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dseXBoTWV0cmljc01h
cC5oCkBAIC0zMCw2ICszMCw3IEBACiAjZGVmaW5lIEdseXBoTWV0cmljc01hcF9oCiAKICNpbmNs
dWRlICJHbHlwaC5oIgorI2luY2x1ZGUgIlBhdGguaCIKICNpbmNsdWRlIDxhcnJheT4KICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgogCkBAIC00NSw2ICs0NiwxMSBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBsb2NhdGVQYWdlKGdseXBoIC8gR2x5cGhNZXRyaWNzUGFnZTo6c2l6ZSkubWV0cmlj
c0ZvckdseXBoKGdseXBoKTsKICAgICB9CiAKKyAgICBjb25zdCBUJiBleGlzdGluZ01ldHJpY3NG
b3JHbHlwaChHbHlwaCBnbHlwaCkKKyAgICB7CisgICAgICAgIHJldHVybiBsb2NhdGVQYWdlKGds
eXBoIC8gR2x5cGhNZXRyaWNzUGFnZTo6c2l6ZSkuZXhpc3RpbmdNZXRyaWNzRm9yR2x5cGgoZ2x5
cGgpOworICAgIH0KKwogICAgIHZvaWQgc2V0TWV0cmljc0ZvckdseXBoKEdseXBoIGdseXBoLCBj
b25zdCBUJiBtZXRyaWNzKQogICAgIHsKICAgICAgICAgbG9jYXRlUGFnZShnbHlwaCAvIEdseXBo
TWV0cmljc1BhZ2U6OnNpemUpLnNldE1ldHJpY3NGb3JHbHlwaChnbHlwaCwgbWV0cmljcyk7CkBA
IC02OCw2ICs3NCw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBUIG1ldHJpY3NG
b3JHbHlwaChHbHlwaCBnbHlwaCkgY29uc3QgeyByZXR1cm4gbV9tZXRyaWNzW2dseXBoICUgc2l6
ZV07IH0KKyAgICAgICAgY29uc3QgVCYgZXhpc3RpbmdNZXRyaWNzRm9yR2x5cGgoR2x5cGggZ2x5
cGgpIGNvbnN0IHsgcmV0dXJuIG1fbWV0cmljc1tnbHlwaCAlIHNpemVdOyB9CiAgICAgICAgIHZv
aWQgc2V0TWV0cmljc0ZvckdseXBoKEdseXBoIGdseXBoLCBjb25zdCBUJiBtZXRyaWNzKQogICAg
ICAgICB7CiAgICAgICAgICAgICBzZXRNZXRyaWNzRm9ySW5kZXgoZ2x5cGggJSBzaXplLCBtZXRy
aWNzKTsKQEAgLTEwOCw2ICsxMTUsMTEgQEAgdGVtcGxhdGU8PiBpbmxpbmUgRmxvYXRSZWN0IEds
eXBoTWV0cmljc01hcDxGbG9hdFJlY3Q+Ojp1bmtub3duTWV0cmljcygpCiAgICAgcmV0dXJuIEZs
b2F0UmVjdCgwLCAwLCBjR2x5cGhTaXplVW5rbm93biwgY0dseXBoU2l6ZVVua25vd24pOwogfQog
Cit0ZW1wbGF0ZTw+IGlubGluZSBzdGQ6Om9wdGlvbmFsPFBhdGg+IEdseXBoTWV0cmljc01hcDxz
dGQ6Om9wdGlvbmFsPFBhdGg+Pjo6dW5rbm93bk1ldHJpY3MoKQoreworICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7Cit9CisKIHRlbXBsYXRlPGNsYXNzIFQ+IHR5cGVuYW1lIEdseXBoTWV0cmljc01h
cDxUPjo6R2x5cGhNZXRyaWNzUGFnZSYgR2x5cGhNZXRyaWNzTWFwPFQ+Ojpsb2NhdGVQYWdlU2xv
d0Nhc2UodW5zaWduZWQgcGFnZU51bWJlcikKIHsKICAgICBpZiAoIXBhZ2VOdW1iZXIpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
Y3BwCmluZGV4IDVkNjZmYjg5NDIwYTFlYTA1NzEwOGRlZDQzMzVmYzZmZjQwMTBhMmUuLmU5YjQz
MDQ3MDk5MzgwMThlYjYwZjEyMmNiNDFkYmZiZGJkMjlkM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtOTcxLDM1
ICs5NzEsNiBAQCBib29sIEdyYXBoaWNzQ29udGV4dDo6aXNBY2NlbGVyYXRlZENvbnRleHQoKSBj
b25zdAogfQogI2VuZGlmCiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjphZGp1c3RMaW5lVG9QaXhl
bEJvdW5kYXJpZXMoRmxvYXRQb2ludCYgcDEsIEZsb2F0UG9pbnQmIHAyLCBmbG9hdCBzdHJva2VX
aWR0aCwgU3Ryb2tlU3R5bGUgcGVuU3R5bGUpCi17Ci0gICAgLy8gRm9yIG9kZCB3aWR0aHMsIHdl
IGFkZCBpbiAwLjUgdG8gdGhlIGFwcHJvcHJpYXRlIHgveSBzbyB0aGF0IHRoZSBmbG9hdCBhcml0
aG1ldGljCi0gICAgLy8gd29ya3Mgb3V0LiAgRm9yIGV4YW1wbGUsIHdpdGggYSBib3JkZXIgd2lk
dGggb2YgMywgV2ViS2l0IHdpbGwgcGFzcyB1cyAoeTEreTIpLzIsIGUuZy4sCi0gICAgLy8gKDUw
KzUzKS8yID0gMTAzLzIgPSA1MSB3aGVuIHdlIHdhbnQgNTEuNS4gIEl0IGlzIGFsd2F5cyB0cnVl
IHRoYXQgYW4gZXZlbiB3aWR0aCBnYXZlCi0gICAgLy8gdXMgYSBwZXJmZWN0IHBvc2l0aW9uLCBi
dXQgYW4gb2RkIHdpZHRoIGdhdmUgdXMgYSBwb3NpdGlvbiB0aGF0IGlzIG9mZiBieSBleGFjdGx5
IDAuNS4KLSAgICBpZiAocGVuU3R5bGUgPT0gRG90dGVkU3Ryb2tlIHx8IHBlblN0eWxlID09IERh
c2hlZFN0cm9rZSkgewotICAgICAgICBpZiAocDEueCgpID09IHAyLngoKSkgewotICAgICAgICAg
ICAgcDEuc2V0WShwMS55KCkgKyBzdHJva2VXaWR0aCk7Ci0gICAgICAgICAgICBwMi5zZXRZKHAy
LnkoKSAtIHN0cm9rZVdpZHRoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHAxLnNl
dFgocDEueCgpICsgc3Ryb2tlV2lkdGgpOwotICAgICAgICAgICAgcDIuc2V0WChwMi54KCkgLSBz
dHJva2VXaWR0aCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoc3RhdGljX2Nhc3Q8aW50
PihzdHJva2VXaWR0aCkgJSAyKSB7IC8vb2RkCi0gICAgICAgIGlmIChwMS54KCkgPT0gcDIueCgp
KSB7Ci0gICAgICAgICAgICAvLyBXZSdyZSBhIHZlcnRpY2FsIGxpbmUuICBBZGp1c3Qgb3VyIHgu
Ci0gICAgICAgICAgICBwMS5zZXRYKHAxLngoKSArIDAuNWYpOwotICAgICAgICAgICAgcDIuc2V0
WChwMi54KCkgKyAwLjVmKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIFdlJ3Jl
IGEgaG9yaXpvbnRhbCBsaW5lLiBBZGp1c3Qgb3VyIHkuCi0gICAgICAgICAgICBwMS5zZXRZKHAx
LnkoKSArIDAuNWYpOwotICAgICAgICAgICAgcDIuc2V0WShwMi55KCkgKyAwLjVmKTsKLSAgICAg
ICAgfQotICAgIH0KLX0KLQogI2lmICFVU0UoQ0cpICYmICFVU0UoRElSRUNUMkQpCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6cGxhdGZvcm1BcHBseURldmljZVNjYWxlRmFjdG9yKGZsb2F0KQogewpA
QCAtMTA4MywxOCArMTA1NCwxOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6cGxhdGZvcm1TdHJv
a2VFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYgZWxsaXBzZSkKIH0KICNlbmRpZgogCi1GbG9hdFJl
Y3QgR3JhcGhpY3NDb250ZXh0Ojpjb21wdXRlVW5kZXJsaW5lQm91bmRzRm9yVGV4dChjb25zdCBG
bG9hdFBvaW50JiBwb2ludCwgZmxvYXQgd2lkdGgsIGJvb2wgcHJpbnRpbmcpCitGbG9hdFJlY3Qg
R3JhcGhpY3NDb250ZXh0Ojpjb21wdXRlVW5kZXJsaW5lQm91bmRzRm9yVGV4dChjb25zdCBGbG9h
dFJlY3QmIHJlY3QsIGJvb2wgcHJpbnRpbmcpCiB7CiAgICAgQ29sb3IgZHVtbXlDb2xvcjsKLSAg
ICByZXR1cm4gY29tcHV0ZUxpbmVCb3VuZHNBbmRBbnRpYWxpYXNpbmdNb2RlRm9yVGV4dChwb2lu
dCwgd2lkdGgsIHByaW50aW5nLCBkdW1teUNvbG9yKTsKKyAgICByZXR1cm4gY29tcHV0ZUxpbmVC
b3VuZHNBbmRBbnRpYWxpYXNpbmdNb2RlRm9yVGV4dChyZWN0LCBwcmludGluZywgZHVtbXlDb2xv
cik7CiB9CiAKLUZsb2F0UmVjdCBHcmFwaGljc0NvbnRleHQ6OmNvbXB1dGVMaW5lQm91bmRzQW5k
QW50aWFsaWFzaW5nTW9kZUZvclRleHQoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGZsb2F0IHdp
ZHRoLCBib29sIHByaW50aW5nLCBDb2xvciYgY29sb3IpCisvLyBJbiBjb250cmFzdCB0byBjb21w
dXRlVW5kZXJsaW5lR2FwKCksIHRoaXMgbnVkZ2VzIHRoZSB1bmRlcmxpbmUgcmVjdCBhcm91bmQg
c28gaXQgbG9va3MgY3Jpc3Agb24gY29tcHV0ZXIgbW9uaXRvcnMuCitGbG9hdFJlY3QgR3JhcGhp
Y3NDb250ZXh0Ojpjb21wdXRlTGluZUJvdW5kc0FuZEFudGlhbGlhc2luZ01vZGVGb3JUZXh0KGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgYm9vbCBwcmludGluZywgQ29sb3ImIGNvbG9yKQogewotICAg
IEZsb2F0UG9pbnQgb3JpZ2luID0gcG9pbnQ7Ci0gICAgZmxvYXQgdGhpY2tuZXNzID0gc3RkOjpt
YXgoc3Ryb2tlVGhpY2tuZXNzKCksIDAuNWYpOworICAgIEZsb2F0UG9pbnQgb3JpZ2luID0gcmVj
dC5sb2NhdGlvbigpOworICAgIGZsb2F0IHRoaWNrbmVzcyA9IHN0ZDo6bWF4KHJlY3QuaGVpZ2h0
KCksIDAuNWYpOwogICAgIGlmIChwcmludGluZykKLSAgICAgICAgcmV0dXJuIEZsb2F0UmVjdChv
cmlnaW4sIEZsb2F0U2l6ZSh3aWR0aCwgdGhpY2tuZXNzKSk7CisgICAgICAgIHJldHVybiBGbG9h
dFJlY3Qob3JpZ2luLCBGbG9hdFNpemUocmVjdC53aWR0aCgpLCB0aGlja25lc3MpKTsKIAogICAg
IEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm0gPSBnZXRDVE0oR3JhcGhpY3NDb250ZXh0OjpEZWZp
bml0ZWx5SW5jbHVkZURldmljZVNjYWxlKTsKICAgICAvLyBKdXN0IGNvbXB1dGUgc2NhbGUgaW4g
eCBkaW1lbnNpb24sIGFzc3VtaW5nIHggYW5kIHkgc2NhbGVzIGFyZSBlcXVhbC4KQEAgLTExMDgs
MTIgKzEwODAsMTIgQEAgRmxvYXRSZWN0IEdyYXBoaWNzQ29udGV4dDo6Y29tcHV0ZUxpbmVCb3Vu
ZHNBbmRBbnRpYWxpYXNpbmdNb2RlRm9yVGV4dChjb25zdCBGbG8KICAgICAgICAgY29sb3IgPSBj
b2xvci5jb2xvcldpdGhBbHBoYU11bHRpcGxpZWRCeShzaGFkZSk7CiAgICAgfQogCi0gICAgRmxv
YXRQb2ludCBkZXZpY2VQb2ludCA9IHRyYW5zZm9ybS5tYXBQb2ludChwb2ludCk7CisgICAgRmxv
YXRQb2ludCBkZXZpY2VQb2ludCA9IHRyYW5zZm9ybS5tYXBQb2ludChyZWN0LmxvY2F0aW9uKCkp
OwogICAgIC8vIFZpc3VhbCBvdmVyZmxvdyBtaWdodCBvY2N1ciBoZXJlIGR1ZSB0byBpbnRlZ3Jh
bCByb3VuZGYvY2VpbGYuIHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMgYWRqdXN0cyB0aGUg
b3ZlcmZsb3cgdmFsdWUgZm9yIHVuZGVybGluZSBkZWNvcmF0aW9uLgogICAgIEZsb2F0UG9pbnQg
ZGV2aWNlT3JpZ2luID0gRmxvYXRQb2ludChyb3VuZGYoZGV2aWNlUG9pbnQueCgpKSwgY2VpbGYo
ZGV2aWNlUG9pbnQueSgpKSk7CiAgICAgaWYgKGF1dG8gaW52ZXJzZSA9IHRyYW5zZm9ybS5pbnZl
cnNlKCkpCiAgICAgICAgIG9yaWdpbiA9IGludmVyc2UudmFsdWUoKS5tYXBQb2ludChkZXZpY2VP
cmlnaW4pOwotICAgIHJldHVybiBGbG9hdFJlY3Qob3JpZ2luLCBGbG9hdFNpemUod2lkdGgsIHRo
aWNrbmVzcykpOworICAgIHJldHVybiBGbG9hdFJlY3Qob3JpZ2luLCBGbG9hdFNpemUocmVjdC53
aWR0aCgpLCB0aGlja25lc3MpKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmFwcGx5U3Rh
dGUoY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAppbmRleCA0OTdkMmM3OWZk
MmNiMDhmYzNkMGNjYmY4ZjhlYTIyNzNjNDMxMDFjLi43OTlmOTMyNDRlODExODBkOThiN2NlN2Vl
ZDQ3MjdiNGU0ZGUwZGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaApAQCAtNDE5LDkgKzQxOSw5IEBAIHB1YmxpYzoKICAgICB9
OwogICAgIEZsb2F0UmVjdCByb3VuZFRvRGV2aWNlUGl4ZWxzKGNvbnN0IEZsb2F0UmVjdCYsIFJv
dW5kaW5nTW9kZSA9IFJvdW5kQWxsU2lkZXMpOwogCi0gICAgRmxvYXRSZWN0IGNvbXB1dGVVbmRl
cmxpbmVCb3VuZHNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmLCBmbG9hdCB3aWR0aCwgYm9vbCBw
cmludGluZyk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkcmF3TGluZUZvclRleHQoY29uc3Qg
RmxvYXRQb2ludCYsIGZsb2F0IHdpZHRoLCBib29sIHByaW50aW5nLCBib29sIGRvdWJsZUxpbmVz
ID0gZmFsc2UsIFN0cm9rZVN0eWxlID0gU29saWRTdHJva2UpOwotICAgIHZvaWQgZHJhd0xpbmVz
Rm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRGFzaEFycmF5JiB3aWR0aHMsIGJvb2wg
cHJpbnRpbmcsIGJvb2wgZG91YmxlTGluZXMgPSBmYWxzZSwgU3Ryb2tlU3R5bGUgPSBTb2xpZFN0
cm9rZSk7CisgICAgRmxvYXRSZWN0IGNvbXB1dGVVbmRlcmxpbmVCb3VuZHNGb3JUZXh0KGNvbnN0
IEZsb2F0UmVjdCYsIGJvb2wgcHJpbnRpbmcpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJh
d0xpbmVGb3JUZXh0KGNvbnN0IEZsb2F0UmVjdCYsIGJvb2wgcHJpbnRpbmcsIGJvb2wgZG91Ymxl
TGluZXMgPSBmYWxzZSwgU3Ryb2tlU3R5bGUgPSBTb2xpZFN0cm9rZSk7CisgICAgdm9pZCBkcmF3
TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmLCBmbG9hdCB0aGlja25lc3MsIGNvbnN0IERh
c2hBcnJheSYgd2lkdGhzLCBib29sIHByaW50aW5nLCBib29sIGRvdWJsZUxpbmVzID0gZmFsc2Us
IFN0cm9rZVN0eWxlID0gU29saWRTdHJva2UpOwogICAgIHZvaWQgZHJhd0xpbmVGb3JEb2N1bWVu
dE1hcmtlcihjb25zdCBGbG9hdFBvaW50JiwgZmxvYXQgd2lkdGgsIERvY3VtZW50TWFya2VyTGlu
ZVN0eWxlKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYmVnaW5UcmFuc3BhcmVuY3lMYXll
cihmbG9hdCBvcGFjaXR5KTsKQEAgLTU3Niw4ICs1NzYsNiBAQCBwdWJsaWM6CiAjZW5kaWYgLy8g
UExBVEZPUk0oV0lOKQogI2VuZGlmIC8vIE9TKFdJTkRPV1MpCiAKLSAgICBzdGF0aWMgdm9pZCBh
ZGp1c3RMaW5lVG9QaXhlbEJvdW5kYXJpZXMoRmxvYXRQb2ludCYgcDEsIEZsb2F0UG9pbnQmIHAy
LCBmbG9hdCBzdHJva2VXaWR0aCwgU3Ryb2tlU3R5bGUpOwotCiAgICAgYm9vbCBzdXBwb3J0c0lu
dGVybmFsTGlua3MoKSBjb25zdDsKIAogcHJpdmF0ZToKQEAgLTYyNyw3ICs2MjUsNyBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBwbGF0Zm9ybUZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5k
ZWRSZWN0JiwgY29uc3QgQ29sb3ImKTsKIAotICAgIEZsb2F0UmVjdCBjb21wdXRlTGluZUJvdW5k
c0FuZEFudGlhbGlhc2luZ01vZGVGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmLCBmbG9hdCB3aWR0
aCwgYm9vbCBwcmludGluZywgQ29sb3ImKTsKKyAgICBGbG9hdFJlY3QgY29tcHV0ZUxpbmVCb3Vu
ZHNBbmRBbnRpYWxpYXNpbmdNb2RlRm9yVGV4dChjb25zdCBGbG9hdFJlY3QmLCBib29sIHByaW50
aW5nLCBDb2xvciYpOwogCiAgICAgZmxvYXQgZGFzaGVkTGluZUNvcm5lcldpZHRoRm9yU3Ryb2tl
V2lkdGgoZmxvYXQpIGNvbnN0OwogICAgIGZsb2F0IGRhc2hlZExpbmVQYXR0ZXJuV2lkdGhGb3JT
dHJva2VXaWR0aChmbG9hdCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgKaW5kZXggNDdmYjRhNDJlZTQzYjRl
ZmQxNmZiYmI0NDQ4ZWMxZDkxZjhkYTM3Ny4uODZhZjlhNWJjODY1OWM3M2VhMGM1YWVhNDU1MTJl
ZTA1ZTJmMWEyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dEltcGwuaApAQCAtNzgsNyArNzgsNyBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQgYm9yZGVyVGhp
Y2tuZXNzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdMaW5lKGNvbnN0IEZsb2F0UG9pbnQm
LCBjb25zdCBGbG9hdFBvaW50JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkcmF3TGluZXNGb3JU
ZXh0KGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBEYXNoQXJyYXkmIHdpZHRocywgYm9vbCBwcmlu
dGluZywgYm9vbCBkb3VibGVMaW5lcywgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIGRyYXdMaW5lc0ZvclRleHQoY29uc3QgRmxvYXRQb2ludCYsIGZsb2F0IHRo
aWNrbmVzcywgY29uc3QgRGFzaEFycmF5JiB3aWR0aHMsIGJvb2wgcHJpbnRpbmcsIGJvb2wgZG91
YmxlTGluZXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0xpbmVGb3JEb2N1bWVudE1hcmtl
cihjb25zdCBGbG9hdFBvaW50JiwgZmxvYXQgd2lkdGgsIERvY3VtZW50TWFya2VyTGluZVN0eWxl
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdFbGxpcHNlKGNvbnN0IEZsb2F0UmVjdCYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhdGgoY29uc3QgUGF0aCYpID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RleHRSdW4uaAppbmRleCBlMmJiNGJlNGRmOGM5ZWIx
NjE2N2VjM2M4MWExZGJjZjMwYmYzYWNhLi44MGQyODE3ODM3MGMyNDgwMzM1MmM0OWE1MGQzYTU4
MzYxNWYzZWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9U
ZXh0UnVuLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVGV4dFJ1bi5o
CkBAIC0zNSw3ICszNSw2IEBAIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIEZvbnRDYXNjYWRlOwog
Y2xhc3MgR3JhcGhpY3NDb250ZXh0OwogY2xhc3MgR2x5cGhCdWZmZXI7Ci1jbGFzcyBHbHlwaFRv
UGF0aFRyYW5zbGF0b3I7CiBjbGFzcyBGb250OwogCiBzdHJ1Y3QgR2x5cGhEYXRhOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAK
aW5kZXggMjg2YmM2ZDhlM2MyNjUzMDQ2YzYzYjUyYjM2ZDA5MDMxZjIwOGQ5MC4uNGQ1MTBiOTY3
NDk2MmRkNzA4OWVmNjQzOWVjYWI5ZmI2NDg3NDFjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCkBAIC03OCwxMDMgKzc4
LDcgQEAgdm9pZCBGb250Q2FzY2FkZTo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IEcKICAgICAgICAgc3RhdGUudGV4dERyYXdpbmdN
b2RlLCBzdGF0ZS5zdHJva2VUaGlja25lc3MsIHN0YXRlLnNoYWRvd09mZnNldCwgc3RhdGUuc2hh
ZG93Q29sb3IpOwogfQogCi0jaWYgRU5BQkxFKENTUzNfVEVYVF9ERUNPUkFUSU9OX1NLSVBfSU5L
KQotc3RydWN0IEdseXBoSXRlcmF0aW9uU3RhdGUgewotICAgIEdseXBoSXRlcmF0aW9uU3RhdGUo
RmxvYXRQb2ludCBzdGFydGluZ1BvaW50LCBGbG9hdFBvaW50IGN1cnJlbnRQb2ludCwgZmxvYXQg
Y2VudGVyT2ZMaW5lLCBmbG9hdCBtaW5YLCBmbG9hdCBtYXhYKQotICAgICAgICA6IHN0YXJ0aW5n
UG9pbnQoc3RhcnRpbmdQb2ludCkKLSAgICAgICAgLCBjdXJyZW50UG9pbnQoY3VycmVudFBvaW50
KQotICAgICAgICAsIGNlbnRlck9mTGluZShjZW50ZXJPZkxpbmUpCi0gICAgICAgICwgbWluWCht
aW5YKQotICAgICAgICAsIG1heFgobWF4WCkKLSAgICB7Ci0gICAgfQotICAgIEZsb2F0UG9pbnQg
c3RhcnRpbmdQb2ludDsKLSAgICBGbG9hdFBvaW50IGN1cnJlbnRQb2ludDsKLSAgICBmbG9hdCBj
ZW50ZXJPZkxpbmU7Ci0gICAgZmxvYXQgbWluWDsKLSAgICBmbG9hdCBtYXhYOwotfTsKLQotc3Rh
dGljIGJvb2wgZmluZEludGVyc2VjdGlvblBvaW50KGZsb2F0IHksIEZsb2F0UG9pbnQgcDEsIEZs
b2F0UG9pbnQgcDIsIGZsb2F0JiB4KQotewotICAgIHggPSBwMS54KCkgKyAoeSAtIHAxLnkoKSkg
KiAocDIueCgpIC0gcDEueCgpKSAvIChwMi55KCkgLSBwMS55KCkpOwotICAgIHJldHVybiAocDEu
eSgpIDwgeSAmJiBwMi55KCkgPiB5KSB8fCAocDEueSgpID4geSAmJiBwMi55KCkgPCB5KTsKLX0K
LQotc3RhdGljIHZvaWQgdXBkYXRlWChHbHlwaEl0ZXJhdGlvblN0YXRlJiBzdGF0ZSwgZmxvYXQg
eCkKLXsKLSAgICBzdGF0ZS5taW5YID0gc3RkOjptaW4oc3RhdGUubWluWCwgeCk7Ci0gICAgc3Rh
dGUubWF4WCA9IHN0ZDo6bWF4KHN0YXRlLm1heFgsIHgpOwotfQotCi0vLyBUaGlzIGZ1bmN0aW9u
IGlzIGNhbGxlZCBieSBQYXRoOjphcHBseSBhbmQgaXMgdGhlcmVmb3JlIGludm9rZWQgZm9yIGVh
Y2ggY29udG91ciBpbiBhIGdseXBoLiBUaGlzCi0vLyBmdW5jdGlvbiBtb2RlbHMgZWFjaCBjb250
b3VycyBhcyBhIHN0cmFpZ2h0IGxpbmUgYW5kIGNhbGN1bGF0ZXMgdGhlIGludGVyc2VjdGlvbnMg
YmV0d2VlbiBlYWNoCi0vLyBwc2V1ZG8tY29udG91ciBhbmQgdGhlIHZlcnRpY2FsIGNlbnRlciBv
ZiB0aGUgdW5kZXJsaW5lIGZvdW5kIGluIEdseXBoSXRlcmF0aW9uU3RhdGU6OmNlbnRlck9mTGlu
ZS4KLS8vIEl0IGtlZXBzIHRyYWNrIG9mIHRoZSBsZWZ0bW9zdCBhbmQgcmlnaHRtb3N0IGludGVy
c2VjdGlvbiBpbiAgR2x5cGhJdGVyYXRpb25TdGF0ZTo6bWluWCBhbmQgCi0vLyBHbHlwaEl0ZXJh
dGlvblN0YXRlOjptYXhYLgotc3RhdGljIHZvaWQgZmluZFBhdGhJbnRlcnNlY3Rpb25zKEdseXBo
SXRlcmF0aW9uU3RhdGUmIHN0YXRlLCBjb25zdCBQYXRoRWxlbWVudCYgZWxlbWVudCkKLXsKLSAg
ICBib29sIGRvSW50ZXJzZWN0aW9uID0gZmFsc2U7Ci0gICAgRmxvYXRQb2ludCBwb2ludCA9IEZs
b2F0UG9pbnQoKTsKLSAgICBzd2l0Y2ggKGVsZW1lbnQudHlwZSkgewotICAgIGNhc2UgUGF0aEVs
ZW1lbnRNb3ZlVG9Qb2ludDoKLSAgICAgICAgc3RhdGUuc3RhcnRpbmdQb2ludCA9IGVsZW1lbnQu
cG9pbnRzWzBdOwotICAgICAgICBzdGF0ZS5jdXJyZW50UG9pbnQgPSBlbGVtZW50LnBvaW50c1sw
XTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQYXRoRWxlbWVudEFkZExpbmVUb1BvaW50Ogot
ICAgICAgICBkb0ludGVyc2VjdGlvbiA9IHRydWU7Ci0gICAgICAgIHBvaW50ID0gZWxlbWVudC5w
b2ludHNbMF07Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGF0aEVsZW1lbnRBZGRRdWFkQ3Vy
dmVUb1BvaW50OgotICAgICAgICBkb0ludGVyc2VjdGlvbiA9IHRydWU7Ci0gICAgICAgIHBvaW50
ID0gZWxlbWVudC5wb2ludHNbMV07Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGF0aEVsZW1l
bnRBZGRDdXJ2ZVRvUG9pbnQ6Ci0gICAgICAgIGRvSW50ZXJzZWN0aW9uID0gdHJ1ZTsKLSAgICAg
ICAgcG9pbnQgPSBlbGVtZW50LnBvaW50c1syXTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQ
YXRoRWxlbWVudENsb3NlU3VicGF0aDoKLSAgICAgICAgZG9JbnRlcnNlY3Rpb24gPSB0cnVlOwot
ICAgICAgICBwb2ludCA9IHN0YXRlLnN0YXJ0aW5nUG9pbnQ7Ci0gICAgICAgIGJyZWFrOwotICAg
IH0KLQotICAgIGlmICghZG9JbnRlcnNlY3Rpb24pCi0gICAgICAgIHJldHVybjsKLQotICAgIGZs
b2F0IHg7Ci0gICAgaWYgKGZpbmRJbnRlcnNlY3Rpb25Qb2ludChzdGF0ZS5jZW50ZXJPZkxpbmUs
IHN0YXRlLmN1cnJlbnRQb2ludCwgcG9pbnQsIHgpKQotICAgICAgICB1cGRhdGVYKHN0YXRlLCB4
KTsKLQotICAgIHN0YXRlLmN1cnJlbnRQb2ludCA9IHBvaW50OwotfQotCi1jbGFzcyBDYWlyb0ds
eXBoVG9QYXRoVHJhbnNsYXRvciBmaW5hbCA6IHB1YmxpYyBHbHlwaFRvUGF0aFRyYW5zbGF0b3Ig
ewotcHVibGljOgotICAgIENhaXJvR2x5cGhUb1BhdGhUcmFuc2xhdG9yKGNvbnN0IFRleHRSdW4m
IHRleHRSdW4sIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgY29uc3QgRmxvYXRQb2lu
dCYgdGV4dE9yaWdpbikKLSAgICAgICAgOiBtX2luZGV4KDApCi0gICAgICAgICwgbV90ZXh0UnVu
KHRleHRSdW4pCi0gICAgICAgICwgbV9nbHlwaEJ1ZmZlcihnbHlwaEJ1ZmZlcikKLSAgICAgICAg
LCBtX2ZvbnREYXRhKGdseXBoQnVmZmVyLmZvbnRBdChtX2luZGV4KSkKLSAgICAgICAgLCBtX3Ry
YW5zbGF0aW9uKEFmZmluZVRyYW5zZm9ybSgpLnRyYW5zbGF0ZSh0ZXh0T3JpZ2luLngoKSwgdGV4
dE9yaWdpbi55KCkpKQotICAgIHsKLSAgICB9Ci0KLSAgICBib29sIGNvbnRhaW5zTW9yZVBhdGhz
KCkgZmluYWwgeyByZXR1cm4gbV9pbmRleCAhPSBtX2dseXBoQnVmZmVyLnNpemUoKTsgfQotICAg
IFBhdGggcGF0aCgpIGZpbmFsOwotICAgIHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+IGV4dGVudHMo
KSBmaW5hbDsKLSAgICBHbHlwaFVuZGVybGluZVR5cGUgdW5kZXJsaW5lVHlwZSgpIGZpbmFsOwot
ICAgIHZvaWQgYWR2YW5jZSgpIGZpbmFsOwotCi1wcml2YXRlOgotICAgIHVuc2lnbmVkIG1faW5k
ZXg7Ci0gICAgY29uc3QgVGV4dFJ1biYgbV90ZXh0UnVuOwotICAgIGNvbnN0IEdseXBoQnVmZmVy
JiBtX2dseXBoQnVmZmVyOwotICAgIGNvbnN0IEZvbnQqIG1fZm9udERhdGE7Ci0gICAgQWZmaW5l
VHJhbnNmb3JtIG1fdHJhbnNsYXRpb247Ci19OwotCi1QYXRoIENhaXJvR2x5cGhUb1BhdGhUcmFu
c2xhdG9yOjpwYXRoKCkKK1BhdGggRm9udDo6cGxhdGZvcm1QYXRoRm9yR2x5cGgoR2x5cGggZ2x5
cGgpIGNvbnN0CiB7CiAgICAgUGF0aCBwYXRoOwogICAgIHBhdGguZW5zdXJlUGxhdGZvcm1QYXRo
KCk7CkBAIC0xODgsODcgKzkyLDcgQEAgUGF0aCBDYWlyb0dseXBoVG9QYXRoVHJhbnNsYXRvcjo6
cGF0aCgpCiAgICAgICAgIGNhaXJvX3RyYW5zbGF0ZShwYXRoLnBsYXRmb3JtUGF0aCgpLT5jb250
ZXh0KCksIHN5bnRoZXRpY0JvbGRPZmZzZXQsIDApOwogICAgICAgICBjYWlyb19nbHlwaF9wYXRo
KHBhdGgucGxhdGZvcm1QYXRoKCktPmNvbnRleHQoKSwgJmNhaXJvR2x5cGgsIDEpOwogICAgIH0K
LQotICAgIHBhdGgudHJhbnNmb3JtKG1fdHJhbnNsYXRpb24pOwotICAgIHJldHVybiBwYXRoOwot
fQotCi1zdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0PiBDYWlyb0dseXBoVG9QYXRoVHJhbnNsYXRvcjo6
ZXh0ZW50cygpCi17Ci0gICAgRmxvYXRQb2ludCBiZWdpbm5pbmcgPSBtX3RyYW5zbGF0aW9uLm1h
cFBvaW50KEZsb2F0UG9pbnQoKSk7Ci0gICAgRmxvYXRTaXplIGVuZCA9IG1fdHJhbnNsYXRpb24u
bWFwU2l6ZShtX2dseXBoQnVmZmVyLmFkdmFuY2VBdChtX2luZGV4KSk7Ci0gICAgcmV0dXJuIHN0
ZDo6bWFrZV9wYWlyKHN0YXRpY19jYXN0PGZsb2F0PihiZWdpbm5pbmcueCgpKSwgc3RhdGljX2Nh
c3Q8ZmxvYXQ+KGJlZ2lubmluZy54KCkgKyBlbmQud2lkdGgoKSkpOwotfQotCi1HbHlwaFRvUGF0
aFRyYW5zbGF0b3I6OkdseXBoVW5kZXJsaW5lVHlwZSBDYWlyb0dseXBoVG9QYXRoVHJhbnNsYXRv
cjo6dW5kZXJsaW5lVHlwZSgpCi17Ci0gICAgcmV0dXJuIGNvbXB1dGVVbmRlcmxpbmVUeXBlKG1f
dGV4dFJ1biwgbV9nbHlwaEJ1ZmZlciwgbV9pbmRleCk7Ci19Ci0KLXZvaWQgQ2Fpcm9HbHlwaFRv
UGF0aFRyYW5zbGF0b3I6OmFkdmFuY2UoKQotewotICAgIEdseXBoQnVmZmVyQWR2YW5jZSBhZHZh
bmNlID0gbV9nbHlwaEJ1ZmZlci5hZHZhbmNlQXQobV9pbmRleCk7Ci0gICAgbV90cmFuc2xhdGlv
biA9IG1fdHJhbnNsYXRpb24udHJhbnNsYXRlKGFkdmFuY2Uud2lkdGgoKSwgYWR2YW5jZS5oZWln
aHQoKSk7Ci0gICAgKyttX2luZGV4OwotICAgIGlmIChtX2luZGV4IDwgbV9nbHlwaEJ1ZmZlci5z
aXplKCkpCi0gICAgICAgIG1fZm9udERhdGEgPSBtX2dseXBoQnVmZmVyLmZvbnRBdChtX2luZGV4
KTsKLX0KLQotRGFzaEFycmF5IEZvbnRDYXNjYWRlOjpkYXNoZXNGb3JJbnRlcnNlY3Rpb25zV2l0
aFJlY3QoY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luLCBj
b25zdCBGbG9hdFJlY3QmIGxpbmVFeHRlbnRzKSBjb25zdAotewotICAgIGlmIChpc0xvYWRpbmdD
dXN0b21Gb250cygpKQotICAgICAgICByZXR1cm4gRGFzaEFycmF5KCk7Ci0KLSAgICBHbHlwaEJ1
ZmZlciBnbHlwaEJ1ZmZlcjsKLSAgICBnbHlwaEJ1ZmZlci5zYXZlT2Zmc2V0c0luU3RyaW5nKCk7
Ci0gICAgZmxvYXQgZGVsdGFYOwotICAgIGlmIChjb2RlUGF0aChydW4pICE9IEZvbnRDYXNjYWRl
OjpDb21wbGV4KQotICAgICAgICBkZWx0YVggPSBnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvclNpbXBs
ZVRleHQocnVuLCAwLCBydW4ubGVuZ3RoKCksIGdseXBoQnVmZmVyKTsKLSAgICBlbHNlCi0gICAg
ICAgIGRlbHRhWCA9IGdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQocnVuLCAwLCBy
dW4ubGVuZ3RoKCksIGdseXBoQnVmZmVyKTsKLQotICAgIGlmICghZ2x5cGhCdWZmZXIuc2l6ZSgp
KQotICAgICAgICByZXR1cm4gRGFzaEFycmF5KCk7Ci0KLSAgICAvLyBGSVhNRTogSGFuZGxlIFNW
RyArIG5vbi1TVkcgaW50ZXJsZWF2ZWQgcnVucy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzMzc3OAotICAgIEZsb2F0UG9pbnQgb3JpZ2luID0gRmxvYXRQb2ludCh0
ZXh0T3JpZ2luLngoKSArIGRlbHRhWCwgdGV4dE9yaWdpbi55KCkpOwotICAgIENhaXJvR2x5cGhU
b1BhdGhUcmFuc2xhdG9yIHRyYW5zbGF0b3IocnVuLCBnbHlwaEJ1ZmZlciwgb3JpZ2luKTsKLSAg
ICBEYXNoQXJyYXkgcmVzdWx0OwotICAgIGZvciAoaW50IGluZGV4ID0gMDsgdHJhbnNsYXRvci5j
b250YWluc01vcmVQYXRocygpOyArK2luZGV4LCB0cmFuc2xhdG9yLmFkdmFuY2UoKSkgewotICAg
ICAgICBmbG9hdCBjZW50ZXJPZkxpbmUgPSBsaW5lRXh0ZW50cy55KCkgKyAobGluZUV4dGVudHMu
aGVpZ2h0KCkgLyAyKTsKLSAgICAgICAgR2x5cGhJdGVyYXRpb25TdGF0ZSBpbmZvID0gR2x5cGhJ
dGVyYXRpb25TdGF0ZShGbG9hdFBvaW50KCksIEZsb2F0UG9pbnQoKSwgY2VudGVyT2ZMaW5lLCBs
aW5lRXh0ZW50cy54KCkgKyBsaW5lRXh0ZW50cy53aWR0aCgpLCBsaW5lRXh0ZW50cy54KCkpOwot
ICAgICAgICBjb25zdCBGb250KiBsb2NhbEZvbnREYXRhID0gZ2x5cGhCdWZmZXIuZm9udEF0KGlu
ZGV4KTsKLSAgICAgICAgaWYgKCFsb2NhbEZvbnREYXRhKSB7Ci0gICAgICAgICAgICAvLyBUaGUg
YWR2YW5jZXMgd2lsbCBnZXQgYWxsIG1lc3NlZCB1cCBpZiB3ZSBkbyBhbnl0aGluZyBvdGhlciB0
aGFuIGJhaWwgaGVyZS4KLSAgICAgICAgICAgIHJlc3VsdC5jbGVhcigpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgc3dpdGNoICh0cmFuc2xhdG9yLnVuZGVybGluZVR5
cGUoKSkgewotICAgICAgICBjYXNlIEdseXBoVG9QYXRoVHJhbnNsYXRvcjo6R2x5cGhVbmRlcmxp
bmVUeXBlOjpTa2lwRGVzY2VuZGVyczogewotICAgICAgICAgICAgUGF0aCBwYXRoID0gdHJhbnNs
YXRvci5wYXRoKCk7Ci0gICAgICAgICAgICBwYXRoLmFwcGx5KFsmaW5mb10oY29uc3QgUGF0aEVs
ZW1lbnQmIHBhdGhFbGVtZW50KSB7Ci0gICAgICAgICAgICAgICAgZmluZFBhdGhJbnRlcnNlY3Rp
b25zKGluZm8sIHBhdGhFbGVtZW50KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgaWYg
KGluZm8ubWluWCA8IGluZm8ubWF4WCkgewotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQo
aW5mby5taW5YIC0gbGluZUV4dGVudHMueCgpKTsKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKGluZm8ubWF4WCAtIGxpbmVFeHRlbnRzLngoKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEdseXBoVG9QYXRoVHJhbnNsYXRv
cjo6R2x5cGhVbmRlcmxpbmVUeXBlOjpTa2lwR2x5cGg6IHsKLSAgICAgICAgICAgIHN0ZDo6cGFp
cjxmbG9hdCwgZmxvYXQ+IGV4dGVudHMgPSB0cmFuc2xhdG9yLmV4dGVudHMoKTsKLSAgICAgICAg
ICAgIHJlc3VsdC5hcHBlbmQoZXh0ZW50cy5maXJzdCAtIGxpbmVFeHRlbnRzLngoKSk7Ci0gICAg
ICAgICAgICByZXN1bHQuYXBwZW5kKGV4dGVudHMuc2Vjb25kIC0gbGluZUV4dGVudHMueCgpKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgR2x5cGhUb1BhdGhU
cmFuc2xhdG9yOjpHbHlwaFVuZGVybGluZVR5cGU6OkRyYXdPdmVyR2x5cGg6Ci0gICAgICAgICAg
ICAvLyBOb3RoaW5nIHRvIGRvCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0K
LSAgICByZXR1cm4gcmVzdWx0OwogfQotI2VuZGlmIC8vIEVOQUJMRShDU1MzX1RFWFRfREVDT1JB
VElPTl9TS0lQX0lOSykKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5j
cHAKaW5kZXggMjdmYmNiYjYxNWMxMDI1YjM0NTYzMjdiYWM4MmQ3ZWJiZTc2ZDU5Yi4uZDc2MWI1
NTI2MjQ1YTE2YjY3NmM5NGI5NjAxZjFiOTBmMWQxNmRhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcApA
QCAtMTU3MCwxNSArMTU3MCwxNSBAQCBGbG9hdFJlY3QgR3JhcGhpY3NDb250ZXh0Ojpyb3VuZFRv
RGV2aWNlUGl4ZWxzKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgUm91bmRpbmdNbwogICAgIHJldHVy
biBGbG9hdFJlY3Qocm91bmRlZE9yaWdpbiwgcm91bmRlZExvd2VyUmlnaHQgLSByb3VuZGVkT3Jp
Z2luKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lRm9yVGV4dChjb25zdCBG
bG9hdFBvaW50JiBwb2ludCwgZmxvYXQgd2lkdGgsIGJvb2wgcHJpbnRpbmcsIGJvb2wgZG91Ymxl
TGluZXMsIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlKQordm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdMaW5lRm9yVGV4dChjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGJvb2wgcHJpbnRpbmcsIGJvb2wg
ZG91YmxlTGluZXMsIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlKQogewogICAgIERhc2hBcnJheSB3
aWR0aHM7Ci0gICAgd2lkdGhzLmFwcGVuZCh3aWR0aCk7CisgICAgd2lkdGhzLmFwcGVuZChyZWN0
LndpZHRoKCkpOwogICAgIHdpZHRocy5hcHBlbmQoMCk7Ci0gICAgZHJhd0xpbmVzRm9yVGV4dChw
b2ludCwgd2lkdGhzLCBwcmludGluZywgZG91YmxlTGluZXMsIHN0cm9rZVN0eWxlKTsKKyAgICBk
cmF3TGluZXNGb3JUZXh0KHJlY3QubG9jYXRpb24oKSwgcmVjdC5oZWlnaHQoKSwgd2lkdGhzLCBw
cmludGluZywgZG91YmxlTGluZXMsIHN0cm9rZVN0eWxlKTsKIH0KIAotdm9pZCBHcmFwaGljc0Nv
bnRleHQ6OmRyYXdMaW5lc0ZvclRleHQoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGNvbnN0IERh
c2hBcnJheSYgd2lkdGhzLCBib29sIHByaW50aW5nLCBib29sIGRvdWJsZUxpbmVzLCBTdHJva2VT
dHlsZSBzdHJva2VTdHlsZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZXNGb3JUZXh0
KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBmbG9hdCB0aGlja25lc3MsIGNvbnN0IERhc2hBcnJh
eSYgd2lkdGhzLCBib29sIHByaW50aW5nLCBib29sIGRvdWJsZUxpbmVzLCBTdHJva2VTdHlsZSBz
dHJva2VTdHlsZSkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1
cm47CkBAIC0xNTg3LDEzICsxNTg3LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGlu
ZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBjb25zdCBEYXNoQXJyYXkmCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGlmIChtX2ltcGwpIHsKLSAgICAgICAgbV9pbXBsLT5kcmF3TGlu
ZXNGb3JUZXh0KHBvaW50LCB3aWR0aHMsIHByaW50aW5nLCBkb3VibGVMaW5lcywgc3Ryb2tlVGhp
Y2tuZXNzKCkpOworICAgICAgICBtX2ltcGwtPmRyYXdMaW5lc0ZvclRleHQocG9pbnQsIHRoaWNr
bmVzcywgd2lkdGhzLCBwcmludGluZywgZG91YmxlTGluZXMpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgQ29sb3IgbG9jYWxTdHJva2VDb2xvcihzdHJva2VDb2xvcigpKTsKIAotICAg
IEZsb2F0UmVjdCBib3VuZHMgPSBjb21wdXRlTGluZUJvdW5kc0FuZEFudGlhbGlhc2luZ01vZGVG
b3JUZXh0KHBvaW50LCB3aWR0aHMubGFzdCgpLCBwcmludGluZywgbG9jYWxTdHJva2VDb2xvcik7
CisgICAgRmxvYXRSZWN0IGJvdW5kcyA9IGNvbXB1dGVMaW5lQm91bmRzQW5kQW50aWFsaWFzaW5n
TW9kZUZvclRleHQoRmxvYXRSZWN0KHBvaW50LCBGbG9hdFNpemUod2lkdGhzLmxhc3QoKSwgdGhp
Y2tuZXNzKSksIHByaW50aW5nLCBsb2NhbFN0cm9rZUNvbG9yKTsKICAgICBib29sIGZpbGxDb2xv
cklzTm90RXF1YWxUb1N0cm9rZUNvbG9yID0gZmlsbENvbG9yKCkgIT0gbG9jYWxTdHJva2VDb2xv
cjsKICAgICAKICAgICBWZWN0b3I8Q0dSZWN0LCA0PiBkYXNoQm91bmRzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDYXNjYWRlQ29j
b2EubW0KaW5kZXggYTA4OTJkYzBlMWI3N2IxYjJjNjQ1ZmI1MjQxNDE0MjY4MThiZjM2Yi4uZWQ2
YzRjZjE3MmI2MWQxNzEyYmRlZjY3ZmQ5ZGY5Njk1NDAzNDQ1ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENhc2NhZGVDb2NvYS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q2FzY2FkZUNvY29h
Lm1tCkBAIC0zMDIsMTg4ICszMDIsNiBAQCB2b2lkIEZvbnRDYXNjYWRlOjpkcmF3R2x5cGhzKEdy
YXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udCYgZm9udCwgY29uc3QgRwogI2VuZGlm
CiB9CiAKLSNpZiBFTkFCTEUoQ1NTM19URVhUX0RFQ09SQVRJT05fU0tJUF9JTkspCi1zdHJ1Y3Qg
R2x5cGhJdGVyYXRpb25TdGF0ZSB7Ci0gICAgR2x5cGhJdGVyYXRpb25TdGF0ZShDR1BvaW50IHN0
YXJ0aW5nUG9pbnQsIENHUG9pbnQgY3VycmVudFBvaW50LCBDR0Zsb2F0IHkxLCBDR0Zsb2F0IHky
LCBDR0Zsb2F0IG1pblgsIENHRmxvYXQgbWF4WCkKLSAgICAgICAgOiBzdGFydGluZ1BvaW50KHN0
YXJ0aW5nUG9pbnQpCi0gICAgICAgICwgY3VycmVudFBvaW50KGN1cnJlbnRQb2ludCkKLSAgICAg
ICAgLCB5MSh5MSkKLSAgICAgICAgLCB5Mih5MikKLSAgICAgICAgLCBtaW5YKG1pblgpCi0gICAg
ICAgICwgbWF4WChtYXhYKQotICAgIHsKLSAgICB9Ci0gICAgQ0dQb2ludCBzdGFydGluZ1BvaW50
OwotICAgIENHUG9pbnQgY3VycmVudFBvaW50OwotICAgIENHRmxvYXQgeTE7Ci0gICAgQ0dGbG9h
dCB5MjsKLSAgICBDR0Zsb2F0IG1pblg7Ci0gICAgQ0dGbG9hdCBtYXhYOwotfTsKLQotc3RhdGlj
IGJvb2wgZmluZEludGVyc2VjdGlvblBvaW50KGZsb2F0IHksIENHUG9pbnQgcDEsIENHUG9pbnQg
cDIsIENHRmxvYXQmIHgpCi17Ci0gICAgeCA9IHAxLnggKyAoeSAtIHAxLnkpICogKHAyLnggLSBw
MS54KSAvIChwMi55IC0gcDEueSk7Ci0gICAgcmV0dXJuIChwMS55IDwgeSAmJiBwMi55ID4geSkg
fHwgKHAxLnkgPiB5ICYmIHAyLnkgPCB5KTsKLX0KLQotc3RhdGljIHZvaWQgdXBkYXRlWChHbHlw
aEl0ZXJhdGlvblN0YXRlJiBzdGF0ZSwgQ0dGbG9hdCB4KQotewotICAgIHN0YXRlLm1pblggPSBz
dGQ6Om1pbihzdGF0ZS5taW5YLCB4KTsKLSAgICBzdGF0ZS5tYXhYID0gc3RkOjptYXgoc3RhdGUu
bWF4WCwgeCk7Ci19Ci0KLS8vIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IENHUGF0aEFwcGx5
IGFuZCBpcyB0aGVyZWZvcmUgaW52b2tlZCBmb3IgZWFjaAotLy8gY29udG91ciBpbiBhIGdseXBo
LiBUaGlzIGZ1bmN0aW9uIG1vZGVscyBlYWNoIGNvbnRvdXJzIGFzIGEgc3RyYWlnaHQgbGluZQot
Ly8gYW5kIGNhbGN1bGF0ZXMgdGhlIGludGVyc2VjdGlvbnMgYmV0d2VlbiBlYWNoIHBzZXVkby1j
b250b3VyIGFuZAotLy8gdHdvIGhvcml6b250YWwgbGluZXMgKHRoZSB1cHBlciBhbmQgbG93ZXIg
Ym91bmRzIG9mIGFuIHVuZGVybGluZSkgZm91bmQgaW4KLS8vIEdseXBoSXRlcmF0aW9uU3RhdGU6
OnkxIGFuZCBHbHlwaEl0ZXJhdGlvblN0YXRlOjp5Mi4gSXQga2VlcHMgdHJhY2sgb2YgdGhlCi0v
LyBsZWZ0bW9zdCBhbmQgcmlnaHRtb3N0IGludGVyc2VjdGlvbiBpbiBHbHlwaEl0ZXJhdGlvblN0
YXRlOjptaW5YIGFuZAotLy8gR2x5cGhJdGVyYXRpb25TdGF0ZTo6bWF4WC4KLXN0YXRpYyB2b2lk
IGZpbmRQYXRoSW50ZXJzZWN0aW9ucyh2b2lkKiBzdGF0ZUFzVm9pZFBvaW50ZXIsIGNvbnN0IENH
UGF0aEVsZW1lbnQqIGUpCi17Ci0gICAgYXV0byYgc3RhdGUgPSAqc3RhdGljX2Nhc3Q8R2x5cGhJ
dGVyYXRpb25TdGF0ZSo+KHN0YXRlQXNWb2lkUG9pbnRlcik7Ci0gICAgYm9vbCBkb0ludGVyc2Vj
dGlvbiA9IGZhbHNlOwotICAgIENHUG9pbnQgcG9pbnQgPSBDR1BvaW50WmVybzsKLSAgICBzd2l0
Y2ggKGUtPnR5cGUpIHsKLSAgICBjYXNlIGtDR1BhdGhFbGVtZW50TW92ZVRvUG9pbnQ6Ci0gICAg
ICAgIHN0YXRlLnN0YXJ0aW5nUG9pbnQgPSBlLT5wb2ludHNbMF07Ci0gICAgICAgIHN0YXRlLmN1
cnJlbnRQb2ludCA9IGUtPnBvaW50c1swXTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBrQ0dQ
YXRoRWxlbWVudEFkZExpbmVUb1BvaW50OgotICAgICAgICBkb0ludGVyc2VjdGlvbiA9IHRydWU7
Ci0gICAgICAgIHBvaW50ID0gZS0+cG9pbnRzWzBdOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IGtDR1BhdGhFbGVtZW50QWRkUXVhZEN1cnZlVG9Qb2ludDoKLSAgICAgICAgZG9JbnRlcnNlY3Rp
b24gPSB0cnVlOwotICAgICAgICBwb2ludCA9IGUtPnBvaW50c1sxXTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBrQ0dQYXRoRWxlbWVudEFkZEN1cnZlVG9Qb2ludDoKLSAgICAgICAgZG9JbnRl
cnNlY3Rpb24gPSB0cnVlOwotICAgICAgICBwb2ludCA9IGUtPnBvaW50c1syXTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBrQ0dQYXRoRWxlbWVudENsb3NlU3VicGF0aDoKLSAgICAgICAgZG9J
bnRlcnNlY3Rpb24gPSB0cnVlOwotICAgICAgICBwb2ludCA9IHN0YXRlLnN0YXJ0aW5nUG9pbnQ7
Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBpZiAoIWRvSW50ZXJzZWN0aW9uKQotICAgICAg
ICByZXR1cm47Ci0gICAgQ0dGbG9hdCB4OwotICAgIGlmIChmaW5kSW50ZXJzZWN0aW9uUG9pbnQo
c3RhdGUueTEsIHN0YXRlLmN1cnJlbnRQb2ludCwgcG9pbnQsIHgpKQotICAgICAgICB1cGRhdGVY
KHN0YXRlLCB4KTsKLSAgICBpZiAoZmluZEludGVyc2VjdGlvblBvaW50KHN0YXRlLnkyLCBzdGF0
ZS5jdXJyZW50UG9pbnQsIHBvaW50LCB4KSkKLSAgICAgICAgdXBkYXRlWChzdGF0ZSwgeCk7Ci0g
ICAgaWYgKChzdGF0ZS5jdXJyZW50UG9pbnQueSA+PSBzdGF0ZS55MSAmJiBzdGF0ZS5jdXJyZW50
UG9pbnQueSA8PSBzdGF0ZS55MikKLSAgICAgICAgfHwgKHN0YXRlLmN1cnJlbnRQb2ludC55IDw9
IHN0YXRlLnkxICYmIHN0YXRlLmN1cnJlbnRQb2ludC55ID49IHN0YXRlLnkyKSkKLSAgICAgICAg
dXBkYXRlWChzdGF0ZSwgc3RhdGUuY3VycmVudFBvaW50LngpOwotICAgIHN0YXRlLmN1cnJlbnRQ
b2ludCA9IHBvaW50OwotfQotCi1jbGFzcyBNYWNHbHlwaFRvUGF0aFRyYW5zbGF0b3IgZmluYWwg
OiBwdWJsaWMgR2x5cGhUb1BhdGhUcmFuc2xhdG9yIHsKLXB1YmxpYzoKLSAgICBNYWNHbHlwaFRv
UGF0aFRyYW5zbGF0b3IoY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgY29uc3QgR2x5cGhCdWZmZXIm
IGdseXBoQnVmZmVyLCBjb25zdCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luKQotICAgICAgICA6IG1f
aW5kZXgoMCkKLSAgICAgICAgLCBtX3RleHRSdW4odGV4dFJ1bikKLSAgICAgICAgLCBtX2dseXBo
QnVmZmVyKGdseXBoQnVmZmVyKQotICAgICAgICAsIG1fZm9udERhdGEoZ2x5cGhCdWZmZXIuZm9u
dEF0KG1faW5kZXgpKQotICAgICAgICAsIG1fdHJhbnNsYXRpb24oQ0dBZmZpbmVUcmFuc2Zvcm1T
Y2FsZShDR0FmZmluZVRyYW5zZm9ybU1ha2VUcmFuc2xhdGlvbih0ZXh0T3JpZ2luLngoKSwgdGV4
dE9yaWdpbi55KCkpLCAxLCAtMSkpCi0gICAgewotICAgIH0KLSAgICBib29sIGNvbnRhaW5zTW9y
ZVBhdGhzKCkgZmluYWwgeyByZXR1cm4gbV9pbmRleCAhPSBtX2dseXBoQnVmZmVyLnNpemUoKTsg
fQotICAgIFBhdGggcGF0aCgpIGZpbmFsOwotICAgIHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+IGV4
dGVudHMoKSBmaW5hbDsKLSAgICBHbHlwaFVuZGVybGluZVR5cGUgdW5kZXJsaW5lVHlwZSgpIGZp
bmFsOwotICAgIHZvaWQgYWR2YW5jZSgpIGZpbmFsOwotCi1wcml2YXRlOgotICAgIHVuc2lnbmVk
IG1faW5kZXg7Ci0gICAgY29uc3QgVGV4dFJ1biYgbV90ZXh0UnVuOwotICAgIGNvbnN0IEdseXBo
QnVmZmVyJiBtX2dseXBoQnVmZmVyOwotICAgIGNvbnN0IEZvbnQqIG1fZm9udERhdGE7Ci0gICAg
Q0dBZmZpbmVUcmFuc2Zvcm0gbV90cmFuc2xhdGlvbjsKLX07Ci0KLVBhdGggTWFjR2x5cGhUb1Bh
dGhUcmFuc2xhdG9yOjpwYXRoKCkKLXsKLSAgICBSZXRhaW5QdHI8Q0dQYXRoUmVmPiByZXN1bHQg
PSBhZG9wdENGKENURm9udENyZWF0ZVBhdGhGb3JHbHlwaChtX2ZvbnREYXRhLT5wbGF0Zm9ybURh
dGEoKS5jdEZvbnQoKSwgbV9nbHlwaEJ1ZmZlci5nbHlwaEF0KG1faW5kZXgpLCAmbV90cmFuc2xh
dGlvbikpOwotICAgIHJldHVybiBhZG9wdENGKENHUGF0aENyZWF0ZU11dGFibGVDb3B5KHJlc3Vs
dC5nZXQoKSkpOwotfQotCi1zdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0PiBNYWNHbHlwaFRvUGF0aFRy
YW5zbGF0b3I6OmV4dGVudHMoKQotewotICAgIENHUG9pbnQgYmVnaW5uaW5nID0gQ0dQb2ludEFw
cGx5QWZmaW5lVHJhbnNmb3JtKENHUG9pbnRNYWtlKDAsIDApLCBtX3RyYW5zbGF0aW9uKTsKLSAg
ICBDR1NpemUgZW5kID0gQ0dTaXplQXBwbHlBZmZpbmVUcmFuc2Zvcm0obV9nbHlwaEJ1ZmZlci5h
ZHZhbmNlQXQobV9pbmRleCksIG1fdHJhbnNsYXRpb24pOwotICAgIHJldHVybiBzdGQ6Om1ha2Vf
cGFpcihzdGF0aWNfY2FzdDxmbG9hdD4oYmVnaW5uaW5nLngpLCBzdGF0aWNfY2FzdDxmbG9hdD4o
YmVnaW5uaW5nLnggKyBlbmQud2lkdGgpKTsKLX0KLQotYXV0byBNYWNHbHlwaFRvUGF0aFRyYW5z
bGF0b3I6OnVuZGVybGluZVR5cGUoKSAtPiBHbHlwaFVuZGVybGluZVR5cGUKLXsKLSAgICByZXR1
cm4gY29tcHV0ZVVuZGVybGluZVR5cGUobV90ZXh0UnVuLCBtX2dseXBoQnVmZmVyLCBtX2luZGV4
KTsKLX0KLQotdm9pZCBNYWNHbHlwaFRvUGF0aFRyYW5zbGF0b3I6OmFkdmFuY2UoKQotewotICAg
IEdseXBoQnVmZmVyQWR2YW5jZSBhZHZhbmNlID0gbV9nbHlwaEJ1ZmZlci5hZHZhbmNlQXQobV9p
bmRleCk7Ci0gICAgbV90cmFuc2xhdGlvbiA9IENHQWZmaW5lVHJhbnNmb3JtVHJhbnNsYXRlKG1f
dHJhbnNsYXRpb24sIGFkdmFuY2Uud2lkdGgoKSwgYWR2YW5jZS5oZWlnaHQoKSk7Ci0gICAgKytt
X2luZGV4OwotICAgIGlmIChtX2luZGV4IDwgbV9nbHlwaEJ1ZmZlci5zaXplKCkpCi0gICAgICAg
IG1fZm9udERhdGEgPSBtX2dseXBoQnVmZmVyLmZvbnRBdChtX2luZGV4KTsKLX0KLQotRGFzaEFy
cmF5IEZvbnRDYXNjYWRlOjpkYXNoZXNGb3JJbnRlcnNlY3Rpb25zV2l0aFJlY3QoY29uc3QgVGV4
dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luLCBjb25zdCBGbG9hdFJlY3Qm
IGxpbmVFeHRlbnRzKSBjb25zdAotewotICAgIGlmIChpc0xvYWRpbmdDdXN0b21Gb250cygpKQot
ICAgICAgICByZXR1cm4gRGFzaEFycmF5KCk7Ci0KLSAgICBHbHlwaEJ1ZmZlciBnbHlwaEJ1ZmZl
cjsKLSAgICBnbHlwaEJ1ZmZlci5zYXZlT2Zmc2V0c0luU3RyaW5nKCk7Ci0gICAgZmxvYXQgZGVs
dGFYOwotICAgIGlmIChjb2RlUGF0aChydW4pICE9IEZvbnRDYXNjYWRlOjpDb21wbGV4KQotICAg
ICAgICBkZWx0YVggPSBnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvclNpbXBsZVRleHQocnVuLCAwLCBy
dW4ubGVuZ3RoKCksIGdseXBoQnVmZmVyKTsKLSAgICBlbHNlCi0gICAgICAgIGRlbHRhWCA9IGdl
dEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxleFRleHQocnVuLCAwLCBydW4ubGVuZ3RoKCksIGds
eXBoQnVmZmVyKTsKLQotICAgIGlmICghZ2x5cGhCdWZmZXIuc2l6ZSgpKQotICAgICAgICByZXR1
cm4gRGFzaEFycmF5KCk7Ci0gICAgCi0gICAgLy8gRklYTUU6IEhhbmRsZSBTVkcgKyBub24tU1ZH
IGludGVybGVhdmVkIHJ1bnMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzM3NzgKLSAgICBGbG9hdFBvaW50IG9yaWdpbiA9IEZsb2F0UG9pbnQodGV4dE9yaWdpbi54
KCkgKyBkZWx0YVgsIHRleHRPcmlnaW4ueSgpKTsKLSAgICBNYWNHbHlwaFRvUGF0aFRyYW5zbGF0
b3IgdHJhbnNsYXRvcihydW4sIGdseXBoQnVmZmVyLCBvcmlnaW4pOwotICAgIERhc2hBcnJheSBy
ZXN1bHQ7Ci0gICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IHRyYW5zbGF0b3IuY29udGFpbnNN
b3JlUGF0aHMoKTsgKytpbmRleCwgdHJhbnNsYXRvci5hZHZhbmNlKCkpIHsKLSAgICAgICAgR2x5
cGhJdGVyYXRpb25TdGF0ZSBpbmZvID0gR2x5cGhJdGVyYXRpb25TdGF0ZShDR1BvaW50TWFrZSgw
LCAwKSwgQ0dQb2ludE1ha2UoMCwgMCksIGxpbmVFeHRlbnRzLnkoKSwgbGluZUV4dGVudHMueSgp
ICsgbGluZUV4dGVudHMuaGVpZ2h0KCksIGxpbmVFeHRlbnRzLngoKSArIGxpbmVFeHRlbnRzLndp
ZHRoKCksIGxpbmVFeHRlbnRzLngoKSk7Ci0gICAgICAgIGNvbnN0IEZvbnQqIGxvY2FsRm9udCA9
IGdseXBoQnVmZmVyLmZvbnRBdChpbmRleCk7Ci0gICAgICAgIGlmICghbG9jYWxGb250KSB7Ci0g
ICAgICAgICAgICAvLyBUaGUgYWR2YW5jZXMgd2lsbCBnZXQgYWxsIG1lc3NlZCB1cCBpZiB3ZSBk
byBhbnl0aGluZyBvdGhlciB0aGFuIGJhaWwgaGVyZS4KLSAgICAgICAgICAgIHJlc3VsdC5jbGVh
cigpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgc3dpdGNoICh0cmFu
c2xhdG9yLnVuZGVybGluZVR5cGUoKSkgewotICAgICAgICBjYXNlIEdseXBoVG9QYXRoVHJhbnNs
YXRvcjo6R2x5cGhVbmRlcmxpbmVUeXBlOjpTa2lwRGVzY2VuZGVyczogewotICAgICAgICAgICAg
UGF0aCBwYXRoID0gdHJhbnNsYXRvci5wYXRoKCk7Ci0gICAgICAgICAgICBDR1BhdGhBcHBseShw
YXRoLnBsYXRmb3JtUGF0aCgpLCAmaW5mbywgJmZpbmRQYXRoSW50ZXJzZWN0aW9ucyk7Ci0gICAg
ICAgICAgICBpZiAoaW5mby5taW5YIDwgaW5mby5tYXhYKSB7Ci0gICAgICAgICAgICAgICAgcmVz
dWx0LmFwcGVuZChpbmZvLm1pblggLSBsaW5lRXh0ZW50cy54KCkpOwotICAgICAgICAgICAgICAg
IHJlc3VsdC5hcHBlbmQoaW5mby5tYXhYIC0gbGluZUV4dGVudHMueCgpKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgR2x5cGhUb1Bh
dGhUcmFuc2xhdG9yOjpHbHlwaFVuZGVybGluZVR5cGU6OlNraXBHbHlwaDogewotICAgICAgICAg
ICAgc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4gZXh0ZW50cyA9IHRyYW5zbGF0b3IuZXh0ZW50cygp
OwotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChleHRlbnRzLmZpcnN0IC0gbGluZUV4dGVudHMu
eCgpKTsKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZXh0ZW50cy5zZWNvbmQgLSBsaW5lRXh0
ZW50cy54KCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBH
bHlwaFRvUGF0aFRyYW5zbGF0b3I6OkdseXBoVW5kZXJsaW5lVHlwZTo6RHJhd092ZXJHbHlwaDoK
LSAgICAgICAgICAgIC8vIE5vdGhpbmcgdG8gZG8KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0jZW5kaWYKLQogYm9vbCBGb250Q2Fz
Y2FkZTo6cHJpbWFyeUZvbnRJc1N5c3RlbUZvbnQoKSBjb25zdAogewogICAgIGNvbnN0IGF1dG8m
IGZvbnREYXRhID0gcHJpbWFyeUZvbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL0ZvbnRDb2NvYS5tbQppbmRleCBjZGI3ZTExOGY5MTk2NzhkZjAz
OWE4YTE3Yjg3NzQwOTY1ZjU5Mzc0Li41ZDQzMDAwMjRhZGNlMjhlY2VmODg5MzNhMmVjOWZlNTQ5
ZTNlMWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Gb250Q29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvRm9udENvY29hLm1tCkBAIC0xOTgsNiArMTk4LDggQEAgdm9pZCBGb250OjpwbGF0Zm9ybUlu
aXQoKQogICAgIG1fZm9udE1ldHJpY3Muc2V0TGluZUdhcChsaW5lR2FwKTsKICAgICBtX2ZvbnRN
ZXRyaWNzLnNldFhIZWlnaHQoeEhlaWdodCk7CiAgICAgbV9mb250TWV0cmljcy5zZXRMaW5lU3Bh
Y2luZyhsaW5lU3BhY2luZyk7CisgICAgbV9mb250TWV0cmljcy5zZXRVbmRlcmxpbmVQb3NpdGlv
bigtQ1RGb250R2V0VW5kZXJsaW5lUG9zaXRpb24obV9wbGF0Zm9ybURhdGEuZm9udCgpKSk7Cisg
ICAgbV9mb250TWV0cmljcy5zZXRVbmRlcmxpbmVUaGlja25lc3MoQ1RGb250R2V0VW5kZXJsaW5l
VGhpY2tuZXNzKG1fcGxhdGZvcm1EYXRhLmZvbnQoKSkpOwogfQogCiB2b2lkIEZvbnQ6OnBsYXRm
b3JtQ2hhcldpZHRoSW5pdCgpCkBAIC01OTcsNiArNTk5LDIwIEBAIGZsb2F0IEZvbnQ6OnBsYXRm
b3JtV2lkdGhGb3JHbHlwaChHbHlwaCBnbHlwaCkgY29uc3QKICAgICByZXR1cm4gYWR2YW5jZS53
aWR0aCArIG1fc3ludGhldGljQm9sZE9mZnNldDsKIH0KIAorUGF0aCBGb250OjpwbGF0Zm9ybVBh
dGhGb3JHbHlwaChHbHlwaCBnbHlwaCkgY29uc3QKK3sKKyAgICBhdXRvIHJlc3VsdCA9IGFkb3B0
Q0YoQ1RGb250Q3JlYXRlUGF0aEZvckdseXBoKHBsYXRmb3JtRGF0YSgpLmN0Rm9udCgpLCBnbHlw
aCwgbnVsbHB0cikpOworICAgIGF1dG8gc3ludGhldGljQm9sZE9mZnNldCA9IHRoaXMtPnN5bnRo
ZXRpY0JvbGRPZmZzZXQoKTsKKyAgICBpZiAoc3ludGhldGljQm9sZE9mZnNldCkgeworICAgICAg
ICBhdXRvIG5ld1BhdGggPSBhZG9wdENGKENHUGF0aENyZWF0ZU11dGFibGUoKSk7CisgICAgICAg
IENHUGF0aEFkZFBhdGgobmV3UGF0aC5nZXQoKSwgbnVsbHB0ciwgcmVzdWx0LmdldCgpKTsKKyAg
ICAgICAgYXV0byB0cmFuc2xhdGlvbiA9IENHQWZmaW5lVHJhbnNmb3JtTWFrZVRyYW5zbGF0aW9u
KHN5bnRoZXRpY0JvbGRPZmZzZXQsIDApOworICAgICAgICBDR1BhdGhBZGRQYXRoKG5ld1BhdGgu
Z2V0KCksICZ0cmFuc2xhdGlvbiwgcmVzdWx0LmdldCgpKTsKKyAgICAgICAgcmV0dXJuIG5ld1Bh
dGg7CisgICAgfQorICAgIHJldHVybiBhZG9wdENGKENHUGF0aENyZWF0ZU11dGFibGVDb3B5KHJl
c3VsdC5nZXQoKSkpOworfQorCiBib29sIEZvbnQ6OnBsYXRmb3JtU3VwcG9ydHNDb2RlUG9pbnQo
VUNoYXIzMiBjaGFyYWN0ZXIpIGNvbnN0CiB7CiAgICAgVW5pQ2hhciBjb2RlVW5pdHNbMl07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9k
aXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5jcHAKaW5kZXggMWZjZWU4YjM4NDM3MzAzNmQy
M2YwOTExMmFiNjNlNzk2OTVlYzA0My4uODE1N2Y5MTg0YzgyNGNhYzE2MzZlNmZhOWY3N2ZkYjQ5
MmEyM2E1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlz
cGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmNwcApAQCAtNTkzLDcg
KzU5Myw3IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBj
b25zdCBEcmF3TGluZSYgaXRlbSkKIAogdm9pZCBEcmF3TGluZXNGb3JUZXh0OjphcHBseShHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiB7Ci0gICAgY29udGV4dC5kcmF3TGluZXNGb3JU
ZXh0KHBvaW50KCksIG1fd2lkdGhzLCBtX3ByaW50aW5nLCBtX2RvdWJsZUxpbmVzKTsKKyAgICBj
b250ZXh0LmRyYXdMaW5lc0ZvclRleHQocG9pbnQoKSwgbV90aGlja25lc3MsIG1fd2lkdGhzLCBt
X3ByaW50aW5nLCBtX2RvdWJsZUxpbmVzKTsKIH0KIAogc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+
IERyYXdMaW5lc0ZvclRleHQ6OmxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGNv
bnN0CkBAIC02MDMsNyArNjAzLDcgQEAgc3RkOjpvcHRpb25hbDxGbG9hdFJlY3Q+IERyYXdMaW5l
c0ZvclRleHQ6OmxvY2FsQm91bmRzKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYpIGMKICAgICBpZiAo
IW1fd2lkdGhzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIEZsb2F0UmVjdCgpOwogCi0gICAgRmxv
YXRSZWN0IHJlc3VsdChwb2ludCgpLCBGbG9hdFNpemUobV93aWR0aHMubGFzdCgpLCBtX3N0cm9r
ZVdpZHRoKSk7CisgICAgRmxvYXRSZWN0IHJlc3VsdChwb2ludCgpLCBGbG9hdFNpemUobV93aWR0
aHMubGFzdCgpLCBtX3RoaWNrbmVzcykpOwogICAgIHJlc3VsdC5pbmZsYXRlKDEpOyAvLyBBY2Nv
dW50IGZvciBwaXhlbCBzbmFwcGluZy4gRklYTUU6IFRoaXMgaXNuJ3QgcGVyZmVjdCwgYXMgaXQg
ZG9lc24ndCB0YWtlIHRoZSBDVE0gaW50byBhY2NvdW50LgogICAgIHJldHVybiByZXN1bHQ7CiB9
CkBAIC02MTQsNiArNjE0LDcgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IERyYXdMaW5lc0ZvclRleHQmIGl0ZW0pCiAgICAgdHMuZHVtcFByb3Bl
cnR5KCJibG9jay1sb2NhdGlvbiIsIGl0ZW0uYmxvY2tMb2NhdGlvbigpKTsKICAgICB0cy5kdW1w
UHJvcGVydHkoImxvY2FsLWFuY2hvciIsIGl0ZW0ubG9jYWxBbmNob3IoKSk7CiAgICAgdHMuZHVt
cFByb3BlcnR5KCJwb2ludCIsIGl0ZW0ucG9pbnQoKSk7CisgICAgdHMuZHVtcFByb3BlcnR5KCJ0
aGlja25lc3MiLCBpdGVtLnRoaWNrbmVzcygpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoImRvdWJs
ZSIsIGl0ZW0uZG91YmxlTGluZXMoKSk7CiAgICAgdHMuZHVtcFByb3BlcnR5KCJ3aWR0aHMiLCBp
dGVtLndpZHRocygpKTsKICAgICB0cy5kdW1wUHJvcGVydHkoImlzLXByaW50aW5nIiwgaXRlbS5p
c1ByaW50aW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKaW5kZXggODcyZTMw
ZGNlOGI3MzEyNGY0MWQ5Mjc4MWM1MmQ0YzZhNmVhNjg4MC4uZTVjNTVmZjllYzVjOTI0ZDJiYmE5
NGVjNTU2M2U3ZTY1NjUxNmQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMvRGlzcGxheUxpc3RJdGVtcy5oCkBA
IC03OTEsMjYgKzc5MSwyNyBAQCBwcml2YXRlOgogCiBjbGFzcyBEcmF3TGluZXNGb3JUZXh0IDog
cHVibGljIERyYXdpbmdJdGVtIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPERyYXdMaW5lc0Zv
clRleHQ+IGNyZWF0ZShjb25zdCBGbG9hdFBvaW50JiBibG9ja0xvY2F0aW9uLCBjb25zdCBGbG9h
dFNpemUmIGxvY2FsQW5jaG9yLCBjb25zdCBEYXNoQXJyYXkmIHdpZHRocywgYm9vbCBwcmludGlu
ZywgYm9vbCBkb3VibGVMaW5lcywgZmxvYXQgc3Ryb2tlV2lkdGgpCisgICAgc3RhdGljIFJlZjxE
cmF3TGluZXNGb3JUZXh0PiBjcmVhdGUoY29uc3QgRmxvYXRQb2ludCYgYmxvY2tMb2NhdGlvbiwg
Y29uc3QgRmxvYXRTaXplJiBsb2NhbEFuY2hvciwgZmxvYXQgdGhpY2tuZXNzLCBjb25zdCBEYXNo
QXJyYXkmIHdpZHRocywgYm9vbCBwcmludGluZywgYm9vbCBkb3VibGVMaW5lcykKICAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERyYXdMaW5lc0ZvclRleHQoYmxvY2tMb2NhdGlv
biwgbG9jYWxBbmNob3IsIHdpZHRocywgcHJpbnRpbmcsIGRvdWJsZUxpbmVzLCBzdHJva2VXaWR0
aCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEcmF3TGluZXNGb3JUZXh0KGJsb2Nr
TG9jYXRpb24sIGxvY2FsQW5jaG9yLCB0aGlja25lc3MsIHdpZHRocywgcHJpbnRpbmcsIGRvdWJs
ZUxpbmVzKSk7CiAgICAgfQogCiAgICAgdm9pZCBzZXRCbG9ja0xvY2F0aW9uKGNvbnN0IEZsb2F0
UG9pbnQmIGJsb2NrTG9jYXRpb24pIHsgbV9ibG9ja0xvY2F0aW9uID0gYmxvY2tMb2NhdGlvbjsg
fQogICAgIGNvbnN0IEZsb2F0UG9pbnQmIGJsb2NrTG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBt
X2Jsb2NrTG9jYXRpb247IH0KICAgICBjb25zdCBGbG9hdFNpemUmIGxvY2FsQW5jaG9yKCkgY29u
c3QgeyByZXR1cm4gbV9sb2NhbEFuY2hvcjsgfQogICAgIEZsb2F0UG9pbnQgcG9pbnQoKSBjb25z
dCB7IHJldHVybiBtX2Jsb2NrTG9jYXRpb24gKyBtX2xvY2FsQW5jaG9yOyB9CisgICAgZmxvYXQg
dGhpY2tuZXNzKCkgY29uc3QgeyByZXR1cm4gbV90aGlja25lc3M7IH0KICAgICBjb25zdCBEYXNo
QXJyYXkmIHdpZHRocygpIGNvbnN0IHsgcmV0dXJuIG1fd2lkdGhzOyB9CiAgICAgYm9vbCBpc1By
aW50aW5nKCkgY29uc3QgeyByZXR1cm4gbV9wcmludGluZzsgfQogICAgIGJvb2wgZG91YmxlTGlu
ZXMoKSBjb25zdCB7IHJldHVybiBtX2RvdWJsZUxpbmVzOyB9CiAKIHByaXZhdGU6Ci0gICAgRHJh
d0xpbmVzRm9yVGV4dChjb25zdCBGbG9hdFBvaW50JiBibG9ja0xvY2F0aW9uLCBjb25zdCBGbG9h
dFNpemUmIGxvY2FsQW5jaG9yLCBjb25zdCBEYXNoQXJyYXkmIHdpZHRocywgYm9vbCBwcmludGlu
ZywgYm9vbCBkb3VibGVMaW5lcywgZmxvYXQgc3Ryb2tlV2lkdGgpCisgICAgRHJhd0xpbmVzRm9y
VGV4dChjb25zdCBGbG9hdFBvaW50JiBibG9ja0xvY2F0aW9uLCBjb25zdCBGbG9hdFNpemUmIGxv
Y2FsQW5jaG9yLCBmbG9hdCB0aGlja25lc3MsIGNvbnN0IERhc2hBcnJheSYgd2lkdGhzLCBib29s
IHByaW50aW5nLCBib29sIGRvdWJsZUxpbmVzKQogICAgICAgICA6IERyYXdpbmdJdGVtKEl0ZW1U
eXBlOjpEcmF3TGluZXNGb3JUZXh0KQogICAgICAgICAsIG1fYmxvY2tMb2NhdGlvbihibG9ja0xv
Y2F0aW9uKQogICAgICAgICAsIG1fbG9jYWxBbmNob3IobG9jYWxBbmNob3IpCiAgICAgICAgICwg
bV93aWR0aHMod2lkdGhzKQotICAgICAgICAsIG1fc3Ryb2tlV2lkdGgoc3Ryb2tlV2lkdGgpCisg
ICAgICAgICwgbV90aGlja25lc3ModGhpY2tuZXNzKQogICAgICAgICAsIG1fcHJpbnRpbmcocHJp
bnRpbmcpCiAgICAgICAgICwgbV9kb3VibGVMaW5lcyhkb3VibGVMaW5lcykKICAgICB7CkBAIC04
MjMsNyArODI0LDcgQEAgcHJpdmF0ZToKICAgICBGbG9hdFBvaW50IG1fYmxvY2tMb2NhdGlvbjsK
ICAgICBGbG9hdFNpemUgbV9sb2NhbEFuY2hvcjsKICAgICBEYXNoQXJyYXkgbV93aWR0aHM7Ci0g
ICAgZmxvYXQgbV9zdHJva2VXaWR0aDsKKyAgICBmbG9hdCBtX3RoaWNrbmVzczsKICAgICBib29s
IG1fcHJpbnRpbmc7CiAgICAgYm9vbCBtX2RvdWJsZUxpbmVzOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0
cy9EaXNwbGF5TGlzdFJlY29yZGVyLmNwcAppbmRleCBlYTI3MzI2YjU2MWYxOWRlMjI0NzNlM2Jh
YzgzZjQ0ZmFhMDkyZmZkLi4yOWIyZjE5NGQzMzdkNDA5M2RiOWJkM2E3ZWVkZWU1NjlkNTFkZDJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuY3BwCkBAIC0yMzAsOSAr
MjMwLDkgQEAgdm9pZCBSZWNvcmRlcjo6ZHJhd0xpbmUoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQx
LCBjb25zdCBGbG9hdFBvaW50JiBwb2ludDIpCiAgICAgdXBkYXRlSXRlbUV4dGVudChuZXdJdGVt
KTsKIH0KIAotdm9pZCBSZWNvcmRlcjo6ZHJhd0xpbmVzRm9yVGV4dChjb25zdCBGbG9hdFBvaW50
JiBwb2ludCwgY29uc3QgRGFzaEFycmF5JiB3aWR0aHMsIGJvb2wgcHJpbnRpbmcsIGJvb2wgZG91
YmxlTGluZXMsIGZsb2F0IHN0cm9rZVRoaWNrbmVzcykKK3ZvaWQgUmVjb3JkZXI6OmRyYXdMaW5l
c0ZvclRleHQoY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGZsb2F0IHRoaWNrbmVzcywgY29uc3Qg
RGFzaEFycmF5JiB3aWR0aHMsIGJvb2wgcHJpbnRpbmcsIGJvb2wgZG91YmxlTGluZXMpCiB7Ci0g
ICAgRHJhd2luZ0l0ZW0mIG5ld0l0ZW0gPSBkb3duY2FzdDxEcmF3aW5nSXRlbT4oYXBwZW5kSXRl
bShEcmF3TGluZXNGb3JUZXh0OjpjcmVhdGUoRmxvYXRQb2ludCgpLCB0b0Zsb2F0U2l6ZShwb2lu
dCksIHdpZHRocywgcHJpbnRpbmcsIGRvdWJsZUxpbmVzLCBzdHJva2VUaGlja25lc3MpKSk7Cisg
ICAgRHJhd2luZ0l0ZW0mIG5ld0l0ZW0gPSBkb3duY2FzdDxEcmF3aW5nSXRlbT4oYXBwZW5kSXRl
bShEcmF3TGluZXNGb3JUZXh0OjpjcmVhdGUoRmxvYXRQb2ludCgpLCB0b0Zsb2F0U2l6ZShwb2lu
dCksIHRoaWNrbmVzcywgd2lkdGhzLCBwcmludGluZywgZG91YmxlTGluZXMpKSk7CiAgICAgdXBk
YXRlSXRlbUV4dGVudChuZXdJdGVtKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJl
Y29yZGVyLmgKaW5kZXggNWMxYzA2NjBjN2U1N2RkNTRlYmFlZDJiYWMzODA0N2YxMzkwZjk3MS4u
NTg4NTc5ZTQ1ZjhiZTJlZDIyM2E3YzU5ZGExNWJmZTk0OWViZmY1YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVj
b3JkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlz
dHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCkBAIC05Nyw3ICs5Nyw3IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGJvcmRlclRoaWNrbmVzcykg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3TGluZShjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxv
YXRQb2ludCYpIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd0xpbmVzRm9yVGV4dChjb25zdCBGbG9h
dFBvaW50JiwgY29uc3QgRGFzaEFycmF5JiB3aWR0aHMsIGJvb2wgcHJpbnRpbmcsIGJvb2wgZG91
YmxlTGluZXMsIGZsb2F0IHN0cm9rZVRoaWNrbmVzcykgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3
TGluZXNGb3JUZXh0KGNvbnN0IEZsb2F0UG9pbnQmLCBmbG9hdCB0aGlja25lc3MsIGNvbnN0IERh
c2hBcnJheSYgd2lkdGhzLCBib29sIHByaW50aW5nLCBib29sIGRvdWJsZUxpbmVzKSBvdmVycmlk
ZTsKICAgICB2b2lkIGRyYXdMaW5lRm9yRG9jdW1lbnRNYXJrZXIoY29uc3QgRmxvYXRQb2ludCYs
IGZsb2F0IHdpZHRoLCBEb2N1bWVudE1hcmtlckxpbmVTdHlsZSkgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBkcmF3RWxsaXBzZShjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdQ
YXRoKGNvbnN0IFBhdGgmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVGbG93Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Jbmxp
bmVGbG93Qm94LmNwcAppbmRleCAyODc2YjE3YTA4ZDk0NTIxNTI3ZjczMTFlNDI4MDQwMmI5ZTFl
MWE3Li5mNzZjMDdhOGU3ZjZjNDIyYzA3Y2VlODc1N2E0MmE5OGNkNzA4MmYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCkBAIC0xNTgsNyArMTU4LDkgQEAg
dm9pZCBJbmxpbmVGbG93Qm94OjphZGRUb0xpbmUoSW5saW5lQm94KiBjaGlsZCkKICAgICAgICAg
Y29uc3QgUmVuZGVyU3R5bGUmIGNoaWxkU3R5bGUgPSBjaGlsZC0+bGluZVN0eWxlKCk7CiAgICAg
ICAgIGlmIChjaGlsZC0+YmVoYXZlc0xpa2VUZXh0KCkpIHsKICAgICAgICAgICAgIGNvbnN0IFJl
bmRlclN0eWxlKiBjaGlsZFN0eWxlID0gJmNoaWxkLT5saW5lU3R5bGUoKTsKLSAgICAgICAgICAg
IGlmIChjaGlsZFN0eWxlLT5sZXR0ZXJTcGFjaW5nKCkgPCAwIHx8IGNoaWxkU3R5bGUtPnRleHRT
aGFkb3coKSB8fCBjaGlsZFN0eWxlLT50ZXh0RW1waGFzaXNNYXJrKCkgIT0gVGV4dEVtcGhhc2lz
TWFyazo6Tm9uZSB8fCBjaGlsZFN0eWxlLT5oYXNQb3NpdGl2ZVN0cm9rZVdpZHRoKCkpCisgICAg
ICAgICAgICBpZiAoIWNoaWxkU3R5bGUtPnRleHRVbmRlcmxpbmVPZmZzZXQoKS5pc0F1dG8oKSB8
fCAhY2hpbGRTdHlsZS0+dGV4dERlY29yYXRpb25UaGlja25lc3MoKS5pc0F1dG8oKSB8fCBjaGls
ZFN0eWxlLT50ZXh0VW5kZXJsaW5lUG9zaXRpb24oKSAhPSBUZXh0VW5kZXJsaW5lUG9zaXRpb246
OkF1dG8pCisgICAgICAgICAgICAgICAgY2hpbGQtPmNsZWFyS25vd25Ub0hhdmVOb092ZXJmbG93
KCk7CisgICAgICAgICAgICBlbHNlIGlmIChjaGlsZFN0eWxlLT5sZXR0ZXJTcGFjaW5nKCkgPCAw
IHx8IGNoaWxkU3R5bGUtPnRleHRTaGFkb3coKSB8fCBjaGlsZFN0eWxlLT50ZXh0RW1waGFzaXNN
YXJrKCkgIT0gVGV4dEVtcGhhc2lzTWFyazo6Tm9uZSB8fCBjaGlsZFN0eWxlLT5oYXNQb3NpdGl2
ZVN0cm9rZVdpZHRoKCkpCiAgICAgICAgICAgICAgICAgY2hpbGQtPmNsZWFyS25vd25Ub0hhdmVO
b092ZXJmbG93KCk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2hpbGQtPnJlbmRlcmVyKCkuaXNSZXBs
YWNlZCgpKSB7CiAgICAgICAgICAgICBjb25zdCBSZW5kZXJCb3gmIGJveCA9IGRvd25jYXN0PFJl
bmRlckJveD4oY2hpbGQtPnJlbmRlcmVyKCkpOwpAQCAtODk0LDcgKzg5Niw2IEBAIGlubGluZSB2
b2lkIElubGluZUZsb3dCb3g6OmFkZFRleHRCb3hWaXN1YWxPdmVyZmxvdyhJbmxpbmVUZXh0Qm94
JiB0ZXh0Qm94LCBHbHlwCiAgICAgaW50IGJvdHRvbUdseXBoT3ZlcmZsb3cgPSBzdHJva2VPdmVy
ZmxvdyArIGJvdHRvbUdseXBoRWRnZTsKICAgICBpbnQgbGVmdEdseXBoT3ZlcmZsb3cgPSAtc3Ry
b2tlT3ZlcmZsb3cgLSBsZWZ0R2x5cGhFZGdlOwogICAgIGludCByaWdodEdseXBoT3ZlcmZsb3cg
PSBzdHJva2VPdmVyZmxvdyArIHJpZ2h0R2x5cGhFZGdlOwotCiAgICAgaWYgKHN0ZDo6b3B0aW9u
YWw8Ym9vbD4gbWFya0V4aXN0c0FuZElzQWJvdmUgPSB0ZXh0Qm94LmVtcGhhc2lzTWFya0V4aXN0
c0FuZElzQWJvdmUobGluZVN0eWxlKSkgewogICAgICAgICBpbnQgZW1waGFzaXNNYXJrSGVpZ2h0
ID0gbGluZVN0eWxlLmZvbnRDYXNjYWRlKCkuZW1waGFzaXNNYXJrSGVpZ2h0KGxpbmVTdHlsZS50
ZXh0RW1waGFzaXNNYXJrU3RyaW5nKCkpOwogICAgICAgICBpZiAoKm1hcmtFeGlzdHNBbmRJc0Fi
b3ZlID09ICFsaW5lU3R5bGUuaXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSgpKQpAQCAtOTI4LDYg
KzkyOSw4IEBAIGlubGluZSB2b2lkIElubGluZUZsb3dCb3g6OmFkZFRleHRCb3hWaXN1YWxPdmVy
ZmxvdyhJbmxpbmVUZXh0Qm94JiB0ZXh0Qm94LCBHbHlwCiAgICAgCiAgICAgbG9naWNhbFZpc3Vh
bE92ZXJmbG93ID0gTGF5b3V0UmVjdChsb2dpY2FsTGVmdFZpc3VhbE92ZXJmbG93LCBsb2dpY2Fs
VG9wVmlzdWFsT3ZlcmZsb3csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsb2dpY2FsUmlnaHRWaXN1YWxPdmVyZmxvdyAtIGxvZ2ljYWxMZWZ0VmlzdWFsT3ZlcmZsb3cs
IGxvZ2ljYWxCb3R0b21WaXN1YWxPdmVyZmxvdyAtIGxvZ2ljYWxUb3BWaXN1YWxPdmVyZmxvdyk7
CisKKyAgICBGSVhNRTogQWRkIHJlcGFpbnQgcmVjdCBpbmZvcm1hdGlvbiBoZXJlLgogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgdGV4dEJveC5zZXRMb2dpY2FsT3Zl
cmZsb3dSZWN0KGxvZ2ljYWxWaXN1YWxPdmVyZmxvdyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZUZsb3dCb3guaAppbmRleCAyN2M2MjI5NDY2Y2E1MWQ0N2E4MmE1YTMyZTM1MThh
MmJiYTQ3ZjM1Li4wOTkxYWE3MzRmYWEzNmJjZWRhNzhmNzNlYzViNDhhODYzYThjNTY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVGbG93Qm94LmgKQEAgLTI5Miw4ICsyOTIsNyBA
QCBwdWJsaWM6CiAgICAgfQogCiAgICAgdm9pZCBjb21wdXRlUmVwbGFjZWRBbmRUZXh0TGluZVRv
cEFuZEJvdHRvbShMYXlvdXRVbml0JiBsaW5lVG9wLCBMYXlvdXRVbml0JiBsaW5lQm90dG9tKSBj
b25zdDsKLSAgICAKLSAgICAvLyBVc2VkIHRvIGNhbGN1bGF0ZSB0aGUgdW5kZXJsaW5lIG9mZnNl
dCBmb3IgVGV4dFVuZGVybGluZVBvc2l0aW9uOjpVbmRlci4KKwogICAgIHZvaWQgbWF4TG9naWNh
bEJvdHRvbUZvclRleHREZWNvcmF0aW9uTGluZShmbG9hdCYgbWF4TG9naWNhbEJvdHRvbSwgY29u
c3QgUmVuZGVyRWxlbWVudCogZGVjb3JhdGlvblJlbmRlcmVyLCBPcHRpb25TZXQ8VGV4dERlY29y
YXRpb24+KSBjb25zdDsKICAgICB2b2lkIG1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVjb3JhdGlvbkxp
bmUoZmxvYXQmIG1pbkxvZ2ljYWxUb3AsIGNvbnN0IFJlbmRlckVsZW1lbnQqIGRlY29yYXRpb25S
ZW5kZXJlciwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPikgY29uc3Q7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9JbmxpbmVUZXh0Qm94LmNwcAppbmRleCBiZTdmOGQ0ZTVhNWMwMmZkMDNh
Y2Q5NjI0ZmNiMjY5N2I4NDJiMmQ4Li5mZGEyYWU0YmEwZTBmMjY1MjdmN2QwMTk5NTkyMjkxYjJj
YTVlZjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lVGV4dEJv
eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZVRleHRCb3guY3BwCkBA
IC0xMDk3LDcgKzEwOTcsNiBAQCB2b2lkIElubGluZVRleHRCb3g6OnBhaW50TWFya2VkVGV4dERl
Y29yYXRpb24oUGFpbnRJbmZvJiBwYWludEluZm8sIGNvbnN0IEZsb2F0UgogICAgIGRlY29yYXRp
b25QYWludGVyLnNldElubGluZVRleHRCb3godGhpcyk7CiAgICAgZGVjb3JhdGlvblBhaW50ZXIu
c2V0Rm9udChsaW5lRm9udCgpKTsKICAgICBkZWNvcmF0aW9uUGFpbnRlci5zZXRXaWR0aChzbmFw
cGVkU2VsZWN0aW9uUmVjdC53aWR0aCgpKTsKLSAgICBkZWNvcmF0aW9uUGFpbnRlci5zZXRCYXNl
bGluZShsaW5lU3R5bGUoKS5mb250TWV0cmljcygpLmFzY2VudCgpKTsKICAgICBkZWNvcmF0aW9u
UGFpbnRlci5zZXRJc0hvcml6b250YWwoaXNIb3Jpem9udGFsKCkpOwogICAgIGlmIChtYXJrZWRU
ZXh0LnN0eWxlLnRleHRTaGFkb3cpIHsKICAgICAgICAgZGVjb3JhdGlvblBhaW50ZXIuc2V0VGV4
dFNoYWRvdygmbWFya2VkVGV4dC5zdHlsZS50ZXh0U2hhZG93LnZhbHVlKCkpOwpAQCAtMTIwMyw3
ICsxMjAyLDcgQEAgdm9pZCBJbmxpbmVUZXh0Qm94OjpwYWludENvbXBvc2l0aW9uVW5kZXJsaW5l
KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBGbG9hdFAKICAgICBDb2xvciB1bmRlcmxpbmVD
b2xvciA9IHVuZGVybGluZS5jb21wb3NpdGlvblVuZGVybGluZUNvbG9yID09IENvbXBvc2l0aW9u
VW5kZXJsaW5lQ29sb3I6OlRleHRDb2xvciA/IHJlbmRlcmVyKCkuc3R5bGUoKS52aXNpdGVkRGVw
ZW5kZW50Q29sb3JXaXRoQ29sb3JGaWx0ZXIoQ1NTUHJvcGVydHlXZWJraXRUZXh0RmlsbENvbG9y
KSA6IHJlbmRlcmVyKCkuc3R5bGUoKS5jb2xvckJ5QXBwbHlpbmdDb2xvckZpbHRlcih1bmRlcmxp
bmUuY29sb3IpOwogICAgIGNvbnRleHQuc2V0U3Ryb2tlQ29sb3IodW5kZXJsaW5lQ29sb3IpOwog
ICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKGxpbmVUaGlja25lc3MpOwotICAgIGNvbnRl
eHQuZHJhd0xpbmVGb3JUZXh0KEZsb2F0UG9pbnQoYm94T3JpZ2luLngoKSArIHN0YXJ0LCBib3hP
cmlnaW4ueSgpICsgbG9naWNhbEhlaWdodCgpIC0gbGluZVRoaWNrbmVzcyksIHdpZHRoLCByZW5k
ZXJlcigpLmRvY3VtZW50KCkucHJpbnRpbmcoKSk7CisgICAgY29udGV4dC5kcmF3TGluZUZvclRl
eHQoRmxvYXRSZWN0KGJveE9yaWdpbi54KCkgKyBzdGFydCwgYm94T3JpZ2luLnkoKSArIGxvZ2lj
YWxIZWlnaHQoKSAtIGxpbmVUaGlja25lc3MsIHdpZHRoLCBsaW5lVGhpY2tuZXNzKSwgcmVuZGVy
ZXIoKS5kb2N1bWVudCgpLnByaW50aW5nKCkpOwogfQogCiBpbnQgSW5saW5lVGV4dEJveDo6Y2Fy
ZXRNaW5PZmZzZXQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1NpbXBsZUxpbmVMYXlvdXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxp
bmVMYXlvdXQuY3BwCmluZGV4IGUwYzdiZWE3MWEwY2YwN2FmM2ViMDQyYWY3MjNhOTk2Y2Q1M2M4
YmIuLmFmMGE3NmQ1NjhiMzZlYzNiMzNjYjViZDAwYTRiZjk2NTM3ZjhlOTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dC5jcHAKQEAgLTIwMCw3ICsyMDAs
NyBAQCBzdGF0aWMgQXZvaWRhbmNlUmVhc29uRmxhZ3MgY2FuVXNlRm9yU3R5bGUoY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlLCBJbmNsdWRlUmVhcwogICAgIEF2b2lkYW5jZVJlYXNvbkZsYWdzIHJl
YXNvbnMgPSB7IH07CiAgICAgaWYgKHN0eWxlLnRleHRPdmVyZmxvdygpID09IFRleHRPdmVyZmxv
dzo6RWxsaXBzaXMpCiAgICAgICAgIFNFVF9SRUFTT05fQU5EX1JFVFVSTl9JRl9ORUVERUQoRmxv
d0hhc1RleHRPdmVyZmxvdywgcmVhc29ucywgaW5jbHVkZVJlYXNvbnMpOwotICAgIGlmICgoc3R5
bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSAmIFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUp
ICYmIHN0eWxlLnRleHRVbmRlcmxpbmVQb3NpdGlvbigpID09IFRleHRVbmRlcmxpbmVQb3NpdGlv
bjo6VW5kZXIpCisgICAgaWYgKChzdHlsZS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpICYgVGV4
dERlY29yYXRpb246OlVuZGVybGluZSkgJiYgKHN0eWxlLnRleHRVbmRlcmxpbmVQb3NpdGlvbigp
ICE9IFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6QXV0byB8fCAhc3R5bGUudGV4dFVuZGVybGluZU9m
ZnNldCgpLmlzQXV0bygpIHx8ICFzdHlsZS50ZXh0RGVjb3JhdGlvblRoaWNrbmVzcygpLmlzQXV0
bygpKSkKICAgICAgICAgU0VUX1JFQVNPTl9BTkRfUkVUVVJOX0lGX05FRURFRChGbG93SGFzVW5z
dXBwb3J0ZWRVbmRlcmxpbmVEZWNvcmF0aW9uLCByZWFzb25zLCBpbmNsdWRlUmVhc29ucyk7CiAg
ICAgLy8gTm9uLXZpc2libGUgb3ZlcmZsb3cgc2hvdWxkIGJlIHByZXR0eSBlYXN5IHRvIHN1cHBv
cnQuCiAgICAgaWYgKHN0eWxlLm92ZXJmbG93WCgpICE9IE92ZXJmbG93OjpWaXNpYmxlIHx8IHN0
eWxlLm92ZXJmbG93WSgpICE9IE92ZXJmbG93OjpWaXNpYmxlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGdW5jdGlvbnMuY3BwCmluZGV4IDc1
NTFhOWZkNmNkNjA5MmE3ZWMwYmI2Njk3OTNhZmZhZDRlNGQ5ODMuLjZmN2VlNDYzYTJkMzMyMDEx
Y2NlYmIwOGNkZTIyMWE4OGM4NmZmODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9TaW1wbGVMaW5lTGF5b3V0RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZ1bmN0aW9ucy5jcHAKQEAgLTk5LDcgKzk5LDYgQEAg
dm9pZCBwYWludEZsb3coY29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93LCBjb25zdCBMYXlvdXQm
IGxheW91dCwgUGFpbnRJbmZvJiBwYWkKICAgICAgICAgaWYgKHRleHRSZW5kZXJlcikgewogICAg
ICAgICAgICAgdGV4dERlY29yYXRpb25QYWludGVyLmVtcGxhY2UocGFpbnRJbmZvLmNvbnRleHQo
KSwgc3R5bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSwgKnRleHRSZW5kZXJlciwgZmFsc2Up
OwogICAgICAgICAgICAgdGV4dERlY29yYXRpb25QYWludGVyLT5zZXRGb250KHN0eWxlLmZvbnRD
YXNjYWRlKCkpOwotICAgICAgICAgICAgdGV4dERlY29yYXRpb25QYWludGVyLT5zZXRCYXNlbGlu
ZShzdHlsZS5mb250TWV0cmljcygpLmFzY2VudCgpKTsKICAgICAgICAgfQogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcApp
bmRleCA5OGU4OGRjNDgwNWQ2YTVkYTdhYTU0MjA1ZGRiMTZlNzQxNjk4OTgwLi5iNDYzODc5Mjlm
NzY3Y2JlYmM5YjFlYzcyMzY0ZmJmMjRmYTQ2NjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcApAQCAtMzYsMjIgKzM2LDE5IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIHZvaWQgYWRqdXN0U3RlcFRvRGVjb3Jh
dGlvbkxlbmd0aChmbG9hdCYgc3RlcCwgZmxvYXQmIGNvbnRyb2xQb2ludERpc3RhbmNlLCBmbG9h
dCBsZW5ndGgpCitzdGF0aWMgdm9pZCBhZGp1c3RTdGVwVG9EZWNvcmF0aW9uTGVuZ3RoKGZsb2F0
JiBzdGVwLCBmbG9hdCBsZW5ndGgpCiB7CiAgICAgQVNTRVJUKHN0ZXAgPiAwKTsKIAogICAgIGlm
IChsZW5ndGggPD0gMCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdW5zaWduZWQgc3RlcENvdW50
ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxlbmd0aCAvIHN0ZXApOworICAgIHVuc2lnbmVkIHN0
ZXBDb3VudCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihsZW5ndGggLyAoc3RlcCAqIDIpKTsKIAot
ICAgIC8vIEVhY2ggQmV6aWVyIGN1cnZlIHN0YXJ0cyBhdCB0aGUgc2FtZSBwaXhlbCB0aGF0IHRo
ZSBwcmV2aW91cyBvbmUKLSAgICAvLyBlbmRlZC4gV2UgbmVlZCB0byBzdWJ0cmFjdCAoc3RlcENv
dW50IC0gMSkgcGl4ZWxzIHdoZW4gY2FsY3VsYXRpbmcgdGhlCi0gICAgLy8gbGVuZ3RoIGNvdmVy
ZWQgdG8gYWNjb3VudCBmb3IgdGhhdC4KLSAgICBmbG9hdCB1bmNvdmVyZWRMZW5ndGggPSBsZW5n
dGggLSAoc3RlcENvdW50ICogc3RlcCAtIChzdGVwQ291bnQgLSAxKSk7Ci0gICAgZmxvYXQgYWRq
dXN0bWVudCA9IHVuY292ZXJlZExlbmd0aCAvIHN0ZXBDb3VudDsKLSAgICBzdGVwICs9IGFkanVz
dG1lbnQ7Ci0gICAgY29udHJvbFBvaW50RGlzdGFuY2UgKz0gYWRqdXN0bWVudDsKKyAgICBpZiAo
c3RlcENvdW50ID4gMCkgeworICAgICAgICAvLyBUcnkgdG8gZ2V0IHRoZSB3YXZlcyB0byBtYXRj
aCB1cCBvbiBhZGphY2VudCBlbGVtZW50cy4KKyAgICAgICAgc3RlcCA9IGxlbmd0aCAvIChzdGVw
Q291bnQgKiAyKTsKKyAgICB9CiB9CiAKIC8qCkBAIC04MSw3OCArNzgsNDAgQEAgc3RhdGljIHZv
aWQgYWRqdXN0U3RlcFRvRGVjb3JhdGlvbkxlbmd0aChmbG9hdCYgc3RlcCwgZmxvYXQmIGNvbnRy
b2xQb2ludERpc3RhbmMKICAqICAgICAgICAgICAgIHwtLS0tLS0tLS0tLXwKICAqICAgICAgICAg
ICAgICAgICBzdGVwCiAgKi8KLXN0YXRpYyB2b2lkIHN0cm9rZVdhdnlUZXh0RGVjb3JhdGlvbihH
cmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UG9pbnQmIHN0YXJ0LCBjb25zdCBG
bG9hdFBvaW50JiBlbmQsIGZsb2F0IHN0cm9rZVRoaWNrbmVzcywgZmxvYXQgZm9udFNpemUpCitz
dGF0aWMgdm9pZCBzdHJva2VXYXZ5VGV4dERlY29yYXRpb24oR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGZsb2F0IGZvbnRTaXplKQogewotICAgIEZsb2F0
UG9pbnQgcDEgPSBzdGFydDsKLSAgICBGbG9hdFBvaW50IHAyID0gZW5kOwotICAgIGNvbnRleHQu
YWRqdXN0TGluZVRvUGl4ZWxCb3VuZGFyaWVzKHAxLCBwMiwgc3Ryb2tlVGhpY2tuZXNzLCBjb250
ZXh0LnN0cm9rZVN0eWxlKCkpOworICAgIEZsb2F0UG9pbnQgcDEgPSByZWN0LmxvY2F0aW9uKCk7
CisgICAgRmxvYXRQb2ludCBwMiA9IHJlY3QubG9jYXRpb24oKSArIEZsb2F0U2l6ZShyZWN0Lndp
ZHRoKCksIDApOwogCiAgICAgUGF0aCBwYXRoOwogICAgIHBhdGgubW92ZVRvKHAxKTsKIAotICAg
IGZsb2F0IGNvbnRyb2xQb2ludERpc3RhbmNlOwotICAgIGZsb2F0IHN0ZXA7Ci0gICAgZ2V0V2F2
eVN0cm9rZVBhcmFtZXRlcnMoZm9udFNpemUsIGNvbnRyb2xQb2ludERpc3RhbmNlLCBzdGVwKTsK
LQotICAgIGJvb2wgaXNWZXJ0aWNhbExpbmUgPSAocDEueCgpID09IHAyLngoKSk7Ci0KLSAgICBp
ZiAoaXNWZXJ0aWNhbExpbmUpIHsKLSAgICAgICAgQVNTRVJUKHAxLngoKSA9PSBwMi54KCkpOwot
Ci0gICAgICAgIGZsb2F0IHhBeGlzID0gcDEueCgpOwotICAgICAgICBmbG9hdCB5MTsKLSAgICAg
ICAgZmxvYXQgeTI7Ci0KLSAgICAgICAgaWYgKHAxLnkoKSA8IHAyLnkoKSkgewotICAgICAgICAg
ICAgeTEgPSBwMS55KCk7Ci0gICAgICAgICAgICB5MiA9IHAyLnkoKTsKLSAgICAgICAgfSBlbHNl
IHsKLSAgICAgICAgICAgIHkxID0gcDIueSgpOwotICAgICAgICAgICAgeTIgPSBwMS55KCk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBhZGp1c3RTdGVwVG9EZWNvcmF0aW9uTGVuZ3RoKHN0ZXAsIGNv
bnRyb2xQb2ludERpc3RhbmNlLCB5MiAtIHkxKTsKLSAgICAgICAgRmxvYXRQb2ludCBjb250cm9s
UG9pbnQxKHhBeGlzICsgY29udHJvbFBvaW50RGlzdGFuY2UsIDApOwotICAgICAgICBGbG9hdFBv
aW50IGNvbnRyb2xQb2ludDIoeEF4aXMgLSBjb250cm9sUG9pbnREaXN0YW5jZSwgMCk7CisgICAg
YXV0byB3YXZ5U3Ryb2tlUGFyYW1ldGVycyA9IGdldFdhdnlTdHJva2VQYXJhbWV0ZXJzKGZvbnRT
aXplKTsKIAotICAgICAgICBmb3IgKGZsb2F0IHkgPSB5MTsgeSArIDIgKiBzdGVwIDw9IHkyOykg
ewotICAgICAgICAgICAgY29udHJvbFBvaW50MS5zZXRZKHkgKyBzdGVwKTsKLSAgICAgICAgICAg
IGNvbnRyb2xQb2ludDIuc2V0WSh5ICsgc3RlcCk7Ci0gICAgICAgICAgICB5ICs9IDIgKiBzdGVw
OwotICAgICAgICAgICAgcGF0aC5hZGRCZXppZXJDdXJ2ZVRvKGNvbnRyb2xQb2ludDEsIGNvbnRy
b2xQb2ludDIsIEZsb2F0UG9pbnQoeEF4aXMsIHkpKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7
Ci0gICAgICAgIEFTU0VSVChwMS55KCkgPT0gcDIueSgpKTsKKyAgICBBU1NFUlQocDEueSgpID09
IHAyLnkoKSk7CiAKLSAgICAgICAgZmxvYXQgeUF4aXMgPSBwMS55KCk7Ci0gICAgICAgIGZsb2F0
IHgxOwotICAgICAgICBmbG9hdCB4MjsKKyAgICBmbG9hdCB5QXhpcyA9IHAxLnkoKTsKKyAgICBm
bG9hdCB4MSA9IHN0ZDo6bWluKHAxLngoKSwgcDIueCgpKTsKKyAgICBmbG9hdCB4MiA9IHN0ZDo6
bWF4KHAxLngoKSwgcDIueCgpKTsKIAotICAgICAgICBpZiAocDEueCgpIDwgcDIueCgpKSB7Ci0g
ICAgICAgICAgICB4MSA9IHAxLngoKTsKLSAgICAgICAgICAgIHgyID0gcDIueCgpOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgeDEgPSBwMi54KCk7Ci0gICAgICAgICAgICB4MiA9IHAx
LngoKTsKLSAgICAgICAgfQorICAgIGFkanVzdFN0ZXBUb0RlY29yYXRpb25MZW5ndGgod2F2eVN0
cm9rZVBhcmFtZXRlcnMuc3RlcCwgeDIgLSB4MSk7CisgICAgRmxvYXRQb2ludCBjb250cm9sUG9p
bnQxKDAsIHlBeGlzICsgd2F2eVN0cm9rZVBhcmFtZXRlcnMuY29udHJvbFBvaW50RGlzdGFuY2Up
OworICAgIEZsb2F0UG9pbnQgY29udHJvbFBvaW50MigwLCB5QXhpcyAtIHdhdnlTdHJva2VQYXJh
bWV0ZXJzLmNvbnRyb2xQb2ludERpc3RhbmNlKTsKIAotICAgICAgICBhZGp1c3RTdGVwVG9EZWNv
cmF0aW9uTGVuZ3RoKHN0ZXAsIGNvbnRyb2xQb2ludERpc3RhbmNlLCB4MiAtIHgxKTsKLSAgICAg
ICAgRmxvYXRQb2ludCBjb250cm9sUG9pbnQxKDAsIHlBeGlzICsgY29udHJvbFBvaW50RGlzdGFu
Y2UpOwotICAgICAgICBGbG9hdFBvaW50IGNvbnRyb2xQb2ludDIoMCwgeUF4aXMgLSBjb250cm9s
UG9pbnREaXN0YW5jZSk7Ci0KLSAgICAgICAgZm9yIChmbG9hdCB4ID0geDE7IHggKyAyICogc3Rl
cCA8PSB4MjspIHsKLSAgICAgICAgICAgIGNvbnRyb2xQb2ludDEuc2V0WCh4ICsgc3RlcCk7Ci0g
ICAgICAgICAgICBjb250cm9sUG9pbnQyLnNldFgoeCArIHN0ZXApOwotICAgICAgICAgICAgeCAr
PSAyICogc3RlcDsKLSAgICAgICAgICAgIHBhdGguYWRkQmV6aWVyQ3VydmVUbyhjb250cm9sUG9p
bnQxLCBjb250cm9sUG9pbnQyLCBGbG9hdFBvaW50KHgsIHlBeGlzKSk7Ci0gICAgICAgIH0KKyAg
ICBmb3IgKGZsb2F0IHggPSB4MTsgeCArIDIgKiB3YXZ5U3Ryb2tlUGFyYW1ldGVycy5zdGVwIDw9
IHgyOykgeworICAgICAgICBjb250cm9sUG9pbnQxLnNldFgoeCArIHdhdnlTdHJva2VQYXJhbWV0
ZXJzLnN0ZXApOworICAgICAgICBjb250cm9sUG9pbnQyLnNldFgoeCArIHdhdnlTdHJva2VQYXJh
bWV0ZXJzLnN0ZXApOworICAgICAgICB4ICs9IDIgKiB3YXZ5U3Ryb2tlUGFyYW1ldGVycy5zdGVw
OworICAgICAgICBwYXRoLmFkZEJlemllckN1cnZlVG8oY29udHJvbFBvaW50MSwgY29udHJvbFBv
aW50MiwgRmxvYXRQb2ludCh4LCB5QXhpcykpOwogICAgIH0KIAogICAgIGNvbnRleHQuc2V0U2hv
dWxkQW50aWFsaWFzKHRydWUpOworICAgIGF1dG8gc3Ryb2tlVGhpY2tuZXNzID0gY29udGV4dC5z
dHJva2VUaGlja25lc3MoKTsKKyAgICBjb250ZXh0LnNldFN0cm9rZVRoaWNrbmVzcyhyZWN0Lmhl
aWdodCgpKTsKICAgICBjb250ZXh0LnN0cm9rZVBhdGgocGF0aCk7CisgICAgY29udGV4dC5zZXRT
dHJva2VUaGlja25lc3Moc3Ryb2tlVGhpY2tuZXNzKTsKIH0KIAotI2lmIEVOQUJMRShDU1MzX1RF
WFRfREVDT1JBVElPTl9TS0lQX0lOSykKIHN0YXRpYyBib29sIGNvbXBhcmVUdXBsZXMoc3RkOjpw
YWlyPGZsb2F0LCBmbG9hdD4gbCwgc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4gcikKIHsKICAgICBy
ZXR1cm4gbC5maXJzdCA8IHIuZmlyc3Q7CkBAIC0yMDQsMTggKzE2MywxNiBAQCBzdGF0aWMgRGFz
aEFycmF5IHRyYW5zbGF0ZUludGVyc2VjdGlvblBvaW50c1RvU2tpcElua0JvdW5kYXJpZXMoY29u
c3QgRGFzaEFycmF5JgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyB2b2lkIGRyYXdT
a2lwSW5rVW5kZXJsaW5lKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udENhc2Nh
ZGUmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRP
cmlnaW4sIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2FsT3JpZ2luLAotICAgIGZsb2F0IHVuZGVybGlu
ZU9mZnNldCwgZmxvYXQgd2lkdGgsIGJvb2wgaXNQcmludGluZywgYm9vbCBkb3VibGVMaW5lcywg
U3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUpCitzdGF0aWMgdm9pZCBkcmF3U2tpcElua1VuZGVybGlu
ZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBjb25z
dCBUZXh0UnVuJiB0ZXh0UnVuLAorICAgIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sIGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwgYm9vbCBpc1ByaW50aW5nLCBib29sIGRvdWJsZUxpbmVzLAor
ICAgIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlKQogewotICAgIEZsb2F0UG9pbnQgYWRqdXN0ZWRM
b2NhbE9yaWdpbiA9IGxvY2FsT3JpZ2luOwotICAgIGFkanVzdGVkTG9jYWxPcmlnaW4ubW92ZSgw
LCB1bmRlcmxpbmVPZmZzZXQpOwotICAgIEZsb2F0UmVjdCB1bmRlcmxpbmVCb3VuZGluZ0JveCA9
IGNvbnRleHQuY29tcHV0ZVVuZGVybGluZUJvdW5kc0ZvclRleHQoYWRqdXN0ZWRMb2NhbE9yaWdp
biwgd2lkdGgsIGlzUHJpbnRpbmcpOworICAgIEZsb2F0UmVjdCB1bmRlcmxpbmVCb3VuZGluZ0Jv
eCA9IGNvbnRleHQuY29tcHV0ZVVuZGVybGluZUJvdW5kc0ZvclRleHQocmVjdCwgaXNQcmludGlu
Zyk7CiAgICAgRGFzaEFycmF5IGludGVyc2VjdGlvbnMgPSBmb250LmRhc2hlc0ZvckludGVyc2Vj
dGlvbnNXaXRoUmVjdCh0ZXh0UnVuLCB0ZXh0T3JpZ2luLCB1bmRlcmxpbmVCb3VuZGluZ0JveCk7
Ci0gICAgRGFzaEFycmF5IGEgPSB0cmFuc2xhdGVJbnRlcnNlY3Rpb25Qb2ludHNUb1NraXBJbmtC
b3VuZGFyaWVzKGludGVyc2VjdGlvbnMsIHVuZGVybGluZUJvdW5kaW5nQm94LmhlaWdodCgpLCB3
aWR0aCk7Ci0gICAgQVNTRVJUKCEoYS5zaXplKCkgJSAyKSk7Ci0gICAgY29udGV4dC5kcmF3TGlu
ZXNGb3JUZXh0KGFkanVzdGVkTG9jYWxPcmlnaW4sIGEsIGlzUHJpbnRpbmcsIGRvdWJsZUxpbmVz
LCBzdHJva2VTdHlsZSk7CisgICAgRGFzaEFycmF5IGJvdW5kYXJpZXMgPSB0cmFuc2xhdGVJbnRl
cnNlY3Rpb25Qb2ludHNUb1NraXBJbmtCb3VuZGFyaWVzKGludGVyc2VjdGlvbnMsIHVuZGVybGlu
ZUJvdW5kaW5nQm94LmhlaWdodCgpLCByZWN0LndpZHRoKCkpOworICAgIEFTU0VSVCghKGJvdW5k
YXJpZXMuc2l6ZSgpICUgMikpOworICAgIGNvbnRleHQuZHJhd0xpbmVzRm9yVGV4dChyZWN0Lmxv
Y2F0aW9uKCksIHJlY3QuaGVpZ2h0KCksIGJvdW5kYXJpZXMsIGlzUHJpbnRpbmcsIGRvdWJsZUxp
bmVzLCBzdHJva2VTdHlsZSk7CiB9Ci0jZW5kaWYKIAogc3RhdGljIFN0cm9rZVN0eWxlIHRleHRE
ZWNvcmF0aW9uU3R5bGVUb1N0cm9rZVN0eWxlKFRleHREZWNvcmF0aW9uU3R5bGUgZGVjb3JhdGlv
blN0eWxlKQogewpAQCAtMjU5LDM1ICsyMTYsMjggQEAgVGV4dERlY29yYXRpb25QYWludGVyOjpU
ZXh0RGVjb3JhdGlvblBhaW50ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBPcHRpb25TZXQK
IAogdm9pZCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50VGV4dERlY29yYXRpb24oY29uc3Qg
VGV4dFJ1biYgdGV4dFJ1biwgY29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgY29uc3QgRmxv
YXRQb2ludCYgYm94T3JpZ2luKQogewotI2lmICFFTkFCTEUoQ1NTM19URVhUX0RFQ09SQVRJT05f
U0tJUF9JTkspCi0gICAgVU5VU0VEX1BBUkFNKHRleHRSdW4pOwotICAgIFVOVVNFRF9QQVJBTSh0
ZXh0T3JpZ2luKTsKLSNlbmRpZgogICAgIEFTU0VSVChtX2ZvbnQpOwotICAgIGZsb2F0IHRleHRE
ZWNvcmF0aW9uVGhpY2tuZXNzID0gdGV4dERlY29yYXRpb25TdHJva2VUaGlja25lc3MobV9saW5l
U3R5bGUuY29tcHV0ZWRGb250UGl4ZWxTaXplKCkpOwotICAgIG1fY29udGV4dC5zZXRTdHJva2VU
aGlja25lc3ModGV4dERlY29yYXRpb25UaGlja25lc3MpOwotICAgIEZsb2F0UG9pbnQgbG9jYWxP
cmlnaW4gPSBib3hPcmlnaW47CisgICAgY29uc3QgYXV0byYgZm9udE1ldHJpY3MgPSBtX2xpbmVT
dHlsZS5mb250TWV0cmljcygpOwogCi0gICAgYXV0byBwYWludERlY29yYXRpb24gPSBbJl0gKE9w
dGlvblNldDxUZXh0RGVjb3JhdGlvbj4gZGVjb3JhdGlvbiwgVGV4dERlY29yYXRpb25TdHlsZSBz
dHlsZSwgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBGbG9hdFBvaW50JiBzdGFydCwgY29uc3Qg
RmxvYXRQb2ludCYgZW5kLCBpbnQgb2Zmc2V0KSB7CisgICAgYXV0byBwYWludERlY29yYXRpb24g
PSBbJl0gKE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4gZGVjb3JhdGlvbiwgVGV4dERlY29yYXRp
b25TdHlsZSBzdHlsZSwgY29uc3QgQ29sb3ImIGNvbG9yLCBjb25zdCBGbG9hdFJlY3QmIHJlY3Qp
IHsKICAgICAgICAgbV9jb250ZXh0LnNldFN0cm9rZUNvbG9yKGNvbG9yKTsKIAogICAgICAgICBh
dXRvIHN0cm9rZVN0eWxlID0gdGV4dERlY29yYXRpb25TdHlsZVRvU3Ryb2tlU3R5bGUoc3R5bGUp
OwogCiAgICAgICAgIGlmIChzdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpXYXZ5KQotICAg
ICAgICAgICAgc3Ryb2tlV2F2eVRleHREZWNvcmF0aW9uKG1fY29udGV4dCwgc3RhcnQsIGVuZCwg
dGV4dERlY29yYXRpb25UaGlja25lc3MsIG1fbGluZVN0eWxlLmNvbXB1dGVkRm9udFBpeGVsU2l6
ZSgpKTsKKyAgICAgICAgICAgIHN0cm9rZVdhdnlUZXh0RGVjb3JhdGlvbihtX2NvbnRleHQsIHJl
Y3QsIG1fbGluZVN0eWxlLmNvbXB1dGVkRm9udFNpemUoKSk7CiAgICAgICAgIGVsc2UgaWYgKGRl
Y29yYXRpb24gPT0gVGV4dERlY29yYXRpb246OlVuZGVybGluZSB8fCBkZWNvcmF0aW9uID09IFRl
eHREZWNvcmF0aW9uOjpPdmVybGluZSkgewotI2lmIEVOQUJMRShDU1MzX1RFWFRfREVDT1JBVElP
Tl9TS0lQX0lOSykKICAgICAgICAgICAgIGlmICgobV9saW5lU3R5bGUudGV4dERlY29yYXRpb25T
a2lwKCkgPT0gVGV4dERlY29yYXRpb25Ta2lwOjpJbmsgfHwgbV9saW5lU3R5bGUudGV4dERlY29y
YXRpb25Ta2lwKCkgPT0gVGV4dERlY29yYXRpb25Ta2lwOjpBdXRvKSAmJiBtX2lzSG9yaXpvbnRh
bCkgewogICAgICAgICAgICAgICAgIGlmICghbV9jb250ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkK
LSAgICAgICAgICAgICAgICAgICAgZHJhd1NraXBJbmtVbmRlcmxpbmUobV9jb250ZXh0LCAqbV9m
b250LCB0ZXh0UnVuLCB0ZXh0T3JpZ2luLCBsb2NhbE9yaWdpbiwgb2Zmc2V0LCBtX3dpZHRoLCBt
X2lzUHJpbnRpbmcsIHN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6OkRvdWJsZSwgc3Ryb2tl
U3R5bGUpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgLy8gRklYTUU6IE5l
ZWQgdG8gc3VwcG9ydCB0ZXh0LWRlY29yYXRpb24tc2tpcDogbm9uZS4KLSNlbmRpZgotICAgICAg
ICAgICAgICAgIG1fY29udGV4dC5kcmF3TGluZUZvclRleHQoc3RhcnQsIG1fd2lkdGgsIG1faXNQ
cmludGluZywgc3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZTo6RG91YmxlLCBzdHJva2VTdHls
ZSk7CisgICAgICAgICAgICAgICAgICAgIGRyYXdTa2lwSW5rVW5kZXJsaW5lKG1fY29udGV4dCwg
Km1fZm9udCwgdGV4dFJ1biwgdGV4dE9yaWdpbiwgcmVjdCwgbV9pc1ByaW50aW5nLCBzdHlsZSA9
PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpEb3VibGUsIHN0cm9rZVN0eWxlKTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gc3VwcG9ydCBvdGhl
ciB2YWx1ZXMgb2YgdGV4dC1kZWNvcmF0aW9uLXNraXAuCisgICAgICAgICAgICAgICAgbV9jb250
ZXh0LmRyYXdMaW5lRm9yVGV4dChyZWN0LCBtX2lzUHJpbnRpbmcsIHN0eWxlID09IFRleHREZWNv
cmF0aW9uU3R5bGU6OkRvdWJsZSwgc3Ryb2tlU3R5bGUpOworICAgICAgICAgICAgfQogICAgICAg
ICAgICAgCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQoZGVjb3JhdGlvbiA9
PSBUZXh0RGVjb3JhdGlvbjo6TGluZVRocm91Z2gpOwotICAgICAgICAgICAgbV9jb250ZXh0LmRy
YXdMaW5lRm9yVGV4dChzdGFydCwgbV93aWR0aCwgbV9pc1ByaW50aW5nLCBzdHlsZSA9PSBUZXh0
RGVjb3JhdGlvblN0eWxlOjpEb3VibGUsIHN0cm9rZVN0eWxlKTsKKyAgICAgICAgICAgIG1fY29u
dGV4dC5kcmF3TGluZUZvclRleHQocmVjdCwgbV9pc1ByaW50aW5nLCBzdHlsZSA9PSBUZXh0RGVj
b3JhdGlvblN0eWxlOjpEb3VibGUsIHN0cm9rZVN0eWxlKTsKICAgICAgICAgfQogICAgIH07CiAK
QEAgLTI5NSwxMyArMjQ1LDE1IEBAIHZvaWQgVGV4dERlY29yYXRpb25QYWludGVyOjpwYWludFRl
eHREZWNvcmF0aW9uKGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IEZsCiAgICAgICAgICYm
ICghbV9kZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvbjo6T3ZlcmxpbmUpIHx8IG1f
c3R5bGVzLm92ZXJsaW5lQ29sb3IuaXNPcGFxdWUoKSkKICAgICAgICAgJiYgKCFtX2RlY29yYXRp
b25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uOjpMaW5lVGhyb3VnaCkgfHwgbV9zdHlsZXMubGlu
ZXRocm91Z2hDb2xvci5pc09wYXF1ZSgpKTsKIAorICAgIGZsb2F0IHRleHREZWNvcmF0aW9uVGhp
Y2tuZXNzID0gbV9saW5lU3R5bGUudGV4dERlY29yYXRpb25UaGlja25lc3MoKS5yZXNvbHZlKG1f
bGluZVN0eWxlLmNvbXB1dGVkRm9udFNpemUoKSwgbV9saW5lU3R5bGUuZm9udE1ldHJpY3MoKSk7
CisgICAgRmxvYXRSZWN0IGJhc2VSZWN0ID0gRmxvYXRSZWN0KGJveE9yaWdpbiwgRmxvYXRTaXpl
KG1fd2lkdGgsIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzKSk7CiAgICAgaW50IGV4dHJhT2Zmc2V0
ID0gMDsKICAgICBib29sIGNsaXBwaW5nID0gIWFyZUxpbmVzT3BhcXVlICYmIG1fc2hhZG93ICYm
IG1fc2hhZG93LT5uZXh0KCk7CiAgICAgaWYgKGNsaXBwaW5nKSB7Ci0gICAgICAgIEZsb2F0UmVj
dCBjbGlwUmVjdChsb2NhbE9yaWdpbiwgRmxvYXRTaXplKG1fd2lkdGgsIG1fYmFzZWxpbmUgKyAy
KSk7CisgICAgICAgIEZsb2F0UmVjdCBjbGlwUmVjdCA9IGJhc2VSZWN0OwogICAgICAgICBmb3Ig
KGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdyA9IG1fc2hhZG93OyBzaGFkb3c7IHNoYWRvdyA9IHNo
YWRvdy0+bmV4dCgpKSB7CiAgICAgICAgICAgICBpbnQgc2hhZG93RXh0ZW50ID0gc2hhZG93LT5w
YWludGluZ0V4dGVudCgpOwotICAgICAgICAgICAgRmxvYXRSZWN0IHNoYWRvd1JlY3QobG9jYWxP
cmlnaW4sIEZsb2F0U2l6ZShtX3dpZHRoLCBtX2Jhc2VsaW5lICsgMikpOworICAgICAgICAgICAg
RmxvYXRSZWN0IHNoYWRvd1JlY3QoYmFzZVJlY3QubG9jYXRpb24oKSwgRmxvYXRTaXplKG1fd2lk
dGgsIGZvbnRNZXRyaWNzLmFzY2VudCgpICsgMikpOwogICAgICAgICAgICAgc2hhZG93UmVjdC5p
bmZsYXRlKHNoYWRvd0V4dGVudCk7CiAgICAgICAgICAgICBpbnQgc2hhZG93WCA9IG1faXNIb3Jp
em9udGFsID8gc2hhZG93LT54KCkgOiBzaGFkb3ctPnkoKTsKICAgICAgICAgICAgIGludCBzaGFk
b3dZID0gbV9pc0hvcml6b250YWwgPyBzaGFkb3ctPnkoKSA6IC1zaGFkb3ctPngoKTsKQEAgLTMx
MSw4ICsyNjMsOCBAQCB2b2lkIFRleHREZWNvcmF0aW9uUGFpbnRlcjo6cGFpbnRUZXh0RGVjb3Jh
dGlvbihjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBjb25zdCBGbAogICAgICAgICB9CiAgICAgICAg
IG1fY29udGV4dC5zYXZlKCk7CiAgICAgICAgIG1fY29udGV4dC5jbGlwKGNsaXBSZWN0KTsKLSAg
ICAgICAgZXh0cmFPZmZzZXQgKz0gbV9iYXNlbGluZSArIDI7Ci0gICAgICAgIGxvY2FsT3JpZ2lu
Lm1vdmUoMCwgZXh0cmFPZmZzZXQpOworICAgICAgICBleHRyYU9mZnNldCArPSBmb250TWV0cmlj
cy5hc2NlbnQoKSArIDI7CisgICAgICAgIGJhc2VSZWN0Lm1vdmUoMCwgZXh0cmFPZmZzZXQpOwog
ICAgIH0KIAogICAgIGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvdyA9IG1fc2hhZG93OwpAQCAtMzIw
LDcgKzI3Miw3IEBAIHZvaWQgVGV4dERlY29yYXRpb25QYWludGVyOjpwYWludFRleHREZWNvcmF0
aW9uKGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGNvbnN0IEZsCiAgICAgICAgIGlmIChzaGFkb3cp
IHsKICAgICAgICAgICAgIGlmICghc2hhZG93LT5uZXh0KCkpIHsKICAgICAgICAgICAgICAgICAv
LyBUaGUgbGFzdCBzZXQgb2YgbGluZXMgcGFpbnRzIG5vcm1hbGx5IGluc2lkZSB0aGUgY2xpcC4K
LSAgICAgICAgICAgICAgICBsb2NhbE9yaWdpbi5tb3ZlKDAsIC1leHRyYU9mZnNldCk7CisgICAg
ICAgICAgICAgICAgYmFzZVJlY3QubG9jYXRpb24oKS5tb3ZlKDAsIC1leHRyYU9mZnNldCk7CiAg
ICAgICAgICAgICAgICAgZXh0cmFPZmZzZXQgPSAwOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgaW50IHNoYWRvd1ggPSBtX2lzSG9yaXpvbnRhbCA/IHNoYWRvdy0+eCgpIDogc2hhZG93LT55
KCk7CkBAIC0zMzUsMjIgKzI4NywyNSBAQCB2b2lkIFRleHREZWNvcmF0aW9uUGFpbnRlcjo6cGFp
bnRUZXh0RGVjb3JhdGlvbihjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBjb25zdCBGbAogCiAgICAg
ICAgIC8vIFRoZXNlIGRlY29yYXRpb25zIHNob3VsZCBtYXRjaCB0aGUgdmlzdWFsIG92ZXJmbG93
cyBjb21wdXRlZCBpbiB2aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKCkuCiAgICAgICAgIGlm
IChtX2RlY29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUpKSB7Ci0g
ICAgICAgICAgICBpbnQgb2Zmc2V0ID0gY29tcHV0ZVVuZGVybGluZU9mZnNldChtX2xpbmVTdHls
ZS50ZXh0VW5kZXJsaW5lUG9zaXRpb24oKSwgbV9saW5lU3R5bGUuZm9udE1ldHJpY3MoKSwgbV9p
bmxpbmVUZXh0Qm94LCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcyk7Ci0gICAgICAgICAgICBmbG9h
dCB3YXZ5T2Zmc2V0ID0gbV9zdHlsZXMudW5kZXJsaW5lU3R5bGUgPT0gVGV4dERlY29yYXRpb25T
dHlsZTo6V2F2eSA/IG1fd2F2eU9mZnNldCA6IDA7Ci0gICAgICAgICAgICBGbG9hdFBvaW50IHN0
YXJ0ID0gbG9jYWxPcmlnaW4gKyBGbG9hdFNpemUoMCwgb2Zmc2V0ICsgd2F2eU9mZnNldCk7Ci0g
ICAgICAgICAgICBGbG9hdFBvaW50IGVuZCA9IGxvY2FsT3JpZ2luICsgRmxvYXRTaXplKG1fd2lk
dGgsIG9mZnNldCArIHdhdnlPZmZzZXQpOwotICAgICAgICAgICAgcGFpbnREZWNvcmF0aW9uKFRl
eHREZWNvcmF0aW9uOjpVbmRlcmxpbmUsIG1fc3R5bGVzLnVuZGVybGluZVN0eWxlLCBtX3N0eWxl
cy51bmRlcmxpbmVDb2xvciwgc3RhcnQsIGVuZCwgb2Zmc2V0KTsKKyAgICAgICAgICAgIGZsb2F0
IGdhcCA9IGNvbXB1dGVVbmRlcmxpbmVHYXAobV9saW5lU3R5bGUudGV4dFVuZGVybGluZVBvc2l0
aW9uKCksIG1fbGluZVN0eWxlLnRleHRVbmRlcmxpbmVPZmZzZXQoKSwgdGV4dERlY29yYXRpb25U
aGlja25lc3MsIG1fbGluZVN0eWxlLmZvbnRNZXRyaWNzKCksIG1faW5saW5lVGV4dEJveCk7Cisg
ICAgICAgICAgICBmbG9hdCB3YXZ5T2Zmc2V0ID0gbV9zdHlsZXMudW5kZXJsaW5lU3R5bGUgPT0g
VGV4dERlY29yYXRpb25TdHlsZTo6V2F2eSA/IG1fd2F2eU9mZnNldCAqIDMgOiAwOworICAgICAg
ICAgICAgYXV0byB5UG9zaXRpb24gPSBmb250TWV0cmljcy5hc2NlbnQoKSArIGdhcCArIHdhdnlP
ZmZzZXQ7CisgICAgICAgICAgICBhdXRvIHJlY3QgPSBiYXNlUmVjdDsKKyAgICAgICAgICAgIHJl
Y3QubW92ZShGbG9hdFNpemUoMCwgeVBvc2l0aW9uKSk7CisgICAgICAgICAgICBwYWludERlY29y
YXRpb24oVGV4dERlY29yYXRpb246OlVuZGVybGluZSwgbV9zdHlsZXMudW5kZXJsaW5lU3R5bGUs
IG1fc3R5bGVzLnVuZGVybGluZUNvbG9yLCByZWN0KTsKICAgICAgICAgfQogICAgICAgICBpZiAo
bV9kZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvbjo6T3ZlcmxpbmUpKSB7Ci0gICAg
ICAgICAgICBmbG9hdCB3YXZ5T2Zmc2V0ID0gbV9zdHlsZXMub3ZlcmxpbmVTdHlsZSA9PSBUZXh0
RGVjb3JhdGlvblN0eWxlOjpXYXZ5ID8gbV93YXZ5T2Zmc2V0IDogMDsKLSAgICAgICAgICAgIEZs
b2F0UG9pbnQgc3RhcnQgPSBsb2NhbE9yaWdpbiAtIEZsb2F0U2l6ZSgwLCB3YXZ5T2Zmc2V0KTsK
LSAgICAgICAgICAgIEZsb2F0UG9pbnQgZW5kID0gbG9jYWxPcmlnaW4gKyBGbG9hdFNpemUobV93
aWR0aCwgLXdhdnlPZmZzZXQpOwotICAgICAgICAgICAgcGFpbnREZWNvcmF0aW9uKFRleHREZWNv
cmF0aW9uOjpPdmVybGluZSwgbV9zdHlsZXMub3ZlcmxpbmVTdHlsZSwgbV9zdHlsZXMub3Zlcmxp
bmVDb2xvciwgc3RhcnQsIGVuZCwgMCk7CisgICAgICAgICAgICBmbG9hdCB3YXZ5T2Zmc2V0ID0g
bV9zdHlsZXMub3ZlcmxpbmVTdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpXYXZ5ID8gbV93
YXZ5T2Zmc2V0ICogMyA6IDA7CisgICAgICAgICAgICBhdXRvIHlQb3NpdGlvbiA9IC13YXZ5T2Zm
c2V0OworICAgICAgICAgICAgYXV0byByZWN0ID0gYmFzZVJlY3Q7CisgICAgICAgICAgICByZWN0
Lm1vdmUoRmxvYXRTaXplKDAsIHlQb3NpdGlvbikpOworICAgICAgICAgICAgcGFpbnREZWNvcmF0
aW9uKFRleHREZWNvcmF0aW9uOjpPdmVybGluZSwgbV9zdHlsZXMub3ZlcmxpbmVTdHlsZSwgbV9z
dHlsZXMub3ZlcmxpbmVDb2xvciwgcmVjdCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1fZGVj
b3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb246OkxpbmVUaHJvdWdoKSkgewotICAgICAg
ICAgICAgRmxvYXRQb2ludCBzdGFydCA9IGxvY2FsT3JpZ2luICsgRmxvYXRTaXplKDAsIDIgKiBt
X2Jhc2VsaW5lIC8gMyk7Ci0gICAgICAgICAgICBGbG9hdFBvaW50IGVuZCA9IGxvY2FsT3JpZ2lu
ICsgRmxvYXRTaXplKG1fd2lkdGgsIDIgKiBtX2Jhc2VsaW5lIC8gMyk7Ci0gICAgICAgICAgICBw
YWludERlY29yYXRpb24oVGV4dERlY29yYXRpb246OkxpbmVUaHJvdWdoLCBtX3N0eWxlcy5saW5l
dGhyb3VnaFN0eWxlLCBtX3N0eWxlcy5saW5ldGhyb3VnaENvbG9yLCBzdGFydCwgZW5kLCAwKTsK
KyAgICAgICAgICAgIGF1dG8geVBvc2l0aW9uID0gMiAqIGZvbnRNZXRyaWNzLmFzY2VudCgpIC8g
MzsKKyAgICAgICAgICAgIGF1dG8gcmVjdCA9IGJhc2VSZWN0OworICAgICAgICAgICAgcmVjdC5t
b3ZlKEZsb2F0U2l6ZSgwLCB5UG9zaXRpb24pKTsKKyAgICAgICAgICAgIHBhaW50RGVjb3JhdGlv
bihUZXh0RGVjb3JhdGlvbjo6TGluZVRocm91Z2gsIG1fc3R5bGVzLmxpbmV0aHJvdWdoU3R5bGUs
IG1fc3R5bGVzLmxpbmV0aHJvdWdoQ29sb3IsIHJlY3QpOwogICAgICAgICB9CiAgICAgfSB3aGls
ZSAoc2hhZG93KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRE
ZWNvcmF0aW9uUGFpbnRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0
aW9uUGFpbnRlci5oCmluZGV4IDAyOTRhNDYzYzdmNGI0OWJjOTg1MTFlZmQyY2ZhMDg1N2RkY2Mz
MTQuLmFjZGZmYmE3Nzc1MzI4NGVkZGUyNTRjZGYyNzlkYjZjM2Q1NDNlYTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmgKQEAgLTQ4LDcg
KzQ4LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0Rm9udChjb25zdCBGb250Q2FzY2FkZSYgZm9u
dCkgeyBtX2ZvbnQgPSAmZm9udDsgfQogICAgIHZvaWQgc2V0SXNIb3Jpem9udGFsKGJvb2wgaXNI
b3Jpem9udGFsKSB7IG1faXNIb3Jpem9udGFsID0gaXNIb3Jpem9udGFsOyB9CiAgICAgdm9pZCBz
ZXRXaWR0aChmbG9hdCB3aWR0aCkgeyBtX3dpZHRoID0gd2lkdGg7IH0KLSAgICB2b2lkIHNldEJh
c2VsaW5lKGZsb2F0IGJhc2VsaW5lKSB7IG1fYmFzZWxpbmUgPSBiYXNlbGluZTsgfQogICAgIHZv
aWQgc2V0VGV4dFNoYWRvdyhjb25zdCBTaGFkb3dEYXRhKiB0ZXh0U2hhZG93KSB7IG1fc2hhZG93
ID0gdGV4dFNoYWRvdzsgfQogICAgIHZvaWQgc2V0U2hhZG93Q29sb3JGaWx0ZXIoY29uc3QgRmls
dGVyT3BlcmF0aW9ucyogY29sb3JGaWx0ZXIpIHsgbV9zaGFkb3dDb2xvckZpbHRlciA9IGNvbG9y
RmlsdGVyOyB9CiAKQEAgLTcyLDcgKzcxLDYgQEAgcHJpdmF0ZToKICAgICBPcHRpb25TZXQ8VGV4
dERlY29yYXRpb24+IG1fZGVjb3JhdGlvbnM7CiAgICAgZmxvYXQgbV93YXZ5T2Zmc2V0OwogICAg
IGZsb2F0IG1fd2lkdGggeyAwIH07Ci0gICAgZmxvYXQgbV9iYXNlbGluZSB7IDAgfTsKICAgICBG
bG9hdFBvaW50IG1fYm94T3JpZ2luOwogICAgIGJvb2wgbV9pc1ByaW50aW5nOwogICAgIGJvb2wg
bV9pc0hvcml6b250YWwgeyB0cnVlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCBkYjg1ZDdkMDkzZjUyODRjYmViODAyZWU4NzAwODA4
ZTM5MmE3MWVkLi43ZTY4ZDYwMWU2ZWE3ZjM0MTZjMGY2MWRjMzc4NjBhMjE1NmI3NTdhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTUz
NywxMyArNTM3LDExIEBAIGlubGluZSBib29sIFJlbmRlclN0eWxlOjpjaGFuZ2VBZmZlY3RzVmlz
dWFsT3ZlcmZsb3coY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyKSBjCiAKICAgICBpZiAobV9pbmhl
cml0ZWRGbGFncy50ZXh0RGVjb3JhdGlvbnMgIT0gb3RoZXIubV9pbmhlcml0ZWRGbGFncy50ZXh0
RGVjb3JhdGlvbnMKICAgICAgICAgfHwgbV92aXN1YWxEYXRhLT50ZXh0RGVjb3JhdGlvbiAhPSBv
dGhlci5tX3Zpc3VhbERhdGEtPnRleHREZWNvcmF0aW9uCi0gICAgICAgIHx8IG1fcmFyZU5vbklu
aGVyaXRlZERhdGEtPnRleHREZWNvcmF0aW9uU3R5bGUgIT0gb3RoZXIubV9yYXJlTm9uSW5oZXJp
dGVkRGF0YS0+dGV4dERlY29yYXRpb25TdHlsZSkgewotICAgICAgICAvLyBVbmRlcmxpbmVzIGFy
ZSBhbHdheXMgZHJhd24gb3V0c2lkZSBvZiB0aGVpciB0ZXh0Ym94IGJvdW5kcyB3aGVuIHRleHQt
dW5kZXJsaW5lLXBvc2l0aW9uOiB1bmRlcjsKLSAgICAgICAgLy8gaXMgc3BlY2lmaWVkLiBXZSBj
YW4gdGFrZSBhbiBlYXJseSBvdXQgaGVyZS4KLSAgICAgICAgaWYgKHRleHRVbmRlcmxpbmVQb3Np
dGlvbigpID09IFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6VW5kZXIKLSAgICAgICAgICAgIHx8IG90
aGVyLnRleHRVbmRlcmxpbmVQb3NpdGlvbigpID09IFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6VW5k
ZXIpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIHZpc3VhbE92ZXJm
bG93Rm9yRGVjb3JhdGlvbnMoKnRoaXMsIG51bGxwdHIpICE9IHZpc3VhbE92ZXJmbG93Rm9yRGVj
b3JhdGlvbnMob3RoZXIsIG51bGxwdHIpOworICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWRE
YXRhLT50ZXh0RGVjb3JhdGlvblN0eWxlICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEt
PnRleHREZWNvcmF0aW9uU3R5bGUKKyAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4
dERlY29yYXRpb25UaGlja25lc3MgIT0gb3RoZXIubV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dERl
Y29yYXRpb25UaGlja25lc3MKKyAgICAgICAgfHwgbV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFVu
ZGVybGluZU9mZnNldCAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0VW5kZXJsaW5l
T2Zmc2V0CisgICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRVbmRlcmxpbmVQb3Np
dGlvbiAhPSBvdGhlci5tX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0VW5kZXJsaW5lUG9zaXRpb24p
IHsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgaWYgKGhhc091dGxpbmVJblZp
c3VhbE92ZXJmbG93KCkgIT0gb3RoZXIuaGFzT3V0bGluZUluVmlzdWFsT3ZlcmZsb3coKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggZGQyNDJl
NzZkM2U4MTA5Y2I4OTA3ODU3OWIyYzhhYjQxYmQ4N2U1MC4uMzJkZGYxYzIyODI2N2ZkNjI1YjNh
NjJjMmNhODY1NTBlZDI1NzlmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1JlbmRlclN0eWxlLmgKQEAgLTM3NCw3ICszNzQsOSBAQCBwdWJsaWM6CiAgICAgT3B0aW9uU2V0
PFRleHREZWNvcmF0aW9uPiB0ZXh0RGVjb3JhdGlvbigpIGNvbnN0IHsgcmV0dXJuIE9wdGlvblNl
dDxUZXh0RGVjb3JhdGlvbj46OmZyb21SYXcobV92aXN1YWxEYXRhLT50ZXh0RGVjb3JhdGlvbik7
IH0KICAgICBUZXh0RGVjb3JhdGlvblN0eWxlIHRleHREZWNvcmF0aW9uU3R5bGUoKSBjb25zdCB7
IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0RGVjb3JhdGlvblN0eWxlPihtX3JhcmVOb25Jbmhlcml0
ZWREYXRhLT50ZXh0RGVjb3JhdGlvblN0eWxlKTsgfQogICAgIE9wdGlvblNldDxUZXh0RGVjb3Jh
dGlvblNraXA+IHRleHREZWNvcmF0aW9uU2tpcCgpIGNvbnN0IHsgcmV0dXJuIE9wdGlvblNldDxU
ZXh0RGVjb3JhdGlvblNraXA+Ojpmcm9tUmF3KG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHREZWNv
cmF0aW9uU2tpcCk7IH0KLSAgICBPcHRpb25TZXQ8VGV4dFVuZGVybGluZVBvc2l0aW9uPiB0ZXh0
VW5kZXJsaW5lUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBPcHRpb25TZXQ8VGV4dFVuZGVybGlu
ZVBvc2l0aW9uPjo6ZnJvbVJhdyhtX3JhcmVJbmhlcml0ZWREYXRhLT50ZXh0VW5kZXJsaW5lUG9z
aXRpb24pOyB9CisgICAgVGV4dFVuZGVybGluZVBvc2l0aW9uIHRleHRVbmRlcmxpbmVQb3NpdGlv
bigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRVbmRlcmxpbmVQb3NpdGlvbj4obV9y
YXJlSW5oZXJpdGVkRGF0YS0+dGV4dFVuZGVybGluZVBvc2l0aW9uKTsgfQorICAgIFRleHRVbmRl
cmxpbmVPZmZzZXQgdGV4dFVuZGVybGluZU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUlu
aGVyaXRlZERhdGEtPnRleHRVbmRlcmxpbmVPZmZzZXQ7IH0KKyAgICBUZXh0RGVjb3JhdGlvblRo
aWNrbmVzcyB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZUlu
aGVyaXRlZERhdGEtPnRleHREZWNvcmF0aW9uVGhpY2tuZXNzOyB9CiAKICNpZiBFTkFCTEUoQ1NT
M19URVhUKQogICAgIFRleHRJbmRlbnRMaW5lIHRleHRJbmRlbnRMaW5lKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8VGV4dEluZGVudExpbmU+KG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRJ
bmRlbnRMaW5lKTsgfQpAQCAtOTIzLDcgKzkyNSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRl
eHREZWNvcmF0aW9uKE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbj4gdikgeyBTRVRfVkFSKG1fdmlz
dWFsRGF0YSwgdGV4dERlY29yYXRpb24sIHYudG9SYXcoKSk7IH0KICAgICB2b2lkIHNldFRleHRE
ZWNvcmF0aW9uU3R5bGUoVGV4dERlY29yYXRpb25TdHlsZSB2KSB7IFNFVF9WQVIobV9yYXJlTm9u
SW5oZXJpdGVkRGF0YSwgdGV4dERlY29yYXRpb25TdHlsZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHYpKTsgfQogICAgIHZvaWQgc2V0VGV4dERlY29yYXRpb25Ta2lwKE9wdGlvblNldDxUZXh0RGVj
b3JhdGlvblNraXA+IHNraXApIHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0RGVj
b3JhdGlvblNraXAsIHNraXAudG9SYXcoKSk7IH0KLSAgICB2b2lkIHNldFRleHRVbmRlcmxpbmVQ
b3NpdGlvbihPcHRpb25TZXQ8VGV4dFVuZGVybGluZVBvc2l0aW9uPiB2KSB7IFNFVF9WQVIobV9y
YXJlSW5oZXJpdGVkRGF0YSwgdGV4dFVuZGVybGluZVBvc2l0aW9uLCB2LnRvUmF3KCkpOyB9Cisg
ICAgdm9pZCBzZXRUZXh0VW5kZXJsaW5lUG9zaXRpb24oVGV4dFVuZGVybGluZVBvc2l0aW9uIHBv
c2l0aW9uKSB7IFNFVF9WQVIobV9yYXJlSW5oZXJpdGVkRGF0YSwgdGV4dFVuZGVybGluZVBvc2l0
aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocG9zaXRpb24pKTsgfQorICAgIHZvaWQgc2V0VGV4
dFVuZGVybGluZU9mZnNldChUZXh0VW5kZXJsaW5lT2Zmc2V0IHRleHRVbmRlcmxpbmVPZmZzZXQp
IHsgU0VUX1ZBUihtX3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0VW5kZXJsaW5lT2Zmc2V0LCB0ZXh0
VW5kZXJsaW5lT2Zmc2V0KTsgfQorICAgIHZvaWQgc2V0VGV4dERlY29yYXRpb25UaGlja25lc3Mo
VGV4dERlY29yYXRpb25UaGlja25lc3MgdGV4dERlY29yYXRpb25UaGlja25lc3MpIHsgU0VUX1ZB
UihtX3JhcmVJbmhlcml0ZWREYXRhLCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcywgdGV4dERlY29y
YXRpb25UaGlja25lc3MpOyB9CiAgICAgdm9pZCBzZXREaXJlY3Rpb24oVGV4dERpcmVjdGlvbiB2
KSB7IG1faW5oZXJpdGVkRmxhZ3MuZGlyZWN0aW9uID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHYp
OyB9CiAgICAgdm9pZCBzZXRIYXNFeHBsaWNpdGx5U2V0RGlyZWN0aW9uKGJvb2wgdikgeyBtX25v
bkluaGVyaXRlZEZsYWdzLmhhc0V4cGxpY2l0bHlTZXREaXJlY3Rpb24gPSB2OyB9CiAgICAgdm9p
ZCBzZXRMaW5lSGVpZ2h0KExlbmd0aCYmKTsKQEAgLTE0ODQsNyArMTQ4OCw5IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uPiBpbml0aWFsVGV4dERlY29yYXRp
b24oKSB7IHJldHVybiBPcHRpb25TZXQ8VGV4dERlY29yYXRpb24+IHsgfTsgfQogICAgIHN0YXRp
YyBUZXh0RGVjb3JhdGlvblN0eWxlIGluaXRpYWxUZXh0RGVjb3JhdGlvblN0eWxlKCkgeyByZXR1
cm4gVGV4dERlY29yYXRpb25TdHlsZTo6U29saWQ7IH0KICAgICBzdGF0aWMgT3B0aW9uU2V0PFRl
eHREZWNvcmF0aW9uU2tpcD4gaW5pdGlhbFRleHREZWNvcmF0aW9uU2tpcCgpIHsgcmV0dXJuIFRl
eHREZWNvcmF0aW9uU2tpcDo6QXV0bzsgfQotICAgIHN0YXRpYyBPcHRpb25TZXQ8VGV4dFVuZGVy
bGluZVBvc2l0aW9uPiBpbml0aWFsVGV4dFVuZGVybGluZVBvc2l0aW9uKCkgeyByZXR1cm4gVGV4
dFVuZGVybGluZVBvc2l0aW9uOjpBdXRvOyB9CisgICAgc3RhdGljIFRleHRVbmRlcmxpbmVQb3Np
dGlvbiBpbml0aWFsVGV4dFVuZGVybGluZVBvc2l0aW9uKCkgeyByZXR1cm4gVGV4dFVuZGVybGlu
ZVBvc2l0aW9uOjpBdXRvOyB9CisgICAgc3RhdGljIFRleHRVbmRlcmxpbmVPZmZzZXQgaW5pdGlh
bFRleHRVbmRlcmxpbmVPZmZzZXQoKSB7IHJldHVybiBUZXh0VW5kZXJsaW5lT2Zmc2V0OjpjcmVh
dGVXaXRoQXV0bygpOyB9CisgICAgc3RhdGljIFRleHREZWNvcmF0aW9uVGhpY2tuZXNzIGluaXRp
YWxUZXh0RGVjb3JhdGlvblRoaWNrbmVzcygpIHsgcmV0dXJuIFRleHREZWNvcmF0aW9uVGhpY2tu
ZXNzOjpjcmVhdGVXaXRoQXV0bygpOyB9CiAgICAgc3RhdGljIGZsb2F0IGluaXRpYWxab29tKCkg
eyByZXR1cm4gMS4wZjsgfQogICAgIHN0YXRpYyBUZXh0Wm9vbSBpbml0aWFsVGV4dFpvb20oKSB7
IHJldHVybiBUZXh0Wm9vbTo6Tm9ybWFsOyB9CiAgICAgc3RhdGljIGZsb2F0IGluaXRpYWxPdXRs
aW5lT2Zmc2V0KCkgeyByZXR1cm4gMDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAppbmRleCAzZWRlZTA5OWZlODU0ZmNm
MmUwMzU5ZmI2MmRkNTU3YTMxZDhkM2JjLi4xNzZlYjIxM2E3YTZlNzgyZTMxMDc5MGQ1MTBmMGNk
MWIzZDllMDI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGVDb25zdGFudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGVDb25zdGFudHMuaApAQCAtNzMxLDEyICs3MzEsMTEgQEAgZW51bSBjbGFzcyBU
ZXh0RGVjb3JhdGlvblNraXAgOiB1aW50OF90IHsKICAgICBBdXRvICAgICAgPSAxIDw8IDIKIH07
CiAKLS8vIEZJWE1FOiBUaGVyZSBpcyBubyByZWFzb24gZm9yIHRoZSB2YWx1ZXMgaW4gdGhlIGVu
dW0gdG8gYmUgcG93ZXJzIG9mIHR3by4KIGVudW0gY2xhc3MgVGV4dFVuZGVybGluZVBvc2l0aW9u
IDogdWludDhfdCB7CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBzdXBwb3J0IGZvciAndW5kZXIg
bGVmdCcgYW5kICd1bmRlciByaWdodCcgdmFsdWVzLgotICAgIEF1dG8gICAgICAgPSAxIDw8IDAs
Ci0gICAgQWxwaGFiZXRpYyA9IDEgPDwgMSwKLSAgICBVbmRlciAgICAgID0gMSA8PCAyCisgICAg
QXV0bywKKyAgICBVbmRlciwKKyAgICBGcm9tRm9udAogfTsKIAogZW51bSBjbGFzcyBUZXh0Wm9v
bSA6IHVpbnQ4X3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxl
L1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuY3BwCmluZGV4IDJhYWRhMWMyNzBhMzlmOGZhYWQx
ODU1MjAwZmJjMTYwNDZiODhlMDYuLjVmYjc5YjNmOTQ3ZTQ0NmI3MGVmMzM4MjdjYzcyOGNiYzgw
ZWIwNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJh
cmVJbmhlcml0ZWREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5jcHAKQEAgLTQ1LDYgKzQ1LDggQEAgc3RydWN0IEdyZWF0
ZXJUaGFuT3JTYW1lU2l6ZUFzU3R5bGVSYXJlSW5oZXJpdGVkRGF0YSA6IHB1YmxpYyBSZWZDb3Vu
dGVkPEdyZWF0ZXIKICAgICB2b2lkKiByZWZQdHJzWzNdOwogICAgIExlbmd0aCBsZW5ndGhzWzJd
OwogICAgIGZsb2F0IHNlY29uZEZsb2F0OworICAgIFRleHRVbmRlcmxpbmVPZmZzZXQgb2Zmc2V0
OworICAgIFRleHREZWNvcmF0aW9uVGhpY2tuZXNzIHRoaWNrbmVzczsKICAgICB1bnNpZ25lZCBi
aXRmaWVsZHNbNF07CiAgICAgc2hvcnQgcGFnZWRNZWRpYVNob3J0c1syXTsKICAgICB1bnNpZ25l
ZCB1bnNpZ25lZHNbMV07CkBAIC03NSw2ICs3Nyw4IEBAIFN0eWxlUmFyZUluaGVyaXRlZERhdGE6
OlN0eWxlUmFyZUluaGVyaXRlZERhdGEoKQogICAgICwgdGV4dFN0cm9rZVdpZHRoKFJlbmRlclN0
eWxlOjppbml0aWFsVGV4dFN0cm9rZVdpZHRoKCkpCiAgICAgLCBpbmRlbnQoUmVuZGVyU3R5bGU6
OmluaXRpYWxUZXh0SW5kZW50KCkpCiAgICAgLCBlZmZlY3RpdmVab29tKFJlbmRlclN0eWxlOjpp
bml0aWFsWm9vbSgpKQorICAgICwgdGV4dFVuZGVybGluZU9mZnNldChSZW5kZXJTdHlsZTo6aW5p
dGlhbFRleHRVbmRlcmxpbmVPZmZzZXQoKSkKKyAgICAsIHRleHREZWNvcmF0aW9uVGhpY2tuZXNz
KFJlbmRlclN0eWxlOjppbml0aWFsVGV4dERlY29yYXRpb25UaGlja25lc3MoKSkKICAgICAsIGN1
c3RvbVByb3BlcnRpZXMoU3R5bGVDdXN0b21Qcm9wZXJ0eURhdGE6OmNyZWF0ZSgpKQogICAgICwg
d2lkb3dzKFJlbmRlclN0eWxlOjppbml0aWFsV2lkb3dzKCkpCiAgICAgLCBvcnBoYW5zKFJlbmRl
clN0eWxlOjppbml0aWFsT3JwaGFucygpKQpAQCAtMTE2LDcgKzEyMCw3IEBAIFN0eWxlUmFyZUlu
aGVyaXRlZERhdGE6OlN0eWxlUmFyZUluaGVyaXRlZERhdGEoKQogICAgICwgdGV4dEp1c3RpZnko
UmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0SnVzdGlmeSgpKQogI2VuZGlmCiAgICAgLCB0ZXh0RGVj
b3JhdGlvblNraXAoUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0RGVjb3JhdGlvblNraXAoKS50b1Jh
dygpKQotICAgICwgdGV4dFVuZGVybGluZVBvc2l0aW9uKFJlbmRlclN0eWxlOjppbml0aWFsVGV4
dFVuZGVybGluZVBvc2l0aW9uKCkudG9SYXcoKSkKKyAgICAsIHRleHRVbmRlcmxpbmVQb3NpdGlv
bihzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVuZGVyU3R5bGU6OmluaXRpYWxUZXh0VW5kZXJsaW5l
UG9zaXRpb24oKSkpCiAgICAgLCBydWJ5UG9zaXRpb24oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJl
bmRlclN0eWxlOjppbml0aWFsUnVieVBvc2l0aW9uKCkpKQogICAgICwgdGV4dFpvb20oc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFJlbmRlclN0eWxlOjppbml0aWFsVGV4dFpvb20oKSkpCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTE2OCw2ICsxNzIsOCBAQCBpbmxpbmUgU3R5bGVSYXJlSW5o
ZXJpdGVkRGF0YTo6U3R5bGVSYXJlSW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZVJhcmVJbmhlcml0
ZWREYQogICAgICwgY3Vyc29yRGF0YShvLmN1cnNvckRhdGEpCiAgICAgLCBpbmRlbnQoby5pbmRl
bnQpCiAgICAgLCBlZmZlY3RpdmVab29tKG8uZWZmZWN0aXZlWm9vbSkKKyAgICAsIHRleHRVbmRl
cmxpbmVPZmZzZXQoby50ZXh0VW5kZXJsaW5lT2Zmc2V0KQorICAgICwgdGV4dERlY29yYXRpb25U
aGlja25lc3Moby50ZXh0RGVjb3JhdGlvblRoaWNrbmVzcykKICAgICAsIGN1c3RvbVByb3BlcnRp
ZXMoby5jdXN0b21Qcm9wZXJ0aWVzKQogICAgICwgd2lkb3dzKG8ud2lkb3dzKQogICAgICwgb3Jw
aGFucyhvLm9ycGhhbnMpCkBAIC0yNzMsNiArMjc5LDggQEAgYm9vbCBTdHlsZVJhcmVJbmhlcml0
ZWREYXRhOjpvcGVyYXRvcj09KGNvbnN0IFN0eWxlUmFyZUluaGVyaXRlZERhdGEmIG8pIGNvbnN0
CiAgICAgICAgICYmIGFyZVBvaW50aW5nVG9FcXVhbERhdGEoY3Vyc29yRGF0YSwgby5jdXJzb3JE
YXRhKQogICAgICAgICAmJiBpbmRlbnQgPT0gby5pbmRlbnQKICAgICAgICAgJiYgZWZmZWN0aXZl
Wm9vbSA9PSBvLmVmZmVjdGl2ZVpvb20KKyAgICAgICAgJiYgdGV4dFVuZGVybGluZU9mZnNldCA9
PSBvLnRleHRVbmRlcmxpbmVPZmZzZXQKKyAgICAgICAgJiYgdGV4dERlY29yYXRpb25UaGlja25l
c3MgPT0gby50ZXh0RGVjb3JhdGlvblRoaWNrbmVzcwogICAgICAgICAmJiB3aWRvd3MgPT0gby53
aWRvd3MKICAgICAgICAgJiYgb3JwaGFucyA9PSBvLm9ycGhhbnMKICAgICAgICAgJiYgaGFzQXV0
b1dpZG93cyA9PSBvLmhhc0F1dG9XaWRvd3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlSW5oZXJpdGVkRGF0YS5oCmluZGV4IGI4M2E4YzBhYzgx
YzgwNmRkMTZiN2RmZTJiYWQ4MGI4MzNkOWYyYzQuLjFlMTA1YmIxZWY0MzJiOTA5MTg3YzU4YmM3
ZTVlMWYyZWI3NzA5MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZVJhcmVJbmhlcml0ZWREYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1N0eWxlUmFyZUluaGVyaXRlZERhdGEuaApAQCAtMjgsNiArMjgsOCBAQAogI2luY2x1
ZGUgIkRhdGFSZWYuaCIKICNpbmNsdWRlICJMZW5ndGguaCIKICNpbmNsdWRlICJTdHlsZUN1c3Rv
bVByb3BlcnR5RGF0YS5oIgorI2luY2x1ZGUgIlRleHRVbmRlcmxpbmVPZmZzZXQuaCIKKyNpbmNs
dWRlICJUZXh0RGVjb3JhdGlvblRoaWNrbmVzcy5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CiAKQEAgLTc5LDYgKzgxLDkg
QEAgcHVibGljOgogICAgIFJlZlB0cjxDdXJzb3JMaXN0PiBjdXJzb3JEYXRhOwogICAgIExlbmd0
aCBpbmRlbnQ7CiAgICAgZmxvYXQgZWZmZWN0aXZlWm9vbTsKKworICAgIFRleHRVbmRlcmxpbmVP
ZmZzZXQgdGV4dFVuZGVybGluZU9mZnNldDsKKyAgICBUZXh0RGVjb3JhdGlvblRoaWNrbmVzcyB0
ZXh0RGVjb3JhdGlvblRoaWNrbmVzczsKICAgICAKICAgICBMZW5ndGggd29yZFNwYWNpbmc7CiAK
QEAgLTEyOCw3ICsxMzMsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgdGV4dEp1c3RpZnkgOiAy
OyAvLyBUZXh0SnVzdGlmeQogI2VuZGlmCiAgICAgdW5zaWduZWQgdGV4dERlY29yYXRpb25Ta2lw
IDogNTsgLy8gVGV4dERlY29yYXRpb25Ta2lwCi0gICAgdW5zaWduZWQgdGV4dFVuZGVybGluZVBv
c2l0aW9uIDogMzsgLy8gVGV4dFVuZGVybGluZVBvc2l0aW9uCisgICAgdW5zaWduZWQgdGV4dFVu
ZGVybGluZVBvc2l0aW9uIDogMjsgLy8gVGV4dFVuZGVybGluZVBvc2l0aW9uCiAgICAgdW5zaWdu
ZWQgcnVieVBvc2l0aW9uIDogMjsgLy8gUnVieVBvc2l0aW9uCiAgICAgdW5zaWduZWQgdGV4dFpv
b206IDE7IC8vIFRleHRab29tCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1RleHREZWNvcmF0aW9uVGhpY2tuZXNzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWUwZDc4YTBh
ZjExY2Y1ZmQxYzUxMWNkZTI4MWQwM2UxYWVlNGNlNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcy5oCkBAIC0w
LDAgKzEsMTMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJGb250
TWV0cmljcy5oIgorI2luY2x1ZGUgIkxlbmd0aC5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRT
dHJlYW0uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBUZXh0RGVjb3JhdGlvblRo
aWNrbmVzcyB7CitwdWJsaWM6CisgICAgc3RhdGljIFRleHREZWNvcmF0aW9uVGhpY2tuZXNzIGNy
ZWF0ZVdpdGhBdXRvKCkKKyAgICB7CisgICAgICAgIHJldHVybiBUZXh0RGVjb3JhdGlvblRoaWNr
bmVzcyhUeXBlOjpBdXRvKTsKKyAgICB9CisgICAgc3RhdGljIFRleHREZWNvcmF0aW9uVGhpY2tu
ZXNzIGNyZWF0ZUZyb21Gb250KCkKKyAgICB7CisgICAgICAgIHJldHVybiBUZXh0RGVjb3JhdGlv
blRoaWNrbmVzcyhUeXBlOjpGcm9tRm9udCk7CisgICAgfQorICAgIHN0YXRpYyBUZXh0RGVjb3Jh
dGlvblRoaWNrbmVzcyBjcmVhdGVXaXRoTGVuZ3RoKGZsb2F0IGxlbmd0aCkKKyAgICB7CisgICAg
ICAgIFRleHREZWNvcmF0aW9uVGhpY2tuZXNzIHJlc3VsdChUeXBlOjpMZW5ndGgpOworICAgICAg
ICByZXN1bHQuc2V0TGVuZ3RoVmFsdWUobGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICB9CisKKyAgICBib29sIGlzQXV0bygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4g
bV90eXBlID09IFR5cGU6OkF1dG87CisgICAgfQorCisgICAgYm9vbCBpc0Zyb21Gb250KCkgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3R5cGUgPT0gVHlwZTo6RnJvbUZvbnQ7CisgICAg
fQorCisgICAgYm9vbCBpc0xlbmd0aCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV90
eXBlID09IFR5cGU6Okxlbmd0aDsKKyAgICB9CisKKyAgICB2b2lkIHNldExlbmd0aFZhbHVlKGZs
b2F0IGxlbmd0aCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpc0xlbmd0aCgpKTsKKyAgICAgICAg
bV9sZW5ndGggPSBsZW5ndGg7CisgICAgfQorCisgICAgZmxvYXQgbGVuZ3RoVmFsdWUoKSBjb25z
dAorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzTGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gbV9s
ZW5ndGg7CisgICAgfQorCisgICAgZmxvYXQgcmVzb2x2ZShmbG9hdCBmb250U2l6ZSwgY29uc3Qg
Rm9udE1ldHJpY3MmIG1ldHJpY3MpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoaXNBdXRvKCkp
CisgICAgICAgICAgICByZXR1cm4gZm9udFNpemUgLyAxNjsKKyAgICAgICAgaWYgKGlzRnJvbUZv
bnQoKSkKKyAgICAgICAgICAgIHJldHVybiBtZXRyaWNzLnVuZGVybGluZVRoaWNrbmVzcygpOwor
ICAgICAgICBBU1NFUlQoaXNMZW5ndGgoKSk7CisgICAgICAgIHJldHVybiBtX2xlbmd0aDsKKyAg
ICB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVGV4dERlY29yYXRpb25UaGlja25lc3Mm
IG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICAgICAg
Y2FzZSBUeXBlOjpBdXRvOgorICAgICAgICBjYXNlIFR5cGU6OkZyb21Gb250OgorICAgICAgICAg
ICAgcmV0dXJuIG1fdHlwZSA9PSBvdGhlci5tX3R5cGU7CisgICAgICAgIGNhc2UgVHlwZTo6TGVu
Z3RoOgorICAgICAgICAgICAgcmV0dXJuIG1fdHlwZSA9PSBvdGhlci5tX3R5cGUgJiYgbV9sZW5n
dGggPT0gb3RoZXIubV9sZW5ndGg7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3Ih
PShjb25zdCBUZXh0RGVjb3JhdGlvblRoaWNrbmVzcyYgb3RoZXIpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgfQorCitwcml2YXRlOgorICAgIGVu
dW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgeworICAgICAgICBBdXRvLAorICAgICAgICBGcm9tRm9u
dCwKKyAgICAgICAgTGVuZ3RoCisgICAgfTsKKworICAgIFRleHREZWNvcmF0aW9uVGhpY2tuZXNz
KFR5cGUgdHlwZSkKKyAgICAgICAgOiBtX3R5cGUgeyB0eXBlIH0KKyAgICB7CisgICAgfQorCisg
ICAgVHlwZSBtX3R5cGU7CisgICAgZmxvYXQgbV9sZW5ndGg7Cit9OworCitpbmxpbmUgVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgVGV4dERlY29yYXRpb25UaGlj
a25lc3MmIHRoaWNrbmVzcykKK3sKKyAgICBpZiAodGhpY2tuZXNzLmlzQXV0bygpKQorICAgICAg
ICB0cyA8PCAiYXV0byI7CisgICAgZWxzZSBpZiAodGhpY2tuZXNzLmlzRnJvbUZvbnQoKSkKKyAg
ICAgICAgdHMgPDwgImZyb20tZm9udCI7CisgICAgZWxzZQorICAgICAgICB0cyA8PCBUZXh0U3Ry
ZWFtOjpGb3JtYXROdW1iZXJSZXNwZWN0aW5nSW50ZWdlcnModGhpY2tuZXNzLmxlbmd0aFZhbHVl
KCkpOworICAgIHJldHVybiB0czsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1RleHRVbmRlcmxpbmVPZmZzZXQu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9UZXh0VW5kZXJsaW5lT2Zmc2V0LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTYxZTdiMmQ5MzEyZDJhMTk5MGQ4ZWFiNTY2OTAzMGRjOTMyNWEzYgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9UZXh0VW5kZXJs
aW5lT2Zmc2V0LmgKQEAgLTAsMCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIkxlbmd0aC5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRTdHJlYW0uaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBUZXh0VW5kZXJsaW5lT2Zmc2V0IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgVGV4dFVuZGVybGluZU9mZnNldCBjcmVhdGVXaXRoQXV0bygpCisg
ICAgeworICAgICAgICByZXR1cm4gVGV4dFVuZGVybGluZU9mZnNldChUeXBlOjpBdXRvKTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgVGV4dFVuZGVybGluZU9mZnNldCBjcmVhdGVXaXRoTGVuZ3RoKGZs
b2F0IGxlbmd0aCkKKyAgICB7CisgICAgICAgIFRleHRVbmRlcmxpbmVPZmZzZXQgcmVzdWx0KFR5
cGU6Okxlbmd0aCk7CisgICAgICAgIHJlc3VsdC5zZXRMZW5ndGhWYWx1ZShsZW5ndGgpOworICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGJvb2wgaXNBdXRvKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiAhaXNMZW5ndGgoKTsKKyAgICB9CisKKyAgICBib29sIGlzTGVu
Z3RoKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxib29sPihtX2xl
bmd0aCk7CisgICAgfQorCisgICAgdm9pZCBzZXRMZW5ndGhWYWx1ZShmbG9hdCBsZW5ndGgpCisg
ICAgeworICAgICAgICBBU1NFUlQoaXNMZW5ndGgoKSk7CisgICAgICAgIG1fbGVuZ3RoID0gbGVu
Z3RoOworICAgIH0KKworICAgIGZsb2F0IGxlbmd0aFZhbHVlKCkgY29uc3QKKyAgICB7CisgICAg
ICAgIEFTU0VSVChpc0xlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJuICptX2xlbmd0aDsKKyAgICB9
CisKKyAgICBmbG9hdCBsZW5ndGhPcihmbG9hdCBkZWZhdWx0VmFsdWUpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gbV9sZW5ndGgudmFsdWVfb3IoZGVmYXVsdFZhbHVlKTsKKyAgICB9CisK
KyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgVGV4dFVuZGVybGluZU9mZnNldCYgb3RoZXIpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9sZW5ndGggPT0gb3RoZXIubV9sZW5ndGg7Cisg
ICAgfQorCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFRleHRVbmRlcmxpbmVPZmZzZXQmIG90
aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAg
IH0KKworcHJpdmF0ZToKKyAgICBlbnVtIGNsYXNzIFR5cGUgeworICAgICAgICBBdXRvLAorICAg
ICAgICBMZW5ndGgKKyAgICB9OworCisgICAgVGV4dFVuZGVybGluZU9mZnNldChUeXBlIHR5cGUp
CisgICAgeworICAgICAgICBpZiAodHlwZSA9PSBUeXBlOjpMZW5ndGgpCisgICAgICAgICAgICBt
X2xlbmd0aCA9IDA7CisgICAgfQorCisgICAgc3RkOjpvcHRpb25hbDxmbG9hdD4gbV9sZW5ndGg7
Cit9OworCitpbmxpbmUgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29u
c3QgVGV4dFVuZGVybGluZU9mZnNldCYgb2Zmc2V0KQoreworICAgIGlmIChvZmZzZXQuaXNBdXRv
KCkpCisgICAgICAgIHRzIDw8ICJhdXRvIjsKKyAgICBlbHNlCisgICAgICAgIHRzIDw8IFRleHRT
dHJlYW06OkZvcm1hdE51bWJlclJlc3BlY3RpbmdJbnRlZ2VycyhvZmZzZXQubGVuZ3RoVmFsdWUo
KSk7CisgICAgcmV0dXJuIHRzOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcAppbmRleCAxMzZmMzFhOGViYjkw
YmNjMjhkYTA3Njk4NjczMGMxN2M5ODIzMTE4Li5jN2Y0NzVhODQ3NjVhMzJjZGFmZjNlNmJjYTM0
NzFkMmZjMmZiOGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0
Qm94U3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHls
ZS5jcHAKQEAgLTMxLDEyICszMSwxMCBAQAogI2luY2x1ZGUgIlJvb3RJbmxpbmVCb3guaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAotaW50IGNvbXB1dGVVbmRlcmxpbmVPZmZzZXQoT3B0
aW9uU2V0PFRleHRVbmRlcmxpbmVQb3NpdGlvbj4gdW5kZXJsaW5lUG9zaXRpb24sIGNvbnN0IEZv
bnRNZXRyaWNzJiBmb250TWV0cmljcywgY29uc3QgSW5saW5lVGV4dEJveCogaW5saW5lVGV4dEJv
eCwgaW50IHRleHREZWNvcmF0aW9uVGhpY2tuZXNzKQorCisvLyBJbiBjb250cmFzdCB0byBjb21w
dXRlTGluZUJvdW5kc0FuZEFudGlhbGlhc2luZ01vZGVGb3JUZXh0KCksIHRoaXMgY2FsY3VsYXRl
cyB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgYmFzZWxpbmUgYW5kIHRoZSBuZWFyZXN0IGVkZ2Ug
b2YgdGhlIHVuZGVybGluZSwgYnV0IGRvZXNuJ3QgY29uc2lkZXIgdGhlIGNvbnRleHQncyBDVE0u
CitmbG9hdCBjb21wdXRlVW5kZXJsaW5lR2FwKFRleHRVbmRlcmxpbmVQb3NpdGlvbiB1bmRlcmxp
bmVQb3NpdGlvbiwgVGV4dFVuZGVybGluZU9mZnNldCB1bmRlcmxpbmVPZmZzZXQsIGZsb2F0IHRl
eHREZWNvcmF0aW9uVGhpY2tuZXNzLCBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MsIGNv
bnN0IElubGluZVRleHRCb3gqIGlubGluZVRleHRCb3gpCiB7Ci0gICAgLy8gVGhpcyByZXByZXNl
bnRzIHRoZSBnYXAgYmV0d2VlbiB0aGUgYmFzZWxpbmUgYW5kIHRoZSBjbG9zZXN0IGVkZ2Ugb2Yg
dGhlIHVuZGVybGluZS4KLSAgICBpbnQgZ2FwID0gc3RkOjptYXg8aW50PigxLCBjZWlsZih0ZXh0
RGVjb3JhdGlvblRoaWNrbmVzcyAvIDIuMCkpOwotICAgIAogICAgIC8vIEZJWE1FOiBUaGUgY29k
ZSBmb3IgdmlzdWFsIG92ZXJmbG93IGRldGVjdGlvbiBwYXNzZXMgaW4gYSBudWxsIGlubGluZSB0
ZXh0IGJveC4gVGhpcyBtZWFucyBpdCBpcyBub3cKICAgICAvLyBicm9rZW4gZm9yIHRoZSBjYXNl
IHdoZXJlIGF1dG8gbmVlZHMgdG8gYmVoYXZlIGxpa2UgInVuZGVyIi4KICAgICAKQEAgLTQ2LDIx
ICs0NCwyNyBAQCBpbnQgY29tcHV0ZVVuZGVybGluZU9mZnNldChPcHRpb25TZXQ8VGV4dFVuZGVy
bGluZVBvc2l0aW9uPiB1bmRlcmxpbmVQb3NpdGlvbiwgYwogICAgIC8vIGV2ZW4gaWYgaXQgaXMg
aG9yaXpvbnRhbCwgYnV0IGRldGVjdGluZyB0aGlzIGhhcyBwZXJmb3JtYW5jZSBpbXBsaWNhdGlv
bnMuIEZvciBub3cgd2Ugb25seSB3b3JrIHdpdGgKICAgICAvLyB2ZXJ0aWNhbCB0ZXh0LCBzaW5j
ZSB3ZSBhbHJlYWR5IGRldGVybWluZWQgdGhlIGJhc2VsaW5lIHR5cGUgdG8gYmUgaWRlb2dyYXBo
aWMgaW4gdGhhdAogICAgIC8vIGNhc2UuCi0gICAgCi0gICAgYXV0byByZXNvbHZlZFVuZGVybGlu
ZVBvc2l0aW9uID0gdW5kZXJsaW5lUG9zaXRpb247Ci0gICAgaWYgKHJlc29sdmVkVW5kZXJsaW5l
UG9zaXRpb24gPT0gVGV4dFVuZGVybGluZVBvc2l0aW9uOjpBdXRvKSB7Ci0gICAgICAgIGlmIChp
bmxpbmVUZXh0Qm94KQotICAgICAgICAgICAgcmVzb2x2ZWRVbmRlcmxpbmVQb3NpdGlvbiA9IGlu
bGluZVRleHRCb3gtPnJvb3QoKS5iYXNlbGluZVR5cGUoKSA9PSBJZGVvZ3JhcGhpY0Jhc2VsaW5l
ID8gVGV4dFVuZGVybGluZVBvc2l0aW9uOjpVbmRlciA6IFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6
QWxwaGFiZXRpYzsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzb2x2ZWRVbmRlcmxpbmVQ
b3NpdGlvbiA9IFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6QWxwaGFiZXRpYzsKLSAgICB9Ci0gICAg
Ci0gICAgc3dpdGNoIChzdGF0aWNfY2FzdDxUZXh0VW5kZXJsaW5lUG9zaXRpb24+KHJlc29sdmVk
VW5kZXJsaW5lUG9zaXRpb24udG9SYXcoKSkpIHsKLSAgICBjYXNlIFRleHRVbmRlcmxpbmVQb3Np
dGlvbjo6QWxwaGFiZXRpYzoKLSAgICAgICAgcmV0dXJuIGZvbnRNZXRyaWNzLmFzY2VudCgpICsg
Z2FwOworCisgICAgc3dpdGNoICh1bmRlcmxpbmVQb3NpdGlvbikgeworICAgIGNhc2UgVGV4dFVu
ZGVybGluZVBvc2l0aW9uOjpBdXRvOgorICAgICAgICBpZiAodW5kZXJsaW5lT2Zmc2V0LmlzQXV0
bygpKSB7CisgICAgICAgICAgICBhdXRvIHJlc29sdmVQb3NpdGlvbiA9IFsmXSgpIC0+IFRleHRV
bmRlcmxpbmVQb3NpdGlvbiB7CisgICAgICAgICAgICAgICAgQVNTRVJUKHVuZGVybGluZVBvc2l0
aW9uID09IFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6QXV0byk7CisgICAgICAgICAgICAgICAgaWYg
KGlubGluZVRleHRCb3ggJiYgaW5saW5lVGV4dEJveC0+cm9vdCgpLmJhc2VsaW5lVHlwZSgpID09
IElkZW9ncmFwaGljQmFzZWxpbmUpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBUZXh0VW5k
ZXJsaW5lUG9zaXRpb246OlVuZGVyOworICAgICAgICAgICAgICAgIHJldHVybiBUZXh0VW5kZXJs
aW5lUG9zaXRpb246OkF1dG87CisgICAgICAgICAgICB9OworICAgICAgICAgICAgYXV0byByZXNv
bHZlZFBvc2l0aW9uID0gcmVzb2x2ZVBvc2l0aW9uKCk7CisgICAgICAgICAgICBpZiAocmVzb2x2
ZWRQb3NpdGlvbiA9PSBUZXh0VW5kZXJsaW5lUG9zaXRpb246OlVuZGVyKQorICAgICAgICAgICAg
ICAgIHJldHVybiBjb21wdXRlVW5kZXJsaW5lR2FwKHJlc29sdmVkUG9zaXRpb24sIFRleHRVbmRl
cmxpbmVPZmZzZXQ6OmNyZWF0ZVdpdGhBdXRvKCksIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzLCBm
b250TWV0cmljcywgaW5saW5lVGV4dEJveCk7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpmbG9v
cihzdGQ6Om1heCgxLjBmLCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcyAvIDIpKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIEFTU0VSVCh1bmRlcmxpbmVPZmZzZXQuaXNMZW5ndGgoKSk7
CisgICAgICAgICAgICByZXR1cm4gdW5kZXJsaW5lT2Zmc2V0Lmxlbmd0aFZhbHVlKCk7CisgICAg
ICAgIH0KICAgICBjYXNlIFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6VW5kZXI6IHsKICAgICAgICAg
QVNTRVJUKGlubGluZVRleHRCb3gpOwotICAgICAgICAvLyBQb3NpdGlvbiB1bmRlcmxpbmUgcmVs
YXRpdmUgdG8gdGhlIGJvdHRvbSBlZGdlIG9mIHRoZSBsb3dlc3QgZWxlbWVudCdzIGNvbnRlbnQg
Ym94LgorICAgICAgICAvKi8vIFBvc2l0aW9uIHVuZGVybGluZSByZWxhdGl2ZSB0byB0aGUgYm90
dG9tIGVkZ2Ugb2YgdGhlIGxvd2VzdCBlbGVtZW50J3MgY29udGVudCBib3guCiAgICAgICAgIGNv
bnN0IFJvb3RJbmxpbmVCb3gmIHJvb3RCb3ggPSBpbmxpbmVUZXh0Qm94LT5yb290KCk7CiAgICAg
ICAgIGNvbnN0IFJlbmRlckVsZW1lbnQqIGRlY29yYXRpb25SZW5kZXJlciA9IGlubGluZVRleHRC
b3gtPnBhcmVudCgpLT5yZW5kZXJlcigpLmVuY2xvc2luZ1JlbmRlcmVyV2l0aFRleHREZWNvcmF0
aW9uKFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUsIGlubGluZVRleHRCb3gtPmlzRmlyc3RMaW5l
KCkpOwogICAgICAgICAKQEAgLTczLDI4ICs3NywyOSBAQCBpbnQgY29tcHV0ZVVuZGVybGluZU9m
ZnNldChPcHRpb25TZXQ8VGV4dFVuZGVybGluZVBvc2l0aW9uPiB1bmRlcmxpbmVQb3NpdGlvbiwg
YwogICAgICAgICAgICAgb2Zmc2V0ID0gaW5saW5lVGV4dEJveC0+bG9naWNhbEJvdHRvbSgpOwog
ICAgICAgICAgICAgcm9vdEJveC5tYXhMb2dpY2FsQm90dG9tRm9yVGV4dERlY29yYXRpb25MaW5l
KG9mZnNldCwgZGVjb3JhdGlvblJlbmRlcmVyLCBUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lKTsK
ICAgICAgICAgICAgIG9mZnNldCAtPSBpbmxpbmVUZXh0Qm94LT5sb2dpY2FsQm90dG9tKCk7Ci0g
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGlubGluZVRleHRCb3gtPmxvZ2ljYWxIZWlnaHQoKSAr
IGdhcCArIHN0ZDo6bWF4PGZsb2F0PihvZmZzZXQsIDApOworICAgICAgICB9Ki8KKyAgICAgICAg
YXV0byByZXN1bHQgPSBmb250TWV0cmljcy5kZXNjZW50KCk7CisgICAgICAgIHJlc3VsdCArPSB1
bmRlcmxpbmVPZmZzZXQubGVuZ3RoT3IoMCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
fQorICAgIGNhc2UgVGV4dFVuZGVybGluZVBvc2l0aW9uOjpGcm9tRm9udDogeworICAgICAgICBh
dXRvIHJlc3VsdCA9IGZvbnRNZXRyaWNzLnVuZGVybGluZVBvc2l0aW9uKCk7CisgICAgICAgIHJl
c3VsdCArPSB1bmRlcmxpbmVPZmZzZXQubGVuZ3RoT3IoMCk7CisgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQotICAgIGNhc2UgVGV4dFVuZGVybGluZVBvc2l0aW9uOjpBdXRvOgotICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICByZXR1cm4gZm9udE1ldHJpY3MuYXNjZW50KCkgKyBnYXA7CisgICAgcmV0dXJuIDA7
CiB9CiAgICAgCi12b2lkIGdldFdhdnlTdHJva2VQYXJhbWV0ZXJzKGZsb2F0IGZvbnRTaXplLCBm
bG9hdCYgY29udHJvbFBvaW50RGlzdGFuY2UsIGZsb2F0JiBzdGVwKQorV2F2eVN0cm9rZVBhcmFt
ZXRlcnMgZ2V0V2F2eVN0cm9rZVBhcmFtZXRlcnMoZmxvYXQgZm9udFNpemUpCiB7Ci0gICAgLy8g
RGlzdGFuY2UgYmV0d2VlbiBkZWNvcmF0aW9uJ3MgYXhpcyBhbmQgQmV6aWVyIGN1cnZlJ3MgY29u
dHJvbCBwb2ludHMuCi0gICAgLy8gVGhlIGhlaWdodCBvZiB0aGUgY3VydmUgaXMgYmFzZWQgb24g
dGhpcyBkaXN0YW5jZS4gSW5jcmVhc2VzIHRoZSBjdXJ2ZSdzIGhlaWdodAotICAgIC8vIGFzIGZv
bnRTaXplIGluY3JlYXNlcyB0byBtYWtlIHRoZSBjdXJ2ZSBsb29rIGJldHRlci4KLSAgICBjb250
cm9sUG9pbnREaXN0YW5jZSA9IDAuMDkzNzUgKiBmb250U2l6ZTsKLQotICAgIC8vIEluY3JlbWVu
dCB1c2VkIHRvIGZvcm0gdGhlIGRpYW1vbmQgc2hhcGUgYmV0d2VlbiBzdGFydCBwb2ludCAocDEp
LCBjb250cm9sCi0gICAgLy8gcG9pbnRzIGFuZCBlbmQgcG9pbnQgKHAyKSBhbG9uZyB0aGUgYXhp
cyBvZiB0aGUgZGVjb3JhdGlvbi4gVGhlIGN1cnZlIGdldHMKLSAgICAvLyB3aWRlciBhcyBmb250
IHNpemUgaW5jcmVhc2VzLgotICAgIHN0ZXAgPSBmb250U2l6ZSAvIDQuNTsKKyAgICBXYXZ5U3Ry
b2tlUGFyYW1ldGVycyByZXN1bHQ7CisgICAgLy8gTW9yZSBpbmZvcm1hdGlvbiBpcyBpbiB0aGUg
V2F2eVN0cm9rZVBhcmFtZXRlcnMgZGVmaW5pdGlvbi4KKyAgICByZXN1bHQuY29udHJvbFBvaW50
RGlzdGFuY2UgPSBmb250U2l6ZSAqIDEuNSAvIDE2OworICAgIHJlc3VsdC5zdGVwID0gZm9udFNp
emUgLyA0LjU7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIGV4
dGVuZEludFRvRmxvYXQoaW50JiBleHRlbmRNZSwgZmxvYXQgZXh0ZW5kVG8pCkBAIC0xMTAsOSAr
MTE1LDggQEAgR2x5cGhPdmVyZmxvdyB2aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKGNvbnN0
IFJlbmRlclN0eWxlJiBsaW5lU3R5bGUsIGNvbnN0IEkKICAgICBpZiAoZGVjb3JhdGlvbi5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiBHbHlwaE92ZXJmbG93KCk7CiAKLSAgICBmbG9hdCBzdHJv
a2VUaGlja25lc3MgPSB0ZXh0RGVjb3JhdGlvblN0cm9rZVRoaWNrbmVzcyhsaW5lU3R5bGUuY29t
cHV0ZWRGb250UGl4ZWxTaXplKCkpOwotICAgIGZsb2F0IGNvbnRyb2xQb2ludERpc3RhbmNlID0g
MDsKLSAgICBmbG9hdCBzdGVwOworICAgIGZsb2F0IHN0cm9rZVRoaWNrbmVzcyA9IGxpbmVTdHls
ZS50ZXh0RGVjb3JhdGlvblRoaWNrbmVzcygpLnJlc29sdmUobGluZVN0eWxlLmNvbXB1dGVkRm9u
dFNpemUoKSwgbGluZVN0eWxlLmZvbnRNZXRyaWNzKCkpOworICAgIFdhdnlTdHJva2VQYXJhbWV0
ZXJzIHdhdnlTdHJva2VQYXJhbWV0ZXJzIHsgMCwgMCB9OwogICAgIGZsb2F0IHdhdnlPZmZzZXQg
PSAwOwogICAgICAgICAKICAgICBUZXh0RGVjb3JhdGlvblN0eWxlIGRlY29yYXRpb25TdHlsZSA9
IGxpbmVTdHlsZS50ZXh0RGVjb3JhdGlvblN0eWxlKCk7CkBAIC0xMjAsNyArMTI0LDcgQEAgR2x5
cGhPdmVyZmxvdyB2aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKGNvbnN0IFJlbmRlclN0eWxl
JiBsaW5lU3R5bGUsIGNvbnN0IEkKICAgICBHbHlwaE92ZXJmbG93IG92ZXJmbG93UmVzdWx0Owog
ICAgIAogICAgIGlmIChkZWNvcmF0aW9uU3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZTo6V2F2
eSkgewotICAgICAgICBnZXRXYXZ5U3Ryb2tlUGFyYW1ldGVycyhsaW5lU3R5bGUuY29tcHV0ZWRG
b250UGl4ZWxTaXplKCksIGNvbnRyb2xQb2ludERpc3RhbmNlLCBzdGVwKTsKKyAgICAgICAgd2F2
eVN0cm9rZVBhcmFtZXRlcnMgPSBnZXRXYXZ5U3Ryb2tlUGFyYW1ldGVycyhsaW5lU3R5bGUuY29t
cHV0ZWRGb250U2l6ZSgpKTsKICAgICAgICAgd2F2eU9mZnNldCA9IHdhdnlPZmZzZXRGcm9tRGVj
b3JhdGlvbigpOwogICAgICAgICBvdmVyZmxvd1Jlc3VsdC5sZWZ0ID0gc3Ryb2tlVGhpY2tuZXNz
OwogICAgICAgICBvdmVyZmxvd1Jlc3VsdC5yaWdodCA9IHN0cm9rZVRoaWNrbmVzczsKQEAgLTEy
OSwxMSArMTMzLDExIEBAIEdseXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9u
cyhjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlLCBjb25zdCBJCiAgICAgLy8gVGhlc2UgbWV0
cmljcyBtdXN0IG1hdGNoIHdoZXJlIHVuZGVybGluZXMgZ2V0IGRyYXduLgogICAgIGlmIChkZWNv
cmF0aW9uICYgVGV4dERlY29yYXRpb246OlVuZGVybGluZSkgewogICAgICAgICAvLyBDb21wZW5z
YXRlIGZvciB0aGUgaW50ZWdyYWwgY2VpbGluZyBpbiBHcmFwaGljc0NvbnRleHQ6OmNvbXB1dGVM
aW5lQm91bmRzQW5kQW50aWFsaWFzaW5nTW9kZUZvclRleHQoKQotICAgICAgICBpbnQgdW5kZXJs
aW5lT2Zmc2V0ID0gMTsKLSAgICAgICAgdW5kZXJsaW5lT2Zmc2V0ICs9IGNvbXB1dGVVbmRlcmxp
bmVPZmZzZXQobGluZVN0eWxlLnRleHRVbmRlcmxpbmVQb3NpdGlvbigpLCBsaW5lU3R5bGUuZm9u
dE1ldHJpY3MoKSwgaW5saW5lVGV4dEJveCwgc3Ryb2tlVGhpY2tuZXNzKTsKKyAgICAgICAgZmxv
YXQgdW5kZXJsaW5lT2Zmc2V0ID0gMTsKKyAgICAgICAgdW5kZXJsaW5lT2Zmc2V0ICs9IGNvbXB1
dGVVbmRlcmxpbmVHYXAobGluZVN0eWxlLnRleHRVbmRlcmxpbmVQb3NpdGlvbigpLCBsaW5lU3R5
bGUudGV4dFVuZGVybGluZU9mZnNldCgpLCBzdHJva2VUaGlja25lc3MsIGxpbmVTdHlsZS5mb250
TWV0cmljcygpLCBpbmxpbmVUZXh0Qm94KTsKICAgICAgICAgaWYgKGRlY29yYXRpb25TdHlsZSA9
PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpXYXZ5KSB7Ci0gICAgICAgICAgICBleHRlbmRJbnRUb0Zs
b2F0KG92ZXJmbG93UmVzdWx0LmJvdHRvbSwgdW5kZXJsaW5lT2Zmc2V0ICsgd2F2eU9mZnNldCAr
IGNvbnRyb2xQb2ludERpc3RhbmNlICsgc3Ryb2tlVGhpY2tuZXNzIC0gaGVpZ2h0KTsKLSAgICAg
ICAgICAgIGV4dGVuZEludFRvRmxvYXQob3ZlcmZsb3dSZXN1bHQudG9wLCAtKHVuZGVybGluZU9m
ZnNldCArIHdhdnlPZmZzZXQgLSBjb250cm9sUG9pbnREaXN0YW5jZSAtIHN0cm9rZVRoaWNrbmVz
cykpOworICAgICAgICAgICAgZXh0ZW5kSW50VG9GbG9hdChvdmVyZmxvd1Jlc3VsdC5ib3R0b20s
IHVuZGVybGluZU9mZnNldCArIHdhdnlPZmZzZXQgKyB3YXZ5U3Ryb2tlUGFyYW1ldGVycy5jb250
cm9sUG9pbnREaXN0YW5jZSArIHN0cm9rZVRoaWNrbmVzcyAtIGhlaWdodCk7CisgICAgICAgICAg
ICBleHRlbmRJbnRUb0Zsb2F0KG92ZXJmbG93UmVzdWx0LnRvcCwgLSh1bmRlcmxpbmVPZmZzZXQg
KyB3YXZ5T2Zmc2V0IC0gd2F2eVN0cm9rZVBhcmFtZXRlcnMuY29udHJvbFBvaW50RGlzdGFuY2Ug
LSBzdHJva2VUaGlja25lc3MpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGV4dGVu
ZEludFRvRmxvYXQob3ZlcmZsb3dSZXN1bHQuYm90dG9tLCB1bmRlcmxpbmVPZmZzZXQgKyBzdHJv
a2VUaGlja25lc3MgLSBoZWlnaHQpOwogICAgICAgICAgICAgZXh0ZW5kSW50VG9GbG9hdChvdmVy
Zmxvd1Jlc3VsdC50b3AsIC11bmRlcmxpbmVPZmZzZXQpOwpAQCAtMTQxLDggKzE0NSw4IEBAIEds
eXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJTdHls
ZSYgbGluZVN0eWxlLCBjb25zdCBJCiAgICAgfQogICAgIGlmIChkZWNvcmF0aW9uICYgVGV4dERl
Y29yYXRpb246Ok92ZXJsaW5lKSB7CiAgICAgICAgIGlmIChkZWNvcmF0aW9uU3R5bGUgPT0gVGV4
dERlY29yYXRpb25TdHlsZTo6V2F2eSkgewotICAgICAgICAgICAgZXh0ZW5kSW50VG9GbG9hdChv
dmVyZmxvd1Jlc3VsdC5ib3R0b20sIC13YXZ5T2Zmc2V0ICsgY29udHJvbFBvaW50RGlzdGFuY2Ug
KyBzdHJva2VUaGlja25lc3MgLSBoZWlnaHQpOwotICAgICAgICAgICAgZXh0ZW5kSW50VG9GbG9h
dChvdmVyZmxvd1Jlc3VsdC50b3AsIHdhdnlPZmZzZXQgKyBjb250cm9sUG9pbnREaXN0YW5jZSAr
IHN0cm9rZVRoaWNrbmVzcyk7CisgICAgICAgICAgICBleHRlbmRJbnRUb0Zsb2F0KG92ZXJmbG93
UmVzdWx0LmJvdHRvbSwgLXdhdnlPZmZzZXQgKyB3YXZ5U3Ryb2tlUGFyYW1ldGVycy5jb250cm9s
UG9pbnREaXN0YW5jZSArIHN0cm9rZVRoaWNrbmVzcyAtIGhlaWdodCk7CisgICAgICAgICAgICBl
eHRlbmRJbnRUb0Zsb2F0KG92ZXJmbG93UmVzdWx0LnRvcCwgd2F2eU9mZnNldCArIHdhdnlTdHJv
a2VQYXJhbWV0ZXJzLmNvbnRyb2xQb2ludERpc3RhbmNlICsgc3Ryb2tlVGhpY2tuZXNzKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGV4dGVuZEludFRvRmxvYXQob3ZlcmZsb3dSZXN1
bHQuYm90dG9tLCBzdHJva2VUaGlja25lc3MgLSBoZWlnaHQpOwogICAgICAgICAgICAgLy8gdG9w
IGlzIHVudG91Y2hlZApAQCAtMTUxLDggKzE1NSw4IEBAIEdseXBoT3ZlcmZsb3cgdmlzdWFsT3Zl
cmZsb3dGb3JEZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlLCBjb25zdCBJ
CiAgICAgaWYgKGRlY29yYXRpb24gJiBUZXh0RGVjb3JhdGlvbjo6TGluZVRocm91Z2gpIHsKICAg
ICAgICAgZmxvYXQgYmFzZWxpbmUgPSBsaW5lU3R5bGUuZm9udE1ldHJpY3MoKS5mbG9hdEFzY2Vu
dCgpOwogICAgICAgICBpZiAoZGVjb3JhdGlvblN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6
OldhdnkpIHsKLSAgICAgICAgICAgIGV4dGVuZEludFRvRmxvYXQob3ZlcmZsb3dSZXN1bHQuYm90
dG9tLCAyICogYmFzZWxpbmUgLyAzICsgY29udHJvbFBvaW50RGlzdGFuY2UgKyBzdHJva2VUaGlj
a25lc3MgLSBoZWlnaHQpOwotICAgICAgICAgICAgZXh0ZW5kSW50VG9GbG9hdChvdmVyZmxvd1Jl
c3VsdC50b3AsIC0oMiAqIGJhc2VsaW5lIC8gMyAtIGNvbnRyb2xQb2ludERpc3RhbmNlIC0gc3Ry
b2tlVGhpY2tuZXNzKSk7CisgICAgICAgICAgICBleHRlbmRJbnRUb0Zsb2F0KG92ZXJmbG93UmVz
dWx0LmJvdHRvbSwgMiAqIGJhc2VsaW5lIC8gMyArIHdhdnlTdHJva2VQYXJhbWV0ZXJzLmNvbnRy
b2xQb2ludERpc3RhbmNlICsgc3Ryb2tlVGhpY2tuZXNzIC0gaGVpZ2h0KTsKKyAgICAgICAgICAg
IGV4dGVuZEludFRvRmxvYXQob3ZlcmZsb3dSZXN1bHQudG9wLCAtKDIgKiBiYXNlbGluZSAvIDMg
LSB3YXZ5U3Ryb2tlUGFyYW1ldGVycy5jb250cm9sUG9pbnREaXN0YW5jZSAtIHN0cm9rZVRoaWNr
bmVzcykpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZXh0ZW5kSW50VG9GbG9hdChv
dmVyZmxvd1Jlc3VsdC5ib3R0b20sIDIgKiBiYXNlbGluZSAvIDMgKyBzdHJva2VUaGlja25lc3Mg
LSBoZWlnaHQpOwogICAgICAgICAgICAgZXh0ZW5kSW50VG9GbG9hdChvdmVyZmxvd1Jlc3VsdC50
b3AsIC0oMiAqIGJhc2VsaW5lIC8gMykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvSW5saW5lVGV4dEJveFN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0
Qm94U3R5bGUuaAppbmRleCBjYzUzMTJhNDg3ZGE4NTE5ZGQ2ZDUwNzA0YTc2MDc3YmE5N2EzZDI2
Li5jZjA2MTBkYmRlNDMwMDMwNDA3YjU4MjkwZDhjNjkxNDFhZWE0ZjczIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuaApAQCAtMzMsMTkgKzMzLDI0IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIElubGluZVRleHRCb3g7CiBjbGFzcyBSZW5kZXJTdHlsZTsK
IAotaW5saW5lIGZsb2F0IHRleHREZWNvcmF0aW9uU3Ryb2tlVGhpY2tuZXNzKGZsb2F0IGZvbnRT
aXplKQotewotICAgIGNvbnN0IGZsb2F0IHRleHREZWNvcmF0aW9uQmFzZUZvbnRTaXplID0gMTY7
Ci0gICAgcmV0dXJuIGZvbnRTaXplIC8gdGV4dERlY29yYXRpb25CYXNlRm9udFNpemU7Ci19Ci0K
IGlubGluZSBmbG9hdCB3YXZ5T2Zmc2V0RnJvbURlY29yYXRpb24oKQogewogICAgIHJldHVybiAx
OwogfQogCiBHbHlwaE92ZXJmbG93IHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMoY29uc3Qg
UmVuZGVyU3R5bGUmIGxpbmVTdHlsZSwgY29uc3QgSW5saW5lVGV4dEJveCopOwotdm9pZCBnZXRX
YXZ5U3Ryb2tlUGFyYW1ldGVycyhmbG9hdCBmb250U2l6ZSwgZmxvYXQmIGNvbnRyb2xQb2ludERp
c3RhbmNlLCBmbG9hdCYgc3RlcCk7Ci1pbnQgY29tcHV0ZVVuZGVybGluZU9mZnNldChPcHRpb25T
ZXQ8VGV4dFVuZGVybGluZVBvc2l0aW9uPiwgY29uc3QgRm9udE1ldHJpY3MmLCBjb25zdCBJbmxp
bmVUZXh0Qm94KiwgaW50IHRleHREZWNvcmF0aW9uVGhpY2tuZXNzKTsKK3N0cnVjdCBXYXZ5U3Ry
b2tlUGFyYW1ldGVycyB7CisgICAgLy8gRGlzdGFuY2UgYmV0d2VlbiBkZWNvcmF0aW9uJ3MgYXhp
cyBhbmQgQmV6aWVyIGN1cnZlJ3MgY29udHJvbCBwb2ludHMuCisgICAgLy8gVGhlIGhlaWdodCBv
ZiB0aGUgY3VydmUgaXMgYmFzZWQgb24gdGhpcyBkaXN0YW5jZS4gSW5jcmVhc2VzIHRoZSBjdXJ2
ZSdzIGhlaWdodAorICAgIC8vIGFzIGZvbnRTaXplIGluY3JlYXNlcyB0byBtYWtlIHRoZSBjdXJ2
ZSBsb29rIGJldHRlci4KKyAgICBmbG9hdCBjb250cm9sUG9pbnREaXN0YW5jZTsKKworICAgIC8v
IEluY3JlbWVudCB1c2VkIHRvIGZvcm0gdGhlIGRpYW1vbmQgc2hhcGUgYmV0d2VlbiBzdGFydCBw
b2ludCAocDEpLCBjb250cm9sCisgICAgLy8gcG9pbnRzIGFuZCBlbmQgcG9pbnQgKHAyKSBhbG9u
ZyB0aGUgYXhpcyBvZiB0aGUgZGVjb3JhdGlvbi4gVGhlIGN1cnZlIGdldHMKKyAgICAvLyB3aWRl
ciBhcyBmb250IHNpemUgaW5jcmVhc2VzLgorICAgIGZsb2F0IHN0ZXA7Cit9OworV2F2eVN0cm9r
ZVBhcmFtZXRlcnMgZ2V0V2F2eVN0cm9rZVBhcmFtZXRlcnMoZmxvYXQgZm9udFNpemUpOworZmxv
YXQgY29tcHV0ZVVuZGVybGluZUdhcChUZXh0VW5kZXJsaW5lUG9zaXRpb24sIFRleHRVbmRlcmxp
bmVPZmZzZXQsIGZsb2F0IHRleHREZWNvcmF0aW9uVGhpY2tuZXNzLCBjb25zdCBGb250TWV0cmlj
cyYsIGNvbnN0IElubGluZVRleHRCb3gqKTsKICAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzMy10ZXh0L2NzczMtdGV4dC1kZWNvcmF0
aW9uL3RleHQtZGVjb3JhdGlvbi1vZmZzZXQtcGFyc2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9jc3MzLXRleHQvY3NzMy10ZXh0LWRlY29yYXRpb24vdGV4dC1kZWNvcmF0aW9uLW9m
ZnNldC1wYXJzZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjMwYzQyOGVjYzM5NDUwYTU1Mjk2
N2ZlNjA0ZWViYzBhNjBjOWE5NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzMy10ZXh0L2NzczMtdGV4dC1kZWNvcmF0aW9uL3RleHQtZGVjb3JhdGlvbi1vZmZzZXQtcGFy
c2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1BBU1Mgd2luZG93LmdldENvbXB1dGVk
U3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QxJykpLmdldFByb3BlcnR5VmFsdWUo
J3RleHQtdW5kZXJsaW5lLW9mZnNldCcpIGlzICJhdXRvIgorUEFTUyB3aW5kb3cuZ2V0Q29tcHV0
ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdDInKSkuZ2V0UHJvcGVydHlWYWx1
ZSgndGV4dC11bmRlcmxpbmUtb2Zmc2V0JykgaXMgImF1dG8iCitQQVNTIHdpbmRvdy5nZXRDb21w
dXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0MycpKS5nZXRQcm9wZXJ0eVZh
bHVlKCd0ZXh0LXVuZGVybGluZS1vZmZzZXQnKSBpcyAiYXV0byIKK1BBU1Mgd2luZG93LmdldENv
bXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3Q0JykpLmdldFByb3BlcnR5
VmFsdWUoJ3RleHQtdW5kZXJsaW5lLW9mZnNldCcpIGlzICJhdXRvIgorUEFTUyB3aW5kb3cuZ2V0
Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdDUnKSkuZ2V0UHJvcGVy
dHlWYWx1ZSgndGV4dC11bmRlcmxpbmUtb2Zmc2V0JykgaXMgIjM3cHgiCitQQVNTIHdpbmRvdy5n
ZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0NicpKS5nZXRQcm9w
ZXJ0eVZhbHVlKCd0ZXh0LXVuZGVybGluZS1vZmZzZXQnKSBpcyAiMjAwcHgiCitQQVNTIHdpbmRv
dy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0NycpKS5nZXRQ
cm9wZXJ0eVZhbHVlKCd0ZXh0LXVuZGVybGluZS1vZmZzZXQnKSBpcyAiNDBweCIKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2NzczMtdGV4dC9jc3MzLXRleHQtZGVjb3JhdGlvbi90ZXh0LWRlY29y
YXRpb24tb2Zmc2V0LXBhcnNlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2NzczMtdGV4dC9jc3Mz
LXRleHQtZGVjb3JhdGlvbi90ZXh0LWRlY29yYXRpb24tb2Zmc2V0LXBhcnNlLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNWZmNTIzNjBkZmY2ZDYxOWZjNjIyNWFhZjY4ZDI3OTEyZjliNTAwYgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzMy10ZXh0L2NzczMtdGV4dC1kZWNvcmF0aW9u
L3RleHQtZGVjb3JhdGlvbi1vZmZzZXQtcGFyc2UuaHRtbApAQCAtMCwwICsxLDI1IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
dGVzdDEiPjwvZGl2PgorPGRpdiBpZD0idGVzdDIiIHN0eWxlPSJ0ZXh0LXVuZGVybGluZS1vZmZz
ZXQ6IGF1dG87Ij48L2Rpdj4KKzxkaXYgaWQ9InRlc3QzIiBzdHlsZT0idGV4dC11bmRlcmxpbmUt
b2Zmc2V0OiBhdXRvIDM3cHg7Ij48L2Rpdj4KKzxkaXYgaWQ9InRlc3Q0IiBzdHlsZT0idGV4dC11
bmRlcmxpbmUtb2Zmc2V0OiBnYXJiYWdlOyI+PC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0NSIgc3R5bGU9
InRleHQtdW5kZXJsaW5lLW9mZnNldDogMzdweDsiPjwvZGl2PgorPGRpdiBpZD0idGVzdDYiIHN0
eWxlPSJmb250LXNpemU6IDEwMHB4OyB0ZXh0LXVuZGVybGluZS1vZmZzZXQ6IDJlbTsiPjwvZGl2
PgorPGRpdiBzdHlsZT0iZm9udC1zaXplOiAyMHB4OyB0ZXh0LXVuZGVybGluZS1vZmZzZXQ6IDJl
bTsiPjxkaXYgaWQ9InRlc3Q3IiBzdHlsZT0iZm9udC1zaXplOiAxMDBweDsiPjwvZGl2PjwvZGl2
PgorPHNjcmlwdD4KK3Nob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldENvbXB1dGVkU3R5
bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QxJykpLmdldFByb3BlcnR5VmFsdWUoJ3Rl
eHQtdW5kZXJsaW5lLW9mZnNldCcpIiwgImF1dG8iKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygi
d2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QyJykp
LmdldFByb3BlcnR5VmFsdWUoJ3RleHQtdW5kZXJsaW5lLW9mZnNldCcpIiwgImF1dG8iKTsKK3No
b3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3Rlc3QzJykpLmdldFByb3BlcnR5VmFsdWUoJ3RleHQtdW5kZXJsaW5lLW9m
ZnNldCcpIiwgImF1dG8iKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldENvbXB1
dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3Q0JykpLmdldFByb3BlcnR5VmFs
dWUoJ3RleHQtdW5kZXJsaW5lLW9mZnNldCcpIiwgImF1dG8iKTsKK3Nob3VsZEJlRXF1YWxUb1N0
cmluZygid2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rl
c3Q1JykpLmdldFByb3BlcnR5VmFsdWUoJ3RleHQtdW5kZXJsaW5lLW9mZnNldCcpIiwgIjM3cHgi
KTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygid2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3Q2JykpLmdldFByb3BlcnR5VmFsdWUoJ3RleHQtdW5kZXJs
aW5lLW9mZnNldCcpIiwgIjIwMHB4Iik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoIndpbmRvdy5n
ZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0NycpKS5nZXRQcm9w
ZXJ0eVZhbHVlKCd0ZXh0LXVuZGVybGluZS1vZmZzZXQnKSIsICI0MHB4Iik7Cis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353951</attachid>
            <date>2018-11-06 01:21:08 -0800</date>
            <delta_ts>2018-11-06 11:19:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190774-20181106012107.patch</filename>
            <type>text/plain</type>
            <size>46776</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3ODQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTczYTU2ZmYxNTg2MTBl
OWQwOGU2MTY4OThjMGNiZDY1OTZmYjQ4Zi4uMWU5YTYxZGRlOTg1ZjI5MDU3ZGM2ODgyNzcyNjAy
OGRlYmU1YzJlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDE4LTExLTA2ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50
IHRleHQtdW5kZXJsaW5lLW9mZnNldCBhbmQgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNzc0CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQmVjYXVzZSBvZiBv
dXIgZXhpc3RpbmcgaW5mcmFzdHJ1Y3R1cmUgZm9yIHRleHQgZGVjb3JhdGlvbnMsIGFkZGluZyBz
dXBwb3J0IGZvciB0aGVzZQorICAgICAgICBpcyBmYWlybHkgc2ltcGxlLiBUaGlzIHBhdGNoIHVw
ZGF0ZXMgb3VyIGV4aXN0aW5nIGZ1bmN0aW9ucyB0byBoYW5kbGUgdGhpY2sgJiBwbGFjZWQKKyAg
ICAgICAgdW5kZXJsaW5lcywgYXMgd2VsbCBhcyB1cGRhdGluZyBvdXIgcmVwYWludCBjb2RlIHRv
IGNvcnJlY2x5IGhhbmRsZSByZXBhaW50aW5nIHRoZW0uCisgICAgICAgIEl0IGFsc28gaGFuZGxl
cyBhbmltYXRpb25zLgorCisgICAgICAgIFRlc3RzOiBhbmltYXRpb25zL3RleHQtZGVjb3JhdGlv
bi10aGlja25lc3MuaHRtbAorICAgICAgICAgICAgICAgYW5pbWF0aW9ucy90ZXh0LXVuZGVybGlu
ZS1vZmZzZXQuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9jc3MzLXRleHQvY3NzMy10ZXh0LWRl
Y29yYXRpb24vdGV4dC1kZWNvcmF0aW9uLW9mZnNldC0yLmh0bWwKKyAgICAgICAgICAgICAgIGZh
c3QvY3NzMy10ZXh0L2NzczMtdGV4dC1kZWNvcmF0aW9uL3RleHQtZGVjb3JhdGlvbi1vZmZzZXQt
My5odG1sCisgICAgICAgICAgICAgICBmYXN0L2NzczMtdGV4dC9jc3MzLXRleHQtZGVjb3JhdGlv
bi90ZXh0LWRlY29yYXRpb24tb2Zmc2V0LWF1dG8tbGVuZ3RoLmh0bWwKKyAgICAgICAgICAgICAg
IGZhc3QvY3NzMy10ZXh0L2NzczMtdGV4dC1kZWNvcmF0aW9uL3RleHQtZGVjb3JhdGlvbi1vZmZz
ZXQtYmFzZWxpbmUuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9jc3MzLXRleHQvY3NzMy10ZXh0
LWRlY29yYXRpb24vdGV4dC1kZWNvcmF0aW9uLW9mZnNldC1mcm9tLWZvbnQtYXV0by5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L2NzczMtdGV4dC9jc3MzLXRleHQtZGVjb3JhdGlvbi90ZXh0LWRl
Y29yYXRpb24tb2Zmc2V0LWZyb20tZm9udC1sZW5ndGguaHRtbAorICAgICAgICAgICAgICAgZmFz
dC9jc3MzLXRleHQvY3NzMy10ZXh0LWRlY29yYXRpb24vdGV4dC1kZWNvcmF0aW9uLW9mZnNldC1y
ZXBhaW50Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvY3NzMy10ZXh0L2NzczMtdGV4dC1kZWNv
cmF0aW9uL3RleHQtZGVjb3JhdGlvbi1vZmZzZXQtdW5kZXItYXV0by5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2NzczMtdGV4dC9jc3MzLXRleHQtZGVjb3JhdGlvbi90ZXh0LWRlY29yYXRpb24t
b2Zmc2V0LXVuZGVyLWxlbmd0aC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2NzczMtdGV4dC9j
c3MzLXRleHQtZGVjb3JhdGlvbi90ZXh0LWRlY29yYXRpb24tb2Zmc2V0Lmh0bWwKKyAgICAgICAg
ICAgICAgIGZhc3QvY3NzMy10ZXh0L2NzczMtdGV4dC1kZWNvcmF0aW9uL3RleHQtZGVjb3JhdGlv
bi10aGlja25lc3MtbGVuZ3RoLmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvY3NzMy10ZXh0L2Nz
czMtdGV4dC1kZWNvcmF0aW9uL3RleHQtZGVjb3JhdGlvbi10aGlja25lc3MtcmVwYWludC5odG1s
CisKKyAgICAgICAgKiBwYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpibGVuZEZ1bmMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVy
dHlBbmltYXRpb25XcmFwcGVyTWFwOjpDU1NQcm9wZXJ0eUFuaW1hdGlvbldyYXBwZXJNYXApOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRNZXRyaWNzLmg6CisgICAgICAgIChXZWJD
b3JlOjpGb250TWV0cmljczo6dW5kZXJsaW5lUG9zaXRpb24gY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udE1ldHJpY3M6OnNldFVuZGVybGluZVBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRNZXRyaWNzOjp1bmRlcmxpbmVUaGlja25lc3MgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udE1ldHJpY3M6OnNldFVuZGVybGluZVRoaWNrbmVzcyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dDo6cGxhdGZvcm1Jbml0KToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVGbG93Qm94OjphZGRUb0xpbmUpOgorICAgICAgICAq
IHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBs
ZUxpbmVMYXlvdXQ6OmNhblVzZUZvclN0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvVGV4dERl
Y29yYXRpb25QYWludGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHREZWNvcmF0aW9uUGFp
bnRlcjo6cGFpbnRUZXh0RGVjb3JhdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpjaGFuZ2VBZmZl
Y3RzVmlzdWFsT3ZlcmZsb3cgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9UZXh0
RGVjb3JhdGlvblRoaWNrbmVzcy5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dERlY29yYXRpb25U
aGlja25lc3M6OnJlc29sdmUgY29uc3QpOgorICAgICAgICAqIHN0eWxlL0lubGluZVRleHRCb3hT
dHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlVW5kZXJsaW5lT2Zmc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OnZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMpOgorICAgICAgICAq
IHN0eWxlL0lubGluZVRleHRCb3hTdHlsZS5oOgorICAgICAgICAoV2ViQ29yZTo6dGV4dERlY29y
YXRpb25TdHJva2VUaGlja25lc3MpOiBEZWxldGVkLgorCiAyMDE4LTExLTA1ICBNeWxlcyBDLiBN
YXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgQ2FjaGUgZ2x5cGggcGF0
aHMgYW5kIHNoYXJlIHVuZGVybGluZSBza2lwcGluZyBjb2RlIGJldHdlZW4gYWxsIHRoZSBwb3J0
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlB
bmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlB
bmltYXRpb24uY3BwCmluZGV4IGQ2NTFkNTY3MTdkYWZmMDMyMGE5NzVlYmRhMjdiOWZhYWM2OGNm
NDMuLmI0NjJiOWY1NWZhNjNmYjJiMzkzMzhkMjAzNzc2OWRiMmZkOTBmNDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5j
cHAKQEAgLTI2MCw2ICsyNjAsMjAgQEAgc3RhdGljIGlubGluZSBWaXNpYmlsaXR5IGJsZW5kRnVu
Yyhjb25zdCBDU1NQcm9wZXJ0eUJsZW5kaW5nQ2xpZW50KiBhbmltLCBWaXNpYmkKICAgICByZXR1
cm4gcmVzdWx0ID4gMC4gPyBWaXNpYmlsaXR5OjpWaXNpYmxlIDogKHRvICE9IFZpc2liaWxpdHk6
OlZpc2libGUgPyB0byA6IGZyb20pOwogfQogCitzdGF0aWMgaW5saW5lIFRleHRVbmRlcmxpbmVP
ZmZzZXQgYmxlbmRGdW5jKGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDbGllbnQqIGFuaW0sIGNv
bnN0IFRleHRVbmRlcmxpbmVPZmZzZXQmIGZyb20sIGNvbnN0IFRleHRVbmRlcmxpbmVPZmZzZXQm
IHRvLCBkb3VibGUgcHJvZ3Jlc3MpCit7CisgICAgaWYgKGZyb20uaXNMZW5ndGgoKSAmJiB0by5p
c0xlbmd0aCgpKQorICAgICAgICByZXR1cm4gVGV4dFVuZGVybGluZU9mZnNldDo6Y3JlYXRlV2l0
aExlbmd0aChibGVuZEZ1bmMoYW5pbSwgZnJvbS5sZW5ndGhWYWx1ZSgpLCB0by5sZW5ndGhWYWx1
ZSgpLCBwcm9ncmVzcykpOworICAgIHJldHVybiBUZXh0VW5kZXJsaW5lT2Zmc2V0OjpjcmVhdGVX
aXRoQXV0bygpOworfQorCitzdGF0aWMgaW5saW5lIFRleHREZWNvcmF0aW9uVGhpY2tuZXNzIGJs
ZW5kRnVuYyhjb25zdCBDU1NQcm9wZXJ0eUJsZW5kaW5nQ2xpZW50KiBhbmltLCBjb25zdCBUZXh0
RGVjb3JhdGlvblRoaWNrbmVzcyYgZnJvbSwgY29uc3QgVGV4dERlY29yYXRpb25UaGlja25lc3Mm
IHRvLCBkb3VibGUgcHJvZ3Jlc3MpCit7CisgICAgaWYgKGZyb20uaXNMZW5ndGgoKSAmJiB0by5p
c0xlbmd0aCgpKQorICAgICAgICByZXR1cm4gVGV4dERlY29yYXRpb25UaGlja25lc3M6OmNyZWF0
ZVdpdGhMZW5ndGgoYmxlbmRGdW5jKGFuaW0sIGZyb20ubGVuZ3RoVmFsdWUoKSwgdG8ubGVuZ3Ro
VmFsdWUoKSwgcHJvZ3Jlc3MpKTsKKyAgICByZXR1cm4gVGV4dERlY29yYXRpb25UaGlja25lc3M6
OmNyZWF0ZVdpdGhBdXRvKCk7Cit9CisKIHN0YXRpYyBpbmxpbmUgTGVuZ3RoQm94IGJsZW5kRnVu
Yyhjb25zdCBDU1NQcm9wZXJ0eUJsZW5kaW5nQ2xpZW50KiBhbmltLCBjb25zdCBMZW5ndGhCb3gm
IGZyb20sIGNvbnN0IExlbmd0aEJveCYgdG8sIGRvdWJsZSBwcm9ncmVzcykKIHsKICAgICBMZW5n
dGhCb3ggcmVzdWx0KGJsZW5kRnVuYyhhbmltLCBmcm9tLnRvcCgpLCB0by50b3AoKSwgcHJvZ3Jl
c3MpLApAQCAtMTY4NSw2ICsxNjk5LDggQEAgQ1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFw
OjpDU1NQcm9wZXJ0eUFuaW1hdGlvbldyYXBwZXJNYXAoKQogICAgICAgICBuZXcgUHJvcGVydHlX
cmFwcGVyPEZvbnRTZWxlY3Rpb25WYWx1ZT4oQ1NTUHJvcGVydHlGb250V2VpZ2h0LCAmUmVuZGVy
U3R5bGU6OmZvbnRXZWlnaHQsICZSZW5kZXJTdHlsZTo6c2V0Rm9udFdlaWdodCksCiAgICAgICAg
IG5ldyBQcm9wZXJ0eVdyYXBwZXI8Rm9udFNlbGVjdGlvblZhbHVlPihDU1NQcm9wZXJ0eUZvbnRT
dHJldGNoLCAmUmVuZGVyU3R5bGU6OmZvbnRTdHJldGNoLCAmUmVuZGVyU3R5bGU6OnNldEZvbnRT
dHJldGNoKSwKICAgICAgICAgbmV3IFByb3BlcnR5V3JhcHBlckZvbnRTdHlsZSgpLAorICAgICAg
ICBuZXcgUHJvcGVydHlXcmFwcGVyPFRleHREZWNvcmF0aW9uVGhpY2tuZXNzPihDU1NQcm9wZXJ0
eVRleHREZWNvcmF0aW9uVGhpY2tuZXNzLCAmUmVuZGVyU3R5bGU6OnRleHREZWNvcmF0aW9uVGhp
Y2tuZXNzLCAmUmVuZGVyU3R5bGU6OnNldFRleHREZWNvcmF0aW9uVGhpY2tuZXNzKSwKKyAgICAg
ICAgbmV3IFByb3BlcnR5V3JhcHBlcjxUZXh0VW5kZXJsaW5lT2Zmc2V0PihDU1NQcm9wZXJ0eVRl
eHRVbmRlcmxpbmVPZmZzZXQsICZSZW5kZXJTdHlsZTo6dGV4dFVuZGVybGluZU9mZnNldCwgJlJl
bmRlclN0eWxlOjpzZXRUZXh0VW5kZXJsaW5lT2Zmc2V0KSwKICAgICB9OwogICAgIGNvbnN0IHVu
c2lnbmVkIGFuaW1hdGFibGVMb25naGFuZFByb3BlcnRpZXNDb3VudCA9IFdURl9BUlJBWV9MRU5H
VEgoYW5pbWF0YWJsZUxvbmdoYW5kUHJvcGVydHlXcmFwcGVycyk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRNZXRyaWNzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250TWV0cmljcy5oCmluZGV4IGU4ZGRlY2Q3MmUxOGNi
MzExY2E2Njg0MzVkNjFhYzU3MGExMzgwZjYuLmIxMGZlNWJlNWIzNGJlMjJkMjQ1MmI2NmI1YjA1
OWJlNGQ0Yjk4ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ZvbnRNZXRyaWNzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9u
dE1ldHJpY3MuaApAQCAtMTAyLDYgKzEwMiwxMiBAQCBwdWJsaWM6CiAgICAgZmxvYXQgemVyb1dp
ZHRoKCkgY29uc3QgeyByZXR1cm4gbV96ZXJvV2lkdGg7IH0KICAgICB2b2lkIHNldFplcm9XaWR0
aChmbG9hdCB6ZXJvV2lkdGgpIHsgbV96ZXJvV2lkdGggPSB6ZXJvV2lkdGg7IH0KIAorICAgIGZs
b2F0IHVuZGVybGluZVBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV91bmRlcmxpbmVQb3NpdGlv
bjsgfQorICAgIHZvaWQgc2V0VW5kZXJsaW5lUG9zaXRpb24oZmxvYXQgdW5kZXJsaW5lUG9zaXRp
b24pIHsgbV91bmRlcmxpbmVQb3NpdGlvbiA9IHVuZGVybGluZVBvc2l0aW9uOyB9CisKKyAgICBm
bG9hdCB1bmRlcmxpbmVUaGlja25lc3MoKSBjb25zdCB7IHJldHVybiBtX3VuZGVybGluZVRoaWNr
bmVzczsgfQorICAgIHZvaWQgc2V0VW5kZXJsaW5lVGhpY2tuZXNzKGZsb2F0IHVuZGVybGluZVRo
aWNrbmVzcykgeyBtX3VuZGVybGluZVRoaWNrbmVzcyA9IHVuZGVybGluZVRoaWNrbmVzczsgfQor
CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBGb250OwogCkBAIC0xMjUsNiArMTMxLDggQEAg
cHJpdmF0ZToKICAgICBmbG9hdCBtX3plcm9XaWR0aCB7IDAgfTsKICAgICBmbG9hdCBtX3hIZWln
aHQgeyAwIH07CiAgICAgZmxvYXQgbV9jYXBIZWlnaHQgeyAwIH07CisgICAgZmxvYXQgbV91bmRl
cmxpbmVQb3NpdGlvbiB7IDAgfTsKKyAgICBmbG9hdCBtX3VuZGVybGluZVRoaWNrbmVzcyB7IDAg
fTsKIH07CiAKIHN0YXRpYyBpbmxpbmUgZmxvYXQgc2NhbGVFbVRvVW5pdHMoZmxvYXQgeCwgdW5z
aWduZWQgdW5pdHNQZXJFbSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL0ZvbnRDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL0ZvbnRDb2NvYS5tbQppbmRleCBkOWE2OTlmYTdjYjA0NDc2Mjc3MWZiNGY1NmIw
YTg5YWEwNTk2MTczLi41ZDQzMDAwMjRhZGNlMjhlY2VmODg5MzNhMmVjOWZlNTQ5ZTNlMWY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Gb250Q29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvRm9udENv
Y29hLm1tCkBAIC0xOTgsNiArMTk4LDggQEAgdm9pZCBGb250OjpwbGF0Zm9ybUluaXQoKQogICAg
IG1fZm9udE1ldHJpY3Muc2V0TGluZUdhcChsaW5lR2FwKTsKICAgICBtX2ZvbnRNZXRyaWNzLnNl
dFhIZWlnaHQoeEhlaWdodCk7CiAgICAgbV9mb250TWV0cmljcy5zZXRMaW5lU3BhY2luZyhsaW5l
U3BhY2luZyk7CisgICAgbV9mb250TWV0cmljcy5zZXRVbmRlcmxpbmVQb3NpdGlvbigtQ1RGb250
R2V0VW5kZXJsaW5lUG9zaXRpb24obV9wbGF0Zm9ybURhdGEuZm9udCgpKSk7CisgICAgbV9mb250
TWV0cmljcy5zZXRVbmRlcmxpbmVUaGlja25lc3MoQ1RGb250R2V0VW5kZXJsaW5lVGhpY2tuZXNz
KG1fcGxhdGZvcm1EYXRhLmZvbnQoKSkpOwogfQogCiB2b2lkIEZvbnQ6OnBsYXRmb3JtQ2hhcldp
ZHRoSW5pdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxv
d0JveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lRmxvd0JveC5jcHAKaW5k
ZXggMDk1MDFmNzMxOWEyOGE4NDc3M2E3MGQ1ZmI3ZDI0NWM2Y2EzYmRhNC4uZDc0NTgxMThhMmI4
NWUxNDJjM2RkMDU1YWFlZGM4MmNkZmZlNWM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0lubGluZUZsb3dCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9JbmxpbmVGbG93Qm94LmNwcApAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgSW5saW5lRmxvd0Jv
eDo6YWRkVG9MaW5lKElubGluZUJveCogY2hpbGQpCiAgICAgICAgICAgICAgICAgY29uc3QgYXV0
byogdGV4dEJveCA9IGRvd25jYXN0PElubGluZVRleHRCb3g+KGNoaWxkKTsKICAgICAgICAgICAg
ICAgICBoYXNNYXJrZXJzID0gdGV4dEJveC0+aGFzTWFya2VycygpOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgaWYgKGNoaWxkU3R5bGUtPmxldHRlclNwYWNpbmcoKSA8IDAgfHwgY2hpbGRT
dHlsZS0+dGV4dFNoYWRvdygpIHx8IGNoaWxkU3R5bGUtPnRleHRFbXBoYXNpc01hcmsoKSAhPSBU
ZXh0RW1waGFzaXNNYXJrOjpOb25lIHx8IGNoaWxkU3R5bGUtPmhhc1Bvc2l0aXZlU3Ryb2tlV2lk
dGgoKSB8fCBoYXNNYXJrZXJzKQorICAgICAgICAgICAgaWYgKGNoaWxkU3R5bGUtPmxldHRlclNw
YWNpbmcoKSA8IDAgfHwgY2hpbGRTdHlsZS0+dGV4dFNoYWRvdygpIHx8IGNoaWxkU3R5bGUtPnRl
eHRFbXBoYXNpc01hcmsoKSAhPSBUZXh0RW1waGFzaXNNYXJrOjpOb25lIHx8IGNoaWxkU3R5bGUt
Pmhhc1Bvc2l0aXZlU3Ryb2tlV2lkdGgoKSB8fCBoYXNNYXJrZXJzIHx8ICFjaGlsZFN0eWxlLT50
ZXh0VW5kZXJsaW5lT2Zmc2V0KCkuaXNBdXRvKCkgfHwgIWNoaWxkU3R5bGUtPnRleHREZWNvcmF0
aW9uVGhpY2tuZXNzKCkuaXNBdXRvKCkgfHwgY2hpbGRTdHlsZS0+dGV4dFVuZGVybGluZVBvc2l0
aW9uKCkgIT0gVGV4dFVuZGVybGluZVBvc2l0aW9uOjpBdXRvKQogICAgICAgICAgICAgICAgIGNo
aWxkLT5jbGVhcktub3duVG9IYXZlTm9PdmVyZmxvdygpOwogICAgICAgICB9IGVsc2UgaWYgKGNo
aWxkLT5yZW5kZXJlcigpLmlzUmVwbGFjZWQoKSkgewogICAgICAgICAgICAgY29uc3QgUmVuZGVy
Qm94JiBib3ggPSBkb3duY2FzdDxSZW5kZXJCb3g+KGNoaWxkLT5yZW5kZXJlcigpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcAppbmRleCBlM2ZlYTNm
YWIyOWU0ZGI3MjJlOGE4ZTkzNDdmNjQyMTY3NTMxOGIwLi5mMTBmYzQ2MTIxN2VlYzE4ODlmYTk0
MzI3YTNiYmQ5ZjBkYTFkMGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
U2ltcGxlTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBs
ZUxpbmVMYXlvdXQuY3BwCkBAIC0yMDEsNyArMjAxLDcgQEAgc3RhdGljIEF2b2lkYW5jZVJlYXNv
bkZsYWdzIGNhblVzZUZvclN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgSW5jbHVkZVJl
YXMKICAgICBBdm9pZGFuY2VSZWFzb25GbGFncyByZWFzb25zID0geyB9OwogICAgIGlmIChzdHls
ZS50ZXh0T3ZlcmZsb3coKSA9PSBUZXh0T3ZlcmZsb3c6OkVsbGlwc2lzKQogICAgICAgICBTRVRf
UkVBU09OX0FORF9SRVRVUk5fSUZfTkVFREVEKEZsb3dIYXNUZXh0T3ZlcmZsb3csIHJlYXNvbnMs
IGluY2x1ZGVSZWFzb25zKTsKLSAgICBpZiAoKHN0eWxlLnRleHREZWNvcmF0aW9uc0luRWZmZWN0
KCkgJiBUZXh0RGVjb3JhdGlvbjo6VW5kZXJsaW5lKSAmJiBzdHlsZS50ZXh0VW5kZXJsaW5lUG9z
aXRpb24oKSA9PSBUZXh0VW5kZXJsaW5lUG9zaXRpb246OlVuZGVyKQorICAgIGlmICgoc3R5bGUu
dGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSAmIFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUpICYm
IChzdHlsZS50ZXh0VW5kZXJsaW5lUG9zaXRpb24oKSAhPSBUZXh0VW5kZXJsaW5lUG9zaXRpb246
OkF1dG8gfHwgIXN0eWxlLnRleHRVbmRlcmxpbmVPZmZzZXQoKS5pc0F1dG8oKSB8fCAhc3R5bGUu
dGV4dERlY29yYXRpb25UaGlja25lc3MoKS5pc0F1dG8oKSkpCiAgICAgICAgIFNFVF9SRUFTT05f
QU5EX1JFVFVSTl9JRl9ORUVERUQoRmxvd0hhc1Vuc3VwcG9ydGVkVW5kZXJsaW5lRGVjb3JhdGlv
biwgcmVhc29ucywgaW5jbHVkZVJlYXNvbnMpOwogICAgIC8vIE5vbi12aXNpYmxlIG92ZXJmbG93
IHNob3VsZCBiZSBwcmV0dHkgZWFzeSB0byBzdXBwb3J0LgogICAgIGlmIChzdHlsZS5vdmVyZmxv
d1goKSAhPSBPdmVyZmxvdzo6VmlzaWJsZSB8fCBzdHlsZS5vdmVyZmxvd1koKSAhPSBPdmVyZmxv
dzo6VmlzaWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVj
b3JhdGlvblBhaW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0
aW9uUGFpbnRlci5jcHAKaW5kZXggODU4ZTJmNzE5Zjg0ZGMwNjc3MmRmYTRjMzU1ZmM1ZjMxYjEw
MDkxOS4uYjhhNDYxZjI0ZjFmYWY1Nzk5MmQ0YmQ0MjkxYzVhYzY3NzRlOWI0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHAKQEAg
LTIxMSw3ICsyMTEsNyBAQCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OlRleHREZWNvcmF0aW9uUGFp
bnRlcihHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE9wdGlvblNldAogdm9pZCBUZXh0RGVjb3Jh
dGlvblBhaW50ZXI6OnBhaW50VGV4dERlY29yYXRpb24oY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwg
Y29uc3QgRmxvYXRQb2ludCYgdGV4dE9yaWdpbiwgY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2lu
KQogewogICAgIGNvbnN0IGF1dG8mIGZvbnRNZXRyaWNzID0gbV9saW5lU3R5bGUuZm9udE1ldHJp
Y3MoKTsKLSAgICBmbG9hdCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcyA9IHRleHREZWNvcmF0aW9u
U3Ryb2tlVGhpY2tuZXNzKG1fbGluZVN0eWxlLmNvbXB1dGVkRm9udFBpeGVsU2l6ZSgpKTsKKyAg
ICBmbG9hdCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcyA9IG1fbGluZVN0eWxlLnRleHREZWNvcmF0
aW9uVGhpY2tuZXNzKCkucmVzb2x2ZShtX2xpbmVTdHlsZS5jb21wdXRlZEZvbnRTaXplKCksIGZv
bnRNZXRyaWNzKTsKICAgICBGbG9hdFBvaW50IGxvY2FsT3JpZ2luID0gYm94T3JpZ2luOwogCiAg
ICAgYXV0byBwYWludERlY29yYXRpb24gPSBbJl0gKFRleHREZWNvcmF0aW9uIGRlY29yYXRpb24s
IFRleHREZWNvcmF0aW9uU3R5bGUgc3R5bGUsIGNvbnN0IENvbG9yJiBjb2xvciwgY29uc3QgRmxv
YXRSZWN0JiByZWN0KSB7CkBAIC0yODUsNyArMjg1LDcgQEAgdm9pZCBUZXh0RGVjb3JhdGlvblBh
aW50ZXI6OnBhaW50VGV4dERlY29yYXRpb24oY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgY29uc3Qg
RmwKIAogICAgICAgICAvLyBUaGVzZSBkZWNvcmF0aW9ucyBzaG91bGQgbWF0Y2ggdGhlIHZpc3Vh
bCBvdmVyZmxvd3MgY29tcHV0ZWQgaW4gdmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucygpLgog
ICAgICAgICBpZiAobV9kZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvbjo6VW5kZXJs
aW5lKSkgewotICAgICAgICAgICAgaW50IG9mZnNldCA9IGNvbXB1dGVVbmRlcmxpbmVPZmZzZXQo
bV9saW5lU3R5bGUudGV4dFVuZGVybGluZVBvc2l0aW9uKCksIG1fbGluZVN0eWxlLmZvbnRNZXRy
aWNzKCksIG1faW5saW5lVGV4dEJveCwgdGV4dERlY29yYXRpb25UaGlja25lc3MpOworICAgICAg
ICAgICAgaW50IG9mZnNldCA9IGNvbXB1dGVVbmRlcmxpbmVPZmZzZXQobV9saW5lU3R5bGUudGV4
dFVuZGVybGluZVBvc2l0aW9uKCksIG1fbGluZVN0eWxlLnRleHRVbmRlcmxpbmVPZmZzZXQoKSwg
bV9saW5lU3R5bGUuZm9udE1ldHJpY3MoKSwgbV9pbmxpbmVUZXh0Qm94LCBtX2xpbmVTdHlsZS5j
b21wdXRlZEZvbnRTaXplKCkgLyAxNik7CiAgICAgICAgICAgICBmbG9hdCB3YXZ5T2Zmc2V0ID0g
bV9zdHlsZXMudW5kZXJsaW5lU3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZTo6V2F2eSA/IG1f
d2F2eU9mZnNldCA6IDA7CiAgICAgICAgICAgICBGbG9hdFJlY3QgcmVjdChsb2NhbE9yaWdpbiwg
RmxvYXRTaXplKG1fd2lkdGgsIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzKSk7CiAgICAgICAgICAg
ICByZWN0Lm1vdmUoMCwgb2Zmc2V0ICsgd2F2eU9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCBjODUyNTg4NTAyNDc3MGQ5YzVi
NWQ0OTE5ZWQ2NWJjNmViMTE5NTc3Li5jZmRiN2I1MzdmY2I3ZmI5ZDA1ODY1ODQ1M2JiZWYxYWEx
OGI0ZmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5jcHAKQEAgLTUzNiwxNCArNTM2LDExIEBAIGlubGluZSBib29sIFJlbmRlclN0eWxlOjpjaGFu
Z2VBZmZlY3RzVmlzdWFsT3ZlcmZsb3coY29uc3QgUmVuZGVyU3R5bGUmIG90aGVyKSBjCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCiAgICAgaWYgKG1faW5oZXJpdGVkRmxhZ3MudGV4dERlY29yYXRp
b25zICE9IG90aGVyLm1faW5oZXJpdGVkRmxhZ3MudGV4dERlY29yYXRpb25zCi0gICAgICAgIHx8
IG1fdmlzdWFsRGF0YS0+dGV4dERlY29yYXRpb24gIT0gb3RoZXIubV92aXN1YWxEYXRhLT50ZXh0
RGVjb3JhdGlvbgotICAgICAgICB8fCBtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50ZXh0RGVjb3Jh
dGlvblN0eWxlICE9IG90aGVyLm1fcmFyZU5vbkluaGVyaXRlZERhdGEtPnRleHREZWNvcmF0aW9u
U3R5bGUpIHsKLSAgICAgICAgLy8gVW5kZXJsaW5lcyBhcmUgYWx3YXlzIGRyYXduIG91dHNpZGUg
b2YgdGhlaXIgdGV4dGJveCBib3VuZHMgd2hlbiB0ZXh0LXVuZGVybGluZS1wb3NpdGlvbjogdW5k
ZXI7Ci0gICAgICAgIC8vIGlzIHNwZWNpZmllZC4gV2UgY2FuIHRha2UgYW4gZWFybHkgb3V0IGhl
cmUuCi0gICAgICAgIGlmICh0ZXh0VW5kZXJsaW5lUG9zaXRpb24oKSA9PSBUZXh0VW5kZXJsaW5l
UG9zaXRpb246OlVuZGVyCi0gICAgICAgICAgICB8fCBvdGhlci50ZXh0VW5kZXJsaW5lUG9zaXRp
b24oKSA9PSBUZXh0VW5kZXJsaW5lUG9zaXRpb246OlVuZGVyKQotICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgICAgIHJldHVybiB2aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKCp0aGlz
LCBudWxscHRyKSAhPSB2aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKG90aGVyLCBudWxscHRy
KTsKKyAgICAgICAgfHwgbV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+dGV4dERlY29yYXRpb25TdHls
ZSAhPSBvdGhlci5tX3JhcmVOb25Jbmhlcml0ZWREYXRhLT50ZXh0RGVjb3JhdGlvblN0eWxlCisg
ICAgICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHREZWNvcmF0aW9uVGhpY2tuZXNzICE9
IG90aGVyLm1fcmFyZUluaGVyaXRlZERhdGEtPnRleHREZWNvcmF0aW9uVGhpY2tuZXNzCisgICAg
ICAgIHx8IG1fcmFyZUluaGVyaXRlZERhdGEtPnRleHRVbmRlcmxpbmVPZmZzZXQgIT0gb3RoZXIu
bV9yYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFVuZGVybGluZU9mZnNldAorICAgICAgICB8fCBtX3Jh
cmVJbmhlcml0ZWREYXRhLT50ZXh0VW5kZXJsaW5lUG9zaXRpb24gIT0gb3RoZXIubV9yYXJlSW5o
ZXJpdGVkRGF0YS0+dGV4dFVuZGVybGluZVBvc2l0aW9uKSB7CisgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIAogICAgIGlmIChoYXNPdXRsaW5lSW5WaXN1YWxPdmVyZmxvdygpICE9IG90aGVy
Lmhhc091dGxpbmVJblZpc3VhbE92ZXJmbG93KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvVGV4dERlY29yYXRpb25UaGlja25lc3MuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcy5oCmluZGV4IDk4MDcw
ZmMzMGFkNzkyZTk4YzllNTU4OWJkNjE3ODY2ZDliZDkxN2EuLjk2YjNiNGJlODY3NzBmZmEwZDQy
MTNmNTcwYjBjNDQ3MjMxZTMzZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcy5oCkBAIC03NSw2ICs3NSwxOCBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2xlbmd0aDsKICAgICB9CiAKKyAgICBmbG9hdCBy
ZXNvbHZlKGZsb2F0IGZvbnRTaXplLCBjb25zdCBGb250TWV0cmljcyYgbWV0cmljcykgY29uc3QK
KyAgICB7CisgICAgICAgIGlmIChpc0F1dG8oKSkgeworICAgICAgICAgICAgY29uc3QgZmxvYXQg
dGV4dERlY29yYXRpb25CYXNlRm9udFNpemUgPSAxNjsKKyAgICAgICAgICAgIHJldHVybiBmb250
U2l6ZSAvIHRleHREZWNvcmF0aW9uQmFzZUZvbnRTaXplOworICAgICAgICB9CisgICAgICAgIGlm
IChpc0Zyb21Gb250KCkpCisgICAgICAgICAgICByZXR1cm4gbWV0cmljcy51bmRlcmxpbmVUaGlj
a25lc3MoKTsKKyAgICAgICAgQVNTRVJUKGlzTGVuZ3RoKCkpOworICAgICAgICByZXR1cm4gbV9s
ZW5ndGg7CisgICAgfQorCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRleHREZWNvcmF0aW9u
VGhpY2tuZXNzJiBvdGhlcikgY29uc3QKICAgICB7CiAgICAgICAgIHN3aXRjaCAobV90eXBlKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcAppbmRleCA1ODc1
NDVhM2NkMjg3OTEyYTMzNGQzNjllNWQ4OTY0ZjQ2NmE4NTczLi4wMmRjOTEwNGY5ZWRiMWFlODE0
NTQxMjg0ZjAwZGE4NGJlY2IxYzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9J
bmxpbmVUZXh0Qm94U3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRl
eHRCb3hTdHlsZS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIAotaW50IGNvbXB1dGVVbmRlcmxpbmVPZmZzZXQoVGV4dFVuZGVybGluZVBvc2l0aW9uIHVu
ZGVybGluZVBvc2l0aW9uLCBjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MsIGNvbnN0IElu
bGluZVRleHRCb3gqIGlubGluZVRleHRCb3gsIGludCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcykK
K2ludCBjb21wdXRlVW5kZXJsaW5lT2Zmc2V0KFRleHRVbmRlcmxpbmVQb3NpdGlvbiB1bmRlcmxp
bmVQb3NpdGlvbiwgVGV4dFVuZGVybGluZU9mZnNldCB1bmRlcmxpbmVPZmZzZXQsIGNvbnN0IEZv
bnRNZXRyaWNzJiBmb250TWV0cmljcywgY29uc3QgSW5saW5lVGV4dEJveCogaW5saW5lVGV4dEJv
eCwgaW50IHRleHREZWNvcmF0aW9uVGhpY2tuZXNzKQogewogICAgIC8vIFRoaXMgcmVwcmVzZW50
cyB0aGUgZ2FwIGJldHdlZW4gdGhlIGJhc2VsaW5lIGFuZCB0aGUgY2xvc2VzdCBlZGdlIG9mIHRo
ZSB1bmRlcmxpbmUuCiAgICAgaW50IGdhcCA9IHN0ZDo6bWF4PGludD4oMSwgY2VpbGYodGV4dERl
Y29yYXRpb25UaGlja25lc3MgLyAyLjApKTsKQEAgLTQ4LDcgKzQ4LDcgQEAgaW50IGNvbXB1dGVV
bmRlcmxpbmVPZmZzZXQoVGV4dFVuZGVybGluZVBvc2l0aW9uIHVuZGVybGluZVBvc2l0aW9uLCBj
b25zdCBGb250TWUKICAgICAvLyBjYXNlLgogICAgIAogICAgIGF1dG8gcmVzb2x2ZWRVbmRlcmxp
bmVQb3NpdGlvbiA9IHVuZGVybGluZVBvc2l0aW9uOwotICAgIGlmIChyZXNvbHZlZFVuZGVybGlu
ZVBvc2l0aW9uID09IFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6QXV0bykgeworICAgIGlmIChyZXNv
bHZlZFVuZGVybGluZVBvc2l0aW9uID09IFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6QXV0byAmJiB1
bmRlcmxpbmVPZmZzZXQuaXNBdXRvKCkpIHsKICAgICAgICAgaWYgKGlubGluZVRleHRCb3gpCiAg
ICAgICAgICAgICByZXNvbHZlZFVuZGVybGluZVBvc2l0aW9uID0gaW5saW5lVGV4dEJveC0+cm9v
dCgpLmJhc2VsaW5lVHlwZSgpID09IElkZW9ncmFwaGljQmFzZWxpbmUgPyBUZXh0VW5kZXJsaW5l
UG9zaXRpb246OlVuZGVyIDogVGV4dFVuZGVybGluZVBvc2l0aW9uOjpBdXRvOwogICAgICAgICBl
bHNlCkBAIC01Nyw4ICs1NywxMSBAQCBpbnQgY29tcHV0ZVVuZGVybGluZU9mZnNldChUZXh0VW5k
ZXJsaW5lUG9zaXRpb24gdW5kZXJsaW5lUG9zaXRpb24sIGNvbnN0IEZvbnRNZQogICAgIAogICAg
IHN3aXRjaCAocmVzb2x2ZWRVbmRlcmxpbmVQb3NpdGlvbikgewogICAgIGNhc2UgVGV4dFVuZGVy
bGluZVBvc2l0aW9uOjpBdXRvOgorICAgICAgICBpZiAodW5kZXJsaW5lT2Zmc2V0LmlzQXV0bygp
KQorICAgICAgICAgICAgcmV0dXJuIGZvbnRNZXRyaWNzLmFzY2VudCgpICsgZ2FwOworICAgICAg
ICByZXR1cm4gZm9udE1ldHJpY3MuYXNjZW50KCkgKyB1bmRlcmxpbmVPZmZzZXQubGVuZ3RoVmFs
dWUoKTsKICAgICBjYXNlIFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6RnJvbUZvbnQ6Ci0gICAgICAg
IHJldHVybiBmb250TWV0cmljcy5hc2NlbnQoKSArIGdhcDsKKyAgICAgICAgcmV0dXJuIGZvbnRN
ZXRyaWNzLmFzY2VudCgpICsgZm9udE1ldHJpY3MudW5kZXJsaW5lUG9zaXRpb24oKSArIHVuZGVy
bGluZU9mZnNldC5sZW5ndGhPcigwKTsKICAgICBjYXNlIFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6
VW5kZXI6IHsKICAgICAgICAgQVNTRVJUKGlubGluZVRleHRCb3gpOwogICAgICAgICAvLyBQb3Np
dGlvbiB1bmRlcmxpbmUgcmVsYXRpdmUgdG8gdGhlIGJvdHRvbSBlZGdlIG9mIHRoZSBsb3dlc3Qg
ZWxlbWVudCdzIGNvbnRlbnQgYm94LgpAQCAtNzUsNyArNzgsNyBAQCBpbnQgY29tcHV0ZVVuZGVy
bGluZU9mZnNldChUZXh0VW5kZXJsaW5lUG9zaXRpb24gdW5kZXJsaW5lUG9zaXRpb24sIGNvbnN0
IEZvbnRNZQogICAgICAgICAgICAgcm9vdEJveC5tYXhMb2dpY2FsQm90dG9tRm9yVGV4dERlY29y
YXRpb25MaW5lKG9mZnNldCwgZGVjb3JhdGlvblJlbmRlcmVyLCBUZXh0RGVjb3JhdGlvbjo6VW5k
ZXJsaW5lKTsKICAgICAgICAgICAgIG9mZnNldCAtPSBpbmxpbmVUZXh0Qm94LT5sb2dpY2FsQm90
dG9tKCk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGlubGluZVRleHRCb3gtPmxvZ2ljYWxI
ZWlnaHQoKSArIGdhcCArIHN0ZDo6bWF4PGZsb2F0PihvZmZzZXQsIDApOworICAgICAgICByZXR1
cm4gaW5saW5lVGV4dEJveC0+bG9naWNhbEhlaWdodCgpICsgZ2FwICsgc3RkOjptYXg8ZmxvYXQ+
KG9mZnNldCwgMCkgKyB1bmRlcmxpbmVPZmZzZXQubGVuZ3RoT3IoMCk7CiAgICAgfQogICAgIH0K
IApAQCAtMTA1LDcgKzEwOCw3IEBAIEdseXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZsb3dGb3JEZWNv
cmF0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlLCBjb25zdCBJCiAgICAgaWYgKGRl
Y29yYXRpb24uaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gR2x5cGhPdmVyZmxvdygpOwogCi0g
ICAgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzID0gdGV4dERlY29yYXRpb25TdHJva2VUaGlja25lc3Mo
bGluZVN0eWxlLmNvbXB1dGVkRm9udFBpeGVsU2l6ZSgpKTsKKyAgICBmbG9hdCBzdHJva2VUaGlj
a25lc3MgPSBsaW5lU3R5bGUudGV4dERlY29yYXRpb25UaGlja25lc3MoKS5yZXNvbHZlKGxpbmVT
dHlsZS5jb21wdXRlZEZvbnRTaXplKCksIGxpbmVTdHlsZS5mb250TWV0cmljcygpKTsKICAgICBX
YXZ5U3Ryb2tlUGFyYW1ldGVycyB3YXZ5U3Ryb2tlUGFyYW1ldGVyczsKICAgICBmbG9hdCB3YXZ5
T2Zmc2V0ID0gMDsKICAgICAgICAgCkBAIC0xMjQsNyArMTI3LDcgQEAgR2x5cGhPdmVyZmxvdyB2
aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKGNvbnN0IFJlbmRlclN0eWxlJiBsaW5lU3R5bGUs
IGNvbnN0IEkKICAgICBpZiAoZGVjb3JhdGlvbiAmIFRleHREZWNvcmF0aW9uOjpVbmRlcmxpbmUp
IHsKICAgICAgICAgLy8gQ29tcGVuc2F0ZSBmb3IgdGhlIGludGVncmFsIGNlaWxpbmcgaW4gR3Jh
cGhpY3NDb250ZXh0Ojpjb21wdXRlTGluZUJvdW5kc0FuZEFudGlhbGlhc2luZ01vZGVGb3JUZXh0
KCkKICAgICAgICAgaW50IHVuZGVybGluZU9mZnNldCA9IDE7Ci0gICAgICAgIHVuZGVybGluZU9m
ZnNldCArPSBjb21wdXRlVW5kZXJsaW5lT2Zmc2V0KGxpbmVTdHlsZS50ZXh0VW5kZXJsaW5lUG9z
aXRpb24oKSwgbGluZVN0eWxlLmZvbnRNZXRyaWNzKCksIGlubGluZVRleHRCb3gsIHN0cm9rZVRo
aWNrbmVzcyk7CisgICAgICAgIHVuZGVybGluZU9mZnNldCArPSBjb21wdXRlVW5kZXJsaW5lT2Zm
c2V0KGxpbmVTdHlsZS50ZXh0VW5kZXJsaW5lUG9zaXRpb24oKSwgbGluZVN0eWxlLnRleHRVbmRl
cmxpbmVPZmZzZXQoKSwgbGluZVN0eWxlLmZvbnRNZXRyaWNzKCksIGlubGluZVRleHRCb3gsIGxp
bmVTdHlsZS5jb21wdXRlZEZvbnRTaXplKCkgLyAxNik7CiAgICAgICAgIGlmIChkZWNvcmF0aW9u
U3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZTo6V2F2eSkgewogICAgICAgICAgICAgZXh0ZW5k
SW50VG9GbG9hdChvdmVyZmxvd1Jlc3VsdC5ib3R0b20sIHVuZGVybGluZU9mZnNldCArIHdhdnlP
ZmZzZXQgKyB3YXZ5U3Ryb2tlUGFyYW1ldGVycy5jb250cm9sUG9pbnREaXN0YW5jZSArIHN0cm9r
ZVRoaWNrbmVzcyAtIGhlaWdodCk7CiAgICAgICAgICAgICBleHRlbmRJbnRUb0Zsb2F0KG92ZXJm
bG93UmVzdWx0LnRvcCwgLSh1bmRlcmxpbmVPZmZzZXQgKyB3YXZ5T2Zmc2V0IC0gd2F2eVN0cm9r
ZVBhcmFtZXRlcnMuY29udHJvbFBvaW50RGlzdGFuY2UgLSBzdHJva2VUaGlja25lc3MpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5oIGIvU291
cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmgKaW5kZXggY2IwNmZkMTA4YTNm
M2VjYzRmMTRmNzBlZGMzNDM5ODMwZGM2Y2QzNy4uODczMGIyY2I1NDQyOWJiYTE2YmEzNTAxOWUw
OWVjZGY5MGQ1NGJhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4
dEJveFN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxl
LmgKQEAgLTMzLDEyICszMyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIElubGluZVRl
eHRCb3g7CiBjbGFzcyBSZW5kZXJTdHlsZTsKIAotaW5saW5lIGZsb2F0IHRleHREZWNvcmF0aW9u
U3Ryb2tlVGhpY2tuZXNzKGZsb2F0IGZvbnRTaXplKQotewotICAgIGNvbnN0IGZsb2F0IHRleHRE
ZWNvcmF0aW9uQmFzZUZvbnRTaXplID0gMTY7Ci0gICAgcmV0dXJuIGZvbnRTaXplIC8gdGV4dERl
Y29yYXRpb25CYXNlRm9udFNpemU7Ci19Ci0KIGlubGluZSBmbG9hdCB3YXZ5T2Zmc2V0RnJvbURl
Y29yYXRpb24oKQogewogICAgIHJldHVybiAxOwpAQCAtNTcsNiArNTEsNiBAQCBzdHJ1Y3QgV2F2
eVN0cm9rZVBhcmFtZXRlcnMgewogfTsKIFdhdnlTdHJva2VQYXJhbWV0ZXJzIGdldFdhdnlTdHJv
a2VQYXJhbWV0ZXJzKGZsb2F0IGZvbnRTaXplKTsKIEdseXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZs
b3dGb3JEZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSYgbGluZVN0eWxlLCBjb25zdCBJbmxp
bmVUZXh0Qm94Kik7Ci1pbnQgY29tcHV0ZVVuZGVybGluZU9mZnNldChUZXh0VW5kZXJsaW5lUG9z
aXRpb24sIGNvbnN0IEZvbnRNZXRyaWNzJiwgY29uc3QgSW5saW5lVGV4dEJveCosIGludCB0ZXh0
RGVjb3JhdGlvblRoaWNrbmVzcyk7CitpbnQgY29tcHV0ZVVuZGVybGluZU9mZnNldChUZXh0VW5k
ZXJsaW5lUG9zaXRpb24sIFRleHRVbmRlcmxpbmVPZmZzZXQsIGNvbnN0IEZvbnRNZXRyaWNzJiwg
Y29uc3QgSW5saW5lVGV4dEJveCosIGludCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcyk7CiAgICAg
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzVmMTg4NWY5YjJhODM5YmRiNGJjYTYx
ZGY4ODY4MmEzZTMzYWVlOC4uOGM3MjdmZjEwM2RhYTBkNzRhZDU0MGE2ZWVkZmJiNjJiOGVkNWQ3
YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE4LTExLTA2ICBNeWxlcyBDLiBNYXhmaWVsZCAg
PG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IHRleHQtdW5kZXJsaW5l
LW9mZnNldCBhbmQgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwNzc0CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhbmltYXRpb25zL3RleHQtZGVjb3JhdGlv
bi10aGlja25lc3MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBhbmltYXRpb25zL3Rl
eHQtZGVjb3JhdGlvbi10aGlja25lc3MuaHRtbDogQWRkZWQuCisgICAgICAgICogYW5pbWF0aW9u
cy90ZXh0LXVuZGVybGluZS1vZmZzZXQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBh
bmltYXRpb25zL3RleHQtdW5kZXJsaW5lLW9mZnNldC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2NzczMtdGV4dC9jc3MzLXRleHQtZGVjb3JhdGlvbi90ZXh0LWRlY29yYXRpb24tb2Zmc2V0
LTItZXhwZWN0ZWQtbWlzbWF0Y2guaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MzLXRl
eHQvY3NzMy10ZXh0LWRlY29yYXRpb24vdGV4dC1kZWNvcmF0aW9uLW9mZnNldC0yLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvY3NzMy10ZXh0L2NzczMtdGV4dC1kZWNvcmF0aW9uL3RleHQt
ZGVjb3JhdGlvbi1vZmZzZXQtMy1leHBlY3RlZC1taXNtYXRjaC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2NzczMtdGV4dC9jc3MzLXRleHQtZGVjb3JhdGlvbi90ZXh0LWRlY29yYXRpb24t
b2Zmc2V0LTMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MzLXRleHQvY3NzMy10ZXh0
LWRlY29yYXRpb24vdGV4dC1kZWNvcmF0aW9uLW9mZnNldC1hdXRvLWxlbmd0aC1leHBlY3RlZC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NzczMtdGV4dC9jc3MzLXRleHQtZGVjb3JhdGlv
bi90ZXh0LWRlY29yYXRpb24tb2Zmc2V0LWF1dG8tbGVuZ3RoLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvY3NzMy10ZXh0L2NzczMtdGV4dC1kZWNvcmF0aW9uL3RleHQtZGVjb3JhdGlvbi1v
ZmZzZXQtYmFzZWxpbmUtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3Mz
LXRleHQvY3NzMy10ZXh0LWRlY29yYXRpb24vdGV4dC1kZWNvcmF0aW9uLW9mZnNldC1iYXNlbGlu
ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NzczMtdGV4dC9jc3MzLXRleHQtZGVjb3Jh
dGlvbi90ZXh0LWRlY29yYXRpb24tb2Zmc2V0LWV4cGVjdGVkLW1pc21hdGNoLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvY3NzMy10ZXh0L2NzczMtdGV4dC1kZWNvcmF0aW9uL3RleHQtZGVj
b3JhdGlvbi1vZmZzZXQtZnJvbS1mb250LWF1dG8tZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9jc3MzLXRleHQvY3NzMy10ZXh0LWRlY29yYXRpb24vdGV4dC1kZWNvcmF0aW9u
LW9mZnNldC1mcm9tLWZvbnQtYXV0by5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NzczMt
dGV4dC9jc3MzLXRleHQtZGVjb3JhdGlvbi90ZXh0LWRlY29yYXRpb24tb2Zmc2V0LWZyb20tZm9u
dC1sZW5ndGgtZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MzLXRleHQv
Y3NzMy10ZXh0LWRlY29yYXRpb24vdGV4dC1kZWNvcmF0aW9uLW9mZnNldC1mcm9tLWZvbnQtbGVu
Z3RoLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzMy10ZXh0L2NzczMtdGV4dC1kZWNv
cmF0aW9uL3RleHQtZGVjb3JhdGlvbi1vZmZzZXQtcmVwYWludC1leHBlY3RlZC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2NzczMtdGV4dC9jc3MzLXRleHQtZGVjb3JhdGlvbi90ZXh0LWRl
Y29yYXRpb24tb2Zmc2V0LXJlcGFpbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3Mz
LXRleHQvY3NzMy10ZXh0LWRlY29yYXRpb24vdGV4dC1kZWNvcmF0aW9uLW9mZnNldC11bmRlci1h
dXRvLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzMy10ZXh0L2NzczMt
dGV4dC1kZWNvcmF0aW9uL3RleHQtZGVjb3JhdGlvbi1vZmZzZXQtdW5kZXItYXV0by5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2NzczMtdGV4dC9jc3MzLXRleHQtZGVjb3JhdGlvbi90ZXh0
LWRlY29yYXRpb24tb2Zmc2V0LXVuZGVyLWxlbmd0aC1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2NzczMtdGV4dC9jc3MzLXRleHQtZGVjb3JhdGlvbi90ZXh0LWRlY29yYXRp
b24tb2Zmc2V0LXVuZGVyLWxlbmd0aC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NzczMt
dGV4dC9jc3MzLXRleHQtZGVjb3JhdGlvbi90ZXh0LWRlY29yYXRpb24tb2Zmc2V0Lmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvY3NzMy10ZXh0L2NzczMtdGV4dC1kZWNvcmF0aW9uL3RleHQt
ZGVjb3JhdGlvbi10aGlja25lc3MtbGVuZ3RoLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvY3NzMy10ZXh0L2NzczMtdGV4dC1kZWNvcmF0aW9uL3RleHQtZGVjb3JhdGlvbi10
aGlja25lc3MtbGVuZ3RoLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzMy10ZXh0L2Nz
czMtdGV4dC1kZWNvcmF0aW9uL3RleHQtZGVjb3JhdGlvbi10aGlja25lc3MtcmVwYWludC1leHBl
Y3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2NzczMtdGV4dC9jc3MzLXRleHQtZGVj
b3JhdGlvbi90ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzLXJlcGFpbnQuaHRtbDogQWRkZWQuCisK
IDIwMTgtMTEtMDUgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAg
ICAgICAgW2lPU10gU3dhdGNoIGFwcGVhcnMgc3F1aXNoZWQgYW5kIG9mZi1jZW50ZXIgaW4gaW5w
dXRzIG9mIHR5cGUgY29sb3IKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvdGV4
dC1kZWNvcmF0aW9uLXRoaWNrbmVzcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hbmltYXRp
b25zL3RleHQtZGVjb3JhdGlvbi10aGlja25lc3MtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5
NDRmMzQyOWE0ZjIwMmI5YzExNDg0ZmFlYzM1NjI1M2ZhNTRkYzgKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL3RleHQtZGVjb3JhdGlvbi10aGlja25lc3MtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorSGVsbG8KK1BBU1MgLSAidGV4dC1kZWNvcmF0aW9uLXRo
aWNrbmVzcyIgcHJvcGVydHkgZm9yICJib3giIGVsZW1lbnQgYXQgMC41cyBzYXcgc29tZXRoaW5n
IGNsb3NlIHRvOiAxNi42NjY2CitQQVNTIC0gInRleHQtZGVjb3JhdGlvbi10aGlja25lc3MiIHBy
b3BlcnR5IGZvciAiYm94IiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDMz
LjMzMzMKK1BBU1MgLSAidGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzcyIgcHJvcGVydHkgZm9yICJi
b3giIGVsZW1lbnQgYXQgMnMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogNjYuNjY2NgorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL3RleHQtZGVjb3JhdGlvbi10aGlja25lc3Mu
aHRtbCBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzcy5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjg3Mjk1ZTI4ZDhmM2I2YzQ1YWZiMDYxMjFmOTQ0ZmU3MzMyZGI4ZDUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL3RleHQtZGVjb3JhdGlv
bi10aGlja25lc3MuaHRtbApAQCAtMCwwICsxLDM3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2FuaW1hdGlvbi10ZXN0LWhlbHBlcnMu
anMiPjwvc2NyaXB0PgorPHN0eWxlPgorQGtleWZyYW1lcyBUaGVBbmltYXRpb24geworICAgIGZy
b20geworICAgICAgICB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiAwcHg7CisgICAgfQorICAg
IHRvIHsKKyAgICAgICAgdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzczogMTAwcHg7CisgICAgfQor
fQorCisjYm94IHsKKyAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKKyAgICBhbmltYXRp
b24tZHVyYXRpb246IDNzOworICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjsK
K30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImJveCI+SGVsbG88L2Rpdj4K
KzxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+Cis8c2NyaXB0PgordmFyIGV4cGVjdGVkVmFsdWVzID0g
WworICAgIC8vIFthbmltYXRpb24tbmFtZSwgdGltZSwgZWxlbWVudC1pZCwgcHJvcGVydHksIGV4
cGVjdGVkLXZhbHVlLCB0b2xlcmFuY2VdCisgICAgWyJUaGVBbmltYXRpb24iLCAwLjUsICJib3gi
LCAidGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzcyIsICIxNi42NjY2IiwgNV0sCisgICAgWyJUaGVB
bmltYXRpb24iLCAxLjAsICJib3giLCAidGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzcyIsICIzMy4z
MzMzIiwgNV0sCisgICAgWyJUaGVBbmltYXRpb24iLCAyLjAsICJib3giLCAidGV4dC1kZWNvcmF0
aW9uLXRoaWNrbmVzcyIsICI2Ni42NjY2IiwgNV0sCitdOworCitkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiYm94Iikuc3R5bGUuYW5pbWF0aW9uTmFtZSA9ICJUaGVBbmltYXRpb24iOworcnVuQW5p
bWF0aW9uVGVzdChleHBlY3RlZFZhbHVlcywgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5l
ZCwgZmFsc2UsIHVuZGVmaW5lZCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvdGV4dC11bmRlcmxpbmUtb2Zmc2V0LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvdGV4dC11bmRlcmxpbmUtb2Zmc2V0LWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40N2E1NzcyNmQ0OTIzZmU4ZDY1NmE4NzZmMjRhZmU5MzQ3
MTEzZWI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy90ZXh0LXVu
ZGVybGluZS1vZmZzZXQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorSGVsbG8KK1BBU1Mg
LSAidGV4dC11bmRlcmxpbmUtb2Zmc2V0IiBwcm9wZXJ0eSBmb3IgImJveCIgZWxlbWVudCBhdCAw
LjVzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDE2LjY2NjYKK1BBU1MgLSAidGV4dC11bmRlcmxp
bmUtb2Zmc2V0IiBwcm9wZXJ0eSBmb3IgImJveCIgZWxlbWVudCBhdCAxcyBzYXcgc29tZXRoaW5n
IGNsb3NlIHRvOiAzMy4zMzMzCitQQVNTIC0gInRleHQtdW5kZXJsaW5lLW9mZnNldCIgcHJvcGVy
dHkgZm9yICJib3giIGVsZW1lbnQgYXQgMnMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogNjYuNjY2
NgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL3RleHQtdW5kZXJsaW5lLW9m
ZnNldC5odG1sIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy90ZXh0LXVuZGVybGluZS1vZmZzZXQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44ODIzMjFiYzBhMDgyYmY2NGZhNWJiNjdhOTExMWZhNTQ5OTgyMzM2
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy90ZXh0LXVuZGVybGlu
ZS1vZmZzZXQuaHRtbApAQCAtMCwwICsxLDM3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2FuaW1hdGlvbi10ZXN0LWhlbHBlcnMuanMi
Pjwvc2NyaXB0PgorPHN0eWxlPgorQGtleWZyYW1lcyBUaGVBbmltYXRpb24geworICAgIGZyb20g
eworICAgICAgICB0ZXh0LXVuZGVybGluZS1vZmZzZXQ6IDBweDsKKyAgICB9CisgICAgdG8gewor
ICAgICAgICB0ZXh0LXVuZGVybGluZS1vZmZzZXQ6IDEwMHB4OworICAgIH0KK30KKworI2JveCB7
CisgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7CisgICAgYW5pbWF0aW9uLWR1cmF0aW9u
OiAzczsKKyAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7Cit9Cis8L3N0eWxl
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJib3giPkhlbGxvPC9kaXY+Cis8ZGl2IGlkPSJy
ZXN1bHQiPjwvZGl2PgorPHNjcmlwdD4KK3ZhciBleHBlY3RlZFZhbHVlcyA9IFsKKyAgICAvLyBb
YW5pbWF0aW9uLW5hbWUsIHRpbWUsIGVsZW1lbnQtaWQsIHByb3BlcnR5LCBleHBlY3RlZC12YWx1
ZSwgdG9sZXJhbmNlXQorICAgIFsiVGhlQW5pbWF0aW9uIiwgMC41LCAiYm94IiwgInRleHQtdW5k
ZXJsaW5lLW9mZnNldCIsICIxNi42NjY2IiwgNV0sCisgICAgWyJUaGVBbmltYXRpb24iLCAxLjAs
ICJib3giLCAidGV4dC11bmRlcmxpbmUtb2Zmc2V0IiwgIjMzLjMzMzMiLCA1XSwKKyAgICBbIlRo
ZUFuaW1hdGlvbiIsIDIuMCwgImJveCIsICJ0ZXh0LXVuZGVybGluZS1vZmZzZXQiLCAiNjYuNjY2
NiIsIDVdLAorXTsKKworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJveCIpLnN0eWxlLmFuaW1h
dGlvbk5hbWUgPSAiVGhlQW5pbWF0aW9uIjsKK3J1bkFuaW1hdGlvblRlc3QoZXhwZWN0ZWRWYWx1
ZXMsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGZhbHNlLCB1bmRlZmluZWQpOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2NzczMtdGV4dC9jc3MzLXRleHQtZGVjb3JhdGlvbi90ZXh0LWRlY29yYXRpb24tb2Zmc2V0LTIt
ZXhwZWN0ZWQtbWlzbWF0Y2guaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzMy10ZXh0L2NzczMt
dGV4dC1kZWNvcmF0aW9uL3RleHQtZGVjb3JhdGlvbi1vZmZzZXQtMi1leHBlY3RlZC1taXNtYXRj
aC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmEyZGVhNDI1ZGM5OGIyMjk0NmNlNzVmM2IwNmY2YTM1YjgwNzY4
NTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NzczMtdGV4dC9jc3MzLXRl
eHQtZGVjb3JhdGlvbi90ZXh0LWRlY29yYXRpb24tb2Zmc2V0LTItZXhwZWN0ZWQtbWlzbWF0Y2gu
aHRtbApAQCAtMCwwICsxLDggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzwv
aGVhZD4KKzxib2R5PgorPGRpdiBzdHlsZT0iZm9udDogNDhweCAnVGltZXMnOyB0ZXh0LWRlY29y
YXRpb246IHVuZGVybGluZTsgLXdlYmtpdC10ZXh0LWRlY29yYXRpb24tc2tpcDogbm9uZTsgdGV4
dC11bmRlcmxpbmUtcG9zaXRpb246IHVuZGVyOyI+SGVsbG88L2Rpdj4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzMy10ZXh0L2NzczMtdGV4dC1kZWNv
cmF0aW9uL3RleHQtZGVjb3JhdGlvbi1vZmZzZXQtMi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9j
c3MzLXRleHQvY3NzMy10ZXh0LWRlY29yYXRpb24vdGV4dC1kZWNvcmF0aW9uLW9mZnNldC0yLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZjMyZmIyNTdjZmI4MmExZTA4NmE0OTk4OTM3MjE5Mjg0OGQxNzcwNgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzMy10ZXh0L2NzczMtdGV4dC1k
ZWNvcmF0aW9uL3RleHQtZGVjb3JhdGlvbi1vZmZzZXQtMi5odG1sCkBAIC0wLDAgKzEsOCBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IHN0
eWxlPSJmb250OiA0OHB4ICdUaW1lcyc7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyAtd2Vi
a2l0LXRleHQtZGVjb3JhdGlvbi1za2lwOiBub25lOyB0ZXh0LXVuZGVybGluZS1wb3NpdGlvbjog
YXV0bzsiPkhlbGxvPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2NzczMtdGV4dC9jc3MzLXRleHQtZGVjb3JhdGlvbi90ZXh0LWRlY29yYXRpb24t
b2Zmc2V0LTMtZXhwZWN0ZWQtbWlzbWF0Y2guaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzMy10
ZXh0L2NzczMtdGV4dC1kZWNvcmF0aW9uL3RleHQtZGVjb3JhdGlvbi1vZmZzZXQtMy1leHBlY3Rl
ZC1taXNtYXRjaC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhNTI0ZDgyMjFmOTEwYzMxNmJjNTVkN2M3NDM2
ZjVkMzRjYzFiMDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NzczMtdGV4
dC9jc3MzLXRleHQtZGVjb3JhdGlvbi90ZXh0LWRlY29yYXRpb24tb2Zmc2V0LTMtZXhwZWN0ZWQt
bWlzbWF0Y2guaHRtbApAQCAtMCwwICsxLDggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBzdHlsZT0iZm9udDogNDhweCAnVGltZXMnOyB0
ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgLXdlYmtpdC10ZXh0LWRlY29yYXRpb24tc2tpcDog
bm9uZTsgdGV4dC11bmRlcmxpbmUtcG9zaXRpb246IGZyb20tZm9udDsiPkhlbGxvPC9kaXY+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NzczMtdGV4dC9j
c3MzLXRleHQtZGVjb3JhdGlvbi90ZXh0LWRlY29yYXRpb24tb2Zmc2V0LTMuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvY3NzMy10ZXh0L2NzczMtdGV4dC1kZWNvcmF0aW9uL3RleHQtZGVjb3JhdGlv
bi1vZmZzZXQtMy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEyZGVhNDI1ZGM5OGIyMjk0NmNlNzVmM2IwNmY2
YTM1YjgwNzY4NTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NzczMtdGV4
dC9jc3MzLXRleHQtZGVjb3JhdGlvbi90ZXh0LWRlY29yYXRpb24tb2Zmc2V0LTMuaHRtbApAQCAt
MCwwICsxLDggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzwvaGVhZD4KKzxi
b2R5PgorPGRpdiBzdHlsZT0iZm9udDogNDhweCAnVGltZXMnOyB0ZXh0LWRlY29yYXRpb246IHVu
ZGVybGluZTsgLXdlYmtpdC10ZXh0LWRlY29yYXRpb24tc2tpcDogbm9uZTsgdGV4dC11bmRlcmxp
bmUtcG9zaXRpb246IHVuZGVyOyI+SGVsbG88L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzMy10ZXh0L2NzczMtdGV4dC1kZWNvcmF0aW9uL3Rl
eHQtZGVjb3JhdGlvbi1vZmZzZXQtYXV0by1sZW5ndGgtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvY3NzMy10ZXh0L2NzczMtdGV4dC1kZWNvcmF0aW9uL3RleHQtZGVjb3JhdGlvbi1v
ZmZzZXQtYXV0by1sZW5ndGgtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYzY4YjJkYThmMWVl
NGFlZmMwOTZiODYwMDI4YzIyN2VjZjVlYzJjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9jc3MzLXRleHQvY3NzMy10ZXh0LWRlY29yYXRpb24vdGV4dC1kZWNvcmF0aW9uLW9m
ZnNldC1hdXRvLWxlbmd0aC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTEgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzwvaGVhZD4KKzxib2R5PgorVGhpcyB0ZXN0IG1ha2Vz
IHN1cmUgdGhlIHVuZGVybGluZSBpcyBwbGFjZWQgaW4gdGhlIHJpZ2h0IHZlcnRpY2FsIHBsYWNl
LgorPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyI+Cis8ZGl2IHN0eWxlPSJmb250OiA0
OHB4ICdUaW1lcyc7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyAtd2Via2l0LXRleHQtZGVj
b3JhdGlvbi1za2lwOiBub25lOyB0ZXh0LXVuZGVybGluZS1wb3NpdGlvbjogYXV0bzsgdGV4dC11
bmRlcmxpbmUtb2Zmc2V0OiAwcHg7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMHB4OyB0b3A6
IDEwcHg7IGNvbG9yOiB0cmFuc3BhcmVudDsgLXdlYmtpdC10ZXh0LWRlY29yYXRpb24tY29sb3I6
IGJsYWNrOyI+SGVsbG88L2Rpdj4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MzLXRleHQvY3NzMy10ZXh0LWRlY29yYXRpb24vdGV4dC1k
ZWNvcmF0aW9uLW9mZnNldC1hdXRvLWxlbmd0aC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mz
LXRleHQvY3NzMy10ZXh0LWRlY29yYXRpb24vdGV4dC1kZWNvcmF0aW9uLW9mZnNldC1hdXRvLWxl
bmd0aC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2MjU5YmJjY2M4MDRjYzg5ZmYzOWVmYWUyMWZkMjNiYzdi
ZDkxYTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NzczMtdGV4dC9jc3Mz
LXRleHQtZGVjb3JhdGlvbi90ZXh0LWRlY29yYXRpb24tb2Zmc2V0LWF1dG8tbGVuZ3RoLmh0bWwK
QEAgLTAsMCArMSwxMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPC9oZWFk
PgorPGJvZHk+CitUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGUgdW5kZXJsaW5lIGlzIHBsYWNlZCBp
biB0aGUgcmlnaHQgdmVydGljYWwgcGxhY2UuCis8ZGl2IHN0eWxlPSJwb3NpdGlvbjogcmVsYXRp
dmU7Ij4KKzxkaXYgc3R5bGU9ImZvbnQ6IDQ4cHggJ1RpbWVzJzsgdGV4dC1kZWNvcmF0aW9uOiB1
bmRlcmxpbmU7IC13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLXNraXA6IG5vbmU7IHRleHQtdW5kZXJs
aW5lLXBvc2l0aW9uOiBhdXRvOyB0ZXh0LXVuZGVybGluZS1vZmZzZXQ6IDEwcHg7IHBvc2l0aW9u
OiBhYnNvbHV0ZTsgbGVmdDogMHB4OyB0b3A6IDBweDsgY29sb3I6IHRyYW5zcGFyZW50OyAtd2Vi
a2l0LXRleHQtZGVjb3JhdGlvbi1jb2xvcjogYmxhY2s7Ij5IZWxsbzwvZGl2PgorPC9kaXY+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NzczMtdGV4dC9j
c3MzLXRleHQtZGVjb3JhdGlvbi90ZXh0LWRlY29yYXRpb24tb2Zmc2V0LWJhc2VsaW5lLWV4cGVj
dGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2NzczMtdGV4dC9jc3MzLXRleHQtZGVjb3JhdGlv
bi90ZXh0LWRlY29yYXRpb24tb2Zmc2V0LWJhc2VsaW5lLWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNWUzYjA1YzY0NGI1Zjk4ZWUzOTljMWQzMDJjNTczYzQ5ZWY4OWU1OQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzMy10ZXh0L2NzczMtdGV4dC1kZWNvcmF0aW9uL3Rl
eHQtZGVjb3JhdGlvbi1vZmZzZXQtYmFzZWxpbmUtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEz
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8L2hlYWQ+Cis8Ym9keT4KK1Ro
aXMgdGVzdCBtYWtlcyBzdXJlIHRoZSB1bmRlcmxpbmUgaXMgcGxhY2VkIGluIHRoZSByaWdodCB2
ZXJ0aWNhbCBwbGFjZS4KKzxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsiPgorPGRpdiBz
dHlsZT0iZm9udDogNDhweCAnVGltZXMnOyI+SGVsbG88ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxp
bmUtYmxvY2s7IHdpZHRoOiAxcHg7IGhlaWdodDogNjBweDsiPjwvZGl2PjwvZGl2PgorPGRpdiBz
dHlsZT0icG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAxMDBweDsgdG9wOiAwcHg7IHdpZHRoOiAz
MDBweDsgaGVpZ2h0OiAxMDBweDsgYmFja2dyb3VuZDogYmxhY2s7Ij48L2Rpdj4KKzxkaXYgc3R5
bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMHB4OyB0b3A6IDYwcHg7IHdpZHRoOiAzMDBw
eDsgaGVpZ2h0OiAzcHg7IGJhY2tncm91bmQ6IGJsYWNrOyI+PC9kaXY+Cis8L2Rpdj4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzMy10ZXh0L2NzczMt
dGV4dC1kZWNvcmF0aW9uL3RleHQtZGVjb3JhdGlvbi1vZmZzZXQtYmFzZWxpbmUuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvY3NzMy10ZXh0L2NzczMtdGV4dC1kZWNvcmF0aW9uL3RleHQtZGVjb3Jh
dGlvbi1vZmZzZXQtYmFzZWxpbmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZDJiOTMzYjk4Zjk4NTU1MTA1
MWNiYTA4MTk4NGFkMDU1OGM2MmYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9jc3MzLXRleHQvY3NzMy10ZXh0LWRlY29yYXRpb24vdGV4dC1kZWNvcmF0aW9uLW9mZnNldC1i
YXNlbGluZS5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzwvaGVhZD4KKzxib2R5PgorVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhlIHVuZGVybGlu
ZSBpcyBwbGFjZWQgaW4gdGhlIHJpZ2h0IHZlcnRpY2FsIHBsYWNlLgorPGRpdiBzdHlsZT0icG9z
aXRpb246IHJlbGF0aXZlOyI+Cis8ZGl2IHN0eWxlPSJmb250OiA0OHB4ICdUaW1lcyc7IHRleHQt
ZGVjb3JhdGlvbjogdW5kZXJsaW5lOyAtd2Via2l0LXRleHQtZGVjb3JhdGlvbi1za2lwOiBub25l
OyB0ZXh0LXVuZGVybGluZS1wb3NpdGlvbjogYXV0bzsgdGV4dC11bmRlcmxpbmUtb2Zmc2V0OiAw
cHg7Ij5IZWxsbzxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgd2lkdGg6IDFweDsg
aGVpZ2h0OiA2MHB4OyI+PC9kaXY+PC9kaXY+Cis8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1
dGU7IGxlZnQ6IDEwMHB4OyB0b3A6IDBweDsgd2lkdGg6IDMwMHB4OyBoZWlnaHQ6IDEwMHB4OyBi
YWNrZ3JvdW5kOiBibGFjazsiPjwvZGl2PgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NzczMtdGV4dC9jc3MzLXRleHQtZGVjb3JhdGlvbi90
ZXh0LWRlY29yYXRpb24tb2Zmc2V0LWV4cGVjdGVkLW1pc21hdGNoLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2NzczMtdGV4dC9jc3MzLXRleHQtZGVjb3JhdGlvbi90ZXh0LWRlY29yYXRpb24tb2Zm
c2V0LWV4cGVjdGVkLW1pc21hdGNoLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmE1MjRkODIyMWY5MTBjMzE2
YmM1NWQ3Yzc0MzZmNWQzNGNjMWIwMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvY3NzMy10ZXh0L2NzczMtdGV4dC1kZWNvcmF0aW9uL3RleHQtZGVjb3JhdGlvbi1vZmZzZXQt
ZXhwZWN0ZWQtbWlzbWF0Y2guaHRtbApAQCAtMCwwICsxLDggQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBzdHlsZT0iZm9udDogNDhweCAn
VGltZXMnOyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgLXdlYmtpdC10ZXh0LWRlY29yYXRp
b24tc2tpcDogbm9uZTsgdGV4dC11bmRlcmxpbmUtcG9zaXRpb246IGZyb20tZm9udDsiPkhlbGxv
PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nz
czMtdGV4dC9jc3MzLXRleHQtZGVjb3JhdGlvbi90ZXh0LWRlY29yYXRpb24tb2Zmc2V0LWZyb20t
Zm9udC1hdXRvLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2NzczMtdGV4dC9jc3Mz
LXRleHQtZGVjb3JhdGlvbi90ZXh0LWRlY29yYXRpb24tb2Zmc2V0LWZyb20tZm9udC1hdXRvLWV4
cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDc1NjhkMWJkMjE2OGY0NzUyOWVlMzEwMzY1NWM3ZGNm
MzY1ZjlmYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzMy10ZXh0L2Nz
czMtdGV4dC1kZWNvcmF0aW9uL3RleHQtZGVjb3JhdGlvbi1vZmZzZXQtZnJvbS1mb250LWF1dG8t
ZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDExIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8L2hlYWQ+Cis8Ym9keT4KK1RoaXMgdGVzdCBtYWtlcyBzdXJlIHRoZSB1bmRlcmxp
bmUgaXMgcGxhY2VkIGluIHRoZSByaWdodCB2ZXJ0aWNhbCBwbGFjZS4KKzxkaXYgc3R5bGU9InBv
c2l0aW9uOiByZWxhdGl2ZTsiPgorPGRpdiBzdHlsZT0iZm9udDogNDhweCAnVGltZXMnOyB0ZXh0
LWRlY29yYXRpb246IHVuZGVybGluZTsgLXdlYmtpdC10ZXh0LWRlY29yYXRpb24tc2tpcDogbm9u
ZTsgdGV4dC11bmRlcmxpbmUtcG9zaXRpb246IGZyb20tZm9udDsgdGV4dC11bmRlcmxpbmUtb2Zm
c2V0OiAwcHg7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMHB4OyB0b3A6IDBweDsgY29sb3I6
IHRyYW5zcGFyZW50OyAtd2Via2l0LXRleHQtZGVjb3JhdGlvbi1jb2xvcjogYmxhY2s7Ij5IZWxs
bzwvZGl2PgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2NzczMtdGV4dC9jc3MzLXRleHQtZGVjb3JhdGlvbi90ZXh0LWRlY29yYXRpb24tb2Zm
c2V0LWZyb20tZm9udC1hdXRvLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2NzczMtdGV4dC9jc3Mz
LXRleHQtZGVjb3JhdGlvbi90ZXh0LWRlY29yYXRpb24tb2Zmc2V0LWZyb20tZm9udC1hdXRvLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZGE2MDY1MDJlZTQ4NGQ3MTQ2ZDU4N2IwMzNiMmE1MWQ0MzAyNjQ2ZAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzMy10ZXh0L2NzczMtdGV4dC1k
ZWNvcmF0aW9uL3RleHQtZGVjb3JhdGlvbi1vZmZzZXQtZnJvbS1mb250LWF1dG8uaHRtbApAQCAt
MCwwICsxLDExIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8L2hlYWQ+Cis8
Ym9keT4KK1RoaXMgdGVzdCBtYWtlcyBzdXJlIHRoZSB1bmRlcmxpbmUgaXMgcGxhY2VkIGluIHRo
ZSByaWdodCB2ZXJ0aWNhbCBwbGFjZS4KKzxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsi
PgorPGRpdiBzdHlsZT0iZm9udDogNDhweCAnVGltZXMnOyB0ZXh0LWRlY29yYXRpb246IHVuZGVy
bGluZTsgLXdlYmtpdC10ZXh0LWRlY29yYXRpb24tc2tpcDogbm9uZTsgdGV4dC11bmRlcmxpbmUt
cG9zaXRpb246IGZyb20tZm9udDsgdGV4dC11bmRlcmxpbmUtb2Zmc2V0OiBhdXRvOyBwb3NpdGlv
bjogYWJzb2x1dGU7IGxlZnQ6IDBweDsgdG9wOiAwcHg7IGNvbG9yOiB0cmFuc3BhcmVudDsgLXdl
YmtpdC10ZXh0LWRlY29yYXRpb24tY29sb3I6IGJsYWNrOyI+SGVsbG88L2Rpdj4KKzwvZGl2Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MzLXRleHQv
Y3NzMy10ZXh0LWRlY29yYXRpb24vdGV4dC1kZWNvcmF0aW9uLW9mZnNldC1mcm9tLWZvbnQtbGVu
Z3RoLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2NzczMtdGV4dC9jc3MzLXRleHQt
ZGVjb3JhdGlvbi90ZXh0LWRlY29yYXRpb24tb2Zmc2V0LWZyb20tZm9udC1sZW5ndGgtZXhwZWN0
ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40YzQ1NjFmOWIzMTljZWY1YjA1NzUxYzM1MTljNjljNTUxOWUx
ZmU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MzLXRleHQvY3NzMy10
ZXh0LWRlY29yYXRpb24vdGV4dC1kZWNvcmF0aW9uLW9mZnNldC1mcm9tLWZvbnQtbGVuZ3RoLWV4
cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwxMSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPC9oZWFkPgorPGJvZHk+CitUaGlzIHRlc3QgbWFrZXMgc3VyZSB0aGUgdW5kZXJsaW5l
IGlzIHBsYWNlZCBpbiB0aGUgcmlnaHQgdmVydGljYWwgcGxhY2UuCis8ZGl2IHN0eWxlPSJwb3Np
dGlvbjogcmVsYXRpdmU7Ij4KKzxkaXYgc3R5bGU9ImZvbnQ6IDQ4cHggJ1RpbWVzJzsgdGV4dC1k
ZWNvcmF0aW9uOiB1bmRlcmxpbmU7IC13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLXNraXA6IG5vbmU7
IHRleHQtdW5kZXJsaW5lLXBvc2l0aW9uOiBmcm9tLWZvbnQ7IHRleHQtdW5kZXJsaW5lLW9mZnNl
dDogMHB4OyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDBweDsgdG9wOiAxMHB4OyBjb2xvcjog
dHJhbnNwYXJlbnQ7IC13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBibGFjazsiPkhlbGxv
PC9kaXY+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvY3NzMy10ZXh0L2NzczMtdGV4dC1kZWNvcmF0aW9uL3RleHQtZGVjb3JhdGlvbi1vZmZz
ZXQtZnJvbS1mb250LWxlbmd0aC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MzLXRleHQvY3Nz
My10ZXh0LWRlY29yYXRpb24vdGV4dC1kZWNvcmF0aW9uLW9mZnNldC1mcm9tLWZvbnQtbGVuZ3Ro
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZmYxYjI2YTQ3YjczMDZmNmRmYmVmODI4MTY1ZWM2NmViMjhjZjQ3
NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzMy10ZXh0L2NzczMtdGV4
dC1kZWNvcmF0aW9uL3RleHQtZGVjb3JhdGlvbi1vZmZzZXQtZnJvbS1mb250LWxlbmd0aC5odG1s
CkBAIC0wLDAgKzEsMTEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzwvaGVh
ZD4KKzxib2R5PgorVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhlIHVuZGVybGluZSBpcyBwbGFjZWQg
aW4gdGhlIHJpZ2h0IHZlcnRpY2FsIHBsYWNlLgorPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0
aXZlOyI+Cis8ZGl2IHN0eWxlPSJmb250OiA0OHB4ICdUaW1lcyc7IHRleHQtZGVjb3JhdGlvbjog
dW5kZXJsaW5lOyAtd2Via2l0LXRleHQtZGVjb3JhdGlvbi1za2lwOiBub25lOyB0ZXh0LXVuZGVy
bGluZS1wb3NpdGlvbjogZnJvbS1mb250OyB0ZXh0LXVuZGVybGluZS1vZmZzZXQ6IDEwcHg7IHBv
c2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMHB4OyB0b3A6IDBweDsgY29sb3I6IHRyYW5zcGFyZW50
OyAtd2Via2l0LXRleHQtZGVjb3JhdGlvbi1jb2xvcjogYmxhY2s7Ij5IZWxsbzwvZGl2PgorPC9k
aXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NzczMt
dGV4dC9jc3MzLXRleHQtZGVjb3JhdGlvbi90ZXh0LWRlY29yYXRpb24tb2Zmc2V0LXJlcGFpbnQt
ZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzMy10ZXh0L2NzczMtdGV4dC1kZWNv
cmF0aW9uL3RleHQtZGVjb3JhdGlvbi1vZmZzZXQtcmVwYWludC1leHBlY3RlZC5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjAxOTgwOWZkZTQwYmFjYjRmYWEzZGU1NDE1NmJhYTZkYWY3MWI1MmQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NzczMtdGV4dC9jc3MzLXRleHQtZGVjb3JhdGlv
bi90ZXh0LWRlY29yYXRpb24tb2Zmc2V0LXJlcGFpbnQtZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsx
LDggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzwvaGVhZD4KKzxib2R5Pgor
VGhpcyB0ZXN0IG1ha2VzIHN1cmUgcmVwYWludCByZWN0cyBhcmUgY29ycmVjdCBmb3IgcG9zaXRp
b25lZCB1bmRlcmxpbmVzLiBUaGUgdGVzdCBwYXNzZXMgaWYgeW91IGRvbid0IHNlZSBhbnl0aGlu
ZyBiZWxvdy4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
Y3NzMy10ZXh0L2NzczMtdGV4dC1kZWNvcmF0aW9uL3RleHQtZGVjb3JhdGlvbi1vZmZzZXQtcmVw
YWludC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MzLXRleHQvY3NzMy10ZXh0LWRlY29yYXRp
b24vdGV4dC1kZWNvcmF0aW9uLW9mZnNldC1yZXBhaW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDZjMzgz
Mjg1MTA5NWUxNjlhZWVkZWNlMTM5YjNjYWYzNzMzOTRmNQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvY3NzMy10ZXh0L2NzczMtdGV4dC1kZWNvcmF0aW9uL3RleHQtZGVjb3Jh
dGlvbi1vZmZzZXQtcmVwYWludC5odG1sCkBAIC0wLDAgKzEsMTkgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzwvaGVhZD4KKzxib2R5PgorVGhpcyB0ZXN0IG1ha2VzIHN1cmUg
cmVwYWludCByZWN0cyBhcmUgY29ycmVjdCBmb3IgcG9zaXRpb25lZCB1bmRlcmxpbmVzLiBUaGUg
dGVzdCBwYXNzZXMgaWYgeW91IGRvbid0IHNlZSBhbnl0aGluZyBiZWxvdy4KKzxkaXYgaWQ9InRh
cmdldCIgc3R5bGU9ImZvbnQ6IDQ4cHggJ1RpbWVzJzsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxp
bmU7IHRleHQtdW5kZXJsaW5lLW9mZnNldDogMTAwcHg7Ij5IZWxsbzwvZGl2PgorPHNjcmlwdD4K
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
K3dpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgIGxldCB0YXJnZXQgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0Iik7CisgICAgdGFyZ2V0LnBhcmVudEVsZW1lbnQucmVt
b3ZlQ2hpbGQodGFyZ2V0KTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOworfSwgMjApOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NzczMtdGV4dC9jc3MzLXRleHQtZGVj
b3JhdGlvbi90ZXh0LWRlY29yYXRpb24tb2Zmc2V0LXVuZGVyLWF1dG8tZXhwZWN0ZWQuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvY3NzMy10ZXh0L2NzczMtdGV4dC1kZWNvcmF0aW9uL3RleHQtZGVj
b3JhdGlvbi1vZmZzZXQtdW5kZXItYXV0by1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc3OWQ3
ZmZiNmVhZWEzYjFmNjExYzZkMTU0ZDBkMjkzNjQ2MTQ5ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2NzczMtdGV4dC9jc3MzLXRleHQtZGVjb3JhdGlvbi90ZXh0LWRlY29y
YXRpb24tb2Zmc2V0LXVuZGVyLWF1dG8tZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDExIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8L2hlYWQ+Cis8Ym9keT4KK1RoaXMgdGVz
dCBtYWtlcyBzdXJlIHRoZSB1bmRlcmxpbmUgaXMgcGxhY2VkIGluIHRoZSByaWdodCB2ZXJ0aWNh
bCBwbGFjZS4KKzxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsiPgorPGRpdiBzdHlsZT0i
Zm9udDogNDhweCAnVGltZXMnOyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgLXdlYmtpdC10
ZXh0LWRlY29yYXRpb24tc2tpcDogbm9uZTsgdGV4dC11bmRlcmxpbmUtcG9zaXRpb246IHVuZGVy
OyB0ZXh0LXVuZGVybGluZS1vZmZzZXQ6IDBweDsgcG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAw
cHg7IHRvcDogMHB4OyBjb2xvcjogdHJhbnNwYXJlbnQ7IC13ZWJraXQtdGV4dC1kZWNvcmF0aW9u
LWNvbG9yOiBibGFjazsiPkhlbGxvPC9kaXY+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzMy10ZXh0L2NzczMtdGV4dC1kZWNvcmF0aW9u
L3RleHQtZGVjb3JhdGlvbi1vZmZzZXQtdW5kZXItYXV0by5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9jc3MzLXRleHQvY3NzMy10ZXh0LWRlY29yYXRpb24vdGV4dC1kZWNvcmF0aW9uLW9mZnNldC11
bmRlci1hdXRvLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODkyM2ZiNDlmNjkyNWIyMDQ3NWY4NTZhOTFhOTAy
MTViNTg4NzJkNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzMy10ZXh0
L2NzczMtdGV4dC1kZWNvcmF0aW9uL3RleHQtZGVjb3JhdGlvbi1vZmZzZXQtdW5kZXItYXV0by5o
dG1sCkBAIC0wLDAgKzEsMTEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzwv
aGVhZD4KKzxib2R5PgorVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhlIHVuZGVybGluZSBpcyBwbGFj
ZWQgaW4gdGhlIHJpZ2h0IHZlcnRpY2FsIHBsYWNlLgorPGRpdiBzdHlsZT0icG9zaXRpb246IHJl
bGF0aXZlOyI+Cis8ZGl2IHN0eWxlPSJmb250OiA0OHB4ICdUaW1lcyc7IHRleHQtZGVjb3JhdGlv
bjogdW5kZXJsaW5lOyAtd2Via2l0LXRleHQtZGVjb3JhdGlvbi1za2lwOiBub25lOyB0ZXh0LXVu
ZGVybGluZS1wb3NpdGlvbjogdW5kZXI7IHRleHQtdW5kZXJsaW5lLW9mZnNldDogYXV0bzsgcG9z
aXRpb246IGFic29sdXRlOyBsZWZ0OiAwcHg7IHRvcDogMHB4OyBjb2xvcjogdHJhbnNwYXJlbnQ7
IC13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBibGFjazsiPkhlbGxvPC9kaXY+Cis8L2Rp
dj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzMy10
ZXh0L2NzczMtdGV4dC1kZWNvcmF0aW9uL3RleHQtZGVjb3JhdGlvbi1vZmZzZXQtdW5kZXItbGVu
Z3RoLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2NzczMtdGV4dC9jc3MzLXRleHQt
ZGVjb3JhdGlvbi90ZXh0LWRlY29yYXRpb24tb2Zmc2V0LXVuZGVyLWxlbmd0aC1leHBlY3RlZC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjcxMmYyYjUxODA3ZmQzNWIzYWViZmQ3Zjg4YWMxMjkyYjBhMDQzYmYK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2NzczMtdGV4dC9jc3MzLXRleHQt
ZGVjb3JhdGlvbi90ZXh0LWRlY29yYXRpb24tb2Zmc2V0LXVuZGVyLWxlbmd0aC1leHBlY3RlZC5o
dG1sCkBAIC0wLDAgKzEsMTEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzwv
aGVhZD4KKzxib2R5PgorVGhpcyB0ZXN0IG1ha2VzIHN1cmUgdGhlIHVuZGVybGluZSBpcyBwbGFj
ZWQgaW4gdGhlIHJpZ2h0IHZlcnRpY2FsIHBsYWNlLgorPGRpdiBzdHlsZT0icG9zaXRpb246IHJl
bGF0aXZlOyI+Cis8ZGl2IHN0eWxlPSJmb250OiA0OHB4ICdUaW1lcyc7IHRleHQtZGVjb3JhdGlv
bjogdW5kZXJsaW5lOyAtd2Via2l0LXRleHQtZGVjb3JhdGlvbi1za2lwOiBub25lOyB0ZXh0LXVu
ZGVybGluZS1wb3NpdGlvbjogdW5kZXI7IHRleHQtdW5kZXJsaW5lLW9mZnNldDogMHB4OyBwb3Np
dGlvbjogYWJzb2x1dGU7IGxlZnQ6IDBweDsgdG9wOiAxMHB4OyBjb2xvcjogdHJhbnNwYXJlbnQ7
IC13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLWNvbG9yOiBibGFjazsiPkhlbGxvPC9kaXY+Cis8L2Rp
dj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzMy10
ZXh0L2NzczMtdGV4dC1kZWNvcmF0aW9uL3RleHQtZGVjb3JhdGlvbi1vZmZzZXQtdW5kZXItbGVu
Z3RoLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2NzczMtdGV4dC9jc3MzLXRleHQtZGVjb3JhdGlv
bi90ZXh0LWRlY29yYXRpb24tb2Zmc2V0LXVuZGVyLWxlbmd0aC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNk
ZDZiYWNhMjU5YThhNDMwMGQ0YjA3MzQ2NzkyYTAxNjY5NzgwNjkKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2NzczMtdGV4dC9jc3MzLXRleHQtZGVjb3JhdGlvbi90ZXh0LWRl
Y29yYXRpb24tb2Zmc2V0LXVuZGVyLWxlbmd0aC5odG1sCkBAIC0wLDAgKzEsMTEgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzwvaGVhZD4KKzxib2R5PgorVGhpcyB0ZXN0IG1h
a2VzIHN1cmUgdGhlIHVuZGVybGluZSBpcyBwbGFjZWQgaW4gdGhlIHJpZ2h0IHZlcnRpY2FsIHBs
YWNlLgorPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0aXZlOyI+Cis8ZGl2IHN0eWxlPSJmb250
OiA0OHB4ICdUaW1lcyc7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyAtd2Via2l0LXRleHQt
ZGVjb3JhdGlvbi1za2lwOiBub25lOyB0ZXh0LXVuZGVybGluZS1wb3NpdGlvbjogdW5kZXI7IHRl
eHQtdW5kZXJsaW5lLW9mZnNldDogMTBweDsgcG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAwcHg7
IHRvcDogMHB4OyBjb2xvcjogdHJhbnNwYXJlbnQ7IC13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLWNv
bG9yOiBibGFjazsiPkhlbGxvPC9kaXY+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzMy10ZXh0L2NzczMtdGV4dC1kZWNvcmF0aW9uL3Rl
eHQtZGVjb3JhdGlvbi1vZmZzZXQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzMy10ZXh0L2Nz
czMtdGV4dC1kZWNvcmF0aW9uL3RleHQtZGVjb3JhdGlvbi1vZmZzZXQuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mMzJmYjI1N2NmYjgyYTFlMDg2YTQ5OTg5MzcyMTkyODQ4ZDE3NzA2Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MzLXRleHQvY3NzMy10ZXh0LWRlY29yYXRpb24vdGV4
dC1kZWNvcmF0aW9uLW9mZnNldC5odG1sCkBAIC0wLDAgKzEsOCBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IHN0eWxlPSJmb250OiA0OHB4
ICdUaW1lcyc7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyAtd2Via2l0LXRleHQtZGVjb3Jh
dGlvbi1za2lwOiBub25lOyB0ZXh0LXVuZGVybGluZS1wb3NpdGlvbjogYXV0bzsiPkhlbGxvPC9k
aXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NzczMt
dGV4dC9jc3MzLXRleHQtZGVjb3JhdGlvbi90ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzLWxlbmd0
aC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MzLXRleHQvY3NzMy10ZXh0LWRl
Y29yYXRpb24vdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzcy1sZW5ndGgtZXhwZWN0ZWQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43YjQyNTAyY2I2ZTkzODcyNzY3NTMzMDBhZTc0MjExYzU0MDcwMDNjCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MzLXRleHQvY3NzMy10ZXh0LWRlY29y
YXRpb24vdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzcy1sZW5ndGgtZXhwZWN0ZWQuaHRtbApAQCAt
MCwwICsxLDEyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgc3R5bGU9InBvc2l0aW9uOiByZWxhdGl2ZTsiPgorPGRpdiBzdHlsZT0iZm9u
dDogNDhweCAnVGltZXMnOyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgdGV4dC1kZWNvcmF0
aW9uLXRoaWNrbmVzczogNDBweDsgLXdlYmtpdC10ZXh0LWRlY29yYXRpb24tc2tpcDogbm9uZTsg
dGV4dC11bmRlcmxpbmUtb2Zmc2V0OiAwcHg7Ij5IZWxsbzxkaXYgc3R5bGU9ImRpc3BsYXk6IGlu
bGluZS1ibG9jazsgd2lkdGg6IDFweDsgaGVpZ2h0OiA2MHB4OyI+PC9kaXY+PC9kaXY+Cis8ZGl2
IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDBweDsgdG9wOiA2MHB4OyB3aWR0aDog
MTAwcHg7IGhlaWdodDogNDBweDsgYmFja2dyb3VuZDogYmxhY2s7Ij48L2Rpdj4KKzxkaXYgc3R5
bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMTAwcHg7IHRvcDogMHB4OyB3aWR0aDogMTAw
cHg7IGhlaWdodDogMTAwcHg7IGJhY2tncm91bmQ6IGJsYWNrOyI+PC9kaXY+Cis8L2Rpdj4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzMy10ZXh0L2Nz
czMtdGV4dC1kZWNvcmF0aW9uL3RleHQtZGVjb3JhdGlvbi10aGlja25lc3MtbGVuZ3RoLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2NzczMtdGV4dC9jc3MzLXRleHQtZGVjb3JhdGlvbi90ZXh0LWRl
Y29yYXRpb24tdGhpY2tuZXNzLWxlbmd0aC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5NzNhM2EyZTRmYzA4
M2EwMjQ4OWJiNzFjZDZjNDAzN2YwNGExODMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2NzczMtdGV4dC9jc3MzLXRleHQtZGVjb3JhdGlvbi90ZXh0LWRlY29yYXRpb24tdGhp
Y2tuZXNzLWxlbmd0aC5odG1sCkBAIC0wLDAgKzEsMTEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBzdHlsZT0icG9zaXRpb246IHJlbGF0
aXZlOyI+Cis8ZGl2IHN0eWxlPSJmb250OiA0OHB4ICdUaW1lcyc7IHRleHQtZGVjb3JhdGlvbjog
dW5kZXJsaW5lOyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNzOiA0MHB4OyAtd2Via2l0LXRleHQt
ZGVjb3JhdGlvbi1za2lwOiBub25lOyB0ZXh0LXVuZGVybGluZS1vZmZzZXQ6IDBweDsiPkhlbGxv
PGRpdiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyB3aWR0aDogMXB4OyBoZWlnaHQ6IDYw
cHg7Ij48L2Rpdj48L2Rpdj4KKzxkaXYgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDog
MTAwcHg7IHRvcDogMHB4OyB3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7IGJhY2tncm91bmQ6
IGJsYWNrOyI+PC9kaXY+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvY3NzMy10ZXh0L2NzczMtdGV4dC1kZWNvcmF0aW9uL3RleHQtZGVjb3Jh
dGlvbi10aGlja25lc3MtcmVwYWludC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9j
c3MzLXRleHQvY3NzMy10ZXh0LWRlY29yYXRpb24vdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzcy1y
ZXBhaW50LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzI4YjcyNzc4NjNjODliOWU2NWM4ZmMx
NGE4OWVlZmE1OTllYWE1OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3Nz
My10ZXh0L2NzczMtdGV4dC1kZWNvcmF0aW9uL3RleHQtZGVjb3JhdGlvbi10aGlja25lc3MtcmVw
YWludC1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPC9oZWFkPgorPGJvZHk+CitUaGlzIHRlc3QgbWFrZXMgc3VyZSByZXBhaW50
IHJlY3RzIGFyZSBjb3JyZWN0IGZvciB0aGljayB1bmRlcmxpbmVzLiBUaGUgdGVzdCBwYXNzZXMg
aWYgeW91IGRvbid0IHNlZSBhbnl0aGluZyBiZWxvdy4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzMy10ZXh0L2NzczMtdGV4dC1kZWNvcmF0aW9uL3Rl
eHQtZGVjb3JhdGlvbi10aGlja25lc3MtcmVwYWludC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9j
c3MzLXRleHQvY3NzMy10ZXh0LWRlY29yYXRpb24vdGV4dC1kZWNvcmF0aW9uLXRoaWNrbmVzcy1y
ZXBhaW50Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWYzZjZmODdmMWMyZTdlYzEyMzgzOThlZDg0ODBjMGU3
NjdhZGUwOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzMy10ZXh0L2Nz
czMtdGV4dC1kZWNvcmF0aW9uL3RleHQtZGVjb3JhdGlvbi10aGlja25lc3MtcmVwYWludC5odG1s
CkBAIC0wLDAgKzEsMTkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzwvaGVh
ZD4KKzxib2R5PgorVGhpcyB0ZXN0IG1ha2VzIHN1cmUgcmVwYWludCByZWN0cyBhcmUgY29ycmVj
dCBmb3IgdGhpY2sgdW5kZXJsaW5lcy4gVGhlIHRlc3QgcGFzc2VzIGlmIHlvdSBkb24ndCBzZWUg
YW55dGhpbmcgYmVsb3cuCis8ZGl2IGlkPSJ0YXJnZXQiIHN0eWxlPSJmb250OiA0OHB4ICdUaW1l
cyc7IHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB0ZXh0LWRlY29yYXRpb24tdGhpY2tuZXNz
OiAxMDBweDsiPkhlbGxvPC9kaXY+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOword2luZG93LnNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7CisgICAgbGV0IHRhcmdldCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0YXJnZXQi
KTsKKyAgICB0YXJnZXQucGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZCh0YXJnZXQpOworICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9
LCAyMCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="371165"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>