<?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>40254</bug_id>
          
          <creation_ts>2010-06-07 12:04:06 -0700</creation_ts>
          <short_desc>[Qt] FrameLoaderClientQt.cpp has coding-style errors</short_desc>
          <delta_ts>2011-04-06 19:04:05 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>EasyFix, Qt, QtTriaged</keywords>
          <priority>P5</priority>
          <bug_severity>Trivial</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Bakken">agbakken</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>jedrzej.nowacki</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>234985</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Bakken">agbakken</who>
    <bug_when>2010-06-07 12:04:06 -0700</bug_when>
    <thetext>[Qt] FrameLoaderClientQt.cpp has coding-style errors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234986</commentid>
    <comment_count>1</comment_count>
      <attachid>58068</attachid>
    <who name="Anders Bakken">agbakken</who>
    <bug_when>2010-06-07 12:04:34 -0700</bug_when>
    <thetext>Created attachment 58068
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235823</commentid>
    <comment_count>2</comment_count>
      <attachid>58068</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-06-09 09:19:18 -0700</bug_when>
    <thetext>Comment on attachment 58068
Patch

WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp:83
 +  static QString drtDescriptionSuitableForTestResult(WebCore::Frame* wframe)
wframe is an abbreviation and WebKit avoids those for variable names. Maybe webCoreFrame would be better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238349</commentid>
    <comment_count>3</comment_count>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2010-06-15 06:26:25 -0700</bug_when>
    <thetext>Personally I think that change should be avoided, you are touching most of the lines, it means that when somebody will call git blame he will find your patch on top. It is not end of the world, but it is annoying.

R- for incorect comments. A comment in the webkit should be a full english phrase ended with &apos;.&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380472</commentid>
    <comment_count>4</comment_count>
      <attachid>88445</attachid>
    <who name="Rafael Brandao">rafael.lobo</who>
    <bug_when>2011-04-06 09:23:24 -0700</bug_when>
    <thetext>Created attachment 88445
Fixing previous patch submitted by Anders Bakken to fix the coding-style on FrameLoaderClientQt.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380486</commentid>
    <comment_count>5</comment_count>
      <attachid>88445</attachid>
    <who name="Alexis Menard (darktears)">menard</who>
    <bug_when>2011-04-06 09:34:13 -0700</bug_when>
    <thetext>Comment on attachment 88445
Fixing previous patch submitted by Anders Bakken to fix the coding-style on FrameLoaderClientQt.cpp

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

&gt; Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp:47
&gt; +#include &quot;HistoryItem.h&quot;

I&apos;m not sure but this should go before HTMLAppletElement.h

&gt; Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp:91
&gt; +#include &lt;qfileinfo.h&gt;

can you use &lt;QFileInfo&gt; instead and mix it with the other Qt includes?

&gt; Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp:1053
&gt; +    // qDebug() &lt;&lt; &quot;FrameLoaderClientQt::dispatchWillSendRequest&quot; &lt;&lt; request.isNull() &lt;&lt; request.url().string`();

What is this `?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380532</commentid>
    <comment_count>6</comment_count>
      <attachid>88460</attachid>
    <who name="Rafael Brandao">rafael.lobo</who>
    <bug_when>2011-04-06 10:11:49 -0700</bug_when>
    <thetext>Created attachment 88460
My previous patch is now deprecated, some mistaken has been done. Check this one instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380537</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-06 10:13:56 -0700</bug_when>
    <thetext>Attachment 88460 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1

Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp:45:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp:60:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp:79:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 3 in 2 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>380572</commentid>
    <comment_count>8</comment_count>
      <attachid>88467</attachid>
    <who name="Rafael Brandao">rafael.lobo</who>
    <bug_when>2011-04-06 10:32:29 -0700</bug_when>
    <thetext>Created attachment 88467
Fixing previous patch submitted by Anders Bakken to fix the coding-style on FrameLoaderClientQt.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380887</commentid>
    <comment_count>9</comment_count>
      <attachid>88467</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-04-06 15:14:32 -0700</bug_when>
    <thetext>Comment on attachment 88467
Fixing previous patch submitted by Anders Bakken to fix the coding-style on FrameLoaderClientQt.cpp

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

&gt; Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp:97
&gt; +static QString drtDescriptionSuitableForTestResult(WebCore::Frame* webCoreFrame)

We normally just say coreFrame in Qt parts where we want to differentiate

&gt; Source/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp:252
&gt; +    // notImplemented();

I dont get why that is outcommented... either remove the comment or remove the line</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380986</commentid>
    <comment_count>10</comment_count>
      <attachid>88467</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-06 17:20:49 -0700</bug_when>
    <thetext>Comment on attachment 88467
Fixing previous patch submitted by Anders Bakken to fix the coding-style on FrameLoaderClientQt.cpp

Clearing flags on attachment: 88467

Committed r83125: &lt;http://trac.webkit.org/changeset/83125&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380987</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-06 17:21:00 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381055</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-06 19:04:05 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/83125 might have broken SnowLeopard Intel Release (Tests)
The following tests are not passing:
fast/dom/52776.html
fast/text/complex-text-opacity.html
fast/text/international/bidi-AN-after-L.html
fast/text/international/bidi-AN-after-empty-run.html
fast/text/international/bidi-CS-after-AN.html
fast/text/international/bidi-mirror-he-ar.html
fast/text/international/bidi-neutral-run.html
platform/mac/fast/text/international/Geeza-Pro-vertical-metrics-adjustment.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58068</attachid>
            <date>2010-06-07 12:04:34 -0700</date>
            <delta_ts>2010-06-09 16:30:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-40254-20100607120315.patch</filename>
            <type>text/plain</type>
            <size>12927</size>
            <attacher name="Anders Bakken">agbakken</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCmlu
ZGV4IGZkNThiNjllODYzOTNhMzRiODFhMWEwMDgxNjEyOGYwNjM1ODFhZmYuLmQ2YmU0ZWMwYzcx
OWFiNWY2MDlhYjUzYWI1MTdiNTU1ZWJhYWQ5MTYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9DaGFu
Z2VMb2cKKysrIGIvV2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEwLTA2
LTA3ICBBbmRlcnMgQmFra2VuICA8YWdiYWtrZW5AZ21haWwuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gRnJhbWVMb2FkZXJDbGllbnRR
dC5jcHAgaGFzIGNvZGluZy1zdHlsZSBlcnJvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMjU0CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKGRydERlc2NyaXB0aW9uU3VpdGFibGVG
b3JUZXN0UmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OkZy
YW1lTG9hZGVyQ2xpZW50UXQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRR
dDo6aGFzV2ViVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojpm
aW5pc2hlZExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6
dXNlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3Bh
dGNoRGlkUmVjZWl2ZUljb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRR
dDo6ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6dXBkYXRlR2xvYmFsSGlzdG9yeSk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpzaG91bGRHb1RvSGlzdG9yeUl0ZW0pOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y29tbWl0dGVkTG9hZCk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojpkb3dubG9hZCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpzaG91bGRVc2VDcmVkZW50aWFs
U3RvcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRj
aERpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dFF0OjpkaXNwYXRjaERpZEZhaWxMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50UXQ6OmRpc3BhdGNoQ3JlYXRlUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudFF0OjpvYmplY3RDb250ZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjop
OgorCiAyMDEwLTA2LTA2ICBBbnRvbmlvIEdvbWVzICA8dG9uaWtpdG9vQHdlYmtpdC5vcmc+LCBM
YXN6bG8gR29tYm9zICA8bGFzemxvLjEuZ29tYm9zQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBLZW5uZXRoIENocmlzdGlhbnNlbiwgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAgYi9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKaW5kZXggMjZiMDg5NWE3
OWRjNmZhMmM4ODA5ZWEzM2NhMWFlYjJjYTdkZjY4Ny4uNTZiMjYzMTU0YTU2NWViOTM1NjM0MDUw
ODVmYjRhMTQ3Y2Q0NDI0NiAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50UXQuY3BwCisrKyBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFF0LmNwcApAQCAtMzEsNTkgKzMxLDU4IEBACiAgKi8KIAogI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50UXQuaCIKKwogI2luY2x1ZGUg
IkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFt
ZXMuaCIKKyNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkZvcm1TdGF0ZS5o
IgotI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50UXQuaCIKICNpbmNsdWRlICJGcmFtZVRyZWUu
aCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKLSNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgot
I2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKLSNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNl
LmgiCi0jaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKLSNpbmNsdWRl
ICJQbHVnaW5EYXRhYmFzZS5oIgotI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5oIgotI2luY2x1
ZGUgIlJlbmRlclBhcnQuaCIKLSNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKLSNpbmNsdWRl
ICJIaXN0b3J5SXRlbS5oIgogI2luY2x1ZGUgIkhUTUxBcHBsZXRFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTEZvcm1FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFBsdWdJbkVsZW1lbnQuaCIKICNp
bmNsdWRlICJIVFRQUGFyc2Vycy5oIgorI2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgiCisjaW5jbHVk
ZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5j
bHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKKyNpbmNsdWRlICJQbHVnaW5E
YXRhYmFzZS5oIgorI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5oIgogI2luY2x1ZGUgIlFOZXR3
b3JrUmVwbHlIYW5kbGVyLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIgor
I2luY2x1ZGUgIlFXZWJQYWdlQ2xpZW50LmgiCisjaW5jbHVkZSAiUmVuZGVyUGFydC5oIgogI2lu
Y2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVJbnRlcm5h
bC5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVz
cG9uc2UuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0
U3RyaW5nLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKLSNpbmNsdWRlICJRV2ViUGFnZUNsaWVu
dC5oIgotCi0jaW5jbHVkZSAicXdlYnBhZ2UuaCIKLSNpbmNsdWRlICJxd2VicGFnZV9wLmgiCiAj
aW5jbHVkZSAicXdlYmZyYW1lLmgiCiAjaW5jbHVkZSAicXdlYmZyYW1lX3AuaCIKKyNpbmNsdWRl
ICJxd2ViaGlzdG9yeV9wLmgiCiAjaW5jbHVkZSAicXdlYmhpc3RvcnlpbnRlcmZhY2UuaCIKKyNp
bmNsdWRlICJxd2VicGFnZS5oIgorI2luY2x1ZGUgInF3ZWJwYWdlX3AuaCIKICNpbmNsdWRlICJx
d2VicGx1Z2luZmFjdG9yeS5oIgogCi0jaW5jbHVkZSA8cWZpbGVpbmZvLmg+Ci0KICNpbmNsdWRl
IDxRQ29yZUFwcGxpY2F0aW9uPgogI2luY2x1ZGUgPFFEZWJ1Zz4KICNpbmNsdWRlIDxRR3JhcGhp
Y3NTY2VuZT4KICNpbmNsdWRlIDxRR3JhcGhpY3NXaWRnZXQ+Ci0jaW5jbHVkZSA8UU5ldHdvcmtS
ZXF1ZXN0PgogI2luY2x1ZGUgPFFOZXR3b3JrUmVwbHk+CisjaW5jbHVkZSA8UU5ldHdvcmtSZXF1
ZXN0PgogI2luY2x1ZGUgPFFTdHJpbmdMaXN0PgotI2luY2x1ZGUgInF3ZWJoaXN0b3J5X3AuaCIK
KyNpbmNsdWRlIDxxZmlsZWluZm8uaD4KIAogc3RhdGljIFFNYXA8dW5zaWduZWQgbG9uZywgUVN0
cmluZz4gZHVtcEFzc2lnbmVkVXJsczsKIAogLy8gQ29tcGFyZSB3aXRoIFdlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9GcmFtZUxvYWREZWxlZ2F0ZS5tbQotc3RhdGljIFFTdHJpbmcgZHJ0
RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQoV2ViQ29yZTo6RnJhbWUqIF9mcmFtZSkK
K3N0YXRpYyBRU3RyaW5nIGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KFdlYkNv
cmU6OkZyYW1lKiB3ZnJhbWUpCiB7Ci0gICAgUVdlYkZyYW1lKiBmcmFtZSA9IFFXZWJGcmFtZVBy
aXZhdGU6OmtpdChfZnJhbWUpOworICAgIFFXZWJGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2
YXRlOjpraXQod2ZyYW1lKTsKICAgICBRU3RyaW5nIG5hbWUgPSBmcmFtZS0+ZnJhbWVOYW1lKCk7
CiAKICAgICBib29sIGlzTWFpbkZyYW1lID0gZnJhbWUgPT0gZnJhbWUtPnBhZ2UoKS0+bWFpbkZy
YW1lKCk7CkBAIC05MSwxOSArOTAsMTggQEAgc3RhdGljIFFTdHJpbmcgZHJ0RGVzY3JpcHRpb25T
dWl0YWJsZUZvclRlc3RSZXN1bHQoV2ViQ29yZTo6RnJhbWUqIF9mcmFtZSkKICAgICAgICAgaWYg
KCFuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiBRU3RyaW5nOjpmcm9tTGF0aW4x
KCJtYWluIGZyYW1lIFwiJTFcIiIpLmFyZyhuYW1lKTsKICAgICAgICAgcmV0dXJuIFFMYXRpbjFT
dHJpbmcoIm1haW4gZnJhbWUiKTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoIW5hbWUuaXNF
bXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuIFFTdHJpbmc6OmZyb21MYXRpbjEoImZyYW1lIFwi
JTFcIiIpLmFyZyhuYW1lKTsKLSAgICAgICAgcmV0dXJuIFFMYXRpbjFTdHJpbmcoImZyYW1lIChh
bm9ueW1vdXMpIik7CiAgICAgfQorICAgIGlmICghbmFtZS5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiBRU3RyaW5nOjpmcm9tTGF0aW4xKCJmcmFtZSBcIiUxXCIiKS5hcmcobmFtZSk7CisgICAg
cmV0dXJuIFFMYXRpbjFTdHJpbmcoImZyYW1lIChhbm9ueW1vdXMpIik7CiB9CiAKLXN0YXRpYyBR
U3RyaW5nIGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGNvbnN0IFdlYkNvcmU6
OktVUkwmIF91cmwpCitzdGF0aWMgUVN0cmluZyBkcnREZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVz
dFJlc3VsdChjb25zdCBXZWJDb3JlOjpLVVJMJiBrdXJsKQogewotICAgIGlmIChfdXJsLmlzRW1w
dHkoKSB8fCAhX3VybC5pc0xvY2FsRmlsZSgpKQotICAgICAgICByZXR1cm4gX3VybC5zdHJpbmco
KTsKKyAgICBpZiAoa3VybC5pc0VtcHR5KCkgfHwgIWt1cmwuaXNMb2NhbEZpbGUoKSkKKyAgICAg
ICAgcmV0dXJuIGt1cmwuc3RyaW5nKCk7CiAgICAgLy8gUmVtb3ZlIHRoZSBsZWFkaW5nIHBhdGgg
ZnJvbSBmaWxlIHVybHMKLSAgICByZXR1cm4gUVN0cmluZyhfdXJsLnN0cmluZygpKS5yZXBsYWNl
KFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3NQ
YXRoLCAiIikubWlkKDEpOworICAgIHJldHVybiBRU3RyaW5nKGt1cmwuc3RyaW5nKCkpLnJlcGxh
Y2UoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZHVtcFJlc291cmNlTG9hZENhbGxiYWNr
c1BhdGgsICIiKS5taWQoMSk7CiB9CiAKIHN0YXRpYyBRU3RyaW5nIGRydERlc2NyaXB0aW9uU3Vp
dGFibGVGb3JUZXN0UmVzdWx0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQpA
QCAtMTI4LDggKzEyNiw3IEBAIHN0YXRpYyBRU3RyaW5nIGRydERlc2NyaXB0aW9uU3VpdGFibGVG
b3JUZXN0UmVzdWx0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uCiB9CiAKIAotbmFtZXNw
YWNlIFdlYkNvcmUKLXsKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAogYm9vbCBGcmFtZUxvYWRlckNs
aWVudFF0OjpkdW1wRnJhbWVMb2FkZXJDYWxsYmFja3MgPSBmYWxzZTsKIGJvb2wgRnJhbWVMb2Fk
ZXJDbGllbnRRdDo6ZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcyA9IGZhbHNlOwpAQCAtMTQ0LDcg
KzE0MSw3IEBAIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OkZyYW1lTG9hZGVyQ2xpZW50UXQoKQogICAg
ICwgbV9maXJzdERhdGEoZmFsc2UpCiAgICAgLCBtX3BsdWdpblZpZXcoMCkKICAgICAsIG1faGFz
U2VudFJlc3BvbnNlVG9QbHVnaW4oZmFsc2UpCi0gICAgLCBtX2xvYWRFcnJvciAoUmVzb3VyY2VF
cnJvcigpKQorICAgICwgbV9sb2FkRXJyb3IoUmVzb3VyY2VFcnJvcigpKQogewogfQogCkBAIC0x
ODgsNyArMTg1LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpjYWxsUG9saWN5RnVuY3Rp
b24oRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwgUG9saWMKIAogYm9vbCBGcmFtZUxvYWRl
ckNsaWVudFF0OjpoYXNXZWJWaWV3KCkgY29uc3QKIHsKLSAgICAvL25vdEltcGxlbWVudGVkKCk7
CisgICAgLy8gbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNTI1
LDEzICs1MjIsMTIgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaWRDaGFuZ2VUaXRsZShE
b2N1bWVudExvYWRlciopCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmZpbmlzaGVkTG9hZGlu
ZyhEb2N1bWVudExvYWRlciogbG9hZGVyKQogewogICAgIGlmICghbV9wbHVnaW5WaWV3KSB7Ci0g
ICAgICAgIGlmKG1fZmlyc3REYXRhKSB7Ci0gICAgICAgICAgICBGcmFtZUxvYWRlciAqZmwgPSBs
b2FkZXItPmZyYW1lTG9hZGVyKCk7CisgICAgICAgIGlmIChtX2ZpcnN0RGF0YSkgeworICAgICAg
ICAgICAgRnJhbWVMb2FkZXIqIGZsID0gbG9hZGVyLT5mcmFtZUxvYWRlcigpOwogICAgICAgICAg
ICAgZmwtPndyaXRlcigpLT5zZXRFbmNvZGluZyhtX3Jlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUo
KSwgZmFsc2UpOwogICAgICAgICAgICAgbV9maXJzdERhdGEgPSBmYWxzZTsgCiAgICAgICAgIH0K
LSAgICB9Ci0gICAgZWxzZSB7CisgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKG1fcGx1Z2luVmll
dy0+aXNQbHVnaW5WaWV3KCkpCiAgICAgICAgICAgICBtX3BsdWdpblZpZXctPmRpZEZpbmlzaExv
YWRpbmcoKTsKICAgICAgICAgbV9wbHVnaW5WaWV3ID0gMDsKQEAgLTYwNiwxNyArNjAyLDE1IEBA
IHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nJiwgY29uc3Qg
S1VSTCYpCiAKIFN0cmluZyBGcmFtZUxvYWRlckNsaWVudFF0Ojp1c2VyQWdlbnQoY29uc3QgS1VS
TCYgdXJsKQogewotICAgIGlmIChtX3dlYkZyYW1lKSB7CisgICAgaWYgKG1fd2ViRnJhbWUpCiAg
ICAgICAgIHJldHVybiBtX3dlYkZyYW1lLT5wYWdlKCktPnVzZXJBZ2VudEZvclVybCh1cmwpOwot
ICAgIH0KICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRR
dDo6ZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpCiB7Ci0gICAgaWYgKG1fd2ViRnJhbWUpIHsKKyAg
ICBpZiAobV93ZWJGcmFtZSkKICAgICAgICAgZW1pdCBtX3dlYkZyYW1lLT5pY29uQ2hhbmdlZCgp
OwotICAgIH0KIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpmcmFtZUxvYWRlckRlc3Ry
b3llZCgpCkBAIC02MzgsOSArNjMyLDggQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNw
YXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChET01XcmFwcGVyV29ybGQqIHcKICAgICBp
ZiAod29ybGQgIT0gbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmIChtX3dlYkZyYW1lKSB7CisgICAgaWYgKG1fd2ViRnJhbWUpCiAgICAgICAgIGVtaXQg
bV93ZWJGcmFtZS0+amF2YVNjcmlwdFdpbmRvd09iamVjdENsZWFyZWQoKTsKLSAgICB9CiB9CiAK
IHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZG9jdW1lbnRFbGVtZW50QXZhaWxhYmxlKCkKQEAg
LTY2Miw3ICs2NTUsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnJlZ2lzdGVyRm9ySWNv
bk5vdGlmaWNhdGlvbihib29sKQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnVwZGF0ZUds
b2JhbEhpc3RvcnkoKQogewotICAgIFFXZWJIaXN0b3J5SW50ZXJmYWNlICpoaXN0b3J5ID0gUVdl
Ykhpc3RvcnlJbnRlcmZhY2U6OmRlZmF1bHRJbnRlcmZhY2UoKTsKKyAgICBRV2ViSGlzdG9yeUlu
dGVyZmFjZSogaGlzdG9yeSA9IFFXZWJIaXN0b3J5SW50ZXJmYWNlOjpkZWZhdWx0SW50ZXJmYWNl
KCk7CiAgICAgaWYgKGhpc3RvcnkpCiAgICAgICAgIGhpc3RvcnktPmFkZEhpc3RvcnlFbnRyeSht
X2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+dXJsRm9ySGlzdG9yeSgpLnByZXR0
eVVSTCgpKTsKIH0KQEAgLTY3MSw3ICs2NjQsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6
OnVwZGF0ZUdsb2JhbEhpc3RvcnlSZWRpcmVjdExpbmtzKCkKIHsKIH0KIAotYm9vbCBGcmFtZUxv
YWRlckNsaWVudFF0OjpzaG91bGRHb1RvSGlzdG9yeUl0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0g
KikgY29uc3QKK2Jvb2wgRnJhbWVMb2FkZXJDbGllbnRRdDo6c2hvdWxkR29Ub0hpc3RvcnlJdGVt
KFdlYkNvcmU6Okhpc3RvcnlJdGVtKikgY29uc3QKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAg
LTczNSw3ICs3MjgsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNvbW1pdHRlZExvYWQo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgYwogICAgIGlmICghbV9wbHVn
aW5WaWV3KSB7CiAgICAgICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgRnJhbWVMb2FkZXIgKmZsID0gbG9hZGVyLT5mcmFtZUxvYWRlcigpOworICAgICAgICBG
cmFtZUxvYWRlciogZmwgPSBsb2FkZXItPmZyYW1lTG9hZGVyKCk7CiAgICAgICAgIGlmIChtX2Zp
cnN0RGF0YSkgewogICAgICAgICAgICAgZmwtPndyaXRlcigpLT5zZXRFbmNvZGluZyhtX3Jlc3Bv
bnNlLnRleHRFbmNvZGluZ05hbWUoKSwgZmFsc2UpOwogICAgICAgICAgICAgbV9maXJzdERhdGEg
PSBmYWxzZTsKQEAgLTgzNiw3ICs4MjksNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRv
d25sb2FkKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFdlYkNvcgogICAg
IFFOZXR3b3JrUmVwbHlIYW5kbGVyKiBoYW5kbGVyID0gaGFuZGxlLT5nZXRJbnRlcm5hbCgpLT5t
X2pvYjsKICAgICBRTmV0d29ya1JlcGx5KiByZXBseSA9IGhhbmRsZXItPnJlbGVhc2UoKTsKICAg
ICBpZiAocmVwbHkpIHsKLSAgICAgICAgUVdlYlBhZ2UgKnBhZ2UgPSBtX3dlYkZyYW1lLT5wYWdl
KCk7CisgICAgICAgIFFXZWJQYWdlKiBwYWdlID0gbV93ZWJGcmFtZS0+cGFnZSgpOwogICAgICAg
ICBpZiAocGFnZS0+Zm9yd2FyZFVuc3VwcG9ydGVkQ29udGVudCgpKQogICAgICAgICAgICAgZW1p
dCBwYWdlLT51bnN1cHBvcnRlZENvbnRlbnQocmVwbHkpOwogICAgICAgICBlbHNlCkBAIC04NzEs
MTEgKzg2NCwxMCBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoV2lsbFNlbmRS
ZXF1ZXN0KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaQogICAgICAgICAgIG5ld1JlcXVl
c3Quc2V0SFRUUEhlYWRlckZpZWxkKHNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXJzLmF0KGkpLnRvTG9j
YWw4Qml0KCkuY29uc3REYXRhKCksIFFTdHJpbmcoKSk7CiAKICAgICAvLyBzZWVtcyBsaWtlIHRo
ZSBNYWMgY29kZSBkb2Vzbid0IGRvIGFueXRoaW5nIGhlcmUgYnkgZGVmYXVsdCBuZWl0aGVyCi0g
ICAgLy9xRGVidWcoKSA8PCAiRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hXaWxsU2VuZFJl
cXVlc3QiIDw8IHJlcXVlc3QuaXNOdWxsKCkgPDwgcmVxdWVzdC51cmwoKS5zdHJpbmdgKCk7Cisg
ICAgLy8gcURlYnVnKCkgPDwgIkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoV2lsbFNlbmRS
ZXF1ZXN0IiA8PCByZXF1ZXN0LmlzTnVsbCgpIDw8IHJlcXVlc3QudXJsKCkuc3RyaW5nYCgpOwog
fQogCi1ib29sCi1GcmFtZUxvYWRlckNsaWVudFF0OjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFn
ZShEb2N1bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcpCitib29sIEZyYW1lTG9hZGVyQ2xpZW50
UXQ6OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQg
bG9uZykKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBmYWxzZTsKQEAgLTkw
MCw3ICs4OTIsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkUmVjZWl2
ZVJlc3BvbnNlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdQogICAgICAgICBwcmludGYoIiVz
IC0gZGlkUmVjZWl2ZVJlc3BvbnNlICVzXG4iLAogICAgICAgICAgICAgICAgcVByaW50YWJsZShk
dW1wQXNzaWduZWRVcmxzW2lkZW50aWZpZXJdKSwKICAgICAgICAgICAgICAgIHFQcmludGFibGUo
ZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQocmVzcG9uc2UpKSk7Ci0gICAgLy9x
RGVidWcoKSA8PCAiICAgIGdvdCByZXNwb25zZSBmcm9tIiA8PCByZXNwb25zZS51cmwoKS5zdHJp
bmcoKTsKKyAgICAvLyBxRGVidWcoKSA8PCAiICAgIGdvdCByZXNwb25zZSBmcm9tIiA8PCByZXNw
b25zZS51cmwoKS5zdHJpbmcoKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNw
YXRjaERpZFJlY2VpdmVDb250ZW50TGVuZ3RoKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5z
aWduZWQgbG9uZywgaW50KQpAQCAtOTIyLDcgKzkxNCw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGll
bnRRdDo6ZGlzcGF0Y2hEaWRGYWlsTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciogbG9h
ZGVyCiAgICAgICAgICAgICAgICBxUHJpbnRhYmxlKGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JU
ZXN0UmVzdWx0KGVycm9yKSkpOwogCiAgICAgaWYgKG1fZmlyc3REYXRhKSB7Ci0gICAgICAgIEZy
YW1lTG9hZGVyICpmbCA9IGxvYWRlci0+ZnJhbWVMb2FkZXIoKTsKKyAgICAgICAgRnJhbWVMb2Fk
ZXIqIGZsID0gbG9hZGVyLT5mcmFtZUxvYWRlcigpOwogICAgICAgICBmbC0+d3JpdGVyKCktPnNl
dEVuY29kaW5nKG1fcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpLCBmYWxzZSk7CiAgICAgICAg
IG1fZmlyc3REYXRhID0gZmFsc2U7CiAgICAgfQpAQCAtOTkyLDcgKzk4NCw3IEBAIFdlYkNvcmU6
OkZyYW1lKiBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaENyZWF0ZVBhZ2UoKQogewogICAg
IGlmICghbV93ZWJGcmFtZSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgUVdlYlBhZ2UgKm5ld1Bh
Z2UgPSBtX3dlYkZyYW1lLT5wYWdlKCktPmNyZWF0ZVdpbmRvdyhRV2ViUGFnZTo6V2ViQnJvd3Nl
cldpbmRvdyk7CisgICAgUVdlYlBhZ2UqIG5ld1BhZ2UgPSBtX3dlYkZyYW1lLT5wYWdlKCktPmNy
ZWF0ZVdpbmRvdyhRV2ViUGFnZTo6V2ViQnJvd3NlcldpbmRvdyk7CiAgICAgaWYgKCFuZXdQYWdl
KQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gbmV3UGFnZS0+bWFpbkZyYW1lKCktPmQt
PmZyYW1lOwpAQCAtMTEyMiwxNiArMTExNCwxNiBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6
OmRpZFRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQoKQogICAgIH0KIH0KIAotT2JqZWN0
Q29udGVudFR5cGUgRnJhbWVMb2FkZXJDbGllbnRRdDo6b2JqZWN0Q29udGVudFR5cGUoY29uc3Qg
S1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIF9taW1lVHlwZSkKK09iamVjdENvbnRlbnRUeXBlIEZy
YW1lTG9hZGVyQ2xpZW50UXQ6Om9iamVjdENvbnRlbnRUeXBlKGNvbnN0IEtVUkwmIHVybCwgY29u
c3QgU3RyaW5nJiBtaW1lKQogewotLy8gICAgcURlYnVnKCk8PCIgKysrKysrKysrKysrKysrKyB1
cmwgaXMgIjw8dXJsLnByZXR0eVVSTCgpPDwiLCBtaW1lID0gIjw8X21pbWVUeXBlOwotICAgIGlm
IChfbWltZVR5cGUgPT0gImFwcGxpY2F0aW9uL3gtcXQtcGx1Z2luIiB8fCBfbWltZVR5cGUgPT0g
ImFwcGxpY2F0aW9uL3gtcXQtc3R5bGVkLXdpZGdldCIpCisvLyAgICBxRGVidWcoKTw8IiArKysr
KysrKysrKysrKysrIHVybCBpcyAiPDx1cmwucHJldHR5VVJMKCk8PCIsIG1pbWUgPSAiPDwgbWlt
ZVR5cGU7CisgICAgaWYgKG1pbWUgPT0gImFwcGxpY2F0aW9uL3gtcXQtcGx1Z2luIiB8fCBtaW1l
ID09ICJhcHBsaWNhdGlvbi94LXF0LXN0eWxlZC13aWRnZXQiKQogICAgICAgICByZXR1cm4gT2Jq
ZWN0Q29udGVudE90aGVyUGx1Z2luOwogCi0gICAgaWYgKHVybC5pc0VtcHR5KCkgJiYgIV9taW1l
VHlwZS5sZW5ndGgoKSkKKyAgICBpZiAodXJsLmlzRW1wdHkoKSAmJiAhbWltZS5sZW5ndGgoKSkK
ICAgICAgICAgcmV0dXJuIE9iamVjdENvbnRlbnROb25lOwogCi0gICAgU3RyaW5nIG1pbWVUeXBl
ID0gX21pbWVUeXBlOworICAgIFN0cmluZyBtaW1lVHlwZSA9IG1pbWU7CiAgICAgaWYgKCFtaW1l
VHlwZS5sZW5ndGgoKSkgewogICAgICAgICBRRmlsZUluZm8gZmkodXJsLnBhdGgoKSk7CiAgICAg
ICAgIG1pbWVUeXBlID0gTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JFeHRlbnNpb24o
Zmkuc3VmZml4KCkpOwpAQCAtMTE2OCw4ICsxMTYwLDcgQEAgc3RhdGljIGNvbnN0IENTU1Byb3Bl
cnR5SUQgcXN0eWxlU2hlZXRQcm9wZXJ0aWVzW10gPSB7CiAKIGNvbnN0IHVuc2lnbmVkIG51bXFT
dHlsZVNoZWV0UHJvcGVydGllcyA9IHNpemVvZihxc3R5bGVTaGVldFByb3BlcnRpZXMpIC8gc2l6
ZW9mKHFzdHlsZVNoZWV0UHJvcGVydGllc1swXSk7CiAKLWNsYXNzIFF0UGx1Z2luV2lkZ2V0OiBw
dWJsaWMgV2lkZ2V0Ci17CitjbGFzcyBRdFBsdWdpbldpZGdldDogcHVibGljIFdpZGdldCB7CiBw
dWJsaWM6CiAgICAgUXRQbHVnaW5XaWRnZXQoUVdpZGdldCogdyA9IDApOiBXaWRnZXQodykge30K
ICAgICB+UXRQbHVnaW5XaWRnZXQoKQpAQCAtMTIyNyw4ICsxMjE4LDcgQEAgcHJpdmF0ZToKIH07
CiAKICNpZiBRVF9WRVJTSU9OID49IDB4MDQwNjAwCi1jbGFzcyBRdFBsdWdpbkdyYXBoaWNzV2lk
Z2V0OiBwdWJsaWMgV2lkZ2V0Ci17CitjbGFzcyBRdFBsdWdpbkdyYXBoaWNzV2lkZ2V0OiBwdWJs
aWMgV2lkZ2V0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPFF0UGx1Z2luR3JhcGhpY3NX
aWRnZXQ+IGNyZWF0ZShRR3JhcGhpY3NXaWRnZXQqIHcgPSAwKQogICAgIHsK
</data>
<flag name="review"
          id="42880"
          type_id="1"
          status="-"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88445</attachid>
            <date>2011-04-06 09:23:24 -0700</date>
            <delta_ts>2011-04-06 10:32:29 -0700</delta_ts>
            <desc>Fixing previous patch submitted by Anders Bakken to fix the coding-style on FrameLoaderClientQt.cpp</desc>
            <filename>patch-bug-40254.diff</filename>
            <type>text/plain</type>
            <size>24684</size>
            <attacher name="Rafael Brandao">rafael.lobo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9x
dC9DaGFuZ2VMb2cKaW5kZXggNzNhYTBhMy4uNzY5YTg0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NCBAQAorMjAxMS0wNC0wNiAgQW5kZXJzIEJha2tlbiAgPGFnYmFra2VuQGdtYWlsLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRd
IEZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwIGhhcyBjb2Rpbmctc3R5bGUgZXJyb3JzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDI1NAorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChkcnRE
ZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudFF0OjpoYXNXZWJWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50UXQ6OnNldENvcGllc09uU2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkQ2hhbmdl
SWNvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y2FuY2VsUG9s
aWN5Q2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0
Y2hXaWxsU3VibWl0Rm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0
Ojpwb3N0UHJvZ3Jlc3NTdGFydGVkTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50UXQ6OnBvc3RQcm9ncmVzc0ZpbmlzaGVkTm90aWZpY2F0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNldE1haW5GcmFtZURvY3VtZW50
UmVhZHkpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6d2lsbENoYW5n
ZVRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpZENoYW5n
ZVRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmZpbmlzaGVk
TG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpmcmFtZUxv
YWRDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6cHJv
dmlzaW9uYWxMb2FkU3RhcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dFF0OjpkaWRGaW5pc2hMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
UXQ6OnNldFRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRp
c3BhdGNoRGlkUmVjZWl2ZUljb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRRdDo6ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6dXBkYXRlR2xvYmFsSGlzdG9yeSk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpzaG91bGRHb1RvSGlzdG9yeUl0ZW0pOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6c2hvdWxkU3RvcExvYWRpbmdG
b3JIaXN0b3J5SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojpj
b21taXR0ZWRMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRv
d25sb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNo
V2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6
OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNy
ZWF0ZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6Om9iamVj
dENvbnRlbnRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNy
ZWF0ZVBsdWdpbik6CisKIDIwMTEtMDQtMDQgIENoYW5nIFNodSAgPGNzaHVAd2Via2l0Lm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwIGIvU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAppbmRleCBk
ODU0ZThmLi41ODIxYTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKQEAgLTMxLDcxICszMSw3MiBAQAogICov
CiAKICNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudFF0Lmgi
CisKICNpbmNsdWRlICJDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJD
U1NQcm9wZXJ0eU5hbWVzLmgiCisjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRl
ICJGb3JtU3RhdGUuaCIKLSNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudFF0LmgiCiAjaW5jbHVk
ZSAiRnJhbWVOZXR3b3JraW5nQ29udGV4dFF0LmgiCiAjaW5jbHVkZSAiRnJhbWVUcmVlLmgiCiAj
aW5jbHVkZSAiRnJhbWVWaWV3LmgiCi0jaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKKyNpbmNs
dWRlICJIVE1MQXBwbGV0RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgor
I2luY2x1ZGUgIkhUTUxQbHVnSW5FbGVtZW50LmgiCisjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIK
KyNpbmNsdWRlICJIaXN0b3J5SXRlbS5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNp
ZiBFTkFCTEUoSUNPTkRBVEFCQVNFKQogI2luY2x1ZGUgIkljb25EYXRhYmFzZUNsaWVudFF0Lmgi
CiAjZW5kaWYKICNpZiBVU0UoSlNDKQogI2luY2x1ZGUgIkpTRE9NV2luZG93QmFzZS5oIgotI2Vs
aWYgVVNFKFY4KQotI2luY2x1ZGUgIlY4RE9NV2luZG93LmgiCiAjZW5kaWYKICNpbmNsdWRlICJN
SU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgotI2luY2x1ZGUgIlJl
c291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUg
IlBhZ2UuaCIKICNpbmNsdWRlICJQbHVnaW5EYXRhLmgiCiAjaW5jbHVkZSAiUGx1Z2luRGF0YWJh
c2UuaCIKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKLSNpbmNsdWRlICJSZW5kZXJQYXJ0
LmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCi0jaW5jbHVkZSAiSGlzdG9yeUl0ZW0u
aCIKLSNpbmNsdWRlICJIVE1MQXBwbGV0RWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxGb3JtRWxl
bWVudC5oIgotI2luY2x1ZGUgIkhUTUxQbHVnSW5FbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRUUFBh
cnNlcnMuaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlFOZXR3b3Jr
UmVwbHlIYW5kbGVyLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIgorI2lu
Y2x1ZGUgIlFXZWJQYWdlQ2xpZW50LmgiCisjaW5jbHVkZSAiUmVuZGVyUGFydC5oIgogI2luY2x1
ZGUgIlJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5o
IgorI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVzcG9u
c2UuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKLSNpbmNsdWRlICJRV2ViUGFnZUNsaWVudC5oIgorI2lmIFVTRShWOCkKKyNpbmNsdWRlICJW
OERPTVdpbmRvdy5oIgorI2VuZGlmCiAjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIKIAot
I2luY2x1ZGUgInF3ZWJwYWdlLmgiCi0jaW5jbHVkZSAicXdlYnBhZ2VfcC5oIgogI2luY2x1ZGUg
InF3ZWJmcmFtZS5oIgogI2luY2x1ZGUgInF3ZWJmcmFtZV9wLmgiCisjaW5jbHVkZSAicXdlYmhp
c3RvcnlfcC5oIgogI2luY2x1ZGUgInF3ZWJoaXN0b3J5aW50ZXJmYWNlLmgiCisjaW5jbHVkZSAi
cXdlYnBhZ2UuaCIKKyNpbmNsdWRlICJxd2VicGFnZV9wLmgiCiAjaW5jbHVkZSAicXdlYnBsdWdp
bmZhY3RvcnkuaCIKIAotI2luY2x1ZGUgPHFmaWxlaW5mby5oPgotCiAjaW5jbHVkZSA8UUNvcmVB
cHBsaWNhdGlvbj4KICNpbmNsdWRlIDxRRGVidWc+CiAjaW5jbHVkZSA8UUdyYXBoaWNzU2NlbmU+
CiAjaW5jbHVkZSA8UUdyYXBoaWNzV2lkZ2V0PgotI2luY2x1ZGUgPFFOZXR3b3JrUmVxdWVzdD4K
ICNpbmNsdWRlIDxRTmV0d29ya1JlcGx5PgorI2luY2x1ZGUgPFFOZXR3b3JrUmVxdWVzdD4KICNp
bmNsdWRlIDxRU3RyaW5nTGlzdD4KLSNpbmNsdWRlICJxd2ViaGlzdG9yeV9wLmgiCisjaW5jbHVk
ZSA8cWZpbGVpbmZvLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiBzdGF0aWMgUU1hcDx1
bnNpZ25lZCBsb25nLCBRU3RyaW5nPiBkdW1wQXNzaWduZWRVcmxzOwogCi0vLyBDb21wYXJlIHdp
dGggV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0ZyYW1lTG9hZERlbGVnYXRlLm1tCi1z
dGF0aWMgUVN0cmluZyBkcnREZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChXZWJDb3Jl
OjpGcmFtZSogX2ZyYW1lKQorLy8gQ29tcGFyZSB3aXRoIHRoZSBmaWxlICJXZWJLaXQvVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0ZyYW1lTG9hZERlbGVnYXRlLm1tIi4KK3N0YXRpYyBRU3RyaW5n
IGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KFdlYkNvcmU6OkZyYW1lKiB3ZWJD
b3JlRnJhbWUpCiB7Ci0gICAgUVdlYkZyYW1lKiBmcmFtZSA9IFFXZWJGcmFtZVByaXZhdGU6Omtp
dChfZnJhbWUpOworICAgIFFXZWJGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpraXQo
d2ViQ29yZUZyYW1lKTsKICAgICBRU3RyaW5nIG5hbWUgPSBmcmFtZS0+ZnJhbWVOYW1lKCk7CiAK
ICAgICBib29sIGlzTWFpbkZyYW1lID0gZnJhbWUgPT0gZnJhbWUtPnBhZ2UoKS0+bWFpbkZyYW1l
KCk7CkBAIC0xMDMsMTEgKzEwNCwxMCBAQCBzdGF0aWMgUVN0cmluZyBkcnREZXNjcmlwdGlvblN1
aXRhYmxlRm9yVGVzdFJlc3VsdChXZWJDb3JlOjpGcmFtZSogX2ZyYW1lKQogICAgICAgICBpZiAo
IW5hbWUuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIFFTdHJpbmc6OmZyb21MYXRpbjEo
Im1haW4gZnJhbWUgXCIlMVwiIikuYXJnKG5hbWUpOwogICAgICAgICByZXR1cm4gUUxhdGluMVN0
cmluZygibWFpbiBmcmFtZSIpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICghbmFtZS5pc0Vt
cHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gUVN0cmluZzo6ZnJvbUxhdGluMSgiZnJhbWUgXCIl
MVwiIikuYXJnKG5hbWUpOwotICAgICAgICByZXR1cm4gUUxhdGluMVN0cmluZygiZnJhbWUgKGFu
b255bW91cykiKTsKICAgICB9CisgICAgaWYgKCFuYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIFFTdHJpbmc6OmZyb21MYXRpbjEoImZyYW1lIFwiJTFcIiIpLmFyZyhuYW1lKTsKKyAgICBy
ZXR1cm4gUUxhdGluMVN0cmluZygiZnJhbWUgKGFub255bW91cykiKTsKIH0KIAogc3RhdGljIFFT
dHJpbmcgZHJ0UHJpbnRGcmFtZVVzZXJHZXN0dXJlU3RhdHVzKFdlYkNvcmU6OkZyYW1lKiBmcmFt
ZSkKQEAgLTExNywxMiArMTE3LDEyIEBAIHN0YXRpYyBRU3RyaW5nIGRydFByaW50RnJhbWVVc2Vy
R2VzdHVyZVN0YXR1cyhXZWJDb3JlOjpGcmFtZSogZnJhbWUpCiAgICAgcmV0dXJuIFFTdHJpbmc6
OmZyb21MYXRpbjEoIkZyYW1lIHdpdGggdXNlciBnZXN0dXJlIFwiJTFcIiIpLmFyZyhRTGF0aW4x
U3RyaW5nKCJmYWxzZSIpKTsKIH0KIAotc3RhdGljIFFTdHJpbmcgZHJ0RGVzY3JpcHRpb25TdWl0
YWJsZUZvclRlc3RSZXN1bHQoY29uc3QgV2ViQ29yZTo6S1VSTCYgX3VybCkKK3N0YXRpYyBRU3Ry
aW5nIGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGNvbnN0IFdlYkNvcmU6OktV
UkwmIGt1cmwpCiB7Ci0gICAgaWYgKF91cmwuaXNFbXB0eSgpIHx8ICFfdXJsLmlzTG9jYWxGaWxl
KCkpCi0gICAgICAgIHJldHVybiBfdXJsLnN0cmluZygpOwotICAgIC8vIFJlbW92ZSB0aGUgbGVh
ZGluZyBwYXRoIGZyb20gZmlsZSB1cmxzCi0gICAgcmV0dXJuIFFTdHJpbmcoX3VybC5zdHJpbmco
KSkucmVtb3ZlKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmR1bXBSZXNvdXJjZUxvYWRD
YWxsYmFja3NQYXRoKS5taWQoMSk7CisgICAgaWYgKGt1cmwuaXNFbXB0eSgpIHx8ICFrdXJsLmlz
TG9jYWxGaWxlKCkpCisgICAgICAgIHJldHVybiBrdXJsLnN0cmluZygpOworICAgIC8vIFJlbW92
ZSB0aGUgbGVhZGluZyBwYXRoIGZyb20gZmlsZSB1cmxzLgorICAgIHJldHVybiBRU3RyaW5nKGt1
cmwuc3RyaW5nKCkpLnJlbW92ZShXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkdW1wUmVz
b3VyY2VMb2FkQ2FsbGJhY2tzUGF0aCkubWlkKDEpOwogfQogCiBzdGF0aWMgUVN0cmluZyBkcnRE
ZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yJiBlcnJvcikKQEAgLTE2Niw4ICsxNjYsNyBAQCBzdGF0aWMgUVN0cmluZyBkcnREZXNjcmlw
dGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChjb25zdCBSZWZQdHI8V2ViQ29yZTo6Tm9kZT4gbgog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLW5hbWVzcGFjZSBXZWJDb3JlCi17CituYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGJvb2wgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZHVtcEZyYW1lTG9hZGVyQ2Fs
bGJhY2tzID0gZmFsc2U7CiBib29sIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmR1bXBVc2VyR2VzdHVy
ZUluRnJhbWVMb2FkZXJDYWxsYmFja3MgPSBmYWxzZTsKQEAgLTE4NCw3ICsxODMsNyBAQCBib29s
IEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnBvbGljeURlbGVnYXRlRW5hYmxlZCA9IGZhbHNlOwogYm9v
bCBGcmFtZUxvYWRlckNsaWVudFF0Ojpwb2xpY3lEZWxlZ2F0ZVBlcm1pc3NpdmUgPSBmYWxzZTsK
IFFNYXA8UVN0cmluZywgUVN0cmluZz4gRnJhbWVMb2FkZXJDbGllbnRRdDo6VVJMc1RvUmVkaXJl
Y3QgPSBRTWFwPFFTdHJpbmcsIFFTdHJpbmc+KCk7CiAKLS8vIFRha2VuIGZyb20gRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCisvLyBUYWtlbiBmcm9tIHRoZSBmaWxlICJX
ZWJLaXQvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwIi4KIHN0
YXRpYyBjb25zdCBjaGFyKiBuYXZpZ2F0aW9uVHlwZVRvU3RyaW5nKE5hdmlnYXRpb25UeXBlIHR5
cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CkBAIC0yNTAsNyArMjQ5LDcgQEAgdm9pZCBGcmFt
ZUxvYWRlckNsaWVudFF0OjpjYWxsUG9saWN5RnVuY3Rpb24oRnJhbWVQb2xpY3lGdW5jdGlvbiBm
dW5jdGlvbiwgUG9saWMKIAogYm9vbCBGcmFtZUxvYWRlckNsaWVudFF0OjpoYXNXZWJWaWV3KCkg
Y29uc3QKIHsKLSAgICAvL25vdEltcGxlbWVudGVkKCk7CisgICAgLy8gbm90SW1wbGVtZW50ZWQo
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzMxLDcgKzMzMCw3IEBAIHZvaWQgRnJhbWVM
b2FkZXJDbGllbnRRdDo6Zm9yY2VMYXlvdXRGb3JOb25IVE1MKCkKIAogdm9pZCBGcmFtZUxvYWRl
ckNsaWVudFF0OjpzZXRDb3BpZXNPblNjcm9sbCgpCiB7Ci0gICAgLy8gYXBwYXJlbnRseSBtYWMg
c3BlY2lmaWMKKyAgICAvLyBBcHBhcmVudGx5IHRoaXMgaXMgbWFjIHNwZWNpZmljLgogfQogCiAK
QEAgLTM0Niw3ICszNDUsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRldGFjaGVkRnJv
bVBhcmVudDMoKQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkSGFuZGxl
T25sb2FkRXZlbnRzKCkKIHsKLSAgICAvLyBkb24ndCBuZWVkIHRoaXMgb25lCisgICAgLy8gRG9u
J3QgbmVlZCB0aGlzIG9uZS4KICAgICBpZiAoZHVtcEZyYW1lTG9hZGVyQ2FsbGJhY2tzKQogICAg
ICAgICBwcmludGYoIiVzIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWVcbiIsIHFQcmlu
dGFibGUoZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQobV9mcmFtZSkpKTsKIH0K
QEAgLTQ0OSw3ICs0NDgsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlk
U3RhcnRQcm92aXNpb25hbExvYWQoKQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3Bh
dGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJlY3Rpb24mIHRpdGxlKQogewot
ICAgIC8vIEZJWE1FOiB1c2UgZGlyZWN0aW9uIG9mIHRpdGxlLgorICAgIC8vIEZJWE1FOiBVc2Ug
ZGlyZWN0aW9uIG9mIHRpdGxlLgogICAgIGlmIChkdW1wRnJhbWVMb2FkZXJDYWxsYmFja3MpCiAg
ICAgICAgIHByaW50ZigiJXMgLSBkaWRSZWNlaXZlVGl0bGU6ICVzXG4iLCBxUHJpbnRhYmxlKGRy
dERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KG1fZnJhbWUpKSwgcVByaW50YWJsZShR
U3RyaW5nKHRpdGxlLnN0cmluZygpKSkpOwogCkBAIC00NjgsNyArNDY3LDcgQEAgdm9pZCBGcmFt
ZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZENoYW5nZUljb25zKCkKICAgICBpZiAoIW1fd2Vi
RnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIEZJWE1FOiBUbyBiZSBub3RpZmllZCBv
ZiBjaGFuZ2luZyBpY29uIFVSTFMgYWRkIG5vdGlmaWNhdGlvbgorICAgIC8vIEZJWE1FOiBJbiBv
cmRlciB0byBnZXQgbm90aWZpZWQgb2YgaWNvbiBVUkxTJyBjaGFuZ2VzLCBhZGQgYSBub3RpZmlj
YXRpb24uCiAgICAgLy8gZW1pdCBpY29uc0NoYW5nZWQoKTsKIH0KIApAQCAtNTQ3LDcgKzU0Niw3
IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hTaG93KCkKIAogdm9pZCBGcmFt
ZUxvYWRlckNsaWVudFF0OjpjYW5jZWxQb2xpY3lDaGVjaygpCiB7Ci0vLyAgICBxRGVidWcoKSA8
PCAiRnJhbWVMb2FkZXJDbGllbnRRdDo6Y2FuY2VsUG9saWN5Q2hlY2siOworICAgIC8vIHFEZWJ1
ZygpIDw8ICJGcmFtZUxvYWRlckNsaWVudFF0OjpjYW5jZWxQb2xpY3lDaGVjayI7CiB9CiAKIApA
QCAtNTU1LDcgKzU1NCw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hXaWxs
U3VibWl0Rm9ybShGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0aW9uLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPikK
IHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIC8vIEZJWE1FOiBUaGlzIGlzIHN1cmVseSB0
b28gc2ltcGxlCisgICAgLy8gRklYTUU6IFRoaXMgaXMgc3VyZWx5IHRvbyBzaW1wbGUuCiAgICAg
Y2FsbFBvbGljeUZ1bmN0aW9uKGZ1bmN0aW9uLCBQb2xpY3lVc2UpOwogfQogCkBAIC01NzQsNyAr
NTczLDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpyZXZlcnRUb1Byb3Zpc2lvbmFsU3Rh
dGUoRG9jdW1lbnRMb2FkZXIqKQogdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0Ojpwb3N0UHJvZ3Jl
c3NTdGFydGVkTm90aWZpY2F0aW9uKCkKIHsKICAgICBpZiAobV93ZWJGcmFtZSAmJiBtX2ZyYW1l
LT5wYWdlKCkpIHsKLSAgICAgICAgLy8gQSBuZXcgbG9hZCBzdGFydHMsIHNvIGxldHMgY2xlYXIg
dGhlIHByZXZpb3VzIGVycm9yLgorICAgICAgICAvLyBBcyBhIG5ldyBsb2FkIGhhdmUgc3RhcnRl
ZCwgY2xlYXIgdGhlIHByZXZpb3VzIGVycm9yLgogICAgICAgICBtX2xvYWRFcnJvciA9IFJlc291
cmNlRXJyb3IoKTsKICAgICAgICAgZW1pdCBsb2FkU3RhcnRlZCgpOwogICAgICAgICBwb3N0UHJv
Z3Jlc3NFc3RpbWF0ZUNoYW5nZWROb3RpZmljYXRpb24oKTsKQEAgLTU5Miw5ICs1OTEsOSBAQCB2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnBvc3RQcm9ncmVzc0VzdGltYXRlQ2hhbmdlZE5vdGlm
aWNhdGlvbigpCiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6cG9zdFByb2dyZXNzRmluaXNo
ZWROb3RpZmljYXRpb24oKQogewotICAgIC8vIHNlbmQgYSBtb3VzZW1vdmUgZXZlbnQgdG8KLSAg
ICAvLyAoMSkgdXBkYXRlIHRoZSBjdXJzb3IgdG8gY2hhbmdlIGFjY29yZGluZyB0byB3aGF0ZXZl
ciBpcyB1bmRlcm5lYXRoIHRoZSBtb3VzZSBjdXJzb3IgcmlnaHQgbm93Ci0gICAgLy8gKDIpIGRp
c3BsYXkgdGhlIHRvb2wgdGlwIGlmIHRoZSBtb3VzZSBob3ZlcnMgYSBub2RlIHdoaWNoIGhhcyBh
IHRvb2wgdGlwCisgICAgLy8gU2VuZCBhIG1vdXNlbW92ZSBldmVudCB0bzoKKyAgICAvLyAoMSkg
dXBkYXRlIHRoZSBjdXJzb3IgdG8gY2hhbmdlIGFjY29yZGluZyB0byB3aGF0ZXZlciBpcyB1bmRl
cm5lYXRoIHRoZSBtb3VzZSBjdXJzb3IgcmlnaHQgbm93OworICAgIC8vICgyKSBkaXNwbGF5IHRo
ZSB0b29sIHRpcCBpZiB0aGUgbW91c2UgaG92ZXJzIGEgbm9kZSB3aGljaCBoYXMgYSB0b29sIHRp
cC4KICAgICBpZiAobV9mcmFtZSAmJiBtX2ZyYW1lLT5ldmVudEhhbmRsZXIoKSAmJiBtX3dlYkZy
YW1lLT5wYWdlKCkpIHsKICAgICAgICAgUVdpZGdldCogdmlldyA9IG1fd2ViRnJhbWUtPnBhZ2Uo
KS0+dmlldygpOwogICAgICAgICBpZiAodmlldyAmJiB2aWV3LT5oYXNGb2N1cygpKSB7CkBAIC02
MTIsMTkgKzYxMSwxOSBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnBvc3RQcm9ncmVzc0Zp
bmlzaGVkTm90aWZpY2F0aW9uKCkKIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpzZXRNYWlu
RnJhbWVEb2N1bWVudFJlYWR5KGJvb2wpCiB7Ci0gICAgLy8gdGhpcyBpcyBvbmx5IGludGVyZXN0
aW5nIG9uY2Ugd2UgcHJvdmlkZSBhbiBleHRlcm5hbCBBUEkgZm9yIHRoZSBET00KKyAgICAvLyBU
aGlzIGlzIG9ubHkgaW50ZXJlc3Rpbmcgb25jZSB3ZSBwcm92aWRlIGFuIGV4dGVybmFsIEFQSSBm
b3IgdGhlIERPTS4KIH0KIAogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OndpbGxDaGFuZ2VU
aXRsZShEb2N1bWVudExvYWRlciopCiB7Ci0gICAgLy8gbm8gbmVlZCBmb3IsIGRpc3BhdGNoRGlk
UmVjZWl2ZVRpdGxlIGlzIHRoZSByaWdodCBjYWxsYmFjaworICAgIC8vIE5vIG5lZWQgZm9yLCBk
aXNwYXRjaERpZFJlY2VpdmVUaXRsZSBpcyB0aGUgcmlnaHQgY2FsbGJhY2suCiB9CiAKIAogdm9p
ZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopCiB7
Ci0gICAgLy8gbm8gbmVlZCBmb3IsIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlIGlzIHRoZSByaWdo
dCBjYWxsYmFjaworICAgIC8vIE5vIG5lZWQgZm9yLCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZSBp
cyB0aGUgcmlnaHQgY2FsbGJhY2suCiB9CiAKIApAQCAtNjMyLDggKzYzMSw4IEBAIHZvaWQgRnJh
bWVMb2FkZXJDbGllbnRRdDo6ZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKiBsb2FkZXIp
CiB7CiAgICAgaWYgKCFtX3BsdWdpblZpZXcpIHsKICAgICAgICAgLy8gVGhpcyBpcyBuZWNlc3Nh
cnkgdG8gY3JlYXRlIGFuIGVtcHR5IGRvY3VtZW50LiBTZWUgYnVnIDYzNDAwNC4KLSAgICAgICAg
Ly8gSG93ZXZlciwgd2Ugb25seSB3YW50IHRvIGRvIHRoaXMgaWYgbWFrZVJlcHJlc2VudGF0aW9u
IGhhcyBiZWVuIGNhbGxlZCwgdG8KLSAgICAgICAgLy8gbWF0Y2ggdGhlIGJlaGF2aW9yIG9uIHRo
ZSBNYWMuCisgICAgICAgIC8vIEhvd2V2ZXIsIHdlIG9ubHkgd2FudCB0byBkbyB0aGlzIGlmIG1h
a2VSZXByZXNlbnRhdGlvbiBoYXMgYmVlbiBjYWxsZWQsCisgICAgICAgIC8vIHRvIG1hdGNoIHRo
ZSBiZWhhdmlvciBvbiB0aGUgTWFjLgogICAgICAgICBpZiAobV9oYXNSZXByZXNlbnRhdGlvbikK
ICAgICAgICAgICAgIGxvYWRlci0+d3JpdGVyKCktPnNldEVuY29kaW5nKCIiLCBmYWxzZSk7CiAg
ICAgICAgIHJldHVybjsKQEAgLTY4Miw3ICs2ODEsNyBAQCBTdHJpbmcgRnJhbWVMb2FkZXJDbGll
bnRRdDo6Z2VuZXJhdGVkTUlNRVR5cGVGb3JVUkxTY2hlbWUoY29uc3QgU3RyaW5nJikgY29uc3QK
IAogdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpmcmFtZUxvYWRDb21wbGV0ZWQoKQogewotICAg
IC8vIE5vdGU6IENhbiBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMuCisgICAgLy8gTm90ZSB0aGF0
IHRoaXMgY2FuIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcy4KIH0KIAogCkBAIC02OTYsMTMgKzY5
NSwxMyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnJlc3RvcmVWaWV3U3RhdGUoKQogCiB2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQoKQogewotICAg
IC8vIGRvbid0IG5lZWQgdG8gZG8gYW55dGhpbmcgaGVyZQorICAgIC8vIERvbid0IG5lZWQgdG8g
ZG8gYW55dGhpbmcgaGVyZS4KIH0KIAogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpZEZp
bmlzaExvYWQoKQogewotLy8gICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgLy8gbm90SW1wbGVt
ZW50ZWQoKTsKIH0KIAogCkBAIC03MTQsOSArNzEzLDkgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVu
dFF0OjpzZXRUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSwgY29uc3QgS1VS
TCYKIHsKICAgICAvLyBVc2VkIGJ5IEFwcGxlIFdlYktpdCB0byB1cGRhdGUgdGhlIHRpdGxlIG9m
IGFuIGV4aXN0aW5nIGhpc3RvcnkgaXRlbS4KICAgICAvLyBRdFdlYktpdCBkb2Vzbid0IGFjY29t
b2RhdGUgdGhpcyBvbiBoaXN0b3J5IGl0ZW1zLiBJZiBpdCBldmVyIGRvZXMsCi0gICAgLy8gaXQg
c2hvdWxkIGJlIHByaXZhdGVCcm93c2luZy1hd2FyZS5Gb3Igbm93LCB3ZSBhcmUganVzdCBwYXNz
aW5nCisgICAgLy8gaXQgc2hvdWxkIGJlIHByaXZhdGVCcm93c2luZy1hd2FyZS4gRm9yIG5vdywg
d2UgYXJlIGp1c3QgcGFzc2luZwogICAgIC8vIGdsb2JhbGhpc3RvcnkgbGF5b3V0IHRlc3RzLgot
ICAgIC8vIEZJWE1FOiB1c2UgZGlyZWN0aW9uIG9mIHRpdGxlLgorICAgIC8vIEZJWE1FOiBVc2Ug
ZGlyZWN0aW9uIG9mIHRpdGxlLgogICAgIGlmIChkdW1wSGlzdG9yeUNhbGxiYWNrcykgewogICAg
ICAgICBwcmludGYoIldlYlZpZXcgdXBkYXRlZCB0aGUgdGl0bGUgZm9yIGhpc3RvcnkgVVJMIFwi
JXNcIiB0byBcIiVzXCIuXG4iLAogICAgICAgICAgICAgcVByaW50YWJsZShkcnREZXNjcmlwdGlv
blN1aXRhYmxlRm9yVGVzdFJlc3VsdCh1cmwpKSwKQEAgLTczNSw5ICs3MzQsOCBAQCBTdHJpbmcg
RnJhbWVMb2FkZXJDbGllbnRRdDo6dXNlckFnZW50KGNvbnN0IEtVUkwmIHVybCkKIAogdm9pZCBG
cmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZFJlY2VpdmVJY29uKCkKIHsKLSAgICBpZiAo
bV93ZWJGcmFtZSkgeworICAgIGlmIChtX3dlYkZyYW1lKQogICAgICAgICBlbWl0IG1fd2ViRnJh
bWUtPmljb25DaGFuZ2VkKCk7Ci0gICAgfQogfQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6
OmZyYW1lTG9hZGVyRGVzdHJveWVkKCkKQEAgLTc1OSw5ICs3NTcsOCBAQCB2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKERPTVdyYXBw
ZXJXb3JsZCogdwogICAgIGlmICh3b3JsZCAhPSBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fd2ViRnJhbWUpIHsKKyAgICBpZiAobV93ZWJGcmFt
ZSkKICAgICAgICAgZW1pdCBtX3dlYkZyYW1lLT5qYXZhU2NyaXB0V2luZG93T2JqZWN0Q2xlYXJl
ZCgpOwotICAgIH0KIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0Ojpkb2N1bWVudEVsZW1l
bnRBdmFpbGFibGUoKQpAQCAtNzk3LDcgKzc5NCw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRR
dDo6b25JY29uTG9hZGVkRm9yUGFnZVVSTChjb25zdCBRU3RyaW5nJiB1cmwpCiAKIHZvaWQgRnJh
bWVMb2FkZXJDbGllbnRRdDo6dXBkYXRlR2xvYmFsSGlzdG9yeSgpCiB7Ci0gICAgUVdlYkhpc3Rv
cnlJbnRlcmZhY2UgKmhpc3RvcnkgPSBRV2ViSGlzdG9yeUludGVyZmFjZTo6ZGVmYXVsdEludGVy
ZmFjZSgpOworICAgIFFXZWJIaXN0b3J5SW50ZXJmYWNlKiBoaXN0b3J5ID0gUVdlYkhpc3RvcnlJ
bnRlcmZhY2U6OmRlZmF1bHRJbnRlcmZhY2UoKTsKICAgICBXZWJDb3JlOjpEb2N1bWVudExvYWRl
ciogbG9hZGVyID0gbV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCk7CiAgICAgaWYg
KGhpc3RvcnkpCiAgICAgICAgIGhpc3RvcnktPmFkZEhpc3RvcnlFbnRyeShsb2FkZXItPnVybEZv
ckhpc3RvcnkoKS5wcmV0dHlVUkwoKSk7CkBAIC04NDIsMTIgKzgzOSwxMiBAQCB2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50UXQ6OnVwZGF0ZUdsb2JhbEhpc3RvcnlSZWRpcmVjdExpbmtzKCkKICAgICB9
CiB9CiAKLWJvb2wgRnJhbWVMb2FkZXJDbGllbnRRdDo6c2hvdWxkR29Ub0hpc3RvcnlJdGVtKFdl
YkNvcmU6Okhpc3RvcnlJdGVtICopIGNvbnN0Citib29sIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNo
b3VsZEdvVG9IaXN0b3J5SXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopIGNvbnN0CiB7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgRnJhbWVMb2FkZXJDbGllbnRRdDo6c2hvdWxkU3RvcExv
YWRpbmdGb3JIaXN0b3J5SXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSAqKSBjb25zdAorYm9vbCBG
cmFtZUxvYWRlckNsaWVudFF0OjpzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKFdlYkNv
cmU6Okhpc3RvcnlJdGVtKikgY29uc3QKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTkwNywx
MyArOTA0LDEzIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6Y29tbWl0dGVkTG9hZChXZWJD
b3JlOjpEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBjCiAgICAgaWYgKCFtX3BsdWdpblZp
ZXcpCiAgICAgICAgIGxvYWRlci0+Y29tbWl0RGF0YShkYXRhLCBsZW5ndGgpOwogICAgIAotICAg
IC8vIFdlIHJlLWNoZWNrIGhlcmUgYXMgdGhlIHBsdWdpbiBjYW4gaGF2ZSBiZWVuIGNyZWF0ZWQK
KyAgICAvLyBXZSByZS1jaGVjayBoZXJlIGFzIHRoZSBwbHVnaW4gY2FuIGhhdmUgYmVlbiBjcmVh
dGVkLgogICAgIGlmIChtX3BsdWdpblZpZXcgJiYgbV9wbHVnaW5WaWV3LT5pc1BsdWdpblZpZXco
KSkgewogICAgICAgICBpZiAoIW1faGFzU2VudFJlc3BvbnNlVG9QbHVnaW4pIHsKICAgICAgICAg
ICAgIG1fcGx1Z2luVmlldy0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGxvYWRlci0+cmVzcG9uc2UoKSk7
Ci0gICAgICAgICAgICAvLyBkaWRSZWNlaXZlUmVzcG9uc2Ugc2V0cyB1cCBhIG5ldyBzdHJlYW0g
dG8gdGhlIHBsdWctaW4uIG9uIGEgZnVsbC1wYWdlIHBsdWctaW4sIGEgZmFpbHVyZSBpbgotICAg
ICAgICAgICAgLy8gc2V0dGluZyB1cCB0aGlzIHN0cmVhbSBjYW4gY2F1c2UgdGhlIG1haW4gZG9j
dW1lbnQgbG9hZCB0byBiZSBjYW5jZWxsZWQsIHNldHRpbmcgbV9wbHVnaW5WaWV3Ci0gICAgICAg
ICAgICAvLyB0byBudWxsCisgICAgICAgICAgICAvLyBUaGUgZnVuY3Rpb24gZGlkUmVjZWl2ZVJl
c3BvbnNlIHNldHMgdXAgYSBuZXcgc3RyZWFtIHRvIHRoZSBwbHVnLWluLgorICAgICAgICAgICAg
Ly8gT24gYSBmdWxsLXBhZ2UgcGx1Zy1pbiwgYSBmYWlsdXJlIGluIHNldHRpbmcgdXAgdGhpcyBz
dHJlYW0gY2FuIGNhdXNlIHRoZQorICAgICAgICAgICAgLy8gbWFpbiBkb2N1bWVudCBsb2FkIHRv
IGJlIGNhbmNlbGxlZCwgc2V0dGluZyBtX3BsdWdpblZpZXcgdG8gbnVsbC4KICAgICAgICAgICAg
IGlmICghbV9wbHVnaW5WaWV3KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IG1faGFzU2VudFJlc3BvbnNlVG9QbHVnaW4gPSB0cnVlOwpAQCAtOTMwLDcgKzkyNyw3IEBAIFdl
YkNvcmU6OlJlc291cmNlRXJyb3IgRnJhbWVMb2FkZXJDbGllbnRRdDo6Y2FuY2VsbGVkRXJyb3Io
Y29uc3QgV2ViQ29yZTo6UmVzb3VyCiAgICAgcmV0dXJuIGVycm9yOwogfQogCi0vLyBjb3BpZWQg
ZnJvbSBXZWJLaXQvTWlzYy9XZWJLaXRFcnJvcnNbUHJpdmF0ZV0uaAorLy8gVGhpcyB3YXMgY29w
aWVkIGZyb20gZmlsZSAiV2ViS2l0L1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0RXJyb3Jz
LmgiLgogZW51bSB7CiAgICAgV2ViS2l0RXJyb3JDYW5ub3RTaG93TUlNRVR5cGUgPSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMTAwLAogICAgIFdlYktpdEVycm9yQ2Fubm90U2hvd1VSTCA9
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMSwKQEAgLTEwMTMsNyArMTAxMCw3
IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZG93bmxvYWQoV2ViQ29yZTo6UmVzb3VyY2VI
YW5kbGUqIGhhbmRsZSwgY29uc3QgV2ViQ29yCiAgICAgUU5ldHdvcmtSZXBseUhhbmRsZXIqIGhh
bmRsZXIgPSBoYW5kbGUtPmdldEludGVybmFsKCktPm1fam9iOwogICAgIFFOZXR3b3JrUmVwbHkq
IHJlcGx5ID0gaGFuZGxlci0+cmVsZWFzZSgpOwogICAgIGlmIChyZXBseSkgewotICAgICAgICBR
V2ViUGFnZSAqcGFnZSA9IG1fd2ViRnJhbWUtPnBhZ2UoKTsKKyAgICAgICAgUVdlYlBhZ2UqIHBh
Z2UgPSBtX3dlYkZyYW1lLT5wYWdlKCk7CiAgICAgICAgIGlmIChwYWdlLT5mb3J3YXJkVW5zdXBw
b3J0ZWRDb250ZW50KCkpCiAgICAgICAgICAgICBlbWl0IHBhZ2UtPnVuc3VwcG9ydGVkQ29udGVu
dChyZXBseSk7CiAgICAgICAgIGVsc2UKQEAgLTEwNTIsMTIgKzEwNDksMTEgQEAgdm9pZCBGcmFt
ZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlciosIHVuc2kKICAgICAgICAgaWYgKFVSTHNUb1JlZGlyZWN0LmNvbnRhaW5zKHVybCkp
CiAgICAgICAgICAgICBuZXdSZXF1ZXN0LnNldFVSTChRVXJsKFVSTHNUb1JlZGlyZWN0W3VybF0p
KTsKICAgICB9Ci0gICAgLy8gc2VlbXMgbGlrZSB0aGUgTWFjIGNvZGUgZG9lc24ndCBkbyBhbnl0
aGluZyBoZXJlIGJ5IGRlZmF1bHQgbmVpdGhlcgotICAgIC8vcURlYnVnKCkgPDwgIkZyYW1lTG9h
ZGVyQ2xpZW50UXQ6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0IiA8PCByZXF1ZXN0LmlzTnVsbCgp
IDw8IHJlcXVlc3QudXJsKCkuc3RyaW5nYCgpOworICAgIC8vIFNlZW1zIGxpa2UgdGhlIE1hYyBj
b2RlIGRvZXNuJ3QgZG8gYW55dGhpbmcgaGVyZSBieSBkZWZhdWx0IG5laXRoZXIuCisgICAgLy8g
cURlYnVnKCkgPDwgIkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoV2lsbFNlbmRSZXF1ZXN0
IiA8PCByZXF1ZXN0LmlzTnVsbCgpIDw8IHJlcXVlc3QudXJsKCkuc3RyaW5nYCgpOwogfQogCi1i
b29sCi1GcmFtZUxvYWRlckNsaWVudFF0OjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShEb2N1
bWVudExvYWRlciosIHVuc2lnbmVkIGxvbmcpCitib29sIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNo
b3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZykK
IHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBmYWxzZTsKQEAgLTExODAsNyAr
MTE3Niw3IEBAIFdlYkNvcmU6OkZyYW1lKiBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaENy
ZWF0ZVBhZ2UoY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvCiAKIHZvaWQgRnJhbWVMb2FkZXJDbGll
bnRRdDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShGcmFtZVBvbGljeUZ1bmN0aW9u
IGZ1bmN0aW9uLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikKIHsKLSAgICAvLyB3ZSBuZWVkIHRvIGNhbGwg
ZGlyZWN0bHkgaGVyZQorICAgIC8vIFdlIG5lZWQgdG8gY2FsbCBkaXJlY3RseSBoZXJlLgogICAg
IGlmIChXZWJDb3JlOjpjb250ZW50RGlzcG9zaXRpb25UeXBlKHJlc3BvbnNlLmh0dHBIZWFkZXJG
aWVsZCgiQ29udGVudC1EaXNwb3NpdGlvbiIpKSA9PSBXZWJDb3JlOjpDb250ZW50RGlzcG9zaXRp
b25BdHRhY2htZW50KQogICAgICAgICBjYWxsUG9saWN5RnVuY3Rpb24oZnVuY3Rpb24sIFBvbGlj
eURvd25sb2FkKTsKICAgICBlbHNlIGlmIChjYW5TaG93TUlNRVR5cGUocmVzcG9uc2UubWltZVR5
cGUoKSkpCkBAIC0xMjE3LDcgKzEyMTMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRp
c3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihGcmFtZVBvbGljeUZ1bgogICAg
IFFXZWJQYWdlKnBhZ2UgPSBtX3dlYkZyYW1lLT5wYWdlKCk7CiAgICAgUG9saWN5QWN0aW9uIHJl
c3VsdDsKIAotICAgIC8vIEN1cnJlbnRseSwgdGhpcyBpcyBvbmx5IGVuYWJsZWQgYnkgRFJUCisg
ICAgLy8gQ3VycmVudGx5LCB0aGlzIGlzIG9ubHkgZW5hYmxlZCBieSBEUlQuCiAgICAgaWYgKHBv
bGljeURlbGVnYXRlRW5hYmxlZCkgewogICAgICAgICBSZWZQdHI8Tm9kZT4gbm9kZTsKICAgICAg
ICAgZm9yIChjb25zdCBFdmVudCogZXZlbnQgPSBhY3Rpb24uZXZlbnQoKTsgZXZlbnQ7IGV2ZW50
ID0gZXZlbnQtPnVuZGVybHlpbmdFdmVudCgpKSB7CkBAIC0xMjk4LDcgKzEyOTQsNyBAQCBQYXNz
UmVmUHRyPEZyYW1lPiBGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVGcmFtZShjb25zdCBLVVJM
JiB1cmwsIGNvbnN0IFN0cmluZwogCiAgICAgZW1pdCBtX3dlYkZyYW1lLT5wYWdlKCktPmZyYW1l
Q3JlYXRlZCh3ZWJGcmFtZSk7CiAKLSAgICAvLyAjIyMgc2V0IG92ZXJyaWRlIGVuY29kaW5nIGlm
IHdlIGhhdmUgb25lCisgICAgLy8gRklYTUU6IFNldCBvdmVycmlkZSBlbmNvZGluZyBpZiB3ZSBo
YXZlIG9uZS4KIAogICAgIG1fZnJhbWUtPmxvYWRlcigpLT5sb2FkVVJMSW50b0NoaWxkRnJhbWUo
ZnJhbWVEYXRhLnVybCwgZnJhbWVEYXRhLnJlZmVycmVyLCBmcmFtZURhdGEuZnJhbWUuZ2V0KCkp
OwogCkBAIC0xMzMzLDcgKzEzMjksNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnRyYW5z
ZmVyTG9hZGluZ1Jlc291cmNlRnJvbVBhZ2UodW5zaWduZWQgbG9uZywgRG9jdW1lbgogCiBPYmpl
Y3RDb250ZW50VHlwZSBGcmFtZUxvYWRlckNsaWVudFF0OjpvYmplY3RDb250ZW50VHlwZShjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGVJbiwgYm9vbCBzaG91bGRQcmVmZXJQ
bHVnSW5zRm9ySW1hZ2VzKQogewotLy8gICAgcURlYnVnKCk8PCIgKysrKysrKysrKysrKysrKyB1
cmwgaXMgIjw8dXJsLnByZXR0eVVSTCgpPDwiLCBtaW1lID0gIjw8bWltZVR5cGVJbjsKKyAgICAv
LyBxRGVidWcoKTw8IiArKysrKysrKysrKysrKysrIHVybCBpcyAiPDx1cmwucHJldHR5VVJMKCk8
PCIsIG1pbWUgPSAiPDxtaW1lVHlwZUluOwogICAgIFFGaWxlSW5mbyBmaSh1cmwucGF0aCgpKTsK
ICAgICBTdHJpbmcgZXh0ZW5zaW9uID0gZmkuc3VmZml4KCk7CiAgICAgaWYgKG1pbWVUeXBlSW4g
PT0gImFwcGxpY2F0aW9uL3gtcXQtcGx1Z2luIiB8fCBtaW1lVHlwZUluID09ICJhcHBsaWNhdGlv
bi94LXF0LXN0eWxlZC13aWRnZXQiKQpAQCAtMTQzNCw4ICsxNDMwLDggQEAgcHJpdmF0ZToKICAg
ICAgICAgaWYgKCFpc1Zpc2libGUoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAv
LyBpZiBzZXRNYXNrIGlzIHNldCB3aXRoIGFuIGVtcHR5IFFSZWdpb24sIG5vIGNsaXBwaW5nIHdp
bGwKLSAgICAgICAgLy8gYmUgcGVyZm9ybWVkLCBzbyBpbiB0aGF0IGNhc2Ugd2UgaGlkZSB0aGUg
cGxhdGZvcm1XaWRnZXQKKyAgICAgICAgLy8gSWYgc2V0TWFzayBpcyBzZXQgd2l0aCBhbiBlbXB0
eSBRUmVnaW9uLCBubyBjbGlwcGluZyB3aWxsCisgICAgICAgIC8vIGJlIHBlcmZvcm1lZCwgc28g
aW4gdGhhdCBjYXNlIHdlIGhpZGUgdGhlIHBsYXRmb3JtV2lkZ2V0LgogICAgICAgICBRUmVnaW9u
IG1hc2sgPSBwbGF0Zm9ybVdpZGdldCgpLT5tYXNrKCk7CiAgICAgICAgIHBsYXRmb3JtV2lkZ2V0
KCktPnNldFZpc2libGUoIW1hc2suaXNFbXB0eSgpKTsKICAgICB9CkBAIC0xNDY5LDcgKzE0NjUs
NyBAQCBwdWJsaWM6CiAgICAgICAgIEludFJlY3Qgd2luZG93UmVjdCA9IGNvbnZlcnRUb0NvbnRh
aW5pbmdXaW5kb3coSW50UmVjdCgwLCAwLCBmcmFtZVJlY3QoKS53aWR0aCgpLCBmcmFtZVJlY3Qo
KS5oZWlnaHQoKSkpOwogICAgICAgICBncmFwaGljc1dpZGdldC0+c2V0R2VvbWV0cnkoUVJlY3Qo
d2luZG93UmVjdCkpOwogCi0gICAgICAgIC8vIEZJWE1FOiBjbGlwcGluZyBvZiBncmFwaGljcyB3
aWRnZXRzCisgICAgICAgIC8vIEZJWE1FOiBNYWtlIHRoZSBjb2RlIGhhbmRsZSBjbGlwcGluZyBv
ZiBncmFwaGljcyB3aWRnZXRzLgogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgc2hvdygpCiAgICAg
ewpAQCAtMTQ5Niw4ICsxNDkyLDggQEAgcHJpdmF0ZToKIFBhc3NSZWZQdHI8V2lkZ2V0PiBGcmFt
ZUxvYWRlckNsaWVudFF0OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwg
SFRNTFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIHBhcmFtTmFtZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KQogewotLy8gICAgIHFEZWJ1ZygpPDwiLS0tLS0t
IENyZWF0aW5nIHBsdWdpbiBpbiBGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVQbHVnaW4gZm9y
ICI8PHVybC5wcmV0dHlVUkwoKSA8PCBtaW1lVHlwZTsKLS8vICAgICBxRGVidWcoKTw8Ii0tLS0t
LVx0IHVybCA9ICI8PHVybC5wcmV0dHlVUkwoKTsKKyAgICAvLyBxRGVidWcoKTw8Ii0tLS0tLSBD
cmVhdGluZyBwbHVnaW4gaW4gRnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlUGx1Z2luIGZvciAi
PDx1cmwucHJldHR5VVJMKCkgPDwgbWltZVR5cGU7CisgICAgLy8gcURlYnVnKCk8PCItLS0tLS1c
dCB1cmwgPSAiPDx1cmwucHJldHR5VVJMKCk7CiAKICAgICBpZiAoIW1fd2ViRnJhbWUpCiAgICAg
ICAgIHJldHVybiAwOwpAQCAtMTU1NSwxMiArMTU1MSwxMiBAQCBQYXNzUmVmUHRyPFdpZGdldD4g
RnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmIHBsdWdpblNp
emUsCiAgICAgICAgICAgICBRV2lkZ2V0KiBwYXJlbnRXaWRnZXQgPSAwOwogICAgICAgICAgICAg
aWYgKG1fd2ViRnJhbWUtPnBhZ2UoKS0+ZC0+Y2xpZW50KQogICAgICAgICAgICAgICAgIHBhcmVu
dFdpZGdldCA9IHFvYmplY3RfY2FzdDxRV2lkZ2V0Kj4obV93ZWJGcmFtZS0+cGFnZSgpLT5kLT5j
bGllbnQtPnBsdWdpblBhcmVudCgpKTsKLSAgICAgICAgICAgIGlmIChwYXJlbnRXaWRnZXQpIC8v
IGRvbid0IHJlcGFyZW50IHRvIG5vdGhpbmcgKGkuZS4ga2VlcCB3aGF0ZXZlciBwYXJlbnQgUVdl
YlBhZ2U6OmNyZWF0ZVBsdWdpbigpIGNob3NlLgorICAgICAgICAgICAgaWYgKHBhcmVudFdpZGdl
dCkgLy8gRG9uJ3QgcmVwYXJlbnQgdG8gbm90aGluZyAoaS5lLiBrZWVwIHdoYXRldmVyIHBhcmVu
dCBRV2ViUGFnZTo6Y3JlYXRlUGx1Z2luKCkgY2hvc2UuCiAgICAgICAgICAgICAgICAgd2lkZ2V0
LT5zZXRQYXJlbnQocGFyZW50V2lkZ2V0KTsKICAgICAgICAgICAgIHdpZGdldC0+aGlkZSgpOwog
ICAgICAgICAgICAgUmVmUHRyPFF0UGx1Z2luV2lkZ2V0PiB3ID0gYWRvcHRSZWYobmV3IFF0UGx1
Z2luV2lkZ2V0KCkpOwogICAgICAgICAgICAgdy0+c2V0UGxhdGZvcm1XaWRnZXQod2lkZ2V0KTsK
LSAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSBpdCdzIGludmlzaWJsZSB1bnRpbCBwcm9wZXJseSBw
bGFjZWQgaW50byB0aGUgbGF5b3V0CisgICAgICAgICAgICAvLyBNYWtlIHN1cmUgaXQncyBpbnZp
c2libGUgdW50aWwgcHJvcGVybHkgcGxhY2VkIGludG8gdGhlIGxheW91dC4KICAgICAgICAgICAg
IHctPnNldEZyYW1lUmVjdChJbnRSZWN0KDAsIDAsIDAsIDApKTsKICAgICAgICAgICAgIHJldHVy
biB3OwogICAgICAgICB9CkBAIC0xNTcyLDE2ICsxNTY4LDE2IEBAIFBhc3NSZWZQdHI8V2lkZ2V0
PiBGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYgcGx1Z2lu
U2l6ZSwKICAgICAgICAgICAgIGlmIChtX3dlYkZyYW1lLT5wYWdlKCktPmQtPmNsaWVudCkKICAg
ICAgICAgICAgICAgICBwYXJlbnRXaWRnZXQgPSBxb2JqZWN0X2Nhc3Q8UUdyYXBoaWNzT2JqZWN0
Kj4obV93ZWJGcmFtZS0+cGFnZSgpLT5kLT5jbGllbnQtPnBsdWdpblBhcmVudCgpKTsKICAgICAg
ICAgICAgIGdyYXBoaWNzV2lkZ2V0LT5oaWRlKCk7Ci0gICAgICAgICAgICBpZiAocGFyZW50V2lk
Z2V0KSAvLyBkb24ndCByZXBhcmVudCB0byBub3RoaW5nIChpLmUuIGtlZXAgd2hhdGV2ZXIgcGFy
ZW50IFFXZWJQYWdlOjpjcmVhdGVQbHVnaW4oKSBjaG9zZS4KKyAgICAgICAgICAgIGlmIChwYXJl
bnRXaWRnZXQpIC8vIERvbid0IHJlcGFyZW50IHRvIG5vdGhpbmcgKGkuZS4ga2VlcCB3aGF0ZXZl
ciBwYXJlbnQgUVdlYlBhZ2U6OmNyZWF0ZVBsdWdpbigpIGNob3NlLgogICAgICAgICAgICAgICAg
IGdyYXBoaWNzV2lkZ2V0LT5zZXRQYXJlbnRJdGVtKHBhcmVudFdpZGdldCk7CiAgICAgICAgICAg
ICBSZWZQdHI8UXRQbHVnaW5HcmFwaGljc1dpZGdldD4gdyA9IFF0UGx1Z2luR3JhcGhpY3NXaWRn
ZXQ6OmNyZWF0ZShncmFwaGljc1dpZGdldCk7Ci0gICAgICAgICAgICAvLyBNYWtlIHN1cmUgaXQn
cyBpbnZpc2libGUgdW50aWwgcHJvcGVybHkgcGxhY2VkIGludG8gdGhlIGxheW91dAorICAgICAg
ICAgICAgLy8gTWFrZSBzdXJlIGl0J3MgaW52aXNpYmxlIHVudGlsIHByb3Blcmx5IHBsYWNlZCBp
bnRvIHRoZSBsYXlvdXQuCiAgICAgICAgICAgICB3LT5zZXRGcmFtZVJlY3QoSW50UmVjdCgwLCAw
LCAwLCAwKSk7CiAgICAgICAgICAgICByZXR1cm4gdzsKICAgICAgICAgfQogI2VuZGlmIC8vIFFU
X05PX0dSQVBISUNTVklFVwogCi0gICAgICAgIC8vIEZJWE1FOiBtYWtlIHRoaW5ncyB3b3JrIGZv
ciB3aWRnZXRsZXNzIHBsdWdpbnMgYXMgd2VsbAorICAgICAgICAvLyBGSVhNRTogTWFrZSB0aGlu
Z3Mgd29yayBmb3Igd2lkZ2V0bGVzcyBwbHVnaW5zIGFzIHdlbGwuCiAgICAgICAgIGRlbGV0ZSBv
YmplY3Q7CiAgICAgfQogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQpAQCAtMTU5NCwx
NiArMTU5MCwxNiBAQCBQYXNzUmVmUHRyPFdpZGdldD4gRnJhbWVMb2FkZXJDbGllbnRRdDo6Y3Jl
YXRlUGx1Z2luKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsCiAjaWYgZGVmaW5lZChNT1pfUExB
VEZPUk1fTUFFTU8pICYmIChNT1pfUExBVEZPUk1fTUFFTU8gPj0gNSkKICAgICAgICAgICAgIHNp
emVfdCB3bW9kZUluZGV4ID0gcGFyYW1zLmZpbmQoIndtb2RlIik7CiAgICAgICAgICAgICBpZiAo
d21vZGVJbmRleCA9PSAtMSkgewotICAgICAgICAgICAgICAgIC8vIERpc2FibGUgWEVtYmVkIG1v
ZGUgYW5kIGZvcmNlIGl0IHRvIG9wYXF1ZSBtb2RlCisgICAgICAgICAgICAgICAgLy8gRGlzYWJs
ZSBYRW1iZWQgbW9kZSBhbmQgZm9yY2UgaXQgdG8gb3BhcXVlIG1vZGUuCiAgICAgICAgICAgICAg
ICAgcGFyYW1zLmFwcGVuZCgid21vZGUiKTsKICAgICAgICAgICAgICAgICB2YWx1ZXMuYXBwZW5k
KCJvcGFxdWUiKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWlzUVdlYlZpZXcpIHsKLSAgICAg
ICAgICAgICAgICAvLyBEaXNhYmxlIHRyYW5zcGFyZW5jeSBpZiBjbGllbnQgaXMgbm90IGEgUVdl
YlZpZXcKKyAgICAgICAgICAgICAgICAvLyBEaXNhYmxlIHRyYW5zcGFyZW5jeSBpZiBjbGllbnQg
aXMgbm90IGEgUVdlYlZpZXcuCiAgICAgICAgICAgICAgICAgdmFsdWVzW3dtb2RlSW5kZXhdID0g
Im9wYXF1ZSI7CiAgICAgICAgICAgICB9CiAjZWxzZQogICAgICAgICAgICAgaWYgKCFpc1FXZWJW
aWV3KSB7Ci0gICAgICAgICAgICAgICAgLy8gaW5qZWN0IHdtb2RlPW9wYXF1ZSB3aGVuIHRoZXJl
IGlzIG5vIGNsaWVudCBvciB0aGUgY2xpZW50IGlzIG5vdCBhIFFXZWJWaWV3CisgICAgICAgICAg
ICAgICAgLy8gSW5qZWN0IHdtb2RlPW9wYXF1ZSB3aGVuIHRoZXJlIGlzIG5vIGNsaWVudCBvciB0
aGUgY2xpZW50IGlzIG5vdCBhIFFXZWJWaWV3LgogICAgICAgICAgICAgICAgIHNpemVfdCB3bW9k
ZUluZGV4ID0gcGFyYW1zLmZpbmQoIndtb2RlIik7CiAgICAgICAgICAgICAgICAgaWYgKHdtb2Rl
SW5kZXggPT0gLTEpIHsKICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgid21vZGUi
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88460</attachid>
            <date>2011-04-06 10:11:49 -0700</date>
            <delta_ts>2011-04-06 10:32:29 -0700</delta_ts>
            <desc>My previous patch is now deprecated, some mistaken has been done. Check this one instead.</desc>
            <filename>patch-bug-40254.diff</filename>
            <type>text/plain</type>
            <size>25105</size>
            <attacher name="Rafael Brandao">rafael.lobo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9x
dC9DaGFuZ2VMb2cKaW5kZXggNzNhYTBhMy4uNzY5YTg0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NCBAQAorMjAxMS0wNC0wNiAgQW5kZXJzIEJha2tlbiAgPGFnYmFra2VuQGdtYWlsLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRd
IEZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwIGhhcyBjb2Rpbmctc3R5bGUgZXJyb3JzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDI1NAorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChkcnRE
ZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudFF0OjpoYXNXZWJWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50UXQ6OnNldENvcGllc09uU2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkQ2hhbmdl
SWNvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y2FuY2VsUG9s
aWN5Q2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0
Y2hXaWxsU3VibWl0Rm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0
Ojpwb3N0UHJvZ3Jlc3NTdGFydGVkTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50UXQ6OnBvc3RQcm9ncmVzc0ZpbmlzaGVkTm90aWZpY2F0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNldE1haW5GcmFtZURvY3VtZW50
UmVhZHkpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6d2lsbENoYW5n
ZVRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpZENoYW5n
ZVRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmZpbmlzaGVk
TG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpmcmFtZUxv
YWRDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6cHJv
dmlzaW9uYWxMb2FkU3RhcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dFF0OjpkaWRGaW5pc2hMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
UXQ6OnNldFRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRp
c3BhdGNoRGlkUmVjZWl2ZUljb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRRdDo6ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6dXBkYXRlR2xvYmFsSGlzdG9yeSk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpzaG91bGRHb1RvSGlzdG9yeUl0ZW0pOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6c2hvdWxkU3RvcExvYWRpbmdG
b3JIaXN0b3J5SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojpj
b21taXR0ZWRMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRv
d25sb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNo
V2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6
OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNy
ZWF0ZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6Om9iamVj
dENvbnRlbnRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNy
ZWF0ZVBsdWdpbik6CisKIDIwMTEtMDQtMDQgIENoYW5nIFNodSAgPGNzaHVAd2Via2l0Lm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwIGIvU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAppbmRleCBk
ODU0ZThmLi44N2FkNWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKQEAgLTMxLDcxICszMSw3MiBAQAogICov
CiAKICNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudFF0Lmgi
CisKICNpbmNsdWRlICJDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJD
U1NQcm9wZXJ0eU5hbWVzLmgiCisjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRl
ICJGb3JtU3RhdGUuaCIKLSNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudFF0LmgiCiAjaW5jbHVk
ZSAiRnJhbWVOZXR3b3JraW5nQ29udGV4dFF0LmgiCiAjaW5jbHVkZSAiRnJhbWVUcmVlLmgiCiAj
aW5jbHVkZSAiRnJhbWVWaWV3LmgiCi0jaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKKyNpbmNs
dWRlICJIaXN0b3J5SXRlbS5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKKyNpbmNsdWRl
ICJIVE1MQXBwbGV0RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgorI2lu
Y2x1ZGUgIkhUTUxQbHVnSW5FbGVtZW50LmgiCisjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKICNp
ZiBFTkFCTEUoSUNPTkRBVEFCQVNFKQogI2luY2x1ZGUgIkljb25EYXRhYmFzZUNsaWVudFF0Lmgi
CiAjZW5kaWYKICNpZiBVU0UoSlNDKQogI2luY2x1ZGUgIkpTRE9NV2luZG93QmFzZS5oIgotI2Vs
aWYgVVNFKFY4KQotI2luY2x1ZGUgIlY4RE9NV2luZG93LmgiCiAjZW5kaWYKICNpbmNsdWRlICJN
SU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgotI2luY2x1ZGUgIlJl
c291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUg
IlBhZ2UuaCIKLSNpbmNsdWRlICJQbHVnaW5EYXRhLmgiCiAjaW5jbHVkZSAiUGx1Z2luRGF0YWJh
c2UuaCIKKyNpbmNsdWRlICJQbHVnaW5EYXRhLmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2Vy
LmgiCi0jaW5jbHVkZSAiUmVuZGVyUGFydC5oIgotI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5o
IgotI2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgiCi0jaW5jbHVkZSAiSFRNTEFwcGxldEVsZW1lbnQu
aCIKLSNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MUGx1Z0luRWxl
bWVudC5oIgotI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKICNpbmNsdWRlICJRTmV0d29ya1JlcGx5SGFuZGxlci5oIgotI2luY2x1ZGUgIlJlc291
cmNlSGFuZGxlSW50ZXJuYWwuaCIKKyNpbmNsdWRlICJRV2ViUGFnZUNsaWVudC5oIgorI2luY2x1
ZGUgIlJlbmRlclBhcnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgorI2luY2x1ZGUg
IlJlc291cmNlSGFuZGxlSW50ZXJuYWwuaCIKKyNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIK
KyNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxl
ci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCi0jaW5jbHVkZSAiUVdlYlBhZ2VDbGllbnQuaCIK
KyNpZiBVU0UoVjgpCisjaW5jbHVkZSAiVjhET01XaW5kb3cuaCIKKyNlbmRpZgogI2luY2x1ZGUg
IlZpZXdwb3J0QXJndW1lbnRzLmgiCiAKLSNpbmNsdWRlICJxd2VicGFnZS5oIgotI2luY2x1ZGUg
InF3ZWJwYWdlX3AuaCIKICNpbmNsdWRlICJxd2ViZnJhbWUuaCIKICNpbmNsdWRlICJxd2ViZnJh
bWVfcC5oIgogI2luY2x1ZGUgInF3ZWJoaXN0b3J5aW50ZXJmYWNlLmgiCisjaW5jbHVkZSAicXdl
Ymhpc3RvcnlfcC5oIgorI2luY2x1ZGUgInF3ZWJwYWdlLmgiCisjaW5jbHVkZSAicXdlYnBhZ2Vf
cC5oIgogI2luY2x1ZGUgInF3ZWJwbHVnaW5mYWN0b3J5LmgiCiAKLSNpbmNsdWRlIDxxZmlsZWlu
Zm8uaD4KLQogI2luY2x1ZGUgPFFDb3JlQXBwbGljYXRpb24+CiAjaW5jbHVkZSA8UURlYnVnPgor
I2luY2x1ZGUgPFFGaWxlSW5mbz4KICNpbmNsdWRlIDxRR3JhcGhpY3NTY2VuZT4KICNpbmNsdWRl
IDxRR3JhcGhpY3NXaWRnZXQ+Ci0jaW5jbHVkZSA8UU5ldHdvcmtSZXF1ZXN0PgogI2luY2x1ZGUg
PFFOZXR3b3JrUmVwbHk+CisjaW5jbHVkZSA8UU5ldHdvcmtSZXF1ZXN0PgogI2luY2x1ZGUgPFFT
dHJpbmdMaXN0PgotI2luY2x1ZGUgInF3ZWJoaXN0b3J5X3AuaCIKICNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+CiAKIHN0YXRpYyBRTWFwPHVuc2lnbmVkIGxvbmcsIFFTdHJpbmc+IGR1bXBBc3NpZ25l
ZFVybHM7CiAKLS8vIENvbXBhcmUgd2l0aCBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
RnJhbWVMb2FkRGVsZWdhdGUubW0KLXN0YXRpYyBRU3RyaW5nIGRydERlc2NyaXB0aW9uU3VpdGFi
bGVGb3JUZXN0UmVzdWx0KFdlYkNvcmU6OkZyYW1lKiBfZnJhbWUpCisvLyBDb21wYXJlIHdpdGgg
dGhlIGZpbGUgIldlYktpdC9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdh
dGUubW0iLgorc3RhdGljIFFTdHJpbmcgZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1
bHQoV2ViQ29yZTo6RnJhbWUqIHdlYkNvcmVGcmFtZSkKIHsKLSAgICBRV2ViRnJhbWUqIGZyYW1l
ID0gUVdlYkZyYW1lUHJpdmF0ZTo6a2l0KF9mcmFtZSk7CisgICAgUVdlYkZyYW1lKiBmcmFtZSA9
IFFXZWJGcmFtZVByaXZhdGU6OmtpdCh3ZWJDb3JlRnJhbWUpOwogICAgIFFTdHJpbmcgbmFtZSA9
IGZyYW1lLT5mcmFtZU5hbWUoKTsKIAogICAgIGJvb2wgaXNNYWluRnJhbWUgPSBmcmFtZSA9PSBm
cmFtZS0+cGFnZSgpLT5tYWluRnJhbWUoKTsKQEAgLTEwMywxMSArMTA0LDEwIEBAIHN0YXRpYyBR
U3RyaW5nIGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KFdlYkNvcmU6OkZyYW1l
KiBfZnJhbWUpCiAgICAgICAgIGlmICghbmFtZS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1
cm4gUVN0cmluZzo6ZnJvbUxhdGluMSgibWFpbiBmcmFtZSBcIiUxXCIiKS5hcmcobmFtZSk7CiAg
ICAgICAgIHJldHVybiBRTGF0aW4xU3RyaW5nKCJtYWluIGZyYW1lIik7Ci0gICAgfSBlbHNlIHsK
LSAgICAgICAgaWYgKCFuYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybiBRU3RyaW5n
Ojpmcm9tTGF0aW4xKCJmcmFtZSBcIiUxXCIiKS5hcmcobmFtZSk7Ci0gICAgICAgIHJldHVybiBR
TGF0aW4xU3RyaW5nKCJmcmFtZSAoYW5vbnltb3VzKSIpOwogICAgIH0KKyAgICBpZiAoIW5hbWUu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gUVN0cmluZzo6ZnJvbUxhdGluMSgiZnJhbWUgXCIl
MVwiIikuYXJnKG5hbWUpOworICAgIHJldHVybiBRTGF0aW4xU3RyaW5nKCJmcmFtZSAoYW5vbnlt
b3VzKSIpOwogfQogCiBzdGF0aWMgUVN0cmluZyBkcnRQcmludEZyYW1lVXNlckdlc3R1cmVTdGF0
dXMoV2ViQ29yZTo6RnJhbWUqIGZyYW1lKQpAQCAtMTE3LDEyICsxMTcsMTIgQEAgc3RhdGljIFFT
dHJpbmcgZHJ0UHJpbnRGcmFtZVVzZXJHZXN0dXJlU3RhdHVzKFdlYkNvcmU6OkZyYW1lKiBmcmFt
ZSkKICAgICByZXR1cm4gUVN0cmluZzo6ZnJvbUxhdGluMSgiRnJhbWUgd2l0aCB1c2VyIGdlc3R1
cmUgXCIlMVwiIikuYXJnKFFMYXRpbjFTdHJpbmcoImZhbHNlIikpOwogfQogCi1zdGF0aWMgUVN0
cmluZyBkcnREZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChjb25zdCBXZWJDb3JlOjpL
VVJMJiBfdXJsKQorc3RhdGljIFFTdHJpbmcgZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RS
ZXN1bHQoY29uc3QgV2ViQ29yZTo6S1VSTCYga3VybCkKIHsKLSAgICBpZiAoX3VybC5pc0VtcHR5
KCkgfHwgIV91cmwuaXNMb2NhbEZpbGUoKSkKLSAgICAgICAgcmV0dXJuIF91cmwuc3RyaW5nKCk7
Ci0gICAgLy8gUmVtb3ZlIHRoZSBsZWFkaW5nIHBhdGggZnJvbSBmaWxlIHVybHMKLSAgICByZXR1
cm4gUVN0cmluZyhfdXJsLnN0cmluZygpKS5yZW1vdmUoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRRdDo6ZHVtcFJlc291cmNlTG9hZENhbGxiYWNrc1BhdGgpLm1pZCgxKTsKKyAgICBpZiAoa3Vy
bC5pc0VtcHR5KCkgfHwgIWt1cmwuaXNMb2NhbEZpbGUoKSkKKyAgICAgICAgcmV0dXJuIGt1cmwu
c3RyaW5nKCk7CisgICAgLy8gUmVtb3ZlIHRoZSBsZWFkaW5nIHBhdGggZnJvbSBmaWxlIHVybHMu
CisgICAgcmV0dXJuIFFTdHJpbmcoa3VybC5zdHJpbmcoKSkucmVtb3ZlKFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50UXQ6OmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3NQYXRoKS5taWQoMSk7CiB9
CiAKIHN0YXRpYyBRU3RyaW5nIGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQpAQCAtMTY2LDggKzE2Niw3IEBAIHN0
YXRpYyBRU3RyaW5nIGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGNvbnN0IFJl
ZlB0cjxXZWJDb3JlOjpOb2RlPiBuCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotbmFtZXNwYWNl
IFdlYkNvcmUKLXsKK25hbWVzcGFjZSBXZWJDb3JlIHsKIAogYm9vbCBGcmFtZUxvYWRlckNsaWVu
dFF0OjpkdW1wRnJhbWVMb2FkZXJDYWxsYmFja3MgPSBmYWxzZTsKIGJvb2wgRnJhbWVMb2FkZXJD
bGllbnRRdDo6ZHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRlckNhbGxiYWNrcyA9IGZhbHNlOwpA
QCAtMTg0LDcgKzE4Myw3IEBAIGJvb2wgRnJhbWVMb2FkZXJDbGllbnRRdDo6cG9saWN5RGVsZWdh
dGVFbmFibGVkID0gZmFsc2U7CiBib29sIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnBvbGljeURlbGVn
YXRlUGVybWlzc2l2ZSA9IGZhbHNlOwogUU1hcDxRU3RyaW5nLCBRU3RyaW5nPiBGcmFtZUxvYWRl
ckNsaWVudFF0OjpVUkxzVG9SZWRpcmVjdCA9IFFNYXA8UVN0cmluZywgUVN0cmluZz4oKTsKIAot
Ly8gVGFrZW4gZnJvbSBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKKy8v
IFRha2VuIGZyb20gdGhlIGZpbGUgIldlYktpdC9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9XZWJWaWV3SG9zdC5jcHAiLgogc3RhdGljIGNvbnN0IGNoYXIqIG5hdmlnYXRpb25UeXBlVG9T
dHJpbmcoTmF2aWdhdGlvblR5cGUgdHlwZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKQEAgLTI1
MCw3ICsyNDksNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNhbGxQb2xpY3lGdW5jdGlv
bihGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1bmN0aW9uLCBQb2xpYwogCiBib29sIEZyYW1lTG9hZGVy
Q2xpZW50UXQ6Omhhc1dlYlZpZXcoKSBjb25zdAogewotICAgIC8vbm90SW1wbGVtZW50ZWQoKTsK
KyAgICAvLyBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zMzEs
NyArMzMwLDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0Ojpmb3JjZUxheW91dEZvck5vbkhU
TUwoKQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNldENvcGllc09uU2Nyb2xsKCkKIHsK
LSAgICAvLyBhcHBhcmVudGx5IG1hYyBzcGVjaWZpYworICAgIC8vIEFwcGFyZW50bHkgdGhpcyBp
cyBtYWMgc3BlY2lmaWMuCiB9CiAKIApAQCAtMzQ2LDcgKzM0NSw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRRdDo6ZGV0YWNoZWRGcm9tUGFyZW50MygpCiAKIHZvaWQgRnJhbWVMb2FkZXJDbGll
bnRRdDo6ZGlzcGF0Y2hEaWRIYW5kbGVPbmxvYWRFdmVudHMoKQogewotICAgIC8vIGRvbid0IG5l
ZWQgdGhpcyBvbmUKKyAgICAvLyBEb24ndCBuZWVkIHRoaXMgb25lLgogICAgIGlmIChkdW1wRnJh
bWVMb2FkZXJDYWxsYmFja3MpCiAgICAgICAgIHByaW50ZigiJXMgLSBkaWRIYW5kbGVPbmxvYWRF
dmVudHNGb3JGcmFtZVxuIiwgcVByaW50YWJsZShkcnREZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVz
dFJlc3VsdChtX2ZyYW1lKSkpOwogfQpAQCAtNDQ5LDcgKzQ0OCw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpCiAKIHZvaWQgRnJh
bWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nV2l0
aERpcmVjdGlvbiYgdGl0bGUpCiB7Ci0gICAgLy8gRklYTUU6IHVzZSBkaXJlY3Rpb24gb2YgdGl0
bGUuCisgICAgLy8gRklYTUU6IFVzZSBkaXJlY3Rpb24gb2YgdGl0bGUuCiAgICAgaWYgKGR1bXBG
cmFtZUxvYWRlckNhbGxiYWNrcykKICAgICAgICAgcHJpbnRmKCIlcyAtIGRpZFJlY2VpdmVUaXRs
ZTogJXNcbiIsIHFQcmludGFibGUoZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQo
bV9mcmFtZSkpLCBxUHJpbnRhYmxlKFFTdHJpbmcodGl0bGUuc3RyaW5nKCkpKSk7CiAKQEAgLTQ2
OCw3ICs0NjcsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkQ2hhbmdl
SWNvbnMoKQogICAgIGlmICghbV93ZWJGcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8g
RklYTUU6IFRvIGJlIG5vdGlmaWVkIG9mIGNoYW5naW5nIGljb24gVVJMUyBhZGQgbm90aWZpY2F0
aW9uCisgICAgLy8gRklYTUU6IEluIG9yZGVyIHRvIGdldCBub3RpZmllZCBvZiBpY29uIFVSTFMn
IGNoYW5nZXMsIGFkZCBhIG5vdGlmaWNhdGlvbi4KICAgICAvLyBlbWl0IGljb25zQ2hhbmdlZCgp
OwogfQogCkBAIC01NDcsNyArNTQ2LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNw
YXRjaFNob3coKQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNhbmNlbFBvbGljeUNoZWNr
KCkKIHsKLS8vICAgIHFEZWJ1ZygpIDw8ICJGcmFtZUxvYWRlckNsaWVudFF0OjpjYW5jZWxQb2xp
Y3lDaGVjayI7CisgICAgLy8gcURlYnVnKCkgPDwgIkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNhbmNl
bFBvbGljeUNoZWNrIjsKIH0KIAogCkBAIC01NTUsNyArNTU0LDcgQEAgdm9pZCBGcmFtZUxvYWRl
ckNsaWVudFF0OjpkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKEZyYW1lUG9saWN5RnVuY3Rpb24gZnVu
Y3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UGFzc1JlZlB0cjxGb3JtU3RhdGU+KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgLy8g
RklYTUU6IFRoaXMgaXMgc3VyZWx5IHRvbyBzaW1wbGUKKyAgICAvLyBGSVhNRTogVGhpcyBpcyBz
dXJlbHkgdG9vIHNpbXBsZS4KICAgICBjYWxsUG9saWN5RnVuY3Rpb24oZnVuY3Rpb24sIFBvbGlj
eVVzZSk7CiB9CiAKQEAgLTU3NCw3ICs1NzMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6
OnJldmVydFRvUHJvdmlzaW9uYWxTdGF0ZShEb2N1bWVudExvYWRlciopCiB2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50UXQ6OnBvc3RQcm9ncmVzc1N0YXJ0ZWROb3RpZmljYXRpb24oKQogewogICAgIGlm
IChtX3dlYkZyYW1lICYmIG1fZnJhbWUtPnBhZ2UoKSkgewotICAgICAgICAvLyBBIG5ldyBsb2Fk
IHN0YXJ0cywgc28gbGV0cyBjbGVhciB0aGUgcHJldmlvdXMgZXJyb3IuCisgICAgICAgIC8vIEFz
IGEgbmV3IGxvYWQgaGF2ZSBzdGFydGVkLCBjbGVhciB0aGUgcHJldmlvdXMgZXJyb3IuCiAgICAg
ICAgIG1fbG9hZEVycm9yID0gUmVzb3VyY2VFcnJvcigpOwogICAgICAgICBlbWl0IGxvYWRTdGFy
dGVkKCk7CiAgICAgICAgIHBvc3RQcm9ncmVzc0VzdGltYXRlQ2hhbmdlZE5vdGlmaWNhdGlvbigp
OwpAQCAtNTkyLDkgKzU5MSw5IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6cG9zdFByb2dy
ZXNzRXN0aW1hdGVDaGFuZ2VkTm90aWZpY2F0aW9uKCkKIAogdm9pZCBGcmFtZUxvYWRlckNsaWVu
dFF0Ojpwb3N0UHJvZ3Jlc3NGaW5pc2hlZE5vdGlmaWNhdGlvbigpCiB7Ci0gICAgLy8gc2VuZCBh
IG1vdXNlbW92ZSBldmVudCB0bwotICAgIC8vICgxKSB1cGRhdGUgdGhlIGN1cnNvciB0byBjaGFu
Z2UgYWNjb3JkaW5nIHRvIHdoYXRldmVyIGlzIHVuZGVybmVhdGggdGhlIG1vdXNlIGN1cnNvciBy
aWdodCBub3cKLSAgICAvLyAoMikgZGlzcGxheSB0aGUgdG9vbCB0aXAgaWYgdGhlIG1vdXNlIGhv
dmVycyBhIG5vZGUgd2hpY2ggaGFzIGEgdG9vbCB0aXAKKyAgICAvLyBTZW5kIGEgbW91c2Vtb3Zl
IGV2ZW50IHRvOgorICAgIC8vICgxKSB1cGRhdGUgdGhlIGN1cnNvciB0byBjaGFuZ2UgYWNjb3Jk
aW5nIHRvIHdoYXRldmVyIGlzIHVuZGVybmVhdGggdGhlIG1vdXNlIGN1cnNvciByaWdodCBub3c7
CisgICAgLy8gKDIpIGRpc3BsYXkgdGhlIHRvb2wgdGlwIGlmIHRoZSBtb3VzZSBob3ZlcnMgYSBu
b2RlIHdoaWNoIGhhcyBhIHRvb2wgdGlwLgogICAgIGlmIChtX2ZyYW1lICYmIG1fZnJhbWUtPmV2
ZW50SGFuZGxlcigpICYmIG1fd2ViRnJhbWUtPnBhZ2UoKSkgewogICAgICAgICBRV2lkZ2V0KiB2
aWV3ID0gbV93ZWJGcmFtZS0+cGFnZSgpLT52aWV3KCk7CiAgICAgICAgIGlmICh2aWV3ICYmIHZp
ZXctPmhhc0ZvY3VzKCkpIHsKQEAgLTYxMiwxOSArNjExLDE5IEBAIHZvaWQgRnJhbWVMb2FkZXJD
bGllbnRRdDo6cG9zdFByb2dyZXNzRmluaXNoZWROb3RpZmljYXRpb24oKQogCiB2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50UXQ6OnNldE1haW5GcmFtZURvY3VtZW50UmVhZHkoYm9vbCkKIHsKLSAgICAv
LyB0aGlzIGlzIG9ubHkgaW50ZXJlc3Rpbmcgb25jZSB3ZSBwcm92aWRlIGFuIGV4dGVybmFsIEFQ
SSBmb3IgdGhlIERPTQorICAgIC8vIFRoaXMgaXMgb25seSBpbnRlcmVzdGluZyBvbmNlIHdlIHBy
b3ZpZGUgYW4gZXh0ZXJuYWwgQVBJIGZvciB0aGUgRE9NLgogfQogCiAKIHZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRRdDo6d2lsbENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVyKikKIHsKLSAgICAvLyBu
byBuZWVkIGZvciwgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUgaXMgdGhlIHJpZ2h0IGNhbGxiYWNr
CisgICAgLy8gTm8gbmVlZCBmb3IsIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlIGlzIHRoZSByaWdo
dCBjYWxsYmFjay4KIH0KIAogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpZENoYW5nZVRp
dGxlKERvY3VtZW50TG9hZGVyKikKIHsKLSAgICAvLyBubyBuZWVkIGZvciwgZGlzcGF0Y2hEaWRS
ZWNlaXZlVGl0bGUgaXMgdGhlIHJpZ2h0IGNhbGxiYWNrCisgICAgLy8gTm8gbmVlZCBmb3IsIGRp
c3BhdGNoRGlkUmVjZWl2ZVRpdGxlIGlzIHRoZSByaWdodCBjYWxsYmFjay4KIH0KIAogCkBAIC02
MzIsOCArNjMxLDggQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpmaW5pc2hlZExvYWRpbmco
RG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIHsKICAgICBpZiAoIW1fcGx1Z2luVmlldykgewogICAg
ICAgICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSB0byBjcmVhdGUgYW4gZW1wdHkgZG9jdW1lbnQuIFNl
ZSBidWcgNjM0MDA0LgotICAgICAgICAvLyBIb3dldmVyLCB3ZSBvbmx5IHdhbnQgdG8gZG8gdGhp
cyBpZiBtYWtlUmVwcmVzZW50YXRpb24gaGFzIGJlZW4gY2FsbGVkLCB0bwotICAgICAgICAvLyBt
YXRjaCB0aGUgYmVoYXZpb3Igb24gdGhlIE1hYy4KKyAgICAgICAgLy8gSG93ZXZlciwgd2Ugb25s
eSB3YW50IHRvIGRvIHRoaXMgaWYgbWFrZVJlcHJlc2VudGF0aW9uIGhhcyBiZWVuIGNhbGxlZCwK
KyAgICAgICAgLy8gdG8gbWF0Y2ggdGhlIGJlaGF2aW9yIG9uIHRoZSBNYWMuCiAgICAgICAgIGlm
IChtX2hhc1JlcHJlc2VudGF0aW9uKQogICAgICAgICAgICAgbG9hZGVyLT53cml0ZXIoKS0+c2V0
RW5jb2RpbmcoIiIsIGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNjgyLDcgKzY4MSw3IEBA
IFN0cmluZyBGcmFtZUxvYWRlckNsaWVudFF0OjpnZW5lcmF0ZWRNSU1FVHlwZUZvclVSTFNjaGVt
ZShjb25zdCBTdHJpbmcmKSBjb25zdAogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmZyYW1l
TG9hZENvbXBsZXRlZCgpCiB7Ci0gICAgLy8gTm90ZTogQ2FuIGJlIGNhbGxlZCBtdWx0aXBsZSB0
aW1lcy4KKyAgICAvLyBOb3RlIHRoYXQgdGhpcyBjYW4gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVz
LgogfQogCiAKQEAgLTY5NiwxMyArNjk1LDEzIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6
cmVzdG9yZVZpZXdTdGF0ZSgpCiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6cHJvdmlzaW9u
YWxMb2FkU3RhcnRlZCgpCiB7Ci0gICAgLy8gZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZyBoZXJl
CisgICAgLy8gRG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZyBoZXJlLgogfQogCiAKIHZvaWQgRnJh
bWVMb2FkZXJDbGllbnRRdDo6ZGlkRmluaXNoTG9hZCgpCiB7Ci0vLyAgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICAvLyBub3RJbXBsZW1lbnRlZCgpOwogfQogCiAKQEAgLTcxNCw5ICs3MTMsOSBA
QCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNldFRpdGxlKGNvbnN0IFN0cmluZ1dpdGhEaXJl
Y3Rpb24mIHRpdGxlLCBjb25zdCBLVVJMJgogewogICAgIC8vIFVzZWQgYnkgQXBwbGUgV2ViS2l0
IHRvIHVwZGF0ZSB0aGUgdGl0bGUgb2YgYW4gZXhpc3RpbmcgaGlzdG9yeSBpdGVtLgogICAgIC8v
IFF0V2ViS2l0IGRvZXNuJ3QgYWNjb21vZGF0ZSB0aGlzIG9uIGhpc3RvcnkgaXRlbXMuIElmIGl0
IGV2ZXIgZG9lcywKLSAgICAvLyBpdCBzaG91bGQgYmUgcHJpdmF0ZUJyb3dzaW5nLWF3YXJlLkZv
ciBub3csIHdlIGFyZSBqdXN0IHBhc3NpbmcKKyAgICAvLyBpdCBzaG91bGQgYmUgcHJpdmF0ZUJy
b3dzaW5nLWF3YXJlLiBGb3Igbm93LCB3ZSBhcmUganVzdCBwYXNzaW5nCiAgICAgLy8gZ2xvYmFs
aGlzdG9yeSBsYXlvdXQgdGVzdHMuCi0gICAgLy8gRklYTUU6IHVzZSBkaXJlY3Rpb24gb2YgdGl0
bGUuCisgICAgLy8gRklYTUU6IFVzZSBkaXJlY3Rpb24gb2YgdGl0bGUuCiAgICAgaWYgKGR1bXBI
aXN0b3J5Q2FsbGJhY2tzKSB7CiAgICAgICAgIHByaW50ZigiV2ViVmlldyB1cGRhdGVkIHRoZSB0
aXRsZSBmb3IgaGlzdG9yeSBVUkwgXCIlc1wiIHRvIFwiJXNcIi5cbiIsCiAgICAgICAgICAgICBx
UHJpbnRhYmxlKGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KHVybCkpLApAQCAt
NzM1LDkgKzczNCw4IEBAIFN0cmluZyBGcmFtZUxvYWRlckNsaWVudFF0Ojp1c2VyQWdlbnQoY29u
c3QgS1VSTCYgdXJsKQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkUmVj
ZWl2ZUljb24oKQogewotICAgIGlmIChtX3dlYkZyYW1lKSB7CisgICAgaWYgKG1fd2ViRnJhbWUp
CiAgICAgICAgIGVtaXQgbV93ZWJGcmFtZS0+aWNvbkNoYW5nZWQoKTsKLSAgICB9CiB9CiAKIHZv
aWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZnJhbWVMb2FkZXJEZXN0cm95ZWQoKQpAQCAtNzU5LDkg
Kzc1Nyw4IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRDbGVhcldpbmRv
d09iamVjdEluV29ybGQoRE9NV3JhcHBlcldvcmxkKiB3CiAgICAgaWYgKHdvcmxkICE9IG1haW5U
aHJlYWROb3JtYWxXb3JsZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV93ZWJGcmFt
ZSkgeworICAgIGlmIChtX3dlYkZyYW1lKQogICAgICAgICBlbWl0IG1fd2ViRnJhbWUtPmphdmFT
Y3JpcHRXaW5kb3dPYmplY3RDbGVhcmVkKCk7Ci0gICAgfQogfQogCiB2b2lkIEZyYW1lTG9hZGVy
Q2xpZW50UXQ6OmRvY3VtZW50RWxlbWVudEF2YWlsYWJsZSgpCkBAIC03OTcsNyArNzk0LDcgQEAg
dm9pZCBGcmFtZUxvYWRlckNsaWVudFF0Ojpvbkljb25Mb2FkZWRGb3JQYWdlVVJMKGNvbnN0IFFT
dHJpbmcmIHVybCkKIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0Ojp1cGRhdGVHbG9iYWxIaXN0
b3J5KCkKIHsKLSAgICBRV2ViSGlzdG9yeUludGVyZmFjZSAqaGlzdG9yeSA9IFFXZWJIaXN0b3J5
SW50ZXJmYWNlOjpkZWZhdWx0SW50ZXJmYWNlKCk7CisgICAgUVdlYkhpc3RvcnlJbnRlcmZhY2Uq
IGhpc3RvcnkgPSBRV2ViSGlzdG9yeUludGVyZmFjZTo6ZGVmYXVsdEludGVyZmFjZSgpOwogICAg
IFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSBtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9j
dW1lbnRMb2FkZXIoKTsKICAgICBpZiAoaGlzdG9yeSkKICAgICAgICAgaGlzdG9yeS0+YWRkSGlz
dG9yeUVudHJ5KGxvYWRlci0+dXJsRm9ySGlzdG9yeSgpLnByZXR0eVVSTCgpKTsKQEAgLTg0Miwx
MiArODM5LDEyIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6dXBkYXRlR2xvYmFsSGlzdG9y
eVJlZGlyZWN0TGlua3MoKQogICAgIH0KIH0KIAotYm9vbCBGcmFtZUxvYWRlckNsaWVudFF0Ojpz
aG91bGRHb1RvSGlzdG9yeUl0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0gKikgY29uc3QKK2Jvb2wg
RnJhbWVMb2FkZXJDbGllbnRRdDo6c2hvdWxkR29Ub0hpc3RvcnlJdGVtKFdlYkNvcmU6Okhpc3Rv
cnlJdGVtKikgY29uc3QKIHsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBGcmFtZUxvYWRl
ckNsaWVudFF0OjpzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKFdlYkNvcmU6Okhpc3Rv
cnlJdGVtICopIGNvbnN0Citib29sIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNob3VsZFN0b3BMb2Fk
aW5nRm9ySGlzdG9yeUl0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKSBjb25zdAogewogICAgIHJl
dHVybiB0cnVlOwogfQpAQCAtOTA3LDEzICs5MDQsMTMgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVu
dFF0Ojpjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0
IGMKICAgICBpZiAoIW1fcGx1Z2luVmlldykKICAgICAgICAgbG9hZGVyLT5jb21taXREYXRhKGRh
dGEsIGxlbmd0aCk7CiAgICAgCi0gICAgLy8gV2UgcmUtY2hlY2sgaGVyZSBhcyB0aGUgcGx1Z2lu
IGNhbiBoYXZlIGJlZW4gY3JlYXRlZAorICAgIC8vIFdlIHJlLWNoZWNrIGhlcmUgYXMgdGhlIHBs
dWdpbiBjYW4gaGF2ZSBiZWVuIGNyZWF0ZWQuCiAgICAgaWYgKG1fcGx1Z2luVmlldyAmJiBtX3Bs
dWdpblZpZXctPmlzUGx1Z2luVmlldygpKSB7CiAgICAgICAgIGlmICghbV9oYXNTZW50UmVzcG9u
c2VUb1BsdWdpbikgewogICAgICAgICAgICAgbV9wbHVnaW5WaWV3LT5kaWRSZWNlaXZlUmVzcG9u
c2UobG9hZGVyLT5yZXNwb25zZSgpKTsKLSAgICAgICAgICAgIC8vIGRpZFJlY2VpdmVSZXNwb25z
ZSBzZXRzIHVwIGEgbmV3IHN0cmVhbSB0byB0aGUgcGx1Zy1pbi4gb24gYSBmdWxsLXBhZ2UgcGx1
Zy1pbiwgYSBmYWlsdXJlIGluCi0gICAgICAgICAgICAvLyBzZXR0aW5nIHVwIHRoaXMgc3RyZWFt
IGNhbiBjYXVzZSB0aGUgbWFpbiBkb2N1bWVudCBsb2FkIHRvIGJlIGNhbmNlbGxlZCwgc2V0dGlu
ZyBtX3BsdWdpblZpZXcKLSAgICAgICAgICAgIC8vIHRvIG51bGwKKyAgICAgICAgICAgIC8vIFRo
ZSBmdW5jdGlvbiBkaWRSZWNlaXZlUmVzcG9uc2Ugc2V0cyB1cCBhIG5ldyBzdHJlYW0gdG8gdGhl
IHBsdWctaW4uCisgICAgICAgICAgICAvLyBPbiBhIGZ1bGwtcGFnZSBwbHVnLWluLCBhIGZhaWx1
cmUgaW4gc2V0dGluZyB1cCB0aGlzIHN0cmVhbSBjYW4gY2F1c2UgdGhlCisgICAgICAgICAgICAv
LyBtYWluIGRvY3VtZW50IGxvYWQgdG8gYmUgY2FuY2VsbGVkLCBzZXR0aW5nIG1fcGx1Z2luVmll
dyB0byBudWxsLgogICAgICAgICAgICAgaWYgKCFtX3BsdWdpblZpZXcpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpbiA9IHRydWU7
CkBAIC05MzAsMTIgKzkyNywxMiBAQCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIEZyYW1lTG9hZGVy
Q2xpZW50UXQ6OmNhbmNlbGxlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cgogICAgIHJldHVy
biBlcnJvcjsKIH0KIAotLy8gY29waWVkIGZyb20gV2ViS2l0L01pc2MvV2ViS2l0RXJyb3JzW1By
aXZhdGVdLmgKKy8vIFRoaXMgd2FzIGNvcGllZCBmcm9tIGZpbGUgIldlYktpdC9Tb3VyY2UvV2Vi
S2l0L21hYy9NaXNjL1dlYktpdEVycm9ycy5oIi4KIGVudW0gewogICAgIFdlYktpdEVycm9yQ2Fu
bm90U2hvd01JTUVUeXBlID0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMCwKICAgICBX
ZWJLaXRFcnJvckNhbm5vdFNob3dVUkwgPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAxMDEsCiAgICAgV2ViS2l0RXJyb3JGcmFtZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdl
ID0gICAgICAgICAgICAgMTAyLAotICAgIFdlYktpdEVycm9yQ2Fubm90VXNlUmVzdHJpY3RlZFBv
cnQgPSAxMDMsCisgICAgV2ViS2l0RXJyb3JDYW5ub3RVc2VSZXN0cmljdGVkUG9ydCA9ICAgICAg
ICAgICAgICAgICAgICAgICAgMTAzLAogICAgIFdlYktpdEVycm9yQ2Fubm90RmluZFBsdWdJbiA9
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwMCwKICAgICBXZWJLaXRFcnJvckNhbm5v
dExvYWRQbHVnSW4gPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDEsCiAgICAgV2Vi
S2l0RXJyb3JKYXZhVW5hdmFpbGFibGUgPSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MjAyLApAQCAtMTAxMyw3ICsxMDEwLDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0Ojpkb3du
bG9hZChXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBjb25zdCBXZWJDb3IKICAgICBR
TmV0d29ya1JlcGx5SGFuZGxlciogaGFuZGxlciA9IGhhbmRsZS0+Z2V0SW50ZXJuYWwoKS0+bV9q
b2I7CiAgICAgUU5ldHdvcmtSZXBseSogcmVwbHkgPSBoYW5kbGVyLT5yZWxlYXNlKCk7CiAgICAg
aWYgKHJlcGx5KSB7Ci0gICAgICAgIFFXZWJQYWdlICpwYWdlID0gbV93ZWJGcmFtZS0+cGFnZSgp
OworICAgICAgICBRV2ViUGFnZSogcGFnZSA9IG1fd2ViRnJhbWUtPnBhZ2UoKTsKICAgICAgICAg
aWYgKHBhZ2UtPmZvcndhcmRVbnN1cHBvcnRlZENvbnRlbnQoKSkKICAgICAgICAgICAgIGVtaXQg
cGFnZS0+dW5zdXBwb3J0ZWRDb250ZW50KHJlcGx5KTsKICAgICAgICAgZWxzZQpAQCAtMTA1Miwx
MiArMTA0OSwxMSBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoV2lsbFNlbmRS
ZXF1ZXN0KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgdW5zaQogICAgICAgICBpZiAoVVJMc1Rv
UmVkaXJlY3QuY29udGFpbnModXJsKSkKICAgICAgICAgICAgIG5ld1JlcXVlc3Quc2V0VVJMKFFV
cmwoVVJMc1RvUmVkaXJlY3RbdXJsXSkpOwogICAgIH0KLSAgICAvLyBzZWVtcyBsaWtlIHRoZSBN
YWMgY29kZSBkb2Vzbid0IGRvIGFueXRoaW5nIGhlcmUgYnkgZGVmYXVsdCBuZWl0aGVyCi0gICAg
Ly9xRGVidWcoKSA8PCAiRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hXaWxsU2VuZFJlcXVl
c3QiIDw8IHJlcXVlc3QuaXNOdWxsKCkgPDwgcmVxdWVzdC51cmwoKS5zdHJpbmdgKCk7CisgICAg
Ly8gU2VlbXMgbGlrZSB0aGUgTWFjIGNvZGUgZG9lc24ndCBkbyBhbnl0aGluZyBoZXJlIGJ5IGRl
ZmF1bHQgbmVpdGhlci4KKyAgICAvLyBxRGVidWcoKSA8PCAiRnJhbWVMb2FkZXJDbGllbnRRdDo6
ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QiIDw8IHJlcXVlc3QuaXNOdWxsKCkgPDwgcmVxdWVzdC51
cmwoKS5zdHJpbmcoKTsKIH0KIAotYm9vbAotRnJhbWVMb2FkZXJDbGllbnRRdDo6c2hvdWxkVXNl
Q3JlZGVudGlhbFN0b3JhZ2UoRG9jdW1lbnRMb2FkZXIqLCB1bnNpZ25lZCBsb25nKQorYm9vbCBG
cmFtZUxvYWRlckNsaWVudFF0OjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShEb2N1bWVudExv
YWRlciosIHVuc2lnbmVkIGxvbmcpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1
cm4gZmFsc2U7CkBAIC0xMTgwLDcgKzExNzYsNyBAQCBXZWJDb3JlOjpGcmFtZSogRnJhbWVMb2Fk
ZXJDbGllbnRRdDo6ZGlzcGF0Y2hDcmVhdGVQYWdlKGNvbnN0IFdlYkNvcmU6Ok5hdmlnYXRpbwog
CiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2UoRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpCiB7Ci0g
ICAgLy8gd2UgbmVlZCB0byBjYWxsIGRpcmVjdGx5IGhlcmUKKyAgICAvLyBXZSBuZWVkIHRvIGNh
bGwgZGlyZWN0bHkgaGVyZS4KICAgICBpZiAoV2ViQ29yZTo6Y29udGVudERpc3Bvc2l0aW9uVHlw
ZShyZXNwb25zZS5odHRwSGVhZGVyRmllbGQoIkNvbnRlbnQtRGlzcG9zaXRpb24iKSkgPT0gV2Vi
Q29yZTo6Q29udGVudERpc3Bvc2l0aW9uQXR0YWNobWVudCkKICAgICAgICAgY2FsbFBvbGljeUZ1
bmN0aW9uKGZ1bmN0aW9uLCBQb2xpY3lEb3dubG9hZCk7CiAgICAgZWxzZSBpZiAoY2FuU2hvd01J
TUVUeXBlKHJlc3BvbnNlLm1pbWVUeXBlKCkpKQpAQCAtMTIxNyw3ICsxMjEzLDcgQEAgdm9pZCBG
cmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24oRnJhbWVQb2xpY3lGdW4KICAgICBRV2ViUGFnZSpwYWdlID0gbV93ZWJGcmFtZS0+cGFnZSgp
OwogICAgIFBvbGljeUFjdGlvbiByZXN1bHQ7CiAKLSAgICAvLyBDdXJyZW50bHksIHRoaXMgaXMg
b25seSBlbmFibGVkIGJ5IERSVAorICAgIC8vIEN1cnJlbnRseSwgdGhpcyBpcyBvbmx5IGVuYWJs
ZWQgYnkgRFJULgogICAgIGlmIChwb2xpY3lEZWxlZ2F0ZUVuYWJsZWQpIHsKICAgICAgICAgUmVm
UHRyPE5vZGU+IG5vZGU7CiAgICAgICAgIGZvciAoY29uc3QgRXZlbnQqIGV2ZW50ID0gYWN0aW9u
LmV2ZW50KCk7IGV2ZW50OyBldmVudCA9IGV2ZW50LT51bmRlcmx5aW5nRXZlbnQoKSkgewpAQCAt
MTI5OCw3ICsxMjk0LDcgQEAgUGFzc1JlZlB0cjxGcmFtZT4gRnJhbWVMb2FkZXJDbGllbnRRdDo6
Y3JlYXRlRnJhbWUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcKIAogICAgIGVtaXQgbV93
ZWJGcmFtZS0+cGFnZSgpLT5mcmFtZUNyZWF0ZWQod2ViRnJhbWUpOwogCi0gICAgLy8gIyMjIHNl
dCBvdmVycmlkZSBlbmNvZGluZyBpZiB3ZSBoYXZlIG9uZQorICAgIC8vIEZJWE1FOiBTZXQgb3Zl
cnJpZGUgZW5jb2RpbmcgaWYgd2UgaGF2ZSBvbmUuCiAKICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+
bG9hZFVSTEludG9DaGlsZEZyYW1lKGZyYW1lRGF0YS51cmwsIGZyYW1lRGF0YS5yZWZlcnJlciwg
ZnJhbWVEYXRhLmZyYW1lLmdldCgpKTsKIApAQCAtMTMzMyw3ICsxMzI5LDcgQEAgdm9pZCBGcmFt
ZUxvYWRlckNsaWVudFF0Ojp0cmFuc2ZlckxvYWRpbmdSZXNvdXJjZUZyb21QYWdlKHVuc2lnbmVk
IGxvbmcsIERvY3VtZW4KIAogT2JqZWN0Q29udGVudFR5cGUgRnJhbWVMb2FkZXJDbGllbnRRdDo6
b2JqZWN0Q29udGVudFR5cGUoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBl
SW4sIGJvb2wgc2hvdWxkUHJlZmVyUGx1Z0luc0ZvckltYWdlcykKIHsKLS8vICAgIHFEZWJ1Zygp
PDwiICsrKysrKysrKysrKysrKysgdXJsIGlzICI8PHVybC5wcmV0dHlVUkwoKTw8IiwgbWltZSA9
ICI8PG1pbWVUeXBlSW47CisgICAgLy8gcURlYnVnKCk8PCIgKysrKysrKysrKysrKysrKyB1cmwg
aXMgIjw8dXJsLnByZXR0eVVSTCgpPDwiLCBtaW1lID0gIjw8bWltZVR5cGVJbjsKICAgICBRRmls
ZUluZm8gZmkodXJsLnBhdGgoKSk7CiAgICAgU3RyaW5nIGV4dGVuc2lvbiA9IGZpLnN1ZmZpeCgp
OwogICAgIGlmIChtaW1lVHlwZUluID09ICJhcHBsaWNhdGlvbi94LXF0LXBsdWdpbiIgfHwgbWlt
ZVR5cGVJbiA9PSAiYXBwbGljYXRpb24veC1xdC1zdHlsZWQtd2lkZ2V0IikKQEAgLTE0MzQsOCAr
MTQzMCw4IEBAIHByaXZhdGU6CiAgICAgICAgIGlmICghaXNWaXNpYmxlKCkpCiAgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgLy8gaWYgc2V0TWFzayBpcyBzZXQgd2l0aCBhbiBlbXB0eSBR
UmVnaW9uLCBubyBjbGlwcGluZyB3aWxsCi0gICAgICAgIC8vIGJlIHBlcmZvcm1lZCwgc28gaW4g
dGhhdCBjYXNlIHdlIGhpZGUgdGhlIHBsYXRmb3JtV2lkZ2V0CisgICAgICAgIC8vIElmIHNldE1h
c2sgaXMgc2V0IHdpdGggYW4gZW1wdHkgUVJlZ2lvbiwgbm8gY2xpcHBpbmcgd2lsbAorICAgICAg
ICAvLyBiZSBwZXJmb3JtZWQsIHNvIGluIHRoYXQgY2FzZSB3ZSBoaWRlIHRoZSBwbGF0Zm9ybVdp
ZGdldC4KICAgICAgICAgUVJlZ2lvbiBtYXNrID0gcGxhdGZvcm1XaWRnZXQoKS0+bWFzaygpOwog
ICAgICAgICBwbGF0Zm9ybVdpZGdldCgpLT5zZXRWaXNpYmxlKCFtYXNrLmlzRW1wdHkoKSk7CiAg
ICAgfQpAQCAtMTQ2OSw3ICsxNDY1LDcgQEAgcHVibGljOgogICAgICAgICBJbnRSZWN0IHdpbmRv
d1JlY3QgPSBjb252ZXJ0VG9Db250YWluaW5nV2luZG93KEludFJlY3QoMCwgMCwgZnJhbWVSZWN0
KCkud2lkdGgoKSwgZnJhbWVSZWN0KCkuaGVpZ2h0KCkpKTsKICAgICAgICAgZ3JhcGhpY3NXaWRn
ZXQtPnNldEdlb21ldHJ5KFFSZWN0KHdpbmRvd1JlY3QpKTsKIAotICAgICAgICAvLyBGSVhNRTog
Y2xpcHBpbmcgb2YgZ3JhcGhpY3Mgd2lkZ2V0cworICAgICAgICAvLyBGSVhNRTogTWFrZSB0aGUg
Y29kZSBoYW5kbGUgY2xpcHBpbmcgb2YgZ3JhcGhpY3Mgd2lkZ2V0cy4KICAgICB9CiAgICAgdmly
dHVhbCB2b2lkIHNob3coKQogICAgIHsKQEAgLTE0OTYsOCArMTQ5Miw4IEBAIHByaXZhdGU6CiBQ
YXNzUmVmUHRyPFdpZGdldD4gRnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlUGx1Z2luKGNvbnN0
IEludFNpemUmIHBsdWdpblNpemUsIEhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFt
VmFsdWVzLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIGxvYWRNYW51YWxseSkKIHsKLS8v
ICAgICBxRGVidWcoKTw8Ii0tLS0tLSBDcmVhdGluZyBwbHVnaW4gaW4gRnJhbWVMb2FkZXJDbGll
bnRRdDo6Y3JlYXRlUGx1Z2luIGZvciAiPDx1cmwucHJldHR5VVJMKCkgPDwgbWltZVR5cGU7Ci0v
LyAgICAgcURlYnVnKCk8PCItLS0tLS1cdCB1cmwgPSAiPDx1cmwucHJldHR5VVJMKCk7CisgICAg
Ly8gcURlYnVnKCk8PCItLS0tLS0gQ3JlYXRpbmcgcGx1Z2luIGluIEZyYW1lTG9hZGVyQ2xpZW50
UXQ6OmNyZWF0ZVBsdWdpbiBmb3IgIjw8dXJsLnByZXR0eVVSTCgpIDw8IG1pbWVUeXBlOworICAg
IC8vIHFEZWJ1ZygpPDwiLS0tLS0tXHQgdXJsID0gIjw8dXJsLnByZXR0eVVSTCgpOwogCiAgICAg
aWYgKCFtX3dlYkZyYW1lKQogICAgICAgICByZXR1cm4gMDsKQEAgLTE1NTUsMTIgKzE1NTEsMTIg
QEAgUGFzc1JlZlB0cjxXaWRnZXQ+IEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZVBsdWdpbihj
b25zdCBJbnRTaXplJiBwbHVnaW5TaXplLAogICAgICAgICAgICAgUVdpZGdldCogcGFyZW50V2lk
Z2V0ID0gMDsKICAgICAgICAgICAgIGlmIChtX3dlYkZyYW1lLT5wYWdlKCktPmQtPmNsaWVudCkK
ICAgICAgICAgICAgICAgICBwYXJlbnRXaWRnZXQgPSBxb2JqZWN0X2Nhc3Q8UVdpZGdldCo+KG1f
d2ViRnJhbWUtPnBhZ2UoKS0+ZC0+Y2xpZW50LT5wbHVnaW5QYXJlbnQoKSk7Ci0gICAgICAgICAg
ICBpZiAocGFyZW50V2lkZ2V0KSAvLyBkb24ndCByZXBhcmVudCB0byBub3RoaW5nIChpLmUuIGtl
ZXAgd2hhdGV2ZXIgcGFyZW50IFFXZWJQYWdlOjpjcmVhdGVQbHVnaW4oKSBjaG9zZS4KKyAgICAg
ICAgICAgIGlmIChwYXJlbnRXaWRnZXQpIC8vIERvbid0IHJlcGFyZW50IHRvIG5vdGhpbmcgKGku
ZS4ga2VlcCB3aGF0ZXZlciBwYXJlbnQgUVdlYlBhZ2U6OmNyZWF0ZVBsdWdpbigpIGNob3NlLgog
ICAgICAgICAgICAgICAgIHdpZGdldC0+c2V0UGFyZW50KHBhcmVudFdpZGdldCk7CiAgICAgICAg
ICAgICB3aWRnZXQtPmhpZGUoKTsKICAgICAgICAgICAgIFJlZlB0cjxRdFBsdWdpbldpZGdldD4g
dyA9IGFkb3B0UmVmKG5ldyBRdFBsdWdpbldpZGdldCgpKTsKICAgICAgICAgICAgIHctPnNldFBs
YXRmb3JtV2lkZ2V0KHdpZGdldCk7Ci0gICAgICAgICAgICAvLyBNYWtlIHN1cmUgaXQncyBpbnZp
c2libGUgdW50aWwgcHJvcGVybHkgcGxhY2VkIGludG8gdGhlIGxheW91dAorICAgICAgICAgICAg
Ly8gTWFrZSBzdXJlIGl0J3MgaW52aXNpYmxlIHVudGlsIHByb3Blcmx5IHBsYWNlZCBpbnRvIHRo
ZSBsYXlvdXQuCiAgICAgICAgICAgICB3LT5zZXRGcmFtZVJlY3QoSW50UmVjdCgwLCAwLCAwLCAw
KSk7CiAgICAgICAgICAgICByZXR1cm4gdzsKICAgICAgICAgfQpAQCAtMTU3MiwxNiArMTU2OCwx
NiBAQCBQYXNzUmVmUHRyPFdpZGdldD4gRnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlUGx1Z2lu
KGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsCiAgICAgICAgICAgICBpZiAobV93ZWJGcmFtZS0+
cGFnZSgpLT5kLT5jbGllbnQpCiAgICAgICAgICAgICAgICAgcGFyZW50V2lkZ2V0ID0gcW9iamVj
dF9jYXN0PFFHcmFwaGljc09iamVjdCo+KG1fd2ViRnJhbWUtPnBhZ2UoKS0+ZC0+Y2xpZW50LT5w
bHVnaW5QYXJlbnQoKSk7CiAgICAgICAgICAgICBncmFwaGljc1dpZGdldC0+aGlkZSgpOwotICAg
ICAgICAgICAgaWYgKHBhcmVudFdpZGdldCkgLy8gZG9uJ3QgcmVwYXJlbnQgdG8gbm90aGluZyAo
aS5lLiBrZWVwIHdoYXRldmVyIHBhcmVudCBRV2ViUGFnZTo6Y3JlYXRlUGx1Z2luKCkgY2hvc2Uu
CisgICAgICAgICAgICBpZiAocGFyZW50V2lkZ2V0KSAvLyBEb24ndCByZXBhcmVudCB0byBub3Ro
aW5nIChpLmUuIGtlZXAgd2hhdGV2ZXIgcGFyZW50IFFXZWJQYWdlOjpjcmVhdGVQbHVnaW4oKSBj
aG9zZS4KICAgICAgICAgICAgICAgICBncmFwaGljc1dpZGdldC0+c2V0UGFyZW50SXRlbShwYXJl
bnRXaWRnZXQpOwogICAgICAgICAgICAgUmVmUHRyPFF0UGx1Z2luR3JhcGhpY3NXaWRnZXQ+IHcg
PSBRdFBsdWdpbkdyYXBoaWNzV2lkZ2V0OjpjcmVhdGUoZ3JhcGhpY3NXaWRnZXQpOwotICAgICAg
ICAgICAgLy8gTWFrZSBzdXJlIGl0J3MgaW52aXNpYmxlIHVudGlsIHByb3Blcmx5IHBsYWNlZCBp
bnRvIHRoZSBsYXlvdXQKKyAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSBpdCdzIGludmlzaWJsZSB1
bnRpbCBwcm9wZXJseSBwbGFjZWQgaW50byB0aGUgbGF5b3V0LgogICAgICAgICAgICAgdy0+c2V0
RnJhbWVSZWN0KEludFJlY3QoMCwgMCwgMCwgMCkpOwogICAgICAgICAgICAgcmV0dXJuIHc7CiAg
ICAgICAgIH0KICNlbmRpZiAvLyBRVF9OT19HUkFQSElDU1ZJRVcKIAotICAgICAgICAvLyBGSVhN
RTogbWFrZSB0aGluZ3Mgd29yayBmb3Igd2lkZ2V0bGVzcyBwbHVnaW5zIGFzIHdlbGwKKyAgICAg
ICAgLy8gRklYTUU6IE1ha2UgdGhpbmdzIHdvcmsgZm9yIHdpZGdldGxlc3MgcGx1Z2lucyBhcyB3
ZWxsLgogICAgICAgICBkZWxldGUgb2JqZWN0OwogICAgIH0KICNpZiBFTkFCTEUoTkVUU0NBUEVf
UExVR0lOX0FQSSkKQEAgLTE1OTQsMTYgKzE1OTAsMTYgQEAgUGFzc1JlZlB0cjxXaWRnZXQ+IEZy
YW1lTG9hZGVyQ2xpZW50UXQ6OmNyZWF0ZVBsdWdpbihjb25zdCBJbnRTaXplJiBwbHVnaW5TaXpl
LAogI2lmIGRlZmluZWQoTU9aX1BMQVRGT1JNX01BRU1PKSAmJiAoTU9aX1BMQVRGT1JNX01BRU1P
ID49IDUpCiAgICAgICAgICAgICBzaXplX3Qgd21vZGVJbmRleCA9IHBhcmFtcy5maW5kKCJ3bW9k
ZSIpOwogICAgICAgICAgICAgaWYgKHdtb2RlSW5kZXggPT0gLTEpIHsKLSAgICAgICAgICAgICAg
ICAvLyBEaXNhYmxlIFhFbWJlZCBtb2RlIGFuZCBmb3JjZSBpdCB0byBvcGFxdWUgbW9kZQorICAg
ICAgICAgICAgICAgIC8vIERpc2FibGUgWEVtYmVkIG1vZGUgYW5kIGZvcmNlIGl0IHRvIG9wYXF1
ZSBtb2RlLgogICAgICAgICAgICAgICAgIHBhcmFtcy5hcHBlbmQoIndtb2RlIik7CiAgICAgICAg
ICAgICAgICAgdmFsdWVzLmFwcGVuZCgib3BhcXVlIik7CiAgICAgICAgICAgICB9IGVsc2UgaWYg
KCFpc1FXZWJWaWV3KSB7Ci0gICAgICAgICAgICAgICAgLy8gRGlzYWJsZSB0cmFuc3BhcmVuY3kg
aWYgY2xpZW50IGlzIG5vdCBhIFFXZWJWaWV3CisgICAgICAgICAgICAgICAgLy8gRGlzYWJsZSB0
cmFuc3BhcmVuY3kgaWYgY2xpZW50IGlzIG5vdCBhIFFXZWJWaWV3LgogICAgICAgICAgICAgICAg
IHZhbHVlc1t3bW9kZUluZGV4XSA9ICJvcGFxdWUiOwogICAgICAgICAgICAgfQogI2Vsc2UKICAg
ICAgICAgICAgIGlmICghaXNRV2ViVmlldykgewotICAgICAgICAgICAgICAgIC8vIGluamVjdCB3
bW9kZT1vcGFxdWUgd2hlbiB0aGVyZSBpcyBubyBjbGllbnQgb3IgdGhlIGNsaWVudCBpcyBub3Qg
YSBRV2ViVmlldworICAgICAgICAgICAgICAgIC8vIEluamVjdCB3bW9kZT1vcGFxdWUgd2hlbiB0
aGVyZSBpcyBubyBjbGllbnQgb3IgdGhlIGNsaWVudCBpcyBub3QgYSBRV2ViVmlldy4KICAgICAg
ICAgICAgICAgICBzaXplX3Qgd21vZGVJbmRleCA9IHBhcmFtcy5maW5kKCJ3bW9kZSIpOwogICAg
ICAgICAgICAgICAgIGlmICh3bW9kZUluZGV4ID09IC0xKSB7CiAgICAgICAgICAgICAgICAgICAg
IHBhcmFtcy5hcHBlbmQoIndtb2RlIik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88467</attachid>
            <date>2011-04-06 10:32:29 -0700</date>
            <delta_ts>2011-04-06 17:20:49 -0700</delta_ts>
            <desc>Fixing previous patch submitted by Anders Bakken to fix the coding-style on FrameLoaderClientQt.cpp</desc>
            <filename>patch-bug-40254.diff</filename>
            <type>text/plain</type>
            <size>25080</size>
            <attacher name="Rafael Brandao">rafael.lobo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9x
dC9DaGFuZ2VMb2cKaW5kZXggNzNhYTBhMy4uNzY5YTg0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NCBAQAorMjAxMS0wNC0wNiAgQW5kZXJzIEJha2tlbiAgPGFnYmFra2VuQGdtYWlsLmNv
bT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRd
IEZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwIGhhcyBjb2Rpbmctc3R5bGUgZXJyb3JzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDI1NAorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChkcnRE
ZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZUxvYWRlckNsaWVudFF0OjpoYXNXZWJWaWV3KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50UXQ6OnNldENvcGllc09uU2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkSGFuZGxlT25sb2FkRXZlbnRzKToKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkQ2hhbmdl
SWNvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6Y2FuY2VsUG9s
aWN5Q2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0
Y2hXaWxsU3VibWl0Rm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0
Ojpwb3N0UHJvZ3Jlc3NTdGFydGVkTm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50UXQ6OnBvc3RQcm9ncmVzc0ZpbmlzaGVkTm90aWZpY2F0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNldE1haW5GcmFtZURvY3VtZW50
UmVhZHkpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6d2lsbENoYW5n
ZVRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpZENoYW5n
ZVRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmZpbmlzaGVk
TG9hZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpmcmFtZUxv
YWRDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6cHJv
dmlzaW9uYWxMb2FkU3RhcnRlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dFF0OjpkaWRGaW5pc2hMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
UXQ6OnNldFRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRp
c3BhdGNoRGlkUmVjZWl2ZUljb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGll
bnRRdDo6ZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6dXBkYXRlR2xvYmFsSGlzdG9yeSk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpzaG91bGRHb1RvSGlzdG9yeUl0ZW0pOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6c2hvdWxkU3RvcExvYWRpbmdG
b3JIaXN0b3J5SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojpj
b21taXR0ZWRMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRv
d25sb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNo
V2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6
OnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNy
ZWF0ZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6Om9iamVj
dENvbnRlbnRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNy
ZWF0ZVBsdWdpbik6CisKIDIwMTEtMDQtMDQgIENoYW5nIFNodSAgPGNzaHVAd2Via2l0Lm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwIGIvU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAppbmRleCBk
ODU0ZThmLi4zMGYzM2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29y
ZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKQEAgLTMxLDcxICszMSw3MiBAQAogICov
CiAKICNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudFF0Lmgi
CisKICNpbmNsdWRlICJDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJD
U1NQcm9wZXJ0eU5hbWVzLmgiCisjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRl
ICJGb3JtU3RhdGUuaCIKLSNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudFF0LmgiCiAjaW5jbHVk
ZSAiRnJhbWVOZXR3b3JraW5nQ29udGV4dFF0LmgiCiAjaW5jbHVkZSAiRnJhbWVUcmVlLmgiCiAj
aW5jbHVkZSAiRnJhbWVWaWV3LmgiCi0jaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKKyNpbmNs
dWRlICJIVE1MQXBwbGV0RWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgor
I2luY2x1ZGUgIkhUTUxQbHVnSW5FbGVtZW50LmgiCisjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIK
KyNpbmNsdWRlICJIaXN0b3J5SXRlbS5oIgogI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQuaCIKICNp
ZiBFTkFCTEUoSUNPTkRBVEFCQVNFKQogI2luY2x1ZGUgIkljb25EYXRhYmFzZUNsaWVudFF0Lmgi
CiAjZW5kaWYKICNpZiBVU0UoSlNDKQogI2luY2x1ZGUgIkpTRE9NV2luZG93QmFzZS5oIgotI2Vs
aWYgVVNFKFY4KQotI2luY2x1ZGUgIlY4RE9NV2luZG93LmgiCiAjZW5kaWYKICNpbmNsdWRlICJN
SU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgotI2luY2x1ZGUgIlJl
c291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUg
IlBhZ2UuaCIKICNpbmNsdWRlICJQbHVnaW5EYXRhLmgiCiAjaW5jbHVkZSAiUGx1Z2luRGF0YWJh
c2UuaCIKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKLSNpbmNsdWRlICJSZW5kZXJQYXJ0
LmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCi0jaW5jbHVkZSAiSGlzdG9yeUl0ZW0u
aCIKLSNpbmNsdWRlICJIVE1MQXBwbGV0RWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxGb3JtRWxl
bWVudC5oIgotI2luY2x1ZGUgIkhUTUxQbHVnSW5FbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRUUFBh
cnNlcnMuaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlFOZXR3b3Jr
UmVwbHlIYW5kbGVyLmgiCi0jaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIgorI2lu
Y2x1ZGUgIlFXZWJQYWdlQ2xpZW50LmgiCisjaW5jbHVkZSAiUmVuZGVyUGFydC5oIgogI2luY2x1
ZGUgIlJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5o
IgorI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVzcG9u
c2UuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKLSNpbmNsdWRlICJRV2ViUGFnZUNsaWVudC5oIgorI2lmIFVTRShWOCkKKyNpbmNsdWRlICJW
OERPTVdpbmRvdy5oIgorI2VuZGlmCiAjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIKIAot
I2luY2x1ZGUgInF3ZWJwYWdlLmgiCi0jaW5jbHVkZSAicXdlYnBhZ2VfcC5oIgogI2luY2x1ZGUg
InF3ZWJmcmFtZS5oIgogI2luY2x1ZGUgInF3ZWJmcmFtZV9wLmgiCisjaW5jbHVkZSAicXdlYmhp
c3RvcnlfcC5oIgogI2luY2x1ZGUgInF3ZWJoaXN0b3J5aW50ZXJmYWNlLmgiCisjaW5jbHVkZSAi
cXdlYnBhZ2UuaCIKKyNpbmNsdWRlICJxd2VicGFnZV9wLmgiCiAjaW5jbHVkZSAicXdlYnBsdWdp
bmZhY3RvcnkuaCIKIAotI2luY2x1ZGUgPHFmaWxlaW5mby5oPgotCiAjaW5jbHVkZSA8UUNvcmVB
cHBsaWNhdGlvbj4KICNpbmNsdWRlIDxRRGVidWc+CisjaW5jbHVkZSA8UUZpbGVJbmZvPgogI2lu
Y2x1ZGUgPFFHcmFwaGljc1NjZW5lPgogI2luY2x1ZGUgPFFHcmFwaGljc1dpZGdldD4KLSNpbmNs
dWRlIDxRTmV0d29ya1JlcXVlc3Q+CiAjaW5jbHVkZSA8UU5ldHdvcmtSZXBseT4KKyNpbmNsdWRl
IDxRTmV0d29ya1JlcXVlc3Q+CiAjaW5jbHVkZSA8UVN0cmluZ0xpc3Q+Ci0jaW5jbHVkZSAicXdl
Ymhpc3RvcnlfcC5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogc3RhdGljIFFNYXA8dW5z
aWduZWQgbG9uZywgUVN0cmluZz4gZHVtcEFzc2lnbmVkVXJsczsKIAotLy8gQ29tcGFyZSB3aXRo
IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9GcmFtZUxvYWREZWxlZ2F0ZS5tbQotc3Rh
dGljIFFTdHJpbmcgZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQoV2ViQ29yZTo6
RnJhbWUqIF9mcmFtZSkKKy8vIENvbXBhcmUgd2l0aCB0aGUgZmlsZSAiV2ViS2l0L1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9GcmFtZUxvYWREZWxlZ2F0ZS5tbSIuCitzdGF0aWMgUVN0cmluZyBk
cnREZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChXZWJDb3JlOjpGcmFtZSogd2ViQ29y
ZUZyYW1lKQogewotICAgIFFXZWJGcmFtZSogZnJhbWUgPSBRV2ViRnJhbWVQcml2YXRlOjpraXQo
X2ZyYW1lKTsKKyAgICBRV2ViRnJhbWUqIGZyYW1lID0gUVdlYkZyYW1lUHJpdmF0ZTo6a2l0KHdl
YkNvcmVGcmFtZSk7CiAgICAgUVN0cmluZyBuYW1lID0gZnJhbWUtPmZyYW1lTmFtZSgpOwogCiAg
ICAgYm9vbCBpc01haW5GcmFtZSA9IGZyYW1lID09IGZyYW1lLT5wYWdlKCktPm1haW5GcmFtZSgp
OwpAQCAtMTAzLDExICsxMDQsMTAgQEAgc3RhdGljIFFTdHJpbmcgZHJ0RGVzY3JpcHRpb25TdWl0
YWJsZUZvclRlc3RSZXN1bHQoV2ViQ29yZTo6RnJhbWUqIF9mcmFtZSkKICAgICAgICAgaWYgKCFu
YW1lLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiBRU3RyaW5nOjpmcm9tTGF0aW4xKCJt
YWluIGZyYW1lIFwiJTFcIiIpLmFyZyhuYW1lKTsKICAgICAgICAgcmV0dXJuIFFMYXRpbjFTdHJp
bmcoIm1haW4gZnJhbWUiKTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoIW5hbWUuaXNFbXB0
eSgpKQotICAgICAgICAgICAgcmV0dXJuIFFTdHJpbmc6OmZyb21MYXRpbjEoImZyYW1lIFwiJTFc
IiIpLmFyZyhuYW1lKTsKLSAgICAgICAgcmV0dXJuIFFMYXRpbjFTdHJpbmcoImZyYW1lIChhbm9u
eW1vdXMpIik7CiAgICAgfQorICAgIGlmICghbmFtZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biBRU3RyaW5nOjpmcm9tTGF0aW4xKCJmcmFtZSBcIiUxXCIiKS5hcmcobmFtZSk7CisgICAgcmV0
dXJuIFFMYXRpbjFTdHJpbmcoImZyYW1lIChhbm9ueW1vdXMpIik7CiB9CiAKIHN0YXRpYyBRU3Ry
aW5nIGRydFByaW50RnJhbWVVc2VyR2VzdHVyZVN0YXR1cyhXZWJDb3JlOjpGcmFtZSogZnJhbWUp
CkBAIC0xMTcsMTIgKzExNywxMiBAQCBzdGF0aWMgUVN0cmluZyBkcnRQcmludEZyYW1lVXNlckdl
c3R1cmVTdGF0dXMoV2ViQ29yZTo6RnJhbWUqIGZyYW1lKQogICAgIHJldHVybiBRU3RyaW5nOjpm
cm9tTGF0aW4xKCJGcmFtZSB3aXRoIHVzZXIgZ2VzdHVyZSBcIiUxXCIiKS5hcmcoUUxhdGluMVN0
cmluZygiZmFsc2UiKSk7CiB9CiAKLXN0YXRpYyBRU3RyaW5nIGRydERlc2NyaXB0aW9uU3VpdGFi
bGVGb3JUZXN0UmVzdWx0KGNvbnN0IFdlYkNvcmU6OktVUkwmIF91cmwpCitzdGF0aWMgUVN0cmlu
ZyBkcnREZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChjb25zdCBXZWJDb3JlOjpLVVJM
JiBrdXJsKQogewotICAgIGlmIChfdXJsLmlzRW1wdHkoKSB8fCAhX3VybC5pc0xvY2FsRmlsZSgp
KQotICAgICAgICByZXR1cm4gX3VybC5zdHJpbmcoKTsKLSAgICAvLyBSZW1vdmUgdGhlIGxlYWRp
bmcgcGF0aCBmcm9tIGZpbGUgdXJscwotICAgIHJldHVybiBRU3RyaW5nKF91cmwuc3RyaW5nKCkp
LnJlbW92ZShXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkdW1wUmVzb3VyY2VMb2FkQ2Fs
bGJhY2tzUGF0aCkubWlkKDEpOworICAgIGlmIChrdXJsLmlzRW1wdHkoKSB8fCAha3VybC5pc0xv
Y2FsRmlsZSgpKQorICAgICAgICByZXR1cm4ga3VybC5zdHJpbmcoKTsKKyAgICAvLyBSZW1vdmUg
dGhlIGxlYWRpbmcgcGF0aCBmcm9tIGZpbGUgdXJscy4KKyAgICByZXR1cm4gUVN0cmluZyhrdXJs
LnN0cmluZygpKS5yZW1vdmUoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZHVtcFJlc291
cmNlTG9hZENhbGxiYWNrc1BhdGgpLm1pZCgxKTsKIH0KIAogc3RhdGljIFFTdHJpbmcgZHJ0RGVz
Y3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYgZXJyb3IpCkBAIC0xNjYsOCArMTY2LDcgQEAgc3RhdGljIFFTdHJpbmcgZHJ0RGVzY3JpcHRp
b25TdWl0YWJsZUZvclRlc3RSZXN1bHQoY29uc3QgUmVmUHRyPFdlYkNvcmU6Ok5vZGU+IG4KICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCi1uYW1lc3BhY2UgV2ViQ29yZQoteworbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBib29sIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmR1bXBGcmFtZUxvYWRlckNhbGxi
YWNrcyA9IGZhbHNlOwogYm9vbCBGcmFtZUxvYWRlckNsaWVudFF0OjpkdW1wVXNlckdlc3R1cmVJ
bkZyYW1lTG9hZGVyQ2FsbGJhY2tzID0gZmFsc2U7CkBAIC0xODQsNyArMTgzLDcgQEAgYm9vbCBG
cmFtZUxvYWRlckNsaWVudFF0Ojpwb2xpY3lEZWxlZ2F0ZUVuYWJsZWQgPSBmYWxzZTsKIGJvb2wg
RnJhbWVMb2FkZXJDbGllbnRRdDo6cG9saWN5RGVsZWdhdGVQZXJtaXNzaXZlID0gZmFsc2U7CiBR
TWFwPFFTdHJpbmcsIFFTdHJpbmc+IEZyYW1lTG9hZGVyQ2xpZW50UXQ6OlVSTHNUb1JlZGlyZWN0
ID0gUU1hcDxRU3RyaW5nLCBRU3RyaW5nPigpOwogCi0vLyBUYWtlbiBmcm9tIER1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAorLy8gVGFrZW4gZnJvbSB0aGUgZmlsZSAiV2Vi
S2l0L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcCIuCiBzdGF0
aWMgY29uc3QgY2hhciogbmF2aWdhdGlvblR5cGVUb1N0cmluZyhOYXZpZ2F0aW9uVHlwZSB0eXBl
KQogewogICAgIHN3aXRjaCAodHlwZSkgewpAQCAtMjUwLDcgKzI0OSw3IEBAIHZvaWQgRnJhbWVM
b2FkZXJDbGllbnRRdDo6Y2FsbFBvbGljeUZ1bmN0aW9uKEZyYW1lUG9saWN5RnVuY3Rpb24gZnVu
Y3Rpb24sIFBvbGljCiAKIGJvb2wgRnJhbWVMb2FkZXJDbGllbnRRdDo6aGFzV2ViVmlldygpIGNv
bnN0CiB7Ci0gICAgLy9ub3RJbXBsZW1lbnRlZCgpOworICAgIC8vIG5vdEltcGxlbWVudGVkKCk7
CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTMzMSw3ICszMzAsNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50UXQ6OmZvcmNlTGF5b3V0Rm9yTm9uSFRNTCgpCiAKIHZvaWQgRnJhbWVMb2FkZXJD
bGllbnRRdDo6c2V0Q29waWVzT25TY3JvbGwoKQogewotICAgIC8vIGFwcGFyZW50bHkgbWFjIHNw
ZWNpZmljCisgICAgLy8gQXBwYXJlbnRseSB0aGlzIGlzIG1hYyBzcGVjaWZpYy4KIH0KIAogCkBA
IC0zNDYsNyArMzQ1LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkZXRhY2hlZEZyb21Q
YXJlbnQzKCkKIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZEhhbmRsZU9u
bG9hZEV2ZW50cygpCiB7Ci0gICAgLy8gZG9uJ3QgbmVlZCB0aGlzIG9uZQorICAgIC8vIERvbid0
IG5lZWQgdGhpcyBvbmUuCiAgICAgaWYgKGR1bXBGcmFtZUxvYWRlckNhbGxiYWNrcykKICAgICAg
ICAgcHJpbnRmKCIlcyAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lXG4iLCBxUHJpbnRh
YmxlKGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KG1fZnJhbWUpKSk7CiB9CkBA
IC00NDksNyArNDQ4LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkKCkKIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRj
aERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmdXaXRoRGlyZWN0aW9uJiB0aXRsZSkKIHsKLSAg
ICAvLyBGSVhNRTogdXNlIGRpcmVjdGlvbiBvZiB0aXRsZS4KKyAgICAvLyBGSVhNRTogVXNlIGRp
cmVjdGlvbiBvZiB0aXRsZS4KICAgICBpZiAoZHVtcEZyYW1lTG9hZGVyQ2FsbGJhY2tzKQogICAg
ICAgICBwcmludGYoIiVzIC0gZGlkUmVjZWl2ZVRpdGxlOiAlc1xuIiwgcVByaW50YWJsZShkcnRE
ZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChtX2ZyYW1lKSksIHFQcmludGFibGUoUVN0
cmluZyh0aXRsZS5zdHJpbmcoKSkpKTsKIApAQCAtNDY4LDcgKzQ2Nyw3IEBAIHZvaWQgRnJhbWVM
b2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpCiAgICAgaWYgKCFtX3dlYkZy
YW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBGSVhNRTogVG8gYmUgbm90aWZpZWQgb2Yg
Y2hhbmdpbmcgaWNvbiBVUkxTIGFkZCBub3RpZmljYXRpb24KKyAgICAvLyBGSVhNRTogSW4gb3Jk
ZXIgdG8gZ2V0IG5vdGlmaWVkIG9mIGljb24gVVJMUycgY2hhbmdlcywgYWRkIGEgbm90aWZpY2F0
aW9uLgogICAgIC8vIGVtaXQgaWNvbnNDaGFuZ2VkKCk7CiB9CiAKQEAgLTU0Nyw3ICs1NDYsNyBA
QCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoU2hvdygpCiAKIHZvaWQgRnJhbWVM
b2FkZXJDbGllbnRRdDo6Y2FuY2VsUG9saWN5Q2hlY2soKQogewotLy8gICAgcURlYnVnKCkgPDwg
IkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNhbmNlbFBvbGljeUNoZWNrIjsKKyAgICAvLyBxRGVidWco
KSA8PCAiRnJhbWVMb2FkZXJDbGllbnRRdDo6Y2FuY2VsUG9saWN5Q2hlY2siOwogfQogCiAKQEAg
LTU1NSw3ICs1NTQsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoV2lsbFN1
Ym1pdEZvcm0oRnJhbWVQb2xpY3lGdW5jdGlvbiBmdW5jdGlvbiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzUmVmUHRyPEZvcm1TdGF0ZT4pCiB7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBzdXJlbHkgdG9v
IHNpbXBsZQorICAgIC8vIEZJWE1FOiBUaGlzIGlzIHN1cmVseSB0b28gc2ltcGxlLgogICAgIGNh
bGxQb2xpY3lGdW5jdGlvbihmdW5jdGlvbiwgUG9saWN5VXNlKTsKIH0KIApAQCAtNTc0LDcgKzU3
Myw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6cmV2ZXJ0VG9Qcm92aXNpb25hbFN0YXRl
KERvY3VtZW50TG9hZGVyKikKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6cG9zdFByb2dyZXNz
U3RhcnRlZE5vdGlmaWNhdGlvbigpCiB7CiAgICAgaWYgKG1fd2ViRnJhbWUgJiYgbV9mcmFtZS0+
cGFnZSgpKSB7Ci0gICAgICAgIC8vIEEgbmV3IGxvYWQgc3RhcnRzLCBzbyBsZXRzIGNsZWFyIHRo
ZSBwcmV2aW91cyBlcnJvci4KKyAgICAgICAgLy8gQXMgYSBuZXcgbG9hZCBoYXZlIHN0YXJ0ZWQs
IGNsZWFyIHRoZSBwcmV2aW91cyBlcnJvci4KICAgICAgICAgbV9sb2FkRXJyb3IgPSBSZXNvdXJj
ZUVycm9yKCk7CiAgICAgICAgIGVtaXQgbG9hZFN0YXJ0ZWQoKTsKICAgICAgICAgcG9zdFByb2dy
ZXNzRXN0aW1hdGVDaGFuZ2VkTm90aWZpY2F0aW9uKCk7CkBAIC01OTIsOSArNTkxLDkgQEAgdm9p
ZCBGcmFtZUxvYWRlckNsaWVudFF0Ojpwb3N0UHJvZ3Jlc3NFc3RpbWF0ZUNoYW5nZWROb3RpZmlj
YXRpb24oKQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnBvc3RQcm9ncmVzc0ZpbmlzaGVk
Tm90aWZpY2F0aW9uKCkKIHsKLSAgICAvLyBzZW5kIGEgbW91c2Vtb3ZlIGV2ZW50IHRvCi0gICAg
Ly8gKDEpIHVwZGF0ZSB0aGUgY3Vyc29yIHRvIGNoYW5nZSBhY2NvcmRpbmcgdG8gd2hhdGV2ZXIg
aXMgdW5kZXJuZWF0aCB0aGUgbW91c2UgY3Vyc29yIHJpZ2h0IG5vdwotICAgIC8vICgyKSBkaXNw
bGF5IHRoZSB0b29sIHRpcCBpZiB0aGUgbW91c2UgaG92ZXJzIGEgbm9kZSB3aGljaCBoYXMgYSB0
b29sIHRpcAorICAgIC8vIFNlbmQgYSBtb3VzZW1vdmUgZXZlbnQgdG86CisgICAgLy8gKDEpIHVw
ZGF0ZSB0aGUgY3Vyc29yIHRvIGNoYW5nZSBhY2NvcmRpbmcgdG8gd2hhdGV2ZXIgaXMgdW5kZXJu
ZWF0aCB0aGUgbW91c2UgY3Vyc29yIHJpZ2h0IG5vdzsKKyAgICAvLyAoMikgZGlzcGxheSB0aGUg
dG9vbCB0aXAgaWYgdGhlIG1vdXNlIGhvdmVycyBhIG5vZGUgd2hpY2ggaGFzIGEgdG9vbCB0aXAu
CiAgICAgaWYgKG1fZnJhbWUgJiYgbV9mcmFtZS0+ZXZlbnRIYW5kbGVyKCkgJiYgbV93ZWJGcmFt
ZS0+cGFnZSgpKSB7CiAgICAgICAgIFFXaWRnZXQqIHZpZXcgPSBtX3dlYkZyYW1lLT5wYWdlKCkt
PnZpZXcoKTsKICAgICAgICAgaWYgKHZpZXcgJiYgdmlldy0+aGFzRm9jdXMoKSkgewpAQCAtNjEy
LDE5ICs2MTEsMTkgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0Ojpwb3N0UHJvZ3Jlc3NGaW5p
c2hlZE5vdGlmaWNhdGlvbigpCiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6c2V0TWFpbkZy
YW1lRG9jdW1lbnRSZWFkeShib29sKQogewotICAgIC8vIHRoaXMgaXMgb25seSBpbnRlcmVzdGlu
ZyBvbmNlIHdlIHByb3ZpZGUgYW4gZXh0ZXJuYWwgQVBJIGZvciB0aGUgRE9NCisgICAgLy8gVGhp
cyBpcyBvbmx5IGludGVyZXN0aW5nIG9uY2Ugd2UgcHJvdmlkZSBhbiBleHRlcm5hbCBBUEkgZm9y
IHRoZSBET00uCiB9CiAKIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0Ojp3aWxsQ2hhbmdlVGl0
bGUoRG9jdW1lbnRMb2FkZXIqKQogewotICAgIC8vIG5vIG5lZWQgZm9yLCBkaXNwYXRjaERpZFJl
Y2VpdmVUaXRsZSBpcyB0aGUgcmlnaHQgY2FsbGJhY2sKKyAgICAvLyBObyBuZWVkIGZvciwgZGlz
cGF0Y2hEaWRSZWNlaXZlVGl0bGUgaXMgdGhlIHJpZ2h0IGNhbGxiYWNrLgogfQogCiAKIHZvaWQg
RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlkQ2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKQogewot
ICAgIC8vIG5vIG5lZWQgZm9yLCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZSBpcyB0aGUgcmlnaHQg
Y2FsbGJhY2sKKyAgICAvLyBObyBuZWVkIGZvciwgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUgaXMg
dGhlIHJpZ2h0IGNhbGxiYWNrLgogfQogCiAKQEAgLTYzMiw4ICs2MzEsOCBAQCB2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50UXQ6OmZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRlciogbG9hZGVyKQog
ewogICAgIGlmICghbV9wbHVnaW5WaWV3KSB7CiAgICAgICAgIC8vIFRoaXMgaXMgbmVjZXNzYXJ5
IHRvIGNyZWF0ZSBhbiBlbXB0eSBkb2N1bWVudC4gU2VlIGJ1ZyA2MzQwMDQuCi0gICAgICAgIC8v
IEhvd2V2ZXIsIHdlIG9ubHkgd2FudCB0byBkbyB0aGlzIGlmIG1ha2VSZXByZXNlbnRhdGlvbiBo
YXMgYmVlbiBjYWxsZWQsIHRvCi0gICAgICAgIC8vIG1hdGNoIHRoZSBiZWhhdmlvciBvbiB0aGUg
TWFjLgorICAgICAgICAvLyBIb3dldmVyLCB3ZSBvbmx5IHdhbnQgdG8gZG8gdGhpcyBpZiBtYWtl
UmVwcmVzZW50YXRpb24gaGFzIGJlZW4gY2FsbGVkLAorICAgICAgICAvLyB0byBtYXRjaCB0aGUg
YmVoYXZpb3Igb24gdGhlIE1hYy4KICAgICAgICAgaWYgKG1faGFzUmVwcmVzZW50YXRpb24pCiAg
ICAgICAgICAgICBsb2FkZXItPndyaXRlcigpLT5zZXRFbmNvZGluZygiIiwgZmFsc2UpOwogICAg
ICAgICByZXR1cm47CkBAIC02ODIsNyArNjgxLDcgQEAgU3RyaW5nIEZyYW1lTG9hZGVyQ2xpZW50
UXQ6OmdlbmVyYXRlZE1JTUVUeXBlRm9yVVJMU2NoZW1lKGNvbnN0IFN0cmluZyYpIGNvbnN0CiAK
IHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZnJhbWVMb2FkQ29tcGxldGVkKCkKIHsKLSAgICAv
LyBOb3RlOiBDYW4gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzLgorICAgIC8vIE5vdGUgdGhhdCB0
aGlzIGNhbiBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMuCiB9CiAKIApAQCAtNjk2LDEzICs2OTUs
MTMgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpyZXN0b3JlVmlld1N0YXRlKCkKIAogdm9p
ZCBGcmFtZUxvYWRlckNsaWVudFF0Ojpwcm92aXNpb25hbExvYWRTdGFydGVkKCkKIHsKLSAgICAv
LyBkb24ndCBuZWVkIHRvIGRvIGFueXRoaW5nIGhlcmUKKyAgICAvLyBEb24ndCBuZWVkIHRvIGRv
IGFueXRoaW5nIGhlcmUuCiB9CiAKIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaWRGaW5p
c2hMb2FkKCkKIHsKLS8vICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIC8vIG5vdEltcGxlbWVu
dGVkKCk7CiB9CiAKIApAQCAtNzE0LDkgKzcxMyw5IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRR
dDo6c2V0VGl0bGUoY29uc3QgU3RyaW5nV2l0aERpcmVjdGlvbiYgdGl0bGUsIGNvbnN0IEtVUkwm
CiB7CiAgICAgLy8gVXNlZCBieSBBcHBsZSBXZWJLaXQgdG8gdXBkYXRlIHRoZSB0aXRsZSBvZiBh
biBleGlzdGluZyBoaXN0b3J5IGl0ZW0uCiAgICAgLy8gUXRXZWJLaXQgZG9lc24ndCBhY2NvbW9k
YXRlIHRoaXMgb24gaGlzdG9yeSBpdGVtcy4gSWYgaXQgZXZlciBkb2VzLAotICAgIC8vIGl0IHNo
b3VsZCBiZSBwcml2YXRlQnJvd3NpbmctYXdhcmUuRm9yIG5vdywgd2UgYXJlIGp1c3QgcGFzc2lu
ZworICAgIC8vIGl0IHNob3VsZCBiZSBwcml2YXRlQnJvd3NpbmctYXdhcmUuIEZvciBub3csIHdl
IGFyZSBqdXN0IHBhc3NpbmcKICAgICAvLyBnbG9iYWxoaXN0b3J5IGxheW91dCB0ZXN0cy4KLSAg
ICAvLyBGSVhNRTogdXNlIGRpcmVjdGlvbiBvZiB0aXRsZS4KKyAgICAvLyBGSVhNRTogVXNlIGRp
cmVjdGlvbiBvZiB0aXRsZS4KICAgICBpZiAoZHVtcEhpc3RvcnlDYWxsYmFja3MpIHsKICAgICAg
ICAgcHJpbnRmKCJXZWJWaWV3IHVwZGF0ZWQgdGhlIHRpdGxlIGZvciBoaXN0b3J5IFVSTCBcIiVz
XCIgdG8gXCIlc1wiLlxuIiwKICAgICAgICAgICAgIHFQcmludGFibGUoZHJ0RGVzY3JpcHRpb25T
dWl0YWJsZUZvclRlc3RSZXN1bHQodXJsKSksCkBAIC03MzUsOSArNzM0LDggQEAgU3RyaW5nIEZy
YW1lTG9hZGVyQ2xpZW50UXQ6OnVzZXJBZ2VudChjb25zdCBLVVJMJiB1cmwpCiAKIHZvaWQgRnJh
bWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpCiB7Ci0gICAgaWYgKG1f
d2ViRnJhbWUpIHsKKyAgICBpZiAobV93ZWJGcmFtZSkKICAgICAgICAgZW1pdCBtX3dlYkZyYW1l
LT5pY29uQ2hhbmdlZCgpOwotICAgIH0KIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0Ojpm
cmFtZUxvYWRlckRlc3Ryb3llZCgpCkBAIC03NTksOSArNzU3LDggQEAgdm9pZCBGcmFtZUxvYWRl
ckNsaWVudFF0OjpkaXNwYXRjaERpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChET01XcmFwcGVy
V29ybGQqIHcKICAgICBpZiAod29ybGQgIT0gbWFpblRocmVhZE5vcm1hbFdvcmxkKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGlmIChtX3dlYkZyYW1lKSB7CisgICAgaWYgKG1fd2ViRnJhbWUp
CiAgICAgICAgIGVtaXQgbV93ZWJGcmFtZS0+amF2YVNjcmlwdFdpbmRvd09iamVjdENsZWFyZWQo
KTsKLSAgICB9CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZG9jdW1lbnRFbGVtZW50
QXZhaWxhYmxlKCkKQEAgLTc5Nyw3ICs3OTQsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6
Om9uSWNvbkxvYWRlZEZvclBhZ2VVUkwoY29uc3QgUVN0cmluZyYgdXJsKQogCiB2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50UXQ6OnVwZGF0ZUdsb2JhbEhpc3RvcnkoKQogewotICAgIFFXZWJIaXN0b3J5
SW50ZXJmYWNlICpoaXN0b3J5ID0gUVdlYkhpc3RvcnlJbnRlcmZhY2U6OmRlZmF1bHRJbnRlcmZh
Y2UoKTsKKyAgICBRV2ViSGlzdG9yeUludGVyZmFjZSogaGlzdG9yeSA9IFFXZWJIaXN0b3J5SW50
ZXJmYWNlOjpkZWZhdWx0SW50ZXJmYWNlKCk7CiAgICAgV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIq
IGxvYWRlciA9IG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpOwogICAgIGlmICho
aXN0b3J5KQogICAgICAgICBoaXN0b3J5LT5hZGRIaXN0b3J5RW50cnkobG9hZGVyLT51cmxGb3JI
aXN0b3J5KCkucHJldHR5VVJMKCkpOwpAQCAtODQyLDEyICs4MzksMTIgQEAgdm9pZCBGcmFtZUxv
YWRlckNsaWVudFF0Ojp1cGRhdGVHbG9iYWxIaXN0b3J5UmVkaXJlY3RMaW5rcygpCiAgICAgfQog
fQogCi1ib29sIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNob3VsZEdvVG9IaXN0b3J5SXRlbShXZWJD
b3JlOjpIaXN0b3J5SXRlbSAqKSBjb25zdAorYm9vbCBGcmFtZUxvYWRlckNsaWVudFF0OjpzaG91
bGRHb1RvSGlzdG9yeUl0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKSBjb25zdAogewogICAgIHJl
dHVybiB0cnVlOwogfQogCi1ib29sIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNob3VsZFN0b3BMb2Fk
aW5nRm9ySGlzdG9yeUl0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0gKikgY29uc3QKK2Jvb2wgRnJh
bWVMb2FkZXJDbGllbnRRdDo6c2hvdWxkU3RvcExvYWRpbmdGb3JIaXN0b3J5SXRlbShXZWJDb3Jl
OjpIaXN0b3J5SXRlbSopIGNvbnN0CiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC05MDcsMTMg
KzkwNCwxMyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmNvbW1pdHRlZExvYWQoV2ViQ29y
ZTo6RG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgYwogICAgIGlmICghbV9wbHVnaW5WaWV3
KQogICAgICAgICBsb2FkZXItPmNvbW1pdERhdGEoZGF0YSwgbGVuZ3RoKTsKICAgICAKLSAgICAv
LyBXZSByZS1jaGVjayBoZXJlIGFzIHRoZSBwbHVnaW4gY2FuIGhhdmUgYmVlbiBjcmVhdGVkCisg
ICAgLy8gV2UgcmUtY2hlY2sgaGVyZSBhcyB0aGUgcGx1Z2luIGNhbiBoYXZlIGJlZW4gY3JlYXRl
ZC4KICAgICBpZiAobV9wbHVnaW5WaWV3ICYmIG1fcGx1Z2luVmlldy0+aXNQbHVnaW5WaWV3KCkp
IHsKICAgICAgICAgaWYgKCFtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luKSB7CiAgICAgICAgICAg
ICBtX3BsdWdpblZpZXctPmRpZFJlY2VpdmVSZXNwb25zZShsb2FkZXItPnJlc3BvbnNlKCkpOwot
ICAgICAgICAgICAgLy8gZGlkUmVjZWl2ZVJlc3BvbnNlIHNldHMgdXAgYSBuZXcgc3RyZWFtIHRv
IHRoZSBwbHVnLWluLiBvbiBhIGZ1bGwtcGFnZSBwbHVnLWluLCBhIGZhaWx1cmUgaW4KLSAgICAg
ICAgICAgIC8vIHNldHRpbmcgdXAgdGhpcyBzdHJlYW0gY2FuIGNhdXNlIHRoZSBtYWluIGRvY3Vt
ZW50IGxvYWQgdG8gYmUgY2FuY2VsbGVkLCBzZXR0aW5nIG1fcGx1Z2luVmlldwotICAgICAgICAg
ICAgLy8gdG8gbnVsbAorICAgICAgICAgICAgLy8gVGhlIGZ1bmN0aW9uIGRpZFJlY2VpdmVSZXNw
b25zZSBzZXRzIHVwIGEgbmV3IHN0cmVhbSB0byB0aGUgcGx1Zy1pbi4KKyAgICAgICAgICAgIC8v
IE9uIGEgZnVsbC1wYWdlIHBsdWctaW4sIGEgZmFpbHVyZSBpbiBzZXR0aW5nIHVwIHRoaXMgc3Ry
ZWFtIGNhbiBjYXVzZSB0aGUKKyAgICAgICAgICAgIC8vIG1haW4gZG9jdW1lbnQgbG9hZCB0byBi
ZSBjYW5jZWxsZWQsIHNldHRpbmcgbV9wbHVnaW5WaWV3IHRvIG51bGwuCiAgICAgICAgICAgICBp
ZiAoIW1fcGx1Z2luVmlldykKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBt
X2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luID0gdHJ1ZTsKQEAgLTkzMCwxMiArOTI3LDEyIEBAIFdl
YkNvcmU6OlJlc291cmNlRXJyb3IgRnJhbWVMb2FkZXJDbGllbnRRdDo6Y2FuY2VsbGVkRXJyb3Io
Y29uc3QgV2ViQ29yZTo6UmVzb3VyCiAgICAgcmV0dXJuIGVycm9yOwogfQogCi0vLyBjb3BpZWQg
ZnJvbSBXZWJLaXQvTWlzYy9XZWJLaXRFcnJvcnNbUHJpdmF0ZV0uaAorLy8gVGhpcyB3YXMgY29w
aWVkIGZyb20gZmlsZSAiV2ViS2l0L1NvdXJjZS9XZWJLaXQvbWFjL01pc2MvV2ViS2l0RXJyb3Jz
LmgiLgogZW51bSB7CiAgICAgV2ViS2l0RXJyb3JDYW5ub3RTaG93TUlNRVR5cGUgPSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMTAwLAogICAgIFdlYktpdEVycm9yQ2Fubm90U2hvd1VSTCA9
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwMSwKICAgICBXZWJLaXRFcnJvckZy
YW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2UgPSAgICAgICAgICAgICAxMDIsCi0gICAg
V2ViS2l0RXJyb3JDYW5ub3RVc2VSZXN0cmljdGVkUG9ydCA9IDEwMywKKyAgICBXZWJLaXRFcnJv
ckNhbm5vdFVzZVJlc3RyaWN0ZWRQb3J0ID0gICAgICAgICAgICAgICAgICAgICAgICAxMDMsCiAg
ICAgV2ViS2l0RXJyb3JDYW5ub3RGaW5kUGx1Z0luID0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMjAwLAogICAgIFdlYktpdEVycm9yQ2Fubm90TG9hZFBsdWdJbiA9ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDIwMSwKICAgICBXZWJLaXRFcnJvckphdmFVbmF2YWlsYWJsZSA9
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDIsCkBAIC0xMDEzLDcgKzEwMTAsNyBA
QCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRvd25sb2FkKFdlYkNvcmU6OlJlc291cmNlSGFu
ZGxlKiBoYW5kbGUsIGNvbnN0IFdlYkNvcgogICAgIFFOZXR3b3JrUmVwbHlIYW5kbGVyKiBoYW5k
bGVyID0gaGFuZGxlLT5nZXRJbnRlcm5hbCgpLT5tX2pvYjsKICAgICBRTmV0d29ya1JlcGx5KiBy
ZXBseSA9IGhhbmRsZXItPnJlbGVhc2UoKTsKICAgICBpZiAocmVwbHkpIHsKLSAgICAgICAgUVdl
YlBhZ2UgKnBhZ2UgPSBtX3dlYkZyYW1lLT5wYWdlKCk7CisgICAgICAgIFFXZWJQYWdlKiBwYWdl
ID0gbV93ZWJGcmFtZS0+cGFnZSgpOwogICAgICAgICBpZiAocGFnZS0+Zm9yd2FyZFVuc3VwcG9y
dGVkQ29udGVudCgpKQogICAgICAgICAgICAgZW1pdCBwYWdlLT51bnN1cHBvcnRlZENvbnRlbnQo
cmVwbHkpOwogICAgICAgICBlbHNlCkBAIC0xMDUyLDEyICsxMDQ5LDExIEBAIHZvaWQgRnJhbWVM
b2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hXaWxsU2VuZFJlcXVlc3QoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXIqLCB1bnNpCiAgICAgICAgIGlmIChVUkxzVG9SZWRpcmVjdC5jb250YWlucyh1cmwpKQog
ICAgICAgICAgICAgbmV3UmVxdWVzdC5zZXRVUkwoUVVybChVUkxzVG9SZWRpcmVjdFt1cmxdKSk7
CiAgICAgfQotICAgIC8vIHNlZW1zIGxpa2UgdGhlIE1hYyBjb2RlIGRvZXNuJ3QgZG8gYW55dGhp
bmcgaGVyZSBieSBkZWZhdWx0IG5laXRoZXIKLSAgICAvL3FEZWJ1ZygpIDw8ICJGcmFtZUxvYWRl
ckNsaWVudFF0OjpkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdCIgPDwgcmVxdWVzdC5pc051bGwoKSA8
PCByZXF1ZXN0LnVybCgpLnN0cmluZ2AoKTsKKyAgICAvLyBTZWVtcyBsaWtlIHRoZSBNYWMgY29k
ZSBkb2Vzbid0IGRvIGFueXRoaW5nIGhlcmUgYnkgZGVmYXVsdCBuZWl0aGVyLgorICAgIC8vIHFE
ZWJ1ZygpIDw8ICJGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaFdpbGxTZW5kUmVxdWVzdCIg
PDwgcmVxdWVzdC5pc051bGwoKSA8PCByZXF1ZXN0LnVybCgpLnN0cmluZygpOwogfQogCi1ib29s
Ci1GcmFtZUxvYWRlckNsaWVudFF0OjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShEb2N1bWVu
dExvYWRlciosIHVuc2lnbmVkIGxvbmcpCitib29sIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNob3Vs
ZFVzZUNyZWRlbnRpYWxTdG9yYWdlKERvY3VtZW50TG9hZGVyKiwgdW5zaWduZWQgbG9uZykKIHsK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBmYWxzZTsKQEAgLTExODAsNyArMTE3
Niw3IEBAIFdlYkNvcmU6OkZyYW1lKiBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaENyZWF0
ZVBhZ2UoY29uc3QgV2ViQ29yZTo6TmF2aWdhdGlvCiAKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRR
dDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZShGcmFtZVBvbGljeUZ1bmN0aW9uIGZ1
bmN0aW9uLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikKIHsKLSAgICAvLyB3ZSBuZWVkIHRvIGNhbGwgZGly
ZWN0bHkgaGVyZQorICAgIC8vIFdlIG5lZWQgdG8gY2FsbCBkaXJlY3RseSBoZXJlLgogICAgIGlm
IChXZWJDb3JlOjpjb250ZW50RGlzcG9zaXRpb25UeXBlKHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVs
ZCgiQ29udGVudC1EaXNwb3NpdGlvbiIpKSA9PSBXZWJDb3JlOjpDb250ZW50RGlzcG9zaXRpb25B
dHRhY2htZW50KQogICAgICAgICBjYWxsUG9saWN5RnVuY3Rpb24oZnVuY3Rpb24sIFBvbGljeURv
d25sb2FkKTsKICAgICBlbHNlIGlmIChjYW5TaG93TUlNRVR5cGUocmVzcG9uc2UubWltZVR5cGUo
KSkpCkBAIC0xMjE3LDcgKzEyMTMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihGcmFtZVBvbGljeUZ1bgogICAgIFFX
ZWJQYWdlKnBhZ2UgPSBtX3dlYkZyYW1lLT5wYWdlKCk7CiAgICAgUG9saWN5QWN0aW9uIHJlc3Vs
dDsKIAotICAgIC8vIEN1cnJlbnRseSwgdGhpcyBpcyBvbmx5IGVuYWJsZWQgYnkgRFJUCisgICAg
Ly8gQ3VycmVudGx5LCB0aGlzIGlzIG9ubHkgZW5hYmxlZCBieSBEUlQuCiAgICAgaWYgKHBvbGlj
eURlbGVnYXRlRW5hYmxlZCkgewogICAgICAgICBSZWZQdHI8Tm9kZT4gbm9kZTsKICAgICAgICAg
Zm9yIChjb25zdCBFdmVudCogZXZlbnQgPSBhY3Rpb24uZXZlbnQoKTsgZXZlbnQ7IGV2ZW50ID0g
ZXZlbnQtPnVuZGVybHlpbmdFdmVudCgpKSB7CkBAIC0xMjk4LDcgKzEyOTQsNyBAQCBQYXNzUmVm
UHRyPEZyYW1lPiBGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVGcmFtZShjb25zdCBLVVJMJiB1
cmwsIGNvbnN0IFN0cmluZwogCiAgICAgZW1pdCBtX3dlYkZyYW1lLT5wYWdlKCktPmZyYW1lQ3Jl
YXRlZCh3ZWJGcmFtZSk7CiAKLSAgICAvLyAjIyMgc2V0IG92ZXJyaWRlIGVuY29kaW5nIGlmIHdl
IGhhdmUgb25lCisgICAgLy8gRklYTUU6IFNldCBvdmVycmlkZSBlbmNvZGluZyBpZiB3ZSBoYXZl
IG9uZS4KIAogICAgIG1fZnJhbWUtPmxvYWRlcigpLT5sb2FkVVJMSW50b0NoaWxkRnJhbWUoZnJh
bWVEYXRhLnVybCwgZnJhbWVEYXRhLnJlZmVycmVyLCBmcmFtZURhdGEuZnJhbWUuZ2V0KCkpOwog
CkBAIC0xMzMzLDcgKzEzMjksNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnRyYW5zZmVy
TG9hZGluZ1Jlc291cmNlRnJvbVBhZ2UodW5zaWduZWQgbG9uZywgRG9jdW1lbgogCiBPYmplY3RD
b250ZW50VHlwZSBGcmFtZUxvYWRlckNsaWVudFF0OjpvYmplY3RDb250ZW50VHlwZShjb25zdCBL
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGVJbiwgYm9vbCBzaG91bGRQcmVmZXJQbHVn
SW5zRm9ySW1hZ2VzKQogewotLy8gICAgcURlYnVnKCk8PCIgKysrKysrKysrKysrKysrKyB1cmwg
aXMgIjw8dXJsLnByZXR0eVVSTCgpPDwiLCBtaW1lID0gIjw8bWltZVR5cGVJbjsKKyAgICAvLyBx
RGVidWcoKTw8IiArKysrKysrKysrKysrKysrIHVybCBpcyAiPDx1cmwucHJldHR5VVJMKCk8PCIs
IG1pbWUgPSAiPDxtaW1lVHlwZUluOwogICAgIFFGaWxlSW5mbyBmaSh1cmwucGF0aCgpKTsKICAg
ICBTdHJpbmcgZXh0ZW5zaW9uID0gZmkuc3VmZml4KCk7CiAgICAgaWYgKG1pbWVUeXBlSW4gPT0g
ImFwcGxpY2F0aW9uL3gtcXQtcGx1Z2luIiB8fCBtaW1lVHlwZUluID09ICJhcHBsaWNhdGlvbi94
LXF0LXN0eWxlZC13aWRnZXQiKQpAQCAtMTQzNCw4ICsxNDMwLDggQEAgcHJpdmF0ZToKICAgICAg
ICAgaWYgKCFpc1Zpc2libGUoKSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAvLyBp
ZiBzZXRNYXNrIGlzIHNldCB3aXRoIGFuIGVtcHR5IFFSZWdpb24sIG5vIGNsaXBwaW5nIHdpbGwK
LSAgICAgICAgLy8gYmUgcGVyZm9ybWVkLCBzbyBpbiB0aGF0IGNhc2Ugd2UgaGlkZSB0aGUgcGxh
dGZvcm1XaWRnZXQKKyAgICAgICAgLy8gSWYgc2V0TWFzayBpcyBzZXQgd2l0aCBhbiBlbXB0eSBR
UmVnaW9uLCBubyBjbGlwcGluZyB3aWxsCisgICAgICAgIC8vIGJlIHBlcmZvcm1lZCwgc28gaW4g
dGhhdCBjYXNlIHdlIGhpZGUgdGhlIHBsYXRmb3JtV2lkZ2V0LgogICAgICAgICBRUmVnaW9uIG1h
c2sgPSBwbGF0Zm9ybVdpZGdldCgpLT5tYXNrKCk7CiAgICAgICAgIHBsYXRmb3JtV2lkZ2V0KCkt
PnNldFZpc2libGUoIW1hc2suaXNFbXB0eSgpKTsKICAgICB9CkBAIC0xNDY5LDcgKzE0NjUsNyBA
QCBwdWJsaWM6CiAgICAgICAgIEludFJlY3Qgd2luZG93UmVjdCA9IGNvbnZlcnRUb0NvbnRhaW5p
bmdXaW5kb3coSW50UmVjdCgwLCAwLCBmcmFtZVJlY3QoKS53aWR0aCgpLCBmcmFtZVJlY3QoKS5o
ZWlnaHQoKSkpOwogICAgICAgICBncmFwaGljc1dpZGdldC0+c2V0R2VvbWV0cnkoUVJlY3Qod2lu
ZG93UmVjdCkpOwogCi0gICAgICAgIC8vIEZJWE1FOiBjbGlwcGluZyBvZiBncmFwaGljcyB3aWRn
ZXRzCisgICAgICAgIC8vIEZJWE1FOiBNYWtlIHRoZSBjb2RlIGhhbmRsZSBjbGlwcGluZyBvZiBn
cmFwaGljcyB3aWRnZXRzLgogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgc2hvdygpCiAgICAgewpA
QCAtMTQ5Niw4ICsxNDkyLDggQEAgcHJpdmF0ZToKIFBhc3NSZWZQdHI8V2lkZ2V0PiBGcmFtZUxv
YWRlckNsaWVudFF0OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6ZSwgSFRN
TFBsdWdJbkVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIHBhcmFtTmFtZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUsIGJvb2wgbG9hZE1hbnVhbGx5KQogewotLy8gICAgIHFEZWJ1ZygpPDwiLS0tLS0tIENy
ZWF0aW5nIHBsdWdpbiBpbiBGcmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVQbHVnaW4gZm9yICI8
PHVybC5wcmV0dHlVUkwoKSA8PCBtaW1lVHlwZTsKLS8vICAgICBxRGVidWcoKTw8Ii0tLS0tLVx0
IHVybCA9ICI8PHVybC5wcmV0dHlVUkwoKTsKKyAgICAvLyBxRGVidWcoKTw8Ii0tLS0tLSBDcmVh
dGluZyBwbHVnaW4gaW4gRnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlUGx1Z2luIGZvciAiPDx1
cmwucHJldHR5VVJMKCkgPDwgbWltZVR5cGU7CisgICAgLy8gcURlYnVnKCk8PCItLS0tLS1cdCB1
cmwgPSAiPDx1cmwucHJldHR5VVJMKCk7CiAKICAgICBpZiAoIW1fd2ViRnJhbWUpCiAgICAgICAg
IHJldHVybiAwOwpAQCAtMTU1NSwxMiArMTU1MSwxMiBAQCBQYXNzUmVmUHRyPFdpZGdldD4gRnJh
bWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRlUGx1Z2luKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUs
CiAgICAgICAgICAgICBRV2lkZ2V0KiBwYXJlbnRXaWRnZXQgPSAwOwogICAgICAgICAgICAgaWYg
KG1fd2ViRnJhbWUtPnBhZ2UoKS0+ZC0+Y2xpZW50KQogICAgICAgICAgICAgICAgIHBhcmVudFdp
ZGdldCA9IHFvYmplY3RfY2FzdDxRV2lkZ2V0Kj4obV93ZWJGcmFtZS0+cGFnZSgpLT5kLT5jbGll
bnQtPnBsdWdpblBhcmVudCgpKTsKLSAgICAgICAgICAgIGlmIChwYXJlbnRXaWRnZXQpIC8vIGRv
bid0IHJlcGFyZW50IHRvIG5vdGhpbmcgKGkuZS4ga2VlcCB3aGF0ZXZlciBwYXJlbnQgUVdlYlBh
Z2U6OmNyZWF0ZVBsdWdpbigpIGNob3NlLgorICAgICAgICAgICAgaWYgKHBhcmVudFdpZGdldCkg
Ly8gRG9uJ3QgcmVwYXJlbnQgdG8gbm90aGluZyAoaS5lLiBrZWVwIHdoYXRldmVyIHBhcmVudCBR
V2ViUGFnZTo6Y3JlYXRlUGx1Z2luKCkgY2hvc2UuCiAgICAgICAgICAgICAgICAgd2lkZ2V0LT5z
ZXRQYXJlbnQocGFyZW50V2lkZ2V0KTsKICAgICAgICAgICAgIHdpZGdldC0+aGlkZSgpOwogICAg
ICAgICAgICAgUmVmUHRyPFF0UGx1Z2luV2lkZ2V0PiB3ID0gYWRvcHRSZWYobmV3IFF0UGx1Z2lu
V2lkZ2V0KCkpOwogICAgICAgICAgICAgdy0+c2V0UGxhdGZvcm1XaWRnZXQod2lkZ2V0KTsKLSAg
ICAgICAgICAgIC8vIE1ha2Ugc3VyZSBpdCdzIGludmlzaWJsZSB1bnRpbCBwcm9wZXJseSBwbGFj
ZWQgaW50byB0aGUgbGF5b3V0CisgICAgICAgICAgICAvLyBNYWtlIHN1cmUgaXQncyBpbnZpc2li
bGUgdW50aWwgcHJvcGVybHkgcGxhY2VkIGludG8gdGhlIGxheW91dC4KICAgICAgICAgICAgIHct
PnNldEZyYW1lUmVjdChJbnRSZWN0KDAsIDAsIDAsIDApKTsKICAgICAgICAgICAgIHJldHVybiB3
OwogICAgICAgICB9CkBAIC0xNTcyLDE2ICsxNTY4LDE2IEBAIFBhc3NSZWZQdHI8V2lkZ2V0PiBG
cmFtZUxvYWRlckNsaWVudFF0OjpjcmVhdGVQbHVnaW4oY29uc3QgSW50U2l6ZSYgcGx1Z2luU2l6
ZSwKICAgICAgICAgICAgIGlmIChtX3dlYkZyYW1lLT5wYWdlKCktPmQtPmNsaWVudCkKICAgICAg
ICAgICAgICAgICBwYXJlbnRXaWRnZXQgPSBxb2JqZWN0X2Nhc3Q8UUdyYXBoaWNzT2JqZWN0Kj4o
bV93ZWJGcmFtZS0+cGFnZSgpLT5kLT5jbGllbnQtPnBsdWdpblBhcmVudCgpKTsKICAgICAgICAg
ICAgIGdyYXBoaWNzV2lkZ2V0LT5oaWRlKCk7Ci0gICAgICAgICAgICBpZiAocGFyZW50V2lkZ2V0
KSAvLyBkb24ndCByZXBhcmVudCB0byBub3RoaW5nIChpLmUuIGtlZXAgd2hhdGV2ZXIgcGFyZW50
IFFXZWJQYWdlOjpjcmVhdGVQbHVnaW4oKSBjaG9zZS4KKyAgICAgICAgICAgIGlmIChwYXJlbnRX
aWRnZXQpIC8vIERvbid0IHJlcGFyZW50IHRvIG5vdGhpbmcgKGkuZS4ga2VlcCB3aGF0ZXZlciBw
YXJlbnQgUVdlYlBhZ2U6OmNyZWF0ZVBsdWdpbigpIGNob3NlLgogICAgICAgICAgICAgICAgIGdy
YXBoaWNzV2lkZ2V0LT5zZXRQYXJlbnRJdGVtKHBhcmVudFdpZGdldCk7CiAgICAgICAgICAgICBS
ZWZQdHI8UXRQbHVnaW5HcmFwaGljc1dpZGdldD4gdyA9IFF0UGx1Z2luR3JhcGhpY3NXaWRnZXQ6
OmNyZWF0ZShncmFwaGljc1dpZGdldCk7Ci0gICAgICAgICAgICAvLyBNYWtlIHN1cmUgaXQncyBp
bnZpc2libGUgdW50aWwgcHJvcGVybHkgcGxhY2VkIGludG8gdGhlIGxheW91dAorICAgICAgICAg
ICAgLy8gTWFrZSBzdXJlIGl0J3MgaW52aXNpYmxlIHVudGlsIHByb3Blcmx5IHBsYWNlZCBpbnRv
IHRoZSBsYXlvdXQuCiAgICAgICAgICAgICB3LT5zZXRGcmFtZVJlY3QoSW50UmVjdCgwLCAwLCAw
LCAwKSk7CiAgICAgICAgICAgICByZXR1cm4gdzsKICAgICAgICAgfQogI2VuZGlmIC8vIFFUX05P
X0dSQVBISUNTVklFVwogCi0gICAgICAgIC8vIEZJWE1FOiBtYWtlIHRoaW5ncyB3b3JrIGZvciB3
aWRnZXRsZXNzIHBsdWdpbnMgYXMgd2VsbAorICAgICAgICAvLyBGSVhNRTogTWFrZSB0aGluZ3Mg
d29yayBmb3Igd2lkZ2V0bGVzcyBwbHVnaW5zIGFzIHdlbGwuCiAgICAgICAgIGRlbGV0ZSBvYmpl
Y3Q7CiAgICAgfQogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQpAQCAtMTU5NCwxNiAr
MTU5MCwxNiBAQCBQYXNzUmVmUHRyPFdpZGdldD4gRnJhbWVMb2FkZXJDbGllbnRRdDo6Y3JlYXRl
UGx1Z2luKGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsCiAjaWYgZGVmaW5lZChNT1pfUExBVEZP
Uk1fTUFFTU8pICYmIChNT1pfUExBVEZPUk1fTUFFTU8gPj0gNSkKICAgICAgICAgICAgIHNpemVf
dCB3bW9kZUluZGV4ID0gcGFyYW1zLmZpbmQoIndtb2RlIik7CiAgICAgICAgICAgICBpZiAod21v
ZGVJbmRleCA9PSAtMSkgewotICAgICAgICAgICAgICAgIC8vIERpc2FibGUgWEVtYmVkIG1vZGUg
YW5kIGZvcmNlIGl0IHRvIG9wYXF1ZSBtb2RlCisgICAgICAgICAgICAgICAgLy8gRGlzYWJsZSBY
RW1iZWQgbW9kZSBhbmQgZm9yY2UgaXQgdG8gb3BhcXVlIG1vZGUuCiAgICAgICAgICAgICAgICAg
cGFyYW1zLmFwcGVuZCgid21vZGUiKTsKICAgICAgICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKCJv
cGFxdWUiKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWlzUVdlYlZpZXcpIHsKLSAgICAgICAg
ICAgICAgICAvLyBEaXNhYmxlIHRyYW5zcGFyZW5jeSBpZiBjbGllbnQgaXMgbm90IGEgUVdlYlZp
ZXcKKyAgICAgICAgICAgICAgICAvLyBEaXNhYmxlIHRyYW5zcGFyZW5jeSBpZiBjbGllbnQgaXMg
bm90IGEgUVdlYlZpZXcuCiAgICAgICAgICAgICAgICAgdmFsdWVzW3dtb2RlSW5kZXhdID0gIm9w
YXF1ZSI7CiAgICAgICAgICAgICB9CiAjZWxzZQogICAgICAgICAgICAgaWYgKCFpc1FXZWJWaWV3
KSB7Ci0gICAgICAgICAgICAgICAgLy8gaW5qZWN0IHdtb2RlPW9wYXF1ZSB3aGVuIHRoZXJlIGlz
IG5vIGNsaWVudCBvciB0aGUgY2xpZW50IGlzIG5vdCBhIFFXZWJWaWV3CisgICAgICAgICAgICAg
ICAgLy8gSW5qZWN0IHdtb2RlPW9wYXF1ZSB3aGVuIHRoZXJlIGlzIG5vIGNsaWVudCBvciB0aGUg
Y2xpZW50IGlzIG5vdCBhIFFXZWJWaWV3LgogICAgICAgICAgICAgICAgIHNpemVfdCB3bW9kZUlu
ZGV4ID0gcGFyYW1zLmZpbmQoIndtb2RlIik7CiAgICAgICAgICAgICAgICAgaWYgKHdtb2RlSW5k
ZXggPT0gLTEpIHsKICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmFwcGVuZCgid21vZGUiKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>