<?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>91541</bug_id>
          
          <creation_ts>2012-07-17 14:05:09 -0700</creation_ts>
          <short_desc>[BlackBerry] Move about: URL handling out of WebCore</short_desc>
          <delta_ts>2012-07-23 15:34:36 -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>WebKit BlackBerry</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yong Li">yong.li.webkit</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>gyuyoung.kim</cc>
    
    <cc>mifenton</cc>
    
    <cc>rakuco</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>671580</commentid>
    <comment_count>0</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-07-17 14:05:09 -0700</bug_when>
    <thetext>To move about: URL handling  from network layer to WebKit/blackberry</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671607</commentid>
    <comment_count>1</comment_count>
      <attachid>152835</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-07-17 14:36:07 -0700</bug_when>
    <thetext>Created attachment 152835
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671610</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-17 14:40:27 -0700</bug_when>
    <thetext>Attachment 152835 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebKit/blackberry/WebKitSupport/AboutData.cpp:20:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
Source/WebKit/blackberry/WebKitSupport/AboutData.cpp:30:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 9 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>672445</commentid>
    <comment_count>3</comment_count>
      <attachid>153029</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-07-18 09:42:45 -0700</bug_when>
    <thetext>Created attachment 153029
try again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672462</commentid>
    <comment_count>4</comment_count>
      <attachid>153029</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-07-18 09:57:59 -0700</bug_when>
    <thetext>Comment on attachment 153029
try again

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

Looks good.

&gt; Source/WebKit/blackberry/Api/WebPage_p.h:100
&gt; +    bool loadAbout(const char* aboutURL);

Could it be const?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672565</commentid>
    <comment_count>5</comment_count>
      <attachid>153029</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-18 11:25:19 -0700</bug_when>
    <thetext>Comment on attachment 153029
try again

Clearing flags on attachment: 153029

Committed r122992: &lt;http://trac.webkit.org/changeset/122992&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>672566</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-18 11:25:24 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675774</commentid>
    <comment_count>7</comment_count>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-07-23 09:38:51 -0700</bug_when>
    <thetext>should be moved to the right place</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675866</commentid>
    <comment_count>8</comment_count>
      <attachid>153824</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-07-23 11:56:04 -0700</bug_when>
    <thetext>Created attachment 153824
move to a new place</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675870</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-23 11:57:35 -0700</bug_when>
    <thetext>Attachment 153824 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/blackberry/Api/WebPage.cpp&apos;,...&quot; exit_code: 1
Source/WebKit/blackberry/WebKitSupport/AboutData.cpp:359:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 1 in 4 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>675876</commentid>
    <comment_count>10</comment_count>
      <attachid>153828</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-07-23 12:00:37 -0700</bug_when>
    <thetext>Created attachment 153828
fix style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675907</commentid>
    <comment_count>11</comment_count>
      <attachid>153828</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-07-23 12:37:58 -0700</bug_when>
    <thetext>Comment on attachment 153828
fix style

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

Looks good, still some issues.

&gt; Source/WebKit/blackberry/ChangeLog:11
&gt; +        Other changes: Remove about:version which makes little sense. Make about:memory partially visible.

Bu about:version is still in use.

&gt; Source/WebKit/blackberry/WebCoreSupport/FrameLoaderClientBlackBerry.cpp:397
&gt; +            WTF::RefPtr&lt;SharedBuffer&gt; buffer = SharedBuffer::create(source.is8Bit() ? reinterpret_cast&lt;const char*&gt;(source.characters8()) : source.latin1().data(), source.length());

No WTF:: prefix needed.

&gt; Source/WebKit/blackberry/WebKitSupport/AboutData.cpp:328
&gt; +    } else if (equalIgnoringCase(aboutWhat, &quot;cache&quot;)) {

We seem to be dealing with cache a lot, how about an if block for when aboutWhat starts with &quot;cache&quot; and then do the subtests?

&gt; Source/WebKit/blackberry/WebKitSupport/AboutData.cpp:344
&gt; +        result.append(String(&quot;&lt;html&gt;&lt;head&gt;&lt;title&gt;BlackBerry Browser Disk Cache&lt;/title&gt;&lt;/head&gt;&lt;body&gt;Http disk cache is enabled.&lt;/body&gt;&lt;/html&gt;&quot;));

These two blocks are so similar that maybe a helper function can be added for them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675955</commentid>
    <comment_count>12</comment_count>
      <attachid>153852</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-07-23 13:39:01 -0700</bug_when>
    <thetext>Created attachment 153852
More cleanups</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675961</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-23 13:42:10 -0700</bug_when>
    <thetext>Attachment 153852 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/blackberry/Api/WebPage.cpp&apos;,...&quot; exit_code: 1
Source/WebKit/blackberry/WebKitSupport/AboutData.cpp:394:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Total errors found: 1 in 4 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>675980</commentid>
    <comment_count>14</comment_count>
      <attachid>153852</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-07-23 13:58:51 -0700</bug_when>
    <thetext>Comment on attachment 153852
More cleanups

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

Looks good.

&gt; Source/WebKit/blackberry/WebCoreSupport/FrameLoaderClientBlackBerry.cpp:397
&gt; +            WTF::RefPtr&lt;SharedBuffer&gt; buffer = SharedBuffer::create(source.is8Bit() ? reinterpret_cast&lt;const char*&gt;(source.characters8()) : source.latin1().data(), source.length());

You forgot to remove the WTF:: prefix :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675986</commentid>
    <comment_count>15</comment_count>
      <attachid>153858</attachid>
    <who name="Yong Li">yong.li.webkit</who>
    <bug_when>2012-07-23 14:05:50 -0700</bug_when>
    <thetext>Created attachment 153858
fix style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676081</commentid>
    <comment_count>16</comment_count>
      <attachid>153858</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-23 15:34:30 -0700</bug_when>
    <thetext>Comment on attachment 153858
fix style

Clearing flags on attachment: 153858

Committed r123391: &lt;http://trac.webkit.org/changeset/123391&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676082</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-23 15:34:36 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152835</attachid>
            <date>2012-07-17 14:36:07 -0700</date>
            <delta_ts>2012-07-18 09:59:09 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>91541.patch</filename>
            <type>text/plain</type>
            <size>58837</size>
            <attacher name="Yong Li">yong.li.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwNjYwNWFiLi5iOTk2NGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIg
QEAKKzIwMTItMDctMTcgIFlvbmcgTGkgIDx5b2xpQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNr
QmVycnldIE1vdmUgYWJvdXQ6IFVSTCBoYW5kbGluZyBvdXQgb2YgV2ViQ29yZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE1NDEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgYWJvdXQgVVJMIGhh
bmRsaW5nIGZyb20gb3VyIE5ldHdvcmtKb2IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2JsYWNrYmVycnkvTmV0d29ya0pvYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrSm9i
OjpOZXR3b3JrSm9iKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtKb2I6OmluaXRpYWxpemUp
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0pvYjo6Y2FuY2VsSm9iKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtKb2I6OnNlbmRSZXNwb25zZUlmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvTmV0d29ya0pvYi5oOgorICAgICAgICAoTmV0d29ya0pv
Yik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L05ldHdvcmtNYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtNYW5hZ2VyOjpzdGFydEpvYik6CisKIDIw
MTItMDctMTcgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgaW52
YWxpZGF0ZU5vZGVMaXN0Q2FjaGVzSW5BbmNlc3RvcnMgd2Fsa3MgdXAgYW5jZXN0b3JzIGV2ZW4g
d2hlbiBhbiBhdHRyaWJ1dGUgdGhhdCBkb2Vzbid0IGludmFsaWRhdGUgbm9kZSBsaXN0cyBjaGFu
Z2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVy
cnkvTmV0d29ya0pvYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNr
YmVycnkvTmV0d29ya0pvYi5jcHAKaW5kZXggNTZiODc2MC4uNjE0NTBjNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L05ldHdvcmtKb2IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9OZXR3b3Jr
Sm9iLmNwcApAQCAtMTksOCArMTksNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
Ik5ldHdvcmtKb2IuaCIKIAotI2luY2x1ZGUgIkFib3V0RGF0YS5oIgotI2luY2x1ZGUgIkFib3V0
VGVtcGxhdGUuaHRtbC5jcHAiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21l
Q2xpZW50LmgiCiAjaW5jbHVkZSAiQ29va2llTWFuYWdlci5oIgpAQCAtMzksOCArMzcsNiBAQAog
CiAjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtQ2xpZW50Lmg+CiAjaW5jbHVkZSA8QmxhY2tC
ZXJyeVBsYXRmb3JtTG9nLmg+Ci0jaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtV2ViS2l0Q3Jl
ZGl0cy5oPgotI2luY2x1ZGUgPEJ1aWxkSW5mb3JtYXRpb24uaD4KICNpbmNsdWRlIDxMb2NhbGl6
ZVJlc291cmNlLmg+CiAjaW5jbHVkZSA8bmV0d29yay9NdWx0aXBhcnRTdHJlYW0uaD4KICNpbmNs
dWRlIDxuZXR3b3JrL05ldHdvcmtTdHJlYW1GYWN0b3J5Lmg+CkBAIC02NiwxMSArNjIsOSBAQCBp
bmxpbmUgc3RhdGljIGJvb2wgaXNVbmF1dGhvcml6ZWQoaW50IHN0YXR1c0NvZGUpCiAKIE5ldHdv
cmtKb2I6Ok5ldHdvcmtKb2IoKQogICAgIDogbV9wbGF5ZXJJZCgwKQotICAgICwgbV9sb2FkQWJv
dXRUaW1lcih0aGlzLCAmTmV0d29ya0pvYjo6ZmlyZUxvYWRBYm91dFRpbWVyKQogICAgICwgbV9k
ZWxldGVKb2JUaW1lcih0aGlzLCAmTmV0d29ya0pvYjo6ZmlyZURlbGV0ZUpvYlRpbWVyKQogICAg
ICwgbV9zdHJlYW1GYWN0b3J5KDApCiAgICAgLCBtX2lzRmlsZShmYWxzZSkKLSAgICAsIG1faXNB
Ym91dChmYWxzZSkKICAgICAsIG1faXNGVFAoZmFsc2UpCiAgICAgLCBtX2lzRlRQRGlyKHRydWUp
CiAjaWZuZGVmIE5ERUJVRwpAQCAtMTA3LDcgKzEwMSw2IEBAIGJvb2wgTmV0d29ya0pvYjo6aW5p
dGlhbGl6ZShpbnQgcGxheWVySWQsCiAKICAgICBtX3Jlc3BvbnNlLnNldFVSTCh1cmwpOwogICAg
IG1faXNGaWxlID0gdXJsLnByb3RvY29sSXMoImZpbGUiKSB8fCB1cmwucHJvdG9jb2xJcygibG9j
YWwiKTsKLSAgICBtX2lzQWJvdXQgPSB1cmwucHJvdG9jb2xJcygiYWJvdXQiKTsKICAgICBtX2lz
RlRQID0gdXJsLnByb3RvY29sSXMoImZ0cCIpOwogCiAgICAgbV9oYW5kbGUgPSBoYW5kbGU7CkBA
IC0xMzIsMTAgKzEyNSw2IEBAIGJvb2wgTmV0d29ya0pvYjo6aW5pdGlhbGl6ZShpbnQgcGxheWVy
SWQsCiAgICAgICAgIG1faXNPdmVycmlkZUNvbnRlbnRUeXBlID0gdHJ1ZTsKICAgICB9CiAKLSAg
ICAvLyBObyBuZWVkIHRvIGNyZWF0ZSB0aGUgc3RyZWFtcyBmb3IgYWJvdXQuCi0gICAgaWYgKG1f
aXNBYm91dCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KICAgICBpZiAoIXJlcXVlc3QuZ2V0U3Vn
Z2VzdGVkU2F2ZU5hbWUoKS5lbXB0eSgpKSB7CiAgICAgICAgIG1fY29udGVudERpc3Bvc2l0aW9u
ID0gImZpbGVuYW1lPSI7CiAgICAgICAgIG1fY29udGVudERpc3Bvc2l0aW9uICs9IHJlcXVlc3Qu
Z2V0U3VnZ2VzdGVkU2F2ZU5hbWUoKS5jX3N0cigpOwpAQCAtMTQ5LDI0ICsxMzgsMTAgQEAgYm9v
bCBOZXR3b3JrSm9iOjppbml0aWFsaXplKGludCBwbGF5ZXJJZCwKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotdm9pZCBOZXR3b3JrSm9iOjpsb2FkQWJvdXRVUkwoKQotewotICAgIG1fbG9hZEFib3V0
VGltZXIuc3RhcnRPbmVTaG90KDApOwotfQotCiBpbnQgTmV0d29ya0pvYjo6Y2FuY2VsSm9iKCkK
IHsKICAgICBtX2NhbmNlbGxlZCA9IHRydWU7CiAKLSAgICAvLyBDYW5jZWwgam9icyBsb2FkaW5n
IGxvY2FsIGRhdGEgYnkga2lsbGluZyB0aGUgdGltZXIsIGFuZCBqb2JzCi0gICAgLy8gZ2V0dGlu
ZyBkYXRhIGZyb20gdGhlIG5ldHdvcmsgYnkgY2FsbGluZyB0aGUgaW5oZXJpdGVkIFVSTFN0cmVh
bTo6Y2FuY2VsLgotCi0gICAgaWYgKG1fbG9hZEFib3V0VGltZXIuaXNBY3RpdmUoKSkgewotICAg
ICAgICBtX2xvYWRBYm91dFRpbWVyLnN0b3AoKTsKLSAgICAgICAgbm90aWZ5Q2xvc2UoQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OkZpbHRlclN0cmVhbTo6U3RhdHVzQ2FuY2VsbGVkKTsKLSAgICAgICAg
cmV0dXJuIDA7Ci0gICAgfQotCiAgICAgcmV0dXJuIHN0cmVhbUNhbmNlbCgpOwogfQogCkBAIC02
MTAsNyArNTg1LDcgQEAgdm9pZCBOZXR3b3JrSm9iOjpzZW5kUmVzcG9uc2VJZk5lZWRlZCgpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIFN0cmluZyB1cmxGaWxlbmFtZTsKLSAgICBpZiAoIW1fcmVz
cG9uc2UudXJsKCkucHJvdG9jb2xJc0RhdGEoKSAmJiAhbV9yZXNwb25zZS51cmwoKS5wcm90b2Nv
bElzKCJhYm91dCIpKQorICAgIGlmICghbV9yZXNwb25zZS51cmwoKS5wcm90b2NvbElzRGF0YSgp
KQogICAgICAgICB1cmxGaWxlbmFtZSA9IG1fcmVzcG9uc2UudXJsKCkubGFzdFBhdGhDb21wb25l
bnQoKTsKIAogICAgIC8vIEdldCB0aGUgTUlNRSB0eXBlIHRoYXQgd2FzIHNldCBieSB0aGUgY29u
dGVudCBzbmlmZmVyCkBAIC02MzgsMzIgKzYxMywyMyBAQCB2b2lkIE5ldHdvcmtKb2I6OnNlbmRS
ZXNwb25zZUlmTmVlZGVkKCkKICAgICBpZiAoIWNvbnRlbnRMZW5ndGguaXNOdWxsKCkpCiAgICAg
ICAgIG1fcmVzcG9uc2Uuc2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKGNvbnRlbnRMZW5ndGgudG9J
bnQ2NCgpKTsKIAotICAgIC8vIFNldCBzdWdnZXN0ZWQgZmlsZW5hbWUgZm9yIGRvd25sb2FkcyBm
cm9tIHRoZSBDb250ZW50LURpc3Bvc2l0aW9uIGhlYWRlcjsgaWYgdGhpcyBmYWlscywKLSAgICAv
LyBmaWxsIGl0IGluIGZyb20gdGhlIHVybCBhbmQgc25pZmZlZCBtaW1lIHR5cGU7U2tpcCB0aGlz
IGZvciBhYm91dCBVUkxzLAotICAgIC8vIGJlY2F1c2UgdGhleSBoYXZlIG5vIENvbnRlbnQtRGlz
cG9zaXRpb24gaGVhZGVyIGFuZCB0aGUgZm9ybWF0IGlzIHdyb25nIHRvIGJlIGEgZmlsZW5hbWUu
Ci0gICAgaWYgKCFtX2lzQWJvdXQpIHsKLSAgICAgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1l
ID0gZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlvbihtX2NvbnRlbnREaXNwb3NpdGlv
bik7Ci0gICAgICAgIGlmIChzdWdnZXN0ZWRGaWxlbmFtZS5pc0VtcHR5KCkpIHsKLSAgICAgICAg
ICAgIC8vIENoZWNrIGFuZCBzZWUgaWYgYW4gZXh0ZW5zaW9uIGFscmVhZHkgZXhpc3RzLgotICAg
ICAgICAgICAgU3RyaW5nIG1pbWVFeHRlbnNpb24gPSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRQcmVm
ZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZShtaW1lVHlwZSk7Ci0gICAgICAgICAgICBpZiAodXJs
RmlsZW5hbWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1pbWVFeHRlbnNpb24u
aXNFbXB0eSgpKSAvLyBObyBleHRlbnNpb24gZm91bmQgZm9yIHRoZSBtaW1lVHlwZS4KLSAgICAg
ICAgICAgICAgICAgICAgc3VnZ2VzdGVkRmlsZW5hbWUgPSBTdHJpbmcoQmxhY2tCZXJyeTo6UGxh
dGZvcm06OkxvY2FsaXplUmVzb3VyY2U6OmdldFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
RklMRU5BTUVfVU5USVRMRUQpKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgICAgIHN1Z2dlc3RlZEZpbGVuYW1lID0gU3RyaW5nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpM
b2NhbGl6ZVJlc291cmNlOjpnZXRTdHJpbmcoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkZJTEVOQU1F
X1VOVElUTEVEKSkgKyAiLiIgKyBtaW1lRXh0ZW5zaW9uOwotICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICBpZiAodXJsRmlsZW5hbWUucmV2ZXJzZUZpbmQoJy4nKSA9PSBub3RG
b3VuZCAmJiAhbWltZUV4dGVuc2lvbi5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgc3Vn
Z2VzdGVkRmlsZW5hbWUgPSB1cmxGaWxlbmFtZSArICcuJyArIG1pbWVFeHRlbnNpb247Ci0gICAg
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgIHN1Z2dlc3RlZEZpbGVuYW1lID0g
dXJsRmlsZW5hbWU7Ci0gICAgICAgICAgICB9CisgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1l
ID0gZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlvbihtX2NvbnRlbnREaXNwb3NpdGlv
bik7CisgICAgaWYgKHN1Z2dlc3RlZEZpbGVuYW1lLmlzRW1wdHkoKSkgeworICAgICAgICAvLyBD
aGVjayBhbmQgc2VlIGlmIGFuIGV4dGVuc2lvbiBhbHJlYWR5IGV4aXN0cy4KKyAgICAgICAgU3Ry
aW5nIG1pbWVFeHRlbnNpb24gPSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRQcmVmZXJyZWRFeHRlbnNp
b25Gb3JNSU1FVHlwZShtaW1lVHlwZSk7CisgICAgICAgIGlmICh1cmxGaWxlbmFtZS5pc0VtcHR5
KCkpIHsKKyAgICAgICAgICAgIGlmIChtaW1lRXh0ZW5zaW9uLmlzRW1wdHkoKSkgLy8gTm8gZXh0
ZW5zaW9uIGZvdW5kIGZvciB0aGUgbWltZVR5cGUuCisgICAgICAgICAgICAgICAgc3VnZ2VzdGVk
RmlsZW5hbWUgPSBTdHJpbmcoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvY2FsaXplUmVzb3VyY2U6
OmdldFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6RklMRU5BTUVfVU5USVRMRUQpKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzdWdnZXN0ZWRGaWxlbmFtZSA9IFN0cmlu
ZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9jYWxpemVSZXNvdXJjZTo6Z2V0U3RyaW5nKEJsYWNr
QmVycnk6OlBsYXRmb3JtOjpGSUxFTkFNRV9VTlRJVExFRCkpICsgIi4iICsgbWltZUV4dGVuc2lv
bjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmICh1cmxGaWxlbmFtZS5yZXZlcnNl
RmluZCgnLicpID09IG5vdEZvdW5kICYmICFtaW1lRXh0ZW5zaW9uLmlzRW1wdHkoKSkKKyAgICAg
ICAgICAgICAgIHN1Z2dlc3RlZEZpbGVuYW1lID0gdXJsRmlsZW5hbWUgKyAnLicgKyBtaW1lRXh0
ZW5zaW9uOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgc3VnZ2VzdGVkRmlsZW5h
bWUgPSB1cmxGaWxlbmFtZTsKICAgICAgICAgfQotICAgICAgICBtX3Jlc3BvbnNlLnNldFN1Z2dl
c3RlZEZpbGVuYW1lKHN1Z2dlc3RlZEZpbGVuYW1lKTsKICAgICB9Ci0KLSAgICAvLyBEb24ndCBj
YWNoZSByZXNvdXJjZXMgZm9yICJhYm91dDoiCi0gICAgaWYgKG1faXNBYm91dCkKLSAgICAgICAg
bV9yZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoIkNhY2hlLUNvbnRyb2wiLCAibm8tY2FjaGUi
KTsKKyAgICBtX3Jlc3BvbnNlLnNldFN1Z2dlc3RlZEZpbGVuYW1lKHN1Z2dlc3RlZEZpbGVuYW1l
KTsKIAogICAgIGlmIChpc0NsaWVudEF2YWlsYWJsZSgpKSB7CiAgICAgICAgIFJlY3Vyc2lvbkd1
YXJkIGd1YXJkKG1fY2FsbGluZ0NsaWVudCk7CkBAIC04MjgsMTAwICs3OTQsNCBAQCB2b2lkIE5l
dHdvcmtKb2I6OmZpcmVEZWxldGVKb2JUaW1lcihUaW1lcjxOZXR3b3JrSm9iPiopCiAgICAgTmV0
d29ya01hbmFnZXI6Omluc3RhbmNlKCktPmRlbGV0ZUpvYih0aGlzKTsKIH0KIAotdm9pZCBOZXR3
b3JrSm9iOjpoYW5kbGVBYm91dCgpCi17Ci0gICAgLy8gRmlyc3QgNiBjaGFycyBhcmUgImFib3V0
OiIuCi0gICAgU3RyaW5nIGFib3V0V2hhdChtX3Jlc3BvbnNlLnVybCgpLnN0cmluZygpLnN1YnN0
cmluZyg2KSk7Ci0KLSAgICBTdHJpbmcgcmVzdWx0OwotCi0gICAgYm9vbCBoYW5kbGVkID0gZmFs
c2U7Ci0gICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGFib3V0V2hhdCwgImJsYW5rIikpIHsKLSAg
ICAgICAgaGFuZGxlZCA9IHRydWU7Ci0gICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShh
Ym91dFdoYXQsICJjcmVkaXRzIikpIHsKLSAgICAgICAgcmVzdWx0LmFwcGVuZCh3cml0ZUhlYWRl
cigiQ3JlZGl0cyIpKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmcoIjxzdHlsZT4gLmFi
b3V0IHtwYWRkaW5nOjE0cHg7fSA8L3N0eWxlPiIpKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChT
dHJpbmcoQmxhY2tCZXJyeTo6UGxhdGZvcm06OldFQktJVENSRURJVFMpKTsKLSAgICAgICAgcmVz
dWx0LmFwcGVuZChTdHJpbmcoIjwvYm9keT48L2h0bWw+IikpOwotICAgICAgICBoYW5kbGVkID0g
dHJ1ZTsKLSAgICB9IGVsc2UgaWYgKGFib3V0V2hhdC5zdGFydHNXaXRoKCJjYWNoZT9xdWVyeT0i
LCBmYWxzZSkpIHsKLSAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNsaWVudCogY2xpZW50
ID0gQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNsaWVudDo6Z2V0KCk7Ci0gICAgICAgIEFTU0VSVChj
bGllbnQpOwotICAgICAgICBzdGQ6OnN0cmluZyBrZXkoYWJvdXRXaGF0LnN1YnN0cmluZygxMiwg
YWJvdXRXaGF0Lmxlbmd0aCgpIC0gMTIpLnV0ZjgoKS5kYXRhKCkpOyAvLyAxMiBpcyBsZW5ndGgg
b2YgImNhY2hlP3F1ZXJ5PSIuCi0gICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8aHRtbD48
aGVhZD48dGl0bGU+QmxhY2tCZXJyeSBCcm93c2VyIERpc2sgQ2FjaGU8L3RpdGxlPjwvaGVhZD48
Ym9keT4iKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKGtleS5kYXRhKCkpKTsKLSAg
ICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmcoIjxocj4iKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBl
bmQoU3RyaW5nKGNsaWVudC0+Z2VuZXJhdGVIdG1sRnJhZ21lbnRGb3JDYWNoZUhlYWRlcnMoa2V5
KS5kYXRhKCkpKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmcoIjwvYm9keT48L2h0bWw+
IikpOwotICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKLSAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKGFib3V0V2hhdCwgImNhY2hlIikpIHsKLSAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZv
cm06OkNsaWVudCogY2xpZW50ID0gQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNsaWVudDo6Z2V0KCk7
Ci0gICAgICAgIEFTU0VSVChjbGllbnQpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZygi
PGh0bWw+PGhlYWQ+PHRpdGxlPkJsYWNrQmVycnkgQnJvd3NlciBEaXNrIENhY2hlPC90aXRsZT48
L2hlYWQ+PGJvZHk+IikpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZyhjbGllbnQtPmdl
bmVyYXRlSHRtbEZyYWdtZW50Rm9yQ2FjaGVLZXlzKCkuZGF0YSgpKSk7Ci0gICAgICAgIHJlc3Vs
dC5hcHBlbmQoU3RyaW5nKCI8L2JvZHk+PC9odG1sPiIpKTsKLSAgICAgICAgaGFuZGxlZCA9IHRy
dWU7Ci0jaWYgIWRlZmluZWQoUFVCTElDX0JVSUxEKSB8fCAhUFVCTElDX0JVSUxECi0gICAgfSBl
bHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhYm91dFdoYXQsICJjYWNoZS9kaXNhYmxlIikpIHsK
LSAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNsaWVudCogY2xpZW50ID0gQmxhY2tCZXJy
eTo6UGxhdGZvcm06OkNsaWVudDo6Z2V0KCk7Ci0gICAgICAgIEFTU0VSVChjbGllbnQpOwotICAg
ICAgICBjbGllbnQtPnNldERpc2tDYWNoZUVuYWJsZWQoZmFsc2UpOwotICAgICAgICByZXN1bHQu
YXBwZW5kKFN0cmluZygiPGh0bWw+PGhlYWQ+PHRpdGxlPkJsYWNrQmVycnkgQnJvd3NlciBEaXNr
IENhY2hlPC90aXRsZT48L2hlYWQ+PGJvZHk+SHR0cCBkaXNrIGNhY2hlIGlzIGRpc2FibGVkLjwv
Ym9keT48L2h0bWw+IikpOwotICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKLSAgICB9IGVsc2UgaWYg
KGVxdWFsSWdub3JpbmdDYXNlKGFib3V0V2hhdCwgImNhY2hlL2VuYWJsZSIpKSB7Ci0gICAgICAg
IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpDbGllbnQqIGNsaWVudCA9IEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpDbGllbnQ6OmdldCgpOwotICAgICAgICBBU1NFUlQoY2xpZW50KTsKLSAgICAgICAgY2xp
ZW50LT5zZXREaXNrQ2FjaGVFbmFibGVkKHRydWUpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0
cmluZygiPGh0bWw+PGhlYWQ+PHRpdGxlPkJsYWNrQmVycnkgQnJvd3NlciBEaXNrIENhY2hlPC90
aXRsZT48L2hlYWQ+PGJvZHk+SHR0cCBkaXNrIGNhY2hlIGlzIGVuYWJsZWQuPC9ib2R5PjwvaHRt
bD4iKSk7Ci0gICAgICAgIGhhbmRsZWQgPSB0cnVlOwotICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2UoYWJvdXRXaGF0LCAiY29va2llIikpIHsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChT
dHJpbmcoIjxodG1sPjxoZWFkPjx0aXRsZT5CbGFja0JlcnJ5IEJyb3dzZXIgY29va2llIGluZm9y
bWF0aW9uPC90aXRsZT48L2hlYWQ+PGJvZHk+IikpOwotICAgICAgICByZXN1bHQuYXBwZW5kKGNv
b2tpZU1hbmFnZXIoKS5nZW5lcmF0ZUh0bWxGcmFnbWVudEZvckNvb2tpZXMoKSk7Ci0gICAgICAg
IHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8L2JvZHk+PC9odG1sPiIpKTsKLSAgICAgICAgaGFuZGxl
ZCA9IHRydWU7Ci0gICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhYm91dFdoYXQsICJ2
ZXJzaW9uIikpIHsKLSAgICAgICAgcmVzdWx0LmFwcGVuZCh3cml0ZUhlYWRlcigiVmVyc2lvbiIp
KTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmcoIjxkaXYgY2xhc3M9J2JveCc+PGRpdiBj
bGFzcz0nYm94LXRpdGxlJz5CdWlsZCBUaW1lPC9kaXY+PGJyPiIpKTsKLSAgICAgICAgcmVzdWx0
LmFwcGVuZChTdHJpbmcoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkJVSUxEVElNRSkpOwotICAgICAg
ICByZXN1bHQuYXBwZW5kKFN0cmluZygiPC9kaXY+PGJyPjxkaXYgc3R5bGU9J2ZvbnQtc2l6ZTox
MHB4O3RleHQtYWxpZ246Y2VudGVyOyc+QWxzbyBzZWUgdGhlIDxBIGhyZWY9J2Fib3V0OmJ1aWxk
Jz5idWlsZCBpbmZvcm1hdGlvbjwvQT4uPC9ib2R5PjwvaHRtbD4iKSk7Ci0gICAgICAgIGhhbmRs
ZWQgPSB0cnVlOwotICAgIH0gZWxzZSBpZiAoQmxhY2tCZXJyeTo6UGxhdGZvcm06OmRlYnVnU2V0
dGluZygpID4gMCAmJiBlcXVhbElnbm9yaW5nQ2FzZShhYm91dFdoYXQsICJjb25maWciKSkgewot
ICAgICAgICByZXN1bHQgPSBjb25maWdQYWdlKCk7Ci0gICAgICAgIGhhbmRsZWQgPSB0cnVlOwot
ICAgIH0gZWxzZSBpZiAoQmxhY2tCZXJyeTo6UGxhdGZvcm06OmRlYnVnU2V0dGluZygpID4gMCAm
JiBlcXVhbElnbm9yaW5nQ2FzZShhYm91dFdoYXQsICJidWlsZCIpKSB7Ci0gICAgICAgIHJlc3Vs
dC5hcHBlbmQod3JpdGVIZWFkZXIoIkJ1aWxkIikpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0
cmluZygiPGRpdiBjbGFzcz0nYm94Jz48ZGl2IGNsYXNzPSdib3gtdGl0bGUnPkJhc2ljPC9kaXY+
PHRhYmxlPiIpKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmcoIjx0cj48dGQ+QnVpbHQg
T246ICA8L3RkPjx0ZD4iKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpCVUlMRENPTVBVVEVSKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoU3Ry
aW5nKCI8L3RkPjwvdHI+IikpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZygiPHRyPjx0
ZD5CdWlsZCBVc2VyOiAgPC90ZD48dGQ+IikpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmlu
ZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6QlVJTERVU0VSKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBl
bmQoU3RyaW5nKCI8L3RkPjwvdHI+IikpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZygi
PHRyPjx0ZD5CdWlsZCBUaW1lOiAgPC90ZD48dGQ+IikpOwotICAgICAgICByZXN1bHQuYXBwZW5k
KFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6QlVJTERUSU1FKSk7Ci0gICAgICAgIHJlc3Vs
dC5hcHBlbmQoU3RyaW5nKCI8L3RhYmxlPjwvZGl2Pjxicj4iKSk7Ci0gICAgICAgIHJlc3VsdC5h
cHBlbmQoU3RyaW5nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpCVUlMRElORk9fV0VCS0lUKSk7Ci0g
ICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpCVUlMRElO
Rk9fUExBVEZPUk0pKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmcoQmxhY2tCZXJyeTo6
UGxhdGZvcm06OkJVSUxESU5GT19MSUJXRUJWSUVXKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQo
U3RyaW5nKCI8L2JvZHk+PC9odG1sPiIpKTsKLSAgICAgICAgaGFuZGxlZCA9IHRydWU7Ci0gICAg
fSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhYm91dFdoYXQsICJtZW1vcnkiKSkgewotICAg
ICAgICByZXN1bHQgPSBtZW1vcnlQYWdlKCk7Ci0gICAgICAgIGhhbmRsZWQgPSB0cnVlOwotI2Vu
ZGlmCi0gICAgfQotICAgIGlmIChoYW5kbGVkKSB7Ci0gICAgICAgIENTdHJpbmcgcmVzdWx0U3Ry
aW5nID0gcmVzdWx0LnV0ZjgoKTsKLSAgICAgICAgbm90aWZ5U3RhdHVzUmVjZWl2ZWQoQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OkZpbHRlclN0cmVhbTo6U3RhdHVzU3VjY2VzcywgMCk7Ci0gICAgICAg
IG5vdGlmeVN0cmluZ0hlYWRlclJlY2VpdmVkKCJDb250ZW50LUxlbmd0aCIsIFN0cmluZzo6bnVt
YmVyKHJlc3VsdFN0cmluZy5sZW5ndGgoKSkpOwotICAgICAgICBub3RpZnlTdHJpbmdIZWFkZXJS
ZWNlaXZlZCgiQ29udGVudC1UeXBlIiwgInRleHQvaHRtbCIpOwotICAgICAgICBub3RpZnlEYXRh
UmVjZWl2ZWRQbGFpbihyZXN1bHRTdHJpbmcuZGF0YSgpLCByZXN1bHRTdHJpbmcubGVuZ3RoKCkp
OwotICAgICAgICBub3RpZnlDbG9zZShCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6RmlsdGVyU3RyZWFt
OjpTdGF0dXNTdWNjZXNzKTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyBJZiB3ZSBjYW4gbm90
IGhhbmRsZSBpdCwgd2UgdGFrZSBpdCBhcyBhbiBlcnJvciBvZiBpbnZhbGlkIFVSTC4KLSAgICAg
ICAgbm90aWZ5U3RhdHVzUmVjZWl2ZWQoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkZpbHRlclN0cmVh
bTo6U3RhdHVzRXJyb3JJbnZhbGlkVXJsLCAwKTsKLSAgICAgICAgbm90aWZ5Q2xvc2UoQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OkZpbHRlclN0cmVhbTo6U3RhdHVzRXJyb3JJbnZhbGlkVXJsKTsKLSAg
ICB9Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9OZXR3b3JrSm9iLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvTmV0d29ya0pvYi5oCmluZGV4IDhmY2Vm
ZmMuLmI0OGMxZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
YmxhY2tiZXJyeS9OZXR3b3JrSm9iLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9ibGFja2JlcnJ5L05ldHdvcmtKb2IuaApAQCAtNjAsNyArNjAsNiBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBpc1J1bm5pbmcoKSBjb25zdCB7IHJldHVybiBtX2lzUnVubmluZzsgfQogI2VuZGlm
CiAgICAgYm9vbCBpc0NhbmNlbGxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuY2VsbGVkOyB9Ci0g
ICAgdm9pZCBsb2FkQWJvdXRVUkwoKTsKICAgICBpbnQgY2FuY2VsSm9iKCk7CiAgICAgYm9vbCBp
c0RlZmVycmluZ0xvYWRpbmcoKSBjb25zdCB7IHJldHVybiBtX2RlZmVyTG9hZGluZ0NvdW50ID4g
MDsgfQogICAgIHZvaWQgdXBkYXRlRGVmZXJMb2FkaW5nQ291bnQoaW50IGRlbHRhKTsKQEAgLTEx
NSwxNSArMTE0LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHNlbmRSZXNwb25zZUlmTmVlZGVkKCk7
CiAgICAgdm9pZCBzZW5kTXVsdGlwYXJ0UmVzcG9uc2VJZk5lZWRlZCgpOwogCi0gICAgdm9pZCBm
aXJlTG9hZEFib3V0VGltZXIoVGltZXI8TmV0d29ya0pvYj4qKQotICAgIHsKLSAgICAgICAgaGFu
ZGxlQWJvdXQoKTsKLSAgICB9Ci0KICAgICB2b2lkIGZpcmVEZWxldGVKb2JUaW1lcihUaW1lcjxO
ZXR3b3JrSm9iPiopOwogCi0gICAgdm9pZCBoYW5kbGVBYm91dCgpOwotCiAgICAgYm9vbCBoYW5k
bGVGVFBIZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIpOwogCiAgICAgLy8gVGhlIHNlcnZlciBu
ZWVkcyBhdXRoZW50aWNhdGlvbiBjcmVkZW50aWFscy4gU2VhcmNoIGluIHRoZSBDcmVkZW50aWFs
U3RvcmFnZQpAQCAtMTQ0LDcgKzEzNiw2IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fcGFnZUdy
b3VwTmFtZTsKICAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IG1faGFuZGxlOwogICAgIFJlc291
cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBUaW1lcjxOZXR3b3JrSm9iPiBtX2xvYWRBYm91
dFRpbWVyOwogICAgIE93blB0cjxSZXNvdXJjZVJlc3BvbnNlPiBtX211bHRpcGFydFJlc3BvbnNl
OwogICAgIFRpbWVyPE5ldHdvcmtKb2I+IG1fZGVsZXRlSm9iVGltZXI7CiAgICAgU3RyaW5nIG1f
Y29udGVudFR5cGU7CkBAIC0xNTIsNyArMTQzLDYgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9j
b250ZW50RGlzcG9zaXRpb247CiAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06Ok5ldHdvcmtTdHJl
YW1GYWN0b3J5KiBtX3N0cmVhbUZhY3Rvcnk7CiAgICAgYm9vbCBtX2lzRmlsZTsKLSAgICBib29s
IG1faXNBYm91dDsKICAgICBib29sIG1faXNGVFA7CiAgICAgYm9vbCBtX2lzRlRQRGlyOwogI2lm
bmRlZiBOREVCVUcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
YmxhY2tiZXJyeS9OZXR3b3JrTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2JsYWNrYmVycnkvTmV0d29ya01hbmFnZXIuY3BwCmluZGV4IDg5ZDYxOWMuLmI5MmEw
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJy
eS9OZXR3b3JrTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9ibGFja2JlcnJ5L05ldHdvcmtNYW5hZ2VyLmNwcApAQCAtMTM2LDEyICsxMzYsNiBAQCBib29s
IE5ldHdvcmtNYW5hZ2VyOjpzdGFydEpvYihpbnQgcGxheWVySWQsIGNvbnN0IFN0cmluZyYgcGFn
ZUdyb3VwTmFtZSwgUGFzc1JlZgogCiAgICAgbV9qb2JzLmFwcGVuZChuZXR3b3JrSm9iKTsKIAot
ICAgIGlmICh1cmwucHJvdG9jb2xJcygiYWJvdXQiKSkgewotICAgICAgICAvLyBJZiB0aGUgcHJv
dG9jb2wgbWF0Y2hlcyAiYWJvdXQiLCBsb2FkQWJvdXRVUkwgc2hvdWxkIHJlY29nbml6ZSBhbmQg
aGFuZGxlIGl0LgotICAgICAgICBuZXR3b3JrSm9iLT5sb2FkQWJvdXRVUkwoKTsKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfQotCiAgICAgaW50IHJlc3VsdCA9IG5ldHdvcmtKb2ItPnN0cmVh
bU9wZW4oKTsKICAgICBpZiAocmVzdWx0KQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IGIyM2FjNmQuLjNlYzVjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDct
MTcgIFlvbmcgTGkgIDx5b2xpQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIE1vdmUg
YWJvdXQ6IFVSTCBoYW5kbGluZyBvdXQgb2YgV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE1NDEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBYm91dERhdGEuY3BwIGlzIG1vdmVkIGZyb20gV2Vi
Q29yZVN1cHBvcnQgdG8gV2ViS2l0U3VwcG9ydC4KKworICAgICAgICAqIFBsYXRmb3JtQmxhY2tC
ZXJyeS5jbWFrZToKKwogMjAxMi0wNy0xNyAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3Vu
Zy5jb20+CiAKICAgICAgICAgW0VGTF0gTW92ZSBjb2RlcyByZWxhdGVkIHRvIHRoZW1lIHNldHRp
bmcgZnJvbSBXaWRnZXQgdG8gUmVuZGVyVGhlbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUJsYWNrQmVy
cnkuY21ha2UKaW5kZXggMGMyZjE4My4uMDVhYWVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUJs
YWNrQmVycnkuY21ha2UKQEAgLTY4LDcgKzY4LDYgQEAgTElTVChBUFBFTkQgV2ViS2l0X1NPVVJD
RVMKICAgICBibGFja2JlcnJ5L0FwaS9XZWJTZXR0aW5ncy5jcHAKICAgICBibGFja2JlcnJ5L0Fw
aS9XZWJTdHJpbmcuY3BwCiAgICAgYmxhY2tiZXJyeS9BcGkvV2ViVmlld3BvcnRBcmd1bWVudHMu
Y3BwCi0gICAgYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9BYm91dERhdGEuY3BwCiAgICAgYmxh
Y2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9BdXRvZmlsbE1hbmFnZXIuY3BwCiAgICAgYmxhY2tiZXJy
eS9XZWJDb3JlU3VwcG9ydC9DYWNoZUNsaWVudEJsYWNrQmVycnkuY3BwCiAgICAgYmxhY2tiZXJy
eS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRCbGFja0JlcnJ5LmNwcApAQCAtOTIsNiArOTEs
NyBAQCBMSVNUKEFQUEVORCBXZWJLaXRfU09VUkNFUwogICAgIGJsYWNrYmVycnkvV2ViQ29yZVN1
cHBvcnQvUGFnZVBvcHVwQmxhY2tCZXJyeS5jcHAKICAgICBibGFja2JlcnJ5L1dlYkNvcmVTdXBw
b3J0L1NlbGVjdFBvcHVwQ2xpZW50LmNwcAogICAgIGJsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQv
RGF0ZVBpY2tlckNsaWVudC5jcHAKKyAgICBibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvQWJvdXRE
YXRhLmNwcAogICAgIGJsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9CYWNraW5nU3RvcmVDb21wb3Np
dGluZ1N1cmZhY2UuY3BwCiAgICAgYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0JhY2tpbmdTdG9y
ZVRpbGUuY3BwCiAgICAgYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0JhY2tpbmdTdG9yZUNsaWVu
dC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCmluZGV4IDQ4NDZi
OTguLjk0MWEwMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2Vi
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcApA
QCAtMTksNiArMTksOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlBhZ2Uu
aCIKIAorI2luY2x1ZGUgIkFib3V0RGF0YS5oIgorI2luY2x1ZGUgIkFib3V0VGVtcGxhdGUuaHRt
bC5jcHAiCiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCIKICNpbmNsdWRlICJB
dXRvZmlsbE1hbmFnZXIuaCIKICNpbmNsdWRlICJCYWNrRm9yd2FyZENvbnRyb2xsZXIuaCIKQEAg
LTE1NSw2ICsxNTcsOCBAQAogI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybU1vdXNlRXZlbnQu
aD4KICNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1TY3JlZW4uaD4KICNpbmNsdWRlIDxCbGFj
a0JlcnJ5UGxhdGZvcm1TZXR0aW5ncy5oPgorI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybVdl
YktpdENyZWRpdHMuaD4KKyNpbmNsdWRlIDxCdWlsZEluZm9ybWF0aW9uLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ29u
dGV4dFJlZi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmLmg+CkBAIC02
MTUsNiArNjE5LDg0IEBAIHByaXZhdGU6CiAgICAgfQogfTsKIAorYm9vbCBXZWJQYWdlUHJpdmF0
ZTo6bG9hZEFib3V0KGNvbnN0IGNoYXIqIGFib3V0VVJMKQoreworICAgIGlmIChzdHJuY2FzZWNt
cChhYm91dFVSTCwgImFib3V0OiIsIDYpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAv
LyBGaXJzdCA2IGNoYXJzIGFyZSAiYWJvdXQ6Ii4KKyAgICBTdHJpbmcgYWJvdXRXaGF0KGFib3V0
VVJMICsgNik7CisKKyAgICBTdHJpbmcgcmVzdWx0OworCisgICAgaWYgKGVxdWFsSWdub3JpbmdD
YXNlKGFib3V0V2hhdCwgImNyZWRpdHMiKSkgeworICAgICAgICByZXN1bHQuYXBwZW5kKHdyaXRl
SGVhZGVyKCJDcmVkaXRzIikpOworICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZygiPHN0eWxl
PiAuYWJvdXQge3BhZGRpbmc6MTRweDt9IDwvc3R5bGU+IikpOworICAgICAgICByZXN1bHQuYXBw
ZW5kKFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V0VCS0lUQ1JFRElUUykpOworICAgICAg
ICByZXN1bHQuYXBwZW5kKFN0cmluZygiPC9ib2R5PjwvaHRtbD4iKSk7CisgICAgfSBlbHNlIGlm
IChhYm91dFdoYXQuc3RhcnRzV2l0aCgiY2FjaGU/cXVlcnk9IiwgZmFsc2UpKSB7CisgICAgICAg
IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpDbGllbnQqIGNsaWVudCA9IEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpDbGllbnQ6OmdldCgpOworICAgICAgICBBU1NFUlQoY2xpZW50KTsKKyAgICAgICAgc3Rk
OjpzdHJpbmcga2V5KGFib3V0V2hhdC5zdWJzdHJpbmcoMTIsIGFib3V0V2hhdC5sZW5ndGgoKSAt
IDEyKS51dGY4KCkuZGF0YSgpKTsgLy8gMTIgaXMgbGVuZ3RoIG9mICJjYWNoZT9xdWVyeT0iLgor
ICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZygiPGh0bWw+PGhlYWQ+PHRpdGxlPkJsYWNrQmVy
cnkgQnJvd3NlciBEaXNrIENhY2hlPC90aXRsZT48L2hlYWQ+PGJvZHk+IikpOworICAgICAgICBy
ZXN1bHQuYXBwZW5kKFN0cmluZyhrZXkuZGF0YSgpKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQo
U3RyaW5nKCI8aHI+IikpOworICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZyhjbGllbnQtPmdl
bmVyYXRlSHRtbEZyYWdtZW50Rm9yQ2FjaGVIZWFkZXJzKGtleSkuZGF0YSgpKSk7CisgICAgICAg
IHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8L2JvZHk+PC9odG1sPiIpKTsKKyAgICB9IGVsc2UgaWYg
KGVxdWFsSWdub3JpbmdDYXNlKGFib3V0V2hhdCwgImNhY2hlIikpIHsKKyAgICAgICAgQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OkNsaWVudCogY2xpZW50ID0gQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNs
aWVudDo6Z2V0KCk7CisgICAgICAgIEFTU0VSVChjbGllbnQpOworICAgICAgICByZXN1bHQuYXBw
ZW5kKFN0cmluZygiPGh0bWw+PGhlYWQ+PHRpdGxlPkJsYWNrQmVycnkgQnJvd3NlciBEaXNrIENh
Y2hlPC90aXRsZT48L2hlYWQ+PGJvZHk+IikpOworICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmlu
ZyhjbGllbnQtPmdlbmVyYXRlSHRtbEZyYWdtZW50Rm9yQ2FjaGVLZXlzKCkuZGF0YSgpKSk7Cisg
ICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8L2JvZHk+PC9odG1sPiIpKTsKKyNpZiAhZGVm
aW5lZChQVUJMSUNfQlVJTEQpIHx8ICFQVUJMSUNfQlVJTEQKKyAgICB9IGVsc2UgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKGFib3V0V2hhdCwgImNhY2hlL2Rpc2FibGUiKSkgeworICAgICAgICBCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6Q2xpZW50KiBjbGllbnQgPSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
Q2xpZW50OjpnZXQoKTsKKyAgICAgICAgQVNTRVJUKGNsaWVudCk7CisgICAgICAgIGNsaWVudC0+
c2V0RGlza0NhY2hlRW5hYmxlZChmYWxzZSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5n
KCI8aHRtbD48aGVhZD48dGl0bGU+QmxhY2tCZXJyeSBCcm93c2VyIERpc2sgQ2FjaGU8L3RpdGxl
PjwvaGVhZD48Ym9keT5IdHRwIGRpc2sgY2FjaGUgaXMgZGlzYWJsZWQuPC9ib2R5PjwvaHRtbD4i
KSk7CisgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhYm91dFdoYXQsICJjYWNoZS9l
bmFibGUiKSkgeworICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q2xpZW50KiBjbGllbnQg
PSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q2xpZW50OjpnZXQoKTsKKyAgICAgICAgQVNTRVJUKGNs
aWVudCk7CisgICAgICAgIGNsaWVudC0+c2V0RGlza0NhY2hlRW5hYmxlZCh0cnVlKTsKKyAgICAg
ICAgcmVzdWx0LmFwcGVuZChTdHJpbmcoIjxodG1sPjxoZWFkPjx0aXRsZT5CbGFja0JlcnJ5IEJy
b3dzZXIgRGlzayBDYWNoZTwvdGl0bGU+PC9oZWFkPjxib2R5Pkh0dHAgZGlzayBjYWNoZSBpcyBl
bmFibGVkLjwvYm9keT48L2h0bWw+IikpOworICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2UoYWJvdXRXaGF0LCAiY29va2llIikpIHsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmco
IjxodG1sPjxoZWFkPjx0aXRsZT5CbGFja0JlcnJ5IEJyb3dzZXIgY29va2llIGluZm9ybWF0aW9u
PC90aXRsZT48L2hlYWQ+PGJvZHk+IikpOworICAgICAgICByZXN1bHQuYXBwZW5kKGNvb2tpZU1h
bmFnZXIoKS5nZW5lcmF0ZUh0bWxGcmFnbWVudEZvckNvb2tpZXMoKSk7CisgICAgICAgIHJlc3Vs
dC5hcHBlbmQoU3RyaW5nKCI8L2JvZHk+PC9odG1sPiIpKTsKKyAgICB9IGVsc2UgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKGFib3V0V2hhdCwgInZlcnNpb24iKSkgeworICAgICAgICByZXN1bHQuYXBw
ZW5kKHdyaXRlSGVhZGVyKCJWZXJzaW9uIikpOworICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmlu
ZygiPGRpdiBjbGFzcz0nYm94Jz48ZGl2IGNsYXNzPSdib3gtdGl0bGUnPkJ1aWxkIFRpbWU8L2Rp
dj48YnI+IikpOworICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0
Zm9ybTo6QlVJTERUSU1FKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8L2Rpdj48
YnI+PGRpdiBzdHlsZT0nZm9udC1zaXplOjEwcHg7dGV4dC1hbGlnbjpjZW50ZXI7Jz5BbHNvIHNl
ZSB0aGUgPEEgaHJlZj0nYWJvdXQ6YnVpbGQnPmJ1aWxkIGluZm9ybWF0aW9uPC9BPi48L2JvZHk+
PC9odG1sPiIpKTsKKyAgICB9IGVsc2UgaWYgKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpkZWJ1Z1Nl
dHRpbmcoKSA+IDAgJiYgZXF1YWxJZ25vcmluZ0Nhc2UoYWJvdXRXaGF0LCAiY29uZmlnIikpIHsK
KyAgICAgICAgcmVzdWx0ID0gY29uZmlnUGFnZSgpOworICAgIH0gZWxzZSBpZiAoQmxhY2tCZXJy
eTo6UGxhdGZvcm06OmRlYnVnU2V0dGluZygpID4gMCAmJiBlcXVhbElnbm9yaW5nQ2FzZShhYm91
dFdoYXQsICJidWlsZCIpKSB7CisgICAgICAgIHJlc3VsdC5hcHBlbmQod3JpdGVIZWFkZXIoIkJ1
aWxkIikpOworICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZygiPGRpdiBjbGFzcz0nYm94Jz48
ZGl2IGNsYXNzPSdib3gtdGl0bGUnPkJhc2ljPC9kaXY+PHRhYmxlPiIpKTsKKyAgICAgICAgcmVz
dWx0LmFwcGVuZChTdHJpbmcoIjx0cj48dGQ+QnVpbHQgT246ICA8L3RkPjx0ZD4iKSk7CisgICAg
ICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpCVUlMRENPTVBV
VEVSKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8L3RkPjwvdHI+IikpOworICAg
ICAgICByZXN1bHQuYXBwZW5kKFN0cmluZygiPHRyPjx0ZD5CdWlsZCBVc2VyOiAgPC90ZD48dGQ+
IikpOworICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
QlVJTERVU0VSKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8L3RkPjwvdHI+Iikp
OworICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZygiPHRyPjx0ZD5CdWlsZCBUaW1lOiAgPC90
ZD48dGQ+IikpOworICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0
Zm9ybTo6QlVJTERUSU1FKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8L3RhYmxl
PjwvZGl2Pjxicj4iKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKEJsYWNrQmVycnk6
OlBsYXRmb3JtOjpCVUlMRElORk9fV0VCS0lUKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoU3Ry
aW5nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpCVUlMRElORk9fUExBVEZPUk0pKTsKKyAgICAgICAg
cmVzdWx0LmFwcGVuZChTdHJpbmcoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkJVSUxESU5GT19MSUJX
RUJWSUVXKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8L2JvZHk+PC9odG1sPiIp
KTsKKyAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGFib3V0V2hhdCwgIm1lbW9yeSIp
KSB7CisgICAgICAgIHJlc3VsdCA9IG1lbW9yeVBhZ2UoKTsKKyNlbmRpZgorICAgIH0gZWxzZQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBsb2FkU3RyaW5nKHJlc3VsdC5sYXRpbjEoKS5k
YXRhKCksIGFib3V0VVJMLCAidGV4dC9odG1sIik7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZv
aWQgV2ViUGFnZVByaXZhdGU6OmxvYWQoY29uc3QgY2hhciogdXJsLCBjb25zdCBjaGFyKiBuZXR3
b3JrVG9rZW4sIGNvbnN0IGNoYXIqIG1ldGhvZCwgUGxhdGZvcm06Ok5ldHdvcmtSZXF1ZXN0OjpD
YWNoZVBvbGljeSBjYWNoZVBvbGljeSwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5n
dGgsIGNvbnN0IGNoYXIqIGNvbnN0KiBoZWFkZXJzLCBzaXplX3QgaGVhZGVyc0xlbmd0aCwgYm9v
bCBpc0luaXRpYWwsIGJvb2wgbXVzdEhhbmRsZUludGVybmFsbHksIGJvb2wgZm9yY2VEb3dubG9h
ZCwgY29uc3QgY2hhciogb3ZlcnJpZGVDb250ZW50VHlwZSwgY29uc3QgY2hhciogc3VnZ2VzdGVk
U2F2ZU5hbWUpCiB7CiAgICAgc3RvcEN1cnJlbnRMb2FkKCk7CkBAIC02NjUsNiArNzQ3LDggQEAg
dm9pZCBXZWJQYWdlUHJpdmF0ZTo6bG9hZChjb25zdCBjaGFyKiB1cmwsIGNvbnN0IGNoYXIqIG5l
dHdvcmtUb2tlbiwgY29uc3QgY2hhcioKIAogdm9pZCBXZWJQYWdlOjpsb2FkKGNvbnN0IGNoYXIq
IHVybCwgY29uc3QgY2hhciogbmV0d29ya1Rva2VuLCBib29sIGlzSW5pdGlhbCkKIHsKKyAgICBp
ZiAoIW5ldHdvcmtUb2tlbiAmJiAhaXNJbml0aWFsICYmIGQtPmxvYWRBYm91dCh1cmwpKQorICAg
ICAgICByZXR1cm47CiAgICAgZC0+bG9hZCh1cmwsIG5ldHdvcmtUb2tlbiwgIkdFVCIsIFBsYXRm
b3JtOjpOZXR3b3JrUmVxdWVzdDo6VXNlUHJvdG9jb2xDYWNoZVBvbGljeSwgMCwgMCwgMCwgMCwg
aXNJbml0aWFsLCBmYWxzZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9BcGkvV2ViUGFnZV9wLmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBh
Z2VfcC5oCmluZGV4IDAwNTYzMWUuLmIwZWJjODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9BcGkvV2ViUGFnZV9wLmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L0FwaS9XZWJQYWdlX3AuaApAQCAtOTcsNiArOTcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYW5k
bGVNb3VzZUV2ZW50KFdlYkNvcmU6OlBsYXRmb3JtTW91c2VFdmVudCYpOwogICAgIGJvb2wgaGFu
ZGxlV2hlZWxFdmVudChXZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnQmKTsKIAorICAgIGJvb2wg
bG9hZEFib3V0KGNvbnN0IGNoYXIqIGFib3V0VVJMKTsKICAgICB2b2lkIGxvYWQoY29uc3QgY2hh
ciogdXJsLCBjb25zdCBjaGFyKiBuZXR3b3JrVG9rZW4sIGNvbnN0IGNoYXIqIG1ldGhvZCwgUGxh
dGZvcm06Ok5ldHdvcmtSZXF1ZXN0OjpDYWNoZVBvbGljeSwgY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IGRhdGFMZW5ndGgsIGNvbnN0IGNoYXIqIGNvbnN0KiBoZWFkZXJzLCBzaXplX3QgaGVhZGVy
c0xlbmd0aCwgYm9vbCBpc0luaXRpYWwsIGJvb2wgbXVzdEhhbmRsZUludGVybmFsbHkgPSBmYWxz
ZSwgYm9vbCBmb3JjZURvd25sb2FkID0gZmFsc2UsIGNvbnN0IGNoYXIqIG92ZXJyaWRlQ29udGVu
dFR5cGUgPSAiIiwgY29uc3QgY2hhciogc3VnZ2VzdGVkU2F2ZU5hbWUgPSAiIik7CiAgICAgdm9p
ZCBsb2FkU3RyaW5nKGNvbnN0IGNoYXIqIHN0cmluZywgY29uc3QgY2hhciogYmFzZVVSTCwgY29u
c3QgY2hhciogbWltZVR5cGUsIGNvbnN0IGNoYXIqIGZhaWxpbmdVUkwgPSAwKTsKICAgICBib29s
IGV4ZWN1dGVKYXZhU2NyaXB0KGNvbnN0IGNoYXIqIHNjcmlwdCwgSmF2YVNjcmlwdERhdGFUeXBl
JiByZXR1cm5UeXBlLCBXZWJTdHJpbmcmIHJldHVyblZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
Q2hhbmdlTG9nCmluZGV4IGRhMWU2OWEuLjc4OWQ2OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0No
YW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTA3LTE3ICBZb25nIExpICA8eW9saUByaW0u
Y29tPgorCisgICAgICAgIFtCbGFja0JlcnJ5XSBNb3ZlIGFib3V0OiBVUkwgaGFuZGxpbmcgb3V0
IG9mIFdlYkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTkxNTQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTW92ZSBhYm91dCBVUkwgaGFuZGxpbmcgY29kZSB0byBXZWJLaXQvYmxhY2tiZXJyeS4gTm93
IHdoZW4gV2ViUGFnZSBpcyBhc2tlZCB0byBsb2FkIGFuIGFib3V0IFVSTCwKKyAgICAgICAgaXQg
ZGlyZWN0bHkgY2FsbHMgbG9hZFN0cmluZygpIHdpdGggdGhlIGdlbmVyYXRlZCBzb3VyY2UuCisK
KyAgICAgICAgQWxzbyBtb3ZlIEFib3V0RGF0YS5oL2NwcCBmcm9tIFdlYkNvcmVTdXBwb3J0IHRv
IFdlYktpdFN1cHBvcnQgYW5kIGNoYW5nZSB0aGVpciBuYW1lc3BhY2UgZnJvbSBXZWJDb3JlCisg
ICAgICAgIHRvIEJsYWNrQmVycnk6OldlYktpdC4KKworICAgICAgICBUaGUgY2hhbmdlIGlzIHZl
cnkgbWVjaGFuaWNhbCBleGNlcHQgInByb2NzcyB0b3RhbCBtZW1vcnkgdXNhZ2UiIGluIGFib3V0
Om1lbW9yeSBub3cgb25seSBhY2NvdW50cyB1c2VkCisgICAgICAgIGJ5dGVzIGFuZCBpZ25vcmUg
ZnJlZSBzcGFjZXMgaW4gbWFsbG9jLgorCisgICAgICAgICogQXBpL1dlYlBhZ2UuY3BwOgorICAg
ICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJQYWdlUHJpdmF0ZTo6bG9hZEFib3V0KToKKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2U6Omxv
YWQpOgorICAgICAgICAqIEFwaS9XZWJQYWdlX3AuaDoKKyAgICAgICAgKFdlYlBhZ2VQcml2YXRl
KToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Fib3V0RGF0YS5jcHA6IFJlbmFtZWQgZnJvbSBT
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQWJvdXREYXRhLmNwcC4KKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OndyaXRlRmVhdHVy
ZXMpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpudW1iZXJUb0hUTUxUcik6CisgICAg
ICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OmJvb2wpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2Vi
S2l0Ojpjb25maWdQYWdlKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6Y2FjaGVUeXBl
U3RhdGlzdGljVG9IVE1MVHIpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpkdW1wSlND
VHlwZUNvdW50U2V0VG9UYWJsZUhUTUwpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0Ojpt
ZW1vcnlQYWdlKToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Fib3V0RGF0YS5oOiBSZW5hbWVk
IGZyb20gU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0Fib3V0RGF0YS5o
LgorICAgICAgICAoV2ViS2l0KToKKwogMjAxMi0wNy0xNyAgVml2ZWsgR2FsYXRhZ2UgIDx2aXZl
a2dhbGF0YWdlQGdtYWlsLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiByZWZhY3RvciBJ
bnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoKSB0byBhY2NlcHQgSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dl
YkNvcmVTdXBwb3J0L0Fib3V0RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2Vi
Q29yZVN1cHBvcnQvQWJvdXREYXRhLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MzQ0OTliYS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1
cHBvcnQvQWJvdXREYXRhLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5OSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExp
Y2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUg
U29mdHdhcmUKLSAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJBYm91dERhdGEuaCIKLSNpbmNsdWRlICJBYm91dFRlbXBsYXRlLmh0
bWwuY3BwIgotCi0jaW5jbHVkZSAiQ1N0cmluZy5oIgotI2luY2x1ZGUgIkpTRE9NV2luZG93Lmgi
Ci0jaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKLSNpbmNsdWRlICJNZW1vcnlTdGF0aXN0aWNzLmgi
Ci0jaW5jbHVkZSAiU3VyZmFjZVBvb2wuaCIKLSNpbmNsdWRlICJXZWJLaXRWZXJzaW9uLmgiCi0K
LSNpbmNsdWRlIDxwcm9jZXNzLmg+Ci0jaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtU2V0dGlu
Z3MuaD4KLSNpbmNsdWRlIDxoZWFwL0hlYXAuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTR2xvYmFs
RGF0YS5oPgotI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0jaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4K
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgU3RyaW5nIHdyaXRlRmVhdHVyZXMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIHRydWVMaXN0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmFsc2VM
aXN0KQotewotICAgIFN0cmluZyByZXQ7Ci0gICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDAsIGog
PSAwOyBpIDwgdHJ1ZUxpc3Quc2l6ZSgpIHx8IGogPCBmYWxzZUxpc3Quc2l6ZSgpOykgewotICAg
ICAgICBib29sIHBpY2tGcm9tRmFsc2UgPSAoKGkgPj0gdHJ1ZUxpc3Quc2l6ZSgpKSB8fCAoaiA8
IGZhbHNlTGlzdC5zaXplKCkgJiYgc3RyY21wKGZhbHNlTGlzdFtqXS5hc2NpaSgpLmRhdGEoKSwg
dHJ1ZUxpc3RbaV0uYXNjaWkoKS5kYXRhKCkpIDwgMCkpOwotICAgICAgICBjb25zdCBTdHJpbmcm
IGl0ZW0gPSAocGlja0Zyb21GYWxzZSA/IGZhbHNlTGlzdCA6IHRydWVMaXN0KVsgKHBpY2tGcm9t
RmFsc2UgPyBqIDogaSkrKyBdOwotICAgICAgICByZXQgKz0gU3RyaW5nKCI8dHI+PHRkPjxkaXYg
Y2xhc3M9JyIgKyBTdHJpbmcocGlja0Zyb21GYWxzZSA/ICJmYWxzZSIgOiAidHJ1ZSIpICsgIici
ICsgKGl0ZW0ubGVuZ3RoKCkgPj0gMzAgPyAiIHN0eWxlPSdmb250LXNpemU6MTBweDsnICIgOiAi
IikgKyAiPiIgKyBpdGVtICsgIjwvZGl2PjwvdGQ+PC90cj4iKTsKLSAgICB9Ci0gICAgcmV0dXJu
IHJldDsKLX0KLQotdGVtcGxhdGU8Y2xhc3MgVD4gU3RyaW5nIG51bWJlclRvSFRNTFRyKGNvbnN0
IFN0cmluZyYgZGVzY3JpcHRpb24sIFQgbnVtYmVyKQotewotICAgIHJldHVybiBTdHJpbmcoIjx0
cj48dGQ+IikgKyBkZXNjcmlwdGlvbiArICI8L3RkPjx0ZD4iICsgU3RyaW5nOjpudW1iZXIobnVt
YmVyKSArICI8L3RkPjwvdHI+IjsKLX0KLQotdGVtcGxhdGU8PiBTdHJpbmcgbnVtYmVyVG9IVE1M
VHI8Ym9vbD4oY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgYm9vbCB0cnV0aCkKLXsKLSAgICBy
ZXR1cm4gU3RyaW5nKCI8dHI+PHRkPiIpICsgZGVzY3JpcHRpb24gKyAiPC90ZD48dGQ+IiArICh0
cnV0aD8idHJ1ZSI6ImZhbHNlIikgKyAiPC90ZD48L3RyPiI7Ci19Ci0KLVN0cmluZyBjb25maWdQ
YWdlKCkKLXsKLSAgICBTdHJpbmcgcGFnZTsKLSNpZiAhZGVmaW5lZChQVUJMSUNfQlVJTEQpIHx8
ICFQVUJMSUNfQlVJTEQKLSAgICBwYWdlID0gd3JpdGVIZWFkZXIoIkNvbmZpZ3VyYXRpb24iKTsK
LSAgICArICI8ZGl2IGNsYXNzPVwiYm94XCI+PGRpdiBjbGFzcz1cImJveC10aXRsZVwiPkNvbXBp
bGVyIEluZm9ybWF0aW9uPC9kaXY+PHRhYmxlIGNsYXNzPSdmaXhlZC10YWJsZSc+PGNvbCB3aWR0
aD03NSU+PGNvbCB3aWR0aD0yNSU+IgotI2lmIENPTVBJTEVSKE1TVkMpCi0gICAgKyAiPHRyPjx0
ZD5NaWNyb3NvZnQgVmlzdWFsIEMrKzwvdGQ+PHRkPk1TVkM8L3RkPjwvdHI+IgotICAgICsgIjx0
cj48dGQ+X01TQ19WRVI8L3RkPjx0ZD4iICsgU3RyaW5nOjpudW1iZXIoX01TQ19WRVIpICsgIjwv
dGQ+PC90cj4iCi0gICAgKyAiPHRyPjx0ZD5fTVNDX0ZVTExfVkVSPC90ZD48dGQ+IiArIFN0cmlu
Zzo6bnVtYmVyKF9NU0NfRlVMTF9WRVIpICsgIjwvdGQ+PC90cj4iCi0gICAgKyAiPHRyPjx0ZD5f
TVNDX0JVSUxEPC90ZD48dGQ+IiArIFN0cmluZzo6bnVtYmVyKF9NU0NfQlVJTEQpICsgIjwvdGQ+
PC90cj4iCi0jZWxpZiBDT01QSUxFUihSVkNUKQotICAgICsgIjx0cj48dGQ+QVJNIFJlYWxWaWV3
IENvbXBpbGVyIFRvb2xraXQ8L3RkPjx0ZD5SVkNUPC90ZD48L3RyPiIKLSAgICArICI8dHI+PHRk
Pl9fQVJNQ0NfVkVSU0lPTjwvdGQ+PHRkPiIgKyBTdHJpbmc6Om51bWJlcihfX0FSTUNDX1ZFUlNJ
T04pICsgIjwvdGQ+PC90cj4iCi0jaWYgQ09NUElMRVIoUlZDVDRHTlUpCi0gICAgKyAiPHRyPjx0
ZD5SVkNUIDQrIGluIC0tZ251IG1vZGU8L3RkPjx0ZD4xPC90ZD48L3RyPiIKLSNlbmRpZgotI2Vs
aWYgQ09NUElMRVIoR0NDKQotICAgICsgIjx0cj48dGQ+R0NDPC90ZD48dGQ+IiArIFN0cmluZzo6
bnVtYmVyKF9fR05VQ19fKSArICIuIiArIFN0cmluZzo6bnVtYmVyKF9fR05VQ19NSU5PUl9fKSAr
ICIuIiArIFN0cmluZzo6bnVtYmVyKF9fR05VQ19QQVRDSExFVkVMX18pICsgIjwvdGQ+PC90cj4i
Ci0jZW5kaWYKLQotICAgIC8vIEFkZCAiIiB0byBzYXRpc2Z5IGNoZWNrLXdlYmtpdC1zdHlsZS4K
LSAgICArICIiOwotCi0gICAgcGFnZSArPSBTdHJpbmcoIjwvdGFibGU+PC9kaXY+PGJyPjxkaXYg
Y2xhc3M9J2JveCc+PGRpdiBjbGFzcz0nYm94LXRpdGxlJz5DUFUgSW5mb3JtYXRpb248L2Rpdj48
dGFibGUgY2xhc3M9J2ZpeGVkLXRhYmxlJz48Y29sIHdpZHRoPTc1JT48Y29sIHdpZHRoPTI1JT4i
KQotI2lmIENQVShYODYpCi0gICAgKyAiPHRyPjx0ZD5YODY8L3RkPjx0ZD48L3RkPjwvdHI+Igot
I2VsaWYgQ1BVKEFSTSkKLSAgICArICI8dHI+PHRkPkFSTTwvdGQ+PHRkPjwvdGQ+PC90cj4iCi0g
ICAgKyAiPHRyPjx0ZD5BUk1fQVJDSF9WRVJTSU9OPC90ZD48dGQ+IiArIFN0cmluZzo6bnVtYmVy
KFdURl9BUk1fQVJDSF9WRVJTSU9OKSArICI8L3RkPjwvdHI+IgotICAgICsgIjx0cj48dGQ+VEhV
TUJfQVJDSF9WRVJTSU9OPC90ZD48dGQ+IiArIFN0cmluZzo6bnVtYmVyKFdURl9USFVNQl9BUkNI
X1ZFUlNJT04pICsgIjwvdGQ+PC90cj4iCi0gICAgKyAiPHRyPjx0ZD5USFVNQjI8L3RkPjx0ZD4i
ICsgU3RyaW5nOjpudW1iZXIoV1RGX0NQVV9BUk1fVEhVTUIyKSArICI8L3RkPjwvdHI+IgotI2Vu
ZGlmCi0gICAgKyAiPHRyPjx0ZD5FbmRpYW5uZXNzPC90ZD48dGQ+IgotI2lmIENQVShCSUdfRU5E
SUFOKQotICAgICsgImJpZyIKLSNlbGlmIENQVShNSURETEVfRU5ESUFOKQotICAgICsgIm1pZGRs
ZSIKLSNlbHNlCi0gICAgKyAibGl0dGxlIgotI2VuZGlmCi0gICAgKyAiPC90ZD48L3RyPiI7Ci0K
LSAgICBwYWdlICs9IFN0cmluZygiPC90YWJsZT48L2Rpdj48YnI+PGRpdiBjbGFzcz0nYm94Jz48
ZGl2IGNsYXNzPSdib3gtdGl0bGUnPlBsYXRmb3JtIEluZm9ybWF0aW9uPC9kaXY+PHRhYmxlIGNs
YXNzPSdmaXhlZC10YWJsZSc+PGNvbCB3aWR0aD03NSU+PGNvbCB3aWR0aD0yNSU+IikKLSAgICAr
ICI8dHI+PHRkPldlYktpdCBWZXJzaW9uPC90ZD48dGQ+IiArIFN0cmluZzo6bnVtYmVyKFdFQktJ
VF9NQUpPUl9WRVJTSU9OKSArICIuIiArIFN0cmluZzo6bnVtYmVyKFdFQktJVF9NSU5PUl9WRVJT
SU9OKSArICI8L3RkPjwvdHI+IgotICAgICsgIjx0cj48dGQ+QmxhY2tCZXJyeTwvdGQ+PHRkPiIK
LSNpZiBQTEFURk9STShCTEFDS0JFUlJZKQotICAgICsgIjEiCi0jZWxzZQotICAgICsgIjAiCi0j
ZW5kaWYKLSAgICArICI8L3RkPjwvdHI+IgotICAgICsgIjx0cj48dGQ+X19TVERDX0lTT18xMDY0
Nl9fPC90ZD48dGQ+IgotI2lmZGVmIF9fU1REQ19JU09fMTA2NDZfXwotICAgICsgIjEiCi0jZWxz
ZQotICAgICsgIjAiCi0jZW5kaWYKLSAgICArICI8L3RkPjwvdHI+IjsKLQotICAgIEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpTZXR0aW5ncyogc2V0dGluZ3MgPSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
U2V0dGluZ3M6Omluc3RhbmNlKCk7Ci0gICAgcGFnZSArPSBTdHJpbmcoIjwvdGFibGU+PC9kaXY+
PGJyPjxkaXYgY2xhc3M9J2JveCc+PGRpdiBjbGFzcz0nYm94LXRpdGxlJz5QbGF0Zm9ybSBTZXR0
aW5nczwvZGl2Pjx0YWJsZSBzdHlsZT0nZm9udC1zaXplOjExcHg7JyBjbGFzcz0nZml4ZWQtdGFi
bGUnPjxjb2wgd2lkdGg9NzUlPjxjb2wgd2lkdGg9MjUlPiIpOwotICAgIHBhZ2UgKz0gbnVtYmVy
VG9IVE1MVHIoImlzUlNTRmlsdGVyaW5nRW5hYmxlZCIsIHNldHRpbmdzLT5pc1JTU0ZpbHRlcmlu
Z0VuYWJsZWQoKSk7Ci0gICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigic2Vjb25kYXJ5VGhyZWFk
U3RhY2tTaXplIiwgc2V0dGluZ3MtPnNlY29uZGFyeVRocmVhZFN0YWNrU2l6ZSgpKTsKLSAgICBw
YWdlICs9IG51bWJlclRvSFRNTFRyKCJtYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2UiLCBzZXR0aW5n
cy0+bWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlKCkpOwotICAgIHBhZ2UgKz0gbnVtYmVyVG9IVE1M
VHIoInNob3VsZFJlcG9ydExvd01lbW9yeVRvVXNlciIsIHNldHRpbmdzLT5zaG91bGRSZXBvcnRM
b3dNZW1vcnlUb1VzZXIoKSk7Ci0gICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigibnVtYmVyT2ZC
YWNraW5nU3RvcmVUaWxlcyIsIHNldHRpbmdzLT5udW1iZXJPZkJhY2tpbmdTdG9yZVRpbGVzKCkp
OwotICAgIHBhZ2UgKz0gbnVtYmVyVG9IVE1MVHIoIm1heGltdW1OdW1iZXJPZkJhY2tpbmcuLi5B
Y3Jvc3NQcm9jZXNzZXMiLCBzZXR0aW5ncy0+bWF4aW11bU51bWJlck9mQmFja2luZ1N0b3JlVGls
ZXNBY3Jvc3NQcm9jZXNzZXMoKSk7Ci0gICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigidGFic1N1
cHBvcnRlZEJ5Q2xpZW50Iiwgc2V0dGluZ3MtPnRhYnNTdXBwb3J0ZWRCeUNsaWVudCgpKTsKLSAg
ICBwYWdlICs9IG51bWJlclRvSFRNTFRyKCJjb250ZXh0TWVudUVuYWJsZWQiLCBzZXR0aW5ncy0+
Y29udGV4dE1lbnVFbmFibGVkKCkpOwotICAgIHBhZ2UgKz0gbnVtYmVyVG9IVE1MVHIoInNlbGVj
dGlvbkVuYWJsZWQiLCBzZXR0aW5ncy0+c2VsZWN0aW9uRW5hYmxlZCgpKTsKLSAgICBwYWdlICs9
IG51bWJlclRvSFRNTFRyKCJmaW5lQ3Vyc29yQ29udHJvbEVuYWJsZWQiLCBzZXR0aW5ncy0+Zmlu
ZUN1cnNvckNvbnRyb2xFbmFibGVkKCkpOwotICAgIHBhZ2UgKz0gbnVtYmVyVG9IVE1MVHIoImFs
d2F5c1Nob3dLZXlib2FyZE9uRm9jdXMiLCBzZXR0aW5ncy0+YWx3YXlzU2hvd0tleWJvYXJkT25G
b2N1cygpKTsKLSAgICBwYWdlICs9IG51bWJlclRvSFRNTFRyKCJhbGxvd0NlbnRlclNjcm9sbEFk
anVzdG1lbnRGb3JJbnB1dEZpZWxkcyIsIHNldHRpbmdzLT5hbGxvd0NlbnRlclNjcm9sbEFkanVz
dG1lbnRGb3JJbnB1dEZpZWxkcygpKTsKLSAgICBwYWdlICs9IG51bWJlclRvSFRNTFRyKCJ1bnJl
c3RyaWN0ZWRSZXNpemVFdmVudHMiLCBzZXR0aW5ncy0+dW5yZXN0cmljdGVkUmVzaXplRXZlbnRz
KCkpOwotICAgIHBhZ2UgKz0gbnVtYmVyVG9IVE1MVHIoImlzQnJpZGdlQnJvd3NlciIsIHNldHRp
bmdzLT5pc0JyaWRnZUJyb3dzZXIoKSk7Ci0gICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigiaXNX
ZWJHTFN1cHBvcnRlZCIsIHNldHRpbmdzLT5pc1dlYkdMU3VwcG9ydGVkKCkpOwotICAgIHBhZ2Ug
Kz0gbnVtYmVyVG9IVE1MVHIoInNob3dJbWFnZUxvY2F0aW9uT3B0aW9uc0luR0NNIiwgc2V0dGlu
Z3MtPnNob3dJbWFnZUxvY2F0aW9uT3B0aW9uc0luR0NNKCkpOwotICAgIHBhZ2UgKz0gbnVtYmVy
VG9IVE1MVHIoImZvcmNlR0xFUzJXaW5kb3dVc2FnZSIsIHNldHRpbmdzLT5mb3JjZUdMRVMyV2lu
ZG93VXNhZ2UoKSk7Ci0gICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigibWF4Q2xpY2thYmxlU3Bl
ZWQiLCBzZXR0aW5ncy0+bWF4Q2xpY2thYmxlU3BlZWQoKSk7Ci0gICAgcGFnZSArPSBudW1iZXJU
b0hUTUxUcigibWF4Sml0dGVyUmFkaXVzQ2xpY2siLCBzZXR0aW5ncy0+bWF4Sml0dGVyUmFkaXVz
Q2xpY2soKSk7Ci0gICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigibWF4Sml0dGVyUmFkaXVzVGFw
Iiwgc2V0dGluZ3MtPm1heEppdHRlclJhZGl1c1RhcCgpKTsKLSAgICBwYWdlICs9IG51bWJlclRv
SFRNTFRyKCJtYXhKaXR0ZXJSYWRpdXNTaW5nbGVUb3VjaE1vdmUiLCBzZXR0aW5ncy0+bWF4Sml0
dGVyUmFkaXVzU2luZ2xlVG91Y2hNb3ZlKCkpOwotICAgIHBhZ2UgKz0gbnVtYmVyVG9IVE1MVHIo
Im1heEppdHRlclJhZGl1c1RvdWNoSG9sZCIsIHNldHRpbmdzLT5tYXhKaXR0ZXJSYWRpdXNUb3Vj
aEhvbGQoKSk7Ci0gICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigibWF4Sml0dGVyUmFkaXVzSGFu
ZGxlRHJhZyIsIHNldHRpbmdzLT5tYXhKaXR0ZXJSYWRpdXNIYW5kbGVEcmFnKCkpOwotICAgIHBh
Z2UgKz0gbnVtYmVyVG9IVE1MVHIoIm1heEppdHRlclJhZGl1c1RhcEhpZ2hsaWdodCIsIHNldHRp
bmdzLT5tYXhKaXR0ZXJSYWRpdXNUYXBIaWdobGlnaHQoKSk7Ci0gICAgcGFnZSArPSBudW1iZXJU
b0hUTUxUcigibWF4Sml0dGVyRGlzdGFuY2VDbGljayIsIHNldHRpbmdzLT5tYXhKaXR0ZXJEaXN0
YW5jZUNsaWNrKCkpOwotICAgIHBhZ2UgKz0gbnVtYmVyVG9IVE1MVHIoIm1heEppdHRlckRpc3Rh
bmNlVGFwIiwgc2V0dGluZ3MtPm1heEppdHRlckRpc3RhbmNlVGFwKCkpOwotICAgIHBhZ2UgKz0g
bnVtYmVyVG9IVE1MVHIoIm1heEppdHRlckRpc3RhbmNlU2luZ2xlVG91Y2hNb3ZlIiwgc2V0dGlu
Z3MtPm1heEppdHRlckRpc3RhbmNlU2luZ2xlVG91Y2hNb3ZlKCkpOwotICAgIHBhZ2UgKz0gbnVt
YmVyVG9IVE1MVHIoIm1heEppdHRlckRpc3RhbmNlVG91Y2hIb2xkIiwgc2V0dGluZ3MtPm1heEpp
dHRlckRpc3RhbmNlVG91Y2hIb2xkKCkpOwotICAgIHBhZ2UgKz0gbnVtYmVyVG9IVE1MVHIoIm1h
eEppdHRlckRpc3RhbmNlVGFwSGlnaGxpZ2h0Iiwgc2V0dGluZ3MtPm1heEppdHRlckRpc3RhbmNl
VGFwSGlnaGxpZ2h0KCkpOwotICAgIHBhZ2UgKz0gbnVtYmVyVG9IVE1MVHIoIm1heEppdHRlckRp
c3RhbmNlSGFuZGxlRHJhZyIsIHNldHRpbmdzLT5tYXhKaXR0ZXJEaXN0YW5jZUhhbmRsZURyYWco
KSk7Ci0gICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigidG9wRmF0RmluZ2VyUGFkZGluZyIsIHNl
dHRpbmdzLT50b3BGYXRGaW5nZXJQYWRkaW5nKCkpOwotICAgIHBhZ2UgKz0gbnVtYmVyVG9IVE1M
VHIoInJpZ2h0RmF0RmluZ2VyUGFkZGluZyIsIHNldHRpbmdzLT5yaWdodEZhdEZpbmdlclBhZGRp
bmcoKSk7Ci0gICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigiYm90dG9tRmF0RmluZ2VyUGFkZGlu
ZyIsIHNldHRpbmdzLT5ib3R0b21GYXRGaW5nZXJQYWRkaW5nKCkpOwotICAgIHBhZ2UgKz0gbnVt
YmVyVG9IVE1MVHIoIm1heFNlbGVjdGlvbk5lY2tIZWlnaHQiLCBzZXR0aW5ncy0+bWF4U2VsZWN0
aW9uTmVja0hlaWdodCgpKTsKLSAgICBwYWdlICs9IG51bWJlclRvSFRNTFRyKCJsZWZ0RmF0Rmlu
Z2VyUGFkZGluZyIsIHNldHRpbmdzLT5sZWZ0RmF0RmluZ2VyUGFkZGluZygpKTsKLQotICAgIFZl
Y3RvcjxTdHJpbmc+IHRydWVMaXN0LCBmYWxzZUxpc3Q7Ci0gICAgI2luY2x1ZGUgIkFib3V0RGF0
YUVuYWJsZUZlYXR1cmVzLmNwcCIKLSAgICBwYWdlICs9IFN0cmluZygiPC90YWJsZT48L2Rpdj48
YnI+PGRpdiBjbGFzcz0nYm94Jz48ZGl2IGNsYXNzPSdib3gtdGl0bGUnPldlYktpdCBGZWF0dXJl
cyAoRU5BQkxFXyk8L2Rpdj48dGFibGUgY2xhc3M9J2ZpeGVkLXRhYmxlJz4iKTsKLQotICAgIHBh
Z2UgKz0gd3JpdGVGZWF0dXJlcyh0cnVlTGlzdCwgZmFsc2VMaXN0KTsKLQotICAgIHRydWVMaXN0
LmNsZWFyKCk7Ci0gICAgZmFsc2VMaXN0LmNsZWFyKCk7Ci0gICAgI2luY2x1ZGUgIkFib3V0RGF0
YUhhdmVGZWF0dXJlcy5jcHAiCi0gICAgcGFnZSArPSBTdHJpbmcoIjwvdGFibGU+PC9kaXY+PGJy
PjxkaXYgY2xhc3M9J2JveCc+PGRpdiBjbGFzcz0nYm94LXRpdGxlJz5XZWJLaXQgRmVhdHVyZXMg
KEhBVkVfKTwvZGl2Pjx0YWJsZSBjbGFzcz0nZml4ZWQtdGFibGUnPiIpOwotCi0gICAgcGFnZSAr
PSB3cml0ZUZlYXR1cmVzKHRydWVMaXN0LCBmYWxzZUxpc3QpOwotCi0gICAgdHJ1ZUxpc3QuY2xl
YXIoKTsKLSAgICBmYWxzZUxpc3QuY2xlYXIoKTsKLSAgICAjaW5jbHVkZSAiQWJvdXREYXRhVXNl
RmVhdHVyZXMuY3BwIgotICAgIHBhZ2UgKz0gU3RyaW5nKCI8L3RhYmxlPjwvZGl2Pjxicj48ZGl2
IGNsYXNzPSdib3gnPjxkaXYgY2xhc3M9J2JveC10aXRsZSc+V2ViS2l0IEZlYXR1cmVzIChVU0Vf
KTwvZGl2Pjx0YWJsZSBjbGFzcz0nZml4ZWQtdGFibGUnPiIpOwotICAgIHBhZ2UgKz0gd3JpdGVG
ZWF0dXJlcyh0cnVlTGlzdCwgZmFsc2VMaXN0KTsKLSAgICBwYWdlICs9IFN0cmluZygiPC90YWJs
ZT48L2Rpdj48L2JvZHk+PC9odG1sPiIpOwotI2VuZGlmCi0KLSAgICByZXR1cm4gcGFnZTsKLX0K
LQotc3RhdGljIFN0cmluZyBjYWNoZVR5cGVTdGF0aXN0aWNUb0hUTUxUcihjb25zdCBTdHJpbmcm
IGRlc2NyaXB0aW9uLCBjb25zdCBNZW1vcnlDYWNoZTo6VHlwZVN0YXRpc3RpYyYgc3RhdGlzdGlj
KQotewotICAgIGNvbnN0IGludCBzX2tpbG9CeXRlID0gMTAyNDsKLSAgICByZXR1cm4gU3RyaW5n
KCI8dHI+PHRkPiIpICsgZGVzY3JpcHRpb24gKyAiPC90ZD4iCi0gICAgICAgICsgIjx0ZD4iICsg
U3RyaW5nOjpudW1iZXIoc3RhdGlzdGljLmNvdW50KSArICI8L3RkPiIKLSAgICAgICAgKyAiPHRk
PiIgKyBTdHJpbmc6Om51bWJlcihzdGF0aXN0aWMuc2l6ZSAvIHNfa2lsb0J5dGUpICsgIjwvdGQ+
IgotICAgICAgICArICI8dGQ+IiArIFN0cmluZzo6bnVtYmVyKHN0YXRpc3RpYy5saXZlU2l6ZSAv
IHNfa2lsb0J5dGUpICsgIjwvdGQ+IgotICAgICAgICArICI8dGQ+IiArIFN0cmluZzo6bnVtYmVy
KHN0YXRpc3RpYy5kZWNvZGVkU2l6ZSAvIHNfa2lsb0J5dGUpICsgIjwvdGQ+IgotICAgICAgICAr
ICI8L3RyPiI7Ci19Ci0KLXN0YXRpYyB2b2lkIGR1bXBKU0NUeXBlQ291bnRTZXRUb1RhYmxlSFRN
TChTdHJpbmcmIHRhYmxlSFRNTCwgSlNDOjpUeXBlQ291bnRTZXQqIHR5cGVDb3VudFNldCkKLXsK
LSAgICBpZiAoIXR5cGVDb3VudFNldCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yIChKU0M6
OlR5cGVDb3VudFNldDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IHR5cGVDb3VudFNldC0+YmVnaW4o
KTsgaXRlciAhPSB0eXBlQ291bnRTZXQtPmVuZCgpOyArK2l0ZXIpCi0gICAgICAgIHRhYmxlSFRN
TCArPSBudW1iZXJUb0hUTUxUcihpdGVyLT5maXJzdCwgaXRlci0+c2Vjb25kKTsKLX0KLQotU3Ry
aW5nIG1lbW9yeVBhZ2UoKQotewotICAgIFN0cmluZyBwYWdlOwotCi0gICAgcGFnZSA9IHdyaXRl
SGVhZGVyKCJNZW1vcnkiKQotICAgICsgIjxkaXYgY2xhc3M9XCJib3hcIj48ZGl2IGNsYXNzPVwi
Ym94LXRpdGxlXCI+Q2FjaGUgSW5mb3JtYXRpb248YnI+PGRpdiBzdHlsZT0nZm9udC1zaXplOjEx
cHg7Y29sb3I6I0E4QThBOCc+U2l6ZSwgTGl2aW5nLCBhbmQgRGVjb2RlZCBhcmUgZXhwcmVzc2Vk
IGluIEtCLjwvZGl2Pjxicj48L2Rpdj48dGFibGUgY2xhc3M9J2ZpeGVkLXRhYmxlJz48Y29sIHdp
ZHRoPTc1JT48Y29sIHdpZHRoPTI1JT4iOwotCi0gICAgLy8gZ2VuZXJhdGUgY2FjaGUgaW5mb3Jt
YXRpb24KLSAgICBNZW1vcnlDYWNoZSogY2FjaGVJbmMgPSBtZW1vcnlDYWNoZSgpOwotICAgIE1l
bW9yeUNhY2hlOjpTdGF0aXN0aWNzIGNhY2hlU3RhdCA9IGNhY2hlSW5jLT5nZXRTdGF0aXN0aWNz
KCk7Ci0KLSAgICBwYWdlICs9ICI8dHI+IDx0aCBhbGlnbj1sZWZ0Pkl0ZW08L3RoPiA8dGggYWxp
Z249bGVmdD5Db3VudDwvdGg+IDx0aCBhbGlnbj1sZWZ0PlNpemU8L3RoPiA8dGggYWxpZ249bGVm
dD5MaXZpbmc8L3RoPiA8dGggYWxpZ249bGVmdD5EZWNvZGVkPC90aD48L3RyPiI7Ci0KLSAgICBN
ZW1vcnlDYWNoZTo6VHlwZVN0YXRpc3RpYyB0b3RhbDsKLSAgICB0b3RhbC5jb3VudCA9IGNhY2hl
U3RhdC5pbWFnZXMuY291bnQgKyBjYWNoZVN0YXQuY3NzU3R5bGVTaGVldHMuY291bnQKLSAgICAg
ICAgICAgICsgY2FjaGVTdGF0LnNjcmlwdHMuY291bnQgKyBjYWNoZVN0YXQueHNsU3R5bGVTaGVl
dHMuY291bnQgKyBjYWNoZVN0YXQuZm9udHMuY291bnQ7Ci0gICAgdG90YWwuc2l6ZSA9IGNhY2hl
SW5jLT50b3RhbFNpemUoKTsKLSAgICB0b3RhbC5saXZlU2l6ZSA9IGNhY2hlU3RhdC5pbWFnZXMu
bGl2ZVNpemUgKyBjYWNoZVN0YXQuY3NzU3R5bGVTaGVldHMubGl2ZVNpemUKLSAgICAgICAgICAg
ICsgY2FjaGVTdGF0LnNjcmlwdHMubGl2ZVNpemUgKyBjYWNoZVN0YXQueHNsU3R5bGVTaGVldHMu
bGl2ZVNpemUgKyBjYWNoZVN0YXQuZm9udHMubGl2ZVNpemU7Ci0gICAgdG90YWwuZGVjb2RlZFNp
emUgPSBjYWNoZVN0YXQuaW1hZ2VzLmRlY29kZWRTaXplCi0gICAgICAgICAgICArIGNhY2hlU3Rh
dC5jc3NTdHlsZVNoZWV0cy5kZWNvZGVkU2l6ZSArIGNhY2hlU3RhdC5zY3JpcHRzLmRlY29kZWRT
aXplCi0gICAgICAgICAgICArIGNhY2hlU3RhdC54c2xTdHlsZVNoZWV0cy5kZWNvZGVkU2l6ZSAr
IGNhY2hlU3RhdC5mb250cy5kZWNvZGVkU2l6ZTsKLQotICAgIHBhZ2UgKz0gY2FjaGVUeXBlU3Rh
dGlzdGljVG9IVE1MVHIoIlRvdGFsIiwgdG90YWwpOwotICAgIHBhZ2UgKz0gY2FjaGVUeXBlU3Rh
dGlzdGljVG9IVE1MVHIoIkltYWdlcyIsIGNhY2hlU3RhdC5pbWFnZXMpOwotICAgIHBhZ2UgKz0g
Y2FjaGVUeXBlU3RhdGlzdGljVG9IVE1MVHIoIkNTUyBTdHlsZSBTaGVldHMiLCBjYWNoZVN0YXQu
Y3NzU3R5bGVTaGVldHMpOwotICAgIHBhZ2UgKz0gY2FjaGVUeXBlU3RhdGlzdGljVG9IVE1MVHIo
IlNjcmlwdHMiLCBjYWNoZVN0YXQuc2NyaXB0cyk7Ci0jaWYgRU5BQkxFKFhTTFQpCi0gICAgcGFn
ZSArPSBjYWNoZVR5cGVTdGF0aXN0aWNUb0hUTUxUcigiWFNMIFN0eWxlIFNoZWV0cyIsIGNhY2hl
U3RhdC54c2xTdHlsZVNoZWV0cyk7Ci0jZW5kaWYKLSAgICBwYWdlICs9IGNhY2hlVHlwZVN0YXRp
c3RpY1RvSFRNTFRyKCJGb250cyIsIGNhY2hlU3RhdC5mb250cyk7Ci0KLSAgICBwYWdlICs9ICI8
L3RhYmxlPjwvZGl2Pjxicj4iOwotCi0jaWYgIWRlZmluZWQoUFVCTElDX0JVSUxEKSB8fCAhUFVC
TElDX0JVSUxECi0KLSAgICAvLyBKUyBlbmdpbmUgbWVtb3J5IHVzYWdlLgotICAgIEpTQzo6R2xv
YmFsTWVtb3J5U3RhdGlzdGljcyBqc2NNZW1vcnlTdGF0ID0gSlNDOjpnbG9iYWxNZW1vcnlTdGF0
aXN0aWNzKCk7Ci0gICAgSlNDOjpIZWFwJiBtYWluSGVhcCA9IEpTRE9NV2luZG93Ojpjb21tb25K
U0dsb2JhbERhdGEoKS0+aGVhcDsKLSAgICBPd25QdHI8SlNDOjpUeXBlQ291bnRTZXQ+IG9iamVj
dFR5cGVDb3VudHMgPSBtYWluSGVhcC5vYmplY3RUeXBlQ291bnRzKCk7Ci0gICAgT3duUHRyPEpT
Qzo6VHlwZUNvdW50U2V0PiBwcm90ZWN0ZWRPYmplY3RUeXBlQ291bnRzID0gbWFpbkhlYXAucHJv
dGVjdGVkT2JqZWN0VHlwZUNvdW50cygpOwotCi0gICAgLy8gTWFsbG9jIGluZm8uCi0gICAgc3Ry
dWN0IG1hbGxpbmZvIG1hbGxvY0luZm8gPSBtYWxsaW5mbygpOwotCi0gICAgcGFnZSArPSAiPGRp
diBjbGFzcz0nYm94Jz48ZGl2IGNsYXNzPSdib3gtdGl0bGUnPlByb2Nlc3MgbWVtb3J5IHVzYWdl
IHN1bW1hcnk8L2Rpdj48dGFibGUgY2xhc3M9J2ZpeGVkLXRhYmxlJz48Y29sIHdpZHRoPTc1JT48
Y29sIHdpZHRoPTI1JT4iOwotCi0gICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigiVG90YWwgbWVt
b3J5IHVzYWdlIChtYWxsb2MgKyBKU0MpIiwgbWFsbG9jSW5mby5hcmVuYSArIGpzY01lbW9yeVN0
YXQuc3RhY2tCeXRlcyArIGpzY01lbW9yeVN0YXQuSklUQnl0ZXMgKyBtYWluSGVhcC5jYXBhY2l0
eSgpKTsKLQotICAgIHN0cnVjdCBzdGF0IHByb2Nlc3NJbmZvOwotICAgIGlmICghc3RhdChTdHJp
bmc6OmZvcm1hdCgiL3Byb2MvJXUvYXMiLCBnZXRwaWQoKSkubGF0aW4xKCkuZGF0YSgpLCAmcHJv
Y2Vzc0luZm8pKQotICAgICAgICBwYWdlICs9IG51bWJlclRvSFRNTFRyKCJUb3RhbCBtYXBwZWQg
bWVtb3J5IiwgcHJvY2Vzc0luZm8uc3Rfc2l6ZSk7Ci0KLSAgICBwYWdlICs9ICI8L3RhYmxlPjwv
ZGl2Pjxicj4iOwotCi0gICAgcGFnZSArPSAiPGRpdiBjbGFzcz0nYm94Jz48ZGl2IGNsYXNzPSdi
b3gtdGl0bGUnPkpTIGVuZ2luZSBtZW1vcnkgdXNhZ2U8L2Rpdj48dGFibGUgY2xhc3M9J2ZpeGVk
LXRhYmxlJz48Y29sIHdpZHRoPTc1JT48Y29sIHdpZHRoPTI1JT4iOwotCi0gICAgcGFnZSArPSBu
dW1iZXJUb0hUTUxUcigiU3RhY2sgc2l6ZSIsIGpzY01lbW9yeVN0YXQuc3RhY2tCeXRlcyk7Ci0g
ICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigiSklUIG1lbW9yeSB1c2FnZSIsIGpzY01lbW9yeVN0
YXQuSklUQnl0ZXMpOwotICAgIHBhZ2UgKz0gbnVtYmVyVG9IVE1MVHIoIk1haW4gaGVhcCBjYXBh
Y2l0eSIsIG1haW5IZWFwLmNhcGFjaXR5KCkpOwotICAgIHBhZ2UgKz0gbnVtYmVyVG9IVE1MVHIo
Ik1haW4gaGVhcCBzaXplIiwgbWFpbkhlYXAuc2l6ZSgpKTsKLSAgICBwYWdlICs9IG51bWJlclRv
SFRNTFRyKCJPYmplY3QgY291bnQiLCBtYWluSGVhcC5vYmplY3RDb3VudCgpKTsKLSAgICBwYWdl
ICs9IG51bWJlclRvSFRNTFRyKCJHbG9iYWwgb2JqZWN0IGNvdW50IiwgbWFpbkhlYXAuZ2xvYmFs
T2JqZWN0Q291bnQoKSk7Ci0gICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigiUHJvdGVjdGVkIG9i
amVjdCBjb3VudCIsIG1haW5IZWFwLnByb3RlY3RlZE9iamVjdENvdW50KCkpOwotICAgIHBhZ2Ug
Kz0gbnVtYmVyVG9IVE1MVHIoIlByb3RlY3RlZCBnbG9iYWwgb2JqZWN0IGNvdW50IiwgbWFpbkhl
YXAucHJvdGVjdGVkR2xvYmFsT2JqZWN0Q291bnQoKSk7Ci0KLSAgICBwYWdlICs9ICI8L3RhYmxl
PjwvZGl2Pjxicj4iOwotCi0gICAgcGFnZSArPSAiPGRpdiBjbGFzcz0nYm94Jz48ZGl2IGNsYXNz
PSdib3gtdGl0bGUnPkpTIG9iamVjdCB0eXBlIGNvdW50czwvZGl2Pjx0YWJsZSBjbGFzcz0nZml4
ZWQtdGFibGUnPjxjb2wgd2lkdGg9NzUlPjxjb2wgd2lkdGg9MjUlPiI7Ci0gICAgZHVtcEpTQ1R5
cGVDb3VudFNldFRvVGFibGVIVE1MKHBhZ2UsIG9iamVjdFR5cGVDb3VudHMuZ2V0KCkpOwotICAg
IHBhZ2UgKz0gIjwvdGFibGU+PC9kaXY+PGJyPiI7Ci0KLSAgICBwYWdlICs9ICI8ZGl2IGNsYXNz
PSdib3gnPjxkaXYgY2xhc3M9J2JveC10aXRsZSc+SlMgcHJvdGVjdGVkIG9iamVjdCB0eXBlIGNv
dW50czwvZGl2Pjx0YWJsZSBjbGFzcz0nZml4ZWQtdGFibGUnPjxjb2wgd2lkdGg9NzUlPjxjb2wg
d2lkdGg9MjUlPiI7Ci0gICAgZHVtcEpTQ1R5cGVDb3VudFNldFRvVGFibGVIVE1MKHBhZ2UsIHBy
b3RlY3RlZE9iamVjdFR5cGVDb3VudHMuZ2V0KCkpOwotICAgIHBhZ2UgKz0gIjwvdGFibGU+PC9k
aXY+PGJyPiI7Ci0KLSAgICBwYWdlICs9ICI8ZGl2IGNsYXNzPSdib3gnPjxkaXYgY2xhc3M9J2Jv
eC10aXRsZSc+TWFsbG9jIEluZm9ybWF0aW9uPC9kaXY+PHRhYmxlIGNsYXNzPSdmaXhlZC10YWJs
ZSc+PGNvbCB3aWR0aD03NSU+PGNvbCB3aWR0aD0yNSU+IjsKLQotICAgIHBhZ2UgKz0gbnVtYmVy
VG9IVE1MVHIoIlRvdGFsIHNwYWNlIGluIHVzZSIsIG1hbGxvY0luZm8udXNtYmxrcyArIG1hbGxv
Y0luZm8udW9yZGJsa3MpOwotICAgIHBhZ2UgKz0gbnVtYmVyVG9IVE1MVHIoIlRvdGFsIHNwYWNl
IGluIGZyZWUgYmxvY2tzIiwgbWFsbG9jSW5mby5mc21ibGtzICsgbWFsbG9jSW5mby5mb3JkYmxr
cyk7Ci0gICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigiU2l6ZSBvZiB0aGUgYXJlbmEiLCBtYWxs
b2NJbmZvLmFyZW5hKTsKLSAgICBwYWdlICs9IG51bWJlclRvSFRNTFRyKCJOdW1iZXIgb2YgYmln
IGJsb2NrcyBpbiB1c2UiLCBtYWxsb2NJbmZvLm9yZGJsa3MpOwotICAgIHBhZ2UgKz0gbnVtYmVy
VG9IVE1MVHIoIk51bWJlciBvZiBzbWFsbCBibG9ja3MgaW4gdXNlIiwgbWFsbG9jSW5mby5zbWJs
a3MpOwotICAgIHBhZ2UgKz0gbnVtYmVyVG9IVE1MVHIoIk51bWJlciBvZiBoZWFkZXIgYmxvY2tz
IGluIHVzZSIsIG1hbGxvY0luZm8uaGJsa3MpOwotICAgIHBhZ2UgKz0gbnVtYmVyVG9IVE1MVHIo
IlNwYWNlIGluIGhlYWRlciBibG9jayBoZWFkZXJzIiwgbWFsbG9jSW5mby5oYmxraGQpOwotICAg
IHBhZ2UgKz0gbnVtYmVyVG9IVE1MVHIoIlNwYWNlIGluIHNtYWxsIGJsb2NrcyBpbiB1c2UiLCBt
YWxsb2NJbmZvLnVzbWJsa3MpOwotICAgIHBhZ2UgKz0gbnVtYmVyVG9IVE1MVHIoIk1lbW9yeSBp
biBmcmVlIHNtYWxsIGJsb2NrcyIsIG1hbGxvY0luZm8uZnNtYmxrcyk7Ci0gICAgcGFnZSArPSBu
dW1iZXJUb0hUTUxUcigiU3BhY2UgaW4gYmlnIGJsb2NrcyBpbiB1c2UiLCBtYWxsb2NJbmZvLnVv
cmRibGtzKTsKLSAgICBwYWdlICs9IG51bWJlclRvSFRNTFRyKCJNZW1vcnkgaW4gZnJlZSBiaWcg
YmxvY2tzIiwgbWFsbG9jSW5mby5mb3JkYmxrcyk7Ci0KLSAgICBwYWdlICs9ICI8L3RhYmxlPjwv
ZGl2PiI7Ci0jZW5kaWYKLQotICAgIHBhZ2UgKz0gIjwvYm9keT48L2h0bWw+IjsKLSAgICByZXR1
cm4gcGFnZTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dl
YkNvcmVTdXBwb3J0L0Fib3V0RGF0YS5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYkNv
cmVTdXBwb3J0L0Fib3V0RGF0YS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDk3
N2FiLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9y
dC9BYm91dERhdGEuaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTAgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICog
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9u
LCBNQSAgMDIxMTAtMTMwMSAgVVNBCi0gKi8KLQotI2lmbmRlZiBBYm91dERhdGFfaAotI2RlZmlu
ZSBBYm91dERhdGFfaAotCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1TdHJpbmcgY29uZmlnUGFnZSgpOwotU3RyaW5nIG1lbW9yeVBhZ2UoKTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gQWJvdXREYXRhX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0Fib3V0RGF0YS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9BYm91dERhdGEuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2MjU0ZjYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9BYm91dERhdGEu
Y3BwCkBAIC0wLDAgKzEsMzAzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIFJl
c2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEg
IFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBYm91dERhdGEuaCIK
KyNpbmNsdWRlICJBYm91dFRlbXBsYXRlLmh0bWwuY3BwIgorCisjaW5jbHVkZSAiQ1N0cmluZy5o
IgorI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCisjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKKyNp
bmNsdWRlICJNZW1vcnlTdGF0aXN0aWNzLmgiCisjaW5jbHVkZSAiU3VyZmFjZVBvb2wuaCIKKyNp
bmNsdWRlICJXZWJLaXRWZXJzaW9uLmgiCisKKyNpbmNsdWRlIDxwcm9jZXNzLmg+CisjaW5jbHVk
ZSA8QmxhY2tCZXJyeVBsYXRmb3JtU2V0dGluZ3MuaD4KKyNpbmNsdWRlIDxoZWFwL0hlYXAuaD4K
KyNpbmNsdWRlIDxydW50aW1lL0pTR2xvYmFsRGF0YS5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+
CisjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisK
K25hbWVzcGFjZSBCbGFja0JlcnJ5IHsKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgU3Ry
aW5nIHdyaXRlRmVhdHVyZXMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHRydWVMaXN0LCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgZmFsc2VMaXN0KQoreworICAgIFN0cmluZyByZXQ7CisgICAgZm9yICh1
bnNpZ25lZCBpbnQgaSA9IDAsIGogPSAwOyBpIDwgdHJ1ZUxpc3Quc2l6ZSgpIHx8IGogPCBmYWxz
ZUxpc3Quc2l6ZSgpOykgeworICAgICAgICBib29sIHBpY2tGcm9tRmFsc2UgPSAoKGkgPj0gdHJ1
ZUxpc3Quc2l6ZSgpKSB8fCAoaiA8IGZhbHNlTGlzdC5zaXplKCkgJiYgc3RyY21wKGZhbHNlTGlz
dFtqXS5hc2NpaSgpLmRhdGEoKSwgdHJ1ZUxpc3RbaV0uYXNjaWkoKS5kYXRhKCkpIDwgMCkpOwor
ICAgICAgICBjb25zdCBTdHJpbmcmIGl0ZW0gPSAocGlja0Zyb21GYWxzZSA/IGZhbHNlTGlzdCA6
IHRydWVMaXN0KVsgKHBpY2tGcm9tRmFsc2UgPyBqIDogaSkrKyBdOworICAgICAgICByZXQgKz0g
U3RyaW5nKCI8dHI+PHRkPjxkaXYgY2xhc3M9JyIgKyBTdHJpbmcocGlja0Zyb21GYWxzZSA/ICJm
YWxzZSIgOiAidHJ1ZSIpICsgIiciICsgKGl0ZW0ubGVuZ3RoKCkgPj0gMzAgPyAiIHN0eWxlPSdm
b250LXNpemU6MTBweDsnICIgOiAiIikgKyAiPiIgKyBpdGVtICsgIjwvZGl2PjwvdGQ+PC90cj4i
KTsKKyAgICB9CisgICAgcmV0dXJuIHJldDsKK30KKwordGVtcGxhdGU8Y2xhc3MgVD4gU3RyaW5n
IG51bWJlclRvSFRNTFRyKGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFQgbnVtYmVyKQorewor
ICAgIHJldHVybiBTdHJpbmcoIjx0cj48dGQ+IikgKyBkZXNjcmlwdGlvbiArICI8L3RkPjx0ZD4i
ICsgU3RyaW5nOjpudW1iZXIobnVtYmVyKSArICI8L3RkPjwvdHI+IjsKK30KKwordGVtcGxhdGU8
PiBTdHJpbmcgbnVtYmVyVG9IVE1MVHI8Ym9vbD4oY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwg
Ym9vbCB0cnV0aCkKK3sKKyAgICByZXR1cm4gU3RyaW5nKCI8dHI+PHRkPiIpICsgZGVzY3JpcHRp
b24gKyAiPC90ZD48dGQ+IiArICh0cnV0aD8idHJ1ZSI6ImZhbHNlIikgKyAiPC90ZD48L3RyPiI7
Cit9CisKK1N0cmluZyBjb25maWdQYWdlKCkKK3sKKyAgICBTdHJpbmcgcGFnZTsKKyNpZiAhZGVm
aW5lZChQVUJMSUNfQlVJTEQpIHx8ICFQVUJMSUNfQlVJTEQKKyAgICBwYWdlID0gd3JpdGVIZWFk
ZXIoIkNvbmZpZ3VyYXRpb24iKQorICAgICsgIjxkaXYgY2xhc3M9XCJib3hcIj48ZGl2IGNsYXNz
PVwiYm94LXRpdGxlXCI+Q29tcGlsZXIgSW5mb3JtYXRpb248L2Rpdj48dGFibGUgY2xhc3M9J2Zp
eGVkLXRhYmxlJz48Y29sIHdpZHRoPTc1JT48Y29sIHdpZHRoPTI1JT4iCisjaWYgQ09NUElMRVIo
TVNWQykKKyAgICArICI8dHI+PHRkPk1pY3Jvc29mdCBWaXN1YWwgQysrPC90ZD48dGQ+TVNWQzwv
dGQ+PC90cj4iCisgICAgKyAiPHRyPjx0ZD5fTVNDX1ZFUjwvdGQ+PHRkPiIgKyBTdHJpbmc6Om51
bWJlcihfTVNDX1ZFUikgKyAiPC90ZD48L3RyPiIKKyAgICArICI8dHI+PHRkPl9NU0NfRlVMTF9W
RVI8L3RkPjx0ZD4iICsgU3RyaW5nOjpudW1iZXIoX01TQ19GVUxMX1ZFUikgKyAiPC90ZD48L3Ry
PiIKKyAgICArICI8dHI+PHRkPl9NU0NfQlVJTEQ8L3RkPjx0ZD4iICsgU3RyaW5nOjpudW1iZXIo
X01TQ19CVUlMRCkgKyAiPC90ZD48L3RyPiIKKyNlbGlmIENPTVBJTEVSKFJWQ1QpCisgICAgKyAi
PHRyPjx0ZD5BUk0gUmVhbFZpZXcgQ29tcGlsZXIgVG9vbGtpdDwvdGQ+PHRkPlJWQ1Q8L3RkPjwv
dHI+IgorICAgICsgIjx0cj48dGQ+X19BUk1DQ19WRVJTSU9OPC90ZD48dGQ+IiArIFN0cmluZzo6
bnVtYmVyKF9fQVJNQ0NfVkVSU0lPTikgKyAiPC90ZD48L3RyPiIKKyNpZiBDT01QSUxFUihSVkNU
NEdOVSkKKyAgICArICI8dHI+PHRkPlJWQ1QgNCsgaW4gLS1nbnUgbW9kZTwvdGQ+PHRkPjE8L3Rk
PjwvdHI+IgorI2VuZGlmCisjZWxpZiBDT01QSUxFUihHQ0MpCisgICAgKyAiPHRyPjx0ZD5HQ0M8
L3RkPjx0ZD4iICsgU3RyaW5nOjpudW1iZXIoX19HTlVDX18pICsgIi4iICsgU3RyaW5nOjpudW1i
ZXIoX19HTlVDX01JTk9SX18pICsgIi4iICsgU3RyaW5nOjpudW1iZXIoX19HTlVDX1BBVENITEVW
RUxfXykgKyAiPC90ZD48L3RyPiIKKyNlbmRpZgorCisgICAgLy8gQWRkICIiIHRvIHNhdGlzZnkg
Y2hlY2std2Via2l0LXN0eWxlLgorICAgICsgIiI7CisKKyAgICBwYWdlICs9IFN0cmluZygiPC90
YWJsZT48L2Rpdj48YnI+PGRpdiBjbGFzcz0nYm94Jz48ZGl2IGNsYXNzPSdib3gtdGl0bGUnPkNQ
VSBJbmZvcm1hdGlvbjwvZGl2Pjx0YWJsZSBjbGFzcz0nZml4ZWQtdGFibGUnPjxjb2wgd2lkdGg9
NzUlPjxjb2wgd2lkdGg9MjUlPiIpCisjaWYgQ1BVKFg4NikKKyAgICArICI8dHI+PHRkPlg4Njwv
dGQ+PHRkPjwvdGQ+PC90cj4iCisjZWxpZiBDUFUoQVJNKQorICAgICsgIjx0cj48dGQ+QVJNPC90
ZD48dGQ+PC90ZD48L3RyPiIKKyAgICArICI8dHI+PHRkPkFSTV9BUkNIX1ZFUlNJT048L3RkPjx0
ZD4iICsgU3RyaW5nOjpudW1iZXIoV1RGX0FSTV9BUkNIX1ZFUlNJT04pICsgIjwvdGQ+PC90cj4i
CisgICAgKyAiPHRyPjx0ZD5USFVNQl9BUkNIX1ZFUlNJT048L3RkPjx0ZD4iICsgU3RyaW5nOjpu
dW1iZXIoV1RGX1RIVU1CX0FSQ0hfVkVSU0lPTikgKyAiPC90ZD48L3RyPiIKKyAgICArICI8dHI+
PHRkPlRIVU1CMjwvdGQ+PHRkPiIgKyBTdHJpbmc6Om51bWJlcihXVEZfQ1BVX0FSTV9USFVNQjIp
ICsgIjwvdGQ+PC90cj4iCisjZW5kaWYKKyAgICArICI8dHI+PHRkPkVuZGlhbm5lc3M8L3RkPjx0
ZD4iCisjaWYgQ1BVKEJJR19FTkRJQU4pCisgICAgKyAiYmlnIgorI2VsaWYgQ1BVKE1JRERMRV9F
TkRJQU4pCisgICAgKyAibWlkZGxlIgorI2Vsc2UKKyAgICArICJsaXR0bGUiCisjZW5kaWYKKyAg
ICArICI8L3RkPjwvdHI+IjsKKworICAgIHBhZ2UgKz0gU3RyaW5nKCI8L3RhYmxlPjwvZGl2Pjxi
cj48ZGl2IGNsYXNzPSdib3gnPjxkaXYgY2xhc3M9J2JveC10aXRsZSc+UGxhdGZvcm0gSW5mb3Jt
YXRpb248L2Rpdj48dGFibGUgY2xhc3M9J2ZpeGVkLXRhYmxlJz48Y29sIHdpZHRoPTc1JT48Y29s
IHdpZHRoPTI1JT4iKQorICAgICsgIjx0cj48dGQ+V2ViS2l0IFZlcnNpb248L3RkPjx0ZD4iICsg
U3RyaW5nOjpudW1iZXIoV0VCS0lUX01BSk9SX1ZFUlNJT04pICsgIi4iICsgU3RyaW5nOjpudW1i
ZXIoV0VCS0lUX01JTk9SX1ZFUlNJT04pICsgIjwvdGQ+PC90cj4iCisgICAgKyAiPHRyPjx0ZD5C
bGFja0JlcnJ5PC90ZD48dGQ+IgorI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpCisgICAgKyAiMSIK
KyNlbHNlCisgICAgKyAiMCIKKyNlbmRpZgorICAgICsgIjwvdGQ+PC90cj4iCisgICAgKyAiPHRy
Pjx0ZD5fX1NURENfSVNPXzEwNjQ2X188L3RkPjx0ZD4iCisjaWZkZWYgX19TVERDX0lTT18xMDY0
Nl9fCisgICAgKyAiMSIKKyNlbHNlCisgICAgKyAiMCIKKyNlbmRpZgorICAgICsgIjwvdGQ+PC90
cj4iOworCisgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlNldHRpbmdzKiBzZXR0aW5ncyA9IEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpTZXR0aW5nczo6aW5zdGFuY2UoKTsKKyAgICBwYWdlICs9IFN0
cmluZygiPC90YWJsZT48L2Rpdj48YnI+PGRpdiBjbGFzcz0nYm94Jz48ZGl2IGNsYXNzPSdib3gt
dGl0bGUnPlBsYXRmb3JtIFNldHRpbmdzPC9kaXY+PHRhYmxlIHN0eWxlPSdmb250LXNpemU6MTFw
eDsnIGNsYXNzPSdmaXhlZC10YWJsZSc+PGNvbCB3aWR0aD03NSU+PGNvbCB3aWR0aD0yNSU+Iik7
CisgICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigiaXNSU1NGaWx0ZXJpbmdFbmFibGVkIiwgc2V0
dGluZ3MtPmlzUlNTRmlsdGVyaW5nRW5hYmxlZCgpKTsKKyAgICBwYWdlICs9IG51bWJlclRvSFRN
TFRyKCJzZWNvbmRhcnlUaHJlYWRTdGFja1NpemUiLCBzZXR0aW5ncy0+c2Vjb25kYXJ5VGhyZWFk
U3RhY2tTaXplKCkpOworICAgIHBhZ2UgKz0gbnVtYmVyVG9IVE1MVHIoIm1heFBpeGVsc1BlckRl
Y29kZWRJbWFnZSIsIHNldHRpbmdzLT5tYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2UoKSk7CisgICAg
cGFnZSArPSBudW1iZXJUb0hUTUxUcigic2hvdWxkUmVwb3J0TG93TWVtb3J5VG9Vc2VyIiwgc2V0
dGluZ3MtPnNob3VsZFJlcG9ydExvd01lbW9yeVRvVXNlcigpKTsKKyAgICBwYWdlICs9IG51bWJl
clRvSFRNTFRyKCJudW1iZXJPZkJhY2tpbmdTdG9yZVRpbGVzIiwgc2V0dGluZ3MtPm51bWJlck9m
QmFja2luZ1N0b3JlVGlsZXMoKSk7CisgICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigibWF4aW11
bU51bWJlck9mQmFja2luZy4uLkFjcm9zc1Byb2Nlc3NlcyIsIHNldHRpbmdzLT5tYXhpbXVtTnVt
YmVyT2ZCYWNraW5nU3RvcmVUaWxlc0Fjcm9zc1Byb2Nlc3NlcygpKTsKKyAgICBwYWdlICs9IG51
bWJlclRvSFRNTFRyKCJ0YWJzU3VwcG9ydGVkQnlDbGllbnQiLCBzZXR0aW5ncy0+dGFic1N1cHBv
cnRlZEJ5Q2xpZW50KCkpOworICAgIHBhZ2UgKz0gbnVtYmVyVG9IVE1MVHIoImNvbnRleHRNZW51
RW5hYmxlZCIsIHNldHRpbmdzLT5jb250ZXh0TWVudUVuYWJsZWQoKSk7CisgICAgcGFnZSArPSBu
dW1iZXJUb0hUTUxUcigic2VsZWN0aW9uRW5hYmxlZCIsIHNldHRpbmdzLT5zZWxlY3Rpb25FbmFi
bGVkKCkpOworICAgIHBhZ2UgKz0gbnVtYmVyVG9IVE1MVHIoImZpbmVDdXJzb3JDb250cm9sRW5h
YmxlZCIsIHNldHRpbmdzLT5maW5lQ3Vyc29yQ29udHJvbEVuYWJsZWQoKSk7CisgICAgcGFnZSAr
PSBudW1iZXJUb0hUTUxUcigiYWx3YXlzU2hvd0tleWJvYXJkT25Gb2N1cyIsIHNldHRpbmdzLT5h
bHdheXNTaG93S2V5Ym9hcmRPbkZvY3VzKCkpOworICAgIHBhZ2UgKz0gbnVtYmVyVG9IVE1MVHIo
ImFsbG93Q2VudGVyU2Nyb2xsQWRqdXN0bWVudEZvcklucHV0RmllbGRzIiwgc2V0dGluZ3MtPmFs
bG93Q2VudGVyU2Nyb2xsQWRqdXN0bWVudEZvcklucHV0RmllbGRzKCkpOworICAgIHBhZ2UgKz0g
bnVtYmVyVG9IVE1MVHIoInVucmVzdHJpY3RlZFJlc2l6ZUV2ZW50cyIsIHNldHRpbmdzLT51bnJl
c3RyaWN0ZWRSZXNpemVFdmVudHMoKSk7CisgICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigiaXNC
cmlkZ2VCcm93c2VyIiwgc2V0dGluZ3MtPmlzQnJpZGdlQnJvd3NlcigpKTsKKyAgICBwYWdlICs9
IG51bWJlclRvSFRNTFRyKCJpc1dlYkdMU3VwcG9ydGVkIiwgc2V0dGluZ3MtPmlzV2ViR0xTdXBw
b3J0ZWQoKSk7CisgICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigic2hvd0ltYWdlTG9jYXRpb25P
cHRpb25zSW5HQ00iLCBzZXR0aW5ncy0+c2hvd0ltYWdlTG9jYXRpb25PcHRpb25zSW5HQ00oKSk7
CisgICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigiZm9yY2VHTEVTMldpbmRvd1VzYWdlIiwgc2V0
dGluZ3MtPmZvcmNlR0xFUzJXaW5kb3dVc2FnZSgpKTsKKyAgICBwYWdlICs9IG51bWJlclRvSFRN
TFRyKCJtYXhDbGlja2FibGVTcGVlZCIsIHNldHRpbmdzLT5tYXhDbGlja2FibGVTcGVlZCgpKTsK
KyAgICBwYWdlICs9IG51bWJlclRvSFRNTFRyKCJtYXhKaXR0ZXJSYWRpdXNDbGljayIsIHNldHRp
bmdzLT5tYXhKaXR0ZXJSYWRpdXNDbGljaygpKTsKKyAgICBwYWdlICs9IG51bWJlclRvSFRNTFRy
KCJtYXhKaXR0ZXJSYWRpdXNUYXAiLCBzZXR0aW5ncy0+bWF4Sml0dGVyUmFkaXVzVGFwKCkpOwor
ICAgIHBhZ2UgKz0gbnVtYmVyVG9IVE1MVHIoIm1heEppdHRlclJhZGl1c1NpbmdsZVRvdWNoTW92
ZSIsIHNldHRpbmdzLT5tYXhKaXR0ZXJSYWRpdXNTaW5nbGVUb3VjaE1vdmUoKSk7CisgICAgcGFn
ZSArPSBudW1iZXJUb0hUTUxUcigibWF4Sml0dGVyUmFkaXVzVG91Y2hIb2xkIiwgc2V0dGluZ3Mt
Pm1heEppdHRlclJhZGl1c1RvdWNoSG9sZCgpKTsKKyAgICBwYWdlICs9IG51bWJlclRvSFRNTFRy
KCJtYXhKaXR0ZXJSYWRpdXNIYW5kbGVEcmFnIiwgc2V0dGluZ3MtPm1heEppdHRlclJhZGl1c0hh
bmRsZURyYWcoKSk7CisgICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigibWF4Sml0dGVyUmFkaXVz
VGFwSGlnaGxpZ2h0Iiwgc2V0dGluZ3MtPm1heEppdHRlclJhZGl1c1RhcEhpZ2hsaWdodCgpKTsK
KyAgICBwYWdlICs9IG51bWJlclRvSFRNTFRyKCJtYXhKaXR0ZXJEaXN0YW5jZUNsaWNrIiwgc2V0
dGluZ3MtPm1heEppdHRlckRpc3RhbmNlQ2xpY2soKSk7CisgICAgcGFnZSArPSBudW1iZXJUb0hU
TUxUcigibWF4Sml0dGVyRGlzdGFuY2VUYXAiLCBzZXR0aW5ncy0+bWF4Sml0dGVyRGlzdGFuY2VU
YXAoKSk7CisgICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigibWF4Sml0dGVyRGlzdGFuY2VTaW5n
bGVUb3VjaE1vdmUiLCBzZXR0aW5ncy0+bWF4Sml0dGVyRGlzdGFuY2VTaW5nbGVUb3VjaE1vdmUo
KSk7CisgICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigibWF4Sml0dGVyRGlzdGFuY2VUb3VjaEhv
bGQiLCBzZXR0aW5ncy0+bWF4Sml0dGVyRGlzdGFuY2VUb3VjaEhvbGQoKSk7CisgICAgcGFnZSAr
PSBudW1iZXJUb0hUTUxUcigibWF4Sml0dGVyRGlzdGFuY2VUYXBIaWdobGlnaHQiLCBzZXR0aW5n
cy0+bWF4Sml0dGVyRGlzdGFuY2VUYXBIaWdobGlnaHQoKSk7CisgICAgcGFnZSArPSBudW1iZXJU
b0hUTUxUcigibWF4Sml0dGVyRGlzdGFuY2VIYW5kbGVEcmFnIiwgc2V0dGluZ3MtPm1heEppdHRl
ckRpc3RhbmNlSGFuZGxlRHJhZygpKTsKKyAgICBwYWdlICs9IG51bWJlclRvSFRNTFRyKCJ0b3BG
YXRGaW5nZXJQYWRkaW5nIiwgc2V0dGluZ3MtPnRvcEZhdEZpbmdlclBhZGRpbmcoKSk7CisgICAg
cGFnZSArPSBudW1iZXJUb0hUTUxUcigicmlnaHRGYXRGaW5nZXJQYWRkaW5nIiwgc2V0dGluZ3Mt
PnJpZ2h0RmF0RmluZ2VyUGFkZGluZygpKTsKKyAgICBwYWdlICs9IG51bWJlclRvSFRNTFRyKCJi
b3R0b21GYXRGaW5nZXJQYWRkaW5nIiwgc2V0dGluZ3MtPmJvdHRvbUZhdEZpbmdlclBhZGRpbmco
KSk7CisgICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigibWF4U2VsZWN0aW9uTmVja0hlaWdodCIs
IHNldHRpbmdzLT5tYXhTZWxlY3Rpb25OZWNrSGVpZ2h0KCkpOworICAgIHBhZ2UgKz0gbnVtYmVy
VG9IVE1MVHIoImxlZnRGYXRGaW5nZXJQYWRkaW5nIiwgc2V0dGluZ3MtPmxlZnRGYXRGaW5nZXJQ
YWRkaW5nKCkpOworCisgICAgVmVjdG9yPFN0cmluZz4gdHJ1ZUxpc3QsIGZhbHNlTGlzdDsKKyAg
ICAjaW5jbHVkZSAiQWJvdXREYXRhRW5hYmxlRmVhdHVyZXMuY3BwIgorICAgIHBhZ2UgKz0gU3Ry
aW5nKCI8L3RhYmxlPjwvZGl2Pjxicj48ZGl2IGNsYXNzPSdib3gnPjxkaXYgY2xhc3M9J2JveC10
aXRsZSc+V2ViS2l0IEZlYXR1cmVzIChFTkFCTEVfKTwvZGl2Pjx0YWJsZSBjbGFzcz0nZml4ZWQt
dGFibGUnPiIpOworCisgICAgcGFnZSArPSB3cml0ZUZlYXR1cmVzKHRydWVMaXN0LCBmYWxzZUxp
c3QpOworCisgICAgdHJ1ZUxpc3QuY2xlYXIoKTsKKyAgICBmYWxzZUxpc3QuY2xlYXIoKTsKKyAg
ICAjaW5jbHVkZSAiQWJvdXREYXRhSGF2ZUZlYXR1cmVzLmNwcCIKKyAgICBwYWdlICs9IFN0cmlu
ZygiPC90YWJsZT48L2Rpdj48YnI+PGRpdiBjbGFzcz0nYm94Jz48ZGl2IGNsYXNzPSdib3gtdGl0
bGUnPldlYktpdCBGZWF0dXJlcyAoSEFWRV8pPC9kaXY+PHRhYmxlIGNsYXNzPSdmaXhlZC10YWJs
ZSc+Iik7CisKKyAgICBwYWdlICs9IHdyaXRlRmVhdHVyZXModHJ1ZUxpc3QsIGZhbHNlTGlzdCk7
CisKKyAgICB0cnVlTGlzdC5jbGVhcigpOworICAgIGZhbHNlTGlzdC5jbGVhcigpOworICAgICNp
bmNsdWRlICJBYm91dERhdGFVc2VGZWF0dXJlcy5jcHAiCisgICAgcGFnZSArPSBTdHJpbmcoIjwv
dGFibGU+PC9kaXY+PGJyPjxkaXYgY2xhc3M9J2JveCc+PGRpdiBjbGFzcz0nYm94LXRpdGxlJz5X
ZWJLaXQgRmVhdHVyZXMgKFVTRV8pPC9kaXY+PHRhYmxlIGNsYXNzPSdmaXhlZC10YWJsZSc+Iik7
CisgICAgcGFnZSArPSB3cml0ZUZlYXR1cmVzKHRydWVMaXN0LCBmYWxzZUxpc3QpOworICAgIHBh
Z2UgKz0gU3RyaW5nKCI8L3RhYmxlPjwvZGl2PjwvYm9keT48L2h0bWw+Iik7CisjZW5kaWYKKwor
ICAgIHJldHVybiBwYWdlOworfQorCitzdGF0aWMgU3RyaW5nIGNhY2hlVHlwZVN0YXRpc3RpY1Rv
SFRNTFRyKGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGNvbnN0IE1lbW9yeUNhY2hlOjpUeXBl
U3RhdGlzdGljJiBzdGF0aXN0aWMpCit7CisgICAgY29uc3QgaW50IHNfa2lsb0J5dGUgPSAxMDI0
OworICAgIHJldHVybiBTdHJpbmcoIjx0cj48dGQ+IikgKyBkZXNjcmlwdGlvbiArICI8L3RkPiIK
KyAgICAgICAgKyAiPHRkPiIgKyBTdHJpbmc6Om51bWJlcihzdGF0aXN0aWMuY291bnQpICsgIjwv
dGQ+IgorICAgICAgICArICI8dGQ+IiArIFN0cmluZzo6bnVtYmVyKHN0YXRpc3RpYy5zaXplIC8g
c19raWxvQnl0ZSkgKyAiPC90ZD4iCisgICAgICAgICsgIjx0ZD4iICsgU3RyaW5nOjpudW1iZXIo
c3RhdGlzdGljLmxpdmVTaXplIC8gc19raWxvQnl0ZSkgKyAiPC90ZD4iCisgICAgICAgICsgIjx0
ZD4iICsgU3RyaW5nOjpudW1iZXIoc3RhdGlzdGljLmRlY29kZWRTaXplIC8gc19raWxvQnl0ZSkg
KyAiPC90ZD4iCisgICAgICAgICsgIjwvdHI+IjsKK30KKworc3RhdGljIHZvaWQgZHVtcEpTQ1R5
cGVDb3VudFNldFRvVGFibGVIVE1MKFN0cmluZyYgdGFibGVIVE1MLCBKU0M6OlR5cGVDb3VudFNl
dCogdHlwZUNvdW50U2V0KQoreworICAgIGlmICghdHlwZUNvdW50U2V0KQorICAgICAgICByZXR1
cm47CisKKyAgICBmb3IgKEpTQzo6VHlwZUNvdW50U2V0Ojpjb25zdF9pdGVyYXRvciBpdGVyID0g
dHlwZUNvdW50U2V0LT5iZWdpbigpOyBpdGVyICE9IHR5cGVDb3VudFNldC0+ZW5kKCk7ICsraXRl
cikKKyAgICAgICAgdGFibGVIVE1MICs9IG51bWJlclRvSFRNTFRyKGl0ZXItPmZpcnN0LCBpdGVy
LT5zZWNvbmQpOworfQorCitTdHJpbmcgbWVtb3J5UGFnZSgpCit7CisgICAgU3RyaW5nIHBhZ2U7
CisKKyAgICBwYWdlID0gd3JpdGVIZWFkZXIoIk1lbW9yeSIpCisgICAgKyAiPGRpdiBjbGFzcz1c
ImJveFwiPjxkaXYgY2xhc3M9XCJib3gtdGl0bGVcIj5DYWNoZSBJbmZvcm1hdGlvbjxicj48ZGl2
IHN0eWxlPSdmb250LXNpemU6MTFweDtjb2xvcjojQThBOEE4Jz5TaXplLCBMaXZpbmcsIGFuZCBE
ZWNvZGVkIGFyZSBleHByZXNzZWQgaW4gS0IuPC9kaXY+PGJyPjwvZGl2Pjx0YWJsZSBjbGFzcz0n
Zml4ZWQtdGFibGUnPjxjb2wgd2lkdGg9NzUlPjxjb2wgd2lkdGg9MjUlPiI7CisKKyAgICAvLyBn
ZW5lcmF0ZSBjYWNoZSBpbmZvcm1hdGlvbgorICAgIE1lbW9yeUNhY2hlKiBjYWNoZUluYyA9IG1l
bW9yeUNhY2hlKCk7CisgICAgTWVtb3J5Q2FjaGU6OlN0YXRpc3RpY3MgY2FjaGVTdGF0ID0gY2Fj
aGVJbmMtPmdldFN0YXRpc3RpY3MoKTsKKworICAgIHBhZ2UgKz0gIjx0cj4gPHRoIGFsaWduPWxl
ZnQ+SXRlbTwvdGg+IDx0aCBhbGlnbj1sZWZ0PkNvdW50PC90aD4gPHRoIGFsaWduPWxlZnQ+U2l6
ZTwvdGg+IDx0aCBhbGlnbj1sZWZ0PkxpdmluZzwvdGg+IDx0aCBhbGlnbj1sZWZ0PkRlY29kZWQ8
L3RoPjwvdHI+IjsKKworICAgIE1lbW9yeUNhY2hlOjpUeXBlU3RhdGlzdGljIHRvdGFsOworICAg
IHRvdGFsLmNvdW50ID0gY2FjaGVTdGF0LmltYWdlcy5jb3VudCArIGNhY2hlU3RhdC5jc3NTdHls
ZVNoZWV0cy5jb3VudAorICAgICAgICAgICAgKyBjYWNoZVN0YXQuc2NyaXB0cy5jb3VudCArIGNh
Y2hlU3RhdC54c2xTdHlsZVNoZWV0cy5jb3VudCArIGNhY2hlU3RhdC5mb250cy5jb3VudDsKKyAg
ICB0b3RhbC5zaXplID0gY2FjaGVJbmMtPnRvdGFsU2l6ZSgpOworICAgIHRvdGFsLmxpdmVTaXpl
ID0gY2FjaGVTdGF0LmltYWdlcy5saXZlU2l6ZSArIGNhY2hlU3RhdC5jc3NTdHlsZVNoZWV0cy5s
aXZlU2l6ZQorICAgICAgICAgICAgKyBjYWNoZVN0YXQuc2NyaXB0cy5saXZlU2l6ZSArIGNhY2hl
U3RhdC54c2xTdHlsZVNoZWV0cy5saXZlU2l6ZSArIGNhY2hlU3RhdC5mb250cy5saXZlU2l6ZTsK
KyAgICB0b3RhbC5kZWNvZGVkU2l6ZSA9IGNhY2hlU3RhdC5pbWFnZXMuZGVjb2RlZFNpemUKKyAg
ICAgICAgICAgICsgY2FjaGVTdGF0LmNzc1N0eWxlU2hlZXRzLmRlY29kZWRTaXplICsgY2FjaGVT
dGF0LnNjcmlwdHMuZGVjb2RlZFNpemUKKyAgICAgICAgICAgICsgY2FjaGVTdGF0LnhzbFN0eWxl
U2hlZXRzLmRlY29kZWRTaXplICsgY2FjaGVTdGF0LmZvbnRzLmRlY29kZWRTaXplOworCisgICAg
cGFnZSArPSBjYWNoZVR5cGVTdGF0aXN0aWNUb0hUTUxUcigiVG90YWwiLCB0b3RhbCk7CisgICAg
cGFnZSArPSBjYWNoZVR5cGVTdGF0aXN0aWNUb0hUTUxUcigiSW1hZ2VzIiwgY2FjaGVTdGF0Lmlt
YWdlcyk7CisgICAgcGFnZSArPSBjYWNoZVR5cGVTdGF0aXN0aWNUb0hUTUxUcigiQ1NTIFN0eWxl
IFNoZWV0cyIsIGNhY2hlU3RhdC5jc3NTdHlsZVNoZWV0cyk7CisgICAgcGFnZSArPSBjYWNoZVR5
cGVTdGF0aXN0aWNUb0hUTUxUcigiU2NyaXB0cyIsIGNhY2hlU3RhdC5zY3JpcHRzKTsKKyNpZiBF
TkFCTEUoWFNMVCkKKyAgICBwYWdlICs9IGNhY2hlVHlwZVN0YXRpc3RpY1RvSFRNTFRyKCJYU0wg
U3R5bGUgU2hlZXRzIiwgY2FjaGVTdGF0LnhzbFN0eWxlU2hlZXRzKTsKKyNlbmRpZgorICAgIHBh
Z2UgKz0gY2FjaGVUeXBlU3RhdGlzdGljVG9IVE1MVHIoIkZvbnRzIiwgY2FjaGVTdGF0LmZvbnRz
KTsKKworICAgIHBhZ2UgKz0gIjwvdGFibGU+PC9kaXY+PGJyPiI7CisKKyNpZiAhZGVmaW5lZChQ
VUJMSUNfQlVJTEQpIHx8ICFQVUJMSUNfQlVJTEQKKworICAgIC8vIEpTIGVuZ2luZSBtZW1vcnkg
dXNhZ2UuCisgICAgSlNDOjpHbG9iYWxNZW1vcnlTdGF0aXN0aWNzIGpzY01lbW9yeVN0YXQgPSBK
U0M6Omdsb2JhbE1lbW9yeVN0YXRpc3RpY3MoKTsKKyAgICBKU0M6OkhlYXAmIG1haW5IZWFwID0g
SlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLT5oZWFwOworICAgIE93blB0cjxKU0M6
OlR5cGVDb3VudFNldD4gb2JqZWN0VHlwZUNvdW50cyA9IG1haW5IZWFwLm9iamVjdFR5cGVDb3Vu
dHMoKTsKKyAgICBPd25QdHI8SlNDOjpUeXBlQ291bnRTZXQ+IHByb3RlY3RlZE9iamVjdFR5cGVD
b3VudHMgPSBtYWluSGVhcC5wcm90ZWN0ZWRPYmplY3RUeXBlQ291bnRzKCk7CisKKyAgICAvLyBN
YWxsb2MgaW5mby4KKyAgICBzdHJ1Y3QgbWFsbGluZm8gbWFsbG9jSW5mbyA9IG1hbGxpbmZvKCk7
CisKKyAgICBwYWdlICs9ICI8ZGl2IGNsYXNzPSdib3gnPjxkaXYgY2xhc3M9J2JveC10aXRsZSc+
UHJvY2VzcyBtZW1vcnkgdXNhZ2Ugc3VtbWFyeTwvZGl2Pjx0YWJsZSBjbGFzcz0nZml4ZWQtdGFi
bGUnPjxjb2wgd2lkdGg9NzUlPjxjb2wgd2lkdGg9MjUlPiI7CisKKyAgICBwYWdlICs9IG51bWJl
clRvSFRNTFRyKCJUb3RhbCBtZW1vcnkgdXNhZ2UgKG1hbGxvYyArIEpTQykiLCBtYWxsb2NJbmZv
LnVzbWJsa3MgKyBtYWxsb2NJbmZvLnVvcmRibGtzICsganNjTWVtb3J5U3RhdC5zdGFja0J5dGVz
ICsganNjTWVtb3J5U3RhdC5KSVRCeXRlcyArIG1haW5IZWFwLmNhcGFjaXR5KCkpOworCisgICAg
c3RydWN0IHN0YXQgcHJvY2Vzc0luZm87CisgICAgaWYgKCFzdGF0KFN0cmluZzo6Zm9ybWF0KCIv
cHJvYy8ldS9hcyIsIGdldHBpZCgpKS5sYXRpbjEoKS5kYXRhKCksICZwcm9jZXNzSW5mbykpCisg
ICAgICAgIHBhZ2UgKz0gbnVtYmVyVG9IVE1MVHIoIlRvdGFsIG1hcHBlZCBtZW1vcnkiLCBwcm9j
ZXNzSW5mby5zdF9zaXplKTsKKworICAgIHBhZ2UgKz0gIjwvdGFibGU+PC9kaXY+PGJyPiI7CisK
KyAgICBwYWdlICs9ICI8ZGl2IGNsYXNzPSdib3gnPjxkaXYgY2xhc3M9J2JveC10aXRsZSc+SlMg
ZW5naW5lIG1lbW9yeSB1c2FnZTwvZGl2Pjx0YWJsZSBjbGFzcz0nZml4ZWQtdGFibGUnPjxjb2wg
d2lkdGg9NzUlPjxjb2wgd2lkdGg9MjUlPiI7CisKKyAgICBwYWdlICs9IG51bWJlclRvSFRNTFRy
KCJTdGFjayBzaXplIiwganNjTWVtb3J5U3RhdC5zdGFja0J5dGVzKTsKKyAgICBwYWdlICs9IG51
bWJlclRvSFRNTFRyKCJKSVQgbWVtb3J5IHVzYWdlIiwganNjTWVtb3J5U3RhdC5KSVRCeXRlcyk7
CisgICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigiTWFpbiBoZWFwIGNhcGFjaXR5IiwgbWFpbkhl
YXAuY2FwYWNpdHkoKSk7CisgICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigiTWFpbiBoZWFwIHNp
emUiLCBtYWluSGVhcC5zaXplKCkpOworICAgIHBhZ2UgKz0gbnVtYmVyVG9IVE1MVHIoIk9iamVj
dCBjb3VudCIsIG1haW5IZWFwLm9iamVjdENvdW50KCkpOworICAgIHBhZ2UgKz0gbnVtYmVyVG9I
VE1MVHIoIkdsb2JhbCBvYmplY3QgY291bnQiLCBtYWluSGVhcC5nbG9iYWxPYmplY3RDb3VudCgp
KTsKKyAgICBwYWdlICs9IG51bWJlclRvSFRNTFRyKCJQcm90ZWN0ZWQgb2JqZWN0IGNvdW50Iiwg
bWFpbkhlYXAucHJvdGVjdGVkT2JqZWN0Q291bnQoKSk7CisgICAgcGFnZSArPSBudW1iZXJUb0hU
TUxUcigiUHJvdGVjdGVkIGdsb2JhbCBvYmplY3QgY291bnQiLCBtYWluSGVhcC5wcm90ZWN0ZWRH
bG9iYWxPYmplY3RDb3VudCgpKTsKKworICAgIHBhZ2UgKz0gIjwvdGFibGU+PC9kaXY+PGJyPiI7
CisKKyAgICBwYWdlICs9ICI8ZGl2IGNsYXNzPSdib3gnPjxkaXYgY2xhc3M9J2JveC10aXRsZSc+
SlMgb2JqZWN0IHR5cGUgY291bnRzPC9kaXY+PHRhYmxlIGNsYXNzPSdmaXhlZC10YWJsZSc+PGNv
bCB3aWR0aD03NSU+PGNvbCB3aWR0aD0yNSU+IjsKKyAgICBkdW1wSlNDVHlwZUNvdW50U2V0VG9U
YWJsZUhUTUwocGFnZSwgb2JqZWN0VHlwZUNvdW50cy5nZXQoKSk7CisgICAgcGFnZSArPSAiPC90
YWJsZT48L2Rpdj48YnI+IjsKKworICAgIHBhZ2UgKz0gIjxkaXYgY2xhc3M9J2JveCc+PGRpdiBj
bGFzcz0nYm94LXRpdGxlJz5KUyBwcm90ZWN0ZWQgb2JqZWN0IHR5cGUgY291bnRzPC9kaXY+PHRh
YmxlIGNsYXNzPSdmaXhlZC10YWJsZSc+PGNvbCB3aWR0aD03NSU+PGNvbCB3aWR0aD0yNSU+IjsK
KyAgICBkdW1wSlNDVHlwZUNvdW50U2V0VG9UYWJsZUhUTUwocGFnZSwgcHJvdGVjdGVkT2JqZWN0
VHlwZUNvdW50cy5nZXQoKSk7CisgICAgcGFnZSArPSAiPC90YWJsZT48L2Rpdj48YnI+IjsKKwor
ICAgIHBhZ2UgKz0gIjxkaXYgY2xhc3M9J2JveCc+PGRpdiBjbGFzcz0nYm94LXRpdGxlJz5NYWxs
b2MgSW5mb3JtYXRpb248L2Rpdj48dGFibGUgY2xhc3M9J2ZpeGVkLXRhYmxlJz48Y29sIHdpZHRo
PTc1JT48Y29sIHdpZHRoPTI1JT4iOworCisgICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigiVG90
YWwgc3BhY2UgaW4gdXNlIiwgbWFsbG9jSW5mby51c21ibGtzICsgbWFsbG9jSW5mby51b3JkYmxr
cyk7CisgICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigiVG90YWwgc3BhY2UgaW4gZnJlZSBibG9j
a3MiLCBtYWxsb2NJbmZvLmZzbWJsa3MgKyBtYWxsb2NJbmZvLmZvcmRibGtzKTsKKyAgICBwYWdl
ICs9IG51bWJlclRvSFRNTFRyKCJTaXplIG9mIHRoZSBhcmVuYSIsIG1hbGxvY0luZm8uYXJlbmEp
OworICAgIHBhZ2UgKz0gbnVtYmVyVG9IVE1MVHIoIk51bWJlciBvZiBiaWcgYmxvY2tzIGluIHVz
ZSIsIG1hbGxvY0luZm8ub3JkYmxrcyk7CisgICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigiTnVt
YmVyIG9mIHNtYWxsIGJsb2NrcyBpbiB1c2UiLCBtYWxsb2NJbmZvLnNtYmxrcyk7CisgICAgcGFn
ZSArPSBudW1iZXJUb0hUTUxUcigiTnVtYmVyIG9mIGhlYWRlciBibG9ja3MgaW4gdXNlIiwgbWFs
bG9jSW5mby5oYmxrcyk7CisgICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigiU3BhY2UgaW4gaGVh
ZGVyIGJsb2NrIGhlYWRlcnMiLCBtYWxsb2NJbmZvLmhibGtoZCk7CisgICAgcGFnZSArPSBudW1i
ZXJUb0hUTUxUcigiU3BhY2UgaW4gc21hbGwgYmxvY2tzIGluIHVzZSIsIG1hbGxvY0luZm8udXNt
Ymxrcyk7CisgICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigiTWVtb3J5IGluIGZyZWUgc21hbGwg
YmxvY2tzIiwgbWFsbG9jSW5mby5mc21ibGtzKTsKKyAgICBwYWdlICs9IG51bWJlclRvSFRNTFRy
KCJTcGFjZSBpbiBiaWcgYmxvY2tzIGluIHVzZSIsIG1hbGxvY0luZm8udW9yZGJsa3MpOworICAg
IHBhZ2UgKz0gbnVtYmVyVG9IVE1MVHIoIk1lbW9yeSBpbiBmcmVlIGJpZyBibG9ja3MiLCBtYWxs
b2NJbmZvLmZvcmRibGtzKTsKKworICAgIHBhZ2UgKz0gIjwvdGFibGU+PC9kaXY+IjsKKyNlbmRp
ZgorCisgICAgcGFnZSArPSAiPC9ib2R5PjwvaHRtbD4iOworICAgIHJldHVybiBwYWdlOworfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKK30gLy8gbmFtZXNwYWNlIEJsYWNrQmVycnkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0Fib3V0RGF0YS5o
IGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvQWJvdXREYXRhLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODA1MDU0ZgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0Fib3V0RGF0YS5oCkBA
IC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgUmVzZWFyY2ggSW4gTW90
aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0
ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKwor
I2lmbmRlZiBBYm91dERhdGFfaAorI2RlZmluZSBBYm91dERhdGFfaAorCisjaW5jbHVkZSAiUGxh
dGZvcm1TdHJpbmcuaCIKKworbmFtZXNwYWNlIEJsYWNrQmVycnkgeworbmFtZXNwYWNlIFdlYktp
dCB7CisKK1N0cmluZyBjb25maWdQYWdlKCk7CitTdHJpbmcgbWVtb3J5UGFnZSgpOworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKK30gLy8gbmFtZXNwYWNlIEJsYWNrQmVycnkKKworI2VuZGlmIC8v
IEFib3V0RGF0YV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153029</attachid>
            <date>2012-07-18 09:42:45 -0700</date>
            <delta_ts>2012-07-18 11:25:19 -0700</delta_ts>
            <desc>try again</desc>
            <filename>91541.patch</filename>
            <type>text/plain</type>
            <size>58806</size>
            <attacher name="Yong Li">yong.li.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwNjYwNWFiLi5iOTk2NGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIg
QEAKKzIwMTItMDctMTcgIFlvbmcgTGkgIDx5b2xpQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNr
QmVycnldIE1vdmUgYWJvdXQ6IFVSTCBoYW5kbGluZyBvdXQgb2YgV2ViQ29yZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE1NDEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgYWJvdXQgVVJMIGhh
bmRsaW5nIGZyb20gb3VyIE5ldHdvcmtKb2IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2JsYWNrYmVycnkvTmV0d29ya0pvYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrSm9i
OjpOZXR3b3JrSm9iKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtKb2I6OmluaXRpYWxpemUp
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya0pvYjo6Y2FuY2VsSm9iKToKKyAgICAgICAgKFdl
YkNvcmU6Ok5ldHdvcmtKb2I6OnNlbmRSZXNwb25zZUlmTmVlZGVkKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvTmV0d29ya0pvYi5oOgorICAgICAgICAoTmV0d29ya0pv
Yik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L05ldHdvcmtNYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtNYW5hZ2VyOjpzdGFydEpvYik6CisKIDIw
MTItMDctMTcgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgaW52
YWxpZGF0ZU5vZGVMaXN0Q2FjaGVzSW5BbmNlc3RvcnMgd2Fsa3MgdXAgYW5jZXN0b3JzIGV2ZW4g
d2hlbiBhbiBhdHRyaWJ1dGUgdGhhdCBkb2Vzbid0IGludmFsaWRhdGUgbm9kZSBsaXN0cyBjaGFu
Z2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVy
cnkvTmV0d29ya0pvYi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNr
YmVycnkvTmV0d29ya0pvYi5jcHAKaW5kZXggNTZiODc2MC4uNjE0NTBjNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9ibGFja2JlcnJ5L05ldHdvcmtKb2IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9OZXR3b3Jr
Sm9iLmNwcApAQCAtMTksOCArMTksNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
Ik5ldHdvcmtKb2IuaCIKIAotI2luY2x1ZGUgIkFib3V0RGF0YS5oIgotI2luY2x1ZGUgIkFib3V0
VGVtcGxhdGUuaHRtbC5jcHAiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiQ2hyb21l
Q2xpZW50LmgiCiAjaW5jbHVkZSAiQ29va2llTWFuYWdlci5oIgpAQCAtMzksOCArMzcsNiBAQAog
CiAjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtQ2xpZW50Lmg+CiAjaW5jbHVkZSA8QmxhY2tC
ZXJyeVBsYXRmb3JtTG9nLmg+Ci0jaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtV2ViS2l0Q3Jl
ZGl0cy5oPgotI2luY2x1ZGUgPEJ1aWxkSW5mb3JtYXRpb24uaD4KICNpbmNsdWRlIDxMb2NhbGl6
ZVJlc291cmNlLmg+CiAjaW5jbHVkZSA8bmV0d29yay9NdWx0aXBhcnRTdHJlYW0uaD4KICNpbmNs
dWRlIDxuZXR3b3JrL05ldHdvcmtTdHJlYW1GYWN0b3J5Lmg+CkBAIC02NiwxMSArNjIsOSBAQCBp
bmxpbmUgc3RhdGljIGJvb2wgaXNVbmF1dGhvcml6ZWQoaW50IHN0YXR1c0NvZGUpCiAKIE5ldHdv
cmtKb2I6Ok5ldHdvcmtKb2IoKQogICAgIDogbV9wbGF5ZXJJZCgwKQotICAgICwgbV9sb2FkQWJv
dXRUaW1lcih0aGlzLCAmTmV0d29ya0pvYjo6ZmlyZUxvYWRBYm91dFRpbWVyKQogICAgICwgbV9k
ZWxldGVKb2JUaW1lcih0aGlzLCAmTmV0d29ya0pvYjo6ZmlyZURlbGV0ZUpvYlRpbWVyKQogICAg
ICwgbV9zdHJlYW1GYWN0b3J5KDApCiAgICAgLCBtX2lzRmlsZShmYWxzZSkKLSAgICAsIG1faXNB
Ym91dChmYWxzZSkKICAgICAsIG1faXNGVFAoZmFsc2UpCiAgICAgLCBtX2lzRlRQRGlyKHRydWUp
CiAjaWZuZGVmIE5ERUJVRwpAQCAtMTA3LDcgKzEwMSw2IEBAIGJvb2wgTmV0d29ya0pvYjo6aW5p
dGlhbGl6ZShpbnQgcGxheWVySWQsCiAKICAgICBtX3Jlc3BvbnNlLnNldFVSTCh1cmwpOwogICAg
IG1faXNGaWxlID0gdXJsLnByb3RvY29sSXMoImZpbGUiKSB8fCB1cmwucHJvdG9jb2xJcygibG9j
YWwiKTsKLSAgICBtX2lzQWJvdXQgPSB1cmwucHJvdG9jb2xJcygiYWJvdXQiKTsKICAgICBtX2lz
RlRQID0gdXJsLnByb3RvY29sSXMoImZ0cCIpOwogCiAgICAgbV9oYW5kbGUgPSBoYW5kbGU7CkBA
IC0xMzIsMTAgKzEyNSw2IEBAIGJvb2wgTmV0d29ya0pvYjo6aW5pdGlhbGl6ZShpbnQgcGxheWVy
SWQsCiAgICAgICAgIG1faXNPdmVycmlkZUNvbnRlbnRUeXBlID0gdHJ1ZTsKICAgICB9CiAKLSAg
ICAvLyBObyBuZWVkIHRvIGNyZWF0ZSB0aGUgc3RyZWFtcyBmb3IgYWJvdXQuCi0gICAgaWYgKG1f
aXNBYm91dCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KICAgICBpZiAoIXJlcXVlc3QuZ2V0U3Vn
Z2VzdGVkU2F2ZU5hbWUoKS5lbXB0eSgpKSB7CiAgICAgICAgIG1fY29udGVudERpc3Bvc2l0aW9u
ID0gImZpbGVuYW1lPSI7CiAgICAgICAgIG1fY29udGVudERpc3Bvc2l0aW9uICs9IHJlcXVlc3Qu
Z2V0U3VnZ2VzdGVkU2F2ZU5hbWUoKS5jX3N0cigpOwpAQCAtMTQ5LDI0ICsxMzgsMTAgQEAgYm9v
bCBOZXR3b3JrSm9iOjppbml0aWFsaXplKGludCBwbGF5ZXJJZCwKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotdm9pZCBOZXR3b3JrSm9iOjpsb2FkQWJvdXRVUkwoKQotewotICAgIG1fbG9hZEFib3V0
VGltZXIuc3RhcnRPbmVTaG90KDApOwotfQotCiBpbnQgTmV0d29ya0pvYjo6Y2FuY2VsSm9iKCkK
IHsKICAgICBtX2NhbmNlbGxlZCA9IHRydWU7CiAKLSAgICAvLyBDYW5jZWwgam9icyBsb2FkaW5n
IGxvY2FsIGRhdGEgYnkga2lsbGluZyB0aGUgdGltZXIsIGFuZCBqb2JzCi0gICAgLy8gZ2V0dGlu
ZyBkYXRhIGZyb20gdGhlIG5ldHdvcmsgYnkgY2FsbGluZyB0aGUgaW5oZXJpdGVkIFVSTFN0cmVh
bTo6Y2FuY2VsLgotCi0gICAgaWYgKG1fbG9hZEFib3V0VGltZXIuaXNBY3RpdmUoKSkgewotICAg
ICAgICBtX2xvYWRBYm91dFRpbWVyLnN0b3AoKTsKLSAgICAgICAgbm90aWZ5Q2xvc2UoQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OkZpbHRlclN0cmVhbTo6U3RhdHVzQ2FuY2VsbGVkKTsKLSAgICAgICAg
cmV0dXJuIDA7Ci0gICAgfQotCiAgICAgcmV0dXJuIHN0cmVhbUNhbmNlbCgpOwogfQogCkBAIC02
MTAsNyArNTg1LDcgQEAgdm9pZCBOZXR3b3JrSm9iOjpzZW5kUmVzcG9uc2VJZk5lZWRlZCgpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIFN0cmluZyB1cmxGaWxlbmFtZTsKLSAgICBpZiAoIW1fcmVz
cG9uc2UudXJsKCkucHJvdG9jb2xJc0RhdGEoKSAmJiAhbV9yZXNwb25zZS51cmwoKS5wcm90b2Nv
bElzKCJhYm91dCIpKQorICAgIGlmICghbV9yZXNwb25zZS51cmwoKS5wcm90b2NvbElzRGF0YSgp
KQogICAgICAgICB1cmxGaWxlbmFtZSA9IG1fcmVzcG9uc2UudXJsKCkubGFzdFBhdGhDb21wb25l
bnQoKTsKIAogICAgIC8vIEdldCB0aGUgTUlNRSB0eXBlIHRoYXQgd2FzIHNldCBieSB0aGUgY29u
dGVudCBzbmlmZmVyCkBAIC02MzgsMzIgKzYxMywyMyBAQCB2b2lkIE5ldHdvcmtKb2I6OnNlbmRS
ZXNwb25zZUlmTmVlZGVkKCkKICAgICBpZiAoIWNvbnRlbnRMZW5ndGguaXNOdWxsKCkpCiAgICAg
ICAgIG1fcmVzcG9uc2Uuc2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKGNvbnRlbnRMZW5ndGgudG9J
bnQ2NCgpKTsKIAotICAgIC8vIFNldCBzdWdnZXN0ZWQgZmlsZW5hbWUgZm9yIGRvd25sb2FkcyBm
cm9tIHRoZSBDb250ZW50LURpc3Bvc2l0aW9uIGhlYWRlcjsgaWYgdGhpcyBmYWlscywKLSAgICAv
LyBmaWxsIGl0IGluIGZyb20gdGhlIHVybCBhbmQgc25pZmZlZCBtaW1lIHR5cGU7U2tpcCB0aGlz
IGZvciBhYm91dCBVUkxzLAotICAgIC8vIGJlY2F1c2UgdGhleSBoYXZlIG5vIENvbnRlbnQtRGlz
cG9zaXRpb24gaGVhZGVyIGFuZCB0aGUgZm9ybWF0IGlzIHdyb25nIHRvIGJlIGEgZmlsZW5hbWUu
Ci0gICAgaWYgKCFtX2lzQWJvdXQpIHsKLSAgICAgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1l
ID0gZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlvbihtX2NvbnRlbnREaXNwb3NpdGlv
bik7Ci0gICAgICAgIGlmIChzdWdnZXN0ZWRGaWxlbmFtZS5pc0VtcHR5KCkpIHsKLSAgICAgICAg
ICAgIC8vIENoZWNrIGFuZCBzZWUgaWYgYW4gZXh0ZW5zaW9uIGFscmVhZHkgZXhpc3RzLgotICAg
ICAgICAgICAgU3RyaW5nIG1pbWVFeHRlbnNpb24gPSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRQcmVm
ZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZShtaW1lVHlwZSk7Ci0gICAgICAgICAgICBpZiAodXJs
RmlsZW5hbWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1pbWVFeHRlbnNpb24u
aXNFbXB0eSgpKSAvLyBObyBleHRlbnNpb24gZm91bmQgZm9yIHRoZSBtaW1lVHlwZS4KLSAgICAg
ICAgICAgICAgICAgICAgc3VnZ2VzdGVkRmlsZW5hbWUgPSBTdHJpbmcoQmxhY2tCZXJyeTo6UGxh
dGZvcm06OkxvY2FsaXplUmVzb3VyY2U6OmdldFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
RklMRU5BTUVfVU5USVRMRUQpKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgICAgIHN1Z2dlc3RlZEZpbGVuYW1lID0gU3RyaW5nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpM
b2NhbGl6ZVJlc291cmNlOjpnZXRTdHJpbmcoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkZJTEVOQU1F
X1VOVElUTEVEKSkgKyAiLiIgKyBtaW1lRXh0ZW5zaW9uOwotICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICBpZiAodXJsRmlsZW5hbWUucmV2ZXJzZUZpbmQoJy4nKSA9PSBub3RG
b3VuZCAmJiAhbWltZUV4dGVuc2lvbi5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgc3Vn
Z2VzdGVkRmlsZW5hbWUgPSB1cmxGaWxlbmFtZSArICcuJyArIG1pbWVFeHRlbnNpb247Ci0gICAg
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgIHN1Z2dlc3RlZEZpbGVuYW1lID0g
dXJsRmlsZW5hbWU7Ci0gICAgICAgICAgICB9CisgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1l
ID0gZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlvbihtX2NvbnRlbnREaXNwb3NpdGlv
bik7CisgICAgaWYgKHN1Z2dlc3RlZEZpbGVuYW1lLmlzRW1wdHkoKSkgeworICAgICAgICAvLyBD
aGVjayBhbmQgc2VlIGlmIGFuIGV4dGVuc2lvbiBhbHJlYWR5IGV4aXN0cy4KKyAgICAgICAgU3Ry
aW5nIG1pbWVFeHRlbnNpb24gPSBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRQcmVmZXJyZWRFeHRlbnNp
b25Gb3JNSU1FVHlwZShtaW1lVHlwZSk7CisgICAgICAgIGlmICh1cmxGaWxlbmFtZS5pc0VtcHR5
KCkpIHsKKyAgICAgICAgICAgIGlmIChtaW1lRXh0ZW5zaW9uLmlzRW1wdHkoKSkgLy8gTm8gZXh0
ZW5zaW9uIGZvdW5kIGZvciB0aGUgbWltZVR5cGUuCisgICAgICAgICAgICAgICAgc3VnZ2VzdGVk
RmlsZW5hbWUgPSBTdHJpbmcoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvY2FsaXplUmVzb3VyY2U6
OmdldFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6RklMRU5BTUVfVU5USVRMRUQpKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzdWdnZXN0ZWRGaWxlbmFtZSA9IFN0cmlu
ZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9jYWxpemVSZXNvdXJjZTo6Z2V0U3RyaW5nKEJsYWNr
QmVycnk6OlBsYXRmb3JtOjpGSUxFTkFNRV9VTlRJVExFRCkpICsgIi4iICsgbWltZUV4dGVuc2lv
bjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmICh1cmxGaWxlbmFtZS5yZXZlcnNl
RmluZCgnLicpID09IG5vdEZvdW5kICYmICFtaW1lRXh0ZW5zaW9uLmlzRW1wdHkoKSkKKyAgICAg
ICAgICAgICAgIHN1Z2dlc3RlZEZpbGVuYW1lID0gdXJsRmlsZW5hbWUgKyAnLicgKyBtaW1lRXh0
ZW5zaW9uOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgc3VnZ2VzdGVkRmlsZW5h
bWUgPSB1cmxGaWxlbmFtZTsKICAgICAgICAgfQotICAgICAgICBtX3Jlc3BvbnNlLnNldFN1Z2dl
c3RlZEZpbGVuYW1lKHN1Z2dlc3RlZEZpbGVuYW1lKTsKICAgICB9Ci0KLSAgICAvLyBEb24ndCBj
YWNoZSByZXNvdXJjZXMgZm9yICJhYm91dDoiCi0gICAgaWYgKG1faXNBYm91dCkKLSAgICAgICAg
bV9yZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoIkNhY2hlLUNvbnRyb2wiLCAibm8tY2FjaGUi
KTsKKyAgICBtX3Jlc3BvbnNlLnNldFN1Z2dlc3RlZEZpbGVuYW1lKHN1Z2dlc3RlZEZpbGVuYW1l
KTsKIAogICAgIGlmIChpc0NsaWVudEF2YWlsYWJsZSgpKSB7CiAgICAgICAgIFJlY3Vyc2lvbkd1
YXJkIGd1YXJkKG1fY2FsbGluZ0NsaWVudCk7CkBAIC04MjgsMTAwICs3OTQsNCBAQCB2b2lkIE5l
dHdvcmtKb2I6OmZpcmVEZWxldGVKb2JUaW1lcihUaW1lcjxOZXR3b3JrSm9iPiopCiAgICAgTmV0
d29ya01hbmFnZXI6Omluc3RhbmNlKCktPmRlbGV0ZUpvYih0aGlzKTsKIH0KIAotdm9pZCBOZXR3
b3JrSm9iOjpoYW5kbGVBYm91dCgpCi17Ci0gICAgLy8gRmlyc3QgNiBjaGFycyBhcmUgImFib3V0
OiIuCi0gICAgU3RyaW5nIGFib3V0V2hhdChtX3Jlc3BvbnNlLnVybCgpLnN0cmluZygpLnN1YnN0
cmluZyg2KSk7Ci0KLSAgICBTdHJpbmcgcmVzdWx0OwotCi0gICAgYm9vbCBoYW5kbGVkID0gZmFs
c2U7Ci0gICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGFib3V0V2hhdCwgImJsYW5rIikpIHsKLSAg
ICAgICAgaGFuZGxlZCA9IHRydWU7Ci0gICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShh
Ym91dFdoYXQsICJjcmVkaXRzIikpIHsKLSAgICAgICAgcmVzdWx0LmFwcGVuZCh3cml0ZUhlYWRl
cigiQ3JlZGl0cyIpKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmcoIjxzdHlsZT4gLmFi
b3V0IHtwYWRkaW5nOjE0cHg7fSA8L3N0eWxlPiIpKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChT
dHJpbmcoQmxhY2tCZXJyeTo6UGxhdGZvcm06OldFQktJVENSRURJVFMpKTsKLSAgICAgICAgcmVz
dWx0LmFwcGVuZChTdHJpbmcoIjwvYm9keT48L2h0bWw+IikpOwotICAgICAgICBoYW5kbGVkID0g
dHJ1ZTsKLSAgICB9IGVsc2UgaWYgKGFib3V0V2hhdC5zdGFydHNXaXRoKCJjYWNoZT9xdWVyeT0i
LCBmYWxzZSkpIHsKLSAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNsaWVudCogY2xpZW50
ID0gQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNsaWVudDo6Z2V0KCk7Ci0gICAgICAgIEFTU0VSVChj
bGllbnQpOwotICAgICAgICBzdGQ6OnN0cmluZyBrZXkoYWJvdXRXaGF0LnN1YnN0cmluZygxMiwg
YWJvdXRXaGF0Lmxlbmd0aCgpIC0gMTIpLnV0ZjgoKS5kYXRhKCkpOyAvLyAxMiBpcyBsZW5ndGgg
b2YgImNhY2hlP3F1ZXJ5PSIuCi0gICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8aHRtbD48
aGVhZD48dGl0bGU+QmxhY2tCZXJyeSBCcm93c2VyIERpc2sgQ2FjaGU8L3RpdGxlPjwvaGVhZD48
Ym9keT4iKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKGtleS5kYXRhKCkpKTsKLSAg
ICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmcoIjxocj4iKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBl
bmQoU3RyaW5nKGNsaWVudC0+Z2VuZXJhdGVIdG1sRnJhZ21lbnRGb3JDYWNoZUhlYWRlcnMoa2V5
KS5kYXRhKCkpKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmcoIjwvYm9keT48L2h0bWw+
IikpOwotICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKLSAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKGFib3V0V2hhdCwgImNhY2hlIikpIHsKLSAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZv
cm06OkNsaWVudCogY2xpZW50ID0gQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNsaWVudDo6Z2V0KCk7
Ci0gICAgICAgIEFTU0VSVChjbGllbnQpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZygi
PGh0bWw+PGhlYWQ+PHRpdGxlPkJsYWNrQmVycnkgQnJvd3NlciBEaXNrIENhY2hlPC90aXRsZT48
L2hlYWQ+PGJvZHk+IikpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZyhjbGllbnQtPmdl
bmVyYXRlSHRtbEZyYWdtZW50Rm9yQ2FjaGVLZXlzKCkuZGF0YSgpKSk7Ci0gICAgICAgIHJlc3Vs
dC5hcHBlbmQoU3RyaW5nKCI8L2JvZHk+PC9odG1sPiIpKTsKLSAgICAgICAgaGFuZGxlZCA9IHRy
dWU7Ci0jaWYgIWRlZmluZWQoUFVCTElDX0JVSUxEKSB8fCAhUFVCTElDX0JVSUxECi0gICAgfSBl
bHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhYm91dFdoYXQsICJjYWNoZS9kaXNhYmxlIikpIHsK
LSAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNsaWVudCogY2xpZW50ID0gQmxhY2tCZXJy
eTo6UGxhdGZvcm06OkNsaWVudDo6Z2V0KCk7Ci0gICAgICAgIEFTU0VSVChjbGllbnQpOwotICAg
ICAgICBjbGllbnQtPnNldERpc2tDYWNoZUVuYWJsZWQoZmFsc2UpOwotICAgICAgICByZXN1bHQu
YXBwZW5kKFN0cmluZygiPGh0bWw+PGhlYWQ+PHRpdGxlPkJsYWNrQmVycnkgQnJvd3NlciBEaXNr
IENhY2hlPC90aXRsZT48L2hlYWQ+PGJvZHk+SHR0cCBkaXNrIGNhY2hlIGlzIGRpc2FibGVkLjwv
Ym9keT48L2h0bWw+IikpOwotICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKLSAgICB9IGVsc2UgaWYg
KGVxdWFsSWdub3JpbmdDYXNlKGFib3V0V2hhdCwgImNhY2hlL2VuYWJsZSIpKSB7Ci0gICAgICAg
IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpDbGllbnQqIGNsaWVudCA9IEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpDbGllbnQ6OmdldCgpOwotICAgICAgICBBU1NFUlQoY2xpZW50KTsKLSAgICAgICAgY2xp
ZW50LT5zZXREaXNrQ2FjaGVFbmFibGVkKHRydWUpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0
cmluZygiPGh0bWw+PGhlYWQ+PHRpdGxlPkJsYWNrQmVycnkgQnJvd3NlciBEaXNrIENhY2hlPC90
aXRsZT48L2hlYWQ+PGJvZHk+SHR0cCBkaXNrIGNhY2hlIGlzIGVuYWJsZWQuPC9ib2R5PjwvaHRt
bD4iKSk7Ci0gICAgICAgIGhhbmRsZWQgPSB0cnVlOwotICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2UoYWJvdXRXaGF0LCAiY29va2llIikpIHsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChT
dHJpbmcoIjxodG1sPjxoZWFkPjx0aXRsZT5CbGFja0JlcnJ5IEJyb3dzZXIgY29va2llIGluZm9y
bWF0aW9uPC90aXRsZT48L2hlYWQ+PGJvZHk+IikpOwotICAgICAgICByZXN1bHQuYXBwZW5kKGNv
b2tpZU1hbmFnZXIoKS5nZW5lcmF0ZUh0bWxGcmFnbWVudEZvckNvb2tpZXMoKSk7Ci0gICAgICAg
IHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8L2JvZHk+PC9odG1sPiIpKTsKLSAgICAgICAgaGFuZGxl
ZCA9IHRydWU7Ci0gICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhYm91dFdoYXQsICJ2
ZXJzaW9uIikpIHsKLSAgICAgICAgcmVzdWx0LmFwcGVuZCh3cml0ZUhlYWRlcigiVmVyc2lvbiIp
KTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmcoIjxkaXYgY2xhc3M9J2JveCc+PGRpdiBj
bGFzcz0nYm94LXRpdGxlJz5CdWlsZCBUaW1lPC9kaXY+PGJyPiIpKTsKLSAgICAgICAgcmVzdWx0
LmFwcGVuZChTdHJpbmcoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkJVSUxEVElNRSkpOwotICAgICAg
ICByZXN1bHQuYXBwZW5kKFN0cmluZygiPC9kaXY+PGJyPjxkaXYgc3R5bGU9J2ZvbnQtc2l6ZTox
MHB4O3RleHQtYWxpZ246Y2VudGVyOyc+QWxzbyBzZWUgdGhlIDxBIGhyZWY9J2Fib3V0OmJ1aWxk
Jz5idWlsZCBpbmZvcm1hdGlvbjwvQT4uPC9ib2R5PjwvaHRtbD4iKSk7Ci0gICAgICAgIGhhbmRs
ZWQgPSB0cnVlOwotICAgIH0gZWxzZSBpZiAoQmxhY2tCZXJyeTo6UGxhdGZvcm06OmRlYnVnU2V0
dGluZygpID4gMCAmJiBlcXVhbElnbm9yaW5nQ2FzZShhYm91dFdoYXQsICJjb25maWciKSkgewot
ICAgICAgICByZXN1bHQgPSBjb25maWdQYWdlKCk7Ci0gICAgICAgIGhhbmRsZWQgPSB0cnVlOwot
ICAgIH0gZWxzZSBpZiAoQmxhY2tCZXJyeTo6UGxhdGZvcm06OmRlYnVnU2V0dGluZygpID4gMCAm
JiBlcXVhbElnbm9yaW5nQ2FzZShhYm91dFdoYXQsICJidWlsZCIpKSB7Ci0gICAgICAgIHJlc3Vs
dC5hcHBlbmQod3JpdGVIZWFkZXIoIkJ1aWxkIikpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0
cmluZygiPGRpdiBjbGFzcz0nYm94Jz48ZGl2IGNsYXNzPSdib3gtdGl0bGUnPkJhc2ljPC9kaXY+
PHRhYmxlPiIpKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmcoIjx0cj48dGQ+QnVpbHQg
T246ICA8L3RkPjx0ZD4iKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpCVUlMRENPTVBVVEVSKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoU3Ry
aW5nKCI8L3RkPjwvdHI+IikpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZygiPHRyPjx0
ZD5CdWlsZCBVc2VyOiAgPC90ZD48dGQ+IikpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmlu
ZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6QlVJTERVU0VSKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBl
bmQoU3RyaW5nKCI8L3RkPjwvdHI+IikpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZygi
PHRyPjx0ZD5CdWlsZCBUaW1lOiAgPC90ZD48dGQ+IikpOwotICAgICAgICByZXN1bHQuYXBwZW5k
KFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6QlVJTERUSU1FKSk7Ci0gICAgICAgIHJlc3Vs
dC5hcHBlbmQoU3RyaW5nKCI8L3RhYmxlPjwvZGl2Pjxicj4iKSk7Ci0gICAgICAgIHJlc3VsdC5h
cHBlbmQoU3RyaW5nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpCVUlMRElORk9fV0VCS0lUKSk7Ci0g
ICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpCVUlMRElO
Rk9fUExBVEZPUk0pKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmcoQmxhY2tCZXJyeTo6
UGxhdGZvcm06OkJVSUxESU5GT19MSUJXRUJWSUVXKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQo
U3RyaW5nKCI8L2JvZHk+PC9odG1sPiIpKTsKLSAgICAgICAgaGFuZGxlZCA9IHRydWU7Ci0gICAg
fSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhYm91dFdoYXQsICJtZW1vcnkiKSkgewotICAg
ICAgICByZXN1bHQgPSBtZW1vcnlQYWdlKCk7Ci0gICAgICAgIGhhbmRsZWQgPSB0cnVlOwotI2Vu
ZGlmCi0gICAgfQotICAgIGlmIChoYW5kbGVkKSB7Ci0gICAgICAgIENTdHJpbmcgcmVzdWx0U3Ry
aW5nID0gcmVzdWx0LnV0ZjgoKTsKLSAgICAgICAgbm90aWZ5U3RhdHVzUmVjZWl2ZWQoQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OkZpbHRlclN0cmVhbTo6U3RhdHVzU3VjY2VzcywgMCk7Ci0gICAgICAg
IG5vdGlmeVN0cmluZ0hlYWRlclJlY2VpdmVkKCJDb250ZW50LUxlbmd0aCIsIFN0cmluZzo6bnVt
YmVyKHJlc3VsdFN0cmluZy5sZW5ndGgoKSkpOwotICAgICAgICBub3RpZnlTdHJpbmdIZWFkZXJS
ZWNlaXZlZCgiQ29udGVudC1UeXBlIiwgInRleHQvaHRtbCIpOwotICAgICAgICBub3RpZnlEYXRh
UmVjZWl2ZWRQbGFpbihyZXN1bHRTdHJpbmcuZGF0YSgpLCByZXN1bHRTdHJpbmcubGVuZ3RoKCkp
OwotICAgICAgICBub3RpZnlDbG9zZShCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6RmlsdGVyU3RyZWFt
OjpTdGF0dXNTdWNjZXNzKTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyBJZiB3ZSBjYW4gbm90
IGhhbmRsZSBpdCwgd2UgdGFrZSBpdCBhcyBhbiBlcnJvciBvZiBpbnZhbGlkIFVSTC4KLSAgICAg
ICAgbm90aWZ5U3RhdHVzUmVjZWl2ZWQoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkZpbHRlclN0cmVh
bTo6U3RhdHVzRXJyb3JJbnZhbGlkVXJsLCAwKTsKLSAgICAgICAgbm90aWZ5Q2xvc2UoQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OkZpbHRlclN0cmVhbTo6U3RhdHVzRXJyb3JJbnZhbGlkVXJsKTsKLSAg
ICB9Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJyeS9OZXR3b3JrSm9iLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2JsYWNrYmVycnkvTmV0d29ya0pvYi5oCmluZGV4IDhmY2Vm
ZmMuLmI0OGMxZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
YmxhY2tiZXJyeS9OZXR3b3JrSm9iLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9ibGFja2JlcnJ5L05ldHdvcmtKb2IuaApAQCAtNjAsNyArNjAsNiBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBpc1J1bm5pbmcoKSBjb25zdCB7IHJldHVybiBtX2lzUnVubmluZzsgfQogI2VuZGlm
CiAgICAgYm9vbCBpc0NhbmNlbGxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FuY2VsbGVkOyB9Ci0g
ICAgdm9pZCBsb2FkQWJvdXRVUkwoKTsKICAgICBpbnQgY2FuY2VsSm9iKCk7CiAgICAgYm9vbCBp
c0RlZmVycmluZ0xvYWRpbmcoKSBjb25zdCB7IHJldHVybiBtX2RlZmVyTG9hZGluZ0NvdW50ID4g
MDsgfQogICAgIHZvaWQgdXBkYXRlRGVmZXJMb2FkaW5nQ291bnQoaW50IGRlbHRhKTsKQEAgLTEx
NSwxNSArMTE0LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHNlbmRSZXNwb25zZUlmTmVlZGVkKCk7
CiAgICAgdm9pZCBzZW5kTXVsdGlwYXJ0UmVzcG9uc2VJZk5lZWRlZCgpOwogCi0gICAgdm9pZCBm
aXJlTG9hZEFib3V0VGltZXIoVGltZXI8TmV0d29ya0pvYj4qKQotICAgIHsKLSAgICAgICAgaGFu
ZGxlQWJvdXQoKTsKLSAgICB9Ci0KICAgICB2b2lkIGZpcmVEZWxldGVKb2JUaW1lcihUaW1lcjxO
ZXR3b3JrSm9iPiopOwogCi0gICAgdm9pZCBoYW5kbGVBYm91dCgpOwotCiAgICAgYm9vbCBoYW5k
bGVGVFBIZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIpOwogCiAgICAgLy8gVGhlIHNlcnZlciBu
ZWVkcyBhdXRoZW50aWNhdGlvbiBjcmVkZW50aWFscy4gU2VhcmNoIGluIHRoZSBDcmVkZW50aWFs
U3RvcmFnZQpAQCAtMTQ0LDcgKzEzNiw2IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fcGFnZUdy
b3VwTmFtZTsKICAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IG1faGFuZGxlOwogICAgIFJlc291
cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICBUaW1lcjxOZXR3b3JrSm9iPiBtX2xvYWRBYm91
dFRpbWVyOwogICAgIE93blB0cjxSZXNvdXJjZVJlc3BvbnNlPiBtX211bHRpcGFydFJlc3BvbnNl
OwogICAgIFRpbWVyPE5ldHdvcmtKb2I+IG1fZGVsZXRlSm9iVGltZXI7CiAgICAgU3RyaW5nIG1f
Y29udGVudFR5cGU7CkBAIC0xNTIsNyArMTQzLDYgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9j
b250ZW50RGlzcG9zaXRpb247CiAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06Ok5ldHdvcmtTdHJl
YW1GYWN0b3J5KiBtX3N0cmVhbUZhY3Rvcnk7CiAgICAgYm9vbCBtX2lzRmlsZTsKLSAgICBib29s
IG1faXNBYm91dDsKICAgICBib29sIG1faXNGVFA7CiAgICAgYm9vbCBtX2lzRlRQRGlyOwogI2lm
bmRlZiBOREVCVUcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
YmxhY2tiZXJyeS9OZXR3b3JrTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2JsYWNrYmVycnkvTmV0d29ya01hbmFnZXIuY3BwCmluZGV4IDg5ZDYxOWMuLmI5MmEw
YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvYmxhY2tiZXJy
eS9OZXR3b3JrTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9ibGFja2JlcnJ5L05ldHdvcmtNYW5hZ2VyLmNwcApAQCAtMTM2LDEyICsxMzYsNiBAQCBib29s
IE5ldHdvcmtNYW5hZ2VyOjpzdGFydEpvYihpbnQgcGxheWVySWQsIGNvbnN0IFN0cmluZyYgcGFn
ZUdyb3VwTmFtZSwgUGFzc1JlZgogCiAgICAgbV9qb2JzLmFwcGVuZChuZXR3b3JrSm9iKTsKIAot
ICAgIGlmICh1cmwucHJvdG9jb2xJcygiYWJvdXQiKSkgewotICAgICAgICAvLyBJZiB0aGUgcHJv
dG9jb2wgbWF0Y2hlcyAiYWJvdXQiLCBsb2FkQWJvdXRVUkwgc2hvdWxkIHJlY29nbml6ZSBhbmQg
aGFuZGxlIGl0LgotICAgICAgICBuZXR3b3JrSm9iLT5sb2FkQWJvdXRVUkwoKTsKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfQotCiAgICAgaW50IHJlc3VsdCA9IG5ldHdvcmtKb2ItPnN0cmVh
bU9wZW4oKTsKICAgICBpZiAocmVzdWx0KQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmlu
ZGV4IGIyM2FjNmQuLjNlYzVjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDct
MTcgIFlvbmcgTGkgIDx5b2xpQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIE1vdmUg
YWJvdXQ6IFVSTCBoYW5kbGluZyBvdXQgb2YgV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE1NDEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBYm91dERhdGEuY3BwIGlzIG1vdmVkIGZyb20gV2Vi
Q29yZVN1cHBvcnQgdG8gV2ViS2l0U3VwcG9ydC4KKworICAgICAgICAqIFBsYXRmb3JtQmxhY2tC
ZXJyeS5jbWFrZToKKwogMjAxMi0wNy0xNyAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3Vu
Zy5jb20+CiAKICAgICAgICAgW0VGTF0gTW92ZSBjb2RlcyByZWxhdGVkIHRvIHRoZW1lIHNldHRp
bmcgZnJvbSBXaWRnZXQgdG8gUmVuZGVyVGhlbWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm1CbGFja0JlcnJ5LmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUJsYWNrQmVy
cnkuY21ha2UKaW5kZXggMGMyZjE4My4uMDVhYWVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybUJs
YWNrQmVycnkuY21ha2UKQEAgLTY4LDcgKzY4LDYgQEAgTElTVChBUFBFTkQgV2ViS2l0X1NPVVJD
RVMKICAgICBibGFja2JlcnJ5L0FwaS9XZWJTZXR0aW5ncy5jcHAKICAgICBibGFja2JlcnJ5L0Fw
aS9XZWJTdHJpbmcuY3BwCiAgICAgYmxhY2tiZXJyeS9BcGkvV2ViVmlld3BvcnRBcmd1bWVudHMu
Y3BwCi0gICAgYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9BYm91dERhdGEuY3BwCiAgICAgYmxh
Y2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9BdXRvZmlsbE1hbmFnZXIuY3BwCiAgICAgYmxhY2tiZXJy
eS9XZWJDb3JlU3VwcG9ydC9DYWNoZUNsaWVudEJsYWNrQmVycnkuY3BwCiAgICAgYmxhY2tiZXJy
eS9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRCbGFja0JlcnJ5LmNwcApAQCAtOTIsNiArOTEs
NyBAQCBMSVNUKEFQUEVORCBXZWJLaXRfU09VUkNFUwogICAgIGJsYWNrYmVycnkvV2ViQ29yZVN1
cHBvcnQvUGFnZVBvcHVwQmxhY2tCZXJyeS5jcHAKICAgICBibGFja2JlcnJ5L1dlYkNvcmVTdXBw
b3J0L1NlbGVjdFBvcHVwQ2xpZW50LmNwcAogICAgIGJsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQv
RGF0ZVBpY2tlckNsaWVudC5jcHAKKyAgICBibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvQWJvdXRE
YXRhLmNwcAogICAgIGJsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9CYWNraW5nU3RvcmVDb21wb3Np
dGluZ1N1cmZhY2UuY3BwCiAgICAgYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0JhY2tpbmdTdG9y
ZVRpbGUuY3BwCiAgICAgYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0JhY2tpbmdTdG9yZUNsaWVu
dC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCmluZGV4IDQ4NDZi
OTguLmJkNDJhNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2Vi
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcApA
QCAtMTksNiArMTksOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlBhZ2Uu
aCIKIAorI2luY2x1ZGUgIkFib3V0RGF0YS5oIgorI2luY2x1ZGUgIkFib3V0VGVtcGxhdGUuaHRt
bC5jcHAiCiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCIKICNpbmNsdWRlICJB
dXRvZmlsbE1hbmFnZXIuaCIKICNpbmNsdWRlICJCYWNrRm9yd2FyZENvbnRyb2xsZXIuaCIKQEAg
LTE1NSw2ICsxNTcsOCBAQAogI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybU1vdXNlRXZlbnQu
aD4KICNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1TY3JlZW4uaD4KICNpbmNsdWRlIDxCbGFj
a0JlcnJ5UGxhdGZvcm1TZXR0aW5ncy5oPgorI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybVdl
YktpdENyZWRpdHMuaD4KKyNpbmNsdWRlIDxCdWlsZEluZm9ybWF0aW9uLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ29u
dGV4dFJlZi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmLmg+CkBAIC02
MTUsNiArNjE5LDg0IEBAIHByaXZhdGU6CiAgICAgfQogfTsKIAorYm9vbCBXZWJQYWdlUHJpdmF0
ZTo6bG9hZEFib3V0KGNvbnN0IGNoYXIqIGFib3V0VVJMKQoreworICAgIGlmIChzdHJuY2FzZWNt
cChhYm91dFVSTCwgImFib3V0OiIsIDYpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAv
LyBGaXJzdCA2IGNoYXJzIGFyZSAiYWJvdXQ6Ii4KKyAgICBTdHJpbmcgYWJvdXRXaGF0KGFib3V0
VVJMICsgNik7CisKKyAgICBTdHJpbmcgcmVzdWx0OworCisgICAgaWYgKGVxdWFsSWdub3JpbmdD
YXNlKGFib3V0V2hhdCwgImNyZWRpdHMiKSkgeworICAgICAgICByZXN1bHQuYXBwZW5kKHdyaXRl
SGVhZGVyKCJDcmVkaXRzIikpOworICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZygiPHN0eWxl
PiAuYWJvdXQge3BhZGRpbmc6MTRweDt9IDwvc3R5bGU+IikpOworICAgICAgICByZXN1bHQuYXBw
ZW5kKFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V0VCS0lUQ1JFRElUUykpOworICAgICAg
ICByZXN1bHQuYXBwZW5kKFN0cmluZygiPC9ib2R5PjwvaHRtbD4iKSk7CisgICAgfSBlbHNlIGlm
IChhYm91dFdoYXQuc3RhcnRzV2l0aCgiY2FjaGU/cXVlcnk9IiwgZmFsc2UpKSB7CisgICAgICAg
IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpDbGllbnQqIGNsaWVudCA9IEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpDbGllbnQ6OmdldCgpOworICAgICAgICBBU1NFUlQoY2xpZW50KTsKKyAgICAgICAgc3Rk
OjpzdHJpbmcga2V5KGFib3V0V2hhdC5zdWJzdHJpbmcoMTIsIGFib3V0V2hhdC5sZW5ndGgoKSAt
IDEyKS51dGY4KCkuZGF0YSgpKTsgLy8gMTIgaXMgbGVuZ3RoIG9mICJjYWNoZT9xdWVyeT0iLgor
ICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZygiPGh0bWw+PGhlYWQ+PHRpdGxlPkJsYWNrQmVy
cnkgQnJvd3NlciBEaXNrIENhY2hlPC90aXRsZT48L2hlYWQ+PGJvZHk+IikpOworICAgICAgICBy
ZXN1bHQuYXBwZW5kKFN0cmluZyhrZXkuZGF0YSgpKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQo
U3RyaW5nKCI8aHI+IikpOworICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZyhjbGllbnQtPmdl
bmVyYXRlSHRtbEZyYWdtZW50Rm9yQ2FjaGVIZWFkZXJzKGtleSkuZGF0YSgpKSk7CisgICAgICAg
IHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8L2JvZHk+PC9odG1sPiIpKTsKKyAgICB9IGVsc2UgaWYg
KGVxdWFsSWdub3JpbmdDYXNlKGFib3V0V2hhdCwgImNhY2hlIikpIHsKKyAgICAgICAgQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OkNsaWVudCogY2xpZW50ID0gQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNs
aWVudDo6Z2V0KCk7CisgICAgICAgIEFTU0VSVChjbGllbnQpOworICAgICAgICByZXN1bHQuYXBw
ZW5kKFN0cmluZygiPGh0bWw+PGhlYWQ+PHRpdGxlPkJsYWNrQmVycnkgQnJvd3NlciBEaXNrIENh
Y2hlPC90aXRsZT48L2hlYWQ+PGJvZHk+IikpOworICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmlu
ZyhjbGllbnQtPmdlbmVyYXRlSHRtbEZyYWdtZW50Rm9yQ2FjaGVLZXlzKCkuZGF0YSgpKSk7Cisg
ICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8L2JvZHk+PC9odG1sPiIpKTsKKyNpZiAhZGVm
aW5lZChQVUJMSUNfQlVJTEQpIHx8ICFQVUJMSUNfQlVJTEQKKyAgICB9IGVsc2UgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKGFib3V0V2hhdCwgImNhY2hlL2Rpc2FibGUiKSkgeworICAgICAgICBCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6Q2xpZW50KiBjbGllbnQgPSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
Q2xpZW50OjpnZXQoKTsKKyAgICAgICAgQVNTRVJUKGNsaWVudCk7CisgICAgICAgIGNsaWVudC0+
c2V0RGlza0NhY2hlRW5hYmxlZChmYWxzZSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5n
KCI8aHRtbD48aGVhZD48dGl0bGU+QmxhY2tCZXJyeSBCcm93c2VyIERpc2sgQ2FjaGU8L3RpdGxl
PjwvaGVhZD48Ym9keT5IdHRwIGRpc2sgY2FjaGUgaXMgZGlzYWJsZWQuPC9ib2R5PjwvaHRtbD4i
KSk7CisgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhYm91dFdoYXQsICJjYWNoZS9l
bmFibGUiKSkgeworICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q2xpZW50KiBjbGllbnQg
PSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q2xpZW50OjpnZXQoKTsKKyAgICAgICAgQVNTRVJUKGNs
aWVudCk7CisgICAgICAgIGNsaWVudC0+c2V0RGlza0NhY2hlRW5hYmxlZCh0cnVlKTsKKyAgICAg
ICAgcmVzdWx0LmFwcGVuZChTdHJpbmcoIjxodG1sPjxoZWFkPjx0aXRsZT5CbGFja0JlcnJ5IEJy
b3dzZXIgRGlzayBDYWNoZTwvdGl0bGU+PC9oZWFkPjxib2R5Pkh0dHAgZGlzayBjYWNoZSBpcyBl
bmFibGVkLjwvYm9keT48L2h0bWw+IikpOworICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2UoYWJvdXRXaGF0LCAiY29va2llIikpIHsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmco
IjxodG1sPjxoZWFkPjx0aXRsZT5CbGFja0JlcnJ5IEJyb3dzZXIgY29va2llIGluZm9ybWF0aW9u
PC90aXRsZT48L2hlYWQ+PGJvZHk+IikpOworICAgICAgICByZXN1bHQuYXBwZW5kKGNvb2tpZU1h
bmFnZXIoKS5nZW5lcmF0ZUh0bWxGcmFnbWVudEZvckNvb2tpZXMoKSk7CisgICAgICAgIHJlc3Vs
dC5hcHBlbmQoU3RyaW5nKCI8L2JvZHk+PC9odG1sPiIpKTsKKyAgICB9IGVsc2UgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKGFib3V0V2hhdCwgInZlcnNpb24iKSkgeworICAgICAgICByZXN1bHQuYXBw
ZW5kKHdyaXRlSGVhZGVyKCJWZXJzaW9uIikpOworICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmlu
ZygiPGRpdiBjbGFzcz0nYm94Jz48ZGl2IGNsYXNzPSdib3gtdGl0bGUnPkJ1aWxkIFRpbWU8L2Rp
dj48YnI+IikpOworICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0
Zm9ybTo6QlVJTERUSU1FKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8L2Rpdj48
YnI+PGRpdiBzdHlsZT0nZm9udC1zaXplOjEwcHg7dGV4dC1hbGlnbjpjZW50ZXI7Jz5BbHNvIHNl
ZSB0aGUgPEEgaHJlZj0nYWJvdXQ6YnVpbGQnPmJ1aWxkIGluZm9ybWF0aW9uPC9BPi48L2JvZHk+
PC9odG1sPiIpKTsKKyAgICB9IGVsc2UgaWYgKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpkZWJ1Z1Nl
dHRpbmcoKSA+IDAgJiYgZXF1YWxJZ25vcmluZ0Nhc2UoYWJvdXRXaGF0LCAiY29uZmlnIikpIHsK
KyAgICAgICAgcmVzdWx0ID0gY29uZmlnUGFnZSgpOworICAgIH0gZWxzZSBpZiAoQmxhY2tCZXJy
eTo6UGxhdGZvcm06OmRlYnVnU2V0dGluZygpID4gMCAmJiBlcXVhbElnbm9yaW5nQ2FzZShhYm91
dFdoYXQsICJidWlsZCIpKSB7CisgICAgICAgIHJlc3VsdC5hcHBlbmQod3JpdGVIZWFkZXIoIkJ1
aWxkIikpOworICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZygiPGRpdiBjbGFzcz0nYm94Jz48
ZGl2IGNsYXNzPSdib3gtdGl0bGUnPkJhc2ljPC9kaXY+PHRhYmxlPiIpKTsKKyAgICAgICAgcmVz
dWx0LmFwcGVuZChTdHJpbmcoIjx0cj48dGQ+QnVpbHQgT246ICA8L3RkPjx0ZD4iKSk7CisgICAg
ICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpCVUlMRENPTVBV
VEVSKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8L3RkPjwvdHI+IikpOworICAg
ICAgICByZXN1bHQuYXBwZW5kKFN0cmluZygiPHRyPjx0ZD5CdWlsZCBVc2VyOiAgPC90ZD48dGQ+
IikpOworICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
QlVJTERVU0VSKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8L3RkPjwvdHI+Iikp
OworICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZygiPHRyPjx0ZD5CdWlsZCBUaW1lOiAgPC90
ZD48dGQ+IikpOworICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0
Zm9ybTo6QlVJTERUSU1FKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8L3RhYmxl
PjwvZGl2Pjxicj4iKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKEJsYWNrQmVycnk6
OlBsYXRmb3JtOjpCVUlMRElORk9fV0VCS0lUKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoU3Ry
aW5nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpCVUlMRElORk9fUExBVEZPUk0pKTsKKyAgICAgICAg
cmVzdWx0LmFwcGVuZChTdHJpbmcoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkJVSUxESU5GT19MSUJX
RUJWSUVXKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8L2JvZHk+PC9odG1sPiIp
KTsKKyAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGFib3V0V2hhdCwgIm1lbW9yeSIp
KSB7CisgICAgICAgIHJlc3VsdCA9IG1lbW9yeVBhZ2UoKTsKKyNlbmRpZgorICAgIH0gZWxzZQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBsb2FkU3RyaW5nKHJlc3VsdC5sYXRpbjEoKS5k
YXRhKCksIGFib3V0VVJMLCAidGV4dC9odG1sIik7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHZv
aWQgV2ViUGFnZVByaXZhdGU6OmxvYWQoY29uc3QgY2hhciogdXJsLCBjb25zdCBjaGFyKiBuZXR3
b3JrVG9rZW4sIGNvbnN0IGNoYXIqIG1ldGhvZCwgUGxhdGZvcm06Ok5ldHdvcmtSZXF1ZXN0OjpD
YWNoZVBvbGljeSBjYWNoZVBvbGljeSwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5n
dGgsIGNvbnN0IGNoYXIqIGNvbnN0KiBoZWFkZXJzLCBzaXplX3QgaGVhZGVyc0xlbmd0aCwgYm9v
bCBpc0luaXRpYWwsIGJvb2wgbXVzdEhhbmRsZUludGVybmFsbHksIGJvb2wgZm9yY2VEb3dubG9h
ZCwgY29uc3QgY2hhciogb3ZlcnJpZGVDb250ZW50VHlwZSwgY29uc3QgY2hhciogc3VnZ2VzdGVk
U2F2ZU5hbWUpCiB7CiAgICAgc3RvcEN1cnJlbnRMb2FkKCk7CkBAIC02NjUsNiArNzQ3LDggQEAg
dm9pZCBXZWJQYWdlUHJpdmF0ZTo6bG9hZChjb25zdCBjaGFyKiB1cmwsIGNvbnN0IGNoYXIqIG5l
dHdvcmtUb2tlbiwgY29uc3QgY2hhcioKIAogdm9pZCBXZWJQYWdlOjpsb2FkKGNvbnN0IGNoYXIq
IHVybCwgY29uc3QgY2hhciogbmV0d29ya1Rva2VuLCBib29sIGlzSW5pdGlhbCkKIHsKKyAgICBp
ZiAoZC0+bG9hZEFib3V0KHVybCkpCisgICAgICAgIHJldHVybjsKICAgICBkLT5sb2FkKHVybCwg
bmV0d29ya1Rva2VuLCAiR0VUIiwgUGxhdGZvcm06Ok5ldHdvcmtSZXF1ZXN0OjpVc2VQcm90b2Nv
bENhY2hlUG9saWN5LCAwLCAwLCAwLCAwLCBpc0luaXRpYWwsIGZhbHNlKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlX3AuaCBiL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZV9wLmgKaW5kZXggMDA1NjMxZS4uYjBlYmM4MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlX3AuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VfcC5oCkBAIC05Nyw2ICs5Nyw3
IEBAIHB1YmxpYzoKICAgICBib29sIGhhbmRsZU1vdXNlRXZlbnQoV2ViQ29yZTo6UGxhdGZvcm1N
b3VzZUV2ZW50Jik7CiAgICAgYm9vbCBoYW5kbGVXaGVlbEV2ZW50KFdlYkNvcmU6OlBsYXRmb3Jt
V2hlZWxFdmVudCYpOwogCisgICAgYm9vbCBsb2FkQWJvdXQoY29uc3QgY2hhciogYWJvdXRVUkwp
OwogICAgIHZvaWQgbG9hZChjb25zdCBjaGFyKiB1cmwsIGNvbnN0IGNoYXIqIG5ldHdvcmtUb2tl
biwgY29uc3QgY2hhciogbWV0aG9kLCBQbGF0Zm9ybTo6TmV0d29ya1JlcXVlc3Q6OkNhY2hlUG9s
aWN5LCBjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgY29uc3QgY2hhciogY29u
c3QqIGhlYWRlcnMsIHNpemVfdCBoZWFkZXJzTGVuZ3RoLCBib29sIGlzSW5pdGlhbCwgYm9vbCBt
dXN0SGFuZGxlSW50ZXJuYWxseSA9IGZhbHNlLCBib29sIGZvcmNlRG93bmxvYWQgPSBmYWxzZSwg
Y29uc3QgY2hhciogb3ZlcnJpZGVDb250ZW50VHlwZSA9ICIiLCBjb25zdCBjaGFyKiBzdWdnZXN0
ZWRTYXZlTmFtZSA9ICIiKTsKICAgICB2b2lkIGxvYWRTdHJpbmcoY29uc3QgY2hhciogc3RyaW5n
LCBjb25zdCBjaGFyKiBiYXNlVVJMLCBjb25zdCBjaGFyKiBtaW1lVHlwZSwgY29uc3QgY2hhciog
ZmFpbGluZ1VSTCA9IDApOwogICAgIGJvb2wgZXhlY3V0ZUphdmFTY3JpcHQoY29uc3QgY2hhciog
c2NyaXB0LCBKYXZhU2NyaXB0RGF0YVR5cGUmIHJldHVyblR5cGUsIFdlYlN0cmluZyYgcmV0dXJu
VmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKaW5kZXggZGExZTY5YS4uNzg5ZDY5
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAKKzIwMTIt
MDctMTcgIFlvbmcgTGkgIDx5b2xpQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIE1v
dmUgYWJvdXQ6IFVSTCBoYW5kbGluZyBvdXQgb2YgV2ViQ29yZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE1NDEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIGFib3V0IFVSTCBoYW5kbGluZyBjb2Rl
IHRvIFdlYktpdC9ibGFja2JlcnJ5LiBOb3cgd2hlbiBXZWJQYWdlIGlzIGFza2VkIHRvIGxvYWQg
YW4gYWJvdXQgVVJMLAorICAgICAgICBpdCBkaXJlY3RseSBjYWxscyBsb2FkU3RyaW5nKCkgd2l0
aCB0aGUgZ2VuZXJhdGVkIHNvdXJjZS4KKworICAgICAgICBBbHNvIG1vdmUgQWJvdXREYXRhLmgv
Y3BwIGZyb20gV2ViQ29yZVN1cHBvcnQgdG8gV2ViS2l0U3VwcG9ydCBhbmQgY2hhbmdlIHRoZWly
IG5hbWVzcGFjZSBmcm9tIFdlYkNvcmUKKyAgICAgICAgdG8gQmxhY2tCZXJyeTo6V2ViS2l0Lgor
CisgICAgICAgIFRoZSBjaGFuZ2UgaXMgdmVyeSBtZWNoYW5pY2FsIGV4Y2VwdCAicHJvY3NzIHRv
dGFsIG1lbW9yeSB1c2FnZSIgaW4gYWJvdXQ6bWVtb3J5IG5vdyBvbmx5IGFjY291bnRzIHVzZWQK
KyAgICAgICAgYnl0ZXMgYW5kIGlnbm9yZSBmcmVlIHNwYWNlcyBpbiBtYWxsb2MuCisKKyAgICAg
ICAgKiBBcGkvV2ViUGFnZS5jcHA6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBh
Z2VQcml2YXRlOjpsb2FkQWJvdXQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEJsYWNr
QmVycnk6OldlYktpdDo6V2ViUGFnZTo6bG9hZCk6CisgICAgICAgICogQXBpL1dlYlBhZ2VfcC5o
OgorICAgICAgICAoV2ViUGFnZVByaXZhdGUpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvQWJv
dXREYXRhLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3Jl
U3VwcG9ydC9BYm91dERhdGEuY3BwLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEJsYWNr
QmVycnk6OldlYktpdDo6d3JpdGVGZWF0dXJlcyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJL
aXQ6Om51bWJlclRvSFRNTFRyKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6Ym9vbCk6
CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OmNvbmZpZ1BhZ2UpOgorICAgICAgICAoQmxh
Y2tCZXJyeTo6V2ViS2l0OjpjYWNoZVR5cGVTdGF0aXN0aWNUb0hUTUxUcik6CisgICAgICAgIChC
bGFja0JlcnJ5OjpXZWJLaXQ6OmR1bXBKU0NUeXBlQ291bnRTZXRUb1RhYmxlSFRNTCk6CisgICAg
ICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6Om1lbW9yeVBhZ2UpOgorICAgICAgICAqIFdlYktpdFN1
cHBvcnQvQWJvdXREYXRhLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkv
V2ViQ29yZVN1cHBvcnQvQWJvdXREYXRhLmguCisgICAgICAgIChXZWJLaXQpOgorCiAyMDEyLTA3
LTE3ICBWaXZlayBHYWxhdGFnZSAgPHZpdmVrZ2FsYXRhZ2VAZ21haWwuY29tPgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IHJlZmFjdG9yIEluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9u
dGVuZCgpIHRvIGFjY2VwdCBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQWJvdXREYXRhLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9BYm91dERhdGEuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNDQ5OWJhLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJLaXQvYmxhY2tiZXJyeS9XZWJDb3JlU3VwcG9ydC9BYm91dERhdGEuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsMjk5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgUmVz
ZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKLSAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotICogRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAg
VVNBCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkFib3V0RGF0YS5oIgot
I2luY2x1ZGUgIkFib3V0VGVtcGxhdGUuaHRtbC5jcHAiCi0KLSNpbmNsdWRlICJDU3RyaW5nLmgi
Ci0jaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKLSNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgotI2lu
Y2x1ZGUgIk1lbW9yeVN0YXRpc3RpY3MuaCIKLSNpbmNsdWRlICJTdXJmYWNlUG9vbC5oIgotI2lu
Y2x1ZGUgIldlYktpdFZlcnNpb24uaCIKLQotI2luY2x1ZGUgPHByb2Nlc3MuaD4KLSNpbmNsdWRl
IDxCbGFja0JlcnJ5UGxhdGZvcm1TZXR0aW5ncy5oPgotI2luY2x1ZGUgPGhlYXAvSGVhcC5oPgot
I2luY2x1ZGUgPHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg+Ci0jaW5jbHVkZSA8c3lzL3N0YXQuaD4K
LSNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRp
YyBTdHJpbmcgd3JpdGVGZWF0dXJlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHJ1ZUxpc3QsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBmYWxzZUxpc3QpCi17Ci0gICAgU3RyaW5nIHJldDsKLSAgICBm
b3IgKHVuc2lnbmVkIGludCBpID0gMCwgaiA9IDA7IGkgPCB0cnVlTGlzdC5zaXplKCkgfHwgaiA8
IGZhbHNlTGlzdC5zaXplKCk7KSB7Ci0gICAgICAgIGJvb2wgcGlja0Zyb21GYWxzZSA9ICgoaSA+
PSB0cnVlTGlzdC5zaXplKCkpIHx8IChqIDwgZmFsc2VMaXN0LnNpemUoKSAmJiBzdHJjbXAoZmFs
c2VMaXN0W2pdLmFzY2lpKCkuZGF0YSgpLCB0cnVlTGlzdFtpXS5hc2NpaSgpLmRhdGEoKSkgPCAw
KSk7Ci0gICAgICAgIGNvbnN0IFN0cmluZyYgaXRlbSA9IChwaWNrRnJvbUZhbHNlID8gZmFsc2VM
aXN0IDogdHJ1ZUxpc3QpWyAocGlja0Zyb21GYWxzZSA/IGogOiBpKSsrIF07Ci0gICAgICAgIHJl
dCArPSBTdHJpbmcoIjx0cj48dGQ+PGRpdiBjbGFzcz0nIiArIFN0cmluZyhwaWNrRnJvbUZhbHNl
ID8gImZhbHNlIiA6ICJ0cnVlIikgKyAiJyIgKyAoaXRlbS5sZW5ndGgoKSA+PSAzMCA/ICIgc3R5
bGU9J2ZvbnQtc2l6ZToxMHB4OycgIiA6ICIiKSArICI+IiArIGl0ZW0gKyAiPC9kaXY+PC90ZD48
L3RyPiIpOwotICAgIH0KLSAgICByZXR1cm4gcmV0OwotfQotCi10ZW1wbGF0ZTxjbGFzcyBUPiBT
dHJpbmcgbnVtYmVyVG9IVE1MVHIoY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgVCBudW1iZXIp
Ci17Ci0gICAgcmV0dXJuIFN0cmluZygiPHRyPjx0ZD4iKSArIGRlc2NyaXB0aW9uICsgIjwvdGQ+
PHRkPiIgKyBTdHJpbmc6Om51bWJlcihudW1iZXIpICsgIjwvdGQ+PC90cj4iOwotfQotCi10ZW1w
bGF0ZTw+IFN0cmluZyBudW1iZXJUb0hUTUxUcjxib29sPihjb25zdCBTdHJpbmcmIGRlc2NyaXB0
aW9uLCBib29sIHRydXRoKQotewotICAgIHJldHVybiBTdHJpbmcoIjx0cj48dGQ+IikgKyBkZXNj
cmlwdGlvbiArICI8L3RkPjx0ZD4iICsgKHRydXRoPyJ0cnVlIjoiZmFsc2UiKSArICI8L3RkPjwv
dHI+IjsKLX0KLQotU3RyaW5nIGNvbmZpZ1BhZ2UoKQotewotICAgIFN0cmluZyBwYWdlOwotI2lm
ICFkZWZpbmVkKFBVQkxJQ19CVUlMRCkgfHwgIVBVQkxJQ19CVUlMRAotICAgIHBhZ2UgPSB3cml0
ZUhlYWRlcigiQ29uZmlndXJhdGlvbiIpOwotICAgICsgIjxkaXYgY2xhc3M9XCJib3hcIj48ZGl2
IGNsYXNzPVwiYm94LXRpdGxlXCI+Q29tcGlsZXIgSW5mb3JtYXRpb248L2Rpdj48dGFibGUgY2xh
c3M9J2ZpeGVkLXRhYmxlJz48Y29sIHdpZHRoPTc1JT48Y29sIHdpZHRoPTI1JT4iCi0jaWYgQ09N
UElMRVIoTVNWQykKLSAgICArICI8dHI+PHRkPk1pY3Jvc29mdCBWaXN1YWwgQysrPC90ZD48dGQ+
TVNWQzwvdGQ+PC90cj4iCi0gICAgKyAiPHRyPjx0ZD5fTVNDX1ZFUjwvdGQ+PHRkPiIgKyBTdHJp
bmc6Om51bWJlcihfTVNDX1ZFUikgKyAiPC90ZD48L3RyPiIKLSAgICArICI8dHI+PHRkPl9NU0Nf
RlVMTF9WRVI8L3RkPjx0ZD4iICsgU3RyaW5nOjpudW1iZXIoX01TQ19GVUxMX1ZFUikgKyAiPC90
ZD48L3RyPiIKLSAgICArICI8dHI+PHRkPl9NU0NfQlVJTEQ8L3RkPjx0ZD4iICsgU3RyaW5nOjpu
dW1iZXIoX01TQ19CVUlMRCkgKyAiPC90ZD48L3RyPiIKLSNlbGlmIENPTVBJTEVSKFJWQ1QpCi0g
ICAgKyAiPHRyPjx0ZD5BUk0gUmVhbFZpZXcgQ29tcGlsZXIgVG9vbGtpdDwvdGQ+PHRkPlJWQ1Q8
L3RkPjwvdHI+IgotICAgICsgIjx0cj48dGQ+X19BUk1DQ19WRVJTSU9OPC90ZD48dGQ+IiArIFN0
cmluZzo6bnVtYmVyKF9fQVJNQ0NfVkVSU0lPTikgKyAiPC90ZD48L3RyPiIKLSNpZiBDT01QSUxF
UihSVkNUNEdOVSkKLSAgICArICI8dHI+PHRkPlJWQ1QgNCsgaW4gLS1nbnUgbW9kZTwvdGQ+PHRk
PjE8L3RkPjwvdHI+IgotI2VuZGlmCi0jZWxpZiBDT01QSUxFUihHQ0MpCi0gICAgKyAiPHRyPjx0
ZD5HQ0M8L3RkPjx0ZD4iICsgU3RyaW5nOjpudW1iZXIoX19HTlVDX18pICsgIi4iICsgU3RyaW5n
OjpudW1iZXIoX19HTlVDX01JTk9SX18pICsgIi4iICsgU3RyaW5nOjpudW1iZXIoX19HTlVDX1BB
VENITEVWRUxfXykgKyAiPC90ZD48L3RyPiIKLSNlbmRpZgotCi0gICAgLy8gQWRkICIiIHRvIHNh
dGlzZnkgY2hlY2std2Via2l0LXN0eWxlLgotICAgICsgIiI7Ci0KLSAgICBwYWdlICs9IFN0cmlu
ZygiPC90YWJsZT48L2Rpdj48YnI+PGRpdiBjbGFzcz0nYm94Jz48ZGl2IGNsYXNzPSdib3gtdGl0
bGUnPkNQVSBJbmZvcm1hdGlvbjwvZGl2Pjx0YWJsZSBjbGFzcz0nZml4ZWQtdGFibGUnPjxjb2wg
d2lkdGg9NzUlPjxjb2wgd2lkdGg9MjUlPiIpCi0jaWYgQ1BVKFg4NikKLSAgICArICI8dHI+PHRk
Plg4NjwvdGQ+PHRkPjwvdGQ+PC90cj4iCi0jZWxpZiBDUFUoQVJNKQotICAgICsgIjx0cj48dGQ+
QVJNPC90ZD48dGQ+PC90ZD48L3RyPiIKLSAgICArICI8dHI+PHRkPkFSTV9BUkNIX1ZFUlNJT048
L3RkPjx0ZD4iICsgU3RyaW5nOjpudW1iZXIoV1RGX0FSTV9BUkNIX1ZFUlNJT04pICsgIjwvdGQ+
PC90cj4iCi0gICAgKyAiPHRyPjx0ZD5USFVNQl9BUkNIX1ZFUlNJT048L3RkPjx0ZD4iICsgU3Ry
aW5nOjpudW1iZXIoV1RGX1RIVU1CX0FSQ0hfVkVSU0lPTikgKyAiPC90ZD48L3RyPiIKLSAgICAr
ICI8dHI+PHRkPlRIVU1CMjwvdGQ+PHRkPiIgKyBTdHJpbmc6Om51bWJlcihXVEZfQ1BVX0FSTV9U
SFVNQjIpICsgIjwvdGQ+PC90cj4iCi0jZW5kaWYKLSAgICArICI8dHI+PHRkPkVuZGlhbm5lc3M8
L3RkPjx0ZD4iCi0jaWYgQ1BVKEJJR19FTkRJQU4pCi0gICAgKyAiYmlnIgotI2VsaWYgQ1BVKE1J
RERMRV9FTkRJQU4pCi0gICAgKyAibWlkZGxlIgotI2Vsc2UKLSAgICArICJsaXR0bGUiCi0jZW5k
aWYKLSAgICArICI8L3RkPjwvdHI+IjsKLQotICAgIHBhZ2UgKz0gU3RyaW5nKCI8L3RhYmxlPjwv
ZGl2Pjxicj48ZGl2IGNsYXNzPSdib3gnPjxkaXYgY2xhc3M9J2JveC10aXRsZSc+UGxhdGZvcm0g
SW5mb3JtYXRpb248L2Rpdj48dGFibGUgY2xhc3M9J2ZpeGVkLXRhYmxlJz48Y29sIHdpZHRoPTc1
JT48Y29sIHdpZHRoPTI1JT4iKQotICAgICsgIjx0cj48dGQ+V2ViS2l0IFZlcnNpb248L3RkPjx0
ZD4iICsgU3RyaW5nOjpudW1iZXIoV0VCS0lUX01BSk9SX1ZFUlNJT04pICsgIi4iICsgU3RyaW5n
OjpudW1iZXIoV0VCS0lUX01JTk9SX1ZFUlNJT04pICsgIjwvdGQ+PC90cj4iCi0gICAgKyAiPHRy
Pjx0ZD5CbGFja0JlcnJ5PC90ZD48dGQ+IgotI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpCi0gICAg
KyAiMSIKLSNlbHNlCi0gICAgKyAiMCIKLSNlbmRpZgotICAgICsgIjwvdGQ+PC90cj4iCi0gICAg
KyAiPHRyPjx0ZD5fX1NURENfSVNPXzEwNjQ2X188L3RkPjx0ZD4iCi0jaWZkZWYgX19TVERDX0lT
T18xMDY0Nl9fCi0gICAgKyAiMSIKLSNlbHNlCi0gICAgKyAiMCIKLSNlbmRpZgotICAgICsgIjwv
dGQ+PC90cj4iOwotCi0gICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OlNldHRpbmdzKiBzZXR0aW5n
cyA9IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTZXR0aW5nczo6aW5zdGFuY2UoKTsKLSAgICBwYWdl
ICs9IFN0cmluZygiPC90YWJsZT48L2Rpdj48YnI+PGRpdiBjbGFzcz0nYm94Jz48ZGl2IGNsYXNz
PSdib3gtdGl0bGUnPlBsYXRmb3JtIFNldHRpbmdzPC9kaXY+PHRhYmxlIHN0eWxlPSdmb250LXNp
emU6MTFweDsnIGNsYXNzPSdmaXhlZC10YWJsZSc+PGNvbCB3aWR0aD03NSU+PGNvbCB3aWR0aD0y
NSU+Iik7Ci0gICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigiaXNSU1NGaWx0ZXJpbmdFbmFibGVk
Iiwgc2V0dGluZ3MtPmlzUlNTRmlsdGVyaW5nRW5hYmxlZCgpKTsKLSAgICBwYWdlICs9IG51bWJl
clRvSFRNTFRyKCJzZWNvbmRhcnlUaHJlYWRTdGFja1NpemUiLCBzZXR0aW5ncy0+c2Vjb25kYXJ5
VGhyZWFkU3RhY2tTaXplKCkpOwotICAgIHBhZ2UgKz0gbnVtYmVyVG9IVE1MVHIoIm1heFBpeGVs
c1BlckRlY29kZWRJbWFnZSIsIHNldHRpbmdzLT5tYXhQaXhlbHNQZXJEZWNvZGVkSW1hZ2UoKSk7
Ci0gICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigic2hvdWxkUmVwb3J0TG93TWVtb3J5VG9Vc2Vy
Iiwgc2V0dGluZ3MtPnNob3VsZFJlcG9ydExvd01lbW9yeVRvVXNlcigpKTsKLSAgICBwYWdlICs9
IG51bWJlclRvSFRNTFRyKCJudW1iZXJPZkJhY2tpbmdTdG9yZVRpbGVzIiwgc2V0dGluZ3MtPm51
bWJlck9mQmFja2luZ1N0b3JlVGlsZXMoKSk7Ci0gICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigi
bWF4aW11bU51bWJlck9mQmFja2luZy4uLkFjcm9zc1Byb2Nlc3NlcyIsIHNldHRpbmdzLT5tYXhp
bXVtTnVtYmVyT2ZCYWNraW5nU3RvcmVUaWxlc0Fjcm9zc1Byb2Nlc3NlcygpKTsKLSAgICBwYWdl
ICs9IG51bWJlclRvSFRNTFRyKCJ0YWJzU3VwcG9ydGVkQnlDbGllbnQiLCBzZXR0aW5ncy0+dGFi
c1N1cHBvcnRlZEJ5Q2xpZW50KCkpOwotICAgIHBhZ2UgKz0gbnVtYmVyVG9IVE1MVHIoImNvbnRl
eHRNZW51RW5hYmxlZCIsIHNldHRpbmdzLT5jb250ZXh0TWVudUVuYWJsZWQoKSk7Ci0gICAgcGFn
ZSArPSBudW1iZXJUb0hUTUxUcigic2VsZWN0aW9uRW5hYmxlZCIsIHNldHRpbmdzLT5zZWxlY3Rp
b25FbmFibGVkKCkpOwotICAgIHBhZ2UgKz0gbnVtYmVyVG9IVE1MVHIoImZpbmVDdXJzb3JDb250
cm9sRW5hYmxlZCIsIHNldHRpbmdzLT5maW5lQ3Vyc29yQ29udHJvbEVuYWJsZWQoKSk7Ci0gICAg
cGFnZSArPSBudW1iZXJUb0hUTUxUcigiYWx3YXlzU2hvd0tleWJvYXJkT25Gb2N1cyIsIHNldHRp
bmdzLT5hbHdheXNTaG93S2V5Ym9hcmRPbkZvY3VzKCkpOwotICAgIHBhZ2UgKz0gbnVtYmVyVG9I
VE1MVHIoImFsbG93Q2VudGVyU2Nyb2xsQWRqdXN0bWVudEZvcklucHV0RmllbGRzIiwgc2V0dGlu
Z3MtPmFsbG93Q2VudGVyU2Nyb2xsQWRqdXN0bWVudEZvcklucHV0RmllbGRzKCkpOwotICAgIHBh
Z2UgKz0gbnVtYmVyVG9IVE1MVHIoInVucmVzdHJpY3RlZFJlc2l6ZUV2ZW50cyIsIHNldHRpbmdz
LT51bnJlc3RyaWN0ZWRSZXNpemVFdmVudHMoKSk7Ci0gICAgcGFnZSArPSBudW1iZXJUb0hUTUxU
cigiaXNCcmlkZ2VCcm93c2VyIiwgc2V0dGluZ3MtPmlzQnJpZGdlQnJvd3NlcigpKTsKLSAgICBw
YWdlICs9IG51bWJlclRvSFRNTFRyKCJpc1dlYkdMU3VwcG9ydGVkIiwgc2V0dGluZ3MtPmlzV2Vi
R0xTdXBwb3J0ZWQoKSk7Ci0gICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigic2hvd0ltYWdlTG9j
YXRpb25PcHRpb25zSW5HQ00iLCBzZXR0aW5ncy0+c2hvd0ltYWdlTG9jYXRpb25PcHRpb25zSW5H
Q00oKSk7Ci0gICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigiZm9yY2VHTEVTMldpbmRvd1VzYWdl
Iiwgc2V0dGluZ3MtPmZvcmNlR0xFUzJXaW5kb3dVc2FnZSgpKTsKLSAgICBwYWdlICs9IG51bWJl
clRvSFRNTFRyKCJtYXhDbGlja2FibGVTcGVlZCIsIHNldHRpbmdzLT5tYXhDbGlja2FibGVTcGVl
ZCgpKTsKLSAgICBwYWdlICs9IG51bWJlclRvSFRNTFRyKCJtYXhKaXR0ZXJSYWRpdXNDbGljayIs
IHNldHRpbmdzLT5tYXhKaXR0ZXJSYWRpdXNDbGljaygpKTsKLSAgICBwYWdlICs9IG51bWJlclRv
SFRNTFRyKCJtYXhKaXR0ZXJSYWRpdXNUYXAiLCBzZXR0aW5ncy0+bWF4Sml0dGVyUmFkaXVzVGFw
KCkpOwotICAgIHBhZ2UgKz0gbnVtYmVyVG9IVE1MVHIoIm1heEppdHRlclJhZGl1c1NpbmdsZVRv
dWNoTW92ZSIsIHNldHRpbmdzLT5tYXhKaXR0ZXJSYWRpdXNTaW5nbGVUb3VjaE1vdmUoKSk7Ci0g
ICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigibWF4Sml0dGVyUmFkaXVzVG91Y2hIb2xkIiwgc2V0
dGluZ3MtPm1heEppdHRlclJhZGl1c1RvdWNoSG9sZCgpKTsKLSAgICBwYWdlICs9IG51bWJlclRv
SFRNTFRyKCJtYXhKaXR0ZXJSYWRpdXNIYW5kbGVEcmFnIiwgc2V0dGluZ3MtPm1heEppdHRlclJh
ZGl1c0hhbmRsZURyYWcoKSk7Ci0gICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigibWF4Sml0dGVy
UmFkaXVzVGFwSGlnaGxpZ2h0Iiwgc2V0dGluZ3MtPm1heEppdHRlclJhZGl1c1RhcEhpZ2hsaWdo
dCgpKTsKLSAgICBwYWdlICs9IG51bWJlclRvSFRNTFRyKCJtYXhKaXR0ZXJEaXN0YW5jZUNsaWNr
Iiwgc2V0dGluZ3MtPm1heEppdHRlckRpc3RhbmNlQ2xpY2soKSk7Ci0gICAgcGFnZSArPSBudW1i
ZXJUb0hUTUxUcigibWF4Sml0dGVyRGlzdGFuY2VUYXAiLCBzZXR0aW5ncy0+bWF4Sml0dGVyRGlz
dGFuY2VUYXAoKSk7Ci0gICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigibWF4Sml0dGVyRGlzdGFu
Y2VTaW5nbGVUb3VjaE1vdmUiLCBzZXR0aW5ncy0+bWF4Sml0dGVyRGlzdGFuY2VTaW5nbGVUb3Vj
aE1vdmUoKSk7Ci0gICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigibWF4Sml0dGVyRGlzdGFuY2VU
b3VjaEhvbGQiLCBzZXR0aW5ncy0+bWF4Sml0dGVyRGlzdGFuY2VUb3VjaEhvbGQoKSk7Ci0gICAg
cGFnZSArPSBudW1iZXJUb0hUTUxUcigibWF4Sml0dGVyRGlzdGFuY2VUYXBIaWdobGlnaHQiLCBz
ZXR0aW5ncy0+bWF4Sml0dGVyRGlzdGFuY2VUYXBIaWdobGlnaHQoKSk7Ci0gICAgcGFnZSArPSBu
dW1iZXJUb0hUTUxUcigibWF4Sml0dGVyRGlzdGFuY2VIYW5kbGVEcmFnIiwgc2V0dGluZ3MtPm1h
eEppdHRlckRpc3RhbmNlSGFuZGxlRHJhZygpKTsKLSAgICBwYWdlICs9IG51bWJlclRvSFRNTFRy
KCJ0b3BGYXRGaW5nZXJQYWRkaW5nIiwgc2V0dGluZ3MtPnRvcEZhdEZpbmdlclBhZGRpbmcoKSk7
Ci0gICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigicmlnaHRGYXRGaW5nZXJQYWRkaW5nIiwgc2V0
dGluZ3MtPnJpZ2h0RmF0RmluZ2VyUGFkZGluZygpKTsKLSAgICBwYWdlICs9IG51bWJlclRvSFRN
TFRyKCJib3R0b21GYXRGaW5nZXJQYWRkaW5nIiwgc2V0dGluZ3MtPmJvdHRvbUZhdEZpbmdlclBh
ZGRpbmcoKSk7Ci0gICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigibWF4U2VsZWN0aW9uTmVja0hl
aWdodCIsIHNldHRpbmdzLT5tYXhTZWxlY3Rpb25OZWNrSGVpZ2h0KCkpOwotICAgIHBhZ2UgKz0g
bnVtYmVyVG9IVE1MVHIoImxlZnRGYXRGaW5nZXJQYWRkaW5nIiwgc2V0dGluZ3MtPmxlZnRGYXRG
aW5nZXJQYWRkaW5nKCkpOwotCi0gICAgVmVjdG9yPFN0cmluZz4gdHJ1ZUxpc3QsIGZhbHNlTGlz
dDsKLSAgICAjaW5jbHVkZSAiQWJvdXREYXRhRW5hYmxlRmVhdHVyZXMuY3BwIgotICAgIHBhZ2Ug
Kz0gU3RyaW5nKCI8L3RhYmxlPjwvZGl2Pjxicj48ZGl2IGNsYXNzPSdib3gnPjxkaXYgY2xhc3M9
J2JveC10aXRsZSc+V2ViS2l0IEZlYXR1cmVzIChFTkFCTEVfKTwvZGl2Pjx0YWJsZSBjbGFzcz0n
Zml4ZWQtdGFibGUnPiIpOwotCi0gICAgcGFnZSArPSB3cml0ZUZlYXR1cmVzKHRydWVMaXN0LCBm
YWxzZUxpc3QpOwotCi0gICAgdHJ1ZUxpc3QuY2xlYXIoKTsKLSAgICBmYWxzZUxpc3QuY2xlYXIo
KTsKLSAgICAjaW5jbHVkZSAiQWJvdXREYXRhSGF2ZUZlYXR1cmVzLmNwcCIKLSAgICBwYWdlICs9
IFN0cmluZygiPC90YWJsZT48L2Rpdj48YnI+PGRpdiBjbGFzcz0nYm94Jz48ZGl2IGNsYXNzPSdi
b3gtdGl0bGUnPldlYktpdCBGZWF0dXJlcyAoSEFWRV8pPC9kaXY+PHRhYmxlIGNsYXNzPSdmaXhl
ZC10YWJsZSc+Iik7Ci0KLSAgICBwYWdlICs9IHdyaXRlRmVhdHVyZXModHJ1ZUxpc3QsIGZhbHNl
TGlzdCk7Ci0KLSAgICB0cnVlTGlzdC5jbGVhcigpOwotICAgIGZhbHNlTGlzdC5jbGVhcigpOwot
ICAgICNpbmNsdWRlICJBYm91dERhdGFVc2VGZWF0dXJlcy5jcHAiCi0gICAgcGFnZSArPSBTdHJp
bmcoIjwvdGFibGU+PC9kaXY+PGJyPjxkaXYgY2xhc3M9J2JveCc+PGRpdiBjbGFzcz0nYm94LXRp
dGxlJz5XZWJLaXQgRmVhdHVyZXMgKFVTRV8pPC9kaXY+PHRhYmxlIGNsYXNzPSdmaXhlZC10YWJs
ZSc+Iik7Ci0gICAgcGFnZSArPSB3cml0ZUZlYXR1cmVzKHRydWVMaXN0LCBmYWxzZUxpc3QpOwot
ICAgIHBhZ2UgKz0gU3RyaW5nKCI8L3RhYmxlPjwvZGl2PjwvYm9keT48L2h0bWw+Iik7Ci0jZW5k
aWYKLQotICAgIHJldHVybiBwYWdlOwotfQotCi1zdGF0aWMgU3RyaW5nIGNhY2hlVHlwZVN0YXRp
c3RpY1RvSFRNTFRyKGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGNvbnN0IE1lbW9yeUNhY2hl
OjpUeXBlU3RhdGlzdGljJiBzdGF0aXN0aWMpCi17Ci0gICAgY29uc3QgaW50IHNfa2lsb0J5dGUg
PSAxMDI0OwotICAgIHJldHVybiBTdHJpbmcoIjx0cj48dGQ+IikgKyBkZXNjcmlwdGlvbiArICI8
L3RkPiIKLSAgICAgICAgKyAiPHRkPiIgKyBTdHJpbmc6Om51bWJlcihzdGF0aXN0aWMuY291bnQp
ICsgIjwvdGQ+IgotICAgICAgICArICI8dGQ+IiArIFN0cmluZzo6bnVtYmVyKHN0YXRpc3RpYy5z
aXplIC8gc19raWxvQnl0ZSkgKyAiPC90ZD4iCi0gICAgICAgICsgIjx0ZD4iICsgU3RyaW5nOjpu
dW1iZXIoc3RhdGlzdGljLmxpdmVTaXplIC8gc19raWxvQnl0ZSkgKyAiPC90ZD4iCi0gICAgICAg
ICsgIjx0ZD4iICsgU3RyaW5nOjpudW1iZXIoc3RhdGlzdGljLmRlY29kZWRTaXplIC8gc19raWxv
Qnl0ZSkgKyAiPC90ZD4iCi0gICAgICAgICsgIjwvdHI+IjsKLX0KLQotc3RhdGljIHZvaWQgZHVt
cEpTQ1R5cGVDb3VudFNldFRvVGFibGVIVE1MKFN0cmluZyYgdGFibGVIVE1MLCBKU0M6OlR5cGVD
b3VudFNldCogdHlwZUNvdW50U2V0KQotewotICAgIGlmICghdHlwZUNvdW50U2V0KQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBmb3IgKEpTQzo6VHlwZUNvdW50U2V0Ojpjb25zdF9pdGVyYXRvciBp
dGVyID0gdHlwZUNvdW50U2V0LT5iZWdpbigpOyBpdGVyICE9IHR5cGVDb3VudFNldC0+ZW5kKCk7
ICsraXRlcikKLSAgICAgICAgdGFibGVIVE1MICs9IG51bWJlclRvSFRNTFRyKGl0ZXItPmZpcnN0
LCBpdGVyLT5zZWNvbmQpOwotfQotCi1TdHJpbmcgbWVtb3J5UGFnZSgpCi17Ci0gICAgU3RyaW5n
IHBhZ2U7Ci0KLSAgICBwYWdlID0gd3JpdGVIZWFkZXIoIk1lbW9yeSIpCi0gICAgKyAiPGRpdiBj
bGFzcz1cImJveFwiPjxkaXYgY2xhc3M9XCJib3gtdGl0bGVcIj5DYWNoZSBJbmZvcm1hdGlvbjxi
cj48ZGl2IHN0eWxlPSdmb250LXNpemU6MTFweDtjb2xvcjojQThBOEE4Jz5TaXplLCBMaXZpbmcs
IGFuZCBEZWNvZGVkIGFyZSBleHByZXNzZWQgaW4gS0IuPC9kaXY+PGJyPjwvZGl2Pjx0YWJsZSBj
bGFzcz0nZml4ZWQtdGFibGUnPjxjb2wgd2lkdGg9NzUlPjxjb2wgd2lkdGg9MjUlPiI7Ci0KLSAg
ICAvLyBnZW5lcmF0ZSBjYWNoZSBpbmZvcm1hdGlvbgotICAgIE1lbW9yeUNhY2hlKiBjYWNoZUlu
YyA9IG1lbW9yeUNhY2hlKCk7Ci0gICAgTWVtb3J5Q2FjaGU6OlN0YXRpc3RpY3MgY2FjaGVTdGF0
ID0gY2FjaGVJbmMtPmdldFN0YXRpc3RpY3MoKTsKLQotICAgIHBhZ2UgKz0gIjx0cj4gPHRoIGFs
aWduPWxlZnQ+SXRlbTwvdGg+IDx0aCBhbGlnbj1sZWZ0PkNvdW50PC90aD4gPHRoIGFsaWduPWxl
ZnQ+U2l6ZTwvdGg+IDx0aCBhbGlnbj1sZWZ0PkxpdmluZzwvdGg+IDx0aCBhbGlnbj1sZWZ0PkRl
Y29kZWQ8L3RoPjwvdHI+IjsKLQotICAgIE1lbW9yeUNhY2hlOjpUeXBlU3RhdGlzdGljIHRvdGFs
OwotICAgIHRvdGFsLmNvdW50ID0gY2FjaGVTdGF0LmltYWdlcy5jb3VudCArIGNhY2hlU3RhdC5j
c3NTdHlsZVNoZWV0cy5jb3VudAotICAgICAgICAgICAgKyBjYWNoZVN0YXQuc2NyaXB0cy5jb3Vu
dCArIGNhY2hlU3RhdC54c2xTdHlsZVNoZWV0cy5jb3VudCArIGNhY2hlU3RhdC5mb250cy5jb3Vu
dDsKLSAgICB0b3RhbC5zaXplID0gY2FjaGVJbmMtPnRvdGFsU2l6ZSgpOwotICAgIHRvdGFsLmxp
dmVTaXplID0gY2FjaGVTdGF0LmltYWdlcy5saXZlU2l6ZSArIGNhY2hlU3RhdC5jc3NTdHlsZVNo
ZWV0cy5saXZlU2l6ZQotICAgICAgICAgICAgKyBjYWNoZVN0YXQuc2NyaXB0cy5saXZlU2l6ZSAr
IGNhY2hlU3RhdC54c2xTdHlsZVNoZWV0cy5saXZlU2l6ZSArIGNhY2hlU3RhdC5mb250cy5saXZl
U2l6ZTsKLSAgICB0b3RhbC5kZWNvZGVkU2l6ZSA9IGNhY2hlU3RhdC5pbWFnZXMuZGVjb2RlZFNp
emUKLSAgICAgICAgICAgICsgY2FjaGVTdGF0LmNzc1N0eWxlU2hlZXRzLmRlY29kZWRTaXplICsg
Y2FjaGVTdGF0LnNjcmlwdHMuZGVjb2RlZFNpemUKLSAgICAgICAgICAgICsgY2FjaGVTdGF0Lnhz
bFN0eWxlU2hlZXRzLmRlY29kZWRTaXplICsgY2FjaGVTdGF0LmZvbnRzLmRlY29kZWRTaXplOwot
Ci0gICAgcGFnZSArPSBjYWNoZVR5cGVTdGF0aXN0aWNUb0hUTUxUcigiVG90YWwiLCB0b3RhbCk7
Ci0gICAgcGFnZSArPSBjYWNoZVR5cGVTdGF0aXN0aWNUb0hUTUxUcigiSW1hZ2VzIiwgY2FjaGVT
dGF0LmltYWdlcyk7Ci0gICAgcGFnZSArPSBjYWNoZVR5cGVTdGF0aXN0aWNUb0hUTUxUcigiQ1NT
IFN0eWxlIFNoZWV0cyIsIGNhY2hlU3RhdC5jc3NTdHlsZVNoZWV0cyk7Ci0gICAgcGFnZSArPSBj
YWNoZVR5cGVTdGF0aXN0aWNUb0hUTUxUcigiU2NyaXB0cyIsIGNhY2hlU3RhdC5zY3JpcHRzKTsK
LSNpZiBFTkFCTEUoWFNMVCkKLSAgICBwYWdlICs9IGNhY2hlVHlwZVN0YXRpc3RpY1RvSFRNTFRy
KCJYU0wgU3R5bGUgU2hlZXRzIiwgY2FjaGVTdGF0LnhzbFN0eWxlU2hlZXRzKTsKLSNlbmRpZgot
ICAgIHBhZ2UgKz0gY2FjaGVUeXBlU3RhdGlzdGljVG9IVE1MVHIoIkZvbnRzIiwgY2FjaGVTdGF0
LmZvbnRzKTsKLQotICAgIHBhZ2UgKz0gIjwvdGFibGU+PC9kaXY+PGJyPiI7Ci0KLSNpZiAhZGVm
aW5lZChQVUJMSUNfQlVJTEQpIHx8ICFQVUJMSUNfQlVJTEQKLQotICAgIC8vIEpTIGVuZ2luZSBt
ZW1vcnkgdXNhZ2UuCi0gICAgSlNDOjpHbG9iYWxNZW1vcnlTdGF0aXN0aWNzIGpzY01lbW9yeVN0
YXQgPSBKU0M6Omdsb2JhbE1lbW9yeVN0YXRpc3RpY3MoKTsKLSAgICBKU0M6OkhlYXAmIG1haW5I
ZWFwID0gSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpLT5oZWFwOwotICAgIE93blB0
cjxKU0M6OlR5cGVDb3VudFNldD4gb2JqZWN0VHlwZUNvdW50cyA9IG1haW5IZWFwLm9iamVjdFR5
cGVDb3VudHMoKTsKLSAgICBPd25QdHI8SlNDOjpUeXBlQ291bnRTZXQ+IHByb3RlY3RlZE9iamVj
dFR5cGVDb3VudHMgPSBtYWluSGVhcC5wcm90ZWN0ZWRPYmplY3RUeXBlQ291bnRzKCk7Ci0KLSAg
ICAvLyBNYWxsb2MgaW5mby4KLSAgICBzdHJ1Y3QgbWFsbGluZm8gbWFsbG9jSW5mbyA9IG1hbGxp
bmZvKCk7Ci0KLSAgICBwYWdlICs9ICI8ZGl2IGNsYXNzPSdib3gnPjxkaXYgY2xhc3M9J2JveC10
aXRsZSc+UHJvY2VzcyBtZW1vcnkgdXNhZ2Ugc3VtbWFyeTwvZGl2Pjx0YWJsZSBjbGFzcz0nZml4
ZWQtdGFibGUnPjxjb2wgd2lkdGg9NzUlPjxjb2wgd2lkdGg9MjUlPiI7Ci0KLSAgICBwYWdlICs9
IG51bWJlclRvSFRNTFRyKCJUb3RhbCBtZW1vcnkgdXNhZ2UgKG1hbGxvYyArIEpTQykiLCBtYWxs
b2NJbmZvLmFyZW5hICsganNjTWVtb3J5U3RhdC5zdGFja0J5dGVzICsganNjTWVtb3J5U3RhdC5K
SVRCeXRlcyArIG1haW5IZWFwLmNhcGFjaXR5KCkpOwotCi0gICAgc3RydWN0IHN0YXQgcHJvY2Vz
c0luZm87Ci0gICAgaWYgKCFzdGF0KFN0cmluZzo6Zm9ybWF0KCIvcHJvYy8ldS9hcyIsIGdldHBp
ZCgpKS5sYXRpbjEoKS5kYXRhKCksICZwcm9jZXNzSW5mbykpCi0gICAgICAgIHBhZ2UgKz0gbnVt
YmVyVG9IVE1MVHIoIlRvdGFsIG1hcHBlZCBtZW1vcnkiLCBwcm9jZXNzSW5mby5zdF9zaXplKTsK
LQotICAgIHBhZ2UgKz0gIjwvdGFibGU+PC9kaXY+PGJyPiI7Ci0KLSAgICBwYWdlICs9ICI8ZGl2
IGNsYXNzPSdib3gnPjxkaXYgY2xhc3M9J2JveC10aXRsZSc+SlMgZW5naW5lIG1lbW9yeSB1c2Fn
ZTwvZGl2Pjx0YWJsZSBjbGFzcz0nZml4ZWQtdGFibGUnPjxjb2wgd2lkdGg9NzUlPjxjb2wgd2lk
dGg9MjUlPiI7Ci0KLSAgICBwYWdlICs9IG51bWJlclRvSFRNTFRyKCJTdGFjayBzaXplIiwganNj
TWVtb3J5U3RhdC5zdGFja0J5dGVzKTsKLSAgICBwYWdlICs9IG51bWJlclRvSFRNTFRyKCJKSVQg
bWVtb3J5IHVzYWdlIiwganNjTWVtb3J5U3RhdC5KSVRCeXRlcyk7Ci0gICAgcGFnZSArPSBudW1i
ZXJUb0hUTUxUcigiTWFpbiBoZWFwIGNhcGFjaXR5IiwgbWFpbkhlYXAuY2FwYWNpdHkoKSk7Ci0g
ICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigiTWFpbiBoZWFwIHNpemUiLCBtYWluSGVhcC5zaXpl
KCkpOwotICAgIHBhZ2UgKz0gbnVtYmVyVG9IVE1MVHIoIk9iamVjdCBjb3VudCIsIG1haW5IZWFw
Lm9iamVjdENvdW50KCkpOwotICAgIHBhZ2UgKz0gbnVtYmVyVG9IVE1MVHIoIkdsb2JhbCBvYmpl
Y3QgY291bnQiLCBtYWluSGVhcC5nbG9iYWxPYmplY3RDb3VudCgpKTsKLSAgICBwYWdlICs9IG51
bWJlclRvSFRNTFRyKCJQcm90ZWN0ZWQgb2JqZWN0IGNvdW50IiwgbWFpbkhlYXAucHJvdGVjdGVk
T2JqZWN0Q291bnQoKSk7Ci0gICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigiUHJvdGVjdGVkIGds
b2JhbCBvYmplY3QgY291bnQiLCBtYWluSGVhcC5wcm90ZWN0ZWRHbG9iYWxPYmplY3RDb3VudCgp
KTsKLQotICAgIHBhZ2UgKz0gIjwvdGFibGU+PC9kaXY+PGJyPiI7Ci0KLSAgICBwYWdlICs9ICI8
ZGl2IGNsYXNzPSdib3gnPjxkaXYgY2xhc3M9J2JveC10aXRsZSc+SlMgb2JqZWN0IHR5cGUgY291
bnRzPC9kaXY+PHRhYmxlIGNsYXNzPSdmaXhlZC10YWJsZSc+PGNvbCB3aWR0aD03NSU+PGNvbCB3
aWR0aD0yNSU+IjsKLSAgICBkdW1wSlNDVHlwZUNvdW50U2V0VG9UYWJsZUhUTUwocGFnZSwgb2Jq
ZWN0VHlwZUNvdW50cy5nZXQoKSk7Ci0gICAgcGFnZSArPSAiPC90YWJsZT48L2Rpdj48YnI+IjsK
LQotICAgIHBhZ2UgKz0gIjxkaXYgY2xhc3M9J2JveCc+PGRpdiBjbGFzcz0nYm94LXRpdGxlJz5K
UyBwcm90ZWN0ZWQgb2JqZWN0IHR5cGUgY291bnRzPC9kaXY+PHRhYmxlIGNsYXNzPSdmaXhlZC10
YWJsZSc+PGNvbCB3aWR0aD03NSU+PGNvbCB3aWR0aD0yNSU+IjsKLSAgICBkdW1wSlNDVHlwZUNv
dW50U2V0VG9UYWJsZUhUTUwocGFnZSwgcHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cy5nZXQoKSk7
Ci0gICAgcGFnZSArPSAiPC90YWJsZT48L2Rpdj48YnI+IjsKLQotICAgIHBhZ2UgKz0gIjxkaXYg
Y2xhc3M9J2JveCc+PGRpdiBjbGFzcz0nYm94LXRpdGxlJz5NYWxsb2MgSW5mb3JtYXRpb248L2Rp
dj48dGFibGUgY2xhc3M9J2ZpeGVkLXRhYmxlJz48Y29sIHdpZHRoPTc1JT48Y29sIHdpZHRoPTI1
JT4iOwotCi0gICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigiVG90YWwgc3BhY2UgaW4gdXNlIiwg
bWFsbG9jSW5mby51c21ibGtzICsgbWFsbG9jSW5mby51b3JkYmxrcyk7Ci0gICAgcGFnZSArPSBu
dW1iZXJUb0hUTUxUcigiVG90YWwgc3BhY2UgaW4gZnJlZSBibG9ja3MiLCBtYWxsb2NJbmZvLmZz
bWJsa3MgKyBtYWxsb2NJbmZvLmZvcmRibGtzKTsKLSAgICBwYWdlICs9IG51bWJlclRvSFRNTFRy
KCJTaXplIG9mIHRoZSBhcmVuYSIsIG1hbGxvY0luZm8uYXJlbmEpOwotICAgIHBhZ2UgKz0gbnVt
YmVyVG9IVE1MVHIoIk51bWJlciBvZiBiaWcgYmxvY2tzIGluIHVzZSIsIG1hbGxvY0luZm8ub3Jk
Ymxrcyk7Ci0gICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigiTnVtYmVyIG9mIHNtYWxsIGJsb2Nr
cyBpbiB1c2UiLCBtYWxsb2NJbmZvLnNtYmxrcyk7Ci0gICAgcGFnZSArPSBudW1iZXJUb0hUTUxU
cigiTnVtYmVyIG9mIGhlYWRlciBibG9ja3MgaW4gdXNlIiwgbWFsbG9jSW5mby5oYmxrcyk7Ci0g
ICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigiU3BhY2UgaW4gaGVhZGVyIGJsb2NrIGhlYWRlcnMi
LCBtYWxsb2NJbmZvLmhibGtoZCk7Ci0gICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigiU3BhY2Ug
aW4gc21hbGwgYmxvY2tzIGluIHVzZSIsIG1hbGxvY0luZm8udXNtYmxrcyk7Ci0gICAgcGFnZSAr
PSBudW1iZXJUb0hUTUxUcigiTWVtb3J5IGluIGZyZWUgc21hbGwgYmxvY2tzIiwgbWFsbG9jSW5m
by5mc21ibGtzKTsKLSAgICBwYWdlICs9IG51bWJlclRvSFRNTFRyKCJTcGFjZSBpbiBiaWcgYmxv
Y2tzIGluIHVzZSIsIG1hbGxvY0luZm8udW9yZGJsa3MpOwotICAgIHBhZ2UgKz0gbnVtYmVyVG9I
VE1MVHIoIk1lbW9yeSBpbiBmcmVlIGJpZyBibG9ja3MiLCBtYWxsb2NJbmZvLmZvcmRibGtzKTsK
LQotICAgIHBhZ2UgKz0gIjwvdGFibGU+PC9kaXY+IjsKLSNlbmRpZgotCi0gICAgcGFnZSArPSAi
PC9ib2R5PjwvaHRtbD4iOwotICAgIHJldHVybiBwYWdlOwotfQotCi19CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQWJvdXREYXRhLmggYi9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvQWJvdXREYXRhLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkOTc3YWIuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0Fib3V0RGF0YS5oCisrKyAvZGV2L251bGwKQEAg
LTEsMzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBSZXNlYXJjaCBJbiBNb3Rp
b24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICog
TGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg
UHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRl
IHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKLSAqLwotCi0j
aWZuZGVmIEFib3V0RGF0YV9oCi0jZGVmaW5lIEFib3V0RGF0YV9oCi0KLSNpbmNsdWRlICJQbGF0
Zm9ybVN0cmluZy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVN0cmluZyBjb25maWdQYWdl
KCk7Ci1TdHJpbmcgbWVtb3J5UGFnZSgpOwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNl
bmRpZiAvLyBBYm91dERhdGFfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L1dlYktpdFN1cHBvcnQvQWJvdXREYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9X
ZWJLaXRTdXBwb3J0L0Fib3V0RGF0YS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNzQ1MTU3NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJy
eS9XZWJLaXRTdXBwb3J0L0Fib3V0RGF0YS5jcHAKQEAgLTAsMCArMSwzMDMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5z
ZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0
d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkFib3V0RGF0YS5oIgorCisjaW5jbHVkZSAiQWJvdXRUZW1wbGF0ZS5odG1s
LmNwcCIKKyNpbmNsdWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKKyNp
bmNsdWRlICJNZW1vcnlDYWNoZS5oIgorI2luY2x1ZGUgIk1lbW9yeVN0YXRpc3RpY3MuaCIKKyNp
bmNsdWRlICJTdXJmYWNlUG9vbC5oIgorI2luY2x1ZGUgIldlYktpdFZlcnNpb24uaCIKKworI2lu
Y2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybVNldHRpbmdzLmg+CisjaW5jbHVkZSA8aGVhcC9IZWFw
Lmg+CisjaW5jbHVkZSA8cHJvY2Vzcy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNHbG9iYWxEYXRh
Lmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgorCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIEJsYWNrQmVycnkgeworbmFtZXNw
YWNlIFdlYktpdCB7CisKK3N0YXRpYyBTdHJpbmcgd3JpdGVGZWF0dXJlcyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgdHJ1ZUxpc3QsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBmYWxzZUxpc3QpCit7Cisg
ICAgU3RyaW5nIHJldDsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMCwgaiA9IDA7IGkgPCB0
cnVlTGlzdC5zaXplKCkgfHwgaiA8IGZhbHNlTGlzdC5zaXplKCk7KSB7CisgICAgICAgIGJvb2wg
cGlja0Zyb21GYWxzZSA9ICgoaSA+PSB0cnVlTGlzdC5zaXplKCkpIHx8IChqIDwgZmFsc2VMaXN0
LnNpemUoKSAmJiBzdHJjbXAoZmFsc2VMaXN0W2pdLmFzY2lpKCkuZGF0YSgpLCB0cnVlTGlzdFtp
XS5hc2NpaSgpLmRhdGEoKSkgPCAwKSk7CisgICAgICAgIGNvbnN0IFN0cmluZyYgaXRlbSA9IChw
aWNrRnJvbUZhbHNlID8gZmFsc2VMaXN0IDogdHJ1ZUxpc3QpWyAocGlja0Zyb21GYWxzZSA/IGog
OiBpKSsrIF07CisgICAgICAgIHJldCArPSBTdHJpbmcoIjx0cj48dGQ+PGRpdiBjbGFzcz0nIiAr
IFN0cmluZyhwaWNrRnJvbUZhbHNlID8gImZhbHNlIiA6ICJ0cnVlIikgKyAiJyIgKyAoaXRlbS5s
ZW5ndGgoKSA+PSAzMCA/ICIgc3R5bGU9J2ZvbnQtc2l6ZToxMHB4OycgIiA6ICIiKSArICI+IiAr
IGl0ZW0gKyAiPC9kaXY+PC90ZD48L3RyPiIpOworICAgIH0KKyAgICByZXR1cm4gcmV0OworfQor
Cit0ZW1wbGF0ZTxjbGFzcyBUPiBTdHJpbmcgbnVtYmVyVG9IVE1MVHIoY29uc3QgU3RyaW5nJiBk
ZXNjcmlwdGlvbiwgVCBudW1iZXIpCit7CisgICAgcmV0dXJuIFN0cmluZygiPHRyPjx0ZD4iKSAr
IGRlc2NyaXB0aW9uICsgIjwvdGQ+PHRkPiIgKyBTdHJpbmc6Om51bWJlcihudW1iZXIpICsgIjwv
dGQ+PC90cj4iOworfQorCit0ZW1wbGF0ZTw+IFN0cmluZyBudW1iZXJUb0hUTUxUcjxib29sPihj
b25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBib29sIHRydXRoKQoreworICAgIHJldHVybiBTdHJp
bmcoIjx0cj48dGQ+IikgKyBkZXNjcmlwdGlvbiArICI8L3RkPjx0ZD4iICsgKHRydXRoPyJ0cnVl
IjoiZmFsc2UiKSArICI8L3RkPjwvdHI+IjsKK30KKworU3RyaW5nIGNvbmZpZ1BhZ2UoKQorewor
ICAgIFN0cmluZyBwYWdlOworI2lmICFkZWZpbmVkKFBVQkxJQ19CVUlMRCkgfHwgIVBVQkxJQ19C
VUlMRAorICAgIHBhZ2UgPSB3cml0ZUhlYWRlcigiQ29uZmlndXJhdGlvbiIpCisgICAgKyAiPGRp
diBjbGFzcz1cImJveFwiPjxkaXYgY2xhc3M9XCJib3gtdGl0bGVcIj5Db21waWxlciBJbmZvcm1h
dGlvbjwvZGl2Pjx0YWJsZSBjbGFzcz0nZml4ZWQtdGFibGUnPjxjb2wgd2lkdGg9NzUlPjxjb2wg
d2lkdGg9MjUlPiIKKyNpZiBDT01QSUxFUihNU1ZDKQorICAgICsgIjx0cj48dGQ+TWljcm9zb2Z0
IFZpc3VhbCBDKys8L3RkPjx0ZD5NU1ZDPC90ZD48L3RyPiIKKyAgICArICI8dHI+PHRkPl9NU0Nf
VkVSPC90ZD48dGQ+IiArIFN0cmluZzo6bnVtYmVyKF9NU0NfVkVSKSArICI8L3RkPjwvdHI+Igor
ICAgICsgIjx0cj48dGQ+X01TQ19GVUxMX1ZFUjwvdGQ+PHRkPiIgKyBTdHJpbmc6Om51bWJlcihf
TVNDX0ZVTExfVkVSKSArICI8L3RkPjwvdHI+IgorICAgICsgIjx0cj48dGQ+X01TQ19CVUlMRDwv
dGQ+PHRkPiIgKyBTdHJpbmc6Om51bWJlcihfTVNDX0JVSUxEKSArICI8L3RkPjwvdHI+IgorI2Vs
aWYgQ09NUElMRVIoUlZDVCkKKyAgICArICI8dHI+PHRkPkFSTSBSZWFsVmlldyBDb21waWxlciBU
b29sa2l0PC90ZD48dGQ+UlZDVDwvdGQ+PC90cj4iCisgICAgKyAiPHRyPjx0ZD5fX0FSTUNDX1ZF
UlNJT048L3RkPjx0ZD4iICsgU3RyaW5nOjpudW1iZXIoX19BUk1DQ19WRVJTSU9OKSArICI8L3Rk
PjwvdHI+IgorI2lmIENPTVBJTEVSKFJWQ1Q0R05VKQorICAgICsgIjx0cj48dGQ+UlZDVCA0KyBp
biAtLWdudSBtb2RlPC90ZD48dGQ+MTwvdGQ+PC90cj4iCisjZW5kaWYKKyNlbGlmIENPTVBJTEVS
KEdDQykKKyAgICArICI8dHI+PHRkPkdDQzwvdGQ+PHRkPiIgKyBTdHJpbmc6Om51bWJlcihfX0dO
VUNfXykgKyAiLiIgKyBTdHJpbmc6Om51bWJlcihfX0dOVUNfTUlOT1JfXykgKyAiLiIgKyBTdHJp
bmc6Om51bWJlcihfX0dOVUNfUEFUQ0hMRVZFTF9fKSArICI8L3RkPjwvdHI+IgorI2VuZGlmCisK
KyAgICAvLyBBZGQgIiIgdG8gc2F0aXNmeSBjaGVjay13ZWJraXQtc3R5bGUuCisgICAgKyAiIjsK
KworICAgIHBhZ2UgKz0gU3RyaW5nKCI8L3RhYmxlPjwvZGl2Pjxicj48ZGl2IGNsYXNzPSdib3gn
PjxkaXYgY2xhc3M9J2JveC10aXRsZSc+Q1BVIEluZm9ybWF0aW9uPC9kaXY+PHRhYmxlIGNsYXNz
PSdmaXhlZC10YWJsZSc+PGNvbCB3aWR0aD03NSU+PGNvbCB3aWR0aD0yNSU+IikKKyNpZiBDUFUo
WDg2KQorICAgICsgIjx0cj48dGQ+WDg2PC90ZD48dGQ+PC90ZD48L3RyPiIKKyNlbGlmIENQVShB
Uk0pCisgICAgKyAiPHRyPjx0ZD5BUk08L3RkPjx0ZD48L3RkPjwvdHI+IgorICAgICsgIjx0cj48
dGQ+QVJNX0FSQ0hfVkVSU0lPTjwvdGQ+PHRkPiIgKyBTdHJpbmc6Om51bWJlcihXVEZfQVJNX0FS
Q0hfVkVSU0lPTikgKyAiPC90ZD48L3RyPiIKKyAgICArICI8dHI+PHRkPlRIVU1CX0FSQ0hfVkVS
U0lPTjwvdGQ+PHRkPiIgKyBTdHJpbmc6Om51bWJlcihXVEZfVEhVTUJfQVJDSF9WRVJTSU9OKSAr
ICI8L3RkPjwvdHI+IgorICAgICsgIjx0cj48dGQ+VEhVTUIyPC90ZD48dGQ+IiArIFN0cmluZzo6
bnVtYmVyKFdURl9DUFVfQVJNX1RIVU1CMikgKyAiPC90ZD48L3RyPiIKKyNlbmRpZgorICAgICsg
Ijx0cj48dGQ+RW5kaWFubmVzczwvdGQ+PHRkPiIKKyNpZiBDUFUoQklHX0VORElBTikKKyAgICAr
ICJiaWciCisjZWxpZiBDUFUoTUlERExFX0VORElBTikKKyAgICArICJtaWRkbGUiCisjZWxzZQor
ICAgICsgImxpdHRsZSIKKyNlbmRpZgorICAgICsgIjwvdGQ+PC90cj4iOworCisgICAgcGFnZSAr
PSBTdHJpbmcoIjwvdGFibGU+PC9kaXY+PGJyPjxkaXYgY2xhc3M9J2JveCc+PGRpdiBjbGFzcz0n
Ym94LXRpdGxlJz5QbGF0Zm9ybSBJbmZvcm1hdGlvbjwvZGl2Pjx0YWJsZSBjbGFzcz0nZml4ZWQt
dGFibGUnPjxjb2wgd2lkdGg9NzUlPjxjb2wgd2lkdGg9MjUlPiIpCisgICAgKyAiPHRyPjx0ZD5X
ZWJLaXQgVmVyc2lvbjwvdGQ+PHRkPiIgKyBTdHJpbmc6Om51bWJlcihXRUJLSVRfTUFKT1JfVkVS
U0lPTikgKyAiLiIgKyBTdHJpbmc6Om51bWJlcihXRUJLSVRfTUlOT1JfVkVSU0lPTikgKyAiPC90
ZD48L3RyPiIKKyAgICArICI8dHI+PHRkPkJsYWNrQmVycnk8L3RkPjx0ZD4iCisjaWYgUExBVEZP
Uk0oQkxBQ0tCRVJSWSkKKyAgICArICIxIgorI2Vsc2UKKyAgICArICIwIgorI2VuZGlmCisgICAg
KyAiPC90ZD48L3RyPiIKKyAgICArICI8dHI+PHRkPl9fU1REQ19JU09fMTA2NDZfXzwvdGQ+PHRk
PiIKKyNpZmRlZiBfX1NURENfSVNPXzEwNjQ2X18KKyAgICArICIxIgorI2Vsc2UKKyAgICArICIw
IgorI2VuZGlmCisgICAgKyAiPC90ZD48L3RyPiI7CisKKyAgICBCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6U2V0dGluZ3MqIHNldHRpbmdzID0gQmxhY2tCZXJyeTo6UGxhdGZvcm06OlNldHRpbmdzOjpp
bnN0YW5jZSgpOworICAgIHBhZ2UgKz0gU3RyaW5nKCI8L3RhYmxlPjwvZGl2Pjxicj48ZGl2IGNs
YXNzPSdib3gnPjxkaXYgY2xhc3M9J2JveC10aXRsZSc+UGxhdGZvcm0gU2V0dGluZ3M8L2Rpdj48
dGFibGUgc3R5bGU9J2ZvbnQtc2l6ZToxMXB4OycgY2xhc3M9J2ZpeGVkLXRhYmxlJz48Y29sIHdp
ZHRoPTc1JT48Y29sIHdpZHRoPTI1JT4iKTsKKyAgICBwYWdlICs9IG51bWJlclRvSFRNTFRyKCJp
c1JTU0ZpbHRlcmluZ0VuYWJsZWQiLCBzZXR0aW5ncy0+aXNSU1NGaWx0ZXJpbmdFbmFibGVkKCkp
OworICAgIHBhZ2UgKz0gbnVtYmVyVG9IVE1MVHIoInNlY29uZGFyeVRocmVhZFN0YWNrU2l6ZSIs
IHNldHRpbmdzLT5zZWNvbmRhcnlUaHJlYWRTdGFja1NpemUoKSk7CisgICAgcGFnZSArPSBudW1i
ZXJUb0hUTUxUcigibWF4UGl4ZWxzUGVyRGVjb2RlZEltYWdlIiwgc2V0dGluZ3MtPm1heFBpeGVs
c1BlckRlY29kZWRJbWFnZSgpKTsKKyAgICBwYWdlICs9IG51bWJlclRvSFRNTFRyKCJzaG91bGRS
ZXBvcnRMb3dNZW1vcnlUb1VzZXIiLCBzZXR0aW5ncy0+c2hvdWxkUmVwb3J0TG93TWVtb3J5VG9V
c2VyKCkpOworICAgIHBhZ2UgKz0gbnVtYmVyVG9IVE1MVHIoIm51bWJlck9mQmFja2luZ1N0b3Jl
VGlsZXMiLCBzZXR0aW5ncy0+bnVtYmVyT2ZCYWNraW5nU3RvcmVUaWxlcygpKTsKKyAgICBwYWdl
ICs9IG51bWJlclRvSFRNTFRyKCJtYXhpbXVtTnVtYmVyT2ZCYWNraW5nLi4uQWNyb3NzUHJvY2Vz
c2VzIiwgc2V0dGluZ3MtPm1heGltdW1OdW1iZXJPZkJhY2tpbmdTdG9yZVRpbGVzQWNyb3NzUHJv
Y2Vzc2VzKCkpOworICAgIHBhZ2UgKz0gbnVtYmVyVG9IVE1MVHIoInRhYnNTdXBwb3J0ZWRCeUNs
aWVudCIsIHNldHRpbmdzLT50YWJzU3VwcG9ydGVkQnlDbGllbnQoKSk7CisgICAgcGFnZSArPSBu
dW1iZXJUb0hUTUxUcigiY29udGV4dE1lbnVFbmFibGVkIiwgc2V0dGluZ3MtPmNvbnRleHRNZW51
RW5hYmxlZCgpKTsKKyAgICBwYWdlICs9IG51bWJlclRvSFRNTFRyKCJzZWxlY3Rpb25FbmFibGVk
Iiwgc2V0dGluZ3MtPnNlbGVjdGlvbkVuYWJsZWQoKSk7CisgICAgcGFnZSArPSBudW1iZXJUb0hU
TUxUcigiZmluZUN1cnNvckNvbnRyb2xFbmFibGVkIiwgc2V0dGluZ3MtPmZpbmVDdXJzb3JDb250
cm9sRW5hYmxlZCgpKTsKKyAgICBwYWdlICs9IG51bWJlclRvSFRNTFRyKCJhbHdheXNTaG93S2V5
Ym9hcmRPbkZvY3VzIiwgc2V0dGluZ3MtPmFsd2F5c1Nob3dLZXlib2FyZE9uRm9jdXMoKSk7Cisg
ICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigiYWxsb3dDZW50ZXJTY3JvbGxBZGp1c3RtZW50Rm9y
SW5wdXRGaWVsZHMiLCBzZXR0aW5ncy0+YWxsb3dDZW50ZXJTY3JvbGxBZGp1c3RtZW50Rm9ySW5w
dXRGaWVsZHMoKSk7CisgICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigidW5yZXN0cmljdGVkUmVz
aXplRXZlbnRzIiwgc2V0dGluZ3MtPnVucmVzdHJpY3RlZFJlc2l6ZUV2ZW50cygpKTsKKyAgICBw
YWdlICs9IG51bWJlclRvSFRNTFRyKCJpc0JyaWRnZUJyb3dzZXIiLCBzZXR0aW5ncy0+aXNCcmlk
Z2VCcm93c2VyKCkpOworICAgIHBhZ2UgKz0gbnVtYmVyVG9IVE1MVHIoImlzV2ViR0xTdXBwb3J0
ZWQiLCBzZXR0aW5ncy0+aXNXZWJHTFN1cHBvcnRlZCgpKTsKKyAgICBwYWdlICs9IG51bWJlclRv
SFRNTFRyKCJzaG93SW1hZ2VMb2NhdGlvbk9wdGlvbnNJbkdDTSIsIHNldHRpbmdzLT5zaG93SW1h
Z2VMb2NhdGlvbk9wdGlvbnNJbkdDTSgpKTsKKyAgICBwYWdlICs9IG51bWJlclRvSFRNTFRyKCJm
b3JjZUdMRVMyV2luZG93VXNhZ2UiLCBzZXR0aW5ncy0+Zm9yY2VHTEVTMldpbmRvd1VzYWdlKCkp
OworICAgIHBhZ2UgKz0gbnVtYmVyVG9IVE1MVHIoIm1heENsaWNrYWJsZVNwZWVkIiwgc2V0dGlu
Z3MtPm1heENsaWNrYWJsZVNwZWVkKCkpOworICAgIHBhZ2UgKz0gbnVtYmVyVG9IVE1MVHIoIm1h
eEppdHRlclJhZGl1c0NsaWNrIiwgc2V0dGluZ3MtPm1heEppdHRlclJhZGl1c0NsaWNrKCkpOwor
ICAgIHBhZ2UgKz0gbnVtYmVyVG9IVE1MVHIoIm1heEppdHRlclJhZGl1c1RhcCIsIHNldHRpbmdz
LT5tYXhKaXR0ZXJSYWRpdXNUYXAoKSk7CisgICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigibWF4
Sml0dGVyUmFkaXVzU2luZ2xlVG91Y2hNb3ZlIiwgc2V0dGluZ3MtPm1heEppdHRlclJhZGl1c1Np
bmdsZVRvdWNoTW92ZSgpKTsKKyAgICBwYWdlICs9IG51bWJlclRvSFRNTFRyKCJtYXhKaXR0ZXJS
YWRpdXNUb3VjaEhvbGQiLCBzZXR0aW5ncy0+bWF4Sml0dGVyUmFkaXVzVG91Y2hIb2xkKCkpOwor
ICAgIHBhZ2UgKz0gbnVtYmVyVG9IVE1MVHIoIm1heEppdHRlclJhZGl1c0hhbmRsZURyYWciLCBz
ZXR0aW5ncy0+bWF4Sml0dGVyUmFkaXVzSGFuZGxlRHJhZygpKTsKKyAgICBwYWdlICs9IG51bWJl
clRvSFRNTFRyKCJtYXhKaXR0ZXJSYWRpdXNUYXBIaWdobGlnaHQiLCBzZXR0aW5ncy0+bWF4Sml0
dGVyUmFkaXVzVGFwSGlnaGxpZ2h0KCkpOworICAgIHBhZ2UgKz0gbnVtYmVyVG9IVE1MVHIoIm1h
eEppdHRlckRpc3RhbmNlQ2xpY2siLCBzZXR0aW5ncy0+bWF4Sml0dGVyRGlzdGFuY2VDbGljaygp
KTsKKyAgICBwYWdlICs9IG51bWJlclRvSFRNTFRyKCJtYXhKaXR0ZXJEaXN0YW5jZVRhcCIsIHNl
dHRpbmdzLT5tYXhKaXR0ZXJEaXN0YW5jZVRhcCgpKTsKKyAgICBwYWdlICs9IG51bWJlclRvSFRN
TFRyKCJtYXhKaXR0ZXJEaXN0YW5jZVNpbmdsZVRvdWNoTW92ZSIsIHNldHRpbmdzLT5tYXhKaXR0
ZXJEaXN0YW5jZVNpbmdsZVRvdWNoTW92ZSgpKTsKKyAgICBwYWdlICs9IG51bWJlclRvSFRNTFRy
KCJtYXhKaXR0ZXJEaXN0YW5jZVRvdWNoSG9sZCIsIHNldHRpbmdzLT5tYXhKaXR0ZXJEaXN0YW5j
ZVRvdWNoSG9sZCgpKTsKKyAgICBwYWdlICs9IG51bWJlclRvSFRNTFRyKCJtYXhKaXR0ZXJEaXN0
YW5jZVRhcEhpZ2hsaWdodCIsIHNldHRpbmdzLT5tYXhKaXR0ZXJEaXN0YW5jZVRhcEhpZ2hsaWdo
dCgpKTsKKyAgICBwYWdlICs9IG51bWJlclRvSFRNTFRyKCJtYXhKaXR0ZXJEaXN0YW5jZUhhbmRs
ZURyYWciLCBzZXR0aW5ncy0+bWF4Sml0dGVyRGlzdGFuY2VIYW5kbGVEcmFnKCkpOworICAgIHBh
Z2UgKz0gbnVtYmVyVG9IVE1MVHIoInRvcEZhdEZpbmdlclBhZGRpbmciLCBzZXR0aW5ncy0+dG9w
RmF0RmluZ2VyUGFkZGluZygpKTsKKyAgICBwYWdlICs9IG51bWJlclRvSFRNTFRyKCJyaWdodEZh
dEZpbmdlclBhZGRpbmciLCBzZXR0aW5ncy0+cmlnaHRGYXRGaW5nZXJQYWRkaW5nKCkpOworICAg
IHBhZ2UgKz0gbnVtYmVyVG9IVE1MVHIoImJvdHRvbUZhdEZpbmdlclBhZGRpbmciLCBzZXR0aW5n
cy0+Ym90dG9tRmF0RmluZ2VyUGFkZGluZygpKTsKKyAgICBwYWdlICs9IG51bWJlclRvSFRNTFRy
KCJtYXhTZWxlY3Rpb25OZWNrSGVpZ2h0Iiwgc2V0dGluZ3MtPm1heFNlbGVjdGlvbk5lY2tIZWln
aHQoKSk7CisgICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigibGVmdEZhdEZpbmdlclBhZGRpbmci
LCBzZXR0aW5ncy0+bGVmdEZhdEZpbmdlclBhZGRpbmcoKSk7CisKKyAgICBWZWN0b3I8U3RyaW5n
PiB0cnVlTGlzdCwgZmFsc2VMaXN0OworICAgICNpbmNsdWRlICJBYm91dERhdGFFbmFibGVGZWF0
dXJlcy5jcHAiCisgICAgcGFnZSArPSBTdHJpbmcoIjwvdGFibGU+PC9kaXY+PGJyPjxkaXYgY2xh
c3M9J2JveCc+PGRpdiBjbGFzcz0nYm94LXRpdGxlJz5XZWJLaXQgRmVhdHVyZXMgKEVOQUJMRV8p
PC9kaXY+PHRhYmxlIGNsYXNzPSdmaXhlZC10YWJsZSc+Iik7CisKKyAgICBwYWdlICs9IHdyaXRl
RmVhdHVyZXModHJ1ZUxpc3QsIGZhbHNlTGlzdCk7CisKKyAgICB0cnVlTGlzdC5jbGVhcigpOwor
ICAgIGZhbHNlTGlzdC5jbGVhcigpOworICAgICNpbmNsdWRlICJBYm91dERhdGFIYXZlRmVhdHVy
ZXMuY3BwIgorICAgIHBhZ2UgKz0gU3RyaW5nKCI8L3RhYmxlPjwvZGl2Pjxicj48ZGl2IGNsYXNz
PSdib3gnPjxkaXYgY2xhc3M9J2JveC10aXRsZSc+V2ViS2l0IEZlYXR1cmVzIChIQVZFXyk8L2Rp
dj48dGFibGUgY2xhc3M9J2ZpeGVkLXRhYmxlJz4iKTsKKworICAgIHBhZ2UgKz0gd3JpdGVGZWF0
dXJlcyh0cnVlTGlzdCwgZmFsc2VMaXN0KTsKKworICAgIHRydWVMaXN0LmNsZWFyKCk7CisgICAg
ZmFsc2VMaXN0LmNsZWFyKCk7CisgICAgI2luY2x1ZGUgIkFib3V0RGF0YVVzZUZlYXR1cmVzLmNw
cCIKKyAgICBwYWdlICs9IFN0cmluZygiPC90YWJsZT48L2Rpdj48YnI+PGRpdiBjbGFzcz0nYm94
Jz48ZGl2IGNsYXNzPSdib3gtdGl0bGUnPldlYktpdCBGZWF0dXJlcyAoVVNFXyk8L2Rpdj48dGFi
bGUgY2xhc3M9J2ZpeGVkLXRhYmxlJz4iKTsKKyAgICBwYWdlICs9IHdyaXRlRmVhdHVyZXModHJ1
ZUxpc3QsIGZhbHNlTGlzdCk7CisgICAgcGFnZSArPSBTdHJpbmcoIjwvdGFibGU+PC9kaXY+PC9i
b2R5PjwvaHRtbD4iKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIHBhZ2U7Cit9CisKK3N0YXRpYyBT
dHJpbmcgY2FjaGVUeXBlU3RhdGlzdGljVG9IVE1MVHIoY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlv
biwgY29uc3QgTWVtb3J5Q2FjaGU6OlR5cGVTdGF0aXN0aWMmIHN0YXRpc3RpYykKK3sKKyAgICBj
b25zdCBpbnQgc19raWxvQnl0ZSA9IDEwMjQ7CisgICAgcmV0dXJuIFN0cmluZygiPHRyPjx0ZD4i
KSArIGRlc2NyaXB0aW9uICsgIjwvdGQ+IgorICAgICAgICArICI8dGQ+IiArIFN0cmluZzo6bnVt
YmVyKHN0YXRpc3RpYy5jb3VudCkgKyAiPC90ZD4iCisgICAgICAgICsgIjx0ZD4iICsgU3RyaW5n
OjpudW1iZXIoc3RhdGlzdGljLnNpemUgLyBzX2tpbG9CeXRlKSArICI8L3RkPiIKKyAgICAgICAg
KyAiPHRkPiIgKyBTdHJpbmc6Om51bWJlcihzdGF0aXN0aWMubGl2ZVNpemUgLyBzX2tpbG9CeXRl
KSArICI8L3RkPiIKKyAgICAgICAgKyAiPHRkPiIgKyBTdHJpbmc6Om51bWJlcihzdGF0aXN0aWMu
ZGVjb2RlZFNpemUgLyBzX2tpbG9CeXRlKSArICI8L3RkPiIKKyAgICAgICAgKyAiPC90cj4iOwor
fQorCitzdGF0aWMgdm9pZCBkdW1wSlNDVHlwZUNvdW50U2V0VG9UYWJsZUhUTUwoU3RyaW5nJiB0
YWJsZUhUTUwsIEpTQzo6VHlwZUNvdW50U2V0KiB0eXBlQ291bnRTZXQpCit7CisgICAgaWYgKCF0
eXBlQ291bnRTZXQpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoSlNDOjpUeXBlQ291bnRT
ZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSB0eXBlQ291bnRTZXQtPmJlZ2luKCk7IGl0ZXIgIT0g
dHlwZUNvdW50U2V0LT5lbmQoKTsgKytpdGVyKQorICAgICAgICB0YWJsZUhUTUwgKz0gbnVtYmVy
VG9IVE1MVHIoaXRlci0+Zmlyc3QsIGl0ZXItPnNlY29uZCk7Cit9CisKK1N0cmluZyBtZW1vcnlQ
YWdlKCkKK3sKKyAgICBTdHJpbmcgcGFnZTsKKworICAgIHBhZ2UgPSB3cml0ZUhlYWRlcigiTWVt
b3J5IikKKyAgICArICI8ZGl2IGNsYXNzPVwiYm94XCI+PGRpdiBjbGFzcz1cImJveC10aXRsZVwi
PkNhY2hlIEluZm9ybWF0aW9uPGJyPjxkaXYgc3R5bGU9J2ZvbnQtc2l6ZToxMXB4O2NvbG9yOiNB
OEE4QTgnPlNpemUsIExpdmluZywgYW5kIERlY29kZWQgYXJlIGV4cHJlc3NlZCBpbiBLQi48L2Rp
dj48YnI+PC9kaXY+PHRhYmxlIGNsYXNzPSdmaXhlZC10YWJsZSc+PGNvbCB3aWR0aD03NSU+PGNv
bCB3aWR0aD0yNSU+IjsKKworICAgIC8vIGdlbmVyYXRlIGNhY2hlIGluZm9ybWF0aW9uCisgICAg
TWVtb3J5Q2FjaGUqIGNhY2hlSW5jID0gbWVtb3J5Q2FjaGUoKTsKKyAgICBNZW1vcnlDYWNoZTo6
U3RhdGlzdGljcyBjYWNoZVN0YXQgPSBjYWNoZUluYy0+Z2V0U3RhdGlzdGljcygpOworCisgICAg
cGFnZSArPSAiPHRyPiA8dGggYWxpZ249bGVmdD5JdGVtPC90aD4gPHRoIGFsaWduPWxlZnQ+Q291
bnQ8L3RoPiA8dGggYWxpZ249bGVmdD5TaXplPC90aD4gPHRoIGFsaWduPWxlZnQ+TGl2aW5nPC90
aD4gPHRoIGFsaWduPWxlZnQ+RGVjb2RlZDwvdGg+PC90cj4iOworCisgICAgTWVtb3J5Q2FjaGU6
OlR5cGVTdGF0aXN0aWMgdG90YWw7CisgICAgdG90YWwuY291bnQgPSBjYWNoZVN0YXQuaW1hZ2Vz
LmNvdW50ICsgY2FjaGVTdGF0LmNzc1N0eWxlU2hlZXRzLmNvdW50CisgICAgICAgICAgICArIGNh
Y2hlU3RhdC5zY3JpcHRzLmNvdW50ICsgY2FjaGVTdGF0LnhzbFN0eWxlU2hlZXRzLmNvdW50ICsg
Y2FjaGVTdGF0LmZvbnRzLmNvdW50OworICAgIHRvdGFsLnNpemUgPSBjYWNoZUluYy0+dG90YWxT
aXplKCk7CisgICAgdG90YWwubGl2ZVNpemUgPSBjYWNoZVN0YXQuaW1hZ2VzLmxpdmVTaXplICsg
Y2FjaGVTdGF0LmNzc1N0eWxlU2hlZXRzLmxpdmVTaXplCisgICAgICAgICAgICArIGNhY2hlU3Rh
dC5zY3JpcHRzLmxpdmVTaXplICsgY2FjaGVTdGF0LnhzbFN0eWxlU2hlZXRzLmxpdmVTaXplICsg
Y2FjaGVTdGF0LmZvbnRzLmxpdmVTaXplOworICAgIHRvdGFsLmRlY29kZWRTaXplID0gY2FjaGVT
dGF0LmltYWdlcy5kZWNvZGVkU2l6ZQorICAgICAgICAgICAgKyBjYWNoZVN0YXQuY3NzU3R5bGVT
aGVldHMuZGVjb2RlZFNpemUgKyBjYWNoZVN0YXQuc2NyaXB0cy5kZWNvZGVkU2l6ZQorICAgICAg
ICAgICAgKyBjYWNoZVN0YXQueHNsU3R5bGVTaGVldHMuZGVjb2RlZFNpemUgKyBjYWNoZVN0YXQu
Zm9udHMuZGVjb2RlZFNpemU7CisKKyAgICBwYWdlICs9IGNhY2hlVHlwZVN0YXRpc3RpY1RvSFRN
TFRyKCJUb3RhbCIsIHRvdGFsKTsKKyAgICBwYWdlICs9IGNhY2hlVHlwZVN0YXRpc3RpY1RvSFRN
TFRyKCJJbWFnZXMiLCBjYWNoZVN0YXQuaW1hZ2VzKTsKKyAgICBwYWdlICs9IGNhY2hlVHlwZVN0
YXRpc3RpY1RvSFRNTFRyKCJDU1MgU3R5bGUgU2hlZXRzIiwgY2FjaGVTdGF0LmNzc1N0eWxlU2hl
ZXRzKTsKKyAgICBwYWdlICs9IGNhY2hlVHlwZVN0YXRpc3RpY1RvSFRNTFRyKCJTY3JpcHRzIiwg
Y2FjaGVTdGF0LnNjcmlwdHMpOworI2lmIEVOQUJMRShYU0xUKQorICAgIHBhZ2UgKz0gY2FjaGVU
eXBlU3RhdGlzdGljVG9IVE1MVHIoIlhTTCBTdHlsZSBTaGVldHMiLCBjYWNoZVN0YXQueHNsU3R5
bGVTaGVldHMpOworI2VuZGlmCisgICAgcGFnZSArPSBjYWNoZVR5cGVTdGF0aXN0aWNUb0hUTUxU
cigiRm9udHMiLCBjYWNoZVN0YXQuZm9udHMpOworCisgICAgcGFnZSArPSAiPC90YWJsZT48L2Rp
dj48YnI+IjsKKworI2lmICFkZWZpbmVkKFBVQkxJQ19CVUlMRCkgfHwgIVBVQkxJQ19CVUlMRAor
CisgICAgLy8gSlMgZW5naW5lIG1lbW9yeSB1c2FnZS4KKyAgICBKU0M6Okdsb2JhbE1lbW9yeVN0
YXRpc3RpY3MganNjTWVtb3J5U3RhdCA9IEpTQzo6Z2xvYmFsTWVtb3J5U3RhdGlzdGljcygpOwor
ICAgIEpTQzo6SGVhcCYgbWFpbkhlYXAgPSBKU0RPTVdpbmRvdzo6Y29tbW9uSlNHbG9iYWxEYXRh
KCktPmhlYXA7CisgICAgT3duUHRyPEpTQzo6VHlwZUNvdW50U2V0PiBvYmplY3RUeXBlQ291bnRz
ID0gbWFpbkhlYXAub2JqZWN0VHlwZUNvdW50cygpOworICAgIE93blB0cjxKU0M6OlR5cGVDb3Vu
dFNldD4gcHJvdGVjdGVkT2JqZWN0VHlwZUNvdW50cyA9IG1haW5IZWFwLnByb3RlY3RlZE9iamVj
dFR5cGVDb3VudHMoKTsKKworICAgIC8vIE1hbGxvYyBpbmZvLgorICAgIHN0cnVjdCBtYWxsaW5m
byBtYWxsb2NJbmZvID0gbWFsbGluZm8oKTsKKworICAgIHBhZ2UgKz0gIjxkaXYgY2xhc3M9J2Jv
eCc+PGRpdiBjbGFzcz0nYm94LXRpdGxlJz5Qcm9jZXNzIG1lbW9yeSB1c2FnZSBzdW1tYXJ5PC9k
aXY+PHRhYmxlIGNsYXNzPSdmaXhlZC10YWJsZSc+PGNvbCB3aWR0aD03NSU+PGNvbCB3aWR0aD0y
NSU+IjsKKworICAgIHBhZ2UgKz0gbnVtYmVyVG9IVE1MVHIoIlRvdGFsIG1lbW9yeSB1c2FnZSAo
bWFsbG9jICsgSlNDKSIsIG1hbGxvY0luZm8udXNtYmxrcyArIG1hbGxvY0luZm8udW9yZGJsa3Mg
KyBqc2NNZW1vcnlTdGF0LnN0YWNrQnl0ZXMgKyBqc2NNZW1vcnlTdGF0LkpJVEJ5dGVzICsgbWFp
bkhlYXAuY2FwYWNpdHkoKSk7CisKKyAgICBzdHJ1Y3Qgc3RhdCBwcm9jZXNzSW5mbzsKKyAgICBp
ZiAoIXN0YXQoU3RyaW5nOjpmb3JtYXQoIi9wcm9jLyV1L2FzIiwgZ2V0cGlkKCkpLmxhdGluMSgp
LmRhdGEoKSwgJnByb2Nlc3NJbmZvKSkKKyAgICAgICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigi
VG90YWwgbWFwcGVkIG1lbW9yeSIsIHByb2Nlc3NJbmZvLnN0X3NpemUpOworCisgICAgcGFnZSAr
PSAiPC90YWJsZT48L2Rpdj48YnI+IjsKKworICAgIHBhZ2UgKz0gIjxkaXYgY2xhc3M9J2JveCc+
PGRpdiBjbGFzcz0nYm94LXRpdGxlJz5KUyBlbmdpbmUgbWVtb3J5IHVzYWdlPC9kaXY+PHRhYmxl
IGNsYXNzPSdmaXhlZC10YWJsZSc+PGNvbCB3aWR0aD03NSU+PGNvbCB3aWR0aD0yNSU+IjsKKwor
ICAgIHBhZ2UgKz0gbnVtYmVyVG9IVE1MVHIoIlN0YWNrIHNpemUiLCBqc2NNZW1vcnlTdGF0LnN0
YWNrQnl0ZXMpOworICAgIHBhZ2UgKz0gbnVtYmVyVG9IVE1MVHIoIkpJVCBtZW1vcnkgdXNhZ2Ui
LCBqc2NNZW1vcnlTdGF0LkpJVEJ5dGVzKTsKKyAgICBwYWdlICs9IG51bWJlclRvSFRNTFRyKCJN
YWluIGhlYXAgY2FwYWNpdHkiLCBtYWluSGVhcC5jYXBhY2l0eSgpKTsKKyAgICBwYWdlICs9IG51
bWJlclRvSFRNTFRyKCJNYWluIGhlYXAgc2l6ZSIsIG1haW5IZWFwLnNpemUoKSk7CisgICAgcGFn
ZSArPSBudW1iZXJUb0hUTUxUcigiT2JqZWN0IGNvdW50IiwgbWFpbkhlYXAub2JqZWN0Q291bnQo
KSk7CisgICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigiR2xvYmFsIG9iamVjdCBjb3VudCIsIG1h
aW5IZWFwLmdsb2JhbE9iamVjdENvdW50KCkpOworICAgIHBhZ2UgKz0gbnVtYmVyVG9IVE1MVHIo
IlByb3RlY3RlZCBvYmplY3QgY291bnQiLCBtYWluSGVhcC5wcm90ZWN0ZWRPYmplY3RDb3VudCgp
KTsKKyAgICBwYWdlICs9IG51bWJlclRvSFRNTFRyKCJQcm90ZWN0ZWQgZ2xvYmFsIG9iamVjdCBj
b3VudCIsIG1haW5IZWFwLnByb3RlY3RlZEdsb2JhbE9iamVjdENvdW50KCkpOworCisgICAgcGFn
ZSArPSAiPC90YWJsZT48L2Rpdj48YnI+IjsKKworICAgIHBhZ2UgKz0gIjxkaXYgY2xhc3M9J2Jv
eCc+PGRpdiBjbGFzcz0nYm94LXRpdGxlJz5KUyBvYmplY3QgdHlwZSBjb3VudHM8L2Rpdj48dGFi
bGUgY2xhc3M9J2ZpeGVkLXRhYmxlJz48Y29sIHdpZHRoPTc1JT48Y29sIHdpZHRoPTI1JT4iOwor
ICAgIGR1bXBKU0NUeXBlQ291bnRTZXRUb1RhYmxlSFRNTChwYWdlLCBvYmplY3RUeXBlQ291bnRz
LmdldCgpKTsKKyAgICBwYWdlICs9ICI8L3RhYmxlPjwvZGl2Pjxicj4iOworCisgICAgcGFnZSAr
PSAiPGRpdiBjbGFzcz0nYm94Jz48ZGl2IGNsYXNzPSdib3gtdGl0bGUnPkpTIHByb3RlY3RlZCBv
YmplY3QgdHlwZSBjb3VudHM8L2Rpdj48dGFibGUgY2xhc3M9J2ZpeGVkLXRhYmxlJz48Y29sIHdp
ZHRoPTc1JT48Y29sIHdpZHRoPTI1JT4iOworICAgIGR1bXBKU0NUeXBlQ291bnRTZXRUb1RhYmxl
SFRNTChwYWdlLCBwcm90ZWN0ZWRPYmplY3RUeXBlQ291bnRzLmdldCgpKTsKKyAgICBwYWdlICs9
ICI8L3RhYmxlPjwvZGl2Pjxicj4iOworCisgICAgcGFnZSArPSAiPGRpdiBjbGFzcz0nYm94Jz48
ZGl2IGNsYXNzPSdib3gtdGl0bGUnPk1hbGxvYyBJbmZvcm1hdGlvbjwvZGl2Pjx0YWJsZSBjbGFz
cz0nZml4ZWQtdGFibGUnPjxjb2wgd2lkdGg9NzUlPjxjb2wgd2lkdGg9MjUlPiI7CisKKyAgICBw
YWdlICs9IG51bWJlclRvSFRNTFRyKCJUb3RhbCBzcGFjZSBpbiB1c2UiLCBtYWxsb2NJbmZvLnVz
bWJsa3MgKyBtYWxsb2NJbmZvLnVvcmRibGtzKTsKKyAgICBwYWdlICs9IG51bWJlclRvSFRNTFRy
KCJUb3RhbCBzcGFjZSBpbiBmcmVlIGJsb2NrcyIsIG1hbGxvY0luZm8uZnNtYmxrcyArIG1hbGxv
Y0luZm8uZm9yZGJsa3MpOworICAgIHBhZ2UgKz0gbnVtYmVyVG9IVE1MVHIoIlNpemUgb2YgdGhl
IGFyZW5hIiwgbWFsbG9jSW5mby5hcmVuYSk7CisgICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigi
TnVtYmVyIG9mIGJpZyBibG9ja3MgaW4gdXNlIiwgbWFsbG9jSW5mby5vcmRibGtzKTsKKyAgICBw
YWdlICs9IG51bWJlclRvSFRNTFRyKCJOdW1iZXIgb2Ygc21hbGwgYmxvY2tzIGluIHVzZSIsIG1h
bGxvY0luZm8uc21ibGtzKTsKKyAgICBwYWdlICs9IG51bWJlclRvSFRNTFRyKCJOdW1iZXIgb2Yg
aGVhZGVyIGJsb2NrcyBpbiB1c2UiLCBtYWxsb2NJbmZvLmhibGtzKTsKKyAgICBwYWdlICs9IG51
bWJlclRvSFRNTFRyKCJTcGFjZSBpbiBoZWFkZXIgYmxvY2sgaGVhZGVycyIsIG1hbGxvY0luZm8u
aGJsa2hkKTsKKyAgICBwYWdlICs9IG51bWJlclRvSFRNTFRyKCJTcGFjZSBpbiBzbWFsbCBibG9j
a3MgaW4gdXNlIiwgbWFsbG9jSW5mby51c21ibGtzKTsKKyAgICBwYWdlICs9IG51bWJlclRvSFRN
TFRyKCJNZW1vcnkgaW4gZnJlZSBzbWFsbCBibG9ja3MiLCBtYWxsb2NJbmZvLmZzbWJsa3MpOwor
ICAgIHBhZ2UgKz0gbnVtYmVyVG9IVE1MVHIoIlNwYWNlIGluIGJpZyBibG9ja3MgaW4gdXNlIiwg
bWFsbG9jSW5mby51b3JkYmxrcyk7CisgICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigiTWVtb3J5
IGluIGZyZWUgYmlnIGJsb2NrcyIsIG1hbGxvY0luZm8uZm9yZGJsa3MpOworCisgICAgcGFnZSAr
PSAiPC90YWJsZT48L2Rpdj4iOworI2VuZGlmCisKKyAgICBwYWdlICs9ICI8L2JvZHk+PC9odG1s
PiI7CisgICAgcmV0dXJuIHBhZ2U7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorfSAvLyBu
YW1lc3BhY2UgQmxhY2tCZXJyeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L1dlYktpdFN1cHBvcnQvQWJvdXREYXRhLmggYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2Vi
S2l0U3VwcG9ydC9BYm91dERhdGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li44MDUwNTRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dl
YktpdFN1cHBvcnQvQWJvdXREYXRhLmgKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMCBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1B
ICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaWZuZGVmIEFib3V0RGF0YV9oCisjZGVmaW5lIEFi
b3V0RGF0YV9oCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorCituYW1lc3BhY2UgQmxh
Y2tCZXJyeSB7CituYW1lc3BhY2UgV2ViS2l0IHsKKworU3RyaW5nIGNvbmZpZ1BhZ2UoKTsKK1N0
cmluZyBtZW1vcnlQYWdlKCk7CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorfSAvLyBuYW1lc3Bh
Y2UgQmxhY2tCZXJyeQorCisjZW5kaWYgLy8gQWJvdXREYXRhX2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153824</attachid>
            <date>2012-07-23 11:56:04 -0700</date>
            <delta_ts>2012-07-23 12:00:51 -0700</delta_ts>
            <desc>move to a new place</desc>
            <filename>91541.patch</filename>
            <type>text/plain</type>
            <size>16398</size>
            <attacher name="Yong Li">yong.li.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCmluZGV4IGI1Njg2NzAuLjQ4
N2ExN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcApAQCAtMTks
OCArMTksNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKIAot
I2luY2x1ZGUgIkFib3V0RGF0YS5oIgotI2luY2x1ZGUgIkFib3V0VGVtcGxhdGUuaHRtbC5jcHAi
CiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCIKICNpbmNsdWRlICJBdXRvZmls
bE1hbmFnZXIuaCIKICNpbmNsdWRlICJCYWNrRm9yd2FyZENvbnRyb2xsZXIuaCIKQEAgLTE1Nyw4
ICsxNTUsNiBAQAogI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybU1vdXNlRXZlbnQuaD4KICNp
bmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1TY3JlZW4uaD4KICNpbmNsdWRlIDxCbGFja0JlcnJ5
UGxhdGZvcm1TZXR0aW5ncy5oPgotI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybVdlYktpdENy
ZWRpdHMuaD4KLSNpbmNsdWRlIDxCdWlsZEluZm9ybWF0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvQVBJQ2FzdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ29udGV4dFJl
Zi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmLmg+CkBAIC02MTksODQg
KzYxNSw2IEBAIHByaXZhdGU6CiAgICAgfQogfTsKIAotYm9vbCBXZWJQYWdlUHJpdmF0ZTo6bG9h
ZEFib3V0KGNvbnN0IGNoYXIqIGFib3V0VVJMKQotewotICAgIGlmIChzdHJuY2FzZWNtcChhYm91
dFVSTCwgImFib3V0OiIsIDYpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBGaXJz
dCA2IGNoYXJzIGFyZSAiYWJvdXQ6Ii4KLSAgICBTdHJpbmcgYWJvdXRXaGF0KGFib3V0VVJMICsg
Nik7Ci0KLSAgICBTdHJpbmcgcmVzdWx0OwotCi0gICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGFi
b3V0V2hhdCwgImNyZWRpdHMiKSkgewotICAgICAgICByZXN1bHQuYXBwZW5kKHdyaXRlSGVhZGVy
KCJDcmVkaXRzIikpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZygiPHN0eWxlPiAuYWJv
dXQge3BhZGRpbmc6MTRweDt9IDwvc3R5bGU+IikpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0
cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V0VCS0lUQ1JFRElUUykpOwotICAgICAgICByZXN1
bHQuYXBwZW5kKFN0cmluZygiPC9ib2R5PjwvaHRtbD4iKSk7Ci0gICAgfSBlbHNlIGlmIChhYm91
dFdoYXQuc3RhcnRzV2l0aCgiY2FjaGU/cXVlcnk9IiwgZmFsc2UpKSB7Ci0gICAgICAgIEJsYWNr
QmVycnk6OlBsYXRmb3JtOjpDbGllbnQqIGNsaWVudCA9IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpD
bGllbnQ6OmdldCgpOwotICAgICAgICBBU1NFUlQoY2xpZW50KTsKLSAgICAgICAgc3RkOjpzdHJp
bmcga2V5KGFib3V0V2hhdC5zdWJzdHJpbmcoMTIsIGFib3V0V2hhdC5sZW5ndGgoKSAtIDEyKS51
dGY4KCkuZGF0YSgpKTsgLy8gMTIgaXMgbGVuZ3RoIG9mICJjYWNoZT9xdWVyeT0iLgotICAgICAg
ICByZXN1bHQuYXBwZW5kKFN0cmluZygiPGh0bWw+PGhlYWQ+PHRpdGxlPkJsYWNrQmVycnkgQnJv
d3NlciBEaXNrIENhY2hlPC90aXRsZT48L2hlYWQ+PGJvZHk+IikpOwotICAgICAgICByZXN1bHQu
YXBwZW5kKFN0cmluZyhrZXkuZGF0YSgpKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5n
KCI8aHI+IikpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZyhjbGllbnQtPmdlbmVyYXRl
SHRtbEZyYWdtZW50Rm9yQ2FjaGVIZWFkZXJzKGtleSkuZGF0YSgpKSk7Ci0gICAgICAgIHJlc3Vs
dC5hcHBlbmQoU3RyaW5nKCI8L2JvZHk+PC9odG1sPiIpKTsKLSAgICB9IGVsc2UgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKGFib3V0V2hhdCwgImNhY2hlIikpIHsKLSAgICAgICAgQmxhY2tCZXJyeTo6
UGxhdGZvcm06OkNsaWVudCogY2xpZW50ID0gQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNsaWVudDo6
Z2V0KCk7Ci0gICAgICAgIEFTU0VSVChjbGllbnQpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0
cmluZygiPGh0bWw+PGhlYWQ+PHRpdGxlPkJsYWNrQmVycnkgQnJvd3NlciBEaXNrIENhY2hlPC90
aXRsZT48L2hlYWQ+PGJvZHk+IikpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZyhjbGll
bnQtPmdlbmVyYXRlSHRtbEZyYWdtZW50Rm9yQ2FjaGVLZXlzKCkuZGF0YSgpKSk7Ci0gICAgICAg
IHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8L2JvZHk+PC9odG1sPiIpKTsKLSNpZiAhZGVmaW5lZChQ
VUJMSUNfQlVJTEQpIHx8ICFQVUJMSUNfQlVJTEQKLSAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKGFib3V0V2hhdCwgImNhY2hlL2Rpc2FibGUiKSkgewotICAgICAgICBCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6Q2xpZW50KiBjbGllbnQgPSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q2xpZW50
OjpnZXQoKTsKLSAgICAgICAgQVNTRVJUKGNsaWVudCk7Ci0gICAgICAgIGNsaWVudC0+c2V0RGlz
a0NhY2hlRW5hYmxlZChmYWxzZSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8aHRt
bD48aGVhZD48dGl0bGU+QmxhY2tCZXJyeSBCcm93c2VyIERpc2sgQ2FjaGU8L3RpdGxlPjwvaGVh
ZD48Ym9keT5IdHRwIGRpc2sgY2FjaGUgaXMgZGlzYWJsZWQuPC9ib2R5PjwvaHRtbD4iKSk7Ci0g
ICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhYm91dFdoYXQsICJjYWNoZS9lbmFibGUi
KSkgewotICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q2xpZW50KiBjbGllbnQgPSBCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6Q2xpZW50OjpnZXQoKTsKLSAgICAgICAgQVNTRVJUKGNsaWVudCk7
Ci0gICAgICAgIGNsaWVudC0+c2V0RGlza0NhY2hlRW5hYmxlZCh0cnVlKTsKLSAgICAgICAgcmVz
dWx0LmFwcGVuZChTdHJpbmcoIjxodG1sPjxoZWFkPjx0aXRsZT5CbGFja0JlcnJ5IEJyb3dzZXIg
RGlzayBDYWNoZTwvdGl0bGU+PC9oZWFkPjxib2R5Pkh0dHAgZGlzayBjYWNoZSBpcyBlbmFibGVk
LjwvYm9keT48L2h0bWw+IikpOwotICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYWJv
dXRXaGF0LCAiY29va2llIikpIHsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmcoIjxodG1s
PjxoZWFkPjx0aXRsZT5CbGFja0JlcnJ5IEJyb3dzZXIgY29va2llIGluZm9ybWF0aW9uPC90aXRs
ZT48L2hlYWQ+PGJvZHk+IikpOwotICAgICAgICByZXN1bHQuYXBwZW5kKGNvb2tpZU1hbmFnZXIo
KS5nZW5lcmF0ZUh0bWxGcmFnbWVudEZvckNvb2tpZXMoKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBl
bmQoU3RyaW5nKCI8L2JvZHk+PC9odG1sPiIpKTsKLSAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKGFib3V0V2hhdCwgInZlcnNpb24iKSkgewotICAgICAgICByZXN1bHQuYXBwZW5kKHdy
aXRlSGVhZGVyKCJWZXJzaW9uIikpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZygiPGRp
diBjbGFzcz0nYm94Jz48ZGl2IGNsYXNzPSdib3gtdGl0bGUnPkJ1aWxkIFRpbWU8L2Rpdj48YnI+
IikpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
QlVJTERUSU1FKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8L2Rpdj48YnI+PGRp
diBzdHlsZT0nZm9udC1zaXplOjEwcHg7dGV4dC1hbGlnbjpjZW50ZXI7Jz5BbHNvIHNlZSB0aGUg
PEEgaHJlZj0nYWJvdXQ6YnVpbGQnPmJ1aWxkIGluZm9ybWF0aW9uPC9BPi48L2JvZHk+PC9odG1s
PiIpKTsKLSAgICB9IGVsc2UgaWYgKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpkZWJ1Z1NldHRpbmco
KSA+IDAgJiYgZXF1YWxJZ25vcmluZ0Nhc2UoYWJvdXRXaGF0LCAiY29uZmlnIikpIHsKLSAgICAg
ICAgcmVzdWx0ID0gY29uZmlnUGFnZSgpOwotICAgIH0gZWxzZSBpZiAoQmxhY2tCZXJyeTo6UGxh
dGZvcm06OmRlYnVnU2V0dGluZygpID4gMCAmJiBlcXVhbElnbm9yaW5nQ2FzZShhYm91dFdoYXQs
ICJidWlsZCIpKSB7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQod3JpdGVIZWFkZXIoIkJ1aWxkIikp
OwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZygiPGRpdiBjbGFzcz0nYm94Jz48ZGl2IGNs
YXNzPSdib3gtdGl0bGUnPkJhc2ljPC9kaXY+PHRhYmxlPiIpKTsKLSAgICAgICAgcmVzdWx0LmFw
cGVuZChTdHJpbmcoIjx0cj48dGQ+QnVpbHQgT246ICA8L3RkPjx0ZD4iKSk7Ci0gICAgICAgIHJl
c3VsdC5hcHBlbmQoU3RyaW5nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpCVUlMRENPTVBVVEVSKSk7
Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8L3RkPjwvdHI+IikpOwotICAgICAgICBy
ZXN1bHQuYXBwZW5kKFN0cmluZygiPHRyPjx0ZD5CdWlsZCBVc2VyOiAgPC90ZD48dGQ+IikpOwot
ICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6QlVJTERV
U0VSKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8L3RkPjwvdHI+IikpOwotICAg
ICAgICByZXN1bHQuYXBwZW5kKFN0cmluZygiPHRyPjx0ZD5CdWlsZCBUaW1lOiAgPC90ZD48dGQ+
IikpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
QlVJTERUSU1FKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8L3RhYmxlPjwvZGl2
Pjxicj4iKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpCVUlMRElORk9fV0VCS0lUKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpCVUlMRElORk9fUExBVEZPUk0pKTsKLSAgICAgICAgcmVzdWx0
LmFwcGVuZChTdHJpbmcoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkJVSUxESU5GT19MSUJXRUJWSUVX
KSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8L2JvZHk+PC9odG1sPiIpKTsKLSAg
ICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGFib3V0V2hhdCwgIm1lbW9yeSIpKSB7Ci0g
ICAgICAgIHJlc3VsdCA9IG1lbW9yeVBhZ2UoKTsKLSNlbmRpZgotICAgIH0gZWxzZQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBsb2FkU3RyaW5nKHJlc3VsdC5sYXRpbjEoKS5kYXRhKCks
IGFib3V0VVJMLCAidGV4dC9odG1sIik7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIHZvaWQgV2Vi
UGFnZVByaXZhdGU6OmxvYWQoY29uc3QgY2hhciogdXJsLCBjb25zdCBjaGFyKiBuZXR3b3JrVG9r
ZW4sIGNvbnN0IGNoYXIqIG1ldGhvZCwgUGxhdGZvcm06Ok5ldHdvcmtSZXF1ZXN0OjpDYWNoZVBv
bGljeSBjYWNoZVBvbGljeSwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIGNv
bnN0IGNoYXIqIGNvbnN0KiBoZWFkZXJzLCBzaXplX3QgaGVhZGVyc0xlbmd0aCwgYm9vbCBpc0lu
aXRpYWwsIGJvb2wgbXVzdEhhbmRsZUludGVybmFsbHksIGJvb2wgZm9yY2VEb3dubG9hZCwgY29u
c3QgY2hhciogb3ZlcnJpZGVDb250ZW50VHlwZSwgY29uc3QgY2hhciogc3VnZ2VzdGVkU2F2ZU5h
bWUpCiB7CiAgICAgc3RvcEN1cnJlbnRMb2FkKCk7CkBAIC03NDcsOCArNjY1LDYgQEAgdm9pZCBX
ZWJQYWdlUHJpdmF0ZTo6bG9hZChjb25zdCBjaGFyKiB1cmwsIGNvbnN0IGNoYXIqIG5ldHdvcmtU
b2tlbiwgY29uc3QgY2hhcioKIAogdm9pZCBXZWJQYWdlOjpsb2FkKGNvbnN0IGNoYXIqIHVybCwg
Y29uc3QgY2hhciogbmV0d29ya1Rva2VuLCBib29sIGlzSW5pdGlhbCkKIHsKLSAgICBpZiAoZC0+
bG9hZEFib3V0KHVybCkpCi0gICAgICAgIHJldHVybjsKICAgICBkLT5sb2FkKHVybCwgbmV0d29y
a1Rva2VuLCAiR0VUIiwgUGxhdGZvcm06Ok5ldHdvcmtSZXF1ZXN0OjpVc2VQcm90b2NvbENhY2hl
UG9saWN5LCAwLCAwLCAwLCAwLCBpc0luaXRpYWwsIGZhbHNlKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlX3AuaCBiL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9BcGkvV2ViUGFnZV9wLmgKaW5kZXggYjRjYTkxNy4uNGNhNzZkMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlX3AuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VfcC5oCkBAIC05Nyw3ICs5Nyw2IEBAIHB1
YmxpYzoKICAgICBib29sIGhhbmRsZU1vdXNlRXZlbnQoV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2
ZW50Jik7CiAgICAgYm9vbCBoYW5kbGVXaGVlbEV2ZW50KFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxF
dmVudCYpOwogCi0gICAgYm9vbCBsb2FkQWJvdXQoY29uc3QgY2hhciogYWJvdXRVUkwpOwogICAg
IHZvaWQgbG9hZChjb25zdCBjaGFyKiB1cmwsIGNvbnN0IGNoYXIqIG5ldHdvcmtUb2tlbiwgY29u
c3QgY2hhciogbWV0aG9kLCBQbGF0Zm9ybTo6TmV0d29ya1JlcXVlc3Q6OkNhY2hlUG9saWN5LCBj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgY29uc3QgY2hhciogY29uc3QqIGhl
YWRlcnMsIHNpemVfdCBoZWFkZXJzTGVuZ3RoLCBib29sIGlzSW5pdGlhbCwgYm9vbCBtdXN0SGFu
ZGxlSW50ZXJuYWxseSA9IGZhbHNlLCBib29sIGZvcmNlRG93bmxvYWQgPSBmYWxzZSwgY29uc3Qg
Y2hhciogb3ZlcnJpZGVDb250ZW50VHlwZSA9ICIiLCBjb25zdCBjaGFyKiBzdWdnZXN0ZWRTYXZl
TmFtZSA9ICIiKTsKICAgICB2b2lkIGxvYWRTdHJpbmcoY29uc3QgY2hhciogc3RyaW5nLCBjb25z
dCBjaGFyKiBiYXNlVVJMLCBjb25zdCBjaGFyKiBtaW1lVHlwZSwgY29uc3QgY2hhciogZmFpbGlu
Z1VSTCA9IDApOwogICAgIGJvb2wgZXhlY3V0ZUphdmFTY3JpcHQoY29uc3QgY2hhciogc2NyaXB0
LCBKYXZhU2NyaXB0RGF0YVR5cGUmIHJldHVyblR5cGUsIFdlYlN0cmluZyYgcmV0dXJuVmFsdWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKaW5kZXggNmQzNDBkOC4uZGFhMWJmYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTItMDctMjMg
IFlvbmcgTGkgIDx5b2xpQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIE1vdmUgYWJv
dXQ6IFVSTCBoYW5kbGluZyBvdXQgb2YgV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE1NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBQUiMgMTgxMzA0LgorICAgICAgICBNb3ZlIGFib3V0OiBV
UkwgaGFuZGxpbmcgdG8gdGhlIHJpZ2h0IHBsYWNlIChGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVy
cnk6OmNyZWF0ZURvY3VtZW50TG9hZGVyKSwgc28KKyAgICAgICAgcmVsb2FkIGFuZCBoaXN0b3J5
IG5hdmlnYXRpb24gY2FuIHdvcmsuCisgICAgICAgIE90aGVyIGNoYW5nZXM6IFJlbW92ZSBhYm91
dDp2ZXJzaW9uIHdoaWNoIG1ha2VzIGxpdHRsZSBzZW5zZS4gTWFrZSBhYm91dDptZW1vcnkgcGFy
dGlhbGx5IHZpc2libGUuCisKKyAgICAgICAgKiBBcGkvV2ViUGFnZS5jcHA6CisgICAgICAgIChC
bGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2U6OmxvYWQpOiBSZW1vdmUgdGhlIGNhbGwgdG8gbG9h
ZEFib3V0KCkKKyAgICAgICAgKiBBcGkvV2ViUGFnZV9wLmg6IFJlbW92ZSBsb2FkQWJvdXQoKQor
ICAgICAgICAoV2ViUGFnZVByaXZhdGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50QmxhY2tCZXJyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudEJsYWNrQmVycnk6OmNyZWF0ZURvY3VtZW50TG9hZGVyKTogQ29uc3RydWN0IGFib3V0
OiBkYXRhIGhlcmUuCisgICAgICAgICogV2ViS2l0U3VwcG9ydC9BYm91dERhdGEuY3BwOgorICAg
ICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpudW1iZXJUb0hUTUxUcik6IE1ha2UgaXQgc3RhdGlj
CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OmNvbmZpZ1BhZ2UpOiBNYWtlIGl0IHN0YXRp
YworICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjptZW1vcnlQYWdlKTogTWFrZSBpdCBzdGF0
aWMKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6YWJvdXREYXRhKTogVGhlIG9ubHkgZXhw
b3J0IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBIVE1MIHNvdXJjZSBmb3IgYSBnaXZlbiBhYm91dDog
VVJMLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Fib3V0RGF0
YS5oOgorICAgICAgICAoV2ViS2l0KToKKwogMjAxMi0wNy0yMiAgS2VudCBUYW11cmEgIDx0a2Vu
dEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVuYW1lIEVOQUJMRV9NRVRFUl9UQUcgYW5kIEVO
QUJMRV9QUk9HUkVTU19UQUcgdG8gRU5BQkxFX01FVEVSX0VMRU1FTlQgYW5kIEVOQUJMRV9QUk9H
UkVTU19FTEVNRU5UIHJlc3BlY3RpdmVseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeS5jcHAgYi9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRC
bGFja0JlcnJ5LmNwcAppbmRleCA5ODJiMTNjLi40OTAyZjYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRCbGFja0Jl
cnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5LmNwcApAQCAtMTksNiArMTksNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeS5oIgogCisj
aW5jbHVkZSAiQWJvdXREYXRhLmgiCiAjaW5jbHVkZSAiQXV0b2ZpbGxNYW5hZ2VyLmgiCiAjaW5j
bHVkZSAiQmFja0ZvcndhcmRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiQmFja0ZvcndhcmRMaXN0
SW1wbC5oIgpAQCAtMzg2LDkgKzM4NywyMSBAQCBQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBG
cmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnk6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbgogICAg
ICAgICAgICAgbmV3UmVxdWVzdC5zZXRUb2tlbihvcmlnaW5hbFJlcXVlc3QudG9rZW4oKSk7CiAg
ICAgfQogCisgICAgU3Vic3RpdHV0ZURhdGEgc3Vic3RpdHV0ZURhdGFMb2NhbCA9IHN1YnN0aXR1
dGVEYXRhOworICAgIGlmIChpc01haW5GcmFtZSgpICYmIHJlcXVlc3QudXJsKCkucHJvdG9jb2xJ
cygiYWJvdXQiKSkgeworICAgICAgICAvLyBUaGUgZmlyc3QgNiBsZXR0ZXJzIGlzICJhYm91dDoi
CisgICAgICAgIFN0cmluZyBhYm91dFdoYXQgPSByZXF1ZXN0LnVybCgpLnN0cmluZygpLnN1YnN0
cmluZyg2KTsKKyAgICAgICAgU3RyaW5nIHNvdXJjZSA9IGFib3V0RGF0YShhYm91dFdoYXQpOwor
ICAgICAgICBpZiAoIXNvdXJjZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIC8vIEFsd2F5cyBp
Z25vcmUgZXhpc3Rpbmcgc3Vic3RpdHV0ZSBkYXRhIGlmIGFueS4KKyAgICAgICAgICAgIFdURjo6
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc291cmNl
LmlzOEJpdCgpID8gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oc291cmNlLmNoYXJhY3Rl
cnM4KCkpIDogc291cmNlLmxhdGluMSgpLmRhdGEoKSwgc291cmNlLmxlbmd0aCgpKTsKKyAgICAg
ICAgICAgIHN1YnN0aXR1dGVEYXRhTG9jYWwgPSBTdWJzdGl0dXRlRGF0YShidWZmZXIsICJ0ZXh0
L2h0bWwiLCAibGF0aW4xIiwgS1VSTCgpKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIC8vIEZJ
WE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBiZSBzaGFyZWQuCi0gICAgUmVmUHRyPERvY3VtZW50
TG9hZGVyPiBsb2FkZXIgPSBEb2N1bWVudExvYWRlcjo6Y3JlYXRlKG5ld1JlcXVlc3QsIHN1YnN0
aXR1dGVEYXRhKTsKLSAgICBpZiAoc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQorICAgIFJlZlB0
cjxEb2N1bWVudExvYWRlcj4gbG9hZGVyID0gRG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShuZXdSZXF1
ZXN0LCBzdWJzdGl0dXRlRGF0YUxvY2FsKTsKKyAgICBpZiAoc3Vic3RpdHV0ZURhdGFMb2NhbC5p
c1ZhbGlkKCkpCiAgICAgICAgIGxvYWRlci0+c2V0RGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZChm
YWxzZSk7CiAgICAgcmV0dXJuIGxvYWRlci5yZWxlYXNlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9BYm91dERhdGEuY3BwIGIvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvQWJvdXREYXRhLmNwcAppbmRleCA3NDUx
NTc1Li5jMGQ5ZGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0
U3VwcG9ydC9BYm91dERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJL
aXRTdXBwb3J0L0Fib3V0RGF0YS5jcHAKQEAgLTIxLDEzICsyMSwxOSBAQAogCiAjaW5jbHVkZSAi
QWJvdXRUZW1wbGF0ZS5odG1sLmNwcCIKICNpbmNsdWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAi
Q29va2llTWFuYWdlci5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiTWVt
b3J5Q2FjaGUuaCIKICNpbmNsdWRlICJNZW1vcnlTdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAiU3Vy
ZmFjZVBvb2wuaCIKICNpbmNsdWRlICJXZWJLaXRWZXJzaW9uLmgiCiAKKyNpbmNsdWRlIDxCbGFj
a0JlcnJ5UGxhdGZvcm1DbGllbnQuaD4KKyNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1Mb2cu
aD4KKyNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1NZW1vcnkuaD4KICNpbmNsdWRlIDxCbGFj
a0JlcnJ5UGxhdGZvcm1TZXR0aW5ncy5oPgorI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybVdl
YktpdENyZWRpdHMuaD4KKyNpbmNsdWRlIDxCdWlsZEluZm9ybWF0aW9uLmg+CiAjaW5jbHVkZSA8
aGVhcC9IZWFwLmg+CiAjaW5jbHVkZSA8cHJvY2Vzcy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNH
bG9iYWxEYXRhLmg+CkBAIC01MCw3ICs1Niw3IEBAIHN0YXRpYyBTdHJpbmcgd3JpdGVGZWF0dXJl
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHJ1ZUxpc3QsIGNvbnN0IFZlY3RvcjxTdHJpbmc+CiAg
ICAgcmV0dXJuIHJldDsKIH0KIAotdGVtcGxhdGU8Y2xhc3MgVD4gU3RyaW5nIG51bWJlclRvSFRN
TFRyKGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFQgbnVtYmVyKQordGVtcGxhdGU8Y2xhc3Mg
VD4gc3RhdGljIFN0cmluZyBudW1iZXJUb0hUTUxUcihjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9u
LCBUIG51bWJlcikKIHsKICAgICByZXR1cm4gU3RyaW5nKCI8dHI+PHRkPiIpICsgZGVzY3JpcHRp
b24gKyAiPC90ZD48dGQ+IiArIFN0cmluZzo6bnVtYmVyKG51bWJlcikgKyAiPC90ZD48L3RyPiI7
CiB9CkBAIC02MCw3ICs2Niw3IEBAIHRlbXBsYXRlPD4gU3RyaW5nIG51bWJlclRvSFRNTFRyPGJv
b2w+KGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGJvb2wgdHJ1dGgpCiAgICAgcmV0dXJuIFN0
cmluZygiPHRyPjx0ZD4iKSArIGRlc2NyaXB0aW9uICsgIjwvdGQ+PHRkPiIgKyAodHJ1dGg/InRy
dWUiOiJmYWxzZSIpICsgIjwvdGQ+PC90cj4iOwogfQogCi1TdHJpbmcgY29uZmlnUGFnZSgpCitz
dGF0aWMgU3RyaW5nIGNvbmZpZ1BhZ2UoKQogewogICAgIFN0cmluZyBwYWdlOwogI2lmICFkZWZp
bmVkKFBVQkxJQ19CVUlMRCkgfHwgIVBVQkxJQ19CVUlMRApAQCAtMjAyLDcgKzIwOCw3IEBAIHN0
YXRpYyB2b2lkIGR1bXBKU0NUeXBlQ291bnRTZXRUb1RhYmxlSFRNTChTdHJpbmcmIHRhYmxlSFRN
TCwgSlNDOjpUeXBlQ291bnRTZXQqCiAgICAgICAgIHRhYmxlSFRNTCArPSBudW1iZXJUb0hUTUxU
cihpdGVyLT5maXJzdCwgaXRlci0+c2Vjb25kKTsKIH0KIAotU3RyaW5nIG1lbW9yeVBhZ2UoKQor
c3RhdGljIFN0cmluZyBtZW1vcnlQYWdlKCkKIHsKICAgICBTdHJpbmcgcGFnZTsKIApAQCAtMjU1
LDYgKzI2MSw4IEBAIFN0cmluZyBtZW1vcnlQYWdlKCkKICAgICBpZiAoIXN0YXQoU3RyaW5nOjpm
b3JtYXQoIi9wcm9jLyV1L2FzIiwgZ2V0cGlkKCkpLmxhdGluMSgpLmRhdGEoKSwgJnByb2Nlc3NJ
bmZvKSkKICAgICAgICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigiVG90YWwgbWFwcGVkIG1lbW9y
eSIsIHByb2Nlc3NJbmZvLnN0X3NpemUpOwogCisgICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigi
U3lzdGVtIGZyZWUgbWVtb3J5IiwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OnN5c3RlbUZyZWVNZW1v
cnkoKSk7CisKICAgICBwYWdlICs9ICI8L3RhYmxlPjwvZGl2Pjxicj4iOwogCiAgICAgcGFnZSAr
PSAiPGRpdiBjbGFzcz0nYm94Jz48ZGl2IGNsYXNzPSdib3gtdGl0bGUnPkpTIGVuZ2luZSBtZW1v
cnkgdXNhZ2U8L2Rpdj48dGFibGUgY2xhc3M9J2ZpeGVkLXRhYmxlJz48Y29sIHdpZHRoPTc1JT48
Y29sIHdpZHRoPTI1JT4iOwpAQCAtMjk5LDUgKzMwNyw1OSBAQCBTdHJpbmcgbWVtb3J5UGFnZSgp
CiAgICAgcmV0dXJuIHBhZ2U7CiB9CiAKK1N0cmluZyBhYm91dERhdGEoU3RyaW5nIGFib3V0V2hh
dCkKK3sKKyAgICBTdHJpbmcgcmVzdWx0OworCisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGFi
b3V0V2hhdCwgImNyZWRpdHMiKSkgeworICAgICAgICByZXN1bHQuYXBwZW5kKHdyaXRlSGVhZGVy
KCJDcmVkaXRzIikpOworICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZygiPHN0eWxlPiAuYWJv
dXQge3BhZGRpbmc6MTRweDt9IDwvc3R5bGU+IikpOworICAgICAgICByZXN1bHQuYXBwZW5kKFN0
cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V0VCS0lUQ1JFRElUUykpOworICAgICAgICByZXN1
bHQuYXBwZW5kKFN0cmluZygiPC9ib2R5PjwvaHRtbD4iKSk7CisgICAgfSBlbHNlIGlmIChhYm91
dFdoYXQuc3RhcnRzV2l0aCgiY2FjaGU/cXVlcnk9IiwgZmFsc2UpKSB7CisgICAgICAgIEJsYWNr
QmVycnk6OlBsYXRmb3JtOjpDbGllbnQqIGNsaWVudCA9IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpD
bGllbnQ6OmdldCgpOworICAgICAgICBBU1NFUlQoY2xpZW50KTsKKyAgICAgICAgc3RkOjpzdHJp
bmcga2V5KGFib3V0V2hhdC5zdWJzdHJpbmcoMTIsIGFib3V0V2hhdC5sZW5ndGgoKSAtIDEyKS51
dGY4KCkuZGF0YSgpKTsgLy8gMTIgaXMgbGVuZ3RoIG9mICJjYWNoZT9xdWVyeT0iLgorICAgICAg
ICByZXN1bHQuYXBwZW5kKFN0cmluZygiPGh0bWw+PGhlYWQ+PHRpdGxlPkJsYWNrQmVycnkgQnJv
d3NlciBEaXNrIENhY2hlPC90aXRsZT48L2hlYWQ+PGJvZHk+IikpOworICAgICAgICByZXN1bHQu
YXBwZW5kKFN0cmluZyhrZXkuZGF0YSgpKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5n
KCI8aHI+IikpOworICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZyhjbGllbnQtPmdlbmVyYXRl
SHRtbEZyYWdtZW50Rm9yQ2FjaGVIZWFkZXJzKGtleSkuZGF0YSgpKSk7CisgICAgICAgIHJlc3Vs
dC5hcHBlbmQoU3RyaW5nKCI8L2JvZHk+PC9odG1sPiIpKTsKKyAgICB9IGVsc2UgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKGFib3V0V2hhdCwgImNhY2hlIikpIHsKKyAgICAgICAgQmxhY2tCZXJyeTo6
UGxhdGZvcm06OkNsaWVudCogY2xpZW50ID0gQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNsaWVudDo6
Z2V0KCk7CisgICAgICAgIEFTU0VSVChjbGllbnQpOworICAgICAgICByZXN1bHQuYXBwZW5kKFN0
cmluZygiPGh0bWw+PGhlYWQ+PHRpdGxlPkJsYWNrQmVycnkgQnJvd3NlciBEaXNrIENhY2hlPC90
aXRsZT48L2hlYWQ+PGJvZHk+IikpOworICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZyhjbGll
bnQtPmdlbmVyYXRlSHRtbEZyYWdtZW50Rm9yQ2FjaGVLZXlzKCkuZGF0YSgpKSk7CisgICAgICAg
IHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8L2JvZHk+PC9odG1sPiIpKTsKKyNpZiAhZGVmaW5lZChQ
VUJMSUNfQlVJTEQpIHx8ICFQVUJMSUNfQlVJTEQKKyAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKGFib3V0V2hhdCwgImNhY2hlL2Rpc2FibGUiKSkgeworICAgICAgICBCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6Q2xpZW50KiBjbGllbnQgPSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q2xpZW50
OjpnZXQoKTsKKyAgICAgICAgQVNTRVJUKGNsaWVudCk7CisgICAgICAgIGNsaWVudC0+c2V0RGlz
a0NhY2hlRW5hYmxlZChmYWxzZSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8aHRt
bD48aGVhZD48dGl0bGU+QmxhY2tCZXJyeSBCcm93c2VyIERpc2sgQ2FjaGU8L3RpdGxlPjwvaGVh
ZD48Ym9keT5IdHRwIGRpc2sgY2FjaGUgaXMgZGlzYWJsZWQuPC9ib2R5PjwvaHRtbD4iKSk7Cisg
ICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhYm91dFdoYXQsICJjYWNoZS9lbmFibGUi
KSkgeworICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q2xpZW50KiBjbGllbnQgPSBCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6Q2xpZW50OjpnZXQoKTsKKyAgICAgICAgQVNTRVJUKGNsaWVudCk7
CisgICAgICAgIGNsaWVudC0+c2V0RGlza0NhY2hlRW5hYmxlZCh0cnVlKTsKKyAgICAgICAgcmVz
dWx0LmFwcGVuZChTdHJpbmcoIjxodG1sPjxoZWFkPjx0aXRsZT5CbGFja0JlcnJ5IEJyb3dzZXIg
RGlzayBDYWNoZTwvdGl0bGU+PC9oZWFkPjxib2R5Pkh0dHAgZGlzayBjYWNoZSBpcyBlbmFibGVk
LjwvYm9keT48L2h0bWw+IikpOworICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYWJv
dXRXaGF0LCAiY29va2llIikpIHsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmcoIjxodG1s
PjxoZWFkPjx0aXRsZT5CbGFja0JlcnJ5IEJyb3dzZXIgY29va2llIGluZm9ybWF0aW9uPC90aXRs
ZT48L2hlYWQ+PGJvZHk+IikpOworICAgICAgICByZXN1bHQuYXBwZW5kKGNvb2tpZU1hbmFnZXIo
KS5nZW5lcmF0ZUh0bWxGcmFnbWVudEZvckNvb2tpZXMoKSk7CisgICAgICAgIHJlc3VsdC5hcHBl
bmQoU3RyaW5nKCI8L2JvZHk+PC9odG1sPiIpKTsKKyAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKGFib3V0V2hhdCwgInZlcnNpb24iKSkgeworICAgICAgICByZXN1bHQuYXBwZW5kKHdy
aXRlSGVhZGVyKCJWZXJzaW9uIikpOworICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZygiPGRp
diBjbGFzcz0nYm94Jz48ZGl2IGNsYXNzPSdib3gtdGl0bGUnPkJ1aWxkIFRpbWU8L2Rpdj48YnI+
IikpOworICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
QlVJTERUSU1FKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8L2Rpdj48YnI+PGRp
diBzdHlsZT0nZm9udC1zaXplOjEwcHg7dGV4dC1hbGlnbjpjZW50ZXI7Jz5BbHNvIHNlZSB0aGUg
PEEgaHJlZj0nYWJvdXQ6YnVpbGQnPmJ1aWxkIGluZm9ybWF0aW9uPC9BPi48L2JvZHk+PC9odG1s
PiIpKTsKKyAgICB9IGVsc2UgaWYgKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpkZWJ1Z1NldHRpbmco
KSA+IDAgJiYgZXF1YWxJZ25vcmluZ0Nhc2UoYWJvdXRXaGF0LCAiY29uZmlnIikpIHsKKyAgICAg
ICAgcmVzdWx0ID0gY29uZmlnUGFnZSgpOworI2VuZGlmCisgICAgfSBlbHNlIGlmIChlcXVhbEln
bm9yaW5nQ2FzZShhYm91dFdoYXQsICJtZW1vcnkiKSkgeworICAgICAgICByZXN1bHQgPSBtZW1v
cnlQYWdlKCk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CiB9IC8vIG5hbWVzcGFjZSBCbGFja0JlcnJ5CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9BYm91dERhdGEuaCBiL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0Fib3V0RGF0YS5oCmluZGV4IDgwNTA1NGYuLjBl
MTFhNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0
L0Fib3V0RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0
L0Fib3V0RGF0YS5oCkBAIC0yNCw4ICsyNCw3IEBACiBuYW1lc3BhY2UgQmxhY2tCZXJyeSB7CiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAotU3RyaW5nIGNvbmZpZ1BhZ2UoKTsKLVN0cmluZyBtZW1vcnlQ
YWdlKCk7CitTdHJpbmcgYWJvdXREYXRhKFN0cmluZyBhYm91dFdoYXQpOwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKIH0gLy8gbmFtZXNwYWNlIEJsYWNrQmVycnkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153828</attachid>
            <date>2012-07-23 12:00:37 -0700</date>
            <delta_ts>2012-07-23 13:41:13 -0700</delta_ts>
            <desc>fix style</desc>
            <filename>91541.patch</filename>
            <type>text/plain</type>
            <size>16385</size>
            <attacher name="Yong Li">yong.li.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCmluZGV4IGI1Njg2NzAuLjQ4
N2ExN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcApAQCAtMTks
OCArMTksNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKIAot
I2luY2x1ZGUgIkFib3V0RGF0YS5oIgotI2luY2x1ZGUgIkFib3V0VGVtcGxhdGUuaHRtbC5jcHAi
CiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCIKICNpbmNsdWRlICJBdXRvZmls
bE1hbmFnZXIuaCIKICNpbmNsdWRlICJCYWNrRm9yd2FyZENvbnRyb2xsZXIuaCIKQEAgLTE1Nyw4
ICsxNTUsNiBAQAogI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybU1vdXNlRXZlbnQuaD4KICNp
bmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1TY3JlZW4uaD4KICNpbmNsdWRlIDxCbGFja0JlcnJ5
UGxhdGZvcm1TZXR0aW5ncy5oPgotI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybVdlYktpdENy
ZWRpdHMuaD4KLSNpbmNsdWRlIDxCdWlsZEluZm9ybWF0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvQVBJQ2FzdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ29udGV4dFJl
Zi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmLmg+CkBAIC02MTksODQg
KzYxNSw2IEBAIHByaXZhdGU6CiAgICAgfQogfTsKIAotYm9vbCBXZWJQYWdlUHJpdmF0ZTo6bG9h
ZEFib3V0KGNvbnN0IGNoYXIqIGFib3V0VVJMKQotewotICAgIGlmIChzdHJuY2FzZWNtcChhYm91
dFVSTCwgImFib3V0OiIsIDYpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBGaXJz
dCA2IGNoYXJzIGFyZSAiYWJvdXQ6Ii4KLSAgICBTdHJpbmcgYWJvdXRXaGF0KGFib3V0VVJMICsg
Nik7Ci0KLSAgICBTdHJpbmcgcmVzdWx0OwotCi0gICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGFi
b3V0V2hhdCwgImNyZWRpdHMiKSkgewotICAgICAgICByZXN1bHQuYXBwZW5kKHdyaXRlSGVhZGVy
KCJDcmVkaXRzIikpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZygiPHN0eWxlPiAuYWJv
dXQge3BhZGRpbmc6MTRweDt9IDwvc3R5bGU+IikpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0
cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V0VCS0lUQ1JFRElUUykpOwotICAgICAgICByZXN1
bHQuYXBwZW5kKFN0cmluZygiPC9ib2R5PjwvaHRtbD4iKSk7Ci0gICAgfSBlbHNlIGlmIChhYm91
dFdoYXQuc3RhcnRzV2l0aCgiY2FjaGU/cXVlcnk9IiwgZmFsc2UpKSB7Ci0gICAgICAgIEJsYWNr
QmVycnk6OlBsYXRmb3JtOjpDbGllbnQqIGNsaWVudCA9IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpD
bGllbnQ6OmdldCgpOwotICAgICAgICBBU1NFUlQoY2xpZW50KTsKLSAgICAgICAgc3RkOjpzdHJp
bmcga2V5KGFib3V0V2hhdC5zdWJzdHJpbmcoMTIsIGFib3V0V2hhdC5sZW5ndGgoKSAtIDEyKS51
dGY4KCkuZGF0YSgpKTsgLy8gMTIgaXMgbGVuZ3RoIG9mICJjYWNoZT9xdWVyeT0iLgotICAgICAg
ICByZXN1bHQuYXBwZW5kKFN0cmluZygiPGh0bWw+PGhlYWQ+PHRpdGxlPkJsYWNrQmVycnkgQnJv
d3NlciBEaXNrIENhY2hlPC90aXRsZT48L2hlYWQ+PGJvZHk+IikpOwotICAgICAgICByZXN1bHQu
YXBwZW5kKFN0cmluZyhrZXkuZGF0YSgpKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5n
KCI8aHI+IikpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZyhjbGllbnQtPmdlbmVyYXRl
SHRtbEZyYWdtZW50Rm9yQ2FjaGVIZWFkZXJzKGtleSkuZGF0YSgpKSk7Ci0gICAgICAgIHJlc3Vs
dC5hcHBlbmQoU3RyaW5nKCI8L2JvZHk+PC9odG1sPiIpKTsKLSAgICB9IGVsc2UgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKGFib3V0V2hhdCwgImNhY2hlIikpIHsKLSAgICAgICAgQmxhY2tCZXJyeTo6
UGxhdGZvcm06OkNsaWVudCogY2xpZW50ID0gQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNsaWVudDo6
Z2V0KCk7Ci0gICAgICAgIEFTU0VSVChjbGllbnQpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0
cmluZygiPGh0bWw+PGhlYWQ+PHRpdGxlPkJsYWNrQmVycnkgQnJvd3NlciBEaXNrIENhY2hlPC90
aXRsZT48L2hlYWQ+PGJvZHk+IikpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZyhjbGll
bnQtPmdlbmVyYXRlSHRtbEZyYWdtZW50Rm9yQ2FjaGVLZXlzKCkuZGF0YSgpKSk7Ci0gICAgICAg
IHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8L2JvZHk+PC9odG1sPiIpKTsKLSNpZiAhZGVmaW5lZChQ
VUJMSUNfQlVJTEQpIHx8ICFQVUJMSUNfQlVJTEQKLSAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKGFib3V0V2hhdCwgImNhY2hlL2Rpc2FibGUiKSkgewotICAgICAgICBCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6Q2xpZW50KiBjbGllbnQgPSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q2xpZW50
OjpnZXQoKTsKLSAgICAgICAgQVNTRVJUKGNsaWVudCk7Ci0gICAgICAgIGNsaWVudC0+c2V0RGlz
a0NhY2hlRW5hYmxlZChmYWxzZSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8aHRt
bD48aGVhZD48dGl0bGU+QmxhY2tCZXJyeSBCcm93c2VyIERpc2sgQ2FjaGU8L3RpdGxlPjwvaGVh
ZD48Ym9keT5IdHRwIGRpc2sgY2FjaGUgaXMgZGlzYWJsZWQuPC9ib2R5PjwvaHRtbD4iKSk7Ci0g
ICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhYm91dFdoYXQsICJjYWNoZS9lbmFibGUi
KSkgewotICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q2xpZW50KiBjbGllbnQgPSBCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6Q2xpZW50OjpnZXQoKTsKLSAgICAgICAgQVNTRVJUKGNsaWVudCk7
Ci0gICAgICAgIGNsaWVudC0+c2V0RGlza0NhY2hlRW5hYmxlZCh0cnVlKTsKLSAgICAgICAgcmVz
dWx0LmFwcGVuZChTdHJpbmcoIjxodG1sPjxoZWFkPjx0aXRsZT5CbGFja0JlcnJ5IEJyb3dzZXIg
RGlzayBDYWNoZTwvdGl0bGU+PC9oZWFkPjxib2R5Pkh0dHAgZGlzayBjYWNoZSBpcyBlbmFibGVk
LjwvYm9keT48L2h0bWw+IikpOwotICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYWJv
dXRXaGF0LCAiY29va2llIikpIHsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmcoIjxodG1s
PjxoZWFkPjx0aXRsZT5CbGFja0JlcnJ5IEJyb3dzZXIgY29va2llIGluZm9ybWF0aW9uPC90aXRs
ZT48L2hlYWQ+PGJvZHk+IikpOwotICAgICAgICByZXN1bHQuYXBwZW5kKGNvb2tpZU1hbmFnZXIo
KS5nZW5lcmF0ZUh0bWxGcmFnbWVudEZvckNvb2tpZXMoKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBl
bmQoU3RyaW5nKCI8L2JvZHk+PC9odG1sPiIpKTsKLSAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKGFib3V0V2hhdCwgInZlcnNpb24iKSkgewotICAgICAgICByZXN1bHQuYXBwZW5kKHdy
aXRlSGVhZGVyKCJWZXJzaW9uIikpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZygiPGRp
diBjbGFzcz0nYm94Jz48ZGl2IGNsYXNzPSdib3gtdGl0bGUnPkJ1aWxkIFRpbWU8L2Rpdj48YnI+
IikpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
QlVJTERUSU1FKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8L2Rpdj48YnI+PGRp
diBzdHlsZT0nZm9udC1zaXplOjEwcHg7dGV4dC1hbGlnbjpjZW50ZXI7Jz5BbHNvIHNlZSB0aGUg
PEEgaHJlZj0nYWJvdXQ6YnVpbGQnPmJ1aWxkIGluZm9ybWF0aW9uPC9BPi48L2JvZHk+PC9odG1s
PiIpKTsKLSAgICB9IGVsc2UgaWYgKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpkZWJ1Z1NldHRpbmco
KSA+IDAgJiYgZXF1YWxJZ25vcmluZ0Nhc2UoYWJvdXRXaGF0LCAiY29uZmlnIikpIHsKLSAgICAg
ICAgcmVzdWx0ID0gY29uZmlnUGFnZSgpOwotICAgIH0gZWxzZSBpZiAoQmxhY2tCZXJyeTo6UGxh
dGZvcm06OmRlYnVnU2V0dGluZygpID4gMCAmJiBlcXVhbElnbm9yaW5nQ2FzZShhYm91dFdoYXQs
ICJidWlsZCIpKSB7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQod3JpdGVIZWFkZXIoIkJ1aWxkIikp
OwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZygiPGRpdiBjbGFzcz0nYm94Jz48ZGl2IGNs
YXNzPSdib3gtdGl0bGUnPkJhc2ljPC9kaXY+PHRhYmxlPiIpKTsKLSAgICAgICAgcmVzdWx0LmFw
cGVuZChTdHJpbmcoIjx0cj48dGQ+QnVpbHQgT246ICA8L3RkPjx0ZD4iKSk7Ci0gICAgICAgIHJl
c3VsdC5hcHBlbmQoU3RyaW5nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpCVUlMRENPTVBVVEVSKSk7
Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8L3RkPjwvdHI+IikpOwotICAgICAgICBy
ZXN1bHQuYXBwZW5kKFN0cmluZygiPHRyPjx0ZD5CdWlsZCBVc2VyOiAgPC90ZD48dGQ+IikpOwot
ICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6QlVJTERV
U0VSKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8L3RkPjwvdHI+IikpOwotICAg
ICAgICByZXN1bHQuYXBwZW5kKFN0cmluZygiPHRyPjx0ZD5CdWlsZCBUaW1lOiAgPC90ZD48dGQ+
IikpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
QlVJTERUSU1FKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8L3RhYmxlPjwvZGl2
Pjxicj4iKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpCVUlMRElORk9fV0VCS0lUKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpCVUlMRElORk9fUExBVEZPUk0pKTsKLSAgICAgICAgcmVzdWx0
LmFwcGVuZChTdHJpbmcoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkJVSUxESU5GT19MSUJXRUJWSUVX
KSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8L2JvZHk+PC9odG1sPiIpKTsKLSAg
ICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGFib3V0V2hhdCwgIm1lbW9yeSIpKSB7Ci0g
ICAgICAgIHJlc3VsdCA9IG1lbW9yeVBhZ2UoKTsKLSNlbmRpZgotICAgIH0gZWxzZQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBsb2FkU3RyaW5nKHJlc3VsdC5sYXRpbjEoKS5kYXRhKCks
IGFib3V0VVJMLCAidGV4dC9odG1sIik7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIHZvaWQgV2Vi
UGFnZVByaXZhdGU6OmxvYWQoY29uc3QgY2hhciogdXJsLCBjb25zdCBjaGFyKiBuZXR3b3JrVG9r
ZW4sIGNvbnN0IGNoYXIqIG1ldGhvZCwgUGxhdGZvcm06Ok5ldHdvcmtSZXF1ZXN0OjpDYWNoZVBv
bGljeSBjYWNoZVBvbGljeSwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIGNv
bnN0IGNoYXIqIGNvbnN0KiBoZWFkZXJzLCBzaXplX3QgaGVhZGVyc0xlbmd0aCwgYm9vbCBpc0lu
aXRpYWwsIGJvb2wgbXVzdEhhbmRsZUludGVybmFsbHksIGJvb2wgZm9yY2VEb3dubG9hZCwgY29u
c3QgY2hhciogb3ZlcnJpZGVDb250ZW50VHlwZSwgY29uc3QgY2hhciogc3VnZ2VzdGVkU2F2ZU5h
bWUpCiB7CiAgICAgc3RvcEN1cnJlbnRMb2FkKCk7CkBAIC03NDcsOCArNjY1LDYgQEAgdm9pZCBX
ZWJQYWdlUHJpdmF0ZTo6bG9hZChjb25zdCBjaGFyKiB1cmwsIGNvbnN0IGNoYXIqIG5ldHdvcmtU
b2tlbiwgY29uc3QgY2hhcioKIAogdm9pZCBXZWJQYWdlOjpsb2FkKGNvbnN0IGNoYXIqIHVybCwg
Y29uc3QgY2hhciogbmV0d29ya1Rva2VuLCBib29sIGlzSW5pdGlhbCkKIHsKLSAgICBpZiAoZC0+
bG9hZEFib3V0KHVybCkpCi0gICAgICAgIHJldHVybjsKICAgICBkLT5sb2FkKHVybCwgbmV0d29y
a1Rva2VuLCAiR0VUIiwgUGxhdGZvcm06Ok5ldHdvcmtSZXF1ZXN0OjpVc2VQcm90b2NvbENhY2hl
UG9saWN5LCAwLCAwLCAwLCAwLCBpc0luaXRpYWwsIGZhbHNlKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlX3AuaCBiL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9BcGkvV2ViUGFnZV9wLmgKaW5kZXggYjRjYTkxNy4uNGNhNzZkMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlX3AuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VfcC5oCkBAIC05Nyw3ICs5Nyw2IEBAIHB1
YmxpYzoKICAgICBib29sIGhhbmRsZU1vdXNlRXZlbnQoV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2
ZW50Jik7CiAgICAgYm9vbCBoYW5kbGVXaGVlbEV2ZW50KFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxF
dmVudCYpOwogCi0gICAgYm9vbCBsb2FkQWJvdXQoY29uc3QgY2hhciogYWJvdXRVUkwpOwogICAg
IHZvaWQgbG9hZChjb25zdCBjaGFyKiB1cmwsIGNvbnN0IGNoYXIqIG5ldHdvcmtUb2tlbiwgY29u
c3QgY2hhciogbWV0aG9kLCBQbGF0Zm9ybTo6TmV0d29ya1JlcXVlc3Q6OkNhY2hlUG9saWN5LCBj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgY29uc3QgY2hhciogY29uc3QqIGhl
YWRlcnMsIHNpemVfdCBoZWFkZXJzTGVuZ3RoLCBib29sIGlzSW5pdGlhbCwgYm9vbCBtdXN0SGFu
ZGxlSW50ZXJuYWxseSA9IGZhbHNlLCBib29sIGZvcmNlRG93bmxvYWQgPSBmYWxzZSwgY29uc3Qg
Y2hhciogb3ZlcnJpZGVDb250ZW50VHlwZSA9ICIiLCBjb25zdCBjaGFyKiBzdWdnZXN0ZWRTYXZl
TmFtZSA9ICIiKTsKICAgICB2b2lkIGxvYWRTdHJpbmcoY29uc3QgY2hhciogc3RyaW5nLCBjb25z
dCBjaGFyKiBiYXNlVVJMLCBjb25zdCBjaGFyKiBtaW1lVHlwZSwgY29uc3QgY2hhciogZmFpbGlu
Z1VSTCA9IDApOwogICAgIGJvb2wgZXhlY3V0ZUphdmFTY3JpcHQoY29uc3QgY2hhciogc2NyaXB0
LCBKYXZhU2NyaXB0RGF0YVR5cGUmIHJldHVyblR5cGUsIFdlYlN0cmluZyYgcmV0dXJuVmFsdWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKaW5kZXggNmQzNDBkOC4uZGFhMWJmYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTItMDctMjMg
IFlvbmcgTGkgIDx5b2xpQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIE1vdmUgYWJv
dXQ6IFVSTCBoYW5kbGluZyBvdXQgb2YgV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE1NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBQUiMgMTgxMzA0LgorICAgICAgICBNb3ZlIGFib3V0OiBV
UkwgaGFuZGxpbmcgdG8gdGhlIHJpZ2h0IHBsYWNlIChGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVy
cnk6OmNyZWF0ZURvY3VtZW50TG9hZGVyKSwgc28KKyAgICAgICAgcmVsb2FkIGFuZCBoaXN0b3J5
IG5hdmlnYXRpb24gY2FuIHdvcmsuCisgICAgICAgIE90aGVyIGNoYW5nZXM6IFJlbW92ZSBhYm91
dDp2ZXJzaW9uIHdoaWNoIG1ha2VzIGxpdHRsZSBzZW5zZS4gTWFrZSBhYm91dDptZW1vcnkgcGFy
dGlhbGx5IHZpc2libGUuCisKKyAgICAgICAgKiBBcGkvV2ViUGFnZS5jcHA6CisgICAgICAgIChC
bGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2U6OmxvYWQpOiBSZW1vdmUgdGhlIGNhbGwgdG8gbG9h
ZEFib3V0KCkKKyAgICAgICAgKiBBcGkvV2ViUGFnZV9wLmg6IFJlbW92ZSBsb2FkQWJvdXQoKQor
ICAgICAgICAoV2ViUGFnZVByaXZhdGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50QmxhY2tCZXJyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudEJsYWNrQmVycnk6OmNyZWF0ZURvY3VtZW50TG9hZGVyKTogQ29uc3RydWN0IGFib3V0
OiBkYXRhIGhlcmUuCisgICAgICAgICogV2ViS2l0U3VwcG9ydC9BYm91dERhdGEuY3BwOgorICAg
ICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpudW1iZXJUb0hUTUxUcik6IE1ha2UgaXQgc3RhdGlj
CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OmNvbmZpZ1BhZ2UpOiBNYWtlIGl0IHN0YXRp
YworICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjptZW1vcnlQYWdlKTogTWFrZSBpdCBzdGF0
aWMKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6YWJvdXREYXRhKTogVGhlIG9ubHkgZXhw
b3J0IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBIVE1MIHNvdXJjZSBmb3IgYSBnaXZlbiBhYm91dDog
VVJMLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Fib3V0RGF0
YS5oOgorICAgICAgICAoV2ViS2l0KToKKwogMjAxMi0wNy0yMiAgS2VudCBUYW11cmEgIDx0a2Vu
dEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVuYW1lIEVOQUJMRV9NRVRFUl9UQUcgYW5kIEVO
QUJMRV9QUk9HUkVTU19UQUcgdG8gRU5BQkxFX01FVEVSX0VMRU1FTlQgYW5kIEVOQUJMRV9QUk9H
UkVTU19FTEVNRU5UIHJlc3BlY3RpdmVseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeS5jcHAgYi9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRC
bGFja0JlcnJ5LmNwcAppbmRleCA5ODJiMTNjLi40OTAyZjYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRCbGFja0Jl
cnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5LmNwcApAQCAtMTksNiArMTksNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeS5oIgogCisj
aW5jbHVkZSAiQWJvdXREYXRhLmgiCiAjaW5jbHVkZSAiQXV0b2ZpbGxNYW5hZ2VyLmgiCiAjaW5j
bHVkZSAiQmFja0ZvcndhcmRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiQmFja0ZvcndhcmRMaXN0
SW1wbC5oIgpAQCAtMzg2LDkgKzM4NywyMSBAQCBQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBG
cmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnk6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbgogICAg
ICAgICAgICAgbmV3UmVxdWVzdC5zZXRUb2tlbihvcmlnaW5hbFJlcXVlc3QudG9rZW4oKSk7CiAg
ICAgfQogCisgICAgU3Vic3RpdHV0ZURhdGEgc3Vic3RpdHV0ZURhdGFMb2NhbCA9IHN1YnN0aXR1
dGVEYXRhOworICAgIGlmIChpc01haW5GcmFtZSgpICYmIHJlcXVlc3QudXJsKCkucHJvdG9jb2xJ
cygiYWJvdXQiKSkgeworICAgICAgICAvLyBUaGUgZmlyc3QgNiBsZXR0ZXJzIGlzICJhYm91dDoi
CisgICAgICAgIFN0cmluZyBhYm91dFdoYXQgPSByZXF1ZXN0LnVybCgpLnN0cmluZygpLnN1YnN0
cmluZyg2KTsKKyAgICAgICAgU3RyaW5nIHNvdXJjZSA9IGFib3V0RGF0YShhYm91dFdoYXQpOwor
ICAgICAgICBpZiAoIXNvdXJjZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIC8vIEFsd2F5cyBp
Z25vcmUgZXhpc3Rpbmcgc3Vic3RpdHV0ZSBkYXRhIGlmIGFueS4KKyAgICAgICAgICAgIFdURjo6
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc291cmNl
LmlzOEJpdCgpID8gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oc291cmNlLmNoYXJhY3Rl
cnM4KCkpIDogc291cmNlLmxhdGluMSgpLmRhdGEoKSwgc291cmNlLmxlbmd0aCgpKTsKKyAgICAg
ICAgICAgIHN1YnN0aXR1dGVEYXRhTG9jYWwgPSBTdWJzdGl0dXRlRGF0YShidWZmZXIsICJ0ZXh0
L2h0bWwiLCAibGF0aW4xIiwgS1VSTCgpKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIC8vIEZJ
WE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBiZSBzaGFyZWQuCi0gICAgUmVmUHRyPERvY3VtZW50
TG9hZGVyPiBsb2FkZXIgPSBEb2N1bWVudExvYWRlcjo6Y3JlYXRlKG5ld1JlcXVlc3QsIHN1YnN0
aXR1dGVEYXRhKTsKLSAgICBpZiAoc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQorICAgIFJlZlB0
cjxEb2N1bWVudExvYWRlcj4gbG9hZGVyID0gRG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShuZXdSZXF1
ZXN0LCBzdWJzdGl0dXRlRGF0YUxvY2FsKTsKKyAgICBpZiAoc3Vic3RpdHV0ZURhdGFMb2NhbC5p
c1ZhbGlkKCkpCiAgICAgICAgIGxvYWRlci0+c2V0RGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZChm
YWxzZSk7CiAgICAgcmV0dXJuIGxvYWRlci5yZWxlYXNlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9BYm91dERhdGEuY3BwIGIvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvQWJvdXREYXRhLmNwcAppbmRleCA3NDUx
NTc1Li4zNjYwMDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0
U3VwcG9ydC9BYm91dERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJL
aXRTdXBwb3J0L0Fib3V0RGF0YS5jcHAKQEAgLTIxLDEzICsyMSwxOSBAQAogCiAjaW5jbHVkZSAi
QWJvdXRUZW1wbGF0ZS5odG1sLmNwcCIKICNpbmNsdWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAi
Q29va2llTWFuYWdlci5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiTWVt
b3J5Q2FjaGUuaCIKICNpbmNsdWRlICJNZW1vcnlTdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAiU3Vy
ZmFjZVBvb2wuaCIKICNpbmNsdWRlICJXZWJLaXRWZXJzaW9uLmgiCiAKKyNpbmNsdWRlIDxCbGFj
a0JlcnJ5UGxhdGZvcm1DbGllbnQuaD4KKyNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1Mb2cu
aD4KKyNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1NZW1vcnkuaD4KICNpbmNsdWRlIDxCbGFj
a0JlcnJ5UGxhdGZvcm1TZXR0aW5ncy5oPgorI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybVdl
YktpdENyZWRpdHMuaD4KKyNpbmNsdWRlIDxCdWlsZEluZm9ybWF0aW9uLmg+CiAjaW5jbHVkZSA8
aGVhcC9IZWFwLmg+CiAjaW5jbHVkZSA8cHJvY2Vzcy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNH
bG9iYWxEYXRhLmg+CkBAIC01MCw3ICs1Niw3IEBAIHN0YXRpYyBTdHJpbmcgd3JpdGVGZWF0dXJl
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHJ1ZUxpc3QsIGNvbnN0IFZlY3RvcjxTdHJpbmc+CiAg
ICAgcmV0dXJuIHJldDsKIH0KIAotdGVtcGxhdGU8Y2xhc3MgVD4gU3RyaW5nIG51bWJlclRvSFRN
TFRyKGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFQgbnVtYmVyKQordGVtcGxhdGU8Y2xhc3Mg
VD4gc3RhdGljIFN0cmluZyBudW1iZXJUb0hUTUxUcihjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9u
LCBUIG51bWJlcikKIHsKICAgICByZXR1cm4gU3RyaW5nKCI8dHI+PHRkPiIpICsgZGVzY3JpcHRp
b24gKyAiPC90ZD48dGQ+IiArIFN0cmluZzo6bnVtYmVyKG51bWJlcikgKyAiPC90ZD48L3RyPiI7
CiB9CkBAIC02MCw3ICs2Niw3IEBAIHRlbXBsYXRlPD4gU3RyaW5nIG51bWJlclRvSFRNTFRyPGJv
b2w+KGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGJvb2wgdHJ1dGgpCiAgICAgcmV0dXJuIFN0
cmluZygiPHRyPjx0ZD4iKSArIGRlc2NyaXB0aW9uICsgIjwvdGQ+PHRkPiIgKyAodHJ1dGg/InRy
dWUiOiJmYWxzZSIpICsgIjwvdGQ+PC90cj4iOwogfQogCi1TdHJpbmcgY29uZmlnUGFnZSgpCitz
dGF0aWMgU3RyaW5nIGNvbmZpZ1BhZ2UoKQogewogICAgIFN0cmluZyBwYWdlOwogI2lmICFkZWZp
bmVkKFBVQkxJQ19CVUlMRCkgfHwgIVBVQkxJQ19CVUlMRApAQCAtMjAyLDcgKzIwOCw3IEBAIHN0
YXRpYyB2b2lkIGR1bXBKU0NUeXBlQ291bnRTZXRUb1RhYmxlSFRNTChTdHJpbmcmIHRhYmxlSFRN
TCwgSlNDOjpUeXBlQ291bnRTZXQqCiAgICAgICAgIHRhYmxlSFRNTCArPSBudW1iZXJUb0hUTUxU
cihpdGVyLT5maXJzdCwgaXRlci0+c2Vjb25kKTsKIH0KIAotU3RyaW5nIG1lbW9yeVBhZ2UoKQor
c3RhdGljIFN0cmluZyBtZW1vcnlQYWdlKCkKIHsKICAgICBTdHJpbmcgcGFnZTsKIApAQCAtMjU1
LDYgKzI2MSw4IEBAIFN0cmluZyBtZW1vcnlQYWdlKCkKICAgICBpZiAoIXN0YXQoU3RyaW5nOjpm
b3JtYXQoIi9wcm9jLyV1L2FzIiwgZ2V0cGlkKCkpLmxhdGluMSgpLmRhdGEoKSwgJnByb2Nlc3NJ
bmZvKSkKICAgICAgICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigiVG90YWwgbWFwcGVkIG1lbW9y
eSIsIHByb2Nlc3NJbmZvLnN0X3NpemUpOwogCisgICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigi
U3lzdGVtIGZyZWUgbWVtb3J5IiwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OnN5c3RlbUZyZWVNZW1v
cnkoKSk7CisKICAgICBwYWdlICs9ICI8L3RhYmxlPjwvZGl2Pjxicj4iOwogCiAgICAgcGFnZSAr
PSAiPGRpdiBjbGFzcz0nYm94Jz48ZGl2IGNsYXNzPSdib3gtdGl0bGUnPkpTIGVuZ2luZSBtZW1v
cnkgdXNhZ2U8L2Rpdj48dGFibGUgY2xhc3M9J2ZpeGVkLXRhYmxlJz48Y29sIHdpZHRoPTc1JT48
Y29sIHdpZHRoPTI1JT4iOwpAQCAtMjk5LDUgKzMwNyw1OCBAQCBTdHJpbmcgbWVtb3J5UGFnZSgp
CiAgICAgcmV0dXJuIHBhZ2U7CiB9CiAKK1N0cmluZyBhYm91dERhdGEoU3RyaW5nIGFib3V0V2hh
dCkKK3sKKyAgICBTdHJpbmcgcmVzdWx0OworCisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGFi
b3V0V2hhdCwgImNyZWRpdHMiKSkgeworICAgICAgICByZXN1bHQuYXBwZW5kKHdyaXRlSGVhZGVy
KCJDcmVkaXRzIikpOworICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZygiPHN0eWxlPiAuYWJv
dXQge3BhZGRpbmc6MTRweDt9IDwvc3R5bGU+IikpOworICAgICAgICByZXN1bHQuYXBwZW5kKFN0
cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V0VCS0lUQ1JFRElUUykpOworICAgICAgICByZXN1
bHQuYXBwZW5kKFN0cmluZygiPC9ib2R5PjwvaHRtbD4iKSk7CisgICAgfSBlbHNlIGlmIChhYm91
dFdoYXQuc3RhcnRzV2l0aCgiY2FjaGU/cXVlcnk9IiwgZmFsc2UpKSB7CisgICAgICAgIEJsYWNr
QmVycnk6OlBsYXRmb3JtOjpDbGllbnQqIGNsaWVudCA9IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpD
bGllbnQ6OmdldCgpOworICAgICAgICBBU1NFUlQoY2xpZW50KTsKKyAgICAgICAgc3RkOjpzdHJp
bmcga2V5KGFib3V0V2hhdC5zdWJzdHJpbmcoMTIsIGFib3V0V2hhdC5sZW5ndGgoKSAtIDEyKS51
dGY4KCkuZGF0YSgpKTsgLy8gMTIgaXMgbGVuZ3RoIG9mICJjYWNoZT9xdWVyeT0iLgorICAgICAg
ICByZXN1bHQuYXBwZW5kKFN0cmluZygiPGh0bWw+PGhlYWQ+PHRpdGxlPkJsYWNrQmVycnkgQnJv
d3NlciBEaXNrIENhY2hlPC90aXRsZT48L2hlYWQ+PGJvZHk+IikpOworICAgICAgICByZXN1bHQu
YXBwZW5kKFN0cmluZyhrZXkuZGF0YSgpKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5n
KCI8aHI+IikpOworICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZyhjbGllbnQtPmdlbmVyYXRl
SHRtbEZyYWdtZW50Rm9yQ2FjaGVIZWFkZXJzKGtleSkuZGF0YSgpKSk7CisgICAgICAgIHJlc3Vs
dC5hcHBlbmQoU3RyaW5nKCI8L2JvZHk+PC9odG1sPiIpKTsKKyAgICB9IGVsc2UgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKGFib3V0V2hhdCwgImNhY2hlIikpIHsKKyAgICAgICAgQmxhY2tCZXJyeTo6
UGxhdGZvcm06OkNsaWVudCogY2xpZW50ID0gQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNsaWVudDo6
Z2V0KCk7CisgICAgICAgIEFTU0VSVChjbGllbnQpOworICAgICAgICByZXN1bHQuYXBwZW5kKFN0
cmluZygiPGh0bWw+PGhlYWQ+PHRpdGxlPkJsYWNrQmVycnkgQnJvd3NlciBEaXNrIENhY2hlPC90
aXRsZT48L2hlYWQ+PGJvZHk+IikpOworICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZyhjbGll
bnQtPmdlbmVyYXRlSHRtbEZyYWdtZW50Rm9yQ2FjaGVLZXlzKCkuZGF0YSgpKSk7CisgICAgICAg
IHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8L2JvZHk+PC9odG1sPiIpKTsKKyNpZiAhZGVmaW5lZChQ
VUJMSUNfQlVJTEQpIHx8ICFQVUJMSUNfQlVJTEQKKyAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKGFib3V0V2hhdCwgImNhY2hlL2Rpc2FibGUiKSkgeworICAgICAgICBCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6Q2xpZW50KiBjbGllbnQgPSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q2xpZW50
OjpnZXQoKTsKKyAgICAgICAgQVNTRVJUKGNsaWVudCk7CisgICAgICAgIGNsaWVudC0+c2V0RGlz
a0NhY2hlRW5hYmxlZChmYWxzZSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8aHRt
bD48aGVhZD48dGl0bGU+QmxhY2tCZXJyeSBCcm93c2VyIERpc2sgQ2FjaGU8L3RpdGxlPjwvaGVh
ZD48Ym9keT5IdHRwIGRpc2sgY2FjaGUgaXMgZGlzYWJsZWQuPC9ib2R5PjwvaHRtbD4iKSk7Cisg
ICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhYm91dFdoYXQsICJjYWNoZS9lbmFibGUi
KSkgeworICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q2xpZW50KiBjbGllbnQgPSBCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6Q2xpZW50OjpnZXQoKTsKKyAgICAgICAgQVNTRVJUKGNsaWVudCk7
CisgICAgICAgIGNsaWVudC0+c2V0RGlza0NhY2hlRW5hYmxlZCh0cnVlKTsKKyAgICAgICAgcmVz
dWx0LmFwcGVuZChTdHJpbmcoIjxodG1sPjxoZWFkPjx0aXRsZT5CbGFja0JlcnJ5IEJyb3dzZXIg
RGlzayBDYWNoZTwvdGl0bGU+PC9oZWFkPjxib2R5Pkh0dHAgZGlzayBjYWNoZSBpcyBlbmFibGVk
LjwvYm9keT48L2h0bWw+IikpOworICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYWJv
dXRXaGF0LCAiY29va2llIikpIHsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmcoIjxodG1s
PjxoZWFkPjx0aXRsZT5CbGFja0JlcnJ5IEJyb3dzZXIgY29va2llIGluZm9ybWF0aW9uPC90aXRs
ZT48L2hlYWQ+PGJvZHk+IikpOworICAgICAgICByZXN1bHQuYXBwZW5kKGNvb2tpZU1hbmFnZXIo
KS5nZW5lcmF0ZUh0bWxGcmFnbWVudEZvckNvb2tpZXMoKSk7CisgICAgICAgIHJlc3VsdC5hcHBl
bmQoU3RyaW5nKCI8L2JvZHk+PC9odG1sPiIpKTsKKyAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKGFib3V0V2hhdCwgInZlcnNpb24iKSkgeworICAgICAgICByZXN1bHQuYXBwZW5kKHdy
aXRlSGVhZGVyKCJWZXJzaW9uIikpOworICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZygiPGRp
diBjbGFzcz0nYm94Jz48ZGl2IGNsYXNzPSdib3gtdGl0bGUnPkJ1aWxkIFRpbWU8L2Rpdj48YnI+
IikpOworICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
QlVJTERUSU1FKSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8L2Rpdj48YnI+PGRp
diBzdHlsZT0nZm9udC1zaXplOjEwcHg7dGV4dC1hbGlnbjpjZW50ZXI7Jz5BbHNvIHNlZSB0aGUg
PEEgaHJlZj0nYWJvdXQ6YnVpbGQnPmJ1aWxkIGluZm9ybWF0aW9uPC9BPi48L2JvZHk+PC9odG1s
PiIpKTsKKyAgICB9IGVsc2UgaWYgKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpkZWJ1Z1NldHRpbmco
KSA+IDAgJiYgZXF1YWxJZ25vcmluZ0Nhc2UoYWJvdXRXaGF0LCAiY29uZmlnIikpCisgICAgICAg
IHJlc3VsdCA9IGNvbmZpZ1BhZ2UoKTsKKyNlbmRpZgorICAgIGVsc2UgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKGFib3V0V2hhdCwgIm1lbW9yeSIpKQorICAgICAgICByZXN1bHQgPSBtZW1vcnlQYWdl
KCk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIH0g
Ly8gbmFtZXNwYWNlIEJsYWNrQmVycnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2ti
ZXJyeS9XZWJLaXRTdXBwb3J0L0Fib3V0RGF0YS5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L1dlYktpdFN1cHBvcnQvQWJvdXREYXRhLmgKaW5kZXggODA1MDU0Zi4uMGUxMWE2MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvQWJvdXREYXRhLmgK
KysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvQWJvdXREYXRhLmgK
QEAgLTI0LDggKzI0LDcgQEAKIG5hbWVzcGFjZSBCbGFja0JlcnJ5IHsKIG5hbWVzcGFjZSBXZWJL
aXQgewogCi1TdHJpbmcgY29uZmlnUGFnZSgpOwotU3RyaW5nIG1lbW9yeVBhZ2UoKTsKK1N0cmlu
ZyBhYm91dERhdGEoU3RyaW5nIGFib3V0V2hhdCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
fSAvLyBuYW1lc3BhY2UgQmxhY2tCZXJyeQo=
</data>
<flag name="review"
          id="162891"
          type_id="1"
          status="-"
          setter="rwlbuis"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153852</attachid>
            <date>2012-07-23 13:39:01 -0700</date>
            <delta_ts>2012-07-23 14:05:50 -0700</delta_ts>
            <desc>More cleanups</desc>
            <filename>91541.patch</filename>
            <type>text/plain</type>
            <size>16985</size>
            <attacher name="Yong Li">yong.li.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCmluZGV4IGI1Njg2NzAuLjQ4
N2ExN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcApAQCAtMTks
OCArMTksNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKIAot
I2luY2x1ZGUgIkFib3V0RGF0YS5oIgotI2luY2x1ZGUgIkFib3V0VGVtcGxhdGUuaHRtbC5jcHAi
CiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCIKICNpbmNsdWRlICJBdXRvZmls
bE1hbmFnZXIuaCIKICNpbmNsdWRlICJCYWNrRm9yd2FyZENvbnRyb2xsZXIuaCIKQEAgLTE1Nyw4
ICsxNTUsNiBAQAogI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybU1vdXNlRXZlbnQuaD4KICNp
bmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1TY3JlZW4uaD4KICNpbmNsdWRlIDxCbGFja0JlcnJ5
UGxhdGZvcm1TZXR0aW5ncy5oPgotI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybVdlYktpdENy
ZWRpdHMuaD4KLSNpbmNsdWRlIDxCdWlsZEluZm9ybWF0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvQVBJQ2FzdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ29udGV4dFJl
Zi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmLmg+CkBAIC02MTksODQg
KzYxNSw2IEBAIHByaXZhdGU6CiAgICAgfQogfTsKIAotYm9vbCBXZWJQYWdlUHJpdmF0ZTo6bG9h
ZEFib3V0KGNvbnN0IGNoYXIqIGFib3V0VVJMKQotewotICAgIGlmIChzdHJuY2FzZWNtcChhYm91
dFVSTCwgImFib3V0OiIsIDYpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBGaXJz
dCA2IGNoYXJzIGFyZSAiYWJvdXQ6Ii4KLSAgICBTdHJpbmcgYWJvdXRXaGF0KGFib3V0VVJMICsg
Nik7Ci0KLSAgICBTdHJpbmcgcmVzdWx0OwotCi0gICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGFi
b3V0V2hhdCwgImNyZWRpdHMiKSkgewotICAgICAgICByZXN1bHQuYXBwZW5kKHdyaXRlSGVhZGVy
KCJDcmVkaXRzIikpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZygiPHN0eWxlPiAuYWJv
dXQge3BhZGRpbmc6MTRweDt9IDwvc3R5bGU+IikpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0
cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V0VCS0lUQ1JFRElUUykpOwotICAgICAgICByZXN1
bHQuYXBwZW5kKFN0cmluZygiPC9ib2R5PjwvaHRtbD4iKSk7Ci0gICAgfSBlbHNlIGlmIChhYm91
dFdoYXQuc3RhcnRzV2l0aCgiY2FjaGU/cXVlcnk9IiwgZmFsc2UpKSB7Ci0gICAgICAgIEJsYWNr
QmVycnk6OlBsYXRmb3JtOjpDbGllbnQqIGNsaWVudCA9IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpD
bGllbnQ6OmdldCgpOwotICAgICAgICBBU1NFUlQoY2xpZW50KTsKLSAgICAgICAgc3RkOjpzdHJp
bmcga2V5KGFib3V0V2hhdC5zdWJzdHJpbmcoMTIsIGFib3V0V2hhdC5sZW5ndGgoKSAtIDEyKS51
dGY4KCkuZGF0YSgpKTsgLy8gMTIgaXMgbGVuZ3RoIG9mICJjYWNoZT9xdWVyeT0iLgotICAgICAg
ICByZXN1bHQuYXBwZW5kKFN0cmluZygiPGh0bWw+PGhlYWQ+PHRpdGxlPkJsYWNrQmVycnkgQnJv
d3NlciBEaXNrIENhY2hlPC90aXRsZT48L2hlYWQ+PGJvZHk+IikpOwotICAgICAgICByZXN1bHQu
YXBwZW5kKFN0cmluZyhrZXkuZGF0YSgpKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5n
KCI8aHI+IikpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZyhjbGllbnQtPmdlbmVyYXRl
SHRtbEZyYWdtZW50Rm9yQ2FjaGVIZWFkZXJzKGtleSkuZGF0YSgpKSk7Ci0gICAgICAgIHJlc3Vs
dC5hcHBlbmQoU3RyaW5nKCI8L2JvZHk+PC9odG1sPiIpKTsKLSAgICB9IGVsc2UgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKGFib3V0V2hhdCwgImNhY2hlIikpIHsKLSAgICAgICAgQmxhY2tCZXJyeTo6
UGxhdGZvcm06OkNsaWVudCogY2xpZW50ID0gQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNsaWVudDo6
Z2V0KCk7Ci0gICAgICAgIEFTU0VSVChjbGllbnQpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0
cmluZygiPGh0bWw+PGhlYWQ+PHRpdGxlPkJsYWNrQmVycnkgQnJvd3NlciBEaXNrIENhY2hlPC90
aXRsZT48L2hlYWQ+PGJvZHk+IikpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZyhjbGll
bnQtPmdlbmVyYXRlSHRtbEZyYWdtZW50Rm9yQ2FjaGVLZXlzKCkuZGF0YSgpKSk7Ci0gICAgICAg
IHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8L2JvZHk+PC9odG1sPiIpKTsKLSNpZiAhZGVmaW5lZChQ
VUJMSUNfQlVJTEQpIHx8ICFQVUJMSUNfQlVJTEQKLSAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKGFib3V0V2hhdCwgImNhY2hlL2Rpc2FibGUiKSkgewotICAgICAgICBCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6Q2xpZW50KiBjbGllbnQgPSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q2xpZW50
OjpnZXQoKTsKLSAgICAgICAgQVNTRVJUKGNsaWVudCk7Ci0gICAgICAgIGNsaWVudC0+c2V0RGlz
a0NhY2hlRW5hYmxlZChmYWxzZSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8aHRt
bD48aGVhZD48dGl0bGU+QmxhY2tCZXJyeSBCcm93c2VyIERpc2sgQ2FjaGU8L3RpdGxlPjwvaGVh
ZD48Ym9keT5IdHRwIGRpc2sgY2FjaGUgaXMgZGlzYWJsZWQuPC9ib2R5PjwvaHRtbD4iKSk7Ci0g
ICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhYm91dFdoYXQsICJjYWNoZS9lbmFibGUi
KSkgewotICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q2xpZW50KiBjbGllbnQgPSBCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6Q2xpZW50OjpnZXQoKTsKLSAgICAgICAgQVNTRVJUKGNsaWVudCk7
Ci0gICAgICAgIGNsaWVudC0+c2V0RGlza0NhY2hlRW5hYmxlZCh0cnVlKTsKLSAgICAgICAgcmVz
dWx0LmFwcGVuZChTdHJpbmcoIjxodG1sPjxoZWFkPjx0aXRsZT5CbGFja0JlcnJ5IEJyb3dzZXIg
RGlzayBDYWNoZTwvdGl0bGU+PC9oZWFkPjxib2R5Pkh0dHAgZGlzayBjYWNoZSBpcyBlbmFibGVk
LjwvYm9keT48L2h0bWw+IikpOwotICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYWJv
dXRXaGF0LCAiY29va2llIikpIHsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmcoIjxodG1s
PjxoZWFkPjx0aXRsZT5CbGFja0JlcnJ5IEJyb3dzZXIgY29va2llIGluZm9ybWF0aW9uPC90aXRs
ZT48L2hlYWQ+PGJvZHk+IikpOwotICAgICAgICByZXN1bHQuYXBwZW5kKGNvb2tpZU1hbmFnZXIo
KS5nZW5lcmF0ZUh0bWxGcmFnbWVudEZvckNvb2tpZXMoKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBl
bmQoU3RyaW5nKCI8L2JvZHk+PC9odG1sPiIpKTsKLSAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKGFib3V0V2hhdCwgInZlcnNpb24iKSkgewotICAgICAgICByZXN1bHQuYXBwZW5kKHdy
aXRlSGVhZGVyKCJWZXJzaW9uIikpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZygiPGRp
diBjbGFzcz0nYm94Jz48ZGl2IGNsYXNzPSdib3gtdGl0bGUnPkJ1aWxkIFRpbWU8L2Rpdj48YnI+
IikpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
QlVJTERUSU1FKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8L2Rpdj48YnI+PGRp
diBzdHlsZT0nZm9udC1zaXplOjEwcHg7dGV4dC1hbGlnbjpjZW50ZXI7Jz5BbHNvIHNlZSB0aGUg
PEEgaHJlZj0nYWJvdXQ6YnVpbGQnPmJ1aWxkIGluZm9ybWF0aW9uPC9BPi48L2JvZHk+PC9odG1s
PiIpKTsKLSAgICB9IGVsc2UgaWYgKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpkZWJ1Z1NldHRpbmco
KSA+IDAgJiYgZXF1YWxJZ25vcmluZ0Nhc2UoYWJvdXRXaGF0LCAiY29uZmlnIikpIHsKLSAgICAg
ICAgcmVzdWx0ID0gY29uZmlnUGFnZSgpOwotICAgIH0gZWxzZSBpZiAoQmxhY2tCZXJyeTo6UGxh
dGZvcm06OmRlYnVnU2V0dGluZygpID4gMCAmJiBlcXVhbElnbm9yaW5nQ2FzZShhYm91dFdoYXQs
ICJidWlsZCIpKSB7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQod3JpdGVIZWFkZXIoIkJ1aWxkIikp
OwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZygiPGRpdiBjbGFzcz0nYm94Jz48ZGl2IGNs
YXNzPSdib3gtdGl0bGUnPkJhc2ljPC9kaXY+PHRhYmxlPiIpKTsKLSAgICAgICAgcmVzdWx0LmFw
cGVuZChTdHJpbmcoIjx0cj48dGQ+QnVpbHQgT246ICA8L3RkPjx0ZD4iKSk7Ci0gICAgICAgIHJl
c3VsdC5hcHBlbmQoU3RyaW5nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpCVUlMRENPTVBVVEVSKSk7
Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8L3RkPjwvdHI+IikpOwotICAgICAgICBy
ZXN1bHQuYXBwZW5kKFN0cmluZygiPHRyPjx0ZD5CdWlsZCBVc2VyOiAgPC90ZD48dGQ+IikpOwot
ICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6QlVJTERV
U0VSKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8L3RkPjwvdHI+IikpOwotICAg
ICAgICByZXN1bHQuYXBwZW5kKFN0cmluZygiPHRyPjx0ZD5CdWlsZCBUaW1lOiAgPC90ZD48dGQ+
IikpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
QlVJTERUSU1FKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8L3RhYmxlPjwvZGl2
Pjxicj4iKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpCVUlMRElORk9fV0VCS0lUKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpCVUlMRElORk9fUExBVEZPUk0pKTsKLSAgICAgICAgcmVzdWx0
LmFwcGVuZChTdHJpbmcoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkJVSUxESU5GT19MSUJXRUJWSUVX
KSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8L2JvZHk+PC9odG1sPiIpKTsKLSAg
ICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGFib3V0V2hhdCwgIm1lbW9yeSIpKSB7Ci0g
ICAgICAgIHJlc3VsdCA9IG1lbW9yeVBhZ2UoKTsKLSNlbmRpZgotICAgIH0gZWxzZQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBsb2FkU3RyaW5nKHJlc3VsdC5sYXRpbjEoKS5kYXRhKCks
IGFib3V0VVJMLCAidGV4dC9odG1sIik7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIHZvaWQgV2Vi
UGFnZVByaXZhdGU6OmxvYWQoY29uc3QgY2hhciogdXJsLCBjb25zdCBjaGFyKiBuZXR3b3JrVG9r
ZW4sIGNvbnN0IGNoYXIqIG1ldGhvZCwgUGxhdGZvcm06Ok5ldHdvcmtSZXF1ZXN0OjpDYWNoZVBv
bGljeSBjYWNoZVBvbGljeSwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIGNv
bnN0IGNoYXIqIGNvbnN0KiBoZWFkZXJzLCBzaXplX3QgaGVhZGVyc0xlbmd0aCwgYm9vbCBpc0lu
aXRpYWwsIGJvb2wgbXVzdEhhbmRsZUludGVybmFsbHksIGJvb2wgZm9yY2VEb3dubG9hZCwgY29u
c3QgY2hhciogb3ZlcnJpZGVDb250ZW50VHlwZSwgY29uc3QgY2hhciogc3VnZ2VzdGVkU2F2ZU5h
bWUpCiB7CiAgICAgc3RvcEN1cnJlbnRMb2FkKCk7CkBAIC03NDcsOCArNjY1LDYgQEAgdm9pZCBX
ZWJQYWdlUHJpdmF0ZTo6bG9hZChjb25zdCBjaGFyKiB1cmwsIGNvbnN0IGNoYXIqIG5ldHdvcmtU
b2tlbiwgY29uc3QgY2hhcioKIAogdm9pZCBXZWJQYWdlOjpsb2FkKGNvbnN0IGNoYXIqIHVybCwg
Y29uc3QgY2hhciogbmV0d29ya1Rva2VuLCBib29sIGlzSW5pdGlhbCkKIHsKLSAgICBpZiAoZC0+
bG9hZEFib3V0KHVybCkpCi0gICAgICAgIHJldHVybjsKICAgICBkLT5sb2FkKHVybCwgbmV0d29y
a1Rva2VuLCAiR0VUIiwgUGxhdGZvcm06Ok5ldHdvcmtSZXF1ZXN0OjpVc2VQcm90b2NvbENhY2hl
UG9saWN5LCAwLCAwLCAwLCAwLCBpc0luaXRpYWwsIGZhbHNlKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlX3AuaCBiL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9BcGkvV2ViUGFnZV9wLmgKaW5kZXggYjRjYTkxNy4uNGNhNzZkMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlX3AuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VfcC5oCkBAIC05Nyw3ICs5Nyw2IEBAIHB1
YmxpYzoKICAgICBib29sIGhhbmRsZU1vdXNlRXZlbnQoV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2
ZW50Jik7CiAgICAgYm9vbCBoYW5kbGVXaGVlbEV2ZW50KFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxF
dmVudCYpOwogCi0gICAgYm9vbCBsb2FkQWJvdXQoY29uc3QgY2hhciogYWJvdXRVUkwpOwogICAg
IHZvaWQgbG9hZChjb25zdCBjaGFyKiB1cmwsIGNvbnN0IGNoYXIqIG5ldHdvcmtUb2tlbiwgY29u
c3QgY2hhciogbWV0aG9kLCBQbGF0Zm9ybTo6TmV0d29ya1JlcXVlc3Q6OkNhY2hlUG9saWN5LCBj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgY29uc3QgY2hhciogY29uc3QqIGhl
YWRlcnMsIHNpemVfdCBoZWFkZXJzTGVuZ3RoLCBib29sIGlzSW5pdGlhbCwgYm9vbCBtdXN0SGFu
ZGxlSW50ZXJuYWxseSA9IGZhbHNlLCBib29sIGZvcmNlRG93bmxvYWQgPSBmYWxzZSwgY29uc3Qg
Y2hhciogb3ZlcnJpZGVDb250ZW50VHlwZSA9ICIiLCBjb25zdCBjaGFyKiBzdWdnZXN0ZWRTYXZl
TmFtZSA9ICIiKTsKICAgICB2b2lkIGxvYWRTdHJpbmcoY29uc3QgY2hhciogc3RyaW5nLCBjb25z
dCBjaGFyKiBiYXNlVVJMLCBjb25zdCBjaGFyKiBtaW1lVHlwZSwgY29uc3QgY2hhciogZmFpbGlu
Z1VSTCA9IDApOwogICAgIGJvb2wgZXhlY3V0ZUphdmFTY3JpcHQoY29uc3QgY2hhciogc2NyaXB0
LCBKYXZhU2NyaXB0RGF0YVR5cGUmIHJldHVyblR5cGUsIFdlYlN0cmluZyYgcmV0dXJuVmFsdWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKaW5kZXggNmQzNDBkOC4uMjVlZGRjNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTItMDctMjMg
IFlvbmcgTGkgIDx5b2xpQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIE1vdmUgYWJv
dXQ6IFVSTCBoYW5kbGluZyBvdXQgb2YgV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE1NDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBQUiMgMTgxMzA0LgorICAgICAgICBNb3ZlIGFib3V0OiBV
UkwgaGFuZGxpbmcgdG8gdGhlIHJpZ2h0IHBsYWNlIChGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVy
cnk6OmNyZWF0ZURvY3VtZW50TG9hZGVyKSwgc28KKyAgICAgICAgcmVsb2FkIGFuZCBoaXN0b3J5
IG5hdmlnYXRpb24gY2FuIHdvcmsuCisgICAgICAgIE90aGVyIGNoYW5nZXM6IFJlbW92ZSBhYm91
dDp2ZXJzaW9uIHdoaWNoIG1ha2VzIGxpdHRsZSBzZW5zZS4gTWFrZSBhYm91dDptZW1vcnkgcGFy
dGlhbGx5IHZpc2libGUuCisKKyAgICAgICAgKiBBcGkvV2ViUGFnZS5jcHA6CisgICAgICAgIChC
bGFja0JlcnJ5OjpXZWJLaXQ6OldlYlBhZ2U6OmxvYWQpOiBSZW1vdmUgdGhlIGNhbGwgdG8gbG9h
ZEFib3V0KCkKKyAgICAgICAgKiBBcGkvV2ViUGFnZV9wLmg6IFJlbW92ZSBsb2FkQWJvdXQoKQor
ICAgICAgICAoV2ViUGFnZVByaXZhdGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50QmxhY2tCZXJyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudEJsYWNrQmVycnk6OmNyZWF0ZURvY3VtZW50TG9hZGVyKTogQ29uc3RydWN0IGFib3V0
OiBkYXRhIGhlcmUuCisgICAgICAgICogV2ViS2l0U3VwcG9ydC9BYm91dERhdGEuY3BwOgorICAg
ICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpudW1iZXJUb0hUTUxUcik6IE1ha2UgaXQgc3RhdGlj
CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OmNvbmZpZ1BhZ2UpOiBNYWtlIGl0IHN0YXRp
YworICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjptZW1vcnlQYWdlKTogTWFrZSBpdCBzdGF0
aWMKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6Y2FjaGVQYWdlKToKKyAgICAgICAgKEJs
YWNrQmVycnk6OldlYktpdDo6YnVpbGRQYWdlKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktp
dDo6Y3JlZGl0c1BhZ2UpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0Ojpjb29raWVQYWdl
KToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6YWJvdXREYXRhKTogVGhlIG9ubHkgZXhw
b3J0IGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBIVE1MIHNvdXJjZSBmb3IgYSBnaXZlbiBhYm91dDog
VVJMLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Fib3V0RGF0
YS5oOgorICAgICAgICAoV2ViS2l0KToKKwogMjAxMi0wNy0yMiAgS2VudCBUYW11cmEgIDx0a2Vu
dEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVuYW1lIEVOQUJMRV9NRVRFUl9UQUcgYW5kIEVO
QUJMRV9QUk9HUkVTU19UQUcgdG8gRU5BQkxFX01FVEVSX0VMRU1FTlQgYW5kIEVOQUJMRV9QUk9H
UkVTU19FTEVNRU5UIHJlc3BlY3RpdmVseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFj
a2JlcnJ5L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeS5jcHAgYi9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRC
bGFja0JlcnJ5LmNwcAppbmRleCA5ODJiMTNjLi40OTAyZjYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRCbGFja0Jl
cnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5LmNwcApAQCAtMTksNiArMTksNyBAQAogI2luY2x1ZGUg
ImNvbmZpZy5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeS5oIgogCisj
aW5jbHVkZSAiQWJvdXREYXRhLmgiCiAjaW5jbHVkZSAiQXV0b2ZpbGxNYW5hZ2VyLmgiCiAjaW5j
bHVkZSAiQmFja0ZvcndhcmRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiQmFja0ZvcndhcmRMaXN0
SW1wbC5oIgpAQCAtMzg2LDkgKzM4NywyMSBAQCBQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBG
cmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnk6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbgogICAg
ICAgICAgICAgbmV3UmVxdWVzdC5zZXRUb2tlbihvcmlnaW5hbFJlcXVlc3QudG9rZW4oKSk7CiAg
ICAgfQogCisgICAgU3Vic3RpdHV0ZURhdGEgc3Vic3RpdHV0ZURhdGFMb2NhbCA9IHN1YnN0aXR1
dGVEYXRhOworICAgIGlmIChpc01haW5GcmFtZSgpICYmIHJlcXVlc3QudXJsKCkucHJvdG9jb2xJ
cygiYWJvdXQiKSkgeworICAgICAgICAvLyBUaGUgZmlyc3QgNiBsZXR0ZXJzIGlzICJhYm91dDoi
CisgICAgICAgIFN0cmluZyBhYm91dFdoYXQgPSByZXF1ZXN0LnVybCgpLnN0cmluZygpLnN1YnN0
cmluZyg2KTsKKyAgICAgICAgU3RyaW5nIHNvdXJjZSA9IGFib3V0RGF0YShhYm91dFdoYXQpOwor
ICAgICAgICBpZiAoIXNvdXJjZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIC8vIEFsd2F5cyBp
Z25vcmUgZXhpc3Rpbmcgc3Vic3RpdHV0ZSBkYXRhIGlmIGFueS4KKyAgICAgICAgICAgIFdURjo6
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc291cmNl
LmlzOEJpdCgpID8gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oc291cmNlLmNoYXJhY3Rl
cnM4KCkpIDogc291cmNlLmxhdGluMSgpLmRhdGEoKSwgc291cmNlLmxlbmd0aCgpKTsKKyAgICAg
ICAgICAgIHN1YnN0aXR1dGVEYXRhTG9jYWwgPSBTdWJzdGl0dXRlRGF0YShidWZmZXIsICJ0ZXh0
L2h0bWwiLCAibGF0aW4xIiwgS1VSTCgpKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIC8vIEZJ
WE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBiZSBzaGFyZWQuCi0gICAgUmVmUHRyPERvY3VtZW50
TG9hZGVyPiBsb2FkZXIgPSBEb2N1bWVudExvYWRlcjo6Y3JlYXRlKG5ld1JlcXVlc3QsIHN1YnN0
aXR1dGVEYXRhKTsKLSAgICBpZiAoc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQorICAgIFJlZlB0
cjxEb2N1bWVudExvYWRlcj4gbG9hZGVyID0gRG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShuZXdSZXF1
ZXN0LCBzdWJzdGl0dXRlRGF0YUxvY2FsKTsKKyAgICBpZiAoc3Vic3RpdHV0ZURhdGFMb2NhbC5p
c1ZhbGlkKCkpCiAgICAgICAgIGxvYWRlci0+c2V0RGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZChm
YWxzZSk7CiAgICAgcmV0dXJuIGxvYWRlci5yZWxlYXNlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9BYm91dERhdGEuY3BwIGIvU291cmNl
L1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvQWJvdXREYXRhLmNwcAppbmRleCA3NDUx
NTc1Li4wMzBlODcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0
U3VwcG9ydC9BYm91dERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJL
aXRTdXBwb3J0L0Fib3V0RGF0YS5jcHAKQEAgLTIxLDEzICsyMSwxOSBAQAogCiAjaW5jbHVkZSAi
QWJvdXRUZW1wbGF0ZS5odG1sLmNwcCIKICNpbmNsdWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAi
Q29va2llTWFuYWdlci5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiTWVt
b3J5Q2FjaGUuaCIKICNpbmNsdWRlICJNZW1vcnlTdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAiU3Vy
ZmFjZVBvb2wuaCIKICNpbmNsdWRlICJXZWJLaXRWZXJzaW9uLmgiCiAKKyNpbmNsdWRlIDxCbGFj
a0JlcnJ5UGxhdGZvcm1DbGllbnQuaD4KKyNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1Mb2cu
aD4KKyNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1NZW1vcnkuaD4KICNpbmNsdWRlIDxCbGFj
a0JlcnJ5UGxhdGZvcm1TZXR0aW5ncy5oPgorI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybVdl
YktpdENyZWRpdHMuaD4KKyNpbmNsdWRlIDxCdWlsZEluZm9ybWF0aW9uLmg+CiAjaW5jbHVkZSA8
aGVhcC9IZWFwLmg+CiAjaW5jbHVkZSA8cHJvY2Vzcy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNH
bG9iYWxEYXRhLmg+CkBAIC01MCw3ICs1Niw3IEBAIHN0YXRpYyBTdHJpbmcgd3JpdGVGZWF0dXJl
cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdHJ1ZUxpc3QsIGNvbnN0IFZlY3RvcjxTdHJpbmc+CiAg
ICAgcmV0dXJuIHJldDsKIH0KIAotdGVtcGxhdGU8Y2xhc3MgVD4gU3RyaW5nIG51bWJlclRvSFRN
TFRyKGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFQgbnVtYmVyKQordGVtcGxhdGU8Y2xhc3Mg
VD4gc3RhdGljIFN0cmluZyBudW1iZXJUb0hUTUxUcihjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9u
LCBUIG51bWJlcikKIHsKICAgICByZXR1cm4gU3RyaW5nKCI8dHI+PHRkPiIpICsgZGVzY3JpcHRp
b24gKyAiPC90ZD48dGQ+IiArIFN0cmluZzo6bnVtYmVyKG51bWJlcikgKyAiPC90ZD48L3RyPiI7
CiB9CkBAIC02MCw3ICs2Niw3IEBAIHRlbXBsYXRlPD4gU3RyaW5nIG51bWJlclRvSFRNTFRyPGJv
b2w+KGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGJvb2wgdHJ1dGgpCiAgICAgcmV0dXJuIFN0
cmluZygiPHRyPjx0ZD4iKSArIGRlc2NyaXB0aW9uICsgIjwvdGQ+PHRkPiIgKyAodHJ1dGg/InRy
dWUiOiJmYWxzZSIpICsgIjwvdGQ+PC90cj4iOwogfQogCi1TdHJpbmcgY29uZmlnUGFnZSgpCitz
dGF0aWMgU3RyaW5nIGNvbmZpZ1BhZ2UoKQogewogICAgIFN0cmluZyBwYWdlOwogI2lmICFkZWZp
bmVkKFBVQkxJQ19CVUlMRCkgfHwgIVBVQkxJQ19CVUlMRApAQCAtMjAyLDcgKzIwOCw3IEBAIHN0
YXRpYyB2b2lkIGR1bXBKU0NUeXBlQ291bnRTZXRUb1RhYmxlSFRNTChTdHJpbmcmIHRhYmxlSFRN
TCwgSlNDOjpUeXBlQ291bnRTZXQqCiAgICAgICAgIHRhYmxlSFRNTCArPSBudW1iZXJUb0hUTUxU
cihpdGVyLT5maXJzdCwgaXRlci0+c2Vjb25kKTsKIH0KIAotU3RyaW5nIG1lbW9yeVBhZ2UoKQor
c3RhdGljIFN0cmluZyBtZW1vcnlQYWdlKCkKIHsKICAgICBTdHJpbmcgcGFnZTsKIApAQCAtMjU1
LDYgKzI2MSw4IEBAIFN0cmluZyBtZW1vcnlQYWdlKCkKICAgICBpZiAoIXN0YXQoU3RyaW5nOjpm
b3JtYXQoIi9wcm9jLyV1L2FzIiwgZ2V0cGlkKCkpLmxhdGluMSgpLmRhdGEoKSwgJnByb2Nlc3NJ
bmZvKSkKICAgICAgICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigiVG90YWwgbWFwcGVkIG1lbW9y
eSIsIHByb2Nlc3NJbmZvLnN0X3NpemUpOwogCisgICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigi
U3lzdGVtIGZyZWUgbWVtb3J5IiwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OnN5c3RlbUZyZWVNZW1v
cnkoKSk7CisKICAgICBwYWdlICs9ICI8L3RhYmxlPjwvZGl2Pjxicj4iOwogCiAgICAgcGFnZSAr
PSAiPGRpdiBjbGFzcz0nYm94Jz48ZGl2IGNsYXNzPSdib3gtdGl0bGUnPkpTIGVuZ2luZSBtZW1v
cnkgdXNhZ2U8L2Rpdj48dGFibGUgY2xhc3M9J2ZpeGVkLXRhYmxlJz48Y29sIHdpZHRoPTc1JT48
Y29sIHdpZHRoPTI1JT4iOwpAQCAtMjk5LDUgKzMwNywxMDcgQEAgU3RyaW5nIG1lbW9yeVBhZ2Uo
KQogICAgIHJldHVybiBwYWdlOwogfQogCitzdGF0aWMgU3RyaW5nIGNhY2hlUGFnZShTdHJpbmcg
Y2FjaGVDb21tYW5kKQoreworICAgIFN0cmluZyByZXN1bHQ7CisKKyAgICByZXN1bHQuYXBwZW5k
KFN0cmluZygiPGh0bWw+PGhlYWQ+PHRpdGxlPkJsYWNrQmVycnkgQnJvd3NlciBEaXNrIENhY2hl
PC90aXRsZT48L2hlYWQ+PGJvZHk+IikpOworCisgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNs
aWVudCogY2xpZW50ID0gQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNsaWVudDo6Z2V0KCk7CisgICAg
QVNTRVJUKGNsaWVudCk7CisKKyAgICBpZiAoY2FjaGVDb21tYW5kLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmVzdWx0LmFwcGVuZChTdHJpbmcoY2xpZW50LT5nZW5lcmF0ZUh0bWxGcmFnbWVudEZvckNh
Y2hlS2V5cygpLmRhdGEoKSkpOworICAgIGVsc2UgaWYgKGNhY2hlQ29tbWFuZC5zdGFydHNXaXRo
KCI/cXVlcnk9IiwgZmFsc2UpKSB7CisgICAgICAgIHN0ZDo6c3RyaW5nIGtleShjYWNoZUNvbW1h
bmQuc3Vic3RyaW5nKDcpLnV0ZjgoKS5kYXRhKCkpOyAvLyA3IGlzIGxlbmd0aCBvZiAicXVlcnk9
Ii4KKyAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmcoa2V5LmRhdGEoKSkpOworICAgICAgICBy
ZXN1bHQuYXBwZW5kKFN0cmluZygiPGhyPiIpKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJp
bmcoY2xpZW50LT5nZW5lcmF0ZUh0bWxGcmFnbWVudEZvckNhY2hlSGVhZGVycyhrZXkpLmRhdGEo
KSkpOworICAgIH0KKyNpZiAhZGVmaW5lZChQVUJMSUNfQlVJTEQpIHx8ICFQVUJMSUNfQlVJTEQK
KyAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShjYWNoZUNvbW1hbmQsICIvZGlzYWJsZSIp
KSB7CisgICAgICAgIGNsaWVudC0+c2V0RGlza0NhY2hlRW5hYmxlZChmYWxzZSk7CisgICAgICAg
IHJlc3VsdC5hcHBlbmQoIkh0dHAgZGlzayBjYWNoZSBpcyBkaXNhYmxlZC4iKTsKKyAgICB9IGVs
c2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGNhY2hlQ29tbWFuZCwgIi9lbmFibGUiKSkgeworICAg
ICAgICBjbGllbnQtPnNldERpc2tDYWNoZUVuYWJsZWQodHJ1ZSk7CisgICAgICAgIHJlc3VsdC5h
cHBlbmQoIkh0dHAgZGlzayBjYWNoZSBpcyBlbmFibGVkLiIpOworICAgIH0KKyNlbmRpZgorICAg
IGVsc2UgeworICAgICAgICAvLyBVbmtub3duIGNhY2hlIGNvbW1hbmQuCisgICAgICAgIHJldHVy
biBTdHJpbmcoKTsKKyAgICB9CisKKyAgICByZXN1bHQuYXBwZW5kKFN0cmluZygiPC9ib2R5Pjwv
aHRtbD4iKSk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgU3RyaW5nIGJ1aWxk
UGFnZSgpCit7CisgICAgU3RyaW5nIHJlc3VsdDsKKworICAgIHJlc3VsdC5hcHBlbmQod3JpdGVI
ZWFkZXIoIkJ1aWxkIikpOworICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8ZGl2IGNsYXNzPSdi
b3gnPjxkaXYgY2xhc3M9J2JveC10aXRsZSc+QmFzaWM8L2Rpdj48dGFibGU+IikpOworICAgIHJl
c3VsdC5hcHBlbmQoU3RyaW5nKCI8dHI+PHRkPkJ1aWx0IE9uOiAgPC90ZD48dGQ+IikpOworICAg
IHJlc3VsdC5hcHBlbmQoU3RyaW5nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpCVUlMRENPTVBVVEVS
KSk7CisgICAgcmVzdWx0LmFwcGVuZChTdHJpbmcoIjwvdGQ+PC90cj4iKSk7CisgICAgcmVzdWx0
LmFwcGVuZChTdHJpbmcoIjx0cj48dGQ+QnVpbGQgVXNlcjogIDwvdGQ+PHRkPiIpKTsKKyAgICBy
ZXN1bHQuYXBwZW5kKFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6QlVJTERVU0VSKSk7Cisg
ICAgcmVzdWx0LmFwcGVuZChTdHJpbmcoIjwvdGQ+PC90cj4iKSk7CisgICAgcmVzdWx0LmFwcGVu
ZChTdHJpbmcoIjx0cj48dGQ+QnVpbGQgVGltZTogIDwvdGQ+PHRkPiIpKTsKKyAgICByZXN1bHQu
YXBwZW5kKFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6QlVJTERUSU1FKSk7CisgICAgcmVz
dWx0LmFwcGVuZChTdHJpbmcoIjwvdGFibGU+PC9kaXY+PGJyPiIpKTsKKyAgICByZXN1bHQuYXBw
ZW5kKFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6QlVJTERJTkZPX1dFQktJVCkpOworICAg
IHJlc3VsdC5hcHBlbmQoU3RyaW5nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpCVUlMRElORk9fUExB
VEZPUk0pKTsKKyAgICByZXN1bHQuYXBwZW5kKFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
QlVJTERJTkZPX0xJQldFQlZJRVcpKTsKKyAgICByZXN1bHQuYXBwZW5kKFN0cmluZygiPC9ib2R5
PjwvaHRtbD4iKSk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgU3RyaW5nIGNy
ZWRpdHNQYWdlKCkKK3sKKyAgICBTdHJpbmcgcmVzdWx0OworCisgICAgcmVzdWx0LmFwcGVuZCh3
cml0ZUhlYWRlcigiQ3JlZGl0cyIpKTsKKyAgICByZXN1bHQuYXBwZW5kKFN0cmluZygiPHN0eWxl
PiAuYWJvdXQge3BhZGRpbmc6MTRweDt9IDwvc3R5bGU+IikpOworICAgIHJlc3VsdC5hcHBlbmQo
U3RyaW5nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXRUJLSVRDUkVESVRTKSk7CisgICAgcmVzdWx0
LmFwcGVuZChTdHJpbmcoIjwvYm9keT48L2h0bWw+IikpOworCisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKworc3RhdGljIFN0cmluZyBjb29raWVQYWdlKCkKK3sKKyAgICBTdHJpbmcgcmVzdWx0Owor
CisgICAgcmVzdWx0LmFwcGVuZChTdHJpbmcoIjxodG1sPjxoZWFkPjx0aXRsZT5CbGFja0JlcnJ5
IEJyb3dzZXIgY29va2llIGluZm9ybWF0aW9uPC90aXRsZT48L2hlYWQ+PGJvZHk+IikpOworICAg
IHJlc3VsdC5hcHBlbmQoY29va2llTWFuYWdlcigpLmdlbmVyYXRlSHRtbEZyYWdtZW50Rm9yQ29v
a2llcygpKTsKKyAgICByZXN1bHQuYXBwZW5kKFN0cmluZygiPC9ib2R5PjwvaHRtbD4iKSk7CisK
KyAgICByZXR1cm4gcmVzdWx0OworfQorCitTdHJpbmcgYWJvdXREYXRhKFN0cmluZyBhYm91dFdo
YXQpCit7CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGFib3V0V2hhdCwgImNyZWRpdHMiKSkK
KyAgICAgICAgcmV0dXJuIGNyZWRpdHNQYWdlKCk7CisgICAgZWxzZSBpZiAoYWJvdXRXaGF0LnN0
YXJ0c1dpdGgoImNhY2hlIikpCisgICAgICAgIHJldHVybiBjYWNoZVBhZ2UoYWJvdXRXaGF0LnN1
YnN0cmluZyg1KSk7CisgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYWJvdXRXaGF0LCAi
bWVtb3J5IikpCisgICAgICAgIHJldHVybiBtZW1vcnlQYWdlKCk7CisjaWYgIWRlZmluZWQoUFVC
TElDX0JVSUxEKSB8fCAhUFVCTElDX0JVSUxECisgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2UoYWJvdXRXaGF0LCAiY29va2llIikpCisgICAgICAgIHJldHVybiBjb29raWVQYWdlKCk7Cisg
ICAgZWxzZSBpZiAoQmxhY2tCZXJyeTo6UGxhdGZvcm06OmRlYnVnU2V0dGluZygpID4gMCAmJiBl
cXVhbElnbm9yaW5nQ2FzZShhYm91dFdoYXQsICJidWlsZCIpKQorICAgICAgICByZXR1cm4gYnVp
bGRQYWdlKCk7CisgICAgZWxzZSBpZiAoQmxhY2tCZXJyeTo6UGxhdGZvcm06OmRlYnVnU2V0dGlu
ZygpID4gMCAmJiBlcXVhbElnbm9yaW5nQ2FzZShhYm91dFdoYXQsICJjb25maWciKSkKKyAgICAg
ICAgcmV0dXJuIGNvbmZpZ1BhZ2UoKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIFN0cmluZygpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIH0gLy8gbmFtZXNwYWNlIEJsYWNrQmVycnkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0Fib3V0RGF0
YS5oIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvQWJvdXREYXRhLmgK
aW5kZXggODA1MDU0Zi4uMGUxMWE2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L1dlYktpdFN1cHBvcnQvQWJvdXREYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2Jl
cnJ5L1dlYktpdFN1cHBvcnQvQWJvdXREYXRhLmgKQEAgLTI0LDggKzI0LDcgQEAKIG5hbWVzcGFj
ZSBCbGFja0JlcnJ5IHsKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1TdHJpbmcgY29uZmlnUGFnZSgp
OwotU3RyaW5nIG1lbW9yeVBhZ2UoKTsKK1N0cmluZyBhYm91dERhdGEoU3RyaW5nIGFib3V0V2hh
dCk7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogfSAvLyBuYW1lc3BhY2UgQmxhY2tCZXJyeQo=
</data>
<flag name="review"
          id="162921"
          type_id="1"
          status="+"
          setter="rwlbuis"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153858</attachid>
            <date>2012-07-23 14:05:50 -0700</date>
            <delta_ts>2012-07-23 15:34:30 -0700</delta_ts>
            <desc>fix style</desc>
            <filename>91541.patch</filename>
            <type>text/plain</type>
            <size>16964</size>
            <attacher name="Yong Li">yong.li.webkit</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2UuY3BwCmluZGV4IGI1Njg2NzAuLjQ4
N2ExN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViUGFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlLmNwcApAQCAtMTks
OCArMTksNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlBhZ2UuaCIKIAot
I2luY2x1ZGUgIkFib3V0RGF0YS5oIgotI2luY2x1ZGUgIkFib3V0VGVtcGxhdGUuaHRtbC5jcHAi
CiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaCIKICNpbmNsdWRlICJBdXRvZmls
bE1hbmFnZXIuaCIKICNpbmNsdWRlICJCYWNrRm9yd2FyZENvbnRyb2xsZXIuaCIKQEAgLTE1Nyw4
ICsxNTUsNiBAQAogI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybU1vdXNlRXZlbnQuaD4KICNp
bmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1TY3JlZW4uaD4KICNpbmNsdWRlIDxCbGFja0JlcnJ5
UGxhdGZvcm1TZXR0aW5ncy5oPgotI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybVdlYktpdENy
ZWRpdHMuaD4KLSNpbmNsdWRlIDxCdWlsZEluZm9ybWF0aW9uLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvQVBJQ2FzdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ29udGV4dFJl
Zi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTU3RyaW5nUmVmLmg+CkBAIC02MTksODQg
KzYxNSw2IEBAIHByaXZhdGU6CiAgICAgfQogfTsKIAotYm9vbCBXZWJQYWdlUHJpdmF0ZTo6bG9h
ZEFib3V0KGNvbnN0IGNoYXIqIGFib3V0VVJMKQotewotICAgIGlmIChzdHJuY2FzZWNtcChhYm91
dFVSTCwgImFib3V0OiIsIDYpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBGaXJz
dCA2IGNoYXJzIGFyZSAiYWJvdXQ6Ii4KLSAgICBTdHJpbmcgYWJvdXRXaGF0KGFib3V0VVJMICsg
Nik7Ci0KLSAgICBTdHJpbmcgcmVzdWx0OwotCi0gICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGFi
b3V0V2hhdCwgImNyZWRpdHMiKSkgewotICAgICAgICByZXN1bHQuYXBwZW5kKHdyaXRlSGVhZGVy
KCJDcmVkaXRzIikpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZygiPHN0eWxlPiAuYWJv
dXQge3BhZGRpbmc6MTRweDt9IDwvc3R5bGU+IikpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0
cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6V0VCS0lUQ1JFRElUUykpOwotICAgICAgICByZXN1
bHQuYXBwZW5kKFN0cmluZygiPC9ib2R5PjwvaHRtbD4iKSk7Ci0gICAgfSBlbHNlIGlmIChhYm91
dFdoYXQuc3RhcnRzV2l0aCgiY2FjaGU/cXVlcnk9IiwgZmFsc2UpKSB7Ci0gICAgICAgIEJsYWNr
QmVycnk6OlBsYXRmb3JtOjpDbGllbnQqIGNsaWVudCA9IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpD
bGllbnQ6OmdldCgpOwotICAgICAgICBBU1NFUlQoY2xpZW50KTsKLSAgICAgICAgc3RkOjpzdHJp
bmcga2V5KGFib3V0V2hhdC5zdWJzdHJpbmcoMTIsIGFib3V0V2hhdC5sZW5ndGgoKSAtIDEyKS51
dGY4KCkuZGF0YSgpKTsgLy8gMTIgaXMgbGVuZ3RoIG9mICJjYWNoZT9xdWVyeT0iLgotICAgICAg
ICByZXN1bHQuYXBwZW5kKFN0cmluZygiPGh0bWw+PGhlYWQ+PHRpdGxlPkJsYWNrQmVycnkgQnJv
d3NlciBEaXNrIENhY2hlPC90aXRsZT48L2hlYWQ+PGJvZHk+IikpOwotICAgICAgICByZXN1bHQu
YXBwZW5kKFN0cmluZyhrZXkuZGF0YSgpKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5n
KCI8aHI+IikpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZyhjbGllbnQtPmdlbmVyYXRl
SHRtbEZyYWdtZW50Rm9yQ2FjaGVIZWFkZXJzKGtleSkuZGF0YSgpKSk7Ci0gICAgICAgIHJlc3Vs
dC5hcHBlbmQoU3RyaW5nKCI8L2JvZHk+PC9odG1sPiIpKTsKLSAgICB9IGVsc2UgaWYgKGVxdWFs
SWdub3JpbmdDYXNlKGFib3V0V2hhdCwgImNhY2hlIikpIHsKLSAgICAgICAgQmxhY2tCZXJyeTo6
UGxhdGZvcm06OkNsaWVudCogY2xpZW50ID0gQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNsaWVudDo6
Z2V0KCk7Ci0gICAgICAgIEFTU0VSVChjbGllbnQpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0
cmluZygiPGh0bWw+PGhlYWQ+PHRpdGxlPkJsYWNrQmVycnkgQnJvd3NlciBEaXNrIENhY2hlPC90
aXRsZT48L2hlYWQ+PGJvZHk+IikpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZyhjbGll
bnQtPmdlbmVyYXRlSHRtbEZyYWdtZW50Rm9yQ2FjaGVLZXlzKCkuZGF0YSgpKSk7Ci0gICAgICAg
IHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8L2JvZHk+PC9odG1sPiIpKTsKLSNpZiAhZGVmaW5lZChQ
VUJMSUNfQlVJTEQpIHx8ICFQVUJMSUNfQlVJTEQKLSAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKGFib3V0V2hhdCwgImNhY2hlL2Rpc2FibGUiKSkgewotICAgICAgICBCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6Q2xpZW50KiBjbGllbnQgPSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q2xpZW50
OjpnZXQoKTsKLSAgICAgICAgQVNTRVJUKGNsaWVudCk7Ci0gICAgICAgIGNsaWVudC0+c2V0RGlz
a0NhY2hlRW5hYmxlZChmYWxzZSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8aHRt
bD48aGVhZD48dGl0bGU+QmxhY2tCZXJyeSBCcm93c2VyIERpc2sgQ2FjaGU8L3RpdGxlPjwvaGVh
ZD48Ym9keT5IdHRwIGRpc2sgY2FjaGUgaXMgZGlzYWJsZWQuPC9ib2R5PjwvaHRtbD4iKSk7Ci0g
ICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShhYm91dFdoYXQsICJjYWNoZS9lbmFibGUi
KSkgewotICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6Q2xpZW50KiBjbGllbnQgPSBCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6Q2xpZW50OjpnZXQoKTsKLSAgICAgICAgQVNTRVJUKGNsaWVudCk7
Ci0gICAgICAgIGNsaWVudC0+c2V0RGlza0NhY2hlRW5hYmxlZCh0cnVlKTsKLSAgICAgICAgcmVz
dWx0LmFwcGVuZChTdHJpbmcoIjxodG1sPjxoZWFkPjx0aXRsZT5CbGFja0JlcnJ5IEJyb3dzZXIg
RGlzayBDYWNoZTwvdGl0bGU+PC9oZWFkPjxib2R5Pkh0dHAgZGlzayBjYWNoZSBpcyBlbmFibGVk
LjwvYm9keT48L2h0bWw+IikpOwotICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYWJv
dXRXaGF0LCAiY29va2llIikpIHsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmcoIjxodG1s
PjxoZWFkPjx0aXRsZT5CbGFja0JlcnJ5IEJyb3dzZXIgY29va2llIGluZm9ybWF0aW9uPC90aXRs
ZT48L2hlYWQ+PGJvZHk+IikpOwotICAgICAgICByZXN1bHQuYXBwZW5kKGNvb2tpZU1hbmFnZXIo
KS5nZW5lcmF0ZUh0bWxGcmFnbWVudEZvckNvb2tpZXMoKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBl
bmQoU3RyaW5nKCI8L2JvZHk+PC9odG1sPiIpKTsKLSAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3Jp
bmdDYXNlKGFib3V0V2hhdCwgInZlcnNpb24iKSkgewotICAgICAgICByZXN1bHQuYXBwZW5kKHdy
aXRlSGVhZGVyKCJWZXJzaW9uIikpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZygiPGRp
diBjbGFzcz0nYm94Jz48ZGl2IGNsYXNzPSdib3gtdGl0bGUnPkJ1aWxkIFRpbWU8L2Rpdj48YnI+
IikpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
QlVJTERUSU1FKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8L2Rpdj48YnI+PGRp
diBzdHlsZT0nZm9udC1zaXplOjEwcHg7dGV4dC1hbGlnbjpjZW50ZXI7Jz5BbHNvIHNlZSB0aGUg
PEEgaHJlZj0nYWJvdXQ6YnVpbGQnPmJ1aWxkIGluZm9ybWF0aW9uPC9BPi48L2JvZHk+PC9odG1s
PiIpKTsKLSAgICB9IGVsc2UgaWYgKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpkZWJ1Z1NldHRpbmco
KSA+IDAgJiYgZXF1YWxJZ25vcmluZ0Nhc2UoYWJvdXRXaGF0LCAiY29uZmlnIikpIHsKLSAgICAg
ICAgcmVzdWx0ID0gY29uZmlnUGFnZSgpOwotICAgIH0gZWxzZSBpZiAoQmxhY2tCZXJyeTo6UGxh
dGZvcm06OmRlYnVnU2V0dGluZygpID4gMCAmJiBlcXVhbElnbm9yaW5nQ2FzZShhYm91dFdoYXQs
ICJidWlsZCIpKSB7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQod3JpdGVIZWFkZXIoIkJ1aWxkIikp
OwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZygiPGRpdiBjbGFzcz0nYm94Jz48ZGl2IGNs
YXNzPSdib3gtdGl0bGUnPkJhc2ljPC9kaXY+PHRhYmxlPiIpKTsKLSAgICAgICAgcmVzdWx0LmFw
cGVuZChTdHJpbmcoIjx0cj48dGQ+QnVpbHQgT246ICA8L3RkPjx0ZD4iKSk7Ci0gICAgICAgIHJl
c3VsdC5hcHBlbmQoU3RyaW5nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpCVUlMRENPTVBVVEVSKSk7
Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8L3RkPjwvdHI+IikpOwotICAgICAgICBy
ZXN1bHQuYXBwZW5kKFN0cmluZygiPHRyPjx0ZD5CdWlsZCBVc2VyOiAgPC90ZD48dGQ+IikpOwot
ICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6QlVJTERV
U0VSKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8L3RkPjwvdHI+IikpOwotICAg
ICAgICByZXN1bHQuYXBwZW5kKFN0cmluZygiPHRyPjx0ZD5CdWlsZCBUaW1lOiAgPC90ZD48dGQ+
IikpOwotICAgICAgICByZXN1bHQuYXBwZW5kKFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
QlVJTERUSU1FKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8L3RhYmxlPjwvZGl2
Pjxicj4iKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpCVUlMRElORk9fV0VCS0lUKSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpCVUlMRElORk9fUExBVEZPUk0pKTsKLSAgICAgICAgcmVzdWx0
LmFwcGVuZChTdHJpbmcoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkJVSUxESU5GT19MSUJXRUJWSUVX
KSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8L2JvZHk+PC9odG1sPiIpKTsKLSAg
ICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGFib3V0V2hhdCwgIm1lbW9yeSIpKSB7Ci0g
ICAgICAgIHJlc3VsdCA9IG1lbW9yeVBhZ2UoKTsKLSNlbmRpZgotICAgIH0gZWxzZQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBsb2FkU3RyaW5nKHJlc3VsdC5sYXRpbjEoKS5kYXRhKCks
IGFib3V0VVJMLCAidGV4dC9odG1sIik7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIHZvaWQgV2Vi
UGFnZVByaXZhdGU6OmxvYWQoY29uc3QgY2hhciogdXJsLCBjb25zdCBjaGFyKiBuZXR3b3JrVG9r
ZW4sIGNvbnN0IGNoYXIqIG1ldGhvZCwgUGxhdGZvcm06Ok5ldHdvcmtSZXF1ZXN0OjpDYWNoZVBv
bGljeSBjYWNoZVBvbGljeSwgY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IGRhdGFMZW5ndGgsIGNv
bnN0IGNoYXIqIGNvbnN0KiBoZWFkZXJzLCBzaXplX3QgaGVhZGVyc0xlbmd0aCwgYm9vbCBpc0lu
aXRpYWwsIGJvb2wgbXVzdEhhbmRsZUludGVybmFsbHksIGJvb2wgZm9yY2VEb3dubG9hZCwgY29u
c3QgY2hhciogb3ZlcnJpZGVDb250ZW50VHlwZSwgY29uc3QgY2hhciogc3VnZ2VzdGVkU2F2ZU5h
bWUpCiB7CiAgICAgc3RvcEN1cnJlbnRMb2FkKCk7CkBAIC03NDcsOCArNjY1LDYgQEAgdm9pZCBX
ZWJQYWdlUHJpdmF0ZTo6bG9hZChjb25zdCBjaGFyKiB1cmwsIGNvbnN0IGNoYXIqIG5ldHdvcmtU
b2tlbiwgY29uc3QgY2hhcioKIAogdm9pZCBXZWJQYWdlOjpsb2FkKGNvbnN0IGNoYXIqIHVybCwg
Y29uc3QgY2hhciogbmV0d29ya1Rva2VuLCBib29sIGlzSW5pdGlhbCkKIHsKLSAgICBpZiAoZC0+
bG9hZEFib3V0KHVybCkpCi0gICAgICAgIHJldHVybjsKICAgICBkLT5sb2FkKHVybCwgbmV0d29y
a1Rva2VuLCAiR0VUIiwgUGxhdGZvcm06Ok5ldHdvcmtSZXF1ZXN0OjpVc2VQcm90b2NvbENhY2hl
UG9saWN5LCAwLCAwLCAwLCAwLCBpc0luaXRpYWwsIGZhbHNlKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlX3AuaCBiL1NvdXJjZS9XZWJLaXQv
YmxhY2tiZXJyeS9BcGkvV2ViUGFnZV9wLmgKaW5kZXggYjRjYTkxNy4uNGNhNzZkMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0FwaS9XZWJQYWdlX3AuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYlBhZ2VfcC5oCkBAIC05Nyw3ICs5Nyw2IEBAIHB1
YmxpYzoKICAgICBib29sIGhhbmRsZU1vdXNlRXZlbnQoV2ViQ29yZTo6UGxhdGZvcm1Nb3VzZUV2
ZW50Jik7CiAgICAgYm9vbCBoYW5kbGVXaGVlbEV2ZW50KFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxF
dmVudCYpOwogCi0gICAgYm9vbCBsb2FkQWJvdXQoY29uc3QgY2hhciogYWJvdXRVUkwpOwogICAg
IHZvaWQgbG9hZChjb25zdCBjaGFyKiB1cmwsIGNvbnN0IGNoYXIqIG5ldHdvcmtUb2tlbiwgY29u
c3QgY2hhciogbWV0aG9kLCBQbGF0Zm9ybTo6TmV0d29ya1JlcXVlc3Q6OkNhY2hlUG9saWN5LCBj
b25zdCBjaGFyKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0aCwgY29uc3QgY2hhciogY29uc3QqIGhl
YWRlcnMsIHNpemVfdCBoZWFkZXJzTGVuZ3RoLCBib29sIGlzSW5pdGlhbCwgYm9vbCBtdXN0SGFu
ZGxlSW50ZXJuYWxseSA9IGZhbHNlLCBib29sIGZvcmNlRG93bmxvYWQgPSBmYWxzZSwgY29uc3Qg
Y2hhciogb3ZlcnJpZGVDb250ZW50VHlwZSA9ICIiLCBjb25zdCBjaGFyKiBzdWdnZXN0ZWRTYXZl
TmFtZSA9ICIiKTsKICAgICB2b2lkIGxvYWRTdHJpbmcoY29uc3QgY2hhciogc3RyaW5nLCBjb25z
dCBjaGFyKiBiYXNlVVJMLCBjb25zdCBjaGFyKiBtaW1lVHlwZSwgY29uc3QgY2hhciogZmFpbGlu
Z1VSTCA9IDApOwogICAgIGJvb2wgZXhlY3V0ZUphdmFTY3JpcHQoY29uc3QgY2hhciogc2NyaXB0
LCBKYXZhU2NyaXB0RGF0YVR5cGUmIHJldHVyblR5cGUsIFdlYlN0cmluZyYgcmV0dXJuVmFsdWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKaW5kZXggNmQzNDBkOC4uZmFlNDVhZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTItMDctMjMg
IFlvbmcgTGkgIDx5b2xpQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnldIE1vdmUgYWJv
dXQ6IFVSTCBoYW5kbGluZyBvdXQgb2YgV2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTE1NDEKKworICAgICAgICBSZXZpZXdlZCBieSBSb2Ig
QnVpcy4KKworICAgICAgICBQUiMgMTgxMzA0LgorICAgICAgICBNb3ZlIGFib3V0OiBVUkwgaGFu
ZGxpbmcgdG8gdGhlIHJpZ2h0IHBsYWNlIChGcmFtZUxvYWRlckNsaWVudEJsYWNrQmVycnk6OmNy
ZWF0ZURvY3VtZW50TG9hZGVyKSwgc28KKyAgICAgICAgcmVsb2FkIGFuZCBoaXN0b3J5IG5hdmln
YXRpb24gY2FuIHdvcmsuCisgICAgICAgIE90aGVyIGNoYW5nZXM6IFJlbW92ZSBhYm91dDp2ZXJz
aW9uIHdoaWNoIG1ha2VzIGxpdHRsZSBzZW5zZS4gTWFrZSBhYm91dDptZW1vcnkgcGFydGlhbGx5
IHZpc2libGUuCisKKyAgICAgICAgKiBBcGkvV2ViUGFnZS5jcHA6CisgICAgICAgIChCbGFja0Jl
cnJ5OjpXZWJLaXQ6OldlYlBhZ2U6OmxvYWQpOiBSZW1vdmUgdGhlIGNhbGwgdG8gbG9hZEFib3V0
KCkKKyAgICAgICAgKiBBcGkvV2ViUGFnZV9wLmg6IFJlbW92ZSBsb2FkQWJvdXQoKQorICAgICAg
ICAoV2ViUGFnZVByaXZhdGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50QmxhY2tCZXJyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dEJsYWNrQmVycnk6OmNyZWF0ZURvY3VtZW50TG9hZGVyKTogQ29uc3RydWN0IGFib3V0OiBkYXRh
IGhlcmUuCisgICAgICAgICogV2ViS2l0U3VwcG9ydC9BYm91dERhdGEuY3BwOgorICAgICAgICAo
QmxhY2tCZXJyeTo6V2ViS2l0OjpudW1iZXJUb0hUTUxUcik6IE1ha2UgaXQgc3RhdGljCisgICAg
ICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OmNvbmZpZ1BhZ2UpOiBNYWtlIGl0IHN0YXRpYworICAg
ICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjptZW1vcnlQYWdlKTogTWFrZSBpdCBzdGF0aWMKKyAg
ICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6Y2FjaGVQYWdlKToKKyAgICAgICAgKEJsYWNrQmVy
cnk6OldlYktpdDo6YnVpbGRQYWdlKToKKyAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6Y3Jl
ZGl0c1BhZ2UpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0Ojpjb29raWVQYWdlKToKKyAg
ICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6YWJvdXREYXRhKTogVGhlIG9ubHkgZXhwb3J0IGZ1
bmN0aW9uIHRoYXQgcmV0dXJucyBIVE1MIHNvdXJjZSBmb3IgYSBnaXZlbiBhYm91dDogVVJMLgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0Fib3V0RGF0YS5oOgor
ICAgICAgICAoV2ViS2l0KToKKwogMjAxMi0wNy0yMiAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmVuYW1lIEVOQUJMRV9NRVRFUl9UQUcgYW5kIEVOQUJMRV9Q
Uk9HUkVTU19UQUcgdG8gRU5BQkxFX01FVEVSX0VMRU1FTlQgYW5kIEVOQUJMRV9QUk9HUkVTU19F
TEVNRU5UIHJlc3BlY3RpdmVseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRCbGFja0Jl
cnJ5LmNwcAppbmRleCA5ODJiMTNjLi40OTAyZjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRCbGFja0JlcnJ5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRCbGFja0JlcnJ5LmNwcApAQCAtMTksNiArMTksNyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50QmxhY2tCZXJyeS5oIgogCisjaW5jbHVk
ZSAiQWJvdXREYXRhLmgiCiAjaW5jbHVkZSAiQXV0b2ZpbGxNYW5hZ2VyLmgiCiAjaW5jbHVkZSAi
QmFja0ZvcndhcmRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiQmFja0ZvcndhcmRMaXN0SW1wbC5o
IgpAQCAtMzg2LDkgKzM4NywyMSBAQCBQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBGcmFtZUxv
YWRlckNsaWVudEJsYWNrQmVycnk6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbgogICAgICAgICAg
ICAgbmV3UmVxdWVzdC5zZXRUb2tlbihvcmlnaW5hbFJlcXVlc3QudG9rZW4oKSk7CiAgICAgfQog
CisgICAgU3Vic3RpdHV0ZURhdGEgc3Vic3RpdHV0ZURhdGFMb2NhbCA9IHN1YnN0aXR1dGVEYXRh
OworICAgIGlmIChpc01haW5GcmFtZSgpICYmIHJlcXVlc3QudXJsKCkucHJvdG9jb2xJcygiYWJv
dXQiKSkgeworICAgICAgICAvLyBUaGUgZmlyc3QgNiBsZXR0ZXJzIGlzICJhYm91dDoiCisgICAg
ICAgIFN0cmluZyBhYm91dFdoYXQgPSByZXF1ZXN0LnVybCgpLnN0cmluZygpLnN1YnN0cmluZyg2
KTsKKyAgICAgICAgU3RyaW5nIHNvdXJjZSA9IGFib3V0RGF0YShhYm91dFdoYXQpOworICAgICAg
ICBpZiAoIXNvdXJjZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIC8vIEFsd2F5cyBpZ25vcmUg
ZXhpc3Rpbmcgc3Vic3RpdHV0ZSBkYXRhIGlmIGFueS4KKyAgICAgICAgICAgIFdURjo6UmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc291cmNlLmlzOEJp
dCgpID8gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oc291cmNlLmNoYXJhY3RlcnM4KCkp
IDogc291cmNlLmxhdGluMSgpLmRhdGEoKSwgc291cmNlLmxlbmd0aCgpKTsKKyAgICAgICAgICAg
IHN1YnN0aXR1dGVEYXRhTG9jYWwgPSBTdWJzdGl0dXRlRGF0YShidWZmZXIsICJ0ZXh0L2h0bWwi
LCAibGF0aW4xIiwgS1VSTCgpKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIC8vIEZJWE1FOiBU
aGlzIHNob3VsZCBwcm9iYWJseSBiZSBzaGFyZWQuCi0gICAgUmVmUHRyPERvY3VtZW50TG9hZGVy
PiBsb2FkZXIgPSBEb2N1bWVudExvYWRlcjo6Y3JlYXRlKG5ld1JlcXVlc3QsIHN1YnN0aXR1dGVE
YXRhKTsKLSAgICBpZiAoc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKQorICAgIFJlZlB0cjxEb2N1
bWVudExvYWRlcj4gbG9hZGVyID0gRG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShuZXdSZXF1ZXN0LCBz
dWJzdGl0dXRlRGF0YUxvY2FsKTsKKyAgICBpZiAoc3Vic3RpdHV0ZURhdGFMb2NhbC5pc1ZhbGlk
KCkpCiAgICAgICAgIGxvYWRlci0+c2V0RGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZChmYWxzZSk7
CiAgICAgcmV0dXJuIGxvYWRlci5yZWxlYXNlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9BYm91dERhdGEuY3BwIGIvU291cmNlL1dlYktp
dC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvQWJvdXREYXRhLmNwcAppbmRleCA3NDUxNTc1Li41
ZjU2NWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9y
dC9BYm91dERhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBw
b3J0L0Fib3V0RGF0YS5jcHAKQEAgLTIxLDEzICsyMSwxOSBAQAogCiAjaW5jbHVkZSAiQWJvdXRU
ZW1wbGF0ZS5odG1sLmNwcCIKICNpbmNsdWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAiQ29va2ll
TWFuYWdlci5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiTWVtb3J5Q2Fj
aGUuaCIKICNpbmNsdWRlICJNZW1vcnlTdGF0aXN0aWNzLmgiCiAjaW5jbHVkZSAiU3VyZmFjZVBv
b2wuaCIKICNpbmNsdWRlICJXZWJLaXRWZXJzaW9uLmgiCiAKKyNpbmNsdWRlIDxCbGFja0JlcnJ5
UGxhdGZvcm1DbGllbnQuaD4KKyNpbmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1Mb2cuaD4KKyNp
bmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1NZW1vcnkuaD4KICNpbmNsdWRlIDxCbGFja0JlcnJ5
UGxhdGZvcm1TZXR0aW5ncy5oPgorI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybVdlYktpdENy
ZWRpdHMuaD4KKyNpbmNsdWRlIDxCdWlsZEluZm9ybWF0aW9uLmg+CiAjaW5jbHVkZSA8aGVhcC9I
ZWFwLmg+CiAjaW5jbHVkZSA8cHJvY2Vzcy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNHbG9iYWxE
YXRhLmg+CkBAIC01MCw3ICs1Niw3IEBAIHN0YXRpYyBTdHJpbmcgd3JpdGVGZWF0dXJlcyhjb25z
dCBWZWN0b3I8U3RyaW5nPiYgdHJ1ZUxpc3QsIGNvbnN0IFZlY3RvcjxTdHJpbmc+CiAgICAgcmV0
dXJuIHJldDsKIH0KIAotdGVtcGxhdGU8Y2xhc3MgVD4gU3RyaW5nIG51bWJlclRvSFRNTFRyKGNv
bnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIFQgbnVtYmVyKQordGVtcGxhdGU8Y2xhc3MgVD4gc3Rh
dGljIFN0cmluZyBudW1iZXJUb0hUTUxUcihjb25zdCBTdHJpbmcmIGRlc2NyaXB0aW9uLCBUIG51
bWJlcikKIHsKICAgICByZXR1cm4gU3RyaW5nKCI8dHI+PHRkPiIpICsgZGVzY3JpcHRpb24gKyAi
PC90ZD48dGQ+IiArIFN0cmluZzo6bnVtYmVyKG51bWJlcikgKyAiPC90ZD48L3RyPiI7CiB9CkBA
IC02MCw3ICs2Niw3IEBAIHRlbXBsYXRlPD4gU3RyaW5nIG51bWJlclRvSFRNTFRyPGJvb2w+KGNv
bnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIGJvb2wgdHJ1dGgpCiAgICAgcmV0dXJuIFN0cmluZygi
PHRyPjx0ZD4iKSArIGRlc2NyaXB0aW9uICsgIjwvdGQ+PHRkPiIgKyAodHJ1dGg/InRydWUiOiJm
YWxzZSIpICsgIjwvdGQ+PC90cj4iOwogfQogCi1TdHJpbmcgY29uZmlnUGFnZSgpCitzdGF0aWMg
U3RyaW5nIGNvbmZpZ1BhZ2UoKQogewogICAgIFN0cmluZyBwYWdlOwogI2lmICFkZWZpbmVkKFBV
QkxJQ19CVUlMRCkgfHwgIVBVQkxJQ19CVUlMRApAQCAtMjAyLDcgKzIwOCw3IEBAIHN0YXRpYyB2
b2lkIGR1bXBKU0NUeXBlQ291bnRTZXRUb1RhYmxlSFRNTChTdHJpbmcmIHRhYmxlSFRNTCwgSlND
OjpUeXBlQ291bnRTZXQqCiAgICAgICAgIHRhYmxlSFRNTCArPSBudW1iZXJUb0hUTUxUcihpdGVy
LT5maXJzdCwgaXRlci0+c2Vjb25kKTsKIH0KIAotU3RyaW5nIG1lbW9yeVBhZ2UoKQorc3RhdGlj
IFN0cmluZyBtZW1vcnlQYWdlKCkKIHsKICAgICBTdHJpbmcgcGFnZTsKIApAQCAtMjU1LDYgKzI2
MSw4IEBAIFN0cmluZyBtZW1vcnlQYWdlKCkKICAgICBpZiAoIXN0YXQoU3RyaW5nOjpmb3JtYXQo
Ii9wcm9jLyV1L2FzIiwgZ2V0cGlkKCkpLmxhdGluMSgpLmRhdGEoKSwgJnByb2Nlc3NJbmZvKSkK
ICAgICAgICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigiVG90YWwgbWFwcGVkIG1lbW9yeSIsIHBy
b2Nlc3NJbmZvLnN0X3NpemUpOwogCisgICAgcGFnZSArPSBudW1iZXJUb0hUTUxUcigiU3lzdGVt
IGZyZWUgbWVtb3J5IiwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OnN5c3RlbUZyZWVNZW1vcnkoKSk7
CisKICAgICBwYWdlICs9ICI8L3RhYmxlPjwvZGl2Pjxicj4iOwogCiAgICAgcGFnZSArPSAiPGRp
diBjbGFzcz0nYm94Jz48ZGl2IGNsYXNzPSdib3gtdGl0bGUnPkpTIGVuZ2luZSBtZW1vcnkgdXNh
Z2U8L2Rpdj48dGFibGUgY2xhc3M9J2ZpeGVkLXRhYmxlJz48Y29sIHdpZHRoPTc1JT48Y29sIHdp
ZHRoPTI1JT4iOwpAQCAtMjk5LDUgKzMwNywxMTIgQEAgU3RyaW5nIG1lbW9yeVBhZ2UoKQogICAg
IHJldHVybiBwYWdlOwogfQogCitzdGF0aWMgU3RyaW5nIGNhY2hlUGFnZShTdHJpbmcgY2FjaGVD
b21tYW5kKQoreworICAgIFN0cmluZyByZXN1bHQ7CisKKyAgICByZXN1bHQuYXBwZW5kKFN0cmlu
ZygiPGh0bWw+PGhlYWQ+PHRpdGxlPkJsYWNrQmVycnkgQnJvd3NlciBEaXNrIENhY2hlPC90aXRs
ZT48L2hlYWQ+PGJvZHk+IikpOworCisgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNsaWVudCog
Y2xpZW50ID0gQmxhY2tCZXJyeTo6UGxhdGZvcm06OkNsaWVudDo6Z2V0KCk7CisgICAgQVNTRVJU
KGNsaWVudCk7CisKKyAgICBpZiAoY2FjaGVDb21tYW5kLmlzRW1wdHkoKSkKKyAgICAgICAgcmVz
dWx0LmFwcGVuZChTdHJpbmcoY2xpZW50LT5nZW5lcmF0ZUh0bWxGcmFnbWVudEZvckNhY2hlS2V5
cygpLmRhdGEoKSkpOworICAgIGVsc2UgaWYgKGNhY2hlQ29tbWFuZC5zdGFydHNXaXRoKCI/cXVl
cnk9IiwgZmFsc2UpKSB7CisgICAgICAgIHN0ZDo6c3RyaW5nIGtleShjYWNoZUNvbW1hbmQuc3Vi
c3RyaW5nKDcpLnV0ZjgoKS5kYXRhKCkpOyAvLyA3IGlzIGxlbmd0aCBvZiAicXVlcnk9Ii4KKyAg
ICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmcoa2V5LmRhdGEoKSkpOworICAgICAgICByZXN1bHQu
YXBwZW5kKFN0cmluZygiPGhyPiIpKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmcoY2xp
ZW50LT5nZW5lcmF0ZUh0bWxGcmFnbWVudEZvckNhY2hlSGVhZGVycyhrZXkpLmRhdGEoKSkpOwor
ICAgIH0KKyNpZiAhZGVmaW5lZChQVUJMSUNfQlVJTEQpIHx8ICFQVUJMSUNfQlVJTEQKKyAgICBl
bHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShjYWNoZUNvbW1hbmQsICIvZGlzYWJsZSIpKSB7Cisg
ICAgICAgIGNsaWVudC0+c2V0RGlza0NhY2hlRW5hYmxlZChmYWxzZSk7CisgICAgICAgIHJlc3Vs
dC5hcHBlbmQoIkh0dHAgZGlzayBjYWNoZSBpcyBkaXNhYmxlZC4iKTsKKyAgICB9IGVsc2UgaWYg
KGVxdWFsSWdub3JpbmdDYXNlKGNhY2hlQ29tbWFuZCwgIi9lbmFibGUiKSkgeworICAgICAgICBj
bGllbnQtPnNldERpc2tDYWNoZUVuYWJsZWQodHJ1ZSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQo
Ikh0dHAgZGlzayBjYWNoZSBpcyBlbmFibGVkLiIpOworICAgIH0KKyNlbmRpZgorICAgIGVsc2Ug
eworICAgICAgICAvLyBVbmtub3duIGNhY2hlIGNvbW1hbmQuCisgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKKyAgICB9CisKKyAgICByZXN1bHQuYXBwZW5kKFN0cmluZygiPC9ib2R5PjwvaHRtbD4i
KSk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgU3RyaW5nIGJ1aWxkUGFnZSgp
Cit7CisgICAgU3RyaW5nIHJlc3VsdDsKKworICAgIHJlc3VsdC5hcHBlbmQod3JpdGVIZWFkZXIo
IkJ1aWxkIikpOworICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nKCI8ZGl2IGNsYXNzPSdib3gnPjxk
aXYgY2xhc3M9J2JveC10aXRsZSc+QmFzaWM8L2Rpdj48dGFibGU+IikpOworICAgIHJlc3VsdC5h
cHBlbmQoU3RyaW5nKCI8dHI+PHRkPkJ1aWx0IE9uOiAgPC90ZD48dGQ+IikpOworICAgIHJlc3Vs
dC5hcHBlbmQoU3RyaW5nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpCVUlMRENPTVBVVEVSKSk7Cisg
ICAgcmVzdWx0LmFwcGVuZChTdHJpbmcoIjwvdGQ+PC90cj4iKSk7CisgICAgcmVzdWx0LmFwcGVu
ZChTdHJpbmcoIjx0cj48dGQ+QnVpbGQgVXNlcjogIDwvdGQ+PHRkPiIpKTsKKyAgICByZXN1bHQu
YXBwZW5kKFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6QlVJTERVU0VSKSk7CisgICAgcmVz
dWx0LmFwcGVuZChTdHJpbmcoIjwvdGQ+PC90cj4iKSk7CisgICAgcmVzdWx0LmFwcGVuZChTdHJp
bmcoIjx0cj48dGQ+QnVpbGQgVGltZTogIDwvdGQ+PHRkPiIpKTsKKyAgICByZXN1bHQuYXBwZW5k
KFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6QlVJTERUSU1FKSk7CisgICAgcmVzdWx0LmFw
cGVuZChTdHJpbmcoIjwvdGFibGU+PC9kaXY+PGJyPiIpKTsKKyAgICByZXN1bHQuYXBwZW5kKFN0
cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6QlVJTERJTkZPX1dFQktJVCkpOworICAgIHJlc3Vs
dC5hcHBlbmQoU3RyaW5nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpCVUlMRElORk9fUExBVEZPUk0p
KTsKKyAgICByZXN1bHQuYXBwZW5kKFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6QlVJTERJ
TkZPX0xJQldFQlZJRVcpKTsKKyAgICByZXN1bHQuYXBwZW5kKFN0cmluZygiPC9ib2R5PjwvaHRt
bD4iKSk7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgU3RyaW5nIGNyZWRpdHNQ
YWdlKCkKK3sKKyAgICBTdHJpbmcgcmVzdWx0OworCisgICAgcmVzdWx0LmFwcGVuZCh3cml0ZUhl
YWRlcigiQ3JlZGl0cyIpKTsKKyAgICByZXN1bHQuYXBwZW5kKFN0cmluZygiPHN0eWxlPiAuYWJv
dXQge3BhZGRpbmc6MTRweDt9IDwvc3R5bGU+IikpOworICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5n
KEJsYWNrQmVycnk6OlBsYXRmb3JtOjpXRUJLSVRDUkVESVRTKSk7CisgICAgcmVzdWx0LmFwcGVu
ZChTdHJpbmcoIjwvYm9keT48L2h0bWw+IikpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
c3RhdGljIFN0cmluZyBjb29raWVQYWdlKCkKK3sKKyAgICBTdHJpbmcgcmVzdWx0OworCisgICAg
cmVzdWx0LmFwcGVuZChTdHJpbmcoIjxodG1sPjxoZWFkPjx0aXRsZT5CbGFja0JlcnJ5IEJyb3dz
ZXIgY29va2llIGluZm9ybWF0aW9uPC90aXRsZT48L2hlYWQ+PGJvZHk+IikpOworICAgIHJlc3Vs
dC5hcHBlbmQoY29va2llTWFuYWdlcigpLmdlbmVyYXRlSHRtbEZyYWdtZW50Rm9yQ29va2llcygp
KTsKKyAgICByZXN1bHQuYXBwZW5kKFN0cmluZygiPC9ib2R5PjwvaHRtbD4iKSk7CisKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCitTdHJpbmcgYWJvdXREYXRhKFN0cmluZyBhYm91dFdoYXQpCit7
CisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGFib3V0V2hhdCwgImNyZWRpdHMiKSkKKyAgICAg
ICAgcmV0dXJuIGNyZWRpdHNQYWdlKCk7CisKKyAgICBpZiAoYWJvdXRXaGF0LnN0YXJ0c1dpdGgo
ImNhY2hlIikpCisgICAgICAgIHJldHVybiBjYWNoZVBhZ2UoYWJvdXRXaGF0LnN1YnN0cmluZyg1
KSk7CisKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYWJvdXRXaGF0LCAibWVtb3J5IikpCisg
ICAgICAgIHJldHVybiBtZW1vcnlQYWdlKCk7CisKKyNpZiAhZGVmaW5lZChQVUJMSUNfQlVJTEQp
IHx8ICFQVUJMSUNfQlVJTEQKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYWJvdXRXaGF0LCAi
Y29va2llIikpCisgICAgICAgIHJldHVybiBjb29raWVQYWdlKCk7CisKKyAgICBpZiAoQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OmRlYnVnU2V0dGluZygpID4gMCAmJiBlcXVhbElnbm9yaW5nQ2FzZShh
Ym91dFdoYXQsICJidWlsZCIpKQorICAgICAgICByZXR1cm4gYnVpbGRQYWdlKCk7CisKKyAgICBp
ZiAoQmxhY2tCZXJyeTo6UGxhdGZvcm06OmRlYnVnU2V0dGluZygpID4gMCAmJiBlcXVhbElnbm9y
aW5nQ2FzZShhYm91dFdoYXQsICJjb25maWciKSkKKyAgICAgICAgcmV0dXJuIGNvbmZpZ1BhZ2Uo
KTsKKyNlbmRpZgorCisgICAgcmV0dXJuIFN0cmluZygpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKIH0gLy8gbmFtZXNwYWNlIEJsYWNrQmVycnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0L0Fib3V0RGF0YS5oIGIvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvQWJvdXREYXRhLmgKaW5kZXggODA1MDU0Zi4uMGUxMWE2
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvQWJv
dXREYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvQWJv
dXREYXRhLmgKQEAgLTI0LDggKzI0LDcgQEAKIG5hbWVzcGFjZSBCbGFja0JlcnJ5IHsKIG5hbWVz
cGFjZSBXZWJLaXQgewogCi1TdHJpbmcgY29uZmlnUGFnZSgpOwotU3RyaW5nIG1lbW9yeVBhZ2Uo
KTsKK1N0cmluZyBhYm91dERhdGEoU3RyaW5nIGFib3V0V2hhdCk7CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAogfSAvLyBuYW1lc3BhY2UgQmxhY2tCZXJyeQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>