<?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>114230</bug_id>
          
          <creation_ts>2013-04-08 19:41:56 -0700</creation_ts>
          <short_desc>[Mac] user caption styles not applied to correct element</short_desc>
          <delta_ts>2013-04-09 15:50:55 -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>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>buildbot</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>jer.noble</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>871381</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-04-08 19:41:56 -0700</bug_when>
    <thetext>User caption style overrides are not applied to same element used for the &quot;cue&quot; pseudo element, which makes it impossible to override styles applied by the page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871385</commentid>
    <comment_count>1</comment_count>
      <attachid>196983</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-04-08 19:46:26 -0700</bug_when>
    <thetext>Created attachment 196983
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871388</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-04-08 19:48:12 -0700</bug_when>
    <thetext>&lt;rdar://problem/13201278&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871393</commentid>
    <comment_count>3</comment_count>
      <attachid>196983</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-04-08 20:04:54 -0700</bug_when>
    <thetext>Comment on attachment 196983
Proposed patch

Attachment 196983 did not pass qt-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17701007</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871395</commentid>
    <comment_count>4</comment_count>
      <attachid>196983</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-04-08 20:10:54 -0700</bug_when>
    <thetext>Comment on attachment 196983
Proposed patch

Attachment 196983 did not pass qt-wk2-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17606012</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871400</commentid>
    <comment_count>5</comment_count>
      <attachid>196983</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-08 20:24:13 -0700</bug_when>
    <thetext>Comment on attachment 196983
Proposed patch

Attachment 196983 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/17592022</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871402</commentid>
    <comment_count>6</comment_count>
      <attachid>196983</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-08 20:28:10 -0700</bug_when>
    <thetext>Comment on attachment 196983
Proposed patch

Attachment 196983 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/17684004</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871412</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-04-08 20:48:50 -0700</bug_when>
    <thetext>Attachment 196983 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/media/track/track-css-user-override-expected.txt&apos;, u&apos;LayoutTests/media/track/track-css-user-override.html&apos;, u&apos;LayoutTests/media/track/track-cue-container-rendering-position-expected.txt&apos;, u&apos;LayoutTests/media/track/track-cue-container-rendering-position.html&apos;, u&apos;LayoutTests/media/track/track-cue-rendering-expected.txt&apos;, u&apos;LayoutTests/media/track/track-cue-rendering.html&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/html/HTMLMediaElement.cpp&apos;, u&apos;Source/WebCore/html/shadow/MediaControlElements.cpp&apos;, u&apos;Source/WebCore/html/shadow/MediaControlElements.h&apos;, u&apos;Source/WebCore/html/shadow/MediaControls.cpp&apos;, u&apos;Source/WebCore/html/track/TextTrackCue.cpp&apos;, u&apos;Source/WebCore/html/track/TextTrackCue.h&apos;, u&apos;Source/WebCore/html/track/TextTrackCueGeneric.cpp&apos;, u&apos;Source/WebCore/html/track/TextTrackCueGeneric.h&apos;, u&apos;Source/WebCore/html/track/TextTrackList.cpp&apos;, u&apos;Source/WebCore/page/CaptionUserPreferences.cpp&apos;, u&apos;Source/WebCore/page/CaptionUserPreferences.h&apos;, u&apos;Source/WebCore/page/CaptionUserPreferencesMac.h&apos;, u&apos;Source/WebCore/page/CaptionUserPreferencesMac.mm&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp&apos;, u&apos;Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm&apos;, u&apos;Source/WebCore/testing/Internals.cpp&apos;, u&apos;Source/WebCore/testing/Internals.h&apos;, u&apos;Source/WebCore/testing/Internals.idl&apos;]&quot; exit_code: 1
Source/WebCore/page/CaptionUserPreferences.h:72:  The parameter name &quot;override&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/page/CaptionUserPreferences.cpp:244:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 2 in 26 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>871424</commentid>
    <comment_count>8</comment_count>
      <attachid>196991</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-04-08 21:33:53 -0700</bug_when>
    <thetext>Created attachment 196991
Updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>871955</commentid>
    <comment_count>9</comment_count>
      <attachid>196991</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2013-04-09 10:52:47 -0700</bug_when>
    <thetext>Comment on attachment 196991
Updated patch.

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

&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:1326
&gt; +    m_fontSize = lrintf(smallestDimension * (document()-&gt;page()-&gt;group().captionPreferences()-&gt;captionFontSizeScale(m_fontSizeIsImportant)));

This is kind of confusing, that m_fontSizeIsImportant is modified by captionFontSizeScale().  Perhaps captionFontSizeScaleAndImportance(), and breaking up this into two lines?:

float fontScale = document()-&gt;page()-&gt;group().captionPreferences()-&gt;captionFontSizeScale(m_fontSizeIsImportant);
m_fontSize = lrintf(smallestDimension * fontScale);

&gt; Source/WebCore/html/shadow/MediaControls.cpp:415
&gt;  void MediaControls::textTrackPreferencesChanged()
&gt;  {
&gt; +    closedCaptionTracksChanged();
&gt;      if (m_textDisplayContainer)
&gt;          m_textDisplayContainer-&gt;updateSizes(true);
&gt; -    closedCaptionTracksChanged();
&gt;  }

Could this be pulled into another bug? It seems unrelated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872067</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-04-09 14:01:12 -0700</bug_when>
    <thetext>https://trac.webkit.org/r148050</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872089</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-04-09 14:29:45 -0700</bug_when>
    <thetext>Plus https://trac.webkit.org/r148053 to fix the windows build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872109</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2013-04-09 15:50:55 -0700</bug_when>
    <thetext>And https://trac.webkit.org/r148058 for good measure.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196983</attachid>
            <date>2013-04-08 19:46:26 -0700</date>
            <delta_ts>2013-04-08 21:33:53 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>patch_4.txt</filename>
            <type>text/plain</type>
            <size>48143</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0Nzk3NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc0IEBACisyMDEzLTA0LTA4ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIHVzZXIgY2Fw
dGlvbiBzdHlsZXMgbm90IGFwcGxpZWQgdG8gY29ycmVjdCBlbGVtZW50CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTQyMzAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBtZWRpYS90cmFjay90cmFj
ay1jc3MtdXNlci1vdmVycmlkZS5odG1sCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlQWN0aXZl
VGV4dFRyYWNrQ3Vlcyk6IERyaXZlIGJ5IGNsZWFuLXVwIHNvIHdlIGRvbid0IGxvZyBleGNlc3Np
dmVseS4KKworICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6
Ok1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQpOiBJbml0aWFsaXplCisgICAg
ICAgICAgICBuZXcgbWVtYmVyIHZhcmlhYmxlcy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
dHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZURpc3BsYXkpOiBTZXQgY3VlIGZv
bnQgc2l6ZSB3aGVuIGl0IGlzCisgICAgICAgICAgICBpbnNlcnRlZCBpbnRvIHRoZSB0cmVlLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6
dXBkYXRlVGltZXJGaXJlZCk6IFVwZGF0ZSB0aGUgZm9udCBzaXplIG9mIAorICAgICAgICAgICAg
YWxsIGFjdGl2ZSBjdWVzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGV4dFRyYWNr
Q29udGFpbmVyRWxlbWVudDo6dXBkYXRlU2l6ZXMpOiBTZXQgc2l6ZS1yZWxhdGl2ZSBDU1MgcHJv
cGVydGllcworICAgICAgICAgICAgYWZ0ZXIgYSB0aW1lIGJlY2F1c2UgdGhpcyBjYW4gYmUgY2Fs
bGVkIGR1cmluZyBsYXlvdXQuCisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxl
bWVudHMuaDoKKworICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sczo6dGV4dFRyYWNrUHJlZmVyZW5jZXNDaGFuZ2Vk
KTogQ2FsbCBjbG9zZWRDYXB0aW9uVHJhY2tzQ2hhbmdlZCBiZWZvcmUgdXBkYXRlU2l6ZXMuCisK
KyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0VHJhY2tDdWU6OnNldEZvbnRTaXplKTogTmV3LCBzZXQgdGhlIGN1ZSdzIGZvbnQgc2l6
ZS4KKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oOgorCisgICAgICAgICogaHRt
bC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRU
cmFja0N1ZUdlbmVyaWNCb3hFbGVtZW50OjphcHBseUNTU1Byb3BlcnRpZXMpOiBTZXQgY3VlIHBy
b3BlcnRpZXMgb24gdGhlIGN1ZSBlbGVtZW50CisgICAgICAgICAgICBpbnN0ZWFkIG9mIG9uIHRo
ZSBjdWUgYm94IHRvIG1hdGNoIHdoYXQgd2UgZG8gZm9yIHRoZSAiY3VlIiBwc2V1ZG8gZWxlbWVu
dC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZUdlbmVyaWM6OnNldEZvbnRTaXplKTog
TmV3LCBzZXQgdGhlIGN1ZSdzIGZvbnQgc2l6ZS4KKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRU
cmFja0N1ZUdlbmVyaWMuaDoKKworICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5j
cHA6CisgICAgICAgIChUZXh0VHJhY2tMaXN0OjpyZW1vdmUpOiBEcml2ZS1ieSBjbGVhbnVwLCBk
b24ndCBBU1NFUlQgd2hlbiB0aGUgbWVkaWEgZWxlbWVudCBpcyBOVUxMLgorCisgICAgICAgICog
cGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhcHRp
b25Vc2VyUHJlZmVyZW5jZXM6OnNldENhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKTogTmV3LCBh
bGxvdyB1c2VyIENTUyBvdmVycmlkZXMKKyAgICAgICAgICAgIHRvIGJlIHRlc3RlZCBpbiBEUlQu
CisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp1cGRhdGVDYXB0aW9u
U3R5bGVTaGVldE92ZXJpZGUpOiBOZXcsIGdlbmVyYXRlIGEgdXNlciBzdHlsZQorICAgICAgICAg
ICAgc2hlZXQgb3ZlcnJpZGUuIE1vdmVkIGhlcmUgZnJvbSBDYXB0aW9uVXNlclByZWZlcmVuY2Vz
TWFjLgorICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oOgorCisgICAgICAg
ICogcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjLmg6CisgICAgICAgICogcGFnZS9DYXB0
aW9uVXNlclByZWZlcmVuY2VzTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQ
cmVmZXJlbmNlc01hYzo6Y2FwdGlvbnNCYWNrZ3JvdW5kQ1NTKTogRG9uJ3QgaWdub3JlIGJhY2tn
cm91bmQgY29sb3IgaW1wb3J0YW5jZS4KKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJl
ZmVyZW5jZXNNYWM6OmNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKTogSW1wbGVtZW50IGV2ZW4g
d2hlbiB3ZSBkb24ndCAKKyAgICAgICAgICAgIGhhdmUgdGhlIG1lZGlhIGFjY2Vzc2liaWxpdHkg
ZnJhbWV3b3JrIHNvIHRoaXMgY2FuIGJlIHRlc3RlZCBpbiBEUlQuIEFwcGx5IGFsbCBjdWUgcHJv
cGVydGllcworICAgICAgICAgICAgdG8gdGhlIGVsZW1lbnQgdXNlZCBmb3IgdGhlICJjdWUiIHBz
ZXVkbyBlbGVtZW50LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmRpZExvYWRpbmdQcm9ncmVzcyk6IERyaXZl
LWJ5IGNsZWFudXAsIHJlbW92ZSBsb2dnaW5nCisgICAgICAgICAgICBiZWNhdXNlIHRoaXMgbWV0
aG9kIGlzIGNhbGxlZCBzbyBmcmVxdWVudGx5IGFuZCB0aGUgbG9nZ2luZyBpcyBub3QgZXNwZWNp
YWxseSB1c2VmdWwuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb246OnVwZGF0ZVN0YXRlcyk6IE9ubHkgbG9nIHdoZW4gdGhlIHJlYWR5L25ldHdvcmsKKyAg
ICAgICAgICAgIHN0YXRlIGNoYW5nZXMgYmVjYXVzZSB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgc28g
ZnJlcXVlbnRseS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwbGF0Zm9ybUxheWVyKTog
RHJpdmUtYnkgY2xlYW51cCwgcmVtb3ZlIGxvZ2dpbmcKKyAgICAgICAgICAgIGJlY2F1c2UgdGhp
cyBtZXRob2QgaXMgY2FsbGVkIHNvIGZyZXF1ZW50bHkgYW5kIHRoZSBsb2dnaW5nIGlzIG5vdCBl
c3BlY2lhbGx5IHVzZWZ1bC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OnNldEN1cnJlbnRUcmFjayk6IE1ha2UgdGhlIGxvZ2dpbmcgbW9yZSB1
c2VmdWwuCisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnRlcm5hbHM6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGUpOiBSZXNldCBjYXB0aW9ucyBz
dHlsZSBzaGVldCBvdmVycmlkZS4KKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6Y2FwdGlv
bnNTdHlsZVNoZWV0T3ZlcnJpZGUpOiBOZXcsIHJldHVybiB0aGUgY2FwdGlvbnMgc3R5bGUgc2hl
ZXQgb3ZlcnJpZGUuCisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldENhcHRpb25zU3R5
bGVTaGVldE92ZXJyaWRlKTogTmV3LCBvdmVycmlkZSB0aGUgY2FwdGlvbnMgc3R5bGUgc2hlZXQg
b3ZlcnJpZGUuCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0
aW5nL0ludGVybmFscy5pZGw6CisKIDIwMTMtMDQtMDggIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFy
b2dhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRG8gbm90IGRlZmluZSBDQU5fVEhFTUVfVVJMX0lD
T04gZm9yIFBMQVRGT1JNKFdJTl9DQUlSTykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ3OTM4KQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA4MSw4ICsxMDgxLDYg
QEAgc3RhdGljIGJvb2wgZXZlbnRUaW1lQ3VlQ29tcGFyZShjb25zdCBzdAogCiB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMoZmxvYXQgbW92aWVUaW1lKQog
ewotICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUFjdGl2ZVRleHRUcmFj
a3MiKTsKLQogICAgIC8vIDQuOC4xMC44IFBsYXlpbmcgdGhlIG1lZGlhIHJlc291cmNlCiAKICAg
ICAvLyAgSWYgdGhlIGN1cnJlbnQgcGxheWJhY2sgcG9zaXRpb24gY2hhbmdlcyB3aGlsZSB0aGUg
c3RlcHMgYXJlIHJ1bm5pbmcsCkBAIC0xMDkxLDYgKzEwODksOCBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnVwZGF0ZUFjdGl2ZVRleHRUCiAgICAgaWYgKGlnbm9yZVRyYWNrRGlzcGxheVVwZGF0
ZVJlcXVlc3RzKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIExPRyhNZWRpYSwgIkhUTUxNZWRp
YUVsZW1lbnQ6OnVwZGF0ZUFjdGl2ZVRleHRUcmFja3MiKTsKKwogICAgIC8vIDEgLSBMZXQgY3Vy
cmVudCBjdWVzIGJlIGEgbGlzdCBvZiBjdWVzLCBpbml0aWFsaXplZCB0byBjb250YWluIGFsbCB0
aGUKICAgICAvLyBjdWVzIG9mIGFsbCB0aGUgaGlkZGVuLCBzaG93aW5nLCBvciBzaG93aW5nIGJ5
IGRlZmF1bHQgdGV4dCB0cmFja3Mgb2YgdGhlCiAgICAgLy8gbWVkaWEgZWxlbWVudCAobm90IHRo
ZSBkaXNhYmxlZCBvbmVzKSB3aG9zZSBzdGFydCB0aW1lcyBhcmUgbGVzcyB0aGFuIG9yCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVu
dHMuY3BwCShyZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExODgsNyArMTE4OCw5
IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sQ3VycmVudFQKIAogTWVkaWFDb250
cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFp
bmVyRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBNZWRpYUNvbnRyb2xEaXZFbGVt
ZW50KGRvY3VtZW50LCBNZWRpYVRleHRUcmFja0Rpc3BsYXlDb250YWluZXIpCisgICAgLCBtX3Vw
ZGF0ZVRpbWVyKHRoaXMsICZNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50Ojp1
cGRhdGVUaW1lckZpcmVkKQogICAgICwgbV9mb250U2l6ZSgwKQorICAgICwgbV9mb250U2l6ZUlz
SW1wb3J0YW50KGZhbHNlKQogewogfQogCkBAIC0xMjc1LDkgKzEyNzcsMTEgQEAgdm9pZCBNZWRp
YUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZQogICAgICAgICAgICAgY29udGludWU7CiAK
ICAgICAgICAgUmVmUHRyPFRleHRUcmFja0N1ZUJveD4gZGlzcGxheUJveCA9IGN1ZS0+Z2V0RGlz
cGxheVRyZWUobV92aWRlb0Rpc3BsYXlTaXplLnNpemUoKSk7Ci0gICAgICAgIGlmIChkaXNwbGF5
Qm94LT5oYXNDaGlsZE5vZGVzKCkgJiYgIWNvbnRhaW5zKHN0YXRpY19jYXN0PE5vZGUqPihkaXNw
bGF5Qm94LmdldCgpKSkpCisgICAgICAgIGlmIChkaXNwbGF5Qm94LT5oYXNDaGlsZE5vZGVzKCkg
JiYgIWNvbnRhaW5zKHN0YXRpY19jYXN0PE5vZGUqPihkaXNwbGF5Qm94LmdldCgpKSkpIHsKICAg
ICAgICAgICAgIC8vIE5vdGU6IHRoZSBkaXNwbGF5IHRyZWUgb2YgYSBjdWUgaXMgcmVtb3ZlZCB3
aGVuIHRoZSBhY3RpdmUgZmxhZyBvZiB0aGUgY3VlIGlzIHVuc2V0LgogICAgICAgICAgICAgYXBw
ZW5kQ2hpbGQoZGlzcGxheUJveCwgQVNTRVJUX05PX0VYQ0VQVElPTiwgQXR0YWNoTm93KTsKKyAg
ICAgICAgICAgIGN1ZS0+c2V0Rm9udFNpemUobV9mb250U2l6ZSwgbV92aWRlb0Rpc3BsYXlTaXpl
LnNpemUoKSwgbV9mb250U2l6ZUlzSW1wb3J0YW50KTsKKyAgICAgICAgfQogICAgIH0KIAogICAg
IC8vIDExLiBSZXR1cm4gb3V0cHV0LgpAQCAtMTMwNCw2ICsxMzA4LDMxIEBAIHZvaWQgTWVkaWFD
b250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWUKICAgICB9CiB9CiAKK3ZvaWQgTWVkaWFDb250
cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6dXBkYXRlVGltZXJGaXJlZChUaW1lcjxNZWRp
YUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50PiopCit7CisgICAgaWYgKCFkb2N1bWVu
dCgpLT5wYWdlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX3RleHRUcmFja1JlcHJl
c2VudGF0aW9uKSB7CisgICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlX
aWR0aCwgU3RyaW5nOjpudW1iZXIobV92aWRlb0Rpc3BsYXlTaXplLnNpemUoKS53aWR0aCgpKSAr
ICJweCIpOworICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5SGVpZ2h0
LCBTdHJpbmc6Om51bWJlcihtX3ZpZGVvRGlzcGxheVNpemUuc2l6ZSgpLmhlaWdodCgpKSArICJw
eCIpOworICAgIH0KKyAgICAKKyAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQgPSB0
b1BhcmVudE1lZGlhRWxlbWVudCh0aGlzKTsKKyAgICBpZiAoIW1lZGlhRWxlbWVudCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgZmxvYXQgc21hbGxlc3REaW1lbnNpb24gPSBzdGQ6Om1pbihtX3Zp
ZGVvRGlzcGxheVNpemUuc2l6ZSgpLmhlaWdodCgpLCBtX3ZpZGVvRGlzcGxheVNpemUuc2l6ZSgp
LndpZHRoKCkpOworICAgIG1fZm9udFNpemUgPSBscmludGYoc21hbGxlc3REaW1lbnNpb24gKiAo
ZG9jdW1lbnQoKS0+cGFnZSgpLT5ncm91cCgpLmNhcHRpb25QcmVmZXJlbmNlcygpLT5jYXB0aW9u
Rm9udFNpemVTY2FsZShtX2ZvbnRTaXplSXNJbXBvcnRhbnQpKSk7CisgICAgCisgICAgQ3VlTGlz
dCBhY3RpdmVDdWVzID0gbWVkaWFFbGVtZW50LT5jdXJyZW50bHlBY3RpdmVDdWVzKCk7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBhY3RpdmVDdWVzLnNpemUoKTsgKytpKSB7CisgICAgICAg
IFRleHRUcmFja0N1ZSogY3VlID0gYWN0aXZlQ3Vlc1tpXS5kYXRhKCk7CisgICAgICAgIGN1ZS0+
c2V0Rm9udFNpemUobV9mb250U2l6ZSwgbV92aWRlb0Rpc3BsYXlTaXplLnNpemUoKSwgbV9mb250
U2l6ZUlzSW1wb3J0YW50KTsKKyAgICAgICAgCisgICAgfQorfQorCiB2b2lkIE1lZGlhQ29udHJv
bFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZVNpemVzKGJvb2wgZm9yY2VVcGRhdGUp
CiB7CiAgICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50ID0gdG9QYXJlbnRNZWRpYUVs
ZW1lbnQodGhpcyk7CkBAIC0xMzMzLDI1ICsxMzYyLDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xUZXh0
VHJhY2tDb250YWluZXJFbGVtZQogICAgICAgICByZXR1cm47CiAgICAgbV92aWRlb0Rpc3BsYXlT
aXplID0gdmlkZW9Cb3g7CiAKLSAgICBpZiAobV90ZXh0VHJhY2tSZXByZXNlbnRhdGlvbikgewot
ICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgsIFN0cmluZzo6
bnVtYmVyKG1fdmlkZW9EaXNwbGF5U2l6ZS5zaXplKCkud2lkdGgoKSkgKyAicHgiKTsKLSAgICAg
ICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCwgU3RyaW5nOjpudW1i
ZXIobV92aWRlb0Rpc3BsYXlTaXplLnNpemUoKS5oZWlnaHQoKSkgKyAicHgiKTsKLSAgICB9Ci0K
LSAgICBmbG9hdCBzbWFsbGVzdERpbWVuc2lvbiA9IHN0ZDo6bWluKG1fdmlkZW9EaXNwbGF5U2l6
ZS5zaXplKCkuaGVpZ2h0KCksIG1fdmlkZW9EaXNwbGF5U2l6ZS5zaXplKCkud2lkdGgoKSk7Ci0K
LSAgICBib29sIGltcG9ydGFudDsKLSAgICBmbG9hdCBmb250U2l6ZSA9IHNtYWxsZXN0RGltZW5z
aW9uICogKGRvY3VtZW50KCktPnBhZ2UoKS0+Z3JvdXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKS0+
Y2FwdGlvbkZvbnRTaXplU2NhbGUoaW1wb3J0YW50KSk7Ci0gICAgaWYgKGZvbnRTaXplICE9IG1f
Zm9udFNpemUpIHsKLSAgICAgICAgbV9mb250U2l6ZSA9IGZvbnRTaXplOwotICAgICAgICBzZXRJ
bmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFNpemUsIFN0cmluZzo6bnVtYmVyKGZv
bnRTaXplKSArICJweCIsIGltcG9ydGFudCk7Ci0gICAgfQotCi0gICAgQ3VlTGlzdCBhY3RpdmVD
dWVzID0gbWVkaWFFbGVtZW50LT5jdXJyZW50bHlBY3RpdmVDdWVzKCk7Ci0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBhY3RpdmVDdWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFRleHRUcmFj
a0N1ZSogY3VlID0gYWN0aXZlQ3Vlc1tpXS5kYXRhKCk7Ci0gICAgICAgIGN1ZS0+dmlkZW9TaXpl
RGlkQ2hhbmdlKG1fdmlkZW9EaXNwbGF5U2l6ZS5zaXplKCkpOwotICAgIH0KKyAgICBtX3VwZGF0
ZVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KIAogdm9pZCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tD
b250YWluZXJFbGVtZW50OjpwYWludFRleHRUcmFja1JlcHJlc2VudGF0aW9uKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29udGV4dFJlY3QpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmgJKHJldmlz
aW9uIDE0NzkzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVs
ZW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0OCw2ICs0NDgsOCBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgdGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudFNoYWRv
d1BzZXVkb0lkKCk7CiAKIHByaXZhdGU6CisgICAgdm9pZCB1cGRhdGVUaW1lckZpcmVkKFRpbWVy
PE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ+Kik7CisKICAgICBleHBsaWNp
dCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50KERvY3VtZW50Kik7CiAgICAg
dmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJ
REU7CiAKQEAgLTQ1Nyw4ICs0NTksMTAgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgdGV4
dFRyYWNrUmVwcmVzZW50YXRpb25Cb3VuZHNDaGFuZ2VkKGNvbnN0IEludFJlY3QmKSBPVkVSUklE
RTsKICAgICBPd25QdHI8VGV4dFRyYWNrUmVwcmVzZW50YXRpb24+IG1fdGV4dFRyYWNrUmVwcmVz
ZW50YXRpb247CiAKKyAgICBUaW1lcjxNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVt
ZW50PiBtX3VwZGF0ZVRpbWVyOwogICAgIEludFJlY3QgbV92aWRlb0Rpc3BsYXlTaXplOwotICAg
IGZsb2F0IG1fZm9udFNpemU7CisgICAgaW50IG1fZm9udFNpemU7CisgICAgYm9vbCBtX2ZvbnRT
aXplSXNJbXBvcnRhbnQ7CiB9OwogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L01lZGlhQ29udHJvbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3BwCShyZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDA5LDkgKzQwOSw5IEBAIHZvaWQgTWVkaWFDb250cm9sczo6dXBkYXRlVGV4dFRyYWNrRGlzcGwK
ICAgICAKIHZvaWQgTWVkaWFDb250cm9sczo6dGV4dFRyYWNrUHJlZmVyZW5jZXNDaGFuZ2VkKCkK
IHsKKyAgICBjbG9zZWRDYXB0aW9uVHJhY2tzQ2hhbmdlZCgpOwogICAgIGlmIChtX3RleHREaXNw
bGF5Q29udGFpbmVyKQogICAgICAgICBtX3RleHREaXNwbGF5Q29udGFpbmVyLT51cGRhdGVTaXpl
cyh0cnVlKTsKLSAgICBjbG9zZWRDYXB0aW9uVHJhY2tzQ2hhbmdlZCgpOwogfQogI2VuZGlmCiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAJKHJldmlz
aW9uIDE0NzkzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkhUTUxEaXZFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxTcGFu
RWxlbWVudC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOb2RlVHJhdmVyc2Fs
LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dFRyYWNrQ3VlLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgpA
QCAtMTE3OSw2ICsxMTgwLDE2IEBAIGJvb2wgVGV4dFRyYWNrQ3VlOjpvcGVyYXRvcj09KGNvbnN0
IFRleHQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBUZXh0VHJhY2tDdWU6OnNldEZvbnRT
aXplKGludCBmb250U2l6ZSwgY29uc3QgSW50U2l6ZSYsIGJvb2wgaW1wb3J0YW50KQoreworICAg
IGlmICghaGFzRGlzcGxheVRyZWUoKSB8fCAhZm9udFNpemUpCisgICAgICAgIHJldHVybjsKKyAg
ICAKKyAgICBMT0coTWVkaWEsICJUZXh0VHJhY2tDdWU6OnNldEZvbnRTaXplIC0gc2V0dGluZyBj
dWUgZm9udCBzaXplIHRvICVpIiwgZm9udFNpemUpOworCisgICAgZWxlbWVudCgpLT5zZXRJbmxp
bmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFNpemUsIFN0cmluZzo6bnVtYmVyKGZvbnRT
aXplKSArICJweCIsIGltcG9ydGFudCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgJKHJl
dmlzaW9uIDE0NzkzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3Vl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3Nyw3ICsxNzcsNyBAQCBwdWJsaWM6CiAgICAgfTsKICAg
ICBDdWVBbGlnbm1lbnQgZ2V0QWxpZ25tZW50KCkgY29uc3QgeyByZXR1cm4gbV9jdWVBbGlnbm1l
bnQ7IH0KIAotICAgIHZpcnR1YWwgdm9pZCB2aWRlb1NpemVEaWRDaGFuZ2UoY29uc3QgSW50U2l6
ZSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRGb250U2l6ZShpbnQsIGNvbnN0IEludFNpemUm
LCBib29sIGltcG9ydGFudCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBU
ZXh0VHJhY2tDdWUmKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3IhPShjb25zdCBU
ZXh0VHJhY2tDdWUmIGN1ZSkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrQ3VlR2VuZXJpYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmNwcAkocmV2aXNpb24gMTQ3OTM4KQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVu
dC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNp
bmNsdWRlICJSZW5kZXJUZXh0VHJhY2tDdWUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCkBAIC02NSw2ICs2Niw3IEBAIHZvaWQgVGV4dFRyYWNrQ3VlR2VuZXJpY0JveEVs
ZW1lbnQ6OmFwcGwKICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VW5pY29k
ZUJpZGksIENTU1ZhbHVlV2Via2l0UGxhaW50ZXh0KTsKICAgICAKICAgICBUZXh0VHJhY2tDdWVH
ZW5lcmljKiBjdWUgPSBzdGF0aWNfY2FzdDxUZXh0VHJhY2tDdWVHZW5lcmljKj4oZ2V0Q3VlKCkp
OworICAgIFJlZlB0cjxIVE1MRGl2RWxlbWVudD4gY3VlRWxlbWVudCA9IGN1ZS0+ZWxlbWVudCgp
OwogCiAgICAgZmxvYXQgc2l6ZSA9IHN0YXRpY19jYXN0PGZsb2F0PihjdWUtPmdldENTU1NpemUo
KSk7CiAgICAgaWYgKGN1ZS0+dXNlRGVmYXVsdFBvc2l0aW9uKCkpIHsKQEAgLTgxLDIyICs4Mywx
OCBAQCB2b2lkIFRleHRUcmFja0N1ZUdlbmVyaWNCb3hFbGVtZW50OjphcHBsCiAgICAgfQogCiAg
ICAgaWYgKGN1ZS0+Zm9yZWdyb3VuZENvbG9yKCkuaXNWYWxpZCgpKQotICAgICAgICBzZXRJbmxp
bmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5Q29sb3IsIGN1ZS0+Zm9yZWdyb3VuZENvbG9yKCku
c2VyaWFsaXplZCgpKTsKKyAgICAgICAgY3VlRWxlbWVudC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0
eShDU1NQcm9wZXJ0eUNvbG9yLCBjdWUtPmZvcmVncm91bmRDb2xvcigpLnNlcmlhbGl6ZWQoKSk7
CiAgICAgCiAgICAgaWYgKGN1ZS0+YmFja2dyb3VuZENvbG9yKCkuaXNWYWxpZCgpKQotICAgICAg
ICBjdWUtPmVsZW1lbnQoKS0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tn
cm91bmRDb2xvciwgY3VlLT5iYWNrZ3JvdW5kQ29sb3IoKS5zZXJpYWxpemVkKCkpOworICAgICAg
ICBjdWVFbGVtZW50LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3Vu
ZENvbG9yLCBjdWUtPmJhY2tncm91bmRDb2xvcigpLnNlcmlhbGl6ZWQoKSk7CiAKICAgICBpZiAo
Y3VlLT5nZXRXcml0aW5nRGlyZWN0aW9uKCkgPT0gVGV4dFRyYWNrQ3VlOjpIb3Jpem9udGFsKQog
ICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5SGVpZ2h0LCBDU1NWYWx1
ZUF1dG8pOwogICAgIGVsc2UKICAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9w
ZXJ0eVdpZHRoLCBDU1NWYWx1ZUF1dG8pOwogCi0gICAgaWYgKGN1ZS0+YmFzZUZvbnRTaXplUmVs
YXRpdmVUb1ZpZGVvSGVpZ2h0KCkpIHsKLSAgICAgICAgZG91YmxlIGZvbnRTaXplID0gdmlkZW9T
aXplLmhlaWdodCgpICogY3VlLT5iYXNlRm9udFNpemVSZWxhdGl2ZVRvVmlkZW9IZWlnaHQoKSAv
IDEwMDsKLSAgICAgICAgaWYgKGN1ZS0+Zm9udFNpemVNdWx0aXBsaWVyKCkpCi0gICAgICAgICAg
ICBmb250U2l6ZSAqPSBjdWUtPmZvbnRTaXplTXVsdGlwbGllcigpIC8gMTAwOwotICAgICAgICBz
ZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFNpemUsIFN0cmluZzo6bnVtYmVy
KGZvbnRTaXplKSArICJweCIpOwotICAgIH0KKyAgICBpZiAoY3VlLT5iYXNlRm9udFNpemVSZWxh
dGl2ZVRvVmlkZW9IZWlnaHQoKSkKKyAgICAgICAgY3VlLT5zZXRGb250U2l6ZShjdWUtPmJhc2VG
b250U2l6ZVJlbGF0aXZlVG9WaWRlb0hlaWdodCgpLCB2aWRlb1NpemUsIGZhbHNlKTsKIAogICAg
IGlmIChjdWUtPmdldEFsaWdubWVudCgpID09IFRleHRUcmFja0N1ZTo6TWlkZGxlKQogICAgICAg
ICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWduLCBDU1NWYWx1ZUNl
bnRlcik7CkBAIC0xMzUsMjAgKzEzMywyNCBAQCB2b2lkIFRleHRUcmFja0N1ZUdlbmVyaWM6OnNl
dFBvc2l0aW9uKGluCiAgICAgVGV4dFRyYWNrQ3VlOjpzZXRQb3NpdGlvbihwb3NpdGlvbiwgZWMp
OwogfQogCi12b2lkIFRleHRUcmFja0N1ZUdlbmVyaWM6OnZpZGVvU2l6ZURpZENoYW5nZShjb25z
dCBJbnRTaXplJiB2aWRlb1NpemUpCit2b2lkIFRleHRUcmFja0N1ZUdlbmVyaWM6OnNldEZvbnRT
aXplKGludCBmb250U2l6ZSwgY29uc3QgSW50U2l6ZSYgdmlkZW9TaXplLCBib29sIGltcG9ydGFu
dCkKIHsKLSAgICBpZiAoIWhhc0Rpc3BsYXlUcmVlKCkpCisgICAgaWYgKCFoYXNEaXNwbGF5VHJl
ZSgpIHx8ICFmb250U2l6ZSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGlmIChpbXBvcnRh
bnQgfHwgIWJhc2VGb250U2l6ZVJlbGF0aXZlVG9WaWRlb0hlaWdodCgpKSB7CisgICAgICAgIFRl
eHRUcmFja0N1ZTo6c2V0Rm9udFNpemUoZm9udFNpemUsIHZpZGVvU2l6ZSwgaW1wb3J0YW50KTsK
ICAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGJhc2VGb250U2l6ZVJlbGF0aXZlVG9WaWRlb0hl
aWdodCgpKSB7Ci0gICAgICAgIGRvdWJsZSBmb250U2l6ZSA9IHZpZGVvU2l6ZS5oZWlnaHQoKSAq
IGJhc2VGb250U2l6ZVJlbGF0aXZlVG9WaWRlb0hlaWdodCgpIC8gMTAwOwotICAgICAgICBpZiAo
Zm9udFNpemVNdWx0aXBsaWVyKCkpCi0gICAgICAgICAgICBmb250U2l6ZSAqPSBmb250U2l6ZU11
bHRpcGxpZXIoKSAvIDEwMDsKLSAgICAgICAgZGlzcGxheVRyZWVJbnRlcm5hbCgpLT5zZXRJbmxp
bmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFNpemUsIFN0cmluZzo6bnVtYmVyKGZvbnRT
aXplKSArICJweCIpOwogICAgIH0KIAotfQorICAgIGRvdWJsZSBzaXplID0gdmlkZW9TaXplLmhl
aWdodCgpICogYmFzZUZvbnRTaXplUmVsYXRpdmVUb1ZpZGVvSGVpZ2h0KCkgLyAxMDA7CisgICAg
aWYgKGZvbnRTaXplTXVsdGlwbGllcigpKQorICAgICAgICBzaXplICo9IGZvbnRTaXplTXVsdGlw
bGllcigpIC8gMTAwOworICAgIGVsZW1lbnQoKS0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUZvbnRTaXplLCBTdHJpbmc6Om51bWJlcihscmludGYoc2l6ZSkpICsgInB4Iik7CiAK
KyAgICBMT0coTWVkaWEsICJUZXh0VHJhY2tDdWVHZW5lcmljOjpzZXRGb250U2l6ZSAtIHNldHRp
bmcgY3VlIGZvbnQgc2l6ZSB0byAlbGkiLCBscmludGYoc2l6ZSkpOworfQorICAgIAogYm9vbCBU
ZXh0VHJhY2tDdWVHZW5lcmljOjpvcGVyYXRvcj09KGNvbnN0IFRleHRUcmFja0N1ZSYgY3VlKSBj
b25zdAogewogICAgIGlmIChjdWUuY3VlVHlwZSgpICE9IFRleHRUcmFja0N1ZTo6R2VuZXJpYykK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJp
Yy5oCShyZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFja0N1ZUdlbmVyaWMuaAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6
CiAgICAgQ29sb3IgYmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5k
Q29sb3I7IH0KICAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihSR0JBMzIgY29sb3IpIHsgbV9i
YWNrZ3JvdW5kQ29sb3Iuc2V0UkdCKGNvbG9yKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHZpZGVv
U2l6ZURpZENoYW5nZShjb25zdCBJbnRTaXplJik7CisgICAgdmlydHVhbCB2b2lkIHNldEZvbnRT
aXplKGludCwgY29uc3QgSW50U2l6ZSYsIGJvb2wgaW1wb3J0YW50KSBPVkVSUklERTsKIAogICAg
IHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRleHRUcmFja0N1ZSYpIGNvbnN0IE9WRVJS
SURFOwogICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFRleHRUcmFja0N1ZSYgY3Vl
KSBjb25zdCBPVkVSUklERQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2tMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFja0xpc3QuY3BwCShyZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1RleHRUcmFja0xpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDUsNyArMjA1LDcgQEAg
dm9pZCBUZXh0VHJhY2tMaXN0OjpyZW1vdmUoVGV4dFRyYWNrKiB0cgogCiAgICAgaW52YWxpZGF0
ZVRyYWNrSW5kZXhlc0FmdGVyVHJhY2sodHJhY2spOwogCi0gICAgQVNTRVJUKHRyYWNrLT5tZWRp
YUVsZW1lbnQoKSA9PSBtX293bmVyKTsKKyAgICBBU1NFUlQoIXRyYWNrLT5tZWRpYUVsZW1lbnQo
KSB8fCB0cmFjay0+bWVkaWFFbGVtZW50KCkgPT0gbV9vd25lcik7CiAgICAgdHJhY2stPnNldE1l
ZGlhRWxlbWVudCgwKTsKIAogICAgIHRyYWNrcy0+cmVtb3ZlKGluZGV4KTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmNwcAkocmV2aXNpb24g
MTQ3OTM4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTAgKzI4LDEyIEBACiAjaWYgRU5BQkxFKFZJREVPX1RS
QUNLKQogCiAjaW5jbHVkZSAiQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oIgorI2luY2x1ZGUgIkRP
TVdyYXBwZXJXb3JsZC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAu
aCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRleHRUcmFja0xpc3QuaCIKKyNp
bmNsdWRlICJVc2VyU3R5bGVTaGVldFR5cGVzLmgiCiAjaW5jbHVkZSA8d3RmL05vbkNvcHlpbmdT
b3J0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTIyMSw2ICsyMjMsMjggQEAgaW50IENh
cHRpb25Vc2VyUHJlZmVyZW5jZXM6OnRleHRUcmFja0xhbgogICAgIHJldHVybiAocHJlZmVycmVk
TGFuZ3VhZ2VzLnNpemUoKSAtIGxhbmd1YWdlTWF0Y2hJbmRleCkgKiAxMDsKIH0KIAordm9pZCBD
YXB0aW9uVXNlclByZWZlcmVuY2VzOjpzZXRDYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZShjb25z
dCBTdHJpbmcmIG92ZXJyaWRlKQoreworICAgIG1fY2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUg
PSBvdmVycmlkZTsKKyAgICB1cGRhdGVDYXB0aW9uU3R5bGVTaGVldE92ZXJpZGUoKTsKK30KKwor
dm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp1cGRhdGVDYXB0aW9uU3R5bGVTaGVldE92ZXJp
ZGUoKQoreworICAgIC8vIElkZW50aWZ5IG91ciBvdmVycmlkZSBzdHlsZSBzaGVldCB3aXRoIGEg
dW5pcXVlIFVSTCAtIGEgbmV3IHNjaGVtZSBhbmQgYSBVVUlELgorICAgIERFRklORV9TVEFUSUNf
TE9DQUwoS1VSTCwgY2FwdGlvbnNTdHlsZVNoZWV0VVJMLCAoUGFyc2VkVVJMU3RyaW5nLCAidXNl
ci1jYXB0aW9ucy1vdmVycmlkZTowMUY2QUYxMi1DM0IwLTRGNzAtQUY1RS1BM0UwMDIzNERDMjMi
KSk7CisKKyAgICBwYWdlR3JvdXAoKS0+cmVtb3ZlVXNlclN0eWxlU2hlZXRGcm9tV29ybGQobWFp
blRocmVhZE5vcm1hbFdvcmxkKCksIGNhcHRpb25zU3R5bGVTaGVldFVSTCk7CisKKyAgICBTdHJp
bmcgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQgPSBjYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlk
ZSgpOworICAgIGlmIChjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIHBhZ2VHcm91cCgpLT5hZGRVc2VyU3R5bGVTaGVldFRvV29ybGQo
bWFpblRocmVhZE5vcm1hbFdvcmxkKCksIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LCBjYXB0
aW9uc1N0eWxlU2hlZXRVUkwsIFZlY3RvcjxTdHJpbmc+KCksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBWZWN0b3I8U3RyaW5nPigpLCBJbmplY3RJbkFsbEZyYW1l
cywgVXNlclN0eWxlQXV0aG9yTGV2ZWwsIEluamVjdEluRXhpc3RpbmdEb2N1bWVudHMpOworfQor
CisgICAgCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoVklERU9fVFJBQ0spCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXMuaAkocmV2aXNpb24gMTQ3OTM4
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTY3LDcgKzY3LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRV
c2VyUHJlZmVyc1RleHREZXNjcmlwdGlvbnMoYm9vbCBwcmVmZXJlbmNlKTsKIAogICAgIHZpcnR1
YWwgZmxvYXQgY2FwdGlvbkZvbnRTaXplU2NhbGUoYm9vbCYgaW1wb3J0YW50KSBjb25zdCB7IGlt
cG9ydGFudCA9IGZhbHNlOyByZXR1cm4gMC4wNWY7IH0KLSAgICB2aXJ0dWFsIFN0cmluZyBjYXB0
aW9uc1N0eWxlU2hlZXRPdmVycmlkZSgpIGNvbnN0IHsgcmV0dXJuIGVtcHR5U3RyaW5nKCk7IH0K
KworICAgIHZpcnR1YWwgU3RyaW5nIGNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKCkgY29uc3Qg
eyByZXR1cm4gbV9jYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZTsgfQorICAgIHZpcnR1YWwgdm9p
ZCBzZXRDYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZShjb25zdCBTdHJpbmcmIG92ZXJyaWRlKTsK
IAogICAgIHZpcnR1YWwgdm9pZCBzZXRJbnRlcmVzdGVkSW5DYXB0aW9uUHJlZmVyZW5jZUNoYW5n
ZXMoKSB7IH0KIApAQCAtODYsNiArODgsNyBAQCBwdWJsaWM6CiAKIHByb3RlY3RlZDoKICAgICBD
YXB0aW9uVXNlclByZWZlcmVuY2VzKFBhZ2VHcm91cCopOworICAgIHZvaWQgdXBkYXRlQ2FwdGlv
blN0eWxlU2hlZXRPdmVyaWRlKCk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCB0aW1lckZpcmVkKFRp
bWVyPENhcHRpb25Vc2VyUHJlZmVyZW5jZXM+Kik7CkBAIC05NSw2ICs5OCw3IEBAIHByaXZhdGU6
CiAgICAgQ2FwdGlvbkRpc3BsYXlNb2RlIG1fZGlzcGxheU1vZGU7CiAgICAgVGltZXI8Q2FwdGlv
blVzZXJQcmVmZXJlbmNlcz4gbV90aW1lcjsKICAgICBTdHJpbmcgbV91c2VyUHJlZmVycmVkTGFu
Z3VhZ2U7CisgICAgU3RyaW5nIG1fY2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGU7CiAgICAgYm9v
bCBtX3Rlc3RpbmdNb2RlOwogICAgIGJvb2wgbV9oYXZlUHJlZmVyZW5jZXM7CiB9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjLmgJKHJl
dmlzaW9uIDE0NzkzOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJl
bmNlc01hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw2IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGJvb2wgdXNlclByZWZlcnNTdWJ0aXRsZXMoKSBjb25zdCBPVkVSUklERTsKICAgICAK
ICAgICB2aXJ0dWFsIGZsb2F0IGNhcHRpb25Gb250U2l6ZVNjYWxlKGJvb2wmKSBjb25zdCBPVkVS
UklERTsKLSAgICB2aXJ0dWFsIFN0cmluZyBjYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZSgpIGNv
bnN0IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIHNldEludGVyZXN0ZWRJbkNhcHRpb25Q
cmVmZXJlbmNlQ2hhbmdlcygpIE9WRVJSSURFOwogCkBAIC01Niw5ICs1NSw5IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IHByZWZlcnJlZExhbmd1YWdlcygpIGNvbnN0IE9W
RVJSSURFOwogCiAgICAgdmlydHVhbCB2b2lkIGNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQoKSBP
VkVSUklERTsKLQogI2VuZGlmCiAKKyAgICB2aXJ0dWFsIFN0cmluZyBjYXB0aW9uc1N0eWxlU2hl
ZXRPdmVycmlkZSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgaW50IHRleHRUcmFja1Nl
bGVjdGlvblNjb3JlKFRleHRUcmFjayosIEhUTUxNZWRpYUVsZW1lbnQqKSBjb25zdCBPVkVSUklE
RTsKICAgICB2aXJ0dWFsIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPiA+IHNvcnRlZFRyYWNrTGlz
dEZvck1lbnUoVGV4dFRyYWNrTGlzdCopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgU3RyaW5nIGRp
c3BsYXlOYW1lRm9yVHJhY2soVGV4dFRyYWNrKikgY29uc3QgT1ZFUlJJREU7CkBAIC03OCw4ICs3
Nyw2IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIGNzc1Byb3BlcnR5V2l0aFRleHRFZGdlQ29sb3Io
Q1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiwgY29uc3QgQ29sb3ImLCBib29sKSBjb25zdDsK
ICAgICBTdHJpbmcgY29sb3JQcm9wZXJ0eUNTUyhDU1NQcm9wZXJ0eUlELCBjb25zdCBDb2xvciYs
IGJvb2wpIGNvbnN0OwogCi0gICAgdm9pZCB1cGRhdGVDYXB0aW9uU3R5bGVTaGVldE92ZXJpZGUo
KTsKLQogICAgIGJvb2wgbV9saXN0ZW5pbmdGb3JQcmVmZXJlbmNlQ2hhbmdlczsKICNlbmRpZgog
fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYy5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5j
ZXNNYWMubW0JKHJldmlzaW9uIDE0NzkzOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlv
blVzZXJQcmVmZXJlbmNlc01hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUwLDcgKzI1MCw3IEBA
IFN0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjYXB0aW8KICAgICAgICAgYmFja2dy
b3VuZENvbG9yID0gZGVmYXVsdEJhY2tncm91bmRDb2xvcjsKIAogICAgIGJvb2wgaW1wb3J0YW50
ID0gYmVoYXZpb3IgPT0ga01BQ2FwdGlvbkFwcGVhcmFuY2VCZWhhdmlvclVzZVZhbHVlOwotICAg
IENHRmxvYXQgb3BhY2l0eSA9IE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRCYWNrZ3JvdW5kT3BhY2l0
eShrTUFDYXB0aW9uQXBwZWFyYW5jZURvbWFpblVzZXIsIDApOworICAgIENHRmxvYXQgb3BhY2l0
eSA9IE1BQ2FwdGlvbkFwcGVhcmFuY2VHZXRCYWNrZ3JvdW5kT3BhY2l0eShrTUFDYXB0aW9uQXBw
ZWFyYW5jZURvbWFpblVzZXIsICZiZWhhdmlvcik7CiAgICAgaWYgKCFpbXBvcnRhbnQpCiAgICAg
ICAgIGltcG9ydGFudCA9IGJlaGF2aW9yID09IGtNQUNhcHRpb25BcHBlYXJhbmNlQmVoYXZpb3JV
c2VWYWx1ZTsKICAgICBTdHJpbmcgYmFja2dyb3VuZFN0eWxlID0gY29sb3JQcm9wZXJ0eUNTUyhD
U1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvciwgQ29sb3IoYmFja2dyb3VuZENvbG9yLnJlZCgpLCBi
YWNrZ3JvdW5kQ29sb3IuZ3JlZW4oKSwgYmFja2dyb3VuZENvbG9yLmJsdWUoKSwgc3RhdGljX2Nh
c3Q8aW50PihvcGFjaXR5ICogMjU1KSksIGltcG9ydGFudCk7CkBAIC00MTYsNjAgKzQxNiw2IEBA
IFN0cmluZyBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjYXB0aW8KICAgICByZXR1cm4gYnVp
bGRlci50b1N0cmluZygpOwogfQogCi1TdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6
Y2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUoKSBjb25zdAotewotICAgIGlmICh0ZXN0aW5nTW9k
ZSgpIHx8ICFNZWRpYUFjY2Vzc2liaWxpdHlMaWJyYXJ5KCkpCi0gICAgICAgIHJldHVybiBDYXB0
aW9uVXNlclByZWZlcmVuY2VzOjpjYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZSgpOwotCi0gICAg
U3RyaW5nQnVpbGRlciBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldDsKLQotICAgIFN0cmluZyBi
YWNrZ3JvdW5kID0gY2FwdGlvbnNCYWNrZ3JvdW5kQ1NTKCk7Ci0gICAgaWYgKCFiYWNrZ3JvdW5k
LmlzRW1wdHkoKSkgewotICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQo
IiB2aWRlbzo6Iik7Ci0gICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZChU
ZXh0VHJhY2tDdWU6OmN1ZVNoYWRvd1BzZXVkb0lkKCkpOwotICAgICAgICBjYXB0aW9uc092ZXJy
aWRlU3R5bGVTaGVldC5hcHBlbmQoJ3snKTsKLSAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxl
U2hlZXQuYXBwZW5kKGJhY2tncm91bmQpOwotICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVT
aGVldC5hcHBlbmQoJ30nKTsKLSAgICB9Ci0KLSAgICBTdHJpbmcgd2luZG93Q29sb3IgPSBjYXB0
aW9uc1dpbmRvd0NTUygpOwotICAgIFN0cmluZyB3aW5kb3dDb3JuZXJSYWRpdXMgPSB3aW5kb3dS
b3VuZGVkQ29ybmVyUmFkaXVzQ1NTKCk7Ci0gICAgaWYgKCF3aW5kb3dDb2xvci5pc0VtcHR5KCkg
fHwgIXdpbmRvd0Nvcm5lclJhZGl1cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgY2FwdGlvbnNPdmVy
cmlkZVN0eWxlU2hlZXQuYXBwZW5kKCIgdmlkZW86OiIpOwotICAgICAgICBjYXB0aW9uc092ZXJy
aWRlU3R5bGVTaGVldC5hcHBlbmQoVGV4dFRyYWNrQ3VlQm94Ojp0ZXh0VHJhY2tDdWVCb3hTaGFk
b3dQc2V1ZG9JZCgpKTsKLSAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5k
KCd7Jyk7Ci0KLSAgICAgICAgaWYgKCF3aW5kb3dDb2xvci5pc0VtcHR5KCkpCi0gICAgICAgICAg
ICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQod2luZG93Q29sb3IpOwotICAgICAg
ICBpZiAoIXdpbmRvd0Nvcm5lclJhZGl1cy5pc0VtcHR5KCkpCi0gICAgICAgICAgICBjYXB0aW9u
c092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQod2luZG93Q29ybmVyUmFkaXVzKTsKLQotICAgICAg
ICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoJ30nKTsKLSAgICB9Ci0gICAgCi0g
ICAgU3RyaW5nIGNhcHRpb25zQ29sb3IgPSBjYXB0aW9uc1RleHRDb2xvckNTUygpOwotICAgIFN0
cmluZyBlZGdlU3R5bGUgPSBjYXB0aW9uc1RleHRFZGdlQ1NTKCk7Ci0gICAgU3RyaW5nIGZvbnRO
YW1lID0gY2FwdGlvbnNEZWZhdWx0Rm9udENTUygpOwotICAgIGlmICghY2FwdGlvbnNDb2xvci5p
c0VtcHR5KCkgfHwgIWVkZ2VTdHlsZS5pc0VtcHR5KCkgfHwgIWZvbnROYW1lLmlzRW1wdHkoKSkg
ewotICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoIiB2aWRlbzo6Iik7
Ci0gICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZChNZWRpYUNvbnRyb2xU
ZXh0VHJhY2tDb250YWluZXJFbGVtZW50Ojp0ZXh0VHJhY2tDb250YWluZXJFbGVtZW50U2hhZG93
UHNldWRvSWQoKSk7Ci0gICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCgn
eycpOwotCi0gICAgICAgIGlmICghY2FwdGlvbnNDb2xvci5pc0VtcHR5KCkpCi0gICAgICAgICAg
ICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoY2FwdGlvbnNDb2xvcik7Ci0gICAg
ICAgIGlmICghZWRnZVN0eWxlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGNhcHRpb25zT3ZlcnJp
ZGVTdHlsZVNoZWV0LmFwcGVuZChlZGdlU3R5bGUpOwotICAgICAgICBpZiAoIWZvbnROYW1lLmlz
RW1wdHkoKSkKLSAgICAgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZChm
b250TmFtZSk7Ci0KLSAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKCd9
Jyk7Ci0gICAgfQotICAgIAotICAgIExPRyhNZWRpYSwgIkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
YWM6OmNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlU2V0dGluZyBzeXRsZSB0bzpcbiVzIiwgY2Fw
dGlvbnNPdmVycmlkZVN0eWxlU2hlZXQudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKLQotICAg
IHJldHVybiBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC50b1N0cmluZygpOwotfQotCiBmbG9h
dCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjYXB0aW9uRm9udFNpemVTY2FsZShib29sJiBp
bXBvcnRhbnQpIGNvbnN0CiB7CiAgICAgaWYgKHRlc3RpbmdNb2RlKCkgfHwgIU1lZGlhQWNjZXNz
aWJpbGl0eUxpYnJhcnkoKSkKQEAgLTQ5MCwyMSArNDM2LDYgQEAgZmxvYXQgQ2FwdGlvblVzZXJQ
cmVmZXJlbmNlc01hYzo6Y2FwdGlvbgogI2VuZGlmCiB9CiAKLXZvaWQgQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlc01hYzo6dXBkYXRlQ2FwdGlvblN0eWxlU2hlZXRPdmVyaWRlKCkKLXsKLSAgICAvLyBJ
ZGVudGlmeSBvdXIgb3ZlcnJpZGUgc3R5bGUgc2hlZXQgd2l0aCBhIHVuaXF1ZSBVUkwgLSBhIG5l
dyBzY2hlbWUgYW5kIGEgVVVJRC4KLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEtVUkwsIGNhcHRp
b25zU3R5bGVTaGVldFVSTCwgKFBhcnNlZFVSTFN0cmluZywgInVzZXItY2FwdGlvbnMtb3ZlcnJp
ZGU6MDFGNkFGMTItQzNCMC00RjcwLUFGNUUtQTNFMDAyMzREQzIzIikpOwotICAgIAotICAgIHBh
Z2VHcm91cCgpLT5yZW1vdmVVc2VyU3R5bGVTaGVldEZyb21Xb3JsZChtYWluVGhyZWFkTm9ybWFs
V29ybGQoKSwgY2FwdGlvbnNTdHlsZVNoZWV0VVJMKTsKLSAgICAKLSAgICBTdHJpbmcgY2FwdGlv
bnNPdmVycmlkZVN0eWxlU2hlZXQgPSBjYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZSgpOwotICAg
IGlmIChjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
bjsKLSAgICAKLSAgICBwYWdlR3JvdXAoKS0+YWRkVXNlclN0eWxlU2hlZXRUb1dvcmxkKG1haW5U
aHJlYWROb3JtYWxXb3JsZCgpLCBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldCwgY2FwdGlvbnNT
dHlsZVNoZWV0VVJMLCBWZWN0b3I8U3RyaW5nPigpLAotICAgICAgICAgICAgIFZlY3RvcjxTdHJp
bmc+KCksIEluamVjdEluQWxsRnJhbWVzLCBVc2VyU3R5bGVBdXRob3JMZXZlbCwgSW5qZWN0SW5F
eGlzdGluZ0RvY3VtZW50cyk7Ci19Ci0KIHZvaWQgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6
c2V0UHJlZmVycmVkTGFuZ3VhZ2UoY29uc3QgU3RyaW5nJiBsYW5ndWFnZSkKIHsKICAgICBpZiAo
dGVzdGluZ01vZGUoKSB8fCAhTWVkaWFBY2Nlc3NpYmlsaXR5TGlicmFyeSgpKSB7CkBAIC01NTAs
NiArNDgxLDU2IEBAIFZlY3RvcjxTdHJpbmc+IENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWMKIH0K
ICNlbmRpZiAgLy8gSEFWRShNRURJQV9BQ0NFU1NJQklMSVRZX0ZSQU1FV09SSykKIAorU3RyaW5n
IENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKCkg
Y29uc3QKK3sKKyAgICBpZiAodGVzdGluZ01vZGUoKSB8fCAhTWVkaWFBY2Nlc3NpYmlsaXR5TGli
cmFyeSgpKQorICAgICAgICByZXR1cm4gQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6Y2FwdGlvbnNT
dHlsZVNoZWV0T3ZlcnJpZGUoKTsKKyAgICAKKyAgICBTdHJpbmdCdWlsZGVyIGNhcHRpb25zT3Zl
cnJpZGVTdHlsZVNoZWV0OworCisjaWYgSEFWRShNRURJQV9BQ0NFU1NJQklMSVRZX0ZSQU1FV09S
SykKKyAgICBTdHJpbmcgY2FwdGlvbnNDb2xvciA9IGNhcHRpb25zVGV4dENvbG9yQ1NTKCk7Cisg
ICAgU3RyaW5nIGVkZ2VTdHlsZSA9IGNhcHRpb25zVGV4dEVkZ2VDU1MoKTsKKyAgICBTdHJpbmcg
Zm9udE5hbWUgPSBjYXB0aW9uc0RlZmF1bHRGb250Q1NTKCk7CisgICAgU3RyaW5nIGJhY2tncm91
bmQgPSBjYXB0aW9uc0JhY2tncm91bmRDU1MoKTsKKyAgICBpZiAoIWJhY2tncm91bmQuaXNFbXB0
eSgpIHx8ICFjYXB0aW9uc0NvbG9yLmlzRW1wdHkoKSB8fCAhZWRnZVN0eWxlLmlzRW1wdHkoKSB8
fCAhZm9udE5hbWUuaXNFbXB0eSgpKSB7CisgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNo
ZWV0LmFwcGVuZCgiIHZpZGVvOjoiKTsKKyAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hl
ZXQuYXBwZW5kKFRleHRUcmFja0N1ZTo6Y3VlU2hhZG93UHNldWRvSWQoKSk7CisgICAgICAgIGNh
cHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCgneycpOworICAgICAgICAKKyAgICAgICAg
aWYgKCFiYWNrZ3JvdW5kLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVT
dHlsZVNoZWV0LmFwcGVuZChiYWNrZ3JvdW5kKTsKKyAgICAgICAgaWYgKCFjYXB0aW9uc0NvbG9y
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVu
ZChjYXB0aW9uc0NvbG9yKTsKKyAgICAgICAgaWYgKCFlZGdlU3R5bGUuaXNFbXB0eSgpKQorICAg
ICAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKGVkZ2VTdHlsZSk7Cisg
ICAgICAgIGlmICghZm9udE5hbWUuaXNFbXB0eSgpKQorICAgICAgICAgICAgY2FwdGlvbnNPdmVy
cmlkZVN0eWxlU2hlZXQuYXBwZW5kKGZvbnROYW1lKTsKKyAgICAgICAgCisgICAgICAgIGNhcHRp
b25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCgnfScpOworICAgIH0KKyAgICAKKyAgICBTdHJp
bmcgd2luZG93Q29sb3IgPSBjYXB0aW9uc1dpbmRvd0NTUygpOworICAgIFN0cmluZyB3aW5kb3dD
b3JuZXJSYWRpdXMgPSB3aW5kb3dSb3VuZGVkQ29ybmVyUmFkaXVzQ1NTKCk7CisgICAgaWYgKCF3
aW5kb3dDb2xvci5pc0VtcHR5KCkgfHwgIXdpbmRvd0Nvcm5lclJhZGl1cy5pc0VtcHR5KCkpIHsK
KyAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKCIgdmlkZW86OiIpOwor
ICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoVGV4dFRyYWNrQ3VlQm94
Ojp0ZXh0VHJhY2tDdWVCb3hTaGFkb3dQc2V1ZG9JZCgpKTsKKyAgICAgICAgY2FwdGlvbnNPdmVy
cmlkZVN0eWxlU2hlZXQuYXBwZW5kKCd7Jyk7CisgICAgICAgIAorICAgICAgICBpZiAoIXdpbmRv
d0NvbG9yLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0
LmFwcGVuZCh3aW5kb3dDb2xvcik7CisgICAgICAgIGlmICghd2luZG93Q29ybmVyUmFkaXVzLmlz
RW1wdHkoKSkKKyAgICAgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCh3
aW5kb3dDb3JuZXJSYWRpdXMpOworICAgICAgICAKKyAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0
eWxlU2hlZXQuYXBwZW5kKCd9Jyk7CisgICAgfQorI2VuZGlmICAvLyBIQVZFKE1FRElBX0FDQ0VT
U0lCSUxJVFlfRlJBTUVXT1JLKQorCisgICAgTE9HKE1lZGlhLCAiQ2FwdGlvblVzZXJQcmVmZXJl
bmNlc01hYzo6Y2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGVTZXR0aW5nIHN5dGxlIHRvOlxuJXMi
LCBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwor
CisgICAgcmV0dXJuIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LnRvU3RyaW5nKCk7Cit9CisK
IHN0YXRpYyBTdHJpbmcgbGFuZ3VhZ2VJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2VD
b2RlKQogewogICAgIGlmIChsYW5ndWFnZUNvZGUuaXNFbXB0eSgpKQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHAJKHJl
dmlzaW9uIDE0NzkzOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zOTEsNyArMzkxLDcgQEAgYm9vbCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246
OmRpZAogICAgIGZsb2F0IGN1cnJlbnRNYXhUaW1lTG9hZGVkID0gbWF4VGltZUxvYWRlZCgpOwog
ICAgIGJvb2wgZGlkTG9hZGluZ1Byb2dyZXNzID0gY3VycmVudE1heFRpbWVMb2FkZWQgIT0gbV9t
YXhUaW1lTG9hZGVkQXRMYXN0RGlkTG9hZGluZ1Byb2dyZXNzOwogICAgIG1fbWF4VGltZUxvYWRl
ZEF0TGFzdERpZExvYWRpbmdQcm9ncmVzcyA9IGN1cnJlbnRNYXhUaW1lTG9hZGVkOwotICAgIExP
RyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6ZGlkTG9hZGluZ1Byb2dy
ZXNzKCVwKSAtIHJldHVybmluZyAlZCIsIHRoaXMsIGRpZExvYWRpbmdQcm9ncmVzcyk7CisKICAg
ICByZXR1cm4gZGlkTG9hZGluZ1Byb2dyZXNzOwogfQogCkBAIC00MzMsOSArNDMzLDYgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnVwZAogICAgIE1lZGlhUGxheWVyOjpO
ZXR3b3JrU3RhdGUgb2xkTmV0d29ya1N0YXRlID0gbV9uZXR3b3JrU3RhdGU7CiAgICAgTWVkaWFQ
bGF5ZXI6OlJlYWR5U3RhdGUgb2xkUmVhZHlTdGF0ZSA9IG1fcmVhZHlTdGF0ZTsKIAotICAgIExP
RyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbjo6dXBkYXRlU3RhdGVzKCVw
KSAtIGVudGVyaW5nIHdpdGggbmV0d29ya1N0YXRlID0gJWksIHJlYWR5U3RhdGUgPSAlaSIsIAot
ICAgICAgICB0aGlzLCBzdGF0aWNfY2FzdDxpbnQ+KG1fbmV0d29ya1N0YXRlKSwgc3RhdGljX2Nh
c3Q8aW50PihtX3JlYWR5U3RhdGUpKTsKLQogICAgIGlmIChtX2xvYWRpbmdNZXRhZGF0YSkKICAg
ICAgICAgbV9uZXR3b3JrU3RhdGUgPSBNZWRpYVBsYXllcjo6TG9hZGluZzsKICAgICBlbHNlIHsK
QEAgLTUyMiw4ICs1MTksMTIgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246
OnVwZAogICAgICAgICBwbGF0Zm9ybVBsYXkoKTsKICAgICB9CiAKLSAgICBMT0coTWVkaWEsICJN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnVwZGF0ZVN0YXRlcyglcCkgLSBleGl0aW5n
IHdpdGggbmV0d29ya1N0YXRlID0gJWksIHJlYWR5U3RhdGUgPSAlaSIsIAotICAgICAgICB0aGlz
LCBzdGF0aWNfY2FzdDxpbnQ+KG1fbmV0d29ya1N0YXRlKSwgc3RhdGljX2Nhc3Q8aW50PihtX3Jl
YWR5U3RhdGUpKTsKKyNpZiAhTE9HX0RJU0FCTEVECisgICAgaWYgKG1fbmV0d29ya1N0YXRlICE9
IG9sZE5ldHdvcmtTdGF0ZSB8fCBvbGRSZWFkeVN0YXRlICE9IG1fcmVhZHlTdGF0ZSkgeworICAg
ICAgICBMT0coTWVkaWEsICJNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OnVwZGF0ZVN0
YXRlcyglcCkgLSBlbnRlcmVkIHdpdGggbmV0d29ya1N0YXRlID0gJWksIHJlYWR5U3RhdGUgPSAl
aSwgIGV4aXRpbmcgd2l0aCBuZXR3b3JrU3RhdGUgPSAlaSwgcmVhZHlTdGF0ZSA9ICVpIiwKKyAg
ICAgICAgICAgIHRoaXMsIHN0YXRpY19jYXN0PGludD4ob2xkTmV0d29ya1N0YXRlKSwgc3RhdGlj
X2Nhc3Q8aW50PihvbGRSZWFkeVN0YXRlKSwgc3RhdGljX2Nhc3Q8aW50PihtX25ldHdvcmtTdGF0
ZSksIHN0YXRpY19jYXN0PGludD4obV9yZWFkeVN0YXRlKSk7CisgICAgfQorI2VuZGlmCiB9CiAK
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpzZXRTaXplKGNvbnN0IEludFNp
emUmKSAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQkocmV2aXNpb24gMTQ3OTM4KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQ
bGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTI5LDcg
KzUyOSw2IEBAIFBsYXRmb3JtTWVkaWEgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGEKIAogUGxh
dGZvcm1MYXllciogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6cGxhdGZvcm1M
YXllcigpIGNvbnN0CiB7Ci0gICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3Vu
ZGF0aW9uT2JqQzo6cGxhdGZvcm1MYXllciglcCkiLCB0aGlzKTsKICAgICByZXR1cm4gbV92aWRl
b0xheWVyLmdldCgpOwogfQogCkBAIC0xMzY3LDcgKzEzNjYsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6CiAKICAgICBBVk1lZGlhU2VsZWN0aW9uT3B0aW9uVHlw
ZSAqbWVkaWFTZWxlY3Rpb25PcHRpb24gPSB0cmFja1ByaXZhdGUgPyB0cmFja1ByaXZhdGUtPm1l
ZGlhU2VsZWN0aW9uT3B0aW9uKCkgOiAwOwogCi0gICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0Q3VycmVudFRyYWNrKCVwKSAtIHNlbGVjdGluZyBt
ZWRpYSBvcHRpb24gJXAiLCB0aGlzLCBtZWRpYVNlbGVjdGlvbk9wdGlvbik7CisgICAgTE9HKE1l
ZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6c2V0Q3VycmVudFRyYWNr
KCVwKSAtIHNlbGVjdGluZyBtZWRpYSBvcHRpb24gJXAsIGxhbmd1YWdlID0gJXMiLCB0aGlzLCBt
ZWRpYVNlbGVjdGlvbk9wdGlvbiwgW1tbbWVkaWFTZWxlY3Rpb25PcHRpb24gbG9jYWxlXSBsb2Nh
bGVJZGVudGlmaWVyXSBVVEY4U3RyaW5nXSk7CiAKICAgICBbbV9hdlBsYXllckl0ZW0uZ2V0KCkg
c2VsZWN0TWVkaWFPcHRpb246bWVkaWFTZWxlY3Rpb25PcHRpb24gaW5NZWRpYVNlbGVjdGlvbkdy
b3VwOlttX2F2QXNzZXQuZ2V0KCkgbWVkaWFTZWxlY3Rpb25Hcm91cEZvck1lZGlhQ2hhcmFjdGVy
aXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGljTGVnaWJsZV1dOwogICAgIG1fY3VycmVudFRyYWNr
ID0gdHJhY2tQcml2YXRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAko
cmV2aXNpb24gMTQ3OTM4KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNzMsNiArMjczLDcgQEAgdm9pZCBJbnRlcm5hbHM6OnJlc2V0
VG9Db25zaXN0ZW50U3RhdGUoUAogICAgICAgICBwYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkt
PnNldFByb2ZpbGVyRW5hYmxlZChmYWxzZSk7CiAjZW5kaWYKICNpZiBFTkFCTEUoVklERU9fVFJB
Q0spICYmICFQTEFURk9STShXSU4pCisgICAgcGFnZS0+Z3JvdXAoKS5jYXB0aW9uUHJlZmVyZW5j
ZXMoKS0+c2V0Q2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUoZW1wdHlTdHJpbmcoKSk7CiAgICAg
cGFnZS0+Z3JvdXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKS0+c2V0VGVzdGluZ01vZGUoZmFsc2Up
OwogI2VuZGlmCiAgICAgaWYgKCFwYWdlLT5tYWluRnJhbWUoKS0+ZWRpdG9yKCktPmlzQ29udGlu
dW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkpCkBAIC0yMTA3LDQgKzIxMDgsMjggQEAgYm9vbCBJ
bnRlcm5hbHM6OmlzU2VsZWN0UG9wdXBWaXNpYmxlKE5vZAogICAgIHJldHVybiBtZW51TGlzdC0+
cG9wdXBJc1Zpc2libGUoKTsKIH0KIAorI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgIVBMQVRG
T1JNKFdJTikKKworU3RyaW5nIEludGVybmFsczo6Y2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUo
RXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gY29udGV4dERv
Y3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPnBhZ2UoKSkgeworICAg
ICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKKyAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5n
KCk7CisgICAgfQorCisgICAgcmV0dXJuIGRvY3VtZW50LT5wYWdlKCktPmdyb3VwKCkuY2FwdGlv
blByZWZlcmVuY2VzKCktPmNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKCk7Cit9CisKK3ZvaWQg
SW50ZXJuYWxzOjpzZXRDYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZShjb25zdCBTdHJpbmcmIG92
ZXJyaWRlLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBj
b250ZXh0RG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1bWVudC0+cGFnZSgp
KSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgZG9jdW1lbnQtPnBhZ2UoKS0+Z3JvdXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMo
KS0+c2V0Q2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUob3ZlcnJpZGUpOworfQorI2VuZGlmCiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJKHJldmlzaW9uIDE0NzkzOCkKKysr
IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMx
MSw2ICszMTEsMTEgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc1NlbGVjdFBvcHVwVmlzaWJsZShO
b2RlKik7CiAKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spICYmICFQTEFURk9STShXSU4pCisgICAg
U3RyaW5nIGNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2
b2lkIHNldENhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlv
bkNvZGUmKTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEludGVybmFscyhEb2N1
bWVudCopOwogICAgIERvY3VtZW50KiBjb250ZXh0RG9jdW1lbnQoKSBjb25zdDsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwJKHJldmlzaW9uIDE0NzkzOCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjcyLDUg
KzI3Miw4IEBACiAKICAgICBET01TdHJpbmcgZ2V0SW1hZ2VTb3VyY2VVUkwoaW4gRWxlbWVudCBl
bGVtZW50KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAorICAgIFtDb25kaXRpb25hbD1WSURFT10g
RE9NU3RyaW5nIGNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKCkgcmFpc2VzIChET01FeGNlcHRp
b24pOworICAgIFtDb25kaXRpb25hbD1WSURFT10gdm9pZCBzZXRDYXB0aW9uc1N0eWxlU2hlZXRP
dmVycmlkZShpbiBET01TdHJpbmcgb3ZlcnJpZGUpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKwog
ICAgIGJvb2xlYW4gaXNTZWxlY3RQb3B1cFZpc2libGUoaW4gTm9kZSBub2RlKTsKIH07CkluZGV4
OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxNDc5NzUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMy0wNC0wOCAgRXJpYyBDYXJsc29uICA8ZXJpYy5j
YXJsc29uQGFwcGxlLmNvbT4KKworICAgICAgICBbTWFjXSB1c2VyIGNhcHRpb24gc3R5bGVzIG5v
dCBhcHBsaWVkIHRvIGNvcnJlY3QgZWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE0MjMwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBtZWRpYS90cmFjay90cmFjay1jc3MtdXNlci1vdmVycmlk
ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3RyYWNrL3RyYWNrLWNzcy11
c2VyLW92ZXJyaWRlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1lZGlhL3RyYWNrL3RyYWNrLWN1
ZS1jb250YWluZXItcmVuZGVyaW5nLXBvc2l0aW9uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBt
ZWRpYS90cmFjay90cmFjay1jdWUtY29udGFpbmVyLXJlbmRlcmluZy1wb3NpdGlvbi5odG1sOgor
ICAgICAgICAqIG1lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmctZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIG1lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmcuaHRtbDogRm9udCBzaXpl
IGlzIG5vdCBhcHBsaWVkIGluc3RhbnRseSB3aGVuIGEgdmlkZW8gZWxlbWVudCBpcworICAgICAg
ICAgICAgcmVzaXplZCwgc28gY2hlY2sgYWZ0ZXIgYSB2ZXJ5IHNob3J0IGRlbGF5LgorCiAyMDEz
LTA0LTA4ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFtNYWNdIEZpeCB0ZXN0IGV4cGVjdGF0aW9ucyBmb3IgaWV0ZXN0Y2VudGVyL2NzczMvZ3JpZC9n
cmlkLWl0ZW1zLTAwMy5odG0KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWNz
cy11c2VyLW92ZXJyaWRlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9t
ZWRpYS90cmFjay90cmFjay1jc3MtdXNlci1vdmVycmlkZS1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jc3MtdXNlci1vdmVycmlkZS1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMyBAQAorCitpbnRlcm5hbHMu
Y2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUgPSBmdW5jdGlvbiBjYXB0aW9uc1N0eWxlU2hlZXRP
dmVycmlkZSgpIHsgW25hdGl2ZSBjb2RlXSB9CitUZXN0IHRoYXQgc3R5bGUgdG8gYWxsIGN1ZXMg
aXMgYXBwbGllZCBjb3JyZWN0bHkuCitFVkVOVChjYW5wbGF5dGhyb3VnaCkKK0VWRU5UKHNlZWtl
ZCkKKworKiogQ2hlY2sgc3R5bGUgaW4gLnZ0dCBmaWxlICoqCitFWFBFQ1RFRCAoZ2V0Q29tcHV0
ZWRTdHlsZSh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ2N1ZScpKS5jb2xvciA9PSAn
cmdiKDI1NSwgMjU1LCAyNTUpJykgT0sKK0VYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKHRleHRU
cmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvLCAnY3VlJykpLmJhY2tncm91bmRDb2xvciA9PSAncmdi
YSgwLCAwLCAwLCAwLjgpJykgT0sKKworKiogQWRkIHN0eWxlIHRvIHRoZSBkb2N1bWVudCAqKgor
UlVOKHN0eWxlc2hlZXQuaW5zZXJ0UnVsZSgndmlkZW86OmN1ZSB7IGNvbG9yOiBwdXJwbGU7IGJh
Y2tncm91bmQtY29sb3I6IGxpbWU7IH0nLCAwKSkKK0VYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxl
KHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvLCAnY3VlJykpLmNvbG9yID09ICdyZ2IoMTI4
LCAwLCAxMjgpJykgT0sKK0VYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3Bs
YXlFbGVtZW50KHZpZGVvLCAnY3VlJykpLmJhY2tncm91bmRDb2xvciA9PSAncmdiKDAsIDI1NSwg
MCknKSBPSworCisqKiBBZGQgYW4gb3ZlcnJpZGUsIHdpdGhvdXQgJyFpbXBvcnRhbnQnICoqCitS
VU4oaW50ZXJuYWxzLnNldENhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKCd2aWRlbzo6Y3VlIHsg
Y29sb3I6IGJsdWU7IGJhY2tncm91bmQtY29sb3I6IHllbGxvdzsgfScpKQoraW50ZXJuYWxzLmNh
cHRpb25zU3R5bGVTaGVldE92ZXJyaWRlID0gZnVuY3Rpb24gY2FwdGlvbnNTdHlsZVNoZWV0T3Zl
cnJpZGUoKSB7IFtuYXRpdmUgY29kZV0gfQorRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUodGV4
dFRyYWNrRGlzcGxheUVsZW1lbnQodmlkZW8sICdjdWUnKSkuY29sb3IgPT0gJ3JnYigxMjgsIDAs
IDEyOCknKSBPSworRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUodGV4dFRyYWNrRGlzcGxheUVs
ZW1lbnQodmlkZW8sICdjdWUnKSkuYmFja2dyb3VuZENvbG9yID09ICdyZ2IoMCwgMjU1LCAwKScp
IE9LCisKKyoqIE1hcmsgYmFja2dyb3VuZC1jb2xvciAnIWltcG9ydGFudCcgKioKK1JVTihpbnRl
cm5hbHMuc2V0Q2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUoJ3ZpZGVvOjpjdWUgeyBjb2xvcjog
Ymx1ZSA7IGJhY2tncm91bmQtY29sb3I6IHllbGxvdyAhaW1wb3J0YW50OyB9JykpCitFWFBFQ1RF
RCAoZ2V0Q29tcHV0ZWRTdHlsZSh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ2N1ZScp
KS5jb2xvciA9PSAncmdiKDEyOCwgMCwgMTI4KScpIE9LCitFWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRT
dHlsZSh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ2N1ZScpKS5iYWNrZ3JvdW5kQ29s
b3IgPT0gJ3JnYigyNTUsIDI1NSwgMCknKSBPSworCisqKiBNYXJrIGNvbG9yICchaW1wb3J0YW50
JyAqKgorUlVOKHN0eWxlc2hlZXQuaW5zZXJ0UnVsZSgndmlkZW86OmN1ZSB7IGNvbG9yOiBibHVl
ICFpbXBvcnRhbnQ7IGJhY2tncm91bmQtY29sb3I6IHllbGxvdyAhaW1wb3J0YW50OyB9JywgMCkp
CitFWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZSh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRl
bywgJ2N1ZScpKS5jb2xvciA9PSAncmdiKDAsIDAsIDI1NSknKSBPSworRVhQRUNURUQgKGdldENv
bXB1dGVkU3R5bGUodGV4dFRyYWNrRGlzcGxheUVsZW1lbnQodmlkZW8sICdjdWUnKSkuYmFja2dy
b3VuZENvbG9yID09ICdyZ2IoMjU1LCAyNTUsIDApJykgT0sKKworRU5EIE9GIFRFU1QKKwpJbmRl
eDogTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3NzLXVzZXItb3ZlcnJpZGUuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jc3MtdXNlci1vdmVy
cmlkZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2st
Y3NzLXVzZXItb3ZlcnJpZGUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcyIEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICAgIDxoZWFkPgorICAgICAgICA8bWV0YSBodHRwLWVx
dWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgLz4K
KworICAgICAgICA8c2NyaXB0IHNyYz0uLi9tZWRpYS1maWxlLmpzPjwvc2NyaXB0PgorICAgICAg
ICA8c2NyaXB0IHNyYz0uLi92aWRlby10ZXN0LmpzPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0
IHNyYz0uLi9tZWRpYS1jb250cm9scy5qcz48L3NjcmlwdD4KKworICAgICAgICA8c2NyaXB0Pgor
ICAgICAgICAgICAgdmFyIHNlZWtDb3VudCA9IDA7CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHNl
ZWtlZCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRDdWUgPSB0
ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ2N1ZScpOworCisgICAgICAgICAgICAgICAg
Y29uc29sZVdyaXRlKCI8YnI+KiogQ2hlY2sgc3R5bGUgaW4gLnZ0dCBmaWxlICoqIik7CisgICAg
ICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3Bs
YXlFbGVtZW50KHZpZGVvLCAnY3VlJykpLmNvbG9yIiwgInJnYigyNTUsIDI1NSwgMjU1KSIpOwor
ICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZ2V0Q29tcHV0ZWRTdHlsZSh0ZXh0VHJhY2tE
aXNwbGF5RWxlbWVudCh2aWRlbywgJ2N1ZScpKS5iYWNrZ3JvdW5kQ29sb3IiLCAicmdiYSgwLCAw
LCAwLCAwLjgpIik7CisKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIjxicj4qKiBBZGQg
c3R5bGUgdG8gdGhlIGRvY3VtZW50ICoqIik7CisgICAgICAgICAgICAgICAgdmFyIHN0eWxlRWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7CisgICAgICAgICAgICAgICAg
ZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChzdHlsZUVsZW1lbnQpOworICAgICAgICAgICAgICAg
IHN0eWxlc2hlZXQgPSBzdHlsZUVsZW1lbnQuc2hlZXQ7CisgICAgICAgICAgICAgICAgcnVuKCJz
dHlsZXNoZWV0Lmluc2VydFJ1bGUoJ3ZpZGVvOjpjdWUgeyBjb2xvcjogcHVycGxlOyBiYWNrZ3Jv
dW5kLWNvbG9yOiBsaW1lOyB9JywgMCkiKTsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5
Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImdldENvbXB1dGVkU3R5
bGUodGV4dFRyYWNrRGlzcGxheUVsZW1lbnQodmlkZW8sICdjdWUnKSkuY29sb3IiLCAicmdiKDEy
OCwgMCwgMTI4KSIpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZ2V0Q29tcHV0ZWRT
dHlsZSh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ2N1ZScpKS5iYWNrZ3JvdW5kQ29s
b3IiLCAicmdiKDAsIDI1NSwgMCkiKTsKKworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgi
PGJyPioqIEFkZCBhbiBvdmVycmlkZSwgd2l0aG91dCAnIWltcG9ydGFudCcgKioiKTsKKyAgICAg
ICAgICAgICAgICBkb2N1bWVudC5ib2R5Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICBydW4o
ImludGVybmFscy5zZXRDYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZSgndmlkZW86OmN1ZSB7IGNv
bG9yOiBibHVlOyBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7IH0nKSIpOworICAgICAgICAgICAg
ICAgIGNvbnNvbGVXcml0ZSgiaW50ZXJuYWxzLmNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlID0g
IiArIGludGVybmFscy5jYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZSk7CisgICAgICAgICAgICAg
ICAgZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVk
KCJnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvLCAnY3VlJykp
LmNvbG9yIiwgInJnYigxMjgsIDAsIDEyOCkiKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0
ZWQoImdldENvbXB1dGVkU3R5bGUodGV4dFRyYWNrRGlzcGxheUVsZW1lbnQodmlkZW8sICdjdWUn
KSkuYmFja2dyb3VuZENvbG9yIiwgInJnYigwLCAyNTUsIDApIik7CisKKyAgICAgICAgICAgICAg
ICBjb25zb2xlV3JpdGUoIjxicj4qKiBNYXJrIGJhY2tncm91bmQtY29sb3IgJyFpbXBvcnRhbnQn
ICoqIik7CisgICAgICAgICAgICAgICAgcnVuKCJpbnRlcm5hbHMuc2V0Q2FwdGlvbnNTdHlsZVNo
ZWV0T3ZlcnJpZGUoJ3ZpZGVvOjpjdWUgeyBjb2xvcjogYmx1ZSA7IGJhY2tncm91bmQtY29sb3I6
IHllbGxvdyAhaW1wb3J0YW50OyB9JykiKTsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5
Lm9mZnNldFRvcDsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImdldENvbXB1dGVkU3R5
bGUodGV4dFRyYWNrRGlzcGxheUVsZW1lbnQodmlkZW8sICdjdWUnKSkuY29sb3IiLCAicmdiKDEy
OCwgMCwgMTI4KSIpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZ2V0Q29tcHV0ZWRT
dHlsZSh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ2N1ZScpKS5iYWNrZ3JvdW5kQ29s
b3IiLCAicmdiKDI1NSwgMjU1LCAwKSIpOworCisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRl
KCI8YnI+KiogTWFyayBjb2xvciAnIWltcG9ydGFudCcgKioiKTsKKyAgICAgICAgICAgICAgICBy
dW4oInN0eWxlc2hlZXQuaW5zZXJ0UnVsZSgndmlkZW86OmN1ZSB7IGNvbG9yOiBibHVlICFpbXBv
cnRhbnQ7IGJhY2tncm91bmQtY29sb3I6IHllbGxvdyAgIWltcG9ydGFudDsgfScsIDApIik7Cisg
ICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAg
dGVzdEV4cGVjdGVkKCJnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZp
ZGVvLCAnY3VlJykpLmNvbG9yIiwgInJnYigwLCAwLCAyNTUpIik7CisgICAgICAgICAgICAgICAg
dGVzdEV4cGVjdGVkKCJnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZp
ZGVvLCAnY3VlJykpLmJhY2tncm91bmRDb2xvciIsICJyZ2IoMjU1LCAyNTUsIDApIik7CisKKyAg
ICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOworICAgICAgICAgICAgICAgIGVuZFRlc3Qo
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gbG9hZGVkKCkKKyAgICAg
ICAgICAgIHsKK2NvbnNvbGVXcml0ZSgiPGJyPmludGVybmFscy5jYXB0aW9uc1N0eWxlU2hlZXRP
dmVycmlkZSA9ICIgKyBpbnRlcm5hbHMuY2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUpOworCisg
ICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCJUZXN0IHRoYXQgc3R5bGUgdG8gYWxsIGN1ZXMg
aXMgYXBwbGllZCBjb3JyZWN0bHkuIik7CisgICAgICAgICAgICAgICAgZmluZE1lZGlhRWxlbWVu
dCgpOworICAgICAgICAgICAgICAgIHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoJ3ZpZGVvJywg
Jy4uL2NvbnRlbnQvdGVzdCcpOworICAgICAgICAgICAgICAgIHdhaXRGb3JFdmVudCgnc2Vla2Vk
Jywgc2Vla2VkKTsKKyAgICAgICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ2NhbnBsYXl0aHJvdWdo
JywgZnVuY3Rpb24oKSB7IHZpZGVvLmN1cnJlbnRUaW1lID0gLjU7IH0pOworICAgICAgICAgICAg
fQorCisgICAgICAgIDwvc2NyaXB0PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9Imxv
YWRlZCgpIj4KKyAgICAgICAgPHZpZGVvIGNvbnRyb2xzID4KKyAgICAgICAgICAgIDx0cmFjayBz
cmM9ImNhcHRpb25zLXdlYnZ0dC9zdHlsaW5nLnZ0dCIga2luZD0iY2FwdGlvbnMiIGRlZmF1bHQ+
CisgICAgICAgIDwvdmlkZW8+CisgICAgPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvbWVkaWEvdHJhY2svdHJhY2stY3VlLWNvbnRhaW5lci1yZW5kZXJpbmctcG9zaXRpb24tZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1
ZS1jb250YWluZXItcmVuZGVyaW5nLXBvc2l0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTQ3
OTM4KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3VlLWNvbnRhaW5lci1yZW5k
ZXJpbmctcG9zaXRpb24tZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBA
QAotVGhlIHRvcCBvZiB0aGUgdGV4dCB0cmFjayBjb250YWluZXIgc2hvdWxkIGJlIGluIHRoZSBi
b3R0b20gMjUlIG9mIHRoZSB2aWRlbyBlbGVtZW50LgorVGhlIHRvcCBvZiB0aGUgdGV4dCB0cmFj
ayBjb250YWluZXIgc2hvdWxkIGJlIGluIHRoZSBib3R0b20gMzAlIG9mIHRoZSB2aWRlbyBlbGVt
ZW50LgogRVZFTlQoY2FucGxheXRocm91Z2gpCiAKLUVYUEVDVEVEIChjdWVEaXNwbGF5RWxlbWVu
dC5vZmZzZXRUb3AgPiAodmlkZW8udmlkZW9IZWlnaHQgKiAuNzUpID09ICd0cnVlJykgT0sKK0VY
UEVDVEVEIChjdWVEaXNwbGF5RWxlbWVudC5vZmZzZXRUb3AgPiAodmlkZW8udmlkZW9IZWlnaHQg
KiAuNzApID09ICd0cnVlJykgT0sKIEVORCBPRiBURVNUCiAKSW5kZXg6IExheW91dFRlc3RzL21l
ZGlhL3RyYWNrL3RyYWNrLWN1ZS1jb250YWluZXItcmVuZGVyaW5nLXBvc2l0aW9uLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3VlLWNvbnRhaW5lci1y
ZW5kZXJpbmctcG9zaXRpb24uaHRtbAkocmV2aXNpb24gMTQ3OTM4KQorKysgTGF5b3V0VGVzdHMv
bWVkaWEvdHJhY2svdHJhY2stY3VlLWNvbnRhaW5lci1yZW5kZXJpbmctcG9zaXRpb24uaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMjAsMTMgKzIwLDE0IEBACiAKICAgICAgICAgICAgIGNvbnNvbGVX
cml0ZSgiIik7CiAgICAgICAgICAgICBjdWVEaXNwbGF5RWxlbWVudCA9IHRleHRUcmFja0Rpc3Bs
YXlFbGVtZW50KHZpZGVvLCAnZGlzcGxheScsIDApOwotICAgICAgICAgICAgdGVzdEV4cGVjdGVk
KCJjdWVEaXNwbGF5RWxlbWVudC5vZmZzZXRUb3AgPiAodmlkZW8udmlkZW9IZWlnaHQgKiAuNzUp
IiwgdHJ1ZSk7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5Lm9mZnNldFRvcDsKKyAgICAgICAg
ICAgIHRlc3RFeHBlY3RlZCgiY3VlRGlzcGxheUVsZW1lbnQub2Zmc2V0VG9wID4gKHZpZGVvLnZp
ZGVvSGVpZ2h0ICogLjcwKSIsIHRydWUpOwogICAgICAgICAgICAgZW5kVGVzdCgpOwogICAgICAg
ICB9CiAKICAgICAgICAgZnVuY3Rpb24gbG9hZGVkKCkKICAgICAgICAgewotICAgICAgICAgICAg
Y29uc29sZVdyaXRlKCJUaGUgdG9wIG9mIHRoZSB0ZXh0IHRyYWNrIGNvbnRhaW5lciBzaG91bGQg
YmUgaW4gdGhlIGJvdHRvbSAyNSUgb2YgdGhlIHZpZGVvIGVsZW1lbnQuIik7CisgICAgICAgICAg
ICBjb25zb2xlV3JpdGUoIlRoZSB0b3Agb2YgdGhlIHRleHQgdHJhY2sgY29udGFpbmVyIHNob3Vs
ZCBiZSBpbiB0aGUgYm90dG9tIDMwJSBvZiB0aGUgdmlkZW8gZWxlbWVudC4iKTsKIAogICAgICAg
ICAgICAgZmluZE1lZGlhRWxlbWVudCgpOwogICAgICAgICAgICAgdmlkZW8uc3JjID0gZmluZE1l
ZGlhRmlsZSgndmlkZW8nLCAnLi4vY29udGVudC90ZXN0Jyk7CkluZGV4OiBMYXlvdXRUZXN0cy9t
ZWRpYS90cmFjay90cmFjay1jdWUtcmVuZGVyaW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jdWUtcmVuZGVyaW5nLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMTQ3OTM4KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3Vl
LXJlbmRlcmluZy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTM0LDIyICszNCwyMyBA
QCBFWFBFQ1RFRCAoMiAqIHRlc3RDdWVEaXNwbGF5Qm94Lm9mZnNldExlCiBUZXN0IHRoZSBjdWUg
ZGlzcGxheSBjb2xvcnMgYW5kIGZvbnQuCiBSVU4odmlkZW8ud2lkdGggPSAzMjApCiBSVU4odmlk
ZW8uaGVpZ2h0ID0gMjQwKQotRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUodGV4dFRyYWNrRGlz
cGxheUVsZW1lbnQodmlkZW8pKS5mb250U2l6ZSA9PSAnMTJweCcpIE9LCitFWFBFQ1RFRCAoZ2V0
Q29tcHV0ZWRTdHlsZShjdXJyZW50Q3VlKS5mb250U2l6ZSA9PSAnMTJweCcpIE9LCiAKIFJVTih2
aWRlby53aWR0aCA9IDY0MCkKIFJVTih2aWRlby5oZWlnaHQgPSA0ODApCi1FWFBFQ1RFRCAoZ2V0
Q29tcHV0ZWRTdHlsZSh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbykpLmZvbnRTaXplID09
ICcyNHB4JykgT0sKK0VYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKGN1cnJlbnRDdWUpLmZvbnRT
aXplID09ICcyNHB4JykgT0sKKworUlVOKHZpZGVvLndpZHRoID0gOTYwKQorUlVOKHZpZGVvLmhl
aWdodCA9IDcyMCkKK0VYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKGN1cnJlbnRDdWUpLmZvbnRT
aXplID09ICczNnB4JykgT0sKIAogUlVOKHZpZGVvLndpZHRoID0gMTI4MCkKIFJVTih2aWRlby5o
ZWlnaHQgPSA5NjApCi1FWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZSh0ZXh0VHJhY2tEaXNwbGF5
RWxlbWVudCh2aWRlbykpLmZvbnRTaXplID09ICc0OHB4JykgT0sKK0VYUEVDVEVEIChnZXRDb21w
dXRlZFN0eWxlKGN1cnJlbnRDdWUpLmZvbnRTaXplID09ICc0OHB4JykgT0sKKworRVhQRUNURUQg
KGdldENvbXB1dGVkU3R5bGUoY3VycmVudEN1ZSkuZm9udEZhbWlseSA9PSAnc2Fucy1zZXJpZicp
IE9LCitFWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShjdXJyZW50Q3VlKS5jb2xvciA9PSAncmdi
KDI1NSwgMjU1LCAyNTUpJykgT0sKK0VYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFj
a0Rpc3BsYXlFbGVtZW50KHZpZGVvLCAnZGlzcGxheScpLmZpcnN0Q2hpbGQpLmJhY2tncm91bmRD
b2xvciA9PSAncmdiYSgwLCAwLCAwLCAwLjgpJykgT0sKIAotUlVOKHZpZGVvLndpZHRoID0gMjU2
MCkKLVJVTih2aWRlby5oZWlnaHQgPSAxNDQwKQotRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUo
dGV4dFRyYWNrRGlzcGxheUVsZW1lbnQodmlkZW8pKS5mb250U2l6ZSA9PSAnNzJweCcpIE9LCi0K
LUVYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVv
KSkuZm9udEZhbWlseSA9PSAnc2Fucy1zZXJpZicpIE9LCi1FWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRT
dHlsZSh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbykpLmNvbG9yID09ICdyZ2IoMjU1LCAy
NTUsIDI1NSknKSBPSwotRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUodGV4dFRyYWNrRGlzcGxh
eUVsZW1lbnQodmlkZW8sICdkaXNwbGF5JykuZmlyc3RDaGlsZCkuYmFja2dyb3VuZENvbG9yID09
ICdyZ2JhKDAsIDAsIDAsIDAuNzk2ODc1KScpLCBPQlNFUlZFRCAncmdiYSgwLCAwLCAwLCAwLjgp
JyBGQUlMCiBFTkQgT0YgVEVTVAogCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFj
ay1jdWUtcmVuZGVyaW5nLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdHJh
Y2svdHJhY2stY3VlLXJlbmRlcmluZy5odG1sCShyZXZpc2lvbiAxNDc5MzgpCisrKyBMYXlvdXRU
ZXN0cy9tZWRpYS90cmFjay90cmFjay1jdWUtcmVuZGVyaW5nLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTEyLDI5ICsxMiwzMyBAQAogICAgICAgICB2YXIgdGVzdFRyYWNrOwogICAgICAgICB2YXIg
dGVzdEN1ZURpc3BsYXlCb3g7CiAgICAgICAgIHZhciBzZWVrZWRDb3VudCA9IDA7CisgICAgICAg
IHZhciByZXNpemVDb3VudCA9IDE7CiAgICAgICAgIHZhciBpbmZvID0gWyAiTG9yZW0iLCAiaXBz
dW0iLCAiZG9sb3IiLCAic2l0IiBdOwogCi0gICAgICAgIGZ1bmN0aW9uIHRlc3RGb250U2l6ZSh3
aWR0aCwgaGVpZ2h0KQorICAgICAgICBmdW5jdGlvbiBzZXRWaWRlb1NpemUod2lkdGgsIGhlaWdo
dCkKICAgICAgICAgewogICAgICAgICAgICAgcnVuKCJ2aWRlby53aWR0aCA9ICIgKyB3aWR0aCk7
CiAgICAgICAgICAgICBydW4oInZpZGVvLmhlaWdodCA9ICIgKyBoZWlnaHQpOwotICAgICAgICAg
ICAgZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImdl
dENvbXB1dGVkU3R5bGUodGV4dFRyYWNrRGlzcGxheUVsZW1lbnQodmlkZW8pKS5mb250U2l6ZSIs
IHBhcnNlSW50KGhlaWdodCAqIDAuMDUpICsgInB4Iik7Ci0gICAgICAgICAgICBjb25zb2xlV3Jp
dGUoIiIpOwogICAgICAgICB9CiAKLSAgICAgICAgZnVuY3Rpb24gdGVzdEN1ZVN0eWxlKCkKKyAg
ICAgICAgZnVuY3Rpb24gcmVzaXplVGVzdCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnNv
bGVXcml0ZSgiPGJyPlRlc3QgdGhlIGN1ZSBkaXNwbGF5IGNvbG9ycyBhbmQgZm9udC4iKTsKLSAg
ICAgICAgICAgIHRlc3RGb250U2l6ZSgzMjAsIDI0MCk7Ci0gICAgICAgICAgICB0ZXN0Rm9udFNp
emUoNjQwLCA0ODApOwotICAgICAgICAgICAgdGVzdEZvbnRTaXplKDEyODAsIDk2MCk7Ci0gICAg
ICAgICAgICB0ZXN0Rm9udFNpemUoMjU2MCwgMTQ0MCk7Ci0KLSAgICAgICAgICAgIHRlc3RFeHBl
Y3RlZCgiZ2V0Q29tcHV0ZWRTdHlsZSh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbykpLmZv
bnRGYW1pbHkiLCAic2Fucy1zZXJpZiIpOwotICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJnZXRD
b21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvKSkuY29sb3IiLCAicmdi
KDI1NSwgMjU1LCAyNTUpIik7Ci0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImdldENvbXB1dGVk
U3R5bGUodGV4dFRyYWNrRGlzcGxheUVsZW1lbnQodmlkZW8sICdkaXNwbGF5JykuZmlyc3RDaGls
ZCkuYmFja2dyb3VuZENvbG9yIiwgInJnYmEoMCwgMCwgMCwgMC43OTY4NzUpIik7CisgICAgICAg
ICAgICBkb2N1bWVudC5ib2R5Lm9mZnNldFRvcDsKKyAgICAgICAgICAgIGN1cnJlbnRDdWUgPSB0
ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ2N1ZScpOworICAgICAgICAgICAgdGVzdEV4
cGVjdGVkKCJnZXRDb21wdXRlZFN0eWxlKGN1cnJlbnRDdWUpLmZvbnRTaXplIiwgcGFyc2VJbnQo
MjQwICogcmVzaXplQ291bnQgKiAwLjA1KSArICJweCIpOworICAgICAgICAgICAgY29uc29sZVdy
aXRlKCIiKTsKKworICAgICAgICAgICAgaWYgKCsrcmVzaXplQ291bnQgPCA1KSB7CisgICAgICAg
ICAgICAgICAgc2V0VmlkZW9TaXplKDMyMCAqIHJlc2l6ZUNvdW50LCAyNDAgKiByZXNpemVDb3Vu
dCk7CisgICAgICAgICAgICAgICAgc2V0VGltZW91dChyZXNpemVUZXN0LCAxMCk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIHRlc3RFeHBlY3Rl
ZCgiZ2V0Q29tcHV0ZWRTdHlsZShjdXJyZW50Q3VlKS5mb250RmFtaWx5IiwgInNhbnMtc2VyaWYi
KTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZ2V0Q29tcHV0ZWRTdHlsZShjdXJyZW50Q3Vl
KS5jb2xvciIsICJyZ2IoMjU1LCAyNTUsIDI1NSkiKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3Rl
ZCgiZ2V0Q29tcHV0ZWRTdHlsZSh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ2Rpc3Bs
YXknKS5maXJzdENoaWxkKS5iYWNrZ3JvdW5kQ29sb3IiLCAicmdiYSgwLCAwLCAwLCAwLjgpIik7
CisKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CiAgICAgICAgICAgICBlbmRUZXN0KCk7
CiAKICAgICAgICAgICAgIC8vIFJlc2l6ZSB0aGUgdmlkZW8gc28gaXQgaXMgZWFzaWVyIHRvIGlu
dGVyYWN0IHdpdGggaXQgbWFudWFsbHksIGlmIG5lY2Vzc2FyeS4KQEAgLTQyLDYgKzQ2LDEzIEBA
CiAgICAgICAgICAgICB2aWRlby5oZWlnaHQgPSAyNDA7CiAgICAgICAgIH0KIAorICAgICAgICBm
dW5jdGlvbiB0ZXN0Q3VlU3R5bGUoKQorICAgICAgICB7CisgICAgICAgICAgICBjb25zb2xlV3Jp
dGUoIjxicj5UZXN0IHRoZSBjdWUgZGlzcGxheSBjb2xvcnMgYW5kIGZvbnQuIik7CisgICAgICAg
ICAgICBzZXRWaWRlb1NpemUoMzIwLCAyNDApOworICAgICAgICAgICAgc2V0VGltZW91dChyZXNp
emVUZXN0LCAxMCk7CisgICAgICAgIH0KKwogICAgICAgICBmdW5jdGlvbiBzZWVrZWQoKQogICAg
ICAgICB7CiAgICAgICAgICAgICBpZiAodGVzdEVuZGVkKQo=
</data>
<flag name="commit-queue"
          id="219129"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196991</attachid>
            <date>2013-04-08 21:33:53 -0700</date>
            <delta_ts>2013-04-09 14:01:23 -0700</delta_ts>
            <desc>Updated patch.</desc>
            <filename>patch_5.txt</filename>
            <type>text/plain</type>
            <size>48228</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0Nzk3NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc0IEBACisyMDEzLTA0LTA4ICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIHVzZXIgY2Fw
dGlvbiBzdHlsZXMgbm90IGFwcGxpZWQgdG8gY29ycmVjdCBlbGVtZW50CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTQyMzAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBtZWRpYS90cmFjay90cmFj
ay1jc3MtdXNlci1vdmVycmlkZS5odG1sCisKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dXBkYXRlQWN0aXZl
VGV4dFRyYWNrQ3Vlcyk6IERyaXZlIGJ5IGNsZWFuLXVwIHNvIHdlIGRvbid0IGxvZyBleGNlc3Np
dmVseS4KKworICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6
Ok1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQpOiBJbml0aWFsaXplCisgICAg
ICAgICAgICBuZXcgbWVtYmVyIHZhcmlhYmxlcy4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
dHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZURpc3BsYXkpOiBTZXQgY3VlIGZv
bnQgc2l6ZSB3aGVuIGl0IGlzCisgICAgICAgICAgICBpbnNlcnRlZCBpbnRvIHRoZSB0cmVlLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6
dXBkYXRlVGltZXJGaXJlZCk6IFVwZGF0ZSB0aGUgZm9udCBzaXplIG9mIAorICAgICAgICAgICAg
YWxsIGFjdGl2ZSBjdWVzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGV4dFRyYWNr
Q29udGFpbmVyRWxlbWVudDo6dXBkYXRlU2l6ZXMpOiBTZXQgc2l6ZS1yZWxhdGl2ZSBDU1MgcHJv
cGVydGllcworICAgICAgICAgICAgYWZ0ZXIgYSB0aW1lIGJlY2F1c2UgdGhpcyBjYW4gYmUgY2Fs
bGVkIGR1cmluZyBsYXlvdXQuCisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxl
bWVudHMuaDoKKworICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sczo6dGV4dFRyYWNrUHJlZmVyZW5jZXNDaGFuZ2Vk
KTogQ2FsbCBjbG9zZWRDYXB0aW9uVHJhY2tzQ2hhbmdlZCBiZWZvcmUgdXBkYXRlU2l6ZXMuCisK
KyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0VHJhY2tDdWU6OnNldEZvbnRTaXplKTogTmV3LCBzZXQgdGhlIGN1ZSdzIGZvbnQgc2l6
ZS4KKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oOgorCisgICAgICAgICogaHRt
bC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRU
cmFja0N1ZUdlbmVyaWNCb3hFbGVtZW50OjphcHBseUNTU1Byb3BlcnRpZXMpOiBTZXQgY3VlIHBy
b3BlcnRpZXMgb24gdGhlIGN1ZSBlbGVtZW50CisgICAgICAgICAgICBpbnN0ZWFkIG9mIG9uIHRo
ZSBjdWUgYm94IHRvIG1hdGNoIHdoYXQgd2UgZG8gZm9yIHRoZSAiY3VlIiBwc2V1ZG8gZWxlbWVu
dC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZUdlbmVyaWM6OnNldEZvbnRTaXplKTog
TmV3LCBzZXQgdGhlIGN1ZSdzIGZvbnQgc2l6ZS4KKyAgICAgICAgKiBodG1sL3RyYWNrL1RleHRU
cmFja0N1ZUdlbmVyaWMuaDoKKworICAgICAgICAqIGh0bWwvdHJhY2svVGV4dFRyYWNrTGlzdC5j
cHA6CisgICAgICAgIChUZXh0VHJhY2tMaXN0OjpyZW1vdmUpOiBEcml2ZS1ieSBjbGVhbnVwLCBk
b24ndCBBU1NFUlQgd2hlbiB0aGUgbWVkaWEgZWxlbWVudCBpcyBOVUxMLgorCisgICAgICAgICog
cGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhcHRp
b25Vc2VyUHJlZmVyZW5jZXM6OnNldENhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKTogTmV3LCBh
bGxvdyB1c2VyIENTUyBvdmVycmlkZXMKKyAgICAgICAgICAgIHRvIGJlIHRlc3RlZCBpbiBEUlQu
CisgICAgICAgIChXZWJDb3JlOjpDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp1cGRhdGVDYXB0aW9u
U3R5bGVTaGVldE92ZXJpZGUpOiBOZXcsIGdlbmVyYXRlIGEgdXNlciBzdHlsZQorICAgICAgICAg
ICAgc2hlZXQgb3ZlcnJpZGUuIE1vdmVkIGhlcmUgZnJvbSBDYXB0aW9uVXNlclByZWZlcmVuY2Vz
TWFjLgorICAgICAgICAqIHBhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oOgorCisgICAgICAg
ICogcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjLmg6CisgICAgICAgICogcGFnZS9DYXB0
aW9uVXNlclByZWZlcmVuY2VzTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdGlvblVzZXJQ
cmVmZXJlbmNlc01hYzo6Y2FwdGlvbnNCYWNrZ3JvdW5kQ1NTKTogRG9uJ3QgaWdub3JlIGJhY2tn
cm91bmQgY29sb3IgaW1wb3J0YW5jZS4KKyAgICAgICAgKFdlYkNvcmU6OkNhcHRpb25Vc2VyUHJl
ZmVyZW5jZXNNYWM6OmNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKTogSW1wbGVtZW50IGV2ZW4g
d2hlbiB3ZSBkb24ndCAKKyAgICAgICAgICAgIGhhdmUgdGhlIG1lZGlhIGFjY2Vzc2liaWxpdHkg
ZnJhbWV3b3JrIHNvIHRoaXMgY2FuIGJlIHRlc3RlZCBpbiBEUlQuIEFwcGx5IGFsbCBjdWUgcHJv
cGVydGllcworICAgICAgICAgICAgdG8gdGhlIGVsZW1lbnQgdXNlZCBmb3IgdGhlICJjdWUiIHBz
ZXVkbyBlbGVtZW50LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb246OmRpZExvYWRpbmdQcm9ncmVzcyk6IERyaXZl
LWJ5IGNsZWFudXAsIHJlbW92ZSBsb2dnaW5nCisgICAgICAgICAgICBiZWNhdXNlIHRoaXMgbWV0
aG9kIGlzIGNhbGxlZCBzbyBmcmVxdWVudGx5IGFuZCB0aGUgbG9nZ2luZyBpcyBub3QgZXNwZWNp
YWxseSB1c2VmdWwuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb246OnVwZGF0ZVN0YXRlcyk6IE9ubHkgbG9nIHdoZW4gdGhlIHJlYWR5L25ldHdvcmsKKyAg
ICAgICAgICAgIHN0YXRlIGNoYW5nZXMgYmVjYXVzZSB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgc28g
ZnJlcXVlbnRseS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW06CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjpwbGF0Zm9ybUxheWVyKTog
RHJpdmUtYnkgY2xlYW51cCwgcmVtb3ZlIGxvZ2dpbmcKKyAgICAgICAgICAgIGJlY2F1c2UgdGhp
cyBtZXRob2QgaXMgY2FsbGVkIHNvIGZyZXF1ZW50bHkgYW5kIHRoZSBsb2dnaW5nIGlzIG5vdCBl
c3BlY2lhbGx5IHVzZWZ1bC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakM6OnNldEN1cnJlbnRUcmFjayk6IE1ha2UgdGhlIGxvZ2dpbmcgbW9yZSB1
c2VmdWwuCisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnRlcm5hbHM6OnJlc2V0VG9Db25zaXN0ZW50U3RhdGUpOiBSZXNldCBjYXB0aW9ucyBz
dHlsZSBzaGVldCBvdmVycmlkZS4KKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6Y2FwdGlv
bnNTdHlsZVNoZWV0T3ZlcnJpZGUpOiBOZXcsIHJldHVybiB0aGUgY2FwdGlvbnMgc3R5bGUgc2hl
ZXQgb3ZlcnJpZGUuCisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNldENhcHRpb25zU3R5
bGVTaGVldE92ZXJyaWRlKTogTmV3LCBvdmVycmlkZSB0aGUgY2FwdGlvbnMgc3R5bGUgc2hlZXQg
b3ZlcnJpZGUuCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0
aW5nL0ludGVybmFscy5pZGw6CisKIDIwMTMtMDQtMDggIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFy
b2dhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRG8gbm90IGRlZmluZSBDQU5fVEhFTUVfVVJMX0lD
T04gZm9yIFBMQVRGT1JNKFdJTl9DQUlSTykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ3OTM4KQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA4MSw4ICsxMDgxLDYg
QEAgc3RhdGljIGJvb2wgZXZlbnRUaW1lQ3VlQ29tcGFyZShjb25zdCBzdAogCiB2b2lkIEhUTUxN
ZWRpYUVsZW1lbnQ6OnVwZGF0ZUFjdGl2ZVRleHRUcmFja0N1ZXMoZmxvYXQgbW92aWVUaW1lKQog
ewotICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUFjdGl2ZVRleHRUcmFj
a3MiKTsKLQogICAgIC8vIDQuOC4xMC44IFBsYXlpbmcgdGhlIG1lZGlhIHJlc291cmNlCiAKICAg
ICAvLyAgSWYgdGhlIGN1cnJlbnQgcGxheWJhY2sgcG9zaXRpb24gY2hhbmdlcyB3aGlsZSB0aGUg
c3RlcHMgYXJlIHJ1bm5pbmcsCkBAIC0xMDkxLDYgKzEwODksOCBAQCB2b2lkIEhUTUxNZWRpYUVs
ZW1lbnQ6OnVwZGF0ZUFjdGl2ZVRleHRUCiAgICAgaWYgKGlnbm9yZVRyYWNrRGlzcGxheVVwZGF0
ZVJlcXVlc3RzKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIExPRyhNZWRpYSwgIkhUTUxNZWRp
YUVsZW1lbnQ6OnVwZGF0ZUFjdGl2ZVRleHRUcmFja3MiKTsKKwogICAgIC8vIDEgLSBMZXQgY3Vy
cmVudCBjdWVzIGJlIGEgbGlzdCBvZiBjdWVzLCBpbml0aWFsaXplZCB0byBjb250YWluIGFsbCB0
aGUKICAgICAvLyBjdWVzIG9mIGFsbCB0aGUgaGlkZGVuLCBzaG93aW5nLCBvciBzaG93aW5nIGJ5
IGRlZmF1bHQgdGV4dCB0cmFja3Mgb2YgdGhlCiAgICAgLy8gbWVkaWEgZWxlbWVudCAobm90IHRo
ZSBkaXNhYmxlZCBvbmVzKSB3aG9zZSBzdGFydCB0aW1lcyBhcmUgbGVzcyB0aGFuIG9yCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVu
dHMuY3BwCShyZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExODgsNyArMTE4OCw5
IEBAIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250cm9sQ3VycmVudFQKIAogTWVkaWFDb250
cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6TWVkaWFDb250cm9sVGV4dFRyYWNrQ29udGFp
bmVyRWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBNZWRpYUNvbnRyb2xEaXZFbGVt
ZW50KGRvY3VtZW50LCBNZWRpYVRleHRUcmFja0Rpc3BsYXlDb250YWluZXIpCisgICAgLCBtX3Vw
ZGF0ZVRpbWVyKHRoaXMsICZNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50Ojp1
cGRhdGVUaW1lckZpcmVkKQogICAgICwgbV9mb250U2l6ZSgwKQorICAgICwgbV9mb250U2l6ZUlz
SW1wb3J0YW50KGZhbHNlKQogewogfQogCkBAIC0xMjc1LDkgKzEyNzcsMTEgQEAgdm9pZCBNZWRp
YUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZQogICAgICAgICAgICAgY29udGludWU7CiAK
ICAgICAgICAgUmVmUHRyPFRleHRUcmFja0N1ZUJveD4gZGlzcGxheUJveCA9IGN1ZS0+Z2V0RGlz
cGxheVRyZWUobV92aWRlb0Rpc3BsYXlTaXplLnNpemUoKSk7Ci0gICAgICAgIGlmIChkaXNwbGF5
Qm94LT5oYXNDaGlsZE5vZGVzKCkgJiYgIWNvbnRhaW5zKHN0YXRpY19jYXN0PE5vZGUqPihkaXNw
bGF5Qm94LmdldCgpKSkpCisgICAgICAgIGlmIChkaXNwbGF5Qm94LT5oYXNDaGlsZE5vZGVzKCkg
JiYgIWNvbnRhaW5zKHN0YXRpY19jYXN0PE5vZGUqPihkaXNwbGF5Qm94LmdldCgpKSkpIHsKICAg
ICAgICAgICAgIC8vIE5vdGU6IHRoZSBkaXNwbGF5IHRyZWUgb2YgYSBjdWUgaXMgcmVtb3ZlZCB3
aGVuIHRoZSBhY3RpdmUgZmxhZyBvZiB0aGUgY3VlIGlzIHVuc2V0LgogICAgICAgICAgICAgYXBw
ZW5kQ2hpbGQoZGlzcGxheUJveCwgQVNTRVJUX05PX0VYQ0VQVElPTiwgQXR0YWNoTm93KTsKKyAg
ICAgICAgICAgIGN1ZS0+c2V0Rm9udFNpemUobV9mb250U2l6ZSwgbV92aWRlb0Rpc3BsYXlTaXpl
LnNpemUoKSwgbV9mb250U2l6ZUlzSW1wb3J0YW50KTsKKyAgICAgICAgfQogICAgIH0KIAogICAg
IC8vIDExLiBSZXR1cm4gb3V0cHV0LgpAQCAtMTMwNCw2ICsxMzA4LDMxIEBAIHZvaWQgTWVkaWFD
b250cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWUKICAgICB9CiB9CiAKK3ZvaWQgTWVkaWFDb250
cm9sVGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudDo6dXBkYXRlVGltZXJGaXJlZChUaW1lcjxNZWRp
YUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50PiopCit7CisgICAgaWYgKCFkb2N1bWVu
dCgpLT5wYWdlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX3RleHRUcmFja1JlcHJl
c2VudGF0aW9uKSB7CisgICAgICAgIHNldElubGluZVN0eWxlUHJvcGVydHkoQ1NTUHJvcGVydHlX
aWR0aCwgU3RyaW5nOjpudW1iZXIobV92aWRlb0Rpc3BsYXlTaXplLnNpemUoKS53aWR0aCgpKSAr
ICJweCIpOworICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5SGVpZ2h0
LCBTdHJpbmc6Om51bWJlcihtX3ZpZGVvRGlzcGxheVNpemUuc2l6ZSgpLmhlaWdodCgpKSArICJw
eCIpOworICAgIH0KKyAgICAKKyAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQgPSB0
b1BhcmVudE1lZGlhRWxlbWVudCh0aGlzKTsKKyAgICBpZiAoIW1lZGlhRWxlbWVudCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgZmxvYXQgc21hbGxlc3REaW1lbnNpb24gPSBzdGQ6Om1pbihtX3Zp
ZGVvRGlzcGxheVNpemUuc2l6ZSgpLmhlaWdodCgpLCBtX3ZpZGVvRGlzcGxheVNpemUuc2l6ZSgp
LndpZHRoKCkpOworICAgIG1fZm9udFNpemUgPSBscmludGYoc21hbGxlc3REaW1lbnNpb24gKiAo
ZG9jdW1lbnQoKS0+cGFnZSgpLT5ncm91cCgpLmNhcHRpb25QcmVmZXJlbmNlcygpLT5jYXB0aW9u
Rm9udFNpemVTY2FsZShtX2ZvbnRTaXplSXNJbXBvcnRhbnQpKSk7CisgICAgCisgICAgQ3VlTGlz
dCBhY3RpdmVDdWVzID0gbWVkaWFFbGVtZW50LT5jdXJyZW50bHlBY3RpdmVDdWVzKCk7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBhY3RpdmVDdWVzLnNpemUoKTsgKytpKSB7CisgICAgICAg
IFRleHRUcmFja0N1ZSogY3VlID0gYWN0aXZlQ3Vlc1tpXS5kYXRhKCk7CisgICAgICAgIGN1ZS0+
c2V0Rm9udFNpemUobV9mb250U2l6ZSwgbV92aWRlb0Rpc3BsYXlTaXplLnNpemUoKSwgbV9mb250
U2l6ZUlzSW1wb3J0YW50KTsKKyAgICAgICAgCisgICAgfQorfQorCiB2b2lkIE1lZGlhQ29udHJv
bFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnVwZGF0ZVNpemVzKGJvb2wgZm9yY2VVcGRhdGUp
CiB7CiAgICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50ID0gdG9QYXJlbnRNZWRpYUVs
ZW1lbnQodGhpcyk7CkBAIC0xMzMzLDI1ICsxMzYyLDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xUZXh0
VHJhY2tDb250YWluZXJFbGVtZQogICAgICAgICByZXR1cm47CiAgICAgbV92aWRlb0Rpc3BsYXlT
aXplID0gdmlkZW9Cb3g7CiAKLSAgICBpZiAobV90ZXh0VHJhY2tSZXByZXNlbnRhdGlvbikgewot
ICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5V2lkdGgsIFN0cmluZzo6
bnVtYmVyKG1fdmlkZW9EaXNwbGF5U2l6ZS5zaXplKCkud2lkdGgoKSkgKyAicHgiKTsKLSAgICAg
ICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUhlaWdodCwgU3RyaW5nOjpudW1i
ZXIobV92aWRlb0Rpc3BsYXlTaXplLnNpemUoKS5oZWlnaHQoKSkgKyAicHgiKTsKLSAgICB9Ci0K
LSAgICBmbG9hdCBzbWFsbGVzdERpbWVuc2lvbiA9IHN0ZDo6bWluKG1fdmlkZW9EaXNwbGF5U2l6
ZS5zaXplKCkuaGVpZ2h0KCksIG1fdmlkZW9EaXNwbGF5U2l6ZS5zaXplKCkud2lkdGgoKSk7Ci0K
LSAgICBib29sIGltcG9ydGFudDsKLSAgICBmbG9hdCBmb250U2l6ZSA9IHNtYWxsZXN0RGltZW5z
aW9uICogKGRvY3VtZW50KCktPnBhZ2UoKS0+Z3JvdXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKS0+
Y2FwdGlvbkZvbnRTaXplU2NhbGUoaW1wb3J0YW50KSk7Ci0gICAgaWYgKGZvbnRTaXplICE9IG1f
Zm9udFNpemUpIHsKLSAgICAgICAgbV9mb250U2l6ZSA9IGZvbnRTaXplOwotICAgICAgICBzZXRJ
bmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFNpemUsIFN0cmluZzo6bnVtYmVyKGZv
bnRTaXplKSArICJweCIsIGltcG9ydGFudCk7Ci0gICAgfQotCi0gICAgQ3VlTGlzdCBhY3RpdmVD
dWVzID0gbWVkaWFFbGVtZW50LT5jdXJyZW50bHlBY3RpdmVDdWVzKCk7Ci0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBhY3RpdmVDdWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFRleHRUcmFj
a0N1ZSogY3VlID0gYWN0aXZlQ3Vlc1tpXS5kYXRhKCk7Ci0gICAgICAgIGN1ZS0+dmlkZW9TaXpl
RGlkQ2hhbmdlKG1fdmlkZW9EaXNwbGF5U2l6ZS5zaXplKCkpOwotICAgIH0KKyAgICBtX3VwZGF0
ZVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KIAogdm9pZCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tD
b250YWluZXJFbGVtZW50OjpwYWludFRleHRUcmFja1JlcHJlc2VudGF0aW9uKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29udGV4dFJlY3QpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmgJKHJldmlz
aW9uIDE0NzkzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVs
ZW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0OCw2ICs0NDgsOCBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgdGV4dFRyYWNrQ29udGFpbmVyRWxlbWVudFNoYWRv
d1BzZXVkb0lkKCk7CiAKIHByaXZhdGU6CisgICAgdm9pZCB1cGRhdGVUaW1lckZpcmVkKFRpbWVy
PE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ+Kik7CisKICAgICBleHBsaWNp
dCBNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVtZW50KERvY3VtZW50Kik7CiAgICAg
dmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3QgT1ZFUlJJ
REU7CiAKQEAgLTQ1Nyw4ICs0NTksMTAgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgdGV4
dFRyYWNrUmVwcmVzZW50YXRpb25Cb3VuZHNDaGFuZ2VkKGNvbnN0IEludFJlY3QmKSBPVkVSUklE
RTsKICAgICBPd25QdHI8VGV4dFRyYWNrUmVwcmVzZW50YXRpb24+IG1fdGV4dFRyYWNrUmVwcmVz
ZW50YXRpb247CiAKKyAgICBUaW1lcjxNZWRpYUNvbnRyb2xUZXh0VHJhY2tDb250YWluZXJFbGVt
ZW50PiBtX3VwZGF0ZVRpbWVyOwogICAgIEludFJlY3QgbV92aWRlb0Rpc3BsYXlTaXplOwotICAg
IGZsb2F0IG1fZm9udFNpemU7CisgICAgaW50IG1fZm9udFNpemU7CisgICAgYm9vbCBtX2ZvbnRT
aXplSXNJbXBvcnRhbnQ7CiB9OwogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L01lZGlhQ29udHJvbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L01lZGlhQ29udHJvbHMuY3BwCShyZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDA5LDkgKzQwOSw5IEBAIHZvaWQgTWVkaWFDb250cm9sczo6dXBkYXRlVGV4dFRyYWNrRGlzcGwK
ICAgICAKIHZvaWQgTWVkaWFDb250cm9sczo6dGV4dFRyYWNrUHJlZmVyZW5jZXNDaGFuZ2VkKCkK
IHsKKyAgICBjbG9zZWRDYXB0aW9uVHJhY2tzQ2hhbmdlZCgpOwogICAgIGlmIChtX3RleHREaXNw
bGF5Q29udGFpbmVyKQogICAgICAgICBtX3RleHREaXNwbGF5Q29udGFpbmVyLT51cGRhdGVTaXpl
cyh0cnVlKTsKLSAgICBjbG9zZWRDYXB0aW9uVHJhY2tzQ2hhbmdlZCgpOwogfQogI2VuZGlmCiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAJKHJldmlz
aW9uIDE0NzkzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkhUTUxEaXZFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxTcGFu
RWxlbWVudC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJOb2RlVHJhdmVyc2Fs
LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dFRyYWNrQ3VlLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgpA
QCAtMTE3OSw2ICsxMTgwLDE2IEBAIGJvb2wgVGV4dFRyYWNrQ3VlOjpvcGVyYXRvcj09KGNvbnN0
IFRleHQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBUZXh0VHJhY2tDdWU6OnNldEZvbnRT
aXplKGludCBmb250U2l6ZSwgY29uc3QgSW50U2l6ZSYsIGJvb2wgaW1wb3J0YW50KQoreworICAg
IGlmICghaGFzRGlzcGxheVRyZWUoKSB8fCAhZm9udFNpemUpCisgICAgICAgIHJldHVybjsKKyAg
ICAKKyAgICBMT0coTWVkaWEsICJUZXh0VHJhY2tDdWU6OnNldEZvbnRTaXplIC0gc2V0dGluZyBj
dWUgZm9udCBzaXplIHRvICVpIiwgZm9udFNpemUpOworCisgICAgZWxlbWVudCgpLT5zZXRJbmxp
bmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFNpemUsIFN0cmluZzo6bnVtYmVyKGZvbnRT
aXplKSArICJweCIsIGltcG9ydGFudCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmgJKHJl
dmlzaW9uIDE0NzkzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3Vl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3Nyw3ICsxNzcsNyBAQCBwdWJsaWM6CiAgICAgfTsKICAg
ICBDdWVBbGlnbm1lbnQgZ2V0QWxpZ25tZW50KCkgY29uc3QgeyByZXR1cm4gbV9jdWVBbGlnbm1l
bnQ7IH0KIAotICAgIHZpcnR1YWwgdm9pZCB2aWRlb1NpemVEaWRDaGFuZ2UoY29uc3QgSW50U2l6
ZSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRGb250U2l6ZShpbnQsIGNvbnN0IEludFNpemUm
LCBib29sIGltcG9ydGFudCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBU
ZXh0VHJhY2tDdWUmKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3IhPShjb25zdCBU
ZXh0VHJhY2tDdWUmIGN1ZSkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
VGV4dFRyYWNrQ3VlR2VuZXJpYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmNwcAkocmV2aXNpb24gMTQ3OTM4KQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmljLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkhUTUxEaXZFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVu
dC5oIgorI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNp
bmNsdWRlICJSZW5kZXJUZXh0VHJhY2tDdWUuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCkBAIC02NSw2ICs2Niw3IEBAIHZvaWQgVGV4dFRyYWNrQ3VlR2VuZXJpY0JveEVs
ZW1lbnQ6OmFwcGwKICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VW5pY29k
ZUJpZGksIENTU1ZhbHVlV2Via2l0UGxhaW50ZXh0KTsKICAgICAKICAgICBUZXh0VHJhY2tDdWVH
ZW5lcmljKiBjdWUgPSBzdGF0aWNfY2FzdDxUZXh0VHJhY2tDdWVHZW5lcmljKj4oZ2V0Q3VlKCkp
OworICAgIFJlZlB0cjxIVE1MRGl2RWxlbWVudD4gY3VlRWxlbWVudCA9IGN1ZS0+ZWxlbWVudCgp
OwogCiAgICAgZmxvYXQgc2l6ZSA9IHN0YXRpY19jYXN0PGZsb2F0PihjdWUtPmdldENTU1NpemUo
KSk7CiAgICAgaWYgKGN1ZS0+dXNlRGVmYXVsdFBvc2l0aW9uKCkpIHsKQEAgLTgxLDIyICs4Mywx
OCBAQCB2b2lkIFRleHRUcmFja0N1ZUdlbmVyaWNCb3hFbGVtZW50OjphcHBsCiAgICAgfQogCiAg
ICAgaWYgKGN1ZS0+Zm9yZWdyb3VuZENvbG9yKCkuaXNWYWxpZCgpKQotICAgICAgICBzZXRJbmxp
bmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5Q29sb3IsIGN1ZS0+Zm9yZWdyb3VuZENvbG9yKCku
c2VyaWFsaXplZCgpKTsKKyAgICAgICAgY3VlRWxlbWVudC0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0
eShDU1NQcm9wZXJ0eUNvbG9yLCBjdWUtPmZvcmVncm91bmRDb2xvcigpLnNlcmlhbGl6ZWQoKSk7
CiAgICAgCiAgICAgaWYgKGN1ZS0+YmFja2dyb3VuZENvbG9yKCkuaXNWYWxpZCgpKQotICAgICAg
ICBjdWUtPmVsZW1lbnQoKS0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9wZXJ0eUJhY2tn
cm91bmRDb2xvciwgY3VlLT5iYWNrZ3JvdW5kQ29sb3IoKS5zZXJpYWxpemVkKCkpOworICAgICAg
ICBjdWVFbGVtZW50LT5zZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3Vu
ZENvbG9yLCBjdWUtPmJhY2tncm91bmRDb2xvcigpLnNlcmlhbGl6ZWQoKSk7CiAKICAgICBpZiAo
Y3VlLT5nZXRXcml0aW5nRGlyZWN0aW9uKCkgPT0gVGV4dFRyYWNrQ3VlOjpIb3Jpem9udGFsKQog
ICAgICAgICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5SGVpZ2h0LCBDU1NWYWx1
ZUF1dG8pOwogICAgIGVsc2UKICAgICAgICAgc2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQcm9w
ZXJ0eVdpZHRoLCBDU1NWYWx1ZUF1dG8pOwogCi0gICAgaWYgKGN1ZS0+YmFzZUZvbnRTaXplUmVs
YXRpdmVUb1ZpZGVvSGVpZ2h0KCkpIHsKLSAgICAgICAgZG91YmxlIGZvbnRTaXplID0gdmlkZW9T
aXplLmhlaWdodCgpICogY3VlLT5iYXNlRm9udFNpemVSZWxhdGl2ZVRvVmlkZW9IZWlnaHQoKSAv
IDEwMDsKLSAgICAgICAgaWYgKGN1ZS0+Zm9udFNpemVNdWx0aXBsaWVyKCkpCi0gICAgICAgICAg
ICBmb250U2l6ZSAqPSBjdWUtPmZvbnRTaXplTXVsdGlwbGllcigpIC8gMTAwOwotICAgICAgICBz
ZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFNpemUsIFN0cmluZzo6bnVtYmVy
KGZvbnRTaXplKSArICJweCIpOwotICAgIH0KKyAgICBpZiAoY3VlLT5iYXNlRm9udFNpemVSZWxh
dGl2ZVRvVmlkZW9IZWlnaHQoKSkKKyAgICAgICAgY3VlLT5zZXRGb250U2l6ZShjdWUtPmJhc2VG
b250U2l6ZVJlbGF0aXZlVG9WaWRlb0hlaWdodCgpLCB2aWRlb1NpemUsIGZhbHNlKTsKIAogICAg
IGlmIChjdWUtPmdldEFsaWdubWVudCgpID09IFRleHRUcmFja0N1ZTo6TWlkZGxlKQogICAgICAg
ICBzZXRJbmxpbmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWduLCBDU1NWYWx1ZUNl
bnRlcik7CkBAIC0xMzUsMjAgKzEzMywyNCBAQCB2b2lkIFRleHRUcmFja0N1ZUdlbmVyaWM6OnNl
dFBvc2l0aW9uKGluCiAgICAgVGV4dFRyYWNrQ3VlOjpzZXRQb3NpdGlvbihwb3NpdGlvbiwgZWMp
OwogfQogCi12b2lkIFRleHRUcmFja0N1ZUdlbmVyaWM6OnZpZGVvU2l6ZURpZENoYW5nZShjb25z
dCBJbnRTaXplJiB2aWRlb1NpemUpCit2b2lkIFRleHRUcmFja0N1ZUdlbmVyaWM6OnNldEZvbnRT
aXplKGludCBmb250U2l6ZSwgY29uc3QgSW50U2l6ZSYgdmlkZW9TaXplLCBib29sIGltcG9ydGFu
dCkKIHsKLSAgICBpZiAoIWhhc0Rpc3BsYXlUcmVlKCkpCisgICAgaWYgKCFoYXNEaXNwbGF5VHJl
ZSgpIHx8ICFmb250U2l6ZSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGlmIChpbXBvcnRh
bnQgfHwgIWJhc2VGb250U2l6ZVJlbGF0aXZlVG9WaWRlb0hlaWdodCgpKSB7CisgICAgICAgIFRl
eHRUcmFja0N1ZTo6c2V0Rm9udFNpemUoZm9udFNpemUsIHZpZGVvU2l6ZSwgaW1wb3J0YW50KTsK
ICAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGJhc2VGb250U2l6ZVJlbGF0aXZlVG9WaWRlb0hl
aWdodCgpKSB7Ci0gICAgICAgIGRvdWJsZSBmb250U2l6ZSA9IHZpZGVvU2l6ZS5oZWlnaHQoKSAq
IGJhc2VGb250U2l6ZVJlbGF0aXZlVG9WaWRlb0hlaWdodCgpIC8gMTAwOwotICAgICAgICBpZiAo
Zm9udFNpemVNdWx0aXBsaWVyKCkpCi0gICAgICAgICAgICBmb250U2l6ZSAqPSBmb250U2l6ZU11
bHRpcGxpZXIoKSAvIDEwMDsKLSAgICAgICAgZGlzcGxheVRyZWVJbnRlcm5hbCgpLT5zZXRJbmxp
bmVTdHlsZVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFNpemUsIFN0cmluZzo6bnVtYmVyKGZvbnRT
aXplKSArICJweCIpOwogICAgIH0KIAotfQorICAgIGRvdWJsZSBzaXplID0gdmlkZW9TaXplLmhl
aWdodCgpICogYmFzZUZvbnRTaXplUmVsYXRpdmVUb1ZpZGVvSGVpZ2h0KCkgLyAxMDA7CisgICAg
aWYgKGZvbnRTaXplTXVsdGlwbGllcigpKQorICAgICAgICBzaXplICo9IGZvbnRTaXplTXVsdGlw
bGllcigpIC8gMTAwOworICAgIGVsZW1lbnQoKS0+c2V0SW5saW5lU3R5bGVQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUZvbnRTaXplLCBTdHJpbmc6Om51bWJlcihscmludGYoc2l6ZSkpICsgInB4Iik7CiAK
KyAgICBMT0coTWVkaWEsICJUZXh0VHJhY2tDdWVHZW5lcmljOjpzZXRGb250U2l6ZSAtIHNldHRp
bmcgY3VlIGZvbnQgc2l6ZSB0byAlbGkiLCBscmludGYoc2l6ZSkpOworfQorICAgIAogYm9vbCBU
ZXh0VHJhY2tDdWVHZW5lcmljOjpvcGVyYXRvcj09KGNvbnN0IFRleHRUcmFja0N1ZSYgY3VlKSBj
b25zdAogewogICAgIGlmIChjdWUuY3VlVHlwZSgpICE9IFRleHRUcmFja0N1ZTo6R2VuZXJpYykK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJp
Yy5oCShyZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFja0N1ZUdlbmVyaWMuaAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6
CiAgICAgQ29sb3IgYmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9iYWNrZ3JvdW5k
Q29sb3I7IH0KICAgICB2b2lkIHNldEJhY2tncm91bmRDb2xvcihSR0JBMzIgY29sb3IpIHsgbV9i
YWNrZ3JvdW5kQ29sb3Iuc2V0UkdCKGNvbG9yKTsgfQogCi0gICAgdmlydHVhbCB2b2lkIHZpZGVv
U2l6ZURpZENoYW5nZShjb25zdCBJbnRTaXplJik7CisgICAgdmlydHVhbCB2b2lkIHNldEZvbnRT
aXplKGludCwgY29uc3QgSW50U2l6ZSYsIGJvb2wgaW1wb3J0YW50KSBPVkVSUklERTsKIAogICAg
IHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRleHRUcmFja0N1ZSYpIGNvbnN0IE9WRVJS
SURFOwogICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFRleHRUcmFja0N1ZSYgY3Vl
KSBjb25zdCBPVkVSUklERQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJh
Y2tMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRU
cmFja0xpc3QuY3BwCShyZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL1RleHRUcmFja0xpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDUsNyArMjA1LDcgQEAg
dm9pZCBUZXh0VHJhY2tMaXN0OjpyZW1vdmUoVGV4dFRyYWNrKiB0cgogCiAgICAgaW52YWxpZGF0
ZVRyYWNrSW5kZXhlc0FmdGVyVHJhY2sodHJhY2spOwogCi0gICAgQVNTRVJUKHRyYWNrLT5tZWRp
YUVsZW1lbnQoKSA9PSBtX293bmVyKTsKKyAgICBBU1NFUlQoIXRyYWNrLT5tZWRpYUVsZW1lbnQo
KSB8fCB0cmFjay0+bWVkaWFFbGVtZW50KCkgPT0gbV9vd25lcik7CiAgICAgdHJhY2stPnNldE1l
ZGlhRWxlbWVudCgwKTsKIAogICAgIHRyYWNrcy0+cmVtb3ZlKGluZGV4KTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmNwcAkocmV2aXNpb24g
MTQ3OTM4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTAgKzI4LDEyIEBACiAjaWYgRU5BQkxFKFZJREVPX1RS
QUNLKQogCiAjaW5jbHVkZSAiQ2FwdGlvblVzZXJQcmVmZXJlbmNlcy5oIgorI2luY2x1ZGUgIkRP
TVdyYXBwZXJXb3JsZC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAu
aCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRleHRUcmFja0xpc3QuaCIKKyNp
bmNsdWRlICJVc2VyU3R5bGVTaGVldFR5cGVzLmgiCiAjaW5jbHVkZSA8d3RmL05vbkNvcHlpbmdT
b3J0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTIyMSw2ICsyMjMsMjggQEAgaW50IENh
cHRpb25Vc2VyUHJlZmVyZW5jZXM6OnRleHRUcmFja0xhbgogICAgIHJldHVybiAocHJlZmVycmVk
TGFuZ3VhZ2VzLnNpemUoKSAtIGxhbmd1YWdlTWF0Y2hJbmRleCkgKiAxMDsKIH0KIAordm9pZCBD
YXB0aW9uVXNlclByZWZlcmVuY2VzOjpzZXRDYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZShjb25z
dCBTdHJpbmcmIG92ZXJyaWRlKQoreworICAgIG1fY2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUg
PSBvdmVycmlkZTsKKyAgICB1cGRhdGVDYXB0aW9uU3R5bGVTaGVldE92ZXJpZGUoKTsKK30KKwor
dm9pZCBDYXB0aW9uVXNlclByZWZlcmVuY2VzOjp1cGRhdGVDYXB0aW9uU3R5bGVTaGVldE92ZXJp
ZGUoKQoreworICAgIC8vIElkZW50aWZ5IG91ciBvdmVycmlkZSBzdHlsZSBzaGVldCB3aXRoIGEg
dW5pcXVlIFVSTCAtIGEgbmV3IHNjaGVtZSBhbmQgYSBVVUlELgorICAgIERFRklORV9TVEFUSUNf
TE9DQUwoS1VSTCwgY2FwdGlvbnNTdHlsZVNoZWV0VVJMLCAoUGFyc2VkVVJMU3RyaW5nLCAidXNl
ci1jYXB0aW9ucy1vdmVycmlkZTowMUY2QUYxMi1DM0IwLTRGNzAtQUY1RS1BM0UwMDIzNERDMjMi
KSk7CisKKyAgICBwYWdlR3JvdXAoKS0+cmVtb3ZlVXNlclN0eWxlU2hlZXRGcm9tV29ybGQobWFp
blRocmVhZE5vcm1hbFdvcmxkKCksIGNhcHRpb25zU3R5bGVTaGVldFVSTCk7CisKKyAgICBTdHJp
bmcgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQgPSBjYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlk
ZSgpOworICAgIGlmIChjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIHBhZ2VHcm91cCgpLT5hZGRVc2VyU3R5bGVTaGVldFRvV29ybGQo
bWFpblRocmVhZE5vcm1hbFdvcmxkKCksIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LCBjYXB0
aW9uc1N0eWxlU2hlZXRVUkwsIFZlY3RvcjxTdHJpbmc+KCksCisgICAgICAgIFZlY3RvcjxTdHJp
bmc+KCksIEluamVjdEluQWxsRnJhbWVzLCBVc2VyU3R5bGVBdXRob3JMZXZlbCwgSW5qZWN0SW5F
eGlzdGluZ0RvY3VtZW50cyk7Cit9CisKKyAgICAKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShWSURF
T19UUkFDSykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJlbmNl
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlvblVzZXJQcmVmZXJl
bmNlcy5oCShyZXZpc2lvbiAxNDc5MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25V
c2VyUHJlZmVyZW5jZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsOSBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHNldFVzZXJQcmVmZXJzVGV4dERlc2NyaXB0aW9ucyhib29sIHBy
ZWZlcmVuY2UpOwogCiAgICAgdmlydHVhbCBmbG9hdCBjYXB0aW9uRm9udFNpemVTY2FsZShib29s
JiBpbXBvcnRhbnQpIGNvbnN0IHsgaW1wb3J0YW50ID0gZmFsc2U7IHJldHVybiAwLjA1ZjsgfQot
ICAgIHZpcnR1YWwgU3RyaW5nIGNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKCkgY29uc3QgeyBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsgfQorCisgICAgdmlydHVhbCBTdHJpbmcgY2FwdGlvbnNTdHls
ZVNoZWV0T3ZlcnJpZGUoKSBjb25zdCB7IHJldHVybiBtX2NhcHRpb25zU3R5bGVTaGVldE92ZXJy
aWRlOyB9CisgICAgdmlydHVhbCB2b2lkIHNldENhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKGNv
bnN0IFN0cmluZyYpOwogCiAgICAgdmlydHVhbCB2b2lkIHNldEludGVyZXN0ZWRJbkNhcHRpb25Q
cmVmZXJlbmNlQ2hhbmdlcygpIHsgfQogCkBAIC04Niw2ICs4OCw3IEBAIHB1YmxpYzoKIAogcHJv
dGVjdGVkOgogICAgIENhcHRpb25Vc2VyUHJlZmVyZW5jZXMoUGFnZUdyb3VwKik7CisgICAgdm9p
ZCB1cGRhdGVDYXB0aW9uU3R5bGVTaGVldE92ZXJpZGUoKTsKIAogcHJpdmF0ZToKICAgICB2b2lk
IHRpbWVyRmlyZWQoVGltZXI8Q2FwdGlvblVzZXJQcmVmZXJlbmNlcz4qKTsKQEAgLTk1LDYgKzk4
LDcgQEAgcHJpdmF0ZToKICAgICBDYXB0aW9uRGlzcGxheU1vZGUgbV9kaXNwbGF5TW9kZTsKICAg
ICBUaW1lcjxDYXB0aW9uVXNlclByZWZlcmVuY2VzPiBtX3RpbWVyOwogICAgIFN0cmluZyBtX3Vz
ZXJQcmVmZXJyZWRMYW5ndWFnZTsKKyAgICBTdHJpbmcgbV9jYXB0aW9uc1N0eWxlU2hlZXRPdmVy
cmlkZTsKICAgICBib29sIG1fdGVzdGluZ01vZGU7CiAgICAgYm9vbCBtX2hhdmVQcmVmZXJlbmNl
czsKIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVyZW5jZXNN
YWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0NhcHRpb25Vc2VyUHJlZmVy
ZW5jZXNNYWMuaAkocmV2aXNpb24gMTQ3OTM4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0
aW9uVXNlclByZWZlcmVuY2VzTWFjLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDYgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgYm9vbCB1c2VyUHJlZmVyc1N1YnRpdGxlcygpIGNvbnN0IE9W
RVJSSURFOwogICAgIAogICAgIHZpcnR1YWwgZmxvYXQgY2FwdGlvbkZvbnRTaXplU2NhbGUoYm9v
bCYpIGNvbnN0IE9WRVJSSURFOwotICAgIHZpcnR1YWwgU3RyaW5nIGNhcHRpb25zU3R5bGVTaGVl
dE92ZXJyaWRlKCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW50ZXJl
c3RlZEluQ2FwdGlvblByZWZlcmVuY2VDaGFuZ2VzKCkgT1ZFUlJJREU7CiAKQEAgLTU2LDkgKzU1
LDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgVmVjdG9yPFN0cmluZz4gcHJlZmVycmVkTGFuZ3Vh
Z2VzKCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIHZvaWQgY2FwdGlvblByZWZlcmVu
Y2VzQ2hhbmdlZCgpIE9WRVJSSURFOwotCiAjZW5kaWYKIAorICAgIHZpcnR1YWwgU3RyaW5nIGNh
cHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKCkgY29uc3QgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBp
bnQgdGV4dFRyYWNrU2VsZWN0aW9uU2NvcmUoVGV4dFRyYWNrKiwgSFRNTE1lZGlhRWxlbWVudCop
IGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2s+ID4g
c29ydGVkVHJhY2tMaXN0Rm9yTWVudShUZXh0VHJhY2tMaXN0KikgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCBTdHJpbmcgZGlzcGxheU5hbWVGb3JUcmFjayhUZXh0VHJhY2sqKSBjb25zdCBPVkVSUklE
RTsKQEAgLTc4LDggKzc3LDYgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgY3NzUHJvcGVydHlXaXRo
VGV4dEVkZ2VDb2xvcihDU1NQcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmLCBjb25zdCBDb2xvciYs
IGJvb2wpIGNvbnN0OwogICAgIFN0cmluZyBjb2xvclByb3BlcnR5Q1NTKENTU1Byb3BlcnR5SUQs
IGNvbnN0IENvbG9yJiwgYm9vbCkgY29uc3Q7CiAKLSAgICB2b2lkIHVwZGF0ZUNhcHRpb25TdHls
ZVNoZWV0T3ZlcmlkZSgpOwotCiAgICAgYm9vbCBtX2xpc3RlbmluZ0ZvclByZWZlcmVuY2VDaGFu
Z2VzOwogI2VuZGlmCiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9DYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvQ2FwdGlv
blVzZXJQcmVmZXJlbmNlc01hYy5tbQkocmV2aXNpb24gMTQ3OTM4KQorKysgU291cmNlL1dlYkNv
cmUvcGFnZS9DYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0y
NTAsNyArMjUwLDcgQEAgU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNhcHRpbwog
ICAgICAgICBiYWNrZ3JvdW5kQ29sb3IgPSBkZWZhdWx0QmFja2dyb3VuZENvbG9yOwogCiAgICAg
Ym9vbCBpbXBvcnRhbnQgPSBiZWhhdmlvciA9PSBrTUFDYXB0aW9uQXBwZWFyYW5jZUJlaGF2aW9y
VXNlVmFsdWU7Ci0gICAgQ0dGbG9hdCBvcGFjaXR5ID0gTUFDYXB0aW9uQXBwZWFyYW5jZUdldEJh
Y2tncm91bmRPcGFjaXR5KGtNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluVXNlciwgMCk7CisgICAg
Q0dGbG9hdCBvcGFjaXR5ID0gTUFDYXB0aW9uQXBwZWFyYW5jZUdldEJhY2tncm91bmRPcGFjaXR5
KGtNQUNhcHRpb25BcHBlYXJhbmNlRG9tYWluVXNlciwgJmJlaGF2aW9yKTsKICAgICBpZiAoIWlt
cG9ydGFudCkKICAgICAgICAgaW1wb3J0YW50ID0gYmVoYXZpb3IgPT0ga01BQ2FwdGlvbkFwcGVh
cmFuY2VCZWhhdmlvclVzZVZhbHVlOwogICAgIFN0cmluZyBiYWNrZ3JvdW5kU3R5bGUgPSBjb2xv
clByb3BlcnR5Q1NTKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yLCBDb2xvcihiYWNrZ3JvdW5k
Q29sb3IucmVkKCksIGJhY2tncm91bmRDb2xvci5ncmVlbigpLCBiYWNrZ3JvdW5kQ29sb3IuYmx1
ZSgpLCBzdGF0aWNfY2FzdDxpbnQ+KG9wYWNpdHkgKiAyNTUpKSwgaW1wb3J0YW50KTsKQEAgLTQx
Niw2MCArNDE2LDYgQEAgU3RyaW5nIENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNhcHRpbwog
ICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CiB9CiAKLVN0cmluZyBDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWFjOjpjYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZSgpIGNvbnN0Ci17Ci0gICAg
aWYgKHRlc3RpbmdNb2RlKCkgfHwgIU1lZGlhQWNjZXNzaWJpbGl0eUxpYnJhcnkoKSkKLSAgICAg
ICAgcmV0dXJuIENhcHRpb25Vc2VyUHJlZmVyZW5jZXM6OmNhcHRpb25zU3R5bGVTaGVldE92ZXJy
aWRlKCk7Ci0KLSAgICBTdHJpbmdCdWlsZGVyIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0Owot
Ci0gICAgU3RyaW5nIGJhY2tncm91bmQgPSBjYXB0aW9uc0JhY2tncm91bmRDU1MoKTsKLSAgICBp
ZiAoIWJhY2tncm91bmQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHls
ZVNoZWV0LmFwcGVuZCgiIHZpZGVvOjoiKTsKLSAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxl
U2hlZXQuYXBwZW5kKFRleHRUcmFja0N1ZTo6Y3VlU2hhZG93UHNldWRvSWQoKSk7Ci0gICAgICAg
IGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCgneycpOwotICAgICAgICBjYXB0aW9u
c092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoYmFja2dyb3VuZCk7Ci0gICAgICAgIGNhcHRpb25z
T3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCgnfScpOwotICAgIH0KLQotICAgIFN0cmluZyB3aW5k
b3dDb2xvciA9IGNhcHRpb25zV2luZG93Q1NTKCk7Ci0gICAgU3RyaW5nIHdpbmRvd0Nvcm5lclJh
ZGl1cyA9IHdpbmRvd1JvdW5kZWRDb3JuZXJSYWRpdXNDU1MoKTsKLSAgICBpZiAoIXdpbmRvd0Nv
bG9yLmlzRW1wdHkoKSB8fCAhd2luZG93Q29ybmVyUmFkaXVzLmlzRW1wdHkoKSkgewotICAgICAg
ICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoIiB2aWRlbzo6Iik7Ci0gICAgICAg
IGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZChUZXh0VHJhY2tDdWVCb3g6OnRleHRU
cmFja0N1ZUJveFNoYWRvd1BzZXVkb0lkKCkpOwotICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5
bGVTaGVldC5hcHBlbmQoJ3snKTsKLQotICAgICAgICBpZiAoIXdpbmRvd0NvbG9yLmlzRW1wdHko
KSkKLSAgICAgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCh3aW5kb3dD
b2xvcik7Ci0gICAgICAgIGlmICghd2luZG93Q29ybmVyUmFkaXVzLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCh3aW5kb3dDb3JuZXJSYWRp
dXMpOwotCi0gICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCgnfScpOwot
ICAgIH0KLSAgICAKLSAgICBTdHJpbmcgY2FwdGlvbnNDb2xvciA9IGNhcHRpb25zVGV4dENvbG9y
Q1NTKCk7Ci0gICAgU3RyaW5nIGVkZ2VTdHlsZSA9IGNhcHRpb25zVGV4dEVkZ2VDU1MoKTsKLSAg
ICBTdHJpbmcgZm9udE5hbWUgPSBjYXB0aW9uc0RlZmF1bHRGb250Q1NTKCk7Ci0gICAgaWYgKCFj
YXB0aW9uc0NvbG9yLmlzRW1wdHkoKSB8fCAhZWRnZVN0eWxlLmlzRW1wdHkoKSB8fCAhZm9udE5h
bWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVu
ZCgiIHZpZGVvOjoiKTsKLSAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5k
KE1lZGlhQ29udHJvbFRleHRUcmFja0NvbnRhaW5lckVsZW1lbnQ6OnRleHRUcmFja0NvbnRhaW5l
ckVsZW1lbnRTaGFkb3dQc2V1ZG9JZCgpKTsKLSAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxl
U2hlZXQuYXBwZW5kKCd7Jyk7Ci0KLSAgICAgICAgaWYgKCFjYXB0aW9uc0NvbG9yLmlzRW1wdHko
KSkKLSAgICAgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZChjYXB0aW9u
c0NvbG9yKTsKLSAgICAgICAgaWYgKCFlZGdlU3R5bGUuaXNFbXB0eSgpKQotICAgICAgICAgICAg
Y2FwdGlvbnNPdmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKGVkZ2VTdHlsZSk7Ci0gICAgICAgIGlm
ICghZm9udE5hbWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgY2FwdGlvbnNPdmVycmlkZVN0eWxl
U2hlZXQuYXBwZW5kKGZvbnROYW1lKTsKLQotICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVT
aGVldC5hcHBlbmQoJ30nKTsKLSAgICB9Ci0gICAgCi0gICAgTE9HKE1lZGlhLCAiQ2FwdGlvblVz
ZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGVTZXR0aW5nIHN5dGxl
IHRvOlxuJXMiLCBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC50b1N0cmluZygpLnV0ZjgoKS5k
YXRhKCkpOwotCi0gICAgcmV0dXJuIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LnRvU3RyaW5n
KCk7Ci19Ci0KIGZsb2F0IENhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNhcHRpb25Gb250U2l6
ZVNjYWxlKGJvb2wmIGltcG9ydGFudCkgY29uc3QKIHsKICAgICBpZiAodGVzdGluZ01vZGUoKSB8
fCAhTWVkaWFBY2Nlc3NpYmlsaXR5TGlicmFyeSgpKQpAQCAtNDkwLDIxICs0MzYsNiBAQCBmbG9h
dCBDYXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjpjYXB0aW9uCiAjZW5kaWYKIH0KIAotdm9pZCBD
YXB0aW9uVXNlclByZWZlcmVuY2VzTWFjOjp1cGRhdGVDYXB0aW9uU3R5bGVTaGVldE92ZXJpZGUo
KQotewotICAgIC8vIElkZW50aWZ5IG91ciBvdmVycmlkZSBzdHlsZSBzaGVldCB3aXRoIGEgdW5p
cXVlIFVSTCAtIGEgbmV3IHNjaGVtZSBhbmQgYSBVVUlELgotICAgIERFRklORV9TVEFUSUNfTE9D
QUwoS1VSTCwgY2FwdGlvbnNTdHlsZVNoZWV0VVJMLCAoUGFyc2VkVVJMU3RyaW5nLCAidXNlci1j
YXB0aW9ucy1vdmVycmlkZTowMUY2QUYxMi1DM0IwLTRGNzAtQUY1RS1BM0UwMDIzNERDMjMiKSk7
Ci0gICAgCi0gICAgcGFnZUdyb3VwKCktPnJlbW92ZVVzZXJTdHlsZVNoZWV0RnJvbVdvcmxkKG1h
aW5UaHJlYWROb3JtYWxXb3JsZCgpLCBjYXB0aW9uc1N0eWxlU2hlZXRVUkwpOwotICAgIAotICAg
IFN0cmluZyBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldCA9IGNhcHRpb25zU3R5bGVTaGVldE92
ZXJyaWRlKCk7Ci0gICAgaWYgKGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmlzRW1wdHkoKSkK
LSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIHBhZ2VHcm91cCgpLT5hZGRVc2VyU3R5bGVTaGVl
dFRvV29ybGQobWFpblRocmVhZE5vcm1hbFdvcmxkKCksIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNo
ZWV0LCBjYXB0aW9uc1N0eWxlU2hlZXRVUkwsIFZlY3RvcjxTdHJpbmc+KCksCi0gICAgICAgICAg
ICAgVmVjdG9yPFN0cmluZz4oKSwgSW5qZWN0SW5BbGxGcmFtZXMsIFVzZXJTdHlsZUF1dGhvckxl
dmVsLCBJbmplY3RJbkV4aXN0aW5nRG9jdW1lbnRzKTsKLX0KLQogdm9pZCBDYXB0aW9uVXNlclBy
ZWZlcmVuY2VzTWFjOjpzZXRQcmVmZXJyZWRMYW5ndWFnZShjb25zdCBTdHJpbmcmIGxhbmd1YWdl
KQogewogICAgIGlmICh0ZXN0aW5nTW9kZSgpIHx8ICFNZWRpYUFjY2Vzc2liaWxpdHlMaWJyYXJ5
KCkpIHsKQEAgLTU1MCw2ICs0ODEsNTkgQEAgVmVjdG9yPFN0cmluZz4gQ2FwdGlvblVzZXJQcmVm
ZXJlbmNlc01hYwogfQogI2VuZGlmICAvLyBIQVZFKE1FRElBX0FDQ0VTU0lCSUxJVFlfRlJBTUVX
T1JLKQogCitTdHJpbmcgQ2FwdGlvblVzZXJQcmVmZXJlbmNlc01hYzo6Y2FwdGlvbnNTdHlsZVNo
ZWV0T3ZlcnJpZGUoKSBjb25zdAoreworICAgIGlmICh0ZXN0aW5nTW9kZSgpKQorICAgICAgICBy
ZXR1cm4gQ2FwdGlvblVzZXJQcmVmZXJlbmNlczo6Y2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUo
KTsKKyAgICAKKyAgICBTdHJpbmdCdWlsZGVyIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0Owor
CisjaWYgSEFWRShNRURJQV9BQ0NFU1NJQklMSVRZX0ZSQU1FV09SSykKKyAgICBpZiAoIU1lZGlh
QWNjZXNzaWJpbGl0eUxpYnJhcnkoKSkKKyAgICAgICAgcmV0dXJuIENhcHRpb25Vc2VyUHJlZmVy
ZW5jZXM6OmNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKCk7CisgICAgCisgICAgU3RyaW5nIGNh
cHRpb25zQ29sb3IgPSBjYXB0aW9uc1RleHRDb2xvckNTUygpOworICAgIFN0cmluZyBlZGdlU3R5
bGUgPSBjYXB0aW9uc1RleHRFZGdlQ1NTKCk7CisgICAgU3RyaW5nIGZvbnROYW1lID0gY2FwdGlv
bnNEZWZhdWx0Rm9udENTUygpOworICAgIFN0cmluZyBiYWNrZ3JvdW5kID0gY2FwdGlvbnNCYWNr
Z3JvdW5kQ1NTKCk7CisgICAgaWYgKCFiYWNrZ3JvdW5kLmlzRW1wdHkoKSB8fCAhY2FwdGlvbnND
b2xvci5pc0VtcHR5KCkgfHwgIWVkZ2VTdHlsZS5pc0VtcHR5KCkgfHwgIWZvbnROYW1lLmlzRW1w
dHkoKSkgeworICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoIiB2aWRl
bzo6Iik7CisgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZChUZXh0VHJh
Y2tDdWU6OmN1ZVNoYWRvd1BzZXVkb0lkKCkpOworICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5
bGVTaGVldC5hcHBlbmQoJ3snKTsKKyAgICAgICAgCisgICAgICAgIGlmICghYmFja2dyb3VuZC5p
c0VtcHR5KCkpCisgICAgICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQo
YmFja2dyb3VuZCk7CisgICAgICAgIGlmICghY2FwdGlvbnNDb2xvci5pc0VtcHR5KCkpCisgICAg
ICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQoY2FwdGlvbnNDb2xvcik7
CisgICAgICAgIGlmICghZWRnZVN0eWxlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNhcHRpb25z
T3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZChlZGdlU3R5bGUpOworICAgICAgICBpZiAoIWZvbnRO
YW1lLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFw
cGVuZChmb250TmFtZSk7CisgICAgICAgIAorICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVT
aGVldC5hcHBlbmQoJ30nKTsKKyAgICB9CisgICAgCisgICAgU3RyaW5nIHdpbmRvd0NvbG9yID0g
Y2FwdGlvbnNXaW5kb3dDU1MoKTsKKyAgICBTdHJpbmcgd2luZG93Q29ybmVyUmFkaXVzID0gd2lu
ZG93Um91bmRlZENvcm5lclJhZGl1c0NTUygpOworICAgIGlmICghd2luZG93Q29sb3IuaXNFbXB0
eSgpIHx8ICF3aW5kb3dDb3JuZXJSYWRpdXMuaXNFbXB0eSgpKSB7CisgICAgICAgIGNhcHRpb25z
T3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCgiIHZpZGVvOjoiKTsKKyAgICAgICAgY2FwdGlvbnNP
dmVycmlkZVN0eWxlU2hlZXQuYXBwZW5kKFRleHRUcmFja0N1ZUJveDo6dGV4dFRyYWNrQ3VlQm94
U2hhZG93UHNldWRvSWQoKSk7CisgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFw
cGVuZCgneycpOworICAgICAgICAKKyAgICAgICAgaWYgKCF3aW5kb3dDb2xvci5pc0VtcHR5KCkp
CisgICAgICAgICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQod2luZG93Q29s
b3IpOworICAgICAgICBpZiAoIXdpbmRvd0Nvcm5lclJhZGl1cy5pc0VtcHR5KCkpCisgICAgICAg
ICAgICBjYXB0aW9uc092ZXJyaWRlU3R5bGVTaGVldC5hcHBlbmQod2luZG93Q29ybmVyUmFkaXVz
KTsKKyAgICAgICAgCisgICAgICAgIGNhcHRpb25zT3ZlcnJpZGVTdHlsZVNoZWV0LmFwcGVuZCgn
fScpOworICAgIH0KKyNlbmRpZiAgLy8gSEFWRShNRURJQV9BQ0NFU1NJQklMSVRZX0ZSQU1FV09S
SykKKworICAgIExPRyhNZWRpYSwgIkNhcHRpb25Vc2VyUHJlZmVyZW5jZXNNYWM6OmNhcHRpb25z
U3R5bGVTaGVldE92ZXJyaWRlU2V0dGluZyBzeXRsZSB0bzpcbiVzIiwgY2FwdGlvbnNPdmVycmlk
ZVN0eWxlU2hlZXQudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKworICAgIHJldHVybiBjYXB0
aW9uc092ZXJyaWRlU3R5bGVTaGVldC50b1N0cmluZygpOworfQorCiBzdGF0aWMgU3RyaW5nIGxh
bmd1YWdlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIGxhbmd1YWdlQ29kZSkKIHsKICAgICBpZiAo
bGFuZ3VhZ2VDb2RlLmlzRW1wdHkoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uY3BwCShyZXZpc2lvbiAxNDc5MzgpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vTWVkaWFQbGF5
ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzkxLDcgKzM5MSw3
IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjpkaWQKICAgICBmbG9hdCBj
dXJyZW50TWF4VGltZUxvYWRlZCA9IG1heFRpbWVMb2FkZWQoKTsKICAgICBib29sIGRpZExvYWRp
bmdQcm9ncmVzcyA9IGN1cnJlbnRNYXhUaW1lTG9hZGVkICE9IG1fbWF4VGltZUxvYWRlZEF0TGFz
dERpZExvYWRpbmdQcm9ncmVzczsKICAgICBtX21heFRpbWVMb2FkZWRBdExhc3REaWRMb2FkaW5n
UHJvZ3Jlc3MgPSBjdXJyZW50TWF4VGltZUxvYWRlZDsKLSAgICBMT0coTWVkaWEsICJNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb246OmRpZExvYWRpbmdQcm9ncmVzcyglcCkgLSByZXR1cm5p
bmcgJWQiLCB0aGlzLCBkaWRMb2FkaW5nUHJvZ3Jlc3MpOworCiAgICAgcmV0dXJuIGRpZExvYWRp
bmdQcm9ncmVzczsKIH0KIApAQCAtNDMzLDkgKzQzMyw2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uOjp1cGQKICAgICBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG9sZE5l
dHdvcmtTdGF0ZSA9IG1fbmV0d29ya1N0YXRlOwogICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRl
IG9sZFJlYWR5U3RhdGUgPSBtX3JlYWR5U3RhdGU7CiAKLSAgICBMT0coTWVkaWEsICJNZWRpYVBs
YXllclByaXZhdGVBVkZvdW5kYXRpb246OnVwZGF0ZVN0YXRlcyglcCkgLSBlbnRlcmluZyB3aXRo
IG5ldHdvcmtTdGF0ZSA9ICVpLCByZWFkeVN0YXRlID0gJWkiLCAKLSAgICAgICAgdGhpcywgc3Rh
dGljX2Nhc3Q8aW50PihtX25ldHdvcmtTdGF0ZSksIHN0YXRpY19jYXN0PGludD4obV9yZWFkeVN0
YXRlKSk7Ci0KICAgICBpZiAobV9sb2FkaW5nTWV0YWRhdGEpCiAgICAgICAgIG1fbmV0d29ya1N0
YXRlID0gTWVkaWFQbGF5ZXI6OkxvYWRpbmc7CiAgICAgZWxzZSB7CkBAIC01MjIsOCArNTE5LDEy
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjp1cGQKICAgICAgICAgcGxh
dGZvcm1QbGF5KCk7CiAgICAgfQogCi0gICAgTE9HKE1lZGlhLCAiTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uOjp1cGRhdGVTdGF0ZXMoJXApIC0gZXhpdGluZyB3aXRoIG5ldHdvcmtTdGF0
ZSA9ICVpLCByZWFkeVN0YXRlID0gJWkiLCAKLSAgICAgICAgdGhpcywgc3RhdGljX2Nhc3Q8aW50
PihtX25ldHdvcmtTdGF0ZSksIHN0YXRpY19jYXN0PGludD4obV9yZWFkeVN0YXRlKSk7CisjaWYg
IUxPR19ESVNBQkxFRAorICAgIGlmIChtX25ldHdvcmtTdGF0ZSAhPSBvbGROZXR3b3JrU3RhdGUg
fHwgb2xkUmVhZHlTdGF0ZSAhPSBtX3JlYWR5U3RhdGUpIHsKKyAgICAgICAgTE9HKE1lZGlhLCAi
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uOjp1cGRhdGVTdGF0ZXMoJXApIC0gZW50ZXJl
ZCB3aXRoIG5ldHdvcmtTdGF0ZSA9ICVpLCByZWFkeVN0YXRlID0gJWksICBleGl0aW5nIHdpdGgg
bmV0d29ya1N0YXRlID0gJWksIHJlYWR5U3RhdGUgPSAlaSIsCisgICAgICAgICAgICB0aGlzLCBz
dGF0aWNfY2FzdDxpbnQ+KG9sZE5ldHdvcmtTdGF0ZSksIHN0YXRpY19jYXN0PGludD4ob2xkUmVh
ZHlTdGF0ZSksIHN0YXRpY19jYXN0PGludD4obV9uZXR3b3JrU3RhdGUpLCBzdGF0aWNfY2FzdDxp
bnQ+KG1fcmVhZHlTdGF0ZSkpOworICAgIH0KKyNlbmRpZgogfQogCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbjo6c2V0U2l6ZShjb25zdCBJbnRTaXplJikgCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXll
clByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFW
Rm91bmRhdGlvbk9iakMubW0JKHJldmlzaW9uIDE0NzkzOCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW0JKHdvcmtpbmcgY29weSkKQEAgLTUyOSw3ICs1MjksNiBAQCBQbGF0Zm9y
bU1lZGlhIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhCiAKIFBsYXRmb3JtTGF5ZXIqIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogewot
ICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnBsYXRm
b3JtTGF5ZXIoJXApIiwgdGhpcyk7CiAgICAgcmV0dXJuIG1fdmlkZW9MYXllci5nZXQoKTsKIH0K
IApAQCAtMTM2Nyw3ICsxMzY2LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRp
b25PYmpDOgogCiAgICAgQVZNZWRpYVNlbGVjdGlvbk9wdGlvblR5cGUgKm1lZGlhU2VsZWN0aW9u
T3B0aW9uID0gdHJhY2tQcml2YXRlID8gdHJhY2tQcml2YXRlLT5tZWRpYVNlbGVjdGlvbk9wdGlv
bigpIDogMDsKIAotICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakM6OnNldEN1cnJlbnRUcmFjayglcCkgLSBzZWxlY3RpbmcgbWVkaWEgb3B0aW9uICVwIiwg
dGhpcywgbWVkaWFTZWxlY3Rpb25PcHRpb24pOworICAgIExPRyhNZWRpYSwgIk1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNldEN1cnJlbnRUcmFjayglcCkgLSBzZWxlY3Rpbmcg
bWVkaWEgb3B0aW9uICVwLCBsYW5ndWFnZSA9ICVzIiwgdGhpcywgbWVkaWFTZWxlY3Rpb25PcHRp
b24sIFtbW21lZGlhU2VsZWN0aW9uT3B0aW9uIGxvY2FsZV0gbG9jYWxlSWRlbnRpZmllcl0gVVRG
OFN0cmluZ10pOwogCiAgICAgW21fYXZQbGF5ZXJJdGVtLmdldCgpIHNlbGVjdE1lZGlhT3B0aW9u
Om1lZGlhU2VsZWN0aW9uT3B0aW9uIGluTWVkaWFTZWxlY3Rpb25Hcm91cDpbbV9hdkFzc2V0Lmdl
dCgpIG1lZGlhU2VsZWN0aW9uR3JvdXBGb3JNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFy
YWN0ZXJpc3RpY0xlZ2libGVdXTsKICAgICBtX2N1cnJlbnRUcmFjayA9IHRyYWNrUHJpdmF0ZTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHJldmlzaW9uIDE0NzkzOCkK
KysrIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjczLDYgKzI3Myw3IEBAIHZvaWQgSW50ZXJuYWxzOjpyZXNldFRvQ29uc2lzdGVudFN0YXRl
KFAKICAgICAgICAgcGFnZS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLT5zZXRQcm9maWxlckVuYWJs
ZWQoZmFsc2UpOwogI2VuZGlmCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiAhUExBVEZPUk0o
V0lOKQorICAgIHBhZ2UtPmdyb3VwKCkuY2FwdGlvblByZWZlcmVuY2VzKCktPnNldENhcHRpb25z
U3R5bGVTaGVldE92ZXJyaWRlKGVtcHR5U3RyaW5nKCkpOwogICAgIHBhZ2UtPmdyb3VwKCkuY2Fw
dGlvblByZWZlcmVuY2VzKCktPnNldFRlc3RpbmdNb2RlKGZhbHNlKTsKICNlbmRpZgogICAgIGlm
ICghcGFnZS0+bWFpbkZyYW1lKCktPmVkaXRvcigpLT5pc0NvbnRpbnVvdXNTcGVsbENoZWNraW5n
RW5hYmxlZCgpKQpAQCAtMjEwNyw0ICsyMTA4LDMyIEBAIGJvb2wgSW50ZXJuYWxzOjppc1NlbGVj
dFBvcHVwVmlzaWJsZShOb2QKICAgICByZXR1cm4gbWVudUxpc3QtPnBvcHVwSXNWaXNpYmxlKCk7
CiB9CiAKK1N0cmluZyBJbnRlcm5hbHM6OmNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKEV4Y2Vw
dGlvbkNvZGUmIGVjKQoreworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGNvbnRleHREb2N1bWVu
dCgpOworICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5wYWdlKCkpIHsKKyAgICAgICAg
ZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7CisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwor
ICAgIH0KKworI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgIVBMQVRGT1JNKFdJTikKKyAgICBy
ZXR1cm4gZG9jdW1lbnQtPnBhZ2UoKS0+Z3JvdXAoKS5jYXB0aW9uUHJlZmVyZW5jZXMoKS0+Y2Fw
dGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUoKTsKKyNlbHNlCisgICAgcmV0dXJuIGVtcHR5U3RyaW5n
KCk7CisjZW5kaWYKK30KKwordm9pZCBJbnRlcm5hbHM6OnNldENhcHRpb25zU3R5bGVTaGVldE92
ZXJyaWRlKGNvbnN0IFN0cmluZyYgb3ZlcnJpZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAg
IERvY3VtZW50KiBkb2N1bWVudCA9IGNvbnRleHREb2N1bWVudCgpOworICAgIGlmICghZG9jdW1l
bnQgfHwgIWRvY3VtZW50LT5wYWdlKCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19F
UlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spICYm
ICFQTEFURk9STShXSU4pCisgICAgZG9jdW1lbnQtPnBhZ2UoKS0+Z3JvdXAoKS5jYXB0aW9uUHJl
ZmVyZW5jZXMoKS0+c2V0Q2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUob3ZlcnJpZGUpOworI2Vu
ZGlmCit9CisKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAkocmV2aXNpb24g
MTQ3OTM4KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAkod29ya2luZyBj
b3B5KQpAQCAtMzExLDYgKzMxMSw5IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNTZWxlY3RQb3B1
cFZpc2libGUoTm9kZSopOwogCisgICAgU3RyaW5nIGNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRl
KEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHNldENhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRl
KGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNp
dCBJbnRlcm5hbHMoRG9jdW1lbnQqKTsKICAgICBEb2N1bWVudCogY29udGV4dERvY3VtZW50KCkg
Y29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCShyZXZpc2lvbiAx
NDc5MzgpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTI3Miw1ICsyNzIsOCBAQAogCiAgICAgRE9NU3RyaW5nIGdldEltYWdlU291cmNl
VVJMKGluIEVsZW1lbnQgZWxlbWVudCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAKKyAgICBbQ29u
ZGl0aW9uYWw9VklERU9fVFJBQ0tdIERPTVN0cmluZyBjYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlk
ZSgpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKyAgICBbQ29uZGl0aW9uYWw9VklERU9fVFJBQ0td
IHZvaWQgc2V0Q2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUoaW4gRE9NU3RyaW5nIG92ZXJyaWRl
KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CisKICAgICBib29sZWFuIGlzU2VsZWN0UG9wdXBWaXNp
YmxlKGluIE5vZGUgbm9kZSk7CiB9OwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ3OTc1KQorKysgTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTMt
MDQtMDggIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAg
W01hY10gdXNlciBjYXB0aW9uIHN0eWxlcyBub3QgYXBwbGllZCB0byBjb3JyZWN0IGVsZW1lbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNDIzMAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWVkaWEv
dHJhY2svdHJhY2stY3NzLXVzZXItb3ZlcnJpZGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBtZWRpYS90cmFjay90cmFjay1jc3MtdXNlci1vdmVycmlkZS5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBtZWRpYS90cmFjay90cmFjay1jdWUtY29udGFpbmVyLXJlbmRlcmluZy1wb3NpdGlv
bi1leHBlY3RlZC50eHQ6CisgICAgICAgICogbWVkaWEvdHJhY2svdHJhY2stY3VlLWNvbnRhaW5l
ci1yZW5kZXJpbmctcG9zaXRpb24uaHRtbDoKKyAgICAgICAgKiBtZWRpYS90cmFjay90cmFjay1j
dWUtcmVuZGVyaW5nLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBtZWRpYS90cmFjay90cmFjay1j
dWUtcmVuZGVyaW5nLmh0bWw6IEZvbnQgc2l6ZSBpcyBub3QgYXBwbGllZCBpbnN0YW50bHkgd2hl
biBhIHZpZGVvIGVsZW1lbnQgaXMKKyAgICAgICAgICAgIHJlc2l6ZWQsIHNvIGNoZWNrIGFmdGVy
IGEgdmVyeSBzaG9ydCBkZWxheS4KKwogMjAxMy0wNC0wOCAgQmVuamFtaW4gUG91bGFpbiAgPGJw
b3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBGaXggdGVzdCBleHBlY3RhdGlvbnMg
Zm9yIGlldGVzdGNlbnRlci9jc3MzL2dyaWQvZ3JpZC1pdGVtcy0wMDMuaHRtCkluZGV4OiBMYXlv
dXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jc3MtdXNlci1vdmVycmlkZS1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3NzLXVzZXItb3Zl
cnJpZGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdHJh
Y2svdHJhY2stY3NzLXVzZXItb3ZlcnJpZGUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMzMgQEAKKworaW50ZXJuYWxzLmNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlID0g
ZnVuY3Rpb24gY2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUoKSB7IFtuYXRpdmUgY29kZV0gfQor
VGVzdCB0aGF0IHN0eWxlIHRvIGFsbCBjdWVzIGlzIGFwcGxpZWQgY29ycmVjdGx5LgorRVZFTlQo
Y2FucGxheXRocm91Z2gpCitFVkVOVChzZWVrZWQpCisKKyoqIENoZWNrIHN0eWxlIGluIC52dHQg
ZmlsZSAqKgorRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUodGV4dFRyYWNrRGlzcGxheUVsZW1l
bnQodmlkZW8sICdjdWUnKSkuY29sb3IgPT0gJ3JnYigyNTUsIDI1NSwgMjU1KScpIE9LCitFWFBF
Q1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZSh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ2N1
ZScpKS5iYWNrZ3JvdW5kQ29sb3IgPT0gJ3JnYmEoMCwgMCwgMCwgMC44KScpIE9LCisKKyoqIEFk
ZCBzdHlsZSB0byB0aGUgZG9jdW1lbnQgKioKK1JVTihzdHlsZXNoZWV0Lmluc2VydFJ1bGUoJ3Zp
ZGVvOjpjdWUgeyBjb2xvcjogcHVycGxlOyBiYWNrZ3JvdW5kLWNvbG9yOiBsaW1lOyB9JywgMCkp
CitFWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZSh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRl
bywgJ2N1ZScpKS5jb2xvciA9PSAncmdiKDEyOCwgMCwgMTI4KScpIE9LCitFWFBFQ1RFRCAoZ2V0
Q29tcHV0ZWRTdHlsZSh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ2N1ZScpKS5iYWNr
Z3JvdW5kQ29sb3IgPT0gJ3JnYigwLCAyNTUsIDApJykgT0sKKworKiogQWRkIGFuIG92ZXJyaWRl
LCB3aXRob3V0ICchaW1wb3J0YW50JyAqKgorUlVOKGludGVybmFscy5zZXRDYXB0aW9uc1N0eWxl
U2hlZXRPdmVycmlkZSgndmlkZW86OmN1ZSB7IGNvbG9yOiBibHVlOyBiYWNrZ3JvdW5kLWNvbG9y
OiB5ZWxsb3c7IH0nKSkKK2ludGVybmFscy5jYXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZSA9IGZ1
bmN0aW9uIGNhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKCkgeyBbbmF0aXZlIGNvZGVdIH0KK0VY
UEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvLCAn
Y3VlJykpLmNvbG9yID09ICdyZ2IoMTI4LCAwLCAxMjgpJykgT0sKK0VYUEVDVEVEIChnZXRDb21w
dXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvLCAnY3VlJykpLmJhY2tncm91
bmRDb2xvciA9PSAncmdiKDAsIDI1NSwgMCknKSBPSworCisqKiBNYXJrIGJhY2tncm91bmQtY29s
b3IgJyFpbXBvcnRhbnQnICoqCitSVU4oaW50ZXJuYWxzLnNldENhcHRpb25zU3R5bGVTaGVldE92
ZXJyaWRlKCd2aWRlbzo6Y3VlIHsgY29sb3I6IGJsdWUgOyBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxs
b3cgIWltcG9ydGFudDsgfScpKQorRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUodGV4dFRyYWNr
RGlzcGxheUVsZW1lbnQodmlkZW8sICdjdWUnKSkuY29sb3IgPT0gJ3JnYigxMjgsIDAsIDEyOCkn
KSBPSworRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUodGV4dFRyYWNrRGlzcGxheUVsZW1lbnQo
dmlkZW8sICdjdWUnKSkuYmFja2dyb3VuZENvbG9yID09ICdyZ2IoMjU1LCAyNTUsIDApJykgT0sK
KworKiogTWFyayBjb2xvciAnIWltcG9ydGFudCcgKioKK1JVTihzdHlsZXNoZWV0Lmluc2VydFJ1
bGUoJ3ZpZGVvOjpjdWUgeyBjb2xvcjogYmx1ZSAhaW1wb3J0YW50OyBiYWNrZ3JvdW5kLWNvbG9y
OiB5ZWxsb3cgIWltcG9ydGFudDsgfScsIDApKQorRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUo
dGV4dFRyYWNrRGlzcGxheUVsZW1lbnQodmlkZW8sICdjdWUnKSkuY29sb3IgPT0gJ3JnYigwLCAw
LCAyNTUpJykgT0sKK0VYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlF
bGVtZW50KHZpZGVvLCAnY3VlJykpLmJhY2tncm91bmRDb2xvciA9PSAncmdiKDI1NSwgMjU1LCAw
KScpIE9LCisKK0VORCBPRiBURVNUCisKSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3RyYWNrL3Ry
YWNrLWNzcy11c2VyLW92ZXJyaWRlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVk
aWEvdHJhY2svdHJhY2stY3NzLXVzZXItb3ZlcnJpZGUuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWNzcy11c2VyLW92ZXJyaWRlLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw3MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8
aGVhZD4KKyAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0
ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIC8+CisKKyAgICAgICAgPHNjcmlwdCBzcmM9Li4vbWVk
aWEtZmlsZS5qcz48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Li4vdmlkZW8tdGVzdC5q
cz48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdCBzcmM9Li4vbWVkaWEtY29udHJvbHMuanM+PC9z
Y3JpcHQ+CisKKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIHZhciBzZWVrQ291bnQgPSAw
OworCisgICAgICAgICAgICBmdW5jdGlvbiBzZWVrZWQoKQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHZhciBjdXJyZW50Q3VlID0gdGV4dFRyYWNrRGlzcGxheUVsZW1lbnQodmlkZW8s
ICdjdWUnKTsKKworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiPGJyPioqIENoZWNrIHN0
eWxlIGluIC52dHQgZmlsZSAqKiIpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZ2V0
Q29tcHV0ZWRTdHlsZSh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ2N1ZScpKS5jb2xv
ciIsICJyZ2IoMjU1LCAyNTUsIDI1NSkiKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQo
ImdldENvbXB1dGVkU3R5bGUodGV4dFRyYWNrRGlzcGxheUVsZW1lbnQodmlkZW8sICdjdWUnKSku
YmFja2dyb3VuZENvbG9yIiwgInJnYmEoMCwgMCwgMCwgMC44KSIpOworCisgICAgICAgICAgICAg
ICAgY29uc29sZVdyaXRlKCI8YnI+KiogQWRkIHN0eWxlIHRvIHRoZSBkb2N1bWVudCAqKiIpOwor
ICAgICAgICAgICAgICAgIHZhciBzdHlsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJzdHlsZSIpOworICAgICAgICAgICAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3R5
bGVFbGVtZW50KTsKKyAgICAgICAgICAgICAgICBzdHlsZXNoZWV0ID0gc3R5bGVFbGVtZW50LnNo
ZWV0OworICAgICAgICAgICAgICAgIHJ1bigic3R5bGVzaGVldC5pbnNlcnRSdWxlKCd2aWRlbzo6
Y3VlIHsgY29sb3I6IHB1cnBsZTsgYmFja2dyb3VuZC1jb2xvcjogbGltZTsgfScsIDApIik7Cisg
ICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAg
dGVzdEV4cGVjdGVkKCJnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZp
ZGVvLCAnY3VlJykpLmNvbG9yIiwgInJnYigxMjgsIDAsIDEyOCkiKTsKKyAgICAgICAgICAgICAg
ICB0ZXN0RXhwZWN0ZWQoImdldENvbXB1dGVkU3R5bGUodGV4dFRyYWNrRGlzcGxheUVsZW1lbnQo
dmlkZW8sICdjdWUnKSkuYmFja2dyb3VuZENvbG9yIiwgInJnYigwLCAyNTUsIDApIik7CisKKyAg
ICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIjxicj4qKiBBZGQgYW4gb3ZlcnJpZGUsIHdpdGhv
dXQgJyFpbXBvcnRhbnQnICoqIik7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5vZmZz
ZXRUb3A7CisgICAgICAgICAgICAgICAgcnVuKCJpbnRlcm5hbHMuc2V0Q2FwdGlvbnNTdHlsZVNo
ZWV0T3ZlcnJpZGUoJ3ZpZGVvOjpjdWUgeyBjb2xvcjogYmx1ZTsgYmFja2dyb3VuZC1jb2xvcjog
eWVsbG93OyB9JykiKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoImludGVybmFscy5j
YXB0aW9uc1N0eWxlU2hlZXRPdmVycmlkZSA9ICIgKyBpbnRlcm5hbHMuY2FwdGlvbnNTdHlsZVNo
ZWV0T3ZlcnJpZGUpOworICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOwor
ICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZ2V0Q29tcHV0ZWRTdHlsZSh0ZXh0VHJhY2tE
aXNwbGF5RWxlbWVudCh2aWRlbywgJ2N1ZScpKS5jb2xvciIsICJyZ2IoMTI4LCAwLCAxMjgpIik7
CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFj
a0Rpc3BsYXlFbGVtZW50KHZpZGVvLCAnY3VlJykpLmJhY2tncm91bmRDb2xvciIsICJyZ2IoMCwg
MjU1LCAwKSIpOworCisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8YnI+KiogTWFyayBi
YWNrZ3JvdW5kLWNvbG9yICchaW1wb3J0YW50JyAqKiIpOworICAgICAgICAgICAgICAgIHJ1bigi
aW50ZXJuYWxzLnNldENhcHRpb25zU3R5bGVTaGVldE92ZXJyaWRlKCd2aWRlbzo6Y3VlIHsgY29s
b3I6IGJsdWUgOyBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3cgIWltcG9ydGFudDsgfScpIik7Cisg
ICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7CisgICAgICAgICAgICAgICAg
dGVzdEV4cGVjdGVkKCJnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZp
ZGVvLCAnY3VlJykpLmNvbG9yIiwgInJnYigxMjgsIDAsIDEyOCkiKTsKKyAgICAgICAgICAgICAg
ICB0ZXN0RXhwZWN0ZWQoImdldENvbXB1dGVkU3R5bGUodGV4dFRyYWNrRGlzcGxheUVsZW1lbnQo
dmlkZW8sICdjdWUnKSkuYmFja2dyb3VuZENvbG9yIiwgInJnYigyNTUsIDI1NSwgMCkiKTsKKwor
ICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiPGJyPioqIE1hcmsgY29sb3IgJyFpbXBvcnRh
bnQnICoqIik7CisgICAgICAgICAgICAgICAgcnVuKCJzdHlsZXNoZWV0Lmluc2VydFJ1bGUoJ3Zp
ZGVvOjpjdWUgeyBjb2xvcjogYmx1ZSAhaW1wb3J0YW50OyBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxs
b3cgICFpbXBvcnRhbnQ7IH0nLCAwKSIpOworICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHku
b2Zmc2V0VG9wOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZ2V0Q29tcHV0ZWRTdHls
ZSh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ2N1ZScpKS5jb2xvciIsICJyZ2IoMCwg
MCwgMjU1KSIpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZ2V0Q29tcHV0ZWRTdHls
ZSh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ2N1ZScpKS5iYWNrZ3JvdW5kQ29sb3Ii
LCAicmdiKDI1NSwgMjU1LCAwKSIpOworCisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCIi
KTsKKyAgICAgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGZ1bmN0aW9uIGxvYWRlZCgpCisgICAgICAgICAgICB7Citjb25zb2xlV3JpdGUoIjxicj5p
bnRlcm5hbHMuY2FwdGlvbnNTdHlsZVNoZWV0T3ZlcnJpZGUgPSAiICsgaW50ZXJuYWxzLmNhcHRp
b25zU3R5bGVTaGVldE92ZXJyaWRlKTsKKworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgi
VGVzdCB0aGF0IHN0eWxlIHRvIGFsbCBjdWVzIGlzIGFwcGxpZWQgY29ycmVjdGx5LiIpOworICAg
ICAgICAgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKKyAgICAgICAgICAgICAgICB2aWRlby5z
cmMgPSBmaW5kTWVkaWFGaWxlKCd2aWRlbycsICcuLi9jb250ZW50L3Rlc3QnKTsKKyAgICAgICAg
ICAgICAgICB3YWl0Rm9yRXZlbnQoJ3NlZWtlZCcsIHNlZWtlZCk7CisgICAgICAgICAgICAgICAg
d2FpdEZvckV2ZW50KCdjYW5wbGF5dGhyb3VnaCcsIGZ1bmN0aW9uKCkgeyB2aWRlby5jdXJyZW50
VGltZSA9IC41OyB9KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICA8L3NjcmlwdD4KKyAgICA8
L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJsb2FkZWQoKSI+CisgICAgICAgIDx2aWRlbyBjb250
cm9scyA+CisgICAgICAgICAgICA8dHJhY2sgc3JjPSJjYXB0aW9ucy13ZWJ2dHQvc3R5bGluZy52
dHQiIGtpbmQ9ImNhcHRpb25zIiBkZWZhdWx0PgorICAgICAgICA8L3ZpZGVvPgorICAgIDwvYm9k
eT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZS1jb250
YWluZXItcmVuZGVyaW5nLXBvc2l0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jdWUtY29udGFpbmVyLXJlbmRlcmluZy1wb3NpdGlv
bi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE0NzkzOCkKKysrIExheW91dFRlc3RzL21lZGlhL3Ry
YWNrL3RyYWNrLWN1ZS1jb250YWluZXItcmVuZGVyaW5nLXBvc2l0aW9uLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKLVRoZSB0b3Agb2YgdGhlIHRleHQgdHJhY2sg
Y29udGFpbmVyIHNob3VsZCBiZSBpbiB0aGUgYm90dG9tIDI1JSBvZiB0aGUgdmlkZW8gZWxlbWVu
dC4KK1RoZSB0b3Agb2YgdGhlIHRleHQgdHJhY2sgY29udGFpbmVyIHNob3VsZCBiZSBpbiB0aGUg
Ym90dG9tIDMwJSBvZiB0aGUgdmlkZW8gZWxlbWVudC4KIEVWRU5UKGNhbnBsYXl0aHJvdWdoKQog
Ci1FWFBFQ1RFRCAoY3VlRGlzcGxheUVsZW1lbnQub2Zmc2V0VG9wID4gKHZpZGVvLnZpZGVvSGVp
Z2h0ICogLjc1KSA9PSAndHJ1ZScpIE9LCitFWFBFQ1RFRCAoY3VlRGlzcGxheUVsZW1lbnQub2Zm
c2V0VG9wID4gKHZpZGVvLnZpZGVvSGVpZ2h0ICogLjcwKSA9PSAndHJ1ZScpIE9LCiBFTkQgT0Yg
VEVTVAogCkluZGV4OiBMYXlvdXRUZXN0cy9tZWRpYS90cmFjay90cmFjay1jdWUtY29udGFpbmVy
LXJlbmRlcmluZy1wb3NpdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlh
L3RyYWNrL3RyYWNrLWN1ZS1jb250YWluZXItcmVuZGVyaW5nLXBvc2l0aW9uLmh0bWwJKHJldmlz
aW9uIDE0NzkzOCkKKysrIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZS1jb250YWlu
ZXItcmVuZGVyaW5nLXBvc2l0aW9uLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIwLDEzICsyMCwx
NCBAQAogCiAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIiIpOwogICAgICAgICAgICAgY3VlRGlz
cGxheUVsZW1lbnQgPSB0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ2Rpc3BsYXknLCAw
KTsKLSAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiY3VlRGlzcGxheUVsZW1lbnQub2Zmc2V0VG9w
ID4gKHZpZGVvLnZpZGVvSGVpZ2h0ICogLjc1KSIsIHRydWUpOworICAgICAgICAgICAgZG9jdW1l
bnQuYm9keS5vZmZzZXRUb3A7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImN1ZURpc3BsYXlF
bGVtZW50Lm9mZnNldFRvcCA+ICh2aWRlby52aWRlb0hlaWdodCAqIC43MCkiLCB0cnVlKTsKICAg
ICAgICAgICAgIGVuZFRlc3QoKTsKICAgICAgICAgfQogCiAgICAgICAgIGZ1bmN0aW9uIGxvYWRl
ZCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVGhlIHRvcCBvZiB0aGUg
dGV4dCB0cmFjayBjb250YWluZXIgc2hvdWxkIGJlIGluIHRoZSBib3R0b20gMjUlIG9mIHRoZSB2
aWRlbyBlbGVtZW50LiIpOworICAgICAgICAgICAgY29uc29sZVdyaXRlKCJUaGUgdG9wIG9mIHRo
ZSB0ZXh0IHRyYWNrIGNvbnRhaW5lciBzaG91bGQgYmUgaW4gdGhlIGJvdHRvbSAzMCUgb2YgdGhl
IHZpZGVvIGVsZW1lbnQuIik7CiAKICAgICAgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKICAg
ICAgICAgICAgIHZpZGVvLnNyYyA9IGZpbmRNZWRpYUZpbGUoJ3ZpZGVvJywgJy4uL2NvbnRlbnQv
dGVzdCcpOwpJbmRleDogTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmlu
Zy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJh
Y2stY3VlLXJlbmRlcmluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE0NzkzOCkKKysrIExheW91
dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmctZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNCwyMiArMzQsMjMgQEAgRVhQRUNURUQgKDIgKiB0ZXN0Q3VlRGlzcGxh
eUJveC5vZmZzZXRMZQogVGVzdCB0aGUgY3VlIGRpc3BsYXkgY29sb3JzIGFuZCBmb250LgogUlVO
KHZpZGVvLndpZHRoID0gMzIwKQogUlVOKHZpZGVvLmhlaWdodCA9IDI0MCkKLUVYUEVDVEVEIChn
ZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvKSkuZm9udFNpemUg
PT0gJzEycHgnKSBPSworRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUoY3VycmVudEN1ZSkuZm9u
dFNpemUgPT0gJzEycHgnKSBPSwogCiBSVU4odmlkZW8ud2lkdGggPSA2NDApCiBSVU4odmlkZW8u
aGVpZ2h0ID0gNDgwKQotRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUodGV4dFRyYWNrRGlzcGxh
eUVsZW1lbnQodmlkZW8pKS5mb250U2l6ZSA9PSAnMjRweCcpIE9LCitFWFBFQ1RFRCAoZ2V0Q29t
cHV0ZWRTdHlsZShjdXJyZW50Q3VlKS5mb250U2l6ZSA9PSAnMjRweCcpIE9LCisKK1JVTih2aWRl
by53aWR0aCA9IDk2MCkKK1JVTih2aWRlby5oZWlnaHQgPSA3MjApCitFWFBFQ1RFRCAoZ2V0Q29t
cHV0ZWRTdHlsZShjdXJyZW50Q3VlKS5mb250U2l6ZSA9PSAnMzZweCcpIE9LCiAKIFJVTih2aWRl
by53aWR0aCA9IDEyODApCiBSVU4odmlkZW8uaGVpZ2h0ID0gOTYwKQotRVhQRUNURUQgKGdldENv
bXB1dGVkU3R5bGUodGV4dFRyYWNrRGlzcGxheUVsZW1lbnQodmlkZW8pKS5mb250U2l6ZSA9PSAn
NDhweCcpIE9LCitFWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZShjdXJyZW50Q3VlKS5mb250U2l6
ZSA9PSAnNDhweCcpIE9LCisKK0VYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKGN1cnJlbnRDdWUp
LmZvbnRGYW1pbHkgPT0gJ3NhbnMtc2VyaWYnKSBPSworRVhQRUNURUQgKGdldENvbXB1dGVkU3R5
bGUoY3VycmVudEN1ZSkuY29sb3IgPT0gJ3JnYigyNTUsIDI1NSwgMjU1KScpIE9LCitFWFBFQ1RF
RCAoZ2V0Q29tcHV0ZWRTdHlsZSh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ2Rpc3Bs
YXknKS5maXJzdENoaWxkKS5iYWNrZ3JvdW5kQ29sb3IgPT0gJ3JnYmEoMCwgMCwgMCwgMC44KScp
IE9LCiAKLVJVTih2aWRlby53aWR0aCA9IDI1NjApCi1SVU4odmlkZW8uaGVpZ2h0ID0gMTQ0MCkK
LUVYUEVDVEVEIChnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVv
KSkuZm9udFNpemUgPT0gJzcycHgnKSBPSwotCi1FWFBFQ1RFRCAoZ2V0Q29tcHV0ZWRTdHlsZSh0
ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbykpLmZvbnRGYW1pbHkgPT0gJ3NhbnMtc2VyaWYn
KSBPSwotRVhQRUNURUQgKGdldENvbXB1dGVkU3R5bGUodGV4dFRyYWNrRGlzcGxheUVsZW1lbnQo
dmlkZW8pKS5jb2xvciA9PSAncmdiKDI1NSwgMjU1LCAyNTUpJykgT0sKLUVYUEVDVEVEIChnZXRD
b21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvLCAnZGlzcGxheScpLmZp
cnN0Q2hpbGQpLmJhY2tncm91bmRDb2xvciA9PSAncmdiYSgwLCAwLCAwLCAwLjc5Njg3NSknKSwg
T0JTRVJWRUQgJ3JnYmEoMCwgMCwgMCwgMC44KScgRkFJTAogRU5EIE9GIFRFU1QKIApJbmRleDog
TGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3VlLXJlbmRlcmluZy5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmcuaHRtbAko
cmV2aXNpb24gMTQ3OTM4KQorKysgTGF5b3V0VGVzdHMvbWVkaWEvdHJhY2svdHJhY2stY3VlLXJl
bmRlcmluZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMiwyOSArMTIsMzMgQEAKICAgICAgICAg
dmFyIHRlc3RUcmFjazsKICAgICAgICAgdmFyIHRlc3RDdWVEaXNwbGF5Qm94OwogICAgICAgICB2
YXIgc2Vla2VkQ291bnQgPSAwOworICAgICAgICB2YXIgcmVzaXplQ291bnQgPSAxOwogICAgICAg
ICB2YXIgaW5mbyA9IFsgIkxvcmVtIiwgImlwc3VtIiwgImRvbG9yIiwgInNpdCIgXTsKIAotICAg
ICAgICBmdW5jdGlvbiB0ZXN0Rm9udFNpemUod2lkdGgsIGhlaWdodCkKKyAgICAgICAgZnVuY3Rp
b24gc2V0VmlkZW9TaXplKHdpZHRoLCBoZWlnaHQpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJ1
bigidmlkZW8ud2lkdGggPSAiICsgd2lkdGgpOwogICAgICAgICAgICAgcnVuKCJ2aWRlby5oZWln
aHQgPSAiICsgaGVpZ2h0KTsKLSAgICAgICAgICAgIGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOwot
ICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3Bs
YXlFbGVtZW50KHZpZGVvKSkuZm9udFNpemUiLCBwYXJzZUludChoZWlnaHQgKiAwLjA1KSArICJw
eCIpOwotICAgICAgICAgICAgY29uc29sZVdyaXRlKCIiKTsKICAgICAgICAgfQogCi0gICAgICAg
IGZ1bmN0aW9uIHRlc3RDdWVTdHlsZSgpCisgICAgICAgIGZ1bmN0aW9uIHJlc2l6ZVRlc3QoKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIjxicj5UZXN0IHRoZSBjdWUgZGlz
cGxheSBjb2xvcnMgYW5kIGZvbnQuIik7Ci0gICAgICAgICAgICB0ZXN0Rm9udFNpemUoMzIwLCAy
NDApOwotICAgICAgICAgICAgdGVzdEZvbnRTaXplKDY0MCwgNDgwKTsKLSAgICAgICAgICAgIHRl
c3RGb250U2l6ZSgxMjgwLCA5NjApOwotICAgICAgICAgICAgdGVzdEZvbnRTaXplKDI1NjAsIDE0
NDApOwotCi0gICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImdldENvbXB1dGVkU3R5bGUodGV4dFRy
YWNrRGlzcGxheUVsZW1lbnQodmlkZW8pKS5mb250RmFtaWx5IiwgInNhbnMtc2VyaWYiKTsKLSAg
ICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZ2V0Q29tcHV0ZWRTdHlsZSh0ZXh0VHJhY2tEaXNwbGF5
RWxlbWVudCh2aWRlbykpLmNvbG9yIiwgInJnYigyNTUsIDI1NSwgMjU1KSIpOwotICAgICAgICAg
ICAgdGVzdEV4cGVjdGVkKCJnZXRDb21wdXRlZFN0eWxlKHRleHRUcmFja0Rpc3BsYXlFbGVtZW50
KHZpZGVvLCAnZGlzcGxheScpLmZpcnN0Q2hpbGQpLmJhY2tncm91bmRDb2xvciIsICJyZ2JhKDAs
IDAsIDAsIDAuNzk2ODc1KSIpOworICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7
CisgICAgICAgICAgICBjdXJyZW50Q3VlID0gdGV4dFRyYWNrRGlzcGxheUVsZW1lbnQodmlkZW8s
ICdjdWUnKTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZ2V0Q29tcHV0ZWRTdHlsZShjdXJy
ZW50Q3VlKS5mb250U2l6ZSIsIHBhcnNlSW50KDI0MCAqIHJlc2l6ZUNvdW50ICogMC4wNSkgKyAi
cHgiKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiIik7CisKKyAgICAgICAgICAgIGlmICgr
K3Jlc2l6ZUNvdW50IDwgNSkgeworICAgICAgICAgICAgICAgIHNldFZpZGVvU2l6ZSgzMjAgKiBy
ZXNpemVDb3VudCwgMjQwICogcmVzaXplQ291bnQpOworICAgICAgICAgICAgICAgIHNldFRpbWVv
dXQocmVzaXplVGVzdCwgMTApOworICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAg
fQogCisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImdldENvbXB1dGVkU3R5bGUoY3VycmVudEN1
ZSkuZm9udEZhbWlseSIsICJzYW5zLXNlcmlmIik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQo
ImdldENvbXB1dGVkU3R5bGUoY3VycmVudEN1ZSkuY29sb3IiLCAicmdiKDI1NSwgMjU1LCAyNTUp
Iik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImdldENvbXB1dGVkU3R5bGUodGV4dFRyYWNr
RGlzcGxheUVsZW1lbnQodmlkZW8sICdkaXNwbGF5JykuZmlyc3RDaGlsZCkuYmFja2dyb3VuZENv
bG9yIiwgInJnYmEoMCwgMCwgMCwgMC44KSIpOworCisgICAgICAgICAgICBjb25zb2xlV3JpdGUo
IiIpOwogICAgICAgICAgICAgZW5kVGVzdCgpOwogCiAgICAgICAgICAgICAvLyBSZXNpemUgdGhl
IHZpZGVvIHNvIGl0IGlzIGVhc2llciB0byBpbnRlcmFjdCB3aXRoIGl0IG1hbnVhbGx5LCBpZiBu
ZWNlc3NhcnkuCkBAIC00Miw2ICs0NiwxMyBAQAogICAgICAgICAgICAgdmlkZW8uaGVpZ2h0ID0g
MjQwOwogICAgICAgICB9CiAKKyAgICAgICAgZnVuY3Rpb24gdGVzdEN1ZVN0eWxlKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgY29uc29sZVdyaXRlKCI8YnI+VGVzdCB0aGUgY3VlIGRpc3BsYXkg
Y29sb3JzIGFuZCBmb250LiIpOworICAgICAgICAgICAgc2V0VmlkZW9TaXplKDMyMCwgMjQwKTsK
KyAgICAgICAgICAgIHNldFRpbWVvdXQocmVzaXplVGVzdCwgMTApOworICAgICAgICB9CisKICAg
ICAgICAgZnVuY3Rpb24gc2Vla2VkKCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKHRlc3RF
bmRlZCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>