<?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>75232</bug_id>
          
          <creation_ts>2011-12-26 17:33:19 -0800</creation_ts>
          <short_desc>REGRESSION (WebKit2): Printing a subframe containing a PDF prints the on-screen view instead of the entire PDF document</short_desc>
          <delta_ts>2012-01-02 12:10:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Printing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, Regression</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>mitz</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>c.petersen87</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>527246</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2011-12-26 17:33:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/8750356&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527247</commentid>
    <comment_count>1</comment_count>
      <attachid>120561</attachid>
    <who name="">mitz</who>
    <bug_when>2011-12-26 17:36:33 -0800</bug_when>
    <thetext>Created attachment 120561
Proposed fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527249</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-26 17:41:19 -0800</bug_when>
    <thetext>Attachment 120561 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebKit2/WebProcess/WebPage/WebPage.cpp:2651:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 22 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>527257</commentid>
    <comment_count>3</comment_count>
      <attachid>120561</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-12-26 19:03:42 -0800</bug_when>
    <thetext>Comment on attachment 120561
Proposed fix

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

&gt; Source/WebKit2/Shared/PrintInfo.h:29
&gt; +#include &lt;WebCore/FloatRect.h&gt;

You could include FloatSize.h.

&gt; Source/WebKit2/UIProcess/API/mac/WKView.mm:2734
&gt; +        // FIXME: If the frame cannot be printed (e.g. if it contains an encrypted PDF that disallows
&gt; +        // printing), this function should return nil.

Is this something you plan to address very soon? Otherwise, a bug number would be helpful.

What&apos;s the symptom here - will a single blank page be printed for non-printable documents?

&gt; Source/WebKit2/WebProcess/Plugins/PluginView.h:72
&gt; +    RetainPtr&lt;CGPDFDocumentRef&gt; pdfDocumentForPrinting() const { return m_plugin-&gt;pdfDocumentForPrinting(); }

I do not understand why we have to talk to WebCore here. Is this for &lt;embed type=&quot;application/pdf&quot;&gt;? But these end up in BuiltinPDFViews, too.

Eventually, there will be no CGPDFDocument parsing in WebProcess, so adding such plumbing across framework boundary is against the long term plan.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:2658
&gt; +    CGRect cropBox = CGPDFPageGetBoxRect(page, kCGPDFCropBox);
&gt; +    cropBox = CGRectIntersection(cropBox, CGPDFPageGetBoxRect(page, kCGPDFMediaBox));

This is suspicious - many PDFs don&apos;t have a crop box. See e.g. code in BuiltInPDFView::calculateSizes.

&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:2668
&gt; +    if (widthDifference || heightDifference)
&gt; +        CGContextTranslateCTM(context, widthDifference / 2, heightDifference / 2);

At least on screen, PDFs really dislike non-integer translation (see drawing code in BuiltinPDFView).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527258</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-12-26 19:04:40 -0800</bug_when>
    <thetext>This patch adds some Windows build trouble.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527260</commentid>
    <comment_count>5</comment_count>
      <attachid>120561</attachid>
    <who name="">mitz</who>
    <bug_when>2011-12-26 19:14:16 -0800</bug_when>
    <thetext>Comment on attachment 120561
Proposed fix

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

Thanks for the review! I am going to work on this some more.

&gt;&gt; Source/WebKit2/Shared/PrintInfo.h:29
&gt;&gt; +#include &lt;WebCore/FloatRect.h&gt;
&gt; 
&gt; You could include FloatSize.h.

Indeed. At some point I was using a FloatRect here (which is really why I made the conversion).

&gt;&gt; Source/WebKit2/UIProcess/API/mac/WKView.mm:2734
&gt;&gt; +        // printing), this function should return nil.
&gt; 
&gt; Is this something you plan to address very soon? Otherwise, a bug number would be helpful.
&gt; 
&gt; What&apos;s the symptom here - will a single blank page be printed for non-printable documents?

I am not planning to address this immediately, since the UI process doesn’t know whether the frame contents are printable, and the symptom is quite benign (an single empty page). For what it’s worth, I think it’s strange that non-printable PDFs have been signaled only through a nil NSPrintOperation and not by disabling the print command.

&gt;&gt; Source/WebKit2/WebProcess/Plugins/PluginView.h:72
&gt;&gt; +    RetainPtr&lt;CGPDFDocumentRef&gt; pdfDocumentForPrinting() const { return m_plugin-&gt;pdfDocumentForPrinting(); }
&gt; 
&gt; I do not understand why we have to talk to WebCore here. Is this for &lt;embed type=&quot;application/pdf&quot;&gt;? But these end up in BuiltinPDFViews, too.
&gt; 
&gt; Eventually, there will be no CGPDFDocument parsing in WebProcess, so adding such plumbing across framework boundary is against the long term plan.

m_plugin is a WebKit::Plugin, not a WebCore object.

&gt;&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:2658
&gt;&gt; +    cropBox = CGRectIntersection(cropBox, CGPDFPageGetBoxRect(page, kCGPDFMediaBox));
&gt; 
&gt; This is suspicious - many PDFs don&apos;t have a crop box. See e.g. code in BuiltInPDFView::calculateSizes.

Interesting. I was trying to follow what PDFView does but I didn’t test thoroughly for compatibility.

&gt;&gt; Source/WebKit2/WebProcess/WebPage/WebPage.cpp:2668
&gt;&gt; +        CGContextTranslateCTM(context, widthDifference / 2, heightDifference / 2);
&gt; 
&gt; At least on screen, PDFs really dislike non-integer translation (see drawing code in BuiltinPDFView).

Also interesting!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527287</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-12-26 22:50:26 -0800</bug_when>
    <thetext>&gt; m_plugin is a WebKit::Plugin, not a WebCore object.

I probably added the comment to a wrong place then. There is some new interaction with WebCore that I don&apos;t understand, as you needed to export a function from WebCore.

&gt; Also interesting!

That was tracked as bug 70072.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527291</commentid>
    <comment_count>7</comment_count>
    <who name="">mitz</who>
    <bug_when>2011-12-26 23:05:47 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; &gt; m_plugin is a WebKit::Plugin, not a WebCore object.
&gt; 
&gt; I probably added the comment to a wrong place then. There is some new interaction with WebCore that I don&apos;t understand, as you needed to export a function from WebCore.

I am using PluginDocument::pluginWidget. I am not sure how else to get from a WebFrame to its (possible) BuiltInPDFView.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527294</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-12-26 23:20:55 -0800</bug_when>
    <thetext>Indeed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527998</commentid>
    <comment_count>9</comment_count>
      <attachid>120764</attachid>
    <who name="">mitz</who>
    <bug_when>2011-12-29 12:22:27 -0800</bug_when>
    <thetext>Created attachment 120764
Proposed fix

- Still haven’t looked into the Windows build issue
- Omitted the PrintInfo change which wasn’t closely related
- Added rounding when centering
- Added an empty-check in isDisplayingPDFDocument()
- Added an empty-crop-box check</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527999</commentid>
    <comment_count>10</comment_count>
    <who name="">mitz</who>
    <bug_when>2011-12-29 12:23:51 -0800</bug_when>
    <thetext>- Forgot to fix style error</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528000</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-29 12:24:57 -0800</bug_when>
    <thetext>Attachment 120764 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebKit2/WebProcess/WebPage/WebPage.cpp:2658:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 1 in 19 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>528291</commentid>
    <comment_count>12</comment_count>
    <who name="">mitz</who>
    <bug_when>2011-12-31 12:31:04 -0800</bug_when>
    <thetext>Fixed in &lt;http://trac.webkit.org/r103858&gt;.

The Windows build has been broken for a while, so whether this broke it further I don’t know.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528293</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-12-31 12:58:55 -0800</bug_when>
    <thetext>I clicked on the red bubble for the first patch, and it was clear that it broke the build further.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528562</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Petersen">c.petersen87</who>
    <bug_when>2012-01-02 11:21:50 -0800</bug_when>
    <thetext>I would like to do some testing in this area but noticed a couple of things. With Webkit NB 103874, a inline PDF that I have previously loaded doesn&apos;t seem to load if page has been cached.  Known issue already ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528563</commentid>
    <comment_count>15</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-01-02 12:10:37 -0800</bug_when>
    <thetext>I haven&apos;t seen that reported yet.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120561</attachid>
            <date>2011-12-26 17:36:33 -0800</date>
            <delta_ts>2011-12-29 12:22:27 -0800</delta_ts>
            <desc>Proposed fix</desc>
            <filename>8750356_r4.diff</filename>
            <type>text/plain</type>
            <size>35566</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzY5MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDExLTEyLTI2ICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViQ29yZSBjaGFuZ2VzIGZvciA8
cmRhcjovL3Byb2JsZW0vODc1MDM1Nj4gUkVHUkVTU0lPTiAoV2ViS2l0Mik6IFByaW50aW5nIGEg
c3ViZnJhbWUgY29udGFpbmluZyBhIFBERiBwcmludHMgdGhlIG9uLXNjcmVlbiB2aWV3IGluc3Rl
YWQgb2YgdGhlIGVudGlyZSBQREYgZG9jdW1lbnQKKyAgICAgICAgPGh0dHA6Ly93ZWJraXQub3Jn
L2IvNzUyMzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJDb3JlLmV4cC5pbjogRXhwb3J0ZWQgUGx1Z2luRG9jdW1lbnQ6OnBsdWdpbldpZGdl
dCgpLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogUHJvbW90
ZWQgUGx1Z2luRG9jdW1lbnQuaCB0byBwcml2YXRlLgorICAgICAgICAqIGh0bWwvUGx1Z2luRG9j
dW1lbnQuaDogRml4ZWQgYSB0eXBvIGluIGEgY29tbWVudC4KKwogMjAxMS0xMi0yNiAgRGFyaW4g
QWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIE93blB0ciBhbmQgT3duQXJy
YXlQdHIgaW4gYSBjb3VwbGUgbW9yZSBwbGFjZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShy
ZXZpc2lvbiAxMDM2ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2lu
ZyBjb3B5KQpAQCAtMzU2LDYgKzM1Niw3IEBAIF9fWk43V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb241
Y2xlYXJFdgogX19aTjdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjZtb2RpZnlFTlMwXzExRUFsdGVy
YXRpb25FTlNfMThTZWxlY3Rpb25EaXJlY3Rpb25FTlNfMTVUZXh0R3JhbnVsYXJpdHlFTlNfMTRF
VXNlclRyaWdnZXJlZEUKIF9fWk43V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb245c2VsZWN0QWxsRXYK
IF9fWk43V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb25DMUVQTlNfNUZyYW1lRQorX19aTjdXZWJDb3Jl
MTRQbHVnaW5Eb2N1bWVudDEycGx1Z2luV2lkZ2V0RXYKIF9fWk43V2ViQ29yZTE0UmVzb3VyY2VI
YW5kbGUyMGZvcmNlQ29udGVudFNuaWZmaW5nRXYKIF9fWk43V2ViQ29yZTE0UmVzb3VyY2VIYW5k
bGUyNnN5bmNocm9ub3VzTG9hZFJ1bkxvb3BNb2RlRXYKIF9fWk43V2ViQ29yZTE0UmVzb3VyY2VI
YW5kbGUzNWNyZWF0ZVByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9uRVBLMTBfX0NGU3RyaW5n
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAxMDM2ODgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTMyNjQsNyArMzI2NCw3IEBA
CiAJCTk3MjA1QUI3MTIzOTI5MTAwMEIxNzM4MCAvKiBNZWRpYURvY3VtZW50LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MjA1QUIzMTIzOTI5MTAw
MEIxNzM4MCAvKiBNZWRpYURvY3VtZW50LmNwcCAqLzsgfTsKIAkJOTcyMDVBQjgxMjM5MjkxMDAw
QjE3MzgwIC8qIE1lZGlhRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk3MjA1QUI0MTIzOTI5MTAwMEIxNzM4MCAvKiBNZWRpYURvY3VtZW50
LmggKi87IH07CiAJCTk3MjA1QUJCMTIzOTI5MjcwMEIxNzM4MCAvKiBQbHVnaW5Eb2N1bWVudC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzIwNUFC
OTEyMzkyOTI3MDBCMTczODAgLyogUGx1Z2luRG9jdW1lbnQuY3BwICovOyB9OwotCQk5NzIwNUFC
QzEyMzkyOTI3MDBCMTczODAgLyogUGx1Z2luRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MjA1QUJBMTIzOTI5MjcwMEIxNzM4MCAvKiBQ
bHVnaW5Eb2N1bWVudC5oICovOyB9OworCQk5NzIwNUFCQzEyMzkyOTI3MDBCMTczODAgLyogUGx1
Z2luRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk3MjA1QUJBMTIzOTI5MjcwMEIxNzM4MCAvKiBQbHVnaW5Eb2N1bWVudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk3MjhDMzEzMTI2OEU0
MzkwMDQxRTg5QiAvKiBNYXJrdXBBY2N1bXVsYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzI4QzMxMTEyNjhFNDM5MDA0MUU4OUIgLyogTWFy
a3VwQWNjdW11bGF0b3IuY3BwICovOyB9OwogCQk5NzI4QzMxNDEyNjhFNDM5MDA0MUU4OUIgLyog
TWFya3VwQWNjdW11bGF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk3MjhDMzEyMTI2OEU0MzkwMDQxRTg5QiAvKiBNYXJrdXBBY2N1bXVsYXRvci5o
ICovOyB9OwogCQk5NzM4ODlBMDExNkVBOURDMDBBREYzMTMgLyogRG9jdW1lbnRXcml0ZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTczODg5OUUx
MTZFQTlEQzAwQURGMzEzIC8qIERvY3VtZW50V3JpdGVyLmNwcCAqLzsgfTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmgJKHJldmlzaW9uIDEwMzY4OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDgsIDIwMDlBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDgsIDIwMDkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDM2OTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw2NSBAQAorMjAxMS0xMi0yNiAgRGFuIEJl
cm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgorCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NzUw
MzU2PiBSRUdSRVNTSU9OIChXZWJLaXQyKTogUHJpbnRpbmcgYSBzdWJmcmFtZSBjb250YWluaW5n
IGEgUERGIHByaW50cyB0aGUgb24tc2NyZWVuIHZpZXcgaW5zdGVhZCBvZiB0aGUgZW50aXJlIFBE
RiBkb2N1bWVudAorICAgICAgICA8aHR0cDovL3dlYmtpdC5vcmcvYi83NTIzMj4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9QcmludElu
Zm8uY3BwOgorICAgICAgICAoV2ViS2l0OjpQcmludEluZm86OlByaW50SW5mbyk6IFVwZGF0ZWQg
aW5pdGlhbGl6ZXIgbGlzdC4KKyAgICAgICAgKFdlYktpdDo6UHJpbnRJbmZvOjplbmNvZGUpOiBV
cGRhdGVkIGZvciBtZW1iZXIgdmFyaWFibGUgY2hhbmdlLgorICAgICAgICAoV2ViS2l0OjpQcmlu
dEluZm86OmRlY29kZSk6IERpdHRvLgorICAgICAgICAqIFNoYXJlZC9QcmludEluZm8uaDogUmVw
bGFjZWQgYXZhaWxhYmxlUGFwZXJXaWR0aCBhbmQgYXZhaWxhYmxlUGFwZXJIZWlnaHQgbWVtYmVy
IHZhcmlhYmxlcworICAgICAgICB3aXRoIGF2YWlsYWJsZVBhcGVyU2l6ZSBtZW1iZXIgdmFyaWFi
bGUuCisgICAgICAgICogU2hhcmVkL21hYy9QcmludEluZm9NYWMubW06CisgICAgICAgIChXZWJL
aXQ6OlByaW50SW5mbzo6UHJpbnRJbmZvKTogVXBkYXRlZCBmb3IgbWVtYmVyIHZhcmlhYmxlIGNo
YW5nZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKHBy
aW50SW5mb0Zyb21XS1ByaW50SW5mbyk6IFVwZGF0ZWQgZm9yIFByaW50SW5mbyBtZW1iZXIgdmFy
aWFibGUgY2hhbmdlLgorICAgICAgICAoV0tQYWdlRHJhd1BhZ2VzVG9QREYpOiBBZGRlZCBXS1By
aW50SW5mbyBwYXJhbWV0ZXIsIHdoaWNoIGlzIHBhc3NlZCB0aHJvdWdoIGFzIGEgUHJpbnRJbmZv
CisgICAgICAgIHRvIHRoZSBXZWJQYWdlUHJveHkuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9XS1ByaW50aW5n
Vmlldy5tbToKKyAgICAgICAgKC1bV0tQcmludGluZ1ZpZXcgX3ByZXBhcmVQREZEYXRhRm9yUHJp
bnRpbmdPblNlY29uZGFyeVRocmVhZF0pOiBDaGFuZ2VkIHRvIHBhc3MgdGhlIFByaW50SW5mbwor
ICAgICAgICBkb3duIHRvIFdlYlBhZ2VQcm94eTo6ZHJhd1BhZ2VzVG9QREYuCisgICAgICAgICgt
W1dLUHJpbnRpbmdWaWV3IF9kcmF3UHJldmlldzpdKTogQ2hhbmdlZCB0byBwYXNzIHRoZSBQcmlu
dEluZm8gZG93biB0bworICAgICAgICBXZWJQYWdlUHJveHk6OmRyYXdSZWN0VG9QREYuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAgICAoLVtXS1ZpZXcgY2Fu
Q2hhbmdlRnJhbWVMYXlvdXQ6XSk6IENoYW5nZWQgdG8gdXNlIFdlYkZyYW1lUHJveHk6OmlzRGlz
cGxheWluZ1BERkRvY3VtZW50LCB3aGljaAorICAgICAgICB3b3JrcyBmb3Igc3ViZnJhbWVzIGFz
IHdlbGwuCisgICAgICAgICgtW1dLVmlldyBwcmludE9wZXJhdGlvbldpdGhQcmludEluZm86Zm9y
RnJhbWU6XSk6IEFkZGVkIGEgRklYTUUuCisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVByb3h5Ojppc0Rpc3BsYXlpbmdQREZE
b2N1bWVudCk6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGcmFtZVByb3h5Lmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6ZHJhd1JlY3RUb1BERik6IEFkZGVkIGEgUHJpbnRJbmZvIHBhcmFtZXRlciwg
d2hpY2ggaXMgcGFzc2VkIHRocm91Z2ggdG8KKyAgICAgICAgdGhlIFdlYiBwcm9jZXNzLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYXdQYWdlc1RvUERGKTogRGl0dG8uCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9QREYvQnVpbHRJblBERlZpZXcuaDoKKyAgICAgICAgQWRkZWQgYW4gb3ZlcnJpZGUgb2Yg
cGRmRG9jdW1lbnRGb3JQcmludGluZygpIHdoaWNoIHJldHVybnMgdGhlIFBERkRvY3VtZW50Lgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaDoKKyAgICAgICAgKFdlYktpdDo6
UGx1Z2luOjpwZGZEb2N1bWVudEZvclByaW50aW5nKTogQWRkZWQuIFRoaXMgYmFzZSBjbGFzcyBp
bXBsZW1lbnRhdGlvbiByZXR1cm5zIDAuCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuaDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cGRmRG9jdW1lbnRGb3JQ
cmludGluZyk6IEFkZGVkLiBDYWxscyB0aHJvdWdoIHRvIHRoZSBQbHVnaW4uCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpwZGZEb2N1
bWVudEZvclByaW50aW5nRnJhbWUpOiBBZGRlZCB0aGlzIGhlbHBlciBmdW5jdGlvbi4gSWYgdGhl
IGZyYW1lIGlzIGRpc3BsYXlpbmcKKyAgICAgICAgYSBwbHVnLWluIGRvY3VtZW50LCBhbGxvd3Mg
dGhlIHBsdWctaW4gdG8gcHJvdmlkZSBhIFBERiBkb2N1bWVudCBmb3IgcHJpbnRpbmcuCisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OmJlZ2luUHJpbnRpbmcpOiBBZGRlZCBhbiBlYXJseSByZXR1
cm4gaWYgdGhlIGZyYW1lIHByb3ZpZGVzIGEgUERGIGRvY3VtZW50CisgICAgICAgIGZvciBwcmlu
dGluZy4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcp
OiBJZiB0aGUgZnJhbWUgcHJvdmlkZXMgYSBQREYgZG9jdW1lbnQgZm9yIHByaW50aW5nLAorICAg
ICAgICBjcmVhdGUgZm9yIGVhY2ggcGFnZSBpbiB0aGUgUERGIGRvY3VtZW50IGEgcGFnZSByZWN0
IHdpdGggdGhlIHNpemUgYXZhaWxhYmxlIGZvciBwcmludGluZy4KKyAgICAgICAgKFdlYktpdDo6
ZHJhd1BERlBhZ2UpOiBBZGRlZCB0aGlzIGhlbHBlciBmdW5jdGlvbiwgd2hpY2ggZHJhd3MgYSBw
YWdlIGZyb20gdGhlIFBERiBkb2N1bWVudAorICAgICAgICBpbnRvIG9uZSBvZiB0aGUgYWZvcmVt
ZW50aW9uZWQgcGFnZSByZWN0cy4gSXQgcm90YXRlcyB0aGUgUERGIHBhZ2UgOTAgZGVncmVlcyBp
ZiBuZWNlc3NhcnkgdG8KKyAgICAgICAgYmV0dGVyIG1hdGNoIHRoZSBhc3BlY3QgcmF0aW8gb2Yg
dGhlIHBhcGVyLCB0aGVuIGl0IGNlbnRlcnMgaXQgb24gdGhlIHBhcGVyLiBUaGlzIG1hdGNoZXMg
dGhlCisgICAgICAgIGJlaGF2aW9yIG9mIGEgUERGVmlldyB3aGVuIHByaW50ZWQgd2l0aCBkZWZh
dWx0IHNldHRpbmdzLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkcmF3UmVjdFRvUERGKTog
SWYgdGhlIGZyYW1lIHByb3ZpZGVzIGEgUERGIGRvY3VtZW50IGZvciBwcmludGluZywgZHJhdyB0
aGUKKyAgICAgICAgUERGIHBhZ2VzIGZhbGxpbmcgd2l0aGluIHRoZSByZXF1ZXN0ZWQgcmVjdC4K
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZHJhd1BhZ2VzVG9QREYpOiBJZiB0aGUgZnJhbWUg
cHJvdmlkZXMgYSBQREYgZG9jdW1lbnQgZm9yIHByaW50aW5nLCBkcmF3CisgICAgICAgIHRoZSBy
ZXF1ZXN0ZWQgcGFnZXMuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjogQWRkZWQg
YSBQcmludEluZm8gcGFyYW1ldGVyIHRvIERyYXdSZWN0VG9QREYgYW5kCisgICAgICAgIERyYXdQ
YWdlc1RvUERGLgorCiAyMDExLTEyLTI2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KIAogICAgICAgICBGaXggYSBjcmFzaCBpbiBXZWJQcm9jZXNzIHdoZW4gc3Rh
cnRpbmcgYSBkb3dubG9hZCBub3QgaW5pdGlhdGVkIGJ5IGEgV2ViUGFnZQpJbmRleDogU291cmNl
L1dlYktpdDIvU2hhcmVkL1ByaW50SW5mby5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvU2hhcmVkL1ByaW50SW5mby5jcHAJKHJldmlzaW9uIDEwMzY4OCkKKysrIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9QcmludEluZm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwyNyArMjYsMjQg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQcmludEluZm8uaCIKIAotI2luY2x1
ZGUgIkFyZ3VtZW50RGVjb2Rlci5oIgotI2luY2x1ZGUgIkFyZ3VtZW50RW5jb2Rlci5oIgogI2lu
Y2x1ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogUHJpbnRJbmZvOjpQcmludEluZm8oKQogICAgIDogcGFn
ZVNldHVwU2NhbGVGYWN0b3IoMCkKLSAgICAsIGF2YWlsYWJsZVBhcGVyV2lkdGgoMCkKLSAgICAs
IGF2YWlsYWJsZVBhcGVySGVpZ2h0KDApCiB7CiB9CiAKIHZvaWQgUHJpbnRJbmZvOjplbmNvZGUo
Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyKSBjb25zdAogewotICAgIGVuY29kZXIt
PmVuY29kZShDb3JlSVBDOjpJbihwYWdlU2V0dXBTY2FsZUZhY3RvciwgYXZhaWxhYmxlUGFwZXJX
aWR0aCwgYXZhaWxhYmxlUGFwZXJIZWlnaHQpKTsKKyAgICBlbmNvZGVyLT5lbmNvZGUoQ29yZUlQ
Qzo6SW4ocGFnZVNldHVwU2NhbGVGYWN0b3IsIGF2YWlsYWJsZVBhcGVyU2l6ZSkpOwogfQogCiBi
b29sIFByaW50SW5mbzo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogZGVjb2Rlciwg
UHJpbnRJbmZvJiBpbmZvKQogewotICAgIHJldHVybiBkZWNvZGVyLT5kZWNvZGUoQ29yZUlQQzo6
T3V0KGluZm8ucGFnZVNldHVwU2NhbGVGYWN0b3IsIGluZm8uYXZhaWxhYmxlUGFwZXJXaWR0aCwg
aW5mby5hdmFpbGFibGVQYXBlckhlaWdodCkpOworICAgIHJldHVybiBkZWNvZGVyLT5kZWNvZGUo
Q29yZUlQQzo6T3V0KGluZm8ucGFnZVNldHVwU2NhbGVGYWN0b3IsIGluZm8uYXZhaWxhYmxlUGFw
ZXJTaXplKSk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QcmludEluZm8u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUHJpbnRJbmZvLmgJKHJldmlz
aW9uIDEwMzY4OCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QcmludEluZm8uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBQcmludEluZm9faAogI2RlZmluZSBQ
cmludEluZm9faAogCisjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbmNsdWRlIDx3
dGYvUGxhdGZvcm0uaD4KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTQ3LDggKzQ4LDcgQEAgc3Ry
dWN0IFByaW50SW5mbyB7CiAgICAgZXhwbGljaXQgUHJpbnRJbmZvKE5TUHJpbnRJbmZvICopOwog
CiAgICAgZmxvYXQgcGFnZVNldHVwU2NhbGVGYWN0b3I7Ci0gICAgZmxvYXQgYXZhaWxhYmxlUGFw
ZXJXaWR0aDsKLSAgICBmbG9hdCBhdmFpbGFibGVQYXBlckhlaWdodDsKKyAgICBXZWJDb3JlOjpG
bG9hdFNpemUgYXZhaWxhYmxlUGFwZXJTaXplOwogCiAgICAgdm9pZCBlbmNvZGUoQ29yZUlQQzo6
QXJndW1lbnRFbmNvZGVyKikgY29uc3Q7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKENvcmVJUEM6
OkFyZ3VtZW50RGVjb2RlciosIFByaW50SW5mbyYpOwpJbmRleDogU291cmNlL1dlYktpdDIvU2hh
cmVkL21hYy9QcmludEluZm9NYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hh
cmVkL21hYy9QcmludEluZm9NYWMubW0JKHJldmlzaW9uIDEwMzY4OCkKKysrIFNvdXJjZS9XZWJL
aXQyL1NoYXJlZC9tYWMvUHJpbnRJbmZvTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMCAr
MjgsMTEgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OworCiBQcmludEluZm86OlByaW50SW5mbyhOU1ByaW50SW5mbyAqcHJpbnRJbmZvKQogICAgIDog
cGFnZVNldHVwU2NhbGVGYWN0b3IoW1tbcHJpbnRJbmZvIGRpY3Rpb25hcnldIG9iamVjdEZvcktl
eTpOU1ByaW50U2NhbGluZ0ZhY3Rvcl0gZmxvYXRWYWx1ZV0pCi0gICAgLCBhdmFpbGFibGVQYXBl
cldpZHRoKFtwcmludEluZm8gcGFwZXJTaXplXS53aWR0aCAtIFtwcmludEluZm8gbGVmdE1hcmdp
bl0gLSBbcHJpbnRJbmZvIHJpZ2h0TWFyZ2luXSkKLSAgICAsIGF2YWlsYWJsZVBhcGVySGVpZ2h0
KFtwcmludEluZm8gcGFwZXJTaXplXS5oZWlnaHQgLSBbcHJpbnRJbmZvIHRvcE1hcmdpbl0gLSBb
cHJpbnRJbmZvIGJvdHRvbU1hcmdpbl0pCisgICAgLCBhdmFpbGFibGVQYXBlclNpemUoRmxvYXRT
aXplKFtwcmludEluZm8gcGFwZXJTaXplXS53aWR0aCAtIFtwcmludEluZm8gbGVmdE1hcmdpbl0g
LSBbcHJpbnRJbmZvIHJpZ2h0TWFyZ2luXSwgW3ByaW50SW5mbyBwYXBlclNpemVdLmhlaWdodCAt
IFtwcmludEluZm8gdG9wTWFyZ2luXSAtIFtwcmludEluZm8gYm90dG9tTWFyZ2luXSkpCiB7CiAg
ICAgQVNTRVJUKHByaW50SW5mbyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViRnJhbWVQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkZyYW1lUHJveHkuY3BwCShyZXZpc2lvbiAxMDM2ODgpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEyOSw2ICsxMjksMTEg
QEAgYm9vbCBXZWJGcmFtZVByb3h5Ojppc0Rpc3BsYXlpbmdNYXJrdXBEbwogICAgIHJldHVybiBt
X01JTUVUeXBlID09ICJ0ZXh0L2h0bWwiIHx8IG1fTUlNRVR5cGUgPT0gImltYWdlL3N2Zyt4bWwi
IHx8IERPTUltcGxlbWVudGF0aW9uOjppc1hNTE1JTUVUeXBlKG1fTUlNRVR5cGUpOwogfQogCiti
b29sIFdlYkZyYW1lUHJveHk6OmlzRGlzcGxheWluZ1BERkRvY3VtZW50KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gV2ViQ29udGV4dDo6cGRmQW5kUG9zdFNjcmlwdE1JTUVUeXBlcygpLmNvbnRhaW5z
KG1fTUlNRVR5cGUpOworfQorCiB2b2lkIFdlYkZyYW1lUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9u
YWxMb2FkKGNvbnN0IFN0cmluZyYgdXJsKQogewogICAgIEFTU0VSVChtX2xvYWRTdGF0ZSA9PSBM
b2FkU3RhdGVGaW5pc2hlZCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJh
bWVQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFt
ZVByb3h5LmgJKHJldmlzaW9uIDEwMzY4OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJGcmFtZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw2ICsxMDYsNyBAQCBwdWJsaWM6
CiAKICAgICBib29sIGlzRGlzcGxheWluZ1N0YW5kYWxvbmVJbWFnZURvY3VtZW50KCkgY29uc3Q7
CiAgICAgYm9vbCBpc0Rpc3BsYXlpbmdNYXJrdXBEb2N1bWVudCgpIGNvbnN0OworICAgIGJvb2wg
aXNEaXNwbGF5aW5nUERGRG9jdW1lbnQoKSBjb25zdDsKIAogICAgIHZvaWQgZ2V0V2ViQXJjaGl2
ZShQYXNzUmVmUHRyPERhdGFDYWxsYmFjaz4pOwogICAgIHZvaWQgZ2V0TWFpblJlc291cmNlRGF0
YShQYXNzUmVmUHRyPERhdGFDYWxsYmFjaz4pOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDEwMzY4OCkKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDMxLDcgKzM0
MzEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpCiB9CiAKICNp
ZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFdJTikKLXZvaWQgV2ViUGFnZVByb3h5OjpkcmF3
UmVjdFRvUERGKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBJbnRSZWN0JiByZWN0LCBQYXNz
UmVmUHRyPERhdGFDYWxsYmFjaz4gcHJwQ2FsbGJhY2spCit2b2lkIFdlYlBhZ2VQcm94eTo6ZHJh
d1JlY3RUb1BERihXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludElu
Zm8sIGNvbnN0IEludFJlY3QmIHJlY3QsIFBhc3NSZWZQdHI8RGF0YUNhbGxiYWNrPiBwcnBDYWxs
YmFjaykKIHsKICAgICBSZWZQdHI8RGF0YUNhbGxiYWNrPiBjYWxsYmFjayA9IHBycENhbGxiYWNr
OwogICAgIGlmICghaXNWYWxpZCgpKSB7CkBAIC0zNDQxLDEwICszNDQxLDEwIEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkcmF3UmVjdFRvUERGKFdlYkZyYW0KICAgICAKICAgICB1aW50NjRfdCBjYWxs
YmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKICAgICBtX2RhdGFDYWxsYmFja3Muc2V0
KGNhbGxiYWNrSUQsIGNhbGxiYWNrLmdldCgpKTsKLSAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkRyYXdSZWN0VG9QREYoZnJhbWUtPmZyYW1lSUQoKSwgcmVjdCwgY2FsbGJh
Y2tJRCksIG1fcGFnZUlELCBtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uID8gQ29yZUlQ
Qzo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5IDogMCk7CisgICAg
cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3UmVjdFRvUERGKGZyYW1lLT5m
cmFtZUlEKCksIHByaW50SW5mbywgcmVjdCwgY2FsbGJhY2tJRCksIG1fcGFnZUlELCBtX2lzUGVy
Zm9ybWluZ0RPTVByaW50T3BlcmF0aW9uID8gQ29yZUlQQzo6RGlzcGF0Y2hNZXNzYWdlRXZlbldo
ZW5XYWl0aW5nRm9yU3luY1JlcGx5IDogMCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkcmF3
UGFnZXNUb1BERihXZWJGcmFtZVByb3h5KiBmcmFtZSwgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90
IGNvdW50LCBQYXNzUmVmUHRyPERhdGFDYWxsYmFjaz4gcHJwQ2FsbGJhY2spCit2b2lkIFdlYlBh
Z2VQcm94eTo6ZHJhd1BhZ2VzVG9QREYoV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0IFByaW50
SW5mbyYgcHJpbnRJbmZvLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIFBhc3NSZWZQ
dHI8RGF0YUNhbGxiYWNrPiBwcnBDYWxsYmFjaykKIHsKICAgICBSZWZQdHI8RGF0YUNhbGxiYWNr
PiBjYWxsYmFjayA9IHBycENhbGxiYWNrOwogICAgIGlmICghaXNWYWxpZCgpKSB7CkBAIC0zNDU0
LDcgKzM0NTQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZHJhd1BhZ2VzVG9QREYoV2ViRnJhCiAg
ICAgCiAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CiAg
ICAgbV9kYXRhQ2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBjYWxsYmFjay5nZXQoKSk7Ci0gICAg
cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3UGFnZXNUb1BERihmcmFtZS0+
ZnJhbWVJRCgpLCBmaXJzdCwgY291bnQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCwgbV9pc1BlcmZv
cm1pbmdET01QcmludE9wZXJhdGlvbiA/IENvcmVJUEM6OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVu
V2FpdGluZ0ZvclN5bmNSZXBseSA6IDApOworICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RHJhd1BhZ2VzVG9QREYoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBmaXJz
dCwgY291bnQsIGNhbGxiYWNrSUQpLCBtX3BhZ2VJRCwgbV9pc1BlcmZvcm1pbmdET01QcmludE9w
ZXJhdGlvbiA/IENvcmVJUEM6OkRpc3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNS
ZXBseSA6IDApOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgJKHJldmlzaW9uIDEwMzY4OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNTU5LDggKzU1OSw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGVuZFByaW50aW5nKCk7CiAgICAgdm9pZCBjb21wdXRlUGFnZXNGb3JQcmlu
dGluZyhXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgUGFzc1JlZlB0cjxDb21wdXRl
ZFBhZ2VzQ2FsbGJhY2s+KTsKICNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFdJTikKLSAg
ICB2b2lkIGRyYXdSZWN0VG9QREYoV2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmLCBQYXNzUmVmUHRyPERhdGFDYWxsYmFjaz4pOwotICAgIHZvaWQgZHJhd1BhZ2VzVG9QREYo
V2ViRnJhbWVQcm94eSosIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgUGFzc1JlZlB0
cjxEYXRhQ2FsbGJhY2s+KTsKKyAgICB2b2lkIGRyYXdSZWN0VG9QREYoV2ViRnJhbWVQcm94eSos
IGNvbnN0IFByaW50SW5mbyYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBQYXNzUmVmUHRyPERh
dGFDYWxsYmFjaz4pOworICAgIHZvaWQgZHJhd1BhZ2VzVG9QREYoV2ViRnJhbWVQcm94eSosIGNv
bnN0IFByaW50SW5mbyYsIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgUGFzc1JlZlB0
cjxEYXRhQ2FsbGJhY2s+KTsKICNlbmRpZgogCiAgICAgY29uc3QgU3RyaW5nJiBwZW5kaW5nQVBJ
UmVxdWVzdFVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fcGVuZGluZ0FQSVJlcXVlc3RVUkw7IH0KSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCShyZXZpc2lvbiAx
MDM2ODgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjMxLDggKzYzMSw3IEBAIHN0YXRpYyBQcmludEluZm8gcHJpbnRJbmZv
RnJvbVdLUHJpbnRJbmYKIHsKICAgICBQcmludEluZm8gcmVzdWx0OwogICAgIHJlc3VsdC5wYWdl
U2V0dXBTY2FsZUZhY3RvciA9IHByaW50SW5mby5wYWdlU2V0dXBTY2FsZUZhY3RvcjsKLSAgICBy
ZXN1bHQuYXZhaWxhYmxlUGFwZXJXaWR0aCA9IHByaW50SW5mby5hdmFpbGFibGVQYXBlcldpZHRo
OwotICAgIHJlc3VsdC5hdmFpbGFibGVQYXBlckhlaWdodCA9IHByaW50SW5mby5hdmFpbGFibGVQ
YXBlckhlaWdodDsKKyAgICByZXN1bHQuYXZhaWxhYmxlUGFwZXJTaXplID0gRmxvYXRTaXplKHBy
aW50SW5mby5hdmFpbGFibGVQYXBlcldpZHRoLCBwcmludEluZm8uYXZhaWxhYmxlUGFwZXJIZWln
aHQpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTY0Niw5ICs2NDUsOSBAQCB2b2lkIFdL
UGFnZUJlZ2luUHJpbnRpbmcoV0tQYWdlUmVmIHBhZ2UsCiAgICAgdG9JbXBsKHBhZ2UpLT5iZWdp
blByaW50aW5nKHRvSW1wbChmcmFtZSksIHByaW50SW5mb0Zyb21XS1ByaW50SW5mbyhwcmludElu
Zm8pKTsKIH0KIAotdm9pZCBXS1BhZ2VEcmF3UGFnZXNUb1BERihXS1BhZ2VSZWYgcGFnZSwgV0tG
cmFtZVJlZiBmcmFtZSwgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBXS1BhZ2VEcmF3
VG9QREZGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY29udGV4dCkKK3ZvaWQgV0tQYWdlRHJhd1Bh
Z2VzVG9QREYoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLUHJpbnRJbmZvIHBy
aW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBXS1BhZ2VEcmF3VG9QREZG
dW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY29udGV4dCkKIHsKLSAgICB0b0ltcGwocGFnZSktPmRy
YXdQYWdlc1RvUERGKHRvSW1wbChmcmFtZSksIGZpcnN0LCBjb3VudCwgRGF0YUNhbGxiYWNrOjpj
cmVhdGUoY29udGV4dCwgY2FsbGJhY2spKTsKKyAgICB0b0ltcGwocGFnZSktPmRyYXdQYWdlc1Rv
UERGKHRvSW1wbChmcmFtZSksIHByaW50SW5mb0Zyb21XS1ByaW50SW5mbyhwcmludEluZm8pLCBm
aXJzdCwgY291bnQsIERhdGFDYWxsYmFjazo6Y3JlYXRlKGNvbnRleHQsIGNhbGxiYWNrKSk7CiB9
CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZVBy
aXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlUHJpdmF0ZS5oCShyZXZpc2lvbiAxMDM2ODgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tQYWdlUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03OSw4ICs3OSw4IEBA
IHR5cGVkZWYgdm9pZCAoKldLUGFnZUNvbXB1dGVQYWdlc0ZvclByaW4KIFdLX0VYUE9SVCB2b2lk
IFdLUGFnZUNvbXB1dGVQYWdlc0ZvclByaW50aW5nKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVm
IGZyYW1lLCBXS1ByaW50SW5mbywgV0tQYWdlQ29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdGdW5jdGlv
biwgdm9pZCogY29udGV4dCk7CiAKIHR5cGVkZWYgdm9pZCAoKldLUGFnZURyYXdUb1BERkZ1bmN0
aW9uKShXS0RhdGFSZWYgZGF0YSwgV0tFcnJvclJlZiBlcnJvciwgdm9pZCogZnVuY3Rpb25Db250
ZXh0KTsKLVdLX0VYUE9SVCB2b2lkIFdLUGFnZUJlZ2luUHJpbnRpbmcoV0tQYWdlUmVmIHBhZ2Us
IFdLRnJhbWVSZWYgZnJhbWUsIFdLUHJpbnRJbmZvKTsKLVdLX0VYUE9SVCB2b2lkIFdLUGFnZURy
YXdQYWdlc1RvUERGKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCB1aW50MzJfdCBm
aXJzdCwgdWludDMyX3QgY291bnQsIFdLUGFnZURyYXdUb1BERkZ1bmN0aW9uIGNhbGxiYWNrLCB2
b2lkKiBjb250ZXh0KTsKK1dLX0VYUE9SVCB2b2lkIFdLUGFnZUJlZ2luUHJpbnRpbmcoV0tQYWdl
UmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLUHJpbnRJbmZvIHByaW50SW5mbyk7CitXS19F
WFBPUlQgdm9pZCBXS1BhZ2VEcmF3UGFnZXNUb1BERihXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJl
ZiBmcmFtZSwgV0tQcmludEluZm8gcHJpbnRJbmZvLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3Qg
Y291bnQsIFdLUGFnZURyYXdUb1BERkZ1bmN0aW9uIGNhbGxiYWNrLCB2b2lkKiBjb250ZXh0KTsK
IAogLy8gRklYTUUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY2OTc5
OiBSZW1vdmUgdGhpcyBzeW5jIGNhbGwuCiBXS19FWFBPUlQgV0tJbWFnZVJlZiBXS1BhZ2VDcmVh
dGVTbmFwc2hvdE9mVmlzaWJsZUNvbnRlbnQoV0tQYWdlUmVmIHBhZ2UpOwpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tQcmludGluZ1ZpZXcubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tQcmludGluZ1ZpZXcubW0JKHJl
dmlzaW9uIDEwMzY4OCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLUHJp
bnRpbmdWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNTIsOCArMjUyLDkgQEAgLSAodm9pZClf
cHJlcGFyZVBERkRhdGFGb3JQcmludGluZ09uU2VjbwogICAgIEFTU0VSVChmaXJzdFBhZ2UgPD0g
bGFzdFBhZ2UpOwogICAgIExPRyhWaWV3LCAiV0tQcmludGluZ1ZpZXcgcmVxdWVzdGluZyBQREYg
ZGF0YSBmb3IgcGFnZXMgJXUuLi4ldSIsIGZpcnN0UGFnZSwgbGFzdFBhZ2UpOwogCisgICAgUHJp
bnRJbmZvIHByaW50SW5mbyhbX3ByaW50T3BlcmF0aW9uIHByaW50SW5mb10pOwogICAgIC8vIFJl
dHVybiB0byBwcmludGluZyBtb2RlIGlmIHdlJ3JlIGFscmVhZHkgYmFjayB0byBzY3JlZW4gKGUu
Zy4gZHVlIHRvIHdpbmRvdyByZXNpemluZykuCi0gICAgX3dlYkZyYW1lLT5wYWdlKCktPmJlZ2lu
UHJpbnRpbmcoX3dlYkZyYW1lLmdldCgpLCBQcmludEluZm8oW19wcmludE9wZXJhdGlvbiBwcmlu
dEluZm9dKSk7CisgICAgX3dlYkZyYW1lLT5wYWdlKCktPmJlZ2luUHJpbnRpbmcoX3dlYkZyYW1l
LmdldCgpLCBwcmludEluZm8pOwogCiAgICAgSVBDQ2FsbGJhY2tDb250ZXh0KiBjb250ZXh0ID0g
bmV3IElQQ0NhbGxiYWNrQ29udGV4dDsKICAgICBSZWZQdHI8RGF0YUNhbGxiYWNrPiBjYWxsYmFj
ayA9IERhdGFDYWxsYmFjazo6Y3JlYXRlKGNvbnRleHQsIHBhZ2VEaWREcmF3VG9QREYpOwpAQCAt
MjYyLDcgKzI2Myw3IEBAIC0gKHZvaWQpX3ByZXBhcmVQREZEYXRhRm9yUHJpbnRpbmdPblNlY28K
ICAgICBjb250ZXh0LT52aWV3ID0gc2VsZjsKICAgICBjb250ZXh0LT5jYWxsYmFja0lEID0gY2Fs
bGJhY2stPmNhbGxiYWNrSUQoKTsKIAotICAgIF93ZWJGcmFtZS0+cGFnZSgpLT5kcmF3UGFnZXNU
b1BERihfd2ViRnJhbWUuZ2V0KCksIGZpcnN0UGFnZSAtIDEsIGxhc3RQYWdlIC0gZmlyc3RQYWdl
ICsgMSwgY2FsbGJhY2suZ2V0KCkpOworICAgIF93ZWJGcmFtZS0+cGFnZSgpLT5kcmF3UGFnZXNU
b1BERihfd2ViRnJhbWUuZ2V0KCksIHByaW50SW5mbywgZmlyc3RQYWdlIC0gMSwgbGFzdFBhZ2Ug
LSBmaXJzdFBhZ2UgKyAxLCBjYWxsYmFjay5nZXQoKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHBhZ2VE
aWRDb21wdXRlUGFnZVJlY3RzKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgcGFnZVJl
Y3RzLCBkb3VibGUgdG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCBXS0Vycm9yUmVmLCB2b2lk
KiB1bnR5cGVkQ29udGV4dCkKQEAgLTQ1Miw3ICs0NTMsNyBAQCAtICh2b2lkKV9kcmF3UHJldmll
dzooTlNSZWN0KW5zUmVjdAogICAgICAgICAgICAgICAgIGNvbnRleHQtPnZpZXcgPSBzZWxmOwog
ICAgICAgICAgICAgICAgIGNvbnRleHQtPmNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJ
RCgpOwogCi0gICAgICAgICAgICAgICAgX3dlYkZyYW1lLT5wYWdlKCktPmRyYXdSZWN0VG9QREYo
X3dlYkZyYW1lLmdldCgpLCByZWN0LCBjYWxsYmFjay5nZXQoKSk7CisgICAgICAgICAgICAgICAg
X3dlYkZyYW1lLT5wYWdlKCktPmRyYXdSZWN0VG9QREYoX3dlYkZyYW1lLmdldCgpLCBQcmludElu
Zm8oW19wcmludE9wZXJhdGlvbiBwcmludEluZm9dKSwgcmVjdCwgY2FsbGJhY2suZ2V0KCkpOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQkocmV2aXNpb24gMTAz
Njg4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNzE3LDcgKzI3MTcsNyBAQCAtIChXS1BhZ2VSZWYpcGFnZVJlZgogLSAo
Qk9PTCljYW5DaGFuZ2VGcmFtZUxheW91dDooV0tGcmFtZVJlZilmcmFtZVJlZgogewogICAgIC8v
IFBERiBkb2N1bWVudHMgYXJlIGFscmVhZHkgcGFnaW5hdGVkLCBzbyB3ZSBjYW4ndCBjaGFuZ2Ug
dGhlbSB0byBhZGQgaGVhZGVycyBhbmQgZm9vdGVycy4KLSAgICByZXR1cm4gIXRvSW1wbChmcmFt
ZVJlZiktPmlzTWFpbkZyYW1lKCkgfHwgIV9kYXRhLT5fcGRmVmlld0NvbnRyb2xsZXI7CisgICAg
cmV0dXJuICF0b0ltcGwoZnJhbWVSZWYpLT5pc0Rpc3BsYXlpbmdQREZEb2N1bWVudCgpOwogfQog
CiAtIChOU1ByaW50T3BlcmF0aW9uICopcHJpbnRPcGVyYXRpb25XaXRoUHJpbnRJbmZvOihOU1By
aW50SW5mbyAqKXByaW50SW5mbyBmb3JGcmFtZTooV0tGcmFtZVJlZilmcmFtZVJlZgpAQCAtMjcz
MCw2ICsyNzMwLDggQEAgLSAoTlNQcmludE9wZXJhdGlvbiAqKXByaW50T3BlcmF0aW9uV2l0aAog
ICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJldHVybiBfZGF0YS0+X3BkZlZpZXdDb250
cm9sbGVyLT5tYWtlUHJpbnRPcGVyYXRpb24ocHJpbnRJbmZvKTsKICAgICB9IGVsc2UgeworICAg
ICAgICAvLyBGSVhNRTogSWYgdGhlIGZyYW1lIGNhbm5vdCBiZSBwcmludGVkIChlLmcuIGlmIGl0
IGNvbnRhaW5zIGFuIGVuY3J5cHRlZCBQREYgdGhhdCBkaXNhbGxvd3MKKyAgICAgICAgLy8gcHJp
bnRpbmcpLCB0aGlzIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gbmlsLgogICAgICAgICBSZXRhaW5Q
dHI8V0tQcmludGluZ1ZpZXc+IHByaW50aW5nVmlldyhBZG9wdE5TLCBbW1dLUHJpbnRpbmdWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lUHJveHk6dG9JbXBsKGZyYW1lUmVmKSB2aWV3OnNlbGZdKTsK
ICAgICAgICAgLy8gTlNQcmludE9wZXJhdGlvbiB0YWtlcyBvd25lcnNoaXAgb2YgdGhlIHZpZXcu
CiAgICAgICAgIE5TUHJpbnRPcGVyYXRpb24gKnByaW50T3BlcmF0aW9uID0gW05TUHJpbnRPcGVy
YXRpb24gcHJpbnRPcGVyYXRpb25XaXRoVmlldzpwcmludGluZ1ZpZXcuZ2V0KCldOwpJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAkocmV2aXNpb24gMTAz
Njg4KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxUeXBlcy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CisjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
IAogc3RydWN0IE5QT2JqZWN0OwpAQCAtMjE4LDYgKzIxOSwxMCBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBXZWJDb3JlOjpTY3JvbGxiYXIqIGhvcml6b250YWxTY3JvbGxiYXIoKSA9IDA7CiAgICAg
dmlydHVhbCBXZWJDb3JlOjpTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xsYmFyKCkgPSAwOwogCisj
aWYgVVNFKENHKQorICAgIHZpcnR1YWwgUmV0YWluUHRyPENHUERGRG9jdW1lbnRSZWY+IHBkZkRv
Y3VtZW50Rm9yUHJpbnRpbmcoKSBjb25zdCB7IHJldHVybiAwOyB9CisjZW5kaWYKKwogcHJvdGVj
dGVkOgogICAgIFBsdWdpbigpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgJKHJldmlzaW9uIDEwMzY4OCkKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTY4
LDYgKzY4LDEwIEBAIHB1YmxpYzoKICAgICBib29sIHNlbmRDb21wbGV4VGV4dElucHV0KHVpbnQ2
NF90IHBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHRleHRJ
bnB1dCk7CiAjZW5kaWYKIAorI2lmIFVTRShDRykKKyAgICBSZXRhaW5QdHI8Q0dQREZEb2N1bWVu
dFJlZj4gcGRmRG9jdW1lbnRGb3JQcmludGluZygpIGNvbnN0IHsgcmV0dXJuIG1fcGx1Z2luLT5w
ZGZEb2N1bWVudEZvclByaW50aW5nKCk7IH0KKyNlbmRpZgorCiAgICAgLy8gRklYTUU6IFJlbW92
ZSB0aGlzOyBub2JvZHkgc2hvdWxkIGhhdmUgdG8ga25vdyBhYm91dCB0aGUgcGx1Zy1pbiB2aWV3
J3MgcmVuZGVyZXIgZXhjZXB0IHRoZSBwbHVnLWluIHZpZXcgaXRzZWxmLgogICAgIFdlYkNvcmU6
OlJlbmRlckJveE1vZGVsT2JqZWN0KiByZW5kZXJlcigpIGNvbnN0OwogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0J1aWx0SW5QREZWaWV3LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9CdWlsdEluUERGVmll
dy5oCShyZXZpc2lvbiAxMDM2ODgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL0J1aWx0SW5QREZWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMyw2ICsxMTMsOCBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgV2ViQ29yZTo6U2Nyb2xsYmFyKiBob3Jpem9udGFsU2Ny
b2xsYmFyKCk7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpTY3JvbGxiYXIqIHZlcnRpY2FsU2Nyb2xs
YmFyKCk7CiAKKyAgICB2aXJ0dWFsIFJldGFpblB0cjxDR1BERkRvY3VtZW50UmVmPiBwZGZEb2N1
bWVudEZvclByaW50aW5nKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9wZGZEb2N1bWVudDsg
fQorCiAgICAgLy8gU2Nyb2xsYWJsZUFyZWEgbWV0aG9kcy4KICAgICB2aXJ0dWFsIFdlYkNvcmU6
OkludFJlY3Qgc2Nyb2xsQ29ybmVyUmVjdCgpIGNvbnN0OwogICAgIHZpcnR1YWwgV2ViQ29yZTo6
U2Nyb2xsYWJsZUFyZWEqIGVuY2xvc2luZ1Njcm9sbGFibGVBcmVhKCkgY29uc3Q7CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lv
biAxMDM2ODgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDYgKzk1LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL01v
dXNlRXZlbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRG9jdW1l
bnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ByaW50Q29udGV4dC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUmVuZGVyQXJlbmEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlckxheWVyLmg+CkBAIC0x
NDEsNiArMTQyLDcgQEAKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAg
LTI1NjQsNiArMjU2NiwyNCBAQCB2b2lkIFdlYlBhZ2U6OnN0b3BTcGVha2luZygpCiAKICNlbmRp
ZgogCisjaWYgVVNFKENHKQorc3RhdGljIFJldGFpblB0cjxDR1BERkRvY3VtZW50UmVmPiBwZGZE
b2N1bWVudEZvclByaW50aW5nRnJhbWUoRnJhbWUqIGNvcmVGcmFtZSkKK3sKKyAgICBEb2N1bWVu
dCogZG9jdW1lbnQgPSBjb3JlRnJhbWUtPmRvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCkK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoIWRvY3VtZW50LT5pc1BsdWdpbkRvY3VtZW50
KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgUGx1Z2luVmlldyogcGx1Z2luVmlldyA9IHN0
YXRpY19jYXN0PFBsdWdpblZpZXcqPih0b1BsdWdpbkRvY3VtZW50KGRvY3VtZW50KS0+cGx1Z2lu
V2lkZ2V0KCkpOworICAgIGlmICghcGx1Z2luVmlldykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICByZXR1cm4gcGx1Z2luVmlldy0+cGRmRG9jdW1lbnRGb3JQcmludGluZygpOworfQorI2VuZGlm
IC8vIFVTRShDRykKKwogdm9pZCBXZWJQYWdlOjpiZWdpblByaW50aW5nKHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvKQogewogICAgIFdlYkZyYW1lKiBmcmFtZSA9
IFdlYlByb2Nlc3M6OnNoYXJlZCgpLndlYkZyYW1lKGZyYW1lSUQpOwpAQCAtMjU3NCwxMyArMjU5
NCwxOCBAQCB2b2lkIFdlYlBhZ2U6OmJlZ2luUHJpbnRpbmcodWludDY0X3QgZnJhCiAgICAgaWYg
KCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybjsKIAorI2lmIFVTRShDRykKKyAgICBpZiAocGRm
RG9jdW1lbnRGb3JQcmludGluZ0ZyYW1lKGNvcmVGcmFtZSkpCisgICAgICAgIHJldHVybjsKKyNl
bmRpZiAvLyBVU0UoQ0cpCisKICAgICBpZiAoIW1fcHJpbnRDb250ZXh0KQogICAgICAgICBtX3By
aW50Q29udGV4dCA9IGFkb3B0UHRyKG5ldyBQcmludENvbnRleHQoY29yZUZyYW1lKSk7CiAKLSAg
ICBtX3ByaW50Q29udGV4dC0+YmVnaW4ocHJpbnRJbmZvLmF2YWlsYWJsZVBhcGVyV2lkdGgsIHBy
aW50SW5mby5hdmFpbGFibGVQYXBlckhlaWdodCk7CisgICAgbV9wcmludENvbnRleHQtPmJlZ2lu
KHByaW50SW5mby5hdmFpbGFibGVQYXBlclNpemUud2lkdGgoKSwgcHJpbnRJbmZvLmF2YWlsYWJs
ZVBhcGVyU2l6ZS5oZWlnaHQoKSk7CiAKICAgICBmbG9hdCBmdWxsUGFnZUhlaWdodDsKLSAgICBt
X3ByaW50Q29udGV4dC0+Y29tcHV0ZVBhZ2VSZWN0cyhGbG9hdFJlY3QoMCwgMCwgcHJpbnRJbmZv
LmF2YWlsYWJsZVBhcGVyV2lkdGgsIHByaW50SW5mby5hdmFpbGFibGVQYXBlckhlaWdodCksIDAs
IDAsIHByaW50SW5mby5wYWdlU2V0dXBTY2FsZUZhY3RvciwgZnVsbFBhZ2VIZWlnaHQsIHRydWUp
OworICAgIG1fcHJpbnRDb250ZXh0LT5jb21wdXRlUGFnZVJlY3RzKEZsb2F0UmVjdCgwLCAwLCBw
cmludEluZm8uYXZhaWxhYmxlUGFwZXJTaXplLndpZHRoKCksIHByaW50SW5mby5hdmFpbGFibGVQ
YXBlclNpemUuaGVpZ2h0KCkpLCAwLCAwLCBwcmludEluZm8ucGFnZVNldHVwU2NhbGVGYWN0b3Is
IGZ1bGxQYWdlSGVpZ2h0LCB0cnVlKTsKIH0KIAogdm9pZCBXZWJQYWdlOjplbmRQcmludGluZygp
CkBAIC0yNTk3LDggKzI2MjIsMjMgQEAgdm9pZCBXZWJQYWdlOjpjb21wdXRlUGFnZXNGb3JQcmlu
dGluZyh1aQogCiAgICAgaWYgKG1fcHJpbnRDb250ZXh0KSB7CiAgICAgICAgIHJlc3VsdFBhZ2VS
ZWN0cyA9IG1fcHJpbnRDb250ZXh0LT5wYWdlUmVjdHMoKTsKLSAgICAgICAgcmVzdWx0VG90YWxT
Y2FsZUZhY3RvckZvclByaW50aW5nID0gbV9wcmludENvbnRleHQtPmNvbXB1dGVBdXRvbWF0aWNT
Y2FsZUZhY3RvcihGbG9hdFNpemUocHJpbnRJbmZvLmF2YWlsYWJsZVBhcGVyV2lkdGgsIHByaW50
SW5mby5hdmFpbGFibGVQYXBlckhlaWdodCkpICogcHJpbnRJbmZvLnBhZ2VTZXR1cFNjYWxlRmFj
dG9yOworICAgICAgICByZXN1bHRUb3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcgPSBtX3ByaW50
Q29udGV4dC0+Y29tcHV0ZUF1dG9tYXRpY1NjYWxlRmFjdG9yKHByaW50SW5mby5hdmFpbGFibGVQ
YXBlclNpemUpICogcHJpbnRJbmZvLnBhZ2VTZXR1cFNjYWxlRmFjdG9yOworICAgIH0KKyNpZiBV
U0UoQ0cpCisgICAgZWxzZSB7CisgICAgICAgIFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6
OnNoYXJlZCgpLndlYkZyYW1lKGZyYW1lSUQpOworICAgICAgICBGcmFtZSogY29yZUZyYW1lID0g
ZnJhbWUgPyBmcmFtZS0+Y29yZUZyYW1lKCkgOiAwOworICAgICAgICBSZXRhaW5QdHI8Q0dQREZE
b2N1bWVudFJlZj4gcGRmRG9jdW1lbnQgPSBjb3JlRnJhbWUgPyBwZGZEb2N1bWVudEZvclByaW50
aW5nRnJhbWUoY29yZUZyYW1lKSA6IDA7CisgICAgICAgIGlmIChwZGZEb2N1bWVudCAmJiBDR1BE
RkRvY3VtZW50QWxsb3dzUHJpbnRpbmcocGRmRG9jdW1lbnQuZ2V0KCkpKSB7CisgICAgICAgICAg
ICBDRkluZGV4IHBhZ2VDb3VudCA9IENHUERGRG9jdW1lbnRHZXROdW1iZXJPZlBhZ2VzKHBkZkRv
Y3VtZW50LmdldCgpKTsKKyAgICAgICAgICAgIEludFJlY3QgcGFnZVJlY3QoMCwgMCwgY2VpbGYo
cHJpbnRJbmZvLmF2YWlsYWJsZVBhcGVyU2l6ZS53aWR0aCgpKSwgY2VpbGYocHJpbnRJbmZvLmF2
YWlsYWJsZVBhcGVyU2l6ZS5oZWlnaHQoKSkpOworICAgICAgICAgICAgZm9yIChDRkluZGV4IGkg
PSAxOyBpIDw9IHBhZ2VDb3VudDsgKytpKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0UGFnZVJl
Y3RzLmFwcGVuZChwYWdlUmVjdCk7CisgICAgICAgICAgICAgICAgcGFnZVJlY3QubW92ZSgwLCBw
YWdlUmVjdC5oZWlnaHQoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CisjZW5k
aWYgLy8gVVNFKENHKQogCiAgICAgLy8gSWYgd2UncmUgYXNrZWQgdG8gcHJpbnQsIHdlIHNob3Vs
ZCBhY3R1YWxseSBwcmludCBhdCBsZWFzdCBhIGJsYW5rIHBhZ2UuCiAgICAgaWYgKHJlc3VsdFBh
Z2VSZWN0cy5pc0VtcHR5KCkpCkBAIC0yNjA3LDggKzI2NDcsMzkgQEAgdm9pZCBXZWJQYWdlOjpj
b21wdXRlUGFnZXNGb3JQcmludGluZyh1aQogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6Q29tcHV0ZWRQYWdlc0NhbGxiYWNrKHJlc3VsdFBhZ2VSZWN0cywgcmVzdWx0VG90YWxTY2Fs
ZUZhY3RvckZvclByaW50aW5nLCBjYWxsYmFja0lEKSk7CiB9CiAKKyNpZiBVU0UoQ0cpCitzdGF0
aWMgdm9pZCBkcmF3UERGUGFnZShDR1BERkRvY3VtZW50UmVmIHBkZkRvY3VtZW50LCBDRkluZGV4
IHBhZ2VJbmRleCwgQ0dDb250ZXh0UmVmIGNvbnRleHQsIENHRmxvYXQgcGFnZVNldHVwU2NhbGVG
YWN0b3IsIENHU2l6ZSBwYXBlclNpemUpIHsKKyAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNvbnRl
eHQpOworCisgICAgQ0dDb250ZXh0U2NhbGVDVE0oY29udGV4dCwgcGFnZVNldHVwU2NhbGVGYWN0
b3IsIHBhZ2VTZXR1cFNjYWxlRmFjdG9yKTsKKworICAgIENHUERGUGFnZVJlZiBwYWdlID0gQ0dQ
REZEb2N1bWVudEdldFBhZ2UocGRmRG9jdW1lbnQsIHBhZ2VJbmRleCArIDEpOworICAgIENHUmVj
dCBjcm9wQm94ID0gQ0dQREZQYWdlR2V0Qm94UmVjdChwYWdlLCBrQ0dQREZDcm9wQm94KTsKKyAg
ICBjcm9wQm94ID0gQ0dSZWN0SW50ZXJzZWN0aW9uKGNyb3BCb3gsIENHUERGUGFnZUdldEJveFJl
Y3QocGFnZSwga0NHUERGTWVkaWFCb3gpKTsKKworICAgIGJvb2wgc2hvdWxkUm90YXRlID0gKHBh
cGVyU2l6ZS53aWR0aCA8IHBhcGVyU2l6ZS5oZWlnaHQpICE9IChjcm9wQm94LnNpemUud2lkdGgg
PCBjcm9wQm94LnNpemUuaGVpZ2h0KTsKKyAgICBpZiAoc2hvdWxkUm90YXRlKQorICAgICAgICBz
d2FwKGNyb3BCb3guc2l6ZS53aWR0aCwgY3JvcEJveC5zaXplLmhlaWdodCk7CisKKyAgICAvLyBD
ZW50ZXIuCisgICAgQ0dGbG9hdCB3aWR0aERpZmZlcmVuY2UgPSBwYXBlclNpemUud2lkdGggLyBw
YWdlU2V0dXBTY2FsZUZhY3RvciAtIGNyb3BCb3guc2l6ZS53aWR0aDsKKyAgICBDR0Zsb2F0IGhl
aWdodERpZmZlcmVuY2UgPSBwYXBlclNpemUuaGVpZ2h0IC8gcGFnZVNldHVwU2NhbGVGYWN0b3Ig
LSBjcm9wQm94LnNpemUuaGVpZ2h0OworICAgIGlmICh3aWR0aERpZmZlcmVuY2UgfHwgaGVpZ2h0
RGlmZmVyZW5jZSkKKyAgICAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNvbnRleHQsIHdpZHRo
RGlmZmVyZW5jZSAvIDIsIGhlaWdodERpZmZlcmVuY2UgLyAyKTsKKworICAgIGlmIChzaG91bGRS
b3RhdGUpIHsKKyAgICAgICAgQ0dDb250ZXh0Um90YXRlQ1RNKGNvbnRleHQsIE1fUElfMik7Cisg
ICAgICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjb250ZXh0LCAwLCAtY3JvcEJveC5zaXplLndp
ZHRoKTsKKyAgICB9CisKKyAgICBDR0NvbnRleHREcmF3UERGUGFnZShjb250ZXh0LCBwYWdlKTsK
KworICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY29udGV4dCk7Cit9CisjZW5kaWYgLy8gVVNF
KENHKQorCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShXSU4pCi12b2lkIFdlYlBhZ2U6
OmRyYXdSZWN0VG9QREYodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
cmVjdCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6ZHJhd1JlY3RUb1BERih1
aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgcmVjdCwgdWludDY0X3QgY2FsbGJhY2tJRCkKIHsKICAgICBXZWJGcmFtZSog
ZnJhbWUgPSBXZWJQcm9jZXNzOjpzaGFyZWQoKS53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBGcmFt
ZSogY29yZUZyYW1lID0gZnJhbWUgPyBmcmFtZS0+Y29yZUZyYW1lKCkgOiAwOwpAQCAtMjYxNiw3
ICsyNjg3LDExIEBAIHZvaWQgV2ViUGFnZTo6ZHJhd1JlY3RUb1BERih1aW50NjRfdCBmcmEKICAg
ICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4gcGRmUGFnZURhdGEoQWRvcHRDRiwgQ0ZEYXRh
Q3JlYXRlTXV0YWJsZSgwLCAwKSk7CiAKICAgICBpZiAoY29yZUZyYW1lKSB7Ci0gICAgICAgIEFT
U0VSVChjb3JlRnJhbWUtPmRvY3VtZW50KCktPnByaW50aW5nKCkpOworICAgICAgICBBU1NFUlQo
Y29yZUZyYW1lLT5kb2N1bWVudCgpLT5wcmludGluZygpCisjaWYgVVNFKENHKQorICAgICAgICAg
ICAgfHwgcGRmRG9jdW1lbnRGb3JQcmludGluZ0ZyYW1lKGNvcmVGcmFtZSkKKyNlbmRpZgorICAg
ICAgICApOwogCiAjaWYgVVNFKENHKQogICAgICAgICAvLyBGSVhNRTogVXNlIENHRGF0YUNvbnN1
bWVyQ3JlYXRlIHdpdGggY2FsbGJhY2tzIHRvIGF2b2lkIGNvcHlpbmcgdGhlIGRhdGEuCkBAIC0y
NjI3LDIwICsyNzAyLDM5IEBAIHZvaWQgV2ViUGFnZTo6ZHJhd1JlY3RUb1BERih1aW50NjRfdCBm
cmEKICAgICAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gcGFnZUluZm8oQWRvcHRDRiwg
Q0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxs
QmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAgICAgICAgIENHUERG
Q29udGV4dEJlZ2luUGFnZShjb250ZXh0LmdldCgpLCBwYWdlSW5mby5nZXQoKSk7CiAKLSAgICAg
ICAgR3JhcGhpY3NDb250ZXh0IGN0eChjb250ZXh0LmdldCgpKTsKLSAgICAgICAgY3R4LnNjYWxl
KEZsb2F0U2l6ZSgxLCAtMSkpOwotICAgICAgICBjdHgudHJhbnNsYXRlKDAsIC1yZWN0LmhlaWdo
dCgpKTsKLSAgICAgICAgbV9wcmludENvbnRleHQtPnNwb29sUmVjdChjdHgsIHJlY3QpOworICAg
ICAgICBpZiAoUmV0YWluUHRyPENHUERGRG9jdW1lbnRSZWY+IHBkZkRvY3VtZW50ID0gcGRmRG9j
dW1lbnRGb3JQcmludGluZ0ZyYW1lKGNvcmVGcmFtZSkpIHsKKyAgICAgICAgICAgIENGSW5kZXgg
cGFnZUNvdW50ID0gQ0dQREZEb2N1bWVudEdldE51bWJlck9mUGFnZXMocGRmRG9jdW1lbnQuZ2V0
KCkpOworICAgICAgICAgICAgSW50U2l6ZSBwYXBlclNpemUoY2VpbGYocHJpbnRJbmZvLmF2YWls
YWJsZVBhcGVyU2l6ZS53aWR0aCgpKSwgY2VpbGYocHJpbnRJbmZvLmF2YWlsYWJsZVBhcGVyU2l6
ZS5oZWlnaHQoKSkpOworICAgICAgICAgICAgSW50UmVjdCBwYWdlUmVjdChJbnRQb2ludCgpLCBw
YXBlclNpemUpOworICAgICAgICAgICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwgcGFnZUNvdW50
OyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAocGFnZVJlY3QuaW50ZXJzZWN0cyhyZWN0KSkg
eworICAgICAgICAgICAgICAgICAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNvbnRleHQuZ2V0KCkp
OworCisgICAgICAgICAgICAgICAgICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjb250ZXh0Lmdl
dCgpLCBwYWdlUmVjdC54KCkgLSByZWN0LngoKSwgcGFnZVJlY3QueSgpIC0gcmVjdC55KCkpOwor
ICAgICAgICAgICAgICAgICAgICBkcmF3UERGUGFnZShwZGZEb2N1bWVudC5nZXQoKSwgaSwgY29u
dGV4dC5nZXQoKSwgcHJpbnRJbmZvLnBhZ2VTZXR1cFNjYWxlRmFjdG9yLCBwYXBlclNpemUpOwor
CisgICAgICAgICAgICAgICAgICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY29udGV4dC5nZXQo
KSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHBhZ2VSZWN0Lm1vdmUoMCwg
cGFnZVJlY3QuaGVpZ2h0KCkpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgR3JhcGhpY3NDb250ZXh0IGN0eChjb250ZXh0LmdldCgpKTsKKyAgICAgICAgICAg
IGN0eC5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKKyAgICAgICAgICAgIGN0eC50cmFuc2xhdGUo
MCwgLXJlY3QuaGVpZ2h0KCkpOworICAgICAgICAgICAgbV9wcmludENvbnRleHQtPnNwb29sUmVj
dChjdHgsIHJlY3QpOworICAgICAgICB9CiAKICAgICAgICAgQ0dQREZDb250ZXh0RW5kUGFnZShj
b250ZXh0LmdldCgpKTsKICAgICAgICAgQ0dQREZDb250ZXh0Q2xvc2UoY29udGV4dC5nZXQoKSk7
CisjZWxzZQorICAgICAgICBVTlVTRURfUEFSQU0ocHJpbnRJbmZvKTsKICNlbmRpZgogICAgIH0K
IAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGF0YUNhbGxiYWNrKENvcmVJUEM6
OkRhdGFSZWZlcmVuY2UoQ0ZEYXRhR2V0Qnl0ZVB0cihwZGZQYWdlRGF0YS5nZXQoKSksIENGRGF0
YUdldExlbmd0aChwZGZQYWdlRGF0YS5nZXQoKSkpLCBjYWxsYmFja0lEKSk7CiB9CiAKLXZvaWQg
V2ViUGFnZTo6ZHJhd1BhZ2VzVG9QREYodWludDY0X3QgZnJhbWVJRCwgdWludDMyX3QgZmlyc3Qs
IHVpbnQzMl90IGNvdW50LCB1aW50NjRfdCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpkcmF3
UGFnZXNUb1BERih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywg
dWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCB1aW50NjRfdCBjYWxsYmFja0lEKQogewog
ICAgIFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNoYXJlZCgpLndlYkZyYW1lKGZyYW1l
SUQpOwogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBmcmFtZSA/IGZyYW1lLT5jb3JlRnJhbWUoKSA6
IDA7CkBAIC0yNjQ4LDI1ICsyNzQyLDM3IEBAIHZvaWQgV2ViUGFnZTo6ZHJhd1BhZ2VzVG9QREYo
dWludDY0X3QgZnIKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4gcGRmUGFnZURhdGEo
QWRvcHRDRiwgQ0ZEYXRhQ3JlYXRlTXV0YWJsZSgwLCAwKSk7CiAKICAgICBpZiAoY29yZUZyYW1l
KSB7Ci0gICAgICAgIEFTU0VSVChjb3JlRnJhbWUtPmRvY3VtZW50KCktPnByaW50aW5nKCkpOwog
CisgICAgICAgIEFTU0VSVChjb3JlRnJhbWUtPmRvY3VtZW50KCktPnByaW50aW5nKCkKICNpZiBV
U0UoQ0cpCisgICAgICAgICAgICB8fCBwZGZEb2N1bWVudEZvclByaW50aW5nRnJhbWUoY29yZUZy
YW1lKQorI2VuZGlmCisgICAgICAgICk7CisKKyNpZiBVU0UoQ0cpCisgICAgICAgIFJldGFpblB0
cjxDR1BERkRvY3VtZW50UmVmPiBwZGZEb2N1bWVudCA9IHBkZkRvY3VtZW50Rm9yUHJpbnRpbmdG
cmFtZShjb3JlRnJhbWUpOworCiAgICAgICAgIC8vIEZJWE1FOiBVc2UgQ0dEYXRhQ29uc3VtZXJD
cmVhdGUgd2l0aCBjYWxsYmFja3MgdG8gYXZvaWQgY29weWluZyB0aGUgZGF0YS4KICAgICAgICAg
UmV0YWluUHRyPENHRGF0YUNvbnN1bWVyUmVmPiBwZGZEYXRhQ29uc3VtZXIoQWRvcHRDRiwgQ0dE
YXRhQ29uc3VtZXJDcmVhdGVXaXRoQ0ZEYXRhKHBkZlBhZ2VEYXRhLmdldCgpKSk7CiAKLSAgICAg
ICAgQ0dSZWN0IG1lZGlhQm94ID0gbV9wcmludENvbnRleHQtPnBhZ2VDb3VudCgpID8gbV9wcmlu
dENvbnRleHQtPnBhZ2VSZWN0KDApIDogQ0dSZWN0TWFrZSgwLCAwLCAxLCAxKTsKKyAgICAgICAg
Q0dSZWN0IG1lZGlhQm94ID0gbV9wcmludENvbnRleHQgJiYgbV9wcmludENvbnRleHQtPnBhZ2VD
b3VudCgpID8gbV9wcmludENvbnRleHQtPnBhZ2VSZWN0KDApIDogQ0dSZWN0TWFrZSgwLCAwLCBw
cmludEluZm8uYXZhaWxhYmxlUGFwZXJTaXplLndpZHRoKCksIHByaW50SW5mby5hdmFpbGFibGVQ
YXBlclNpemUuaGVpZ2h0KCkpOwogICAgICAgICBSZXRhaW5QdHI8Q0dDb250ZXh0UmVmPiBjb250
ZXh0KEFkb3B0Q0YsIENHUERGQ29udGV4dENyZWF0ZShwZGZEYXRhQ29uc3VtZXIuZ2V0KCksICZt
ZWRpYUJveCwgMCkpOworICAgICAgICBzaXplX3QgcGFnZUNvdW50ID0gbV9wcmludENvbnRleHQg
PyBtX3ByaW50Q29udGV4dC0+cGFnZUNvdW50KCkgOiBDR1BERkRvY3VtZW50R2V0TnVtYmVyT2ZQ
YWdlcyhwZGZEb2N1bWVudC5nZXQoKSk7CiAgICAgICAgIGZvciAodWludDMyX3QgcGFnZSA9IGZp
cnN0OyBwYWdlIDwgZmlyc3QgKyBjb3VudDsgKytwYWdlKSB7Ci0gICAgICAgICAgICBpZiAocGFn
ZSA+PSBtX3ByaW50Q29udGV4dC0+cGFnZUNvdW50KCkpCisgICAgICAgICAgICBpZiAocGFnZSA+
PSBwYWdlQ291bnQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIFJldGFp
blB0cjxDRkRpY3Rpb25hcnlSZWY+IHBhZ2VJbmZvKEFkb3B0Q0YsIENGRGljdGlvbmFyeUNyZWF0
ZU11dGFibGUoMCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURp
Y3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogICAgICAgICAgICAgQ0dQREZDb250ZXh0QmVnaW5Q
YWdlKGNvbnRleHQuZ2V0KCksIHBhZ2VJbmZvLmdldCgpKTsKIAotICAgICAgICAgICAgR3JhcGhp
Y3NDb250ZXh0IGN0eChjb250ZXh0LmdldCgpKTsKLSAgICAgICAgICAgIGN0eC5zY2FsZShGbG9h
dFNpemUoMSwgLTEpKTsKLSAgICAgICAgICAgIGN0eC50cmFuc2xhdGUoMCwgLW1fcHJpbnRDb250
ZXh0LT5wYWdlUmVjdChwYWdlKS5oZWlnaHQoKSk7Ci0gICAgICAgICAgICBtX3ByaW50Q29udGV4
dC0+c3Bvb2xQYWdlKGN0eCwgcGFnZSwgbV9wcmludENvbnRleHQtPnBhZ2VSZWN0KHBhZ2UpLndp
ZHRoKCkpOworICAgICAgICAgICAgaWYgKHBkZkRvY3VtZW50KQorICAgICAgICAgICAgICAgIGRy
YXdQREZQYWdlKHBkZkRvY3VtZW50LmdldCgpLCBwYWdlLCBjb250ZXh0LmdldCgpLCBwcmludElu
Zm8ucGFnZVNldHVwU2NhbGVGYWN0b3IsIENHU2l6ZU1ha2UocHJpbnRJbmZvLmF2YWlsYWJsZVBh
cGVyU2l6ZS53aWR0aCgpLCBwcmludEluZm8uYXZhaWxhYmxlUGFwZXJTaXplLmhlaWdodCgpKSk7
CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBHcmFwaGljc0NvbnRleHQgY3R4
KGNvbnRleHQuZ2V0KCkpOworICAgICAgICAgICAgICAgIGN0eC5zY2FsZShGbG9hdFNpemUoMSwg
LTEpKTsKKyAgICAgICAgICAgICAgICBjdHgudHJhbnNsYXRlKDAsIC1tX3ByaW50Q29udGV4dC0+
cGFnZVJlY3QocGFnZSkuaGVpZ2h0KCkpOworICAgICAgICAgICAgICAgIG1fcHJpbnRDb250ZXh0
LT5zcG9vbFBhZ2UoY3R4LCBwYWdlLCBtX3ByaW50Q29udGV4dC0+cGFnZVJlY3QocGFnZSkud2lk
dGgoKSk7CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIENHUERGQ29udGV4dEVuZFBhZ2Uo
Y29udGV4dC5nZXQoKSk7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMTAzNjg4KQorKysgU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDI4LDgg
KzQyOCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuZFByaW50aW5nKCk7CiAgICAgdm9pZCBjb21w
dXRlUGFnZXNGb3JQcmludGluZyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mLCB1
aW50NjRfdCBjYWxsYmFja0lEKTsKICNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFdJTikK
LSAgICB2b2lkIGRyYXdSZWN0VG9QREYodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwotICAgIHZvaWQgZHJhd1BhZ2VzVG9QREYo
dWludDY0X3QgZnJhbWVJRCwgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCB1aW50NjRf
dCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGRyYXdSZWN0VG9QREYodWludDY0X3QgZnJhbWVJRCwg
Y29uc3QgUHJpbnRJbmZvJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIHVpbnQ2NF90IGNhbGxi
YWNrSUQpOworICAgIHZvaWQgZHJhd1BhZ2VzVG9QREYodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
UHJpbnRJbmZvJiwgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCB1aW50NjRfdCBjYWxs
YmFja0lEKTsKICNlbmRpZgogCiAgICAgYm9vbCBtYWluRnJhbWVIYXNDdXN0b21SZXByZXNlbnRh
dGlvbigpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDEwMzY4OCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3JraW5n
IGNvcHkpCkBAIC0xNzksOCArMTc5LDggQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSB7CiAgICAgRW5k
UHJpbnRpbmcoKTsKICAgICBDb21wdXRlUGFnZXNGb3JQcmludGluZyh1aW50NjRfdCBmcmFtZUlE
LCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAjaWYg
UExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShXSU4pCi0gICAgRHJhd1JlY3RUb1BERih1aW50NjRf
dCBmcmFtZUlELCBXZWJDb3JlOjpJbnRSZWN0IHJlY3QsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0g
ICAgRHJhd1BhZ2VzVG9QREYodWludDY0X3QgZnJhbWVJRCwgdWludDMyX3QgZmlyc3QsIHVpbnQz
Ml90IGNvdW50LCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIERyYXdSZWN0VG9QREYodWludDY0
X3QgZnJhbWVJRCwgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCBXZWJDb3JlOjpJbnRSZWN0
IHJlY3QsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgRHJhd1BhZ2VzVG9QREYodWludDY0X3Qg
ZnJhbWVJRCwgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCB1aW50MzJfdCBmaXJzdCwgdWlu
dDMyX3QgY291bnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAjZW5kaWYKIAogICAgIFNldE1lbW9y
eUNhY2hlTWVzc2FnZXNFbmFibGVkKGJvb2wgbWVtb3J5Q2FjaGVNZXNzYWdlc0VuYWJsZWQpCg==
</data>
<flag name="review"
          id="120853"
          type_id="1"
          status="-"
          setter="mitz"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120764</attachid>
            <date>2011-12-29 12:22:27 -0800</date>
            <delta_ts>2011-12-31 11:18:13 -0800</delta_ts>
            <desc>Proposed fix</desc>
            <filename>75232_r2.diff</filename>
            <type>text/plain</type>
            <size>31381</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMzgwNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDExLTEyLTI5ICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViQ29yZSBjaGFuZ2VzIGZvciA8
cmRhcjovL3Byb2JsZW0vODc1MDM1Nj4gUkVHUkVTU0lPTiAoV2ViS2l0Mik6IFByaW50aW5nIGEg
c3ViZnJhbWUgY29udGFpbmluZyBhIFBERiBwcmludHMgdGhlIG9uLXNjcmVlbiB2aWV3IGluc3Rl
YWQgb2YgdGhlIGVudGlyZSBQREYgZG9jdW1lbnQKKyAgICAgICAgPGh0dHA6Ly93ZWJraXQub3Jn
L2IvNzUyMzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBXZWJDb3JlLmV4cC5pbjogRXhwb3J0ZWQgUGx1Z2luRG9jdW1lbnQ6OnBsdWdpbldpZGdl
dCgpLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogUHJvbW90
ZWQgUGx1Z2luRG9jdW1lbnQuaCB0byBwcml2YXRlLgorICAgICAgICAqIGh0bWwvUGx1Z2luRG9j
dW1lbnQuaDogRml4ZWQgYSB0eXBvIGluIGEgY29tbWVudC4KKwogMjAxMS0xMi0yOSAgUGF2ZWwg
UG9kaXZpbG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVj
dG9yOiBzdXBwb3J0IHNvdXJjZU1hcHBpbmdVUkwgbWFnaWMgY29tbWVudC4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCShyZXZpc2lvbiAxMDM4MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMzU2LDYgKzM1Niw3IEBAIF9fWk43V2ViQ29yZTE0
RnJhbWVTZWxlY3Rpb241Y2xlYXJFdgogX19aTjdXZWJDb3JlMTRGcmFtZVNlbGVjdGlvbjZtb2Rp
ZnlFTlMwXzExRUFsdGVyYXRpb25FTlNfMThTZWxlY3Rpb25EaXJlY3Rpb25FTlNfMTVUZXh0R3Jh
bnVsYXJpdHlFTlNfMTRFVXNlclRyaWdnZXJlZEUKIF9fWk43V2ViQ29yZTE0RnJhbWVTZWxlY3Rp
b245c2VsZWN0QWxsRXYKIF9fWk43V2ViQ29yZTE0RnJhbWVTZWxlY3Rpb25DMUVQTlNfNUZyYW1l
RQorX19aTjdXZWJDb3JlMTRQbHVnaW5Eb2N1bWVudDEycGx1Z2luV2lkZ2V0RXYKIF9fWk43V2Vi
Q29yZTE0UmVzb3VyY2VIYW5kbGUyMGZvcmNlQ29udGVudFNuaWZmaW5nRXYKIF9fWk43V2ViQ29y
ZTE0UmVzb3VyY2VIYW5kbGUyNnN5bmNocm9ub3VzTG9hZFJ1bkxvb3BNb2RlRXYKIF9fWk43V2Vi
Q29yZTE0UmVzb3VyY2VIYW5kbGUzNWNyZWF0ZVByaXZhdGVCcm93c2luZ1N0b3JhZ2VTZXNzaW9u
RVBLMTBfX0NGU3RyaW5nCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMDM4MDYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTMy
NjQsNyArMzI2NCw3IEBACiAJCTk3MjA1QUI3MTIzOTI5MTAwMEIxNzM4MCAvKiBNZWRpYURvY3Vt
ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3
MjA1QUIzMTIzOTI5MTAwMEIxNzM4MCAvKiBNZWRpYURvY3VtZW50LmNwcCAqLzsgfTsKIAkJOTcy
MDVBQjgxMjM5MjkxMDAwQjE3MzgwIC8qIE1lZGlhRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MjA1QUI0MTIzOTI5MTAwMEIxNzM4MCAv
KiBNZWRpYURvY3VtZW50LmggKi87IH07CiAJCTk3MjA1QUJCMTIzOTI5MjcwMEIxNzM4MCAvKiBQ
bHVnaW5Eb2N1bWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5NzIwNUFCOTEyMzkyOTI3MDBCMTczODAgLyogUGx1Z2luRG9jdW1lbnQuY3BwICov
OyB9OwotCQk5NzIwNUFCQzEyMzkyOTI3MDBCMTczODAgLyogUGx1Z2luRG9jdW1lbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MjA1QUJBMTIzOTI5
MjcwMEIxNzM4MCAvKiBQbHVnaW5Eb2N1bWVudC5oICovOyB9OworCQk5NzIwNUFCQzEyMzkyOTI3
MDBCMTczODAgLyogUGx1Z2luRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk3MjA1QUJBMTIzOTI5MjcwMEIxNzM4MCAvKiBQbHVnaW5Eb2N1
bWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTk3MjhDMzEzMTI2OEU0MzkwMDQxRTg5QiAvKiBNYXJrdXBBY2N1bXVsYXRvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzI4QzMxMTEyNjhFNDM5
MDA0MUU4OUIgLyogTWFya3VwQWNjdW11bGF0b3IuY3BwICovOyB9OwogCQk5NzI4QzMxNDEyNjhF
NDM5MDA0MUU4OUIgLyogTWFya3VwQWNjdW11bGF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MjhDMzEyMTI2OEU0MzkwMDQxRTg5QiAvKiBNYXJr
dXBBY2N1bXVsYXRvci5oICovOyB9OwogCQk5NzM4ODlBMDExNkVBOURDMDBBREYzMTMgLyogRG9j
dW1lbnRXcml0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTczODg5OUUxMTZFQTlEQzAwQURGMzEzIC8qIERvY3VtZW50V3JpdGVyLmNwcCAqLzsg
fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL1BsdWdpbkRvY3VtZW50LmgJKHJldmlzaW9uIDEwMzgw
NikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvUGx1Z2luRG9jdW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDgsIDIwMDlB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIw
MDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDM4MTMpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1NiBAQAorMjAx
MS0xMi0yOSAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgorCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS84NzUwMzU2PiBSRUdSRVNTSU9OIChXZWJLaXQyKTogUHJpbnRpbmcgYSBzdWJm
cmFtZSBjb250YWluaW5nIGEgUERGIHByaW50cyB0aGUgb24tc2NyZWVuIHZpZXcgaW5zdGVhZCBv
ZiB0aGUgZW50aXJlIFBERiBkb2N1bWVudAorICAgICAgICA8aHR0cDovL3dlYmtpdC5vcmcvYi83
NTIzMj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlRHJhd1BhZ2VzVG9Q
REYpOiBBZGRlZCBXS1ByaW50SW5mbyBwYXJhbWV0ZXIsIHdoaWNoIGlzIHBhc3NlZCB0aHJvdWdo
IGFzIGEgUHJpbnRJbmZvCisgICAgICAgIHRvIHRoZSBXZWJQYWdlUHJveHkuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L21hYy9XS1ByaW50aW5nVmlldy5tbToKKyAgICAgICAgKC1bV0tQcmludGluZ1ZpZXcgX3ByZXBh
cmVQREZEYXRhRm9yUHJpbnRpbmdPblNlY29uZGFyeVRocmVhZF0pOiBDaGFuZ2VkIHRvIHBhc3Mg
dGhlIFByaW50SW5mbworICAgICAgICBkb3duIHRvIFdlYlBhZ2VQcm94eTo6ZHJhd1BhZ2VzVG9Q
REYuCisgICAgICAgICgtW1dLUHJpbnRpbmdWaWV3IF9kcmF3UHJldmlldzpdKTogQ2hhbmdlZCB0
byBwYXNzIHRoZSBQcmludEluZm8gZG93biB0bworICAgICAgICBXZWJQYWdlUHJveHk6OmRyYXdS
ZWN0VG9QREYuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tOgorICAgICAg
ICAoLVtXS1ZpZXcgY2FuQ2hhbmdlRnJhbWVMYXlvdXQ6XSk6IENoYW5nZWQgdG8gdXNlIFdlYkZy
YW1lUHJveHk6OmlzRGlzcGxheWluZ1BERkRvY3VtZW50LCB3aGljaAorICAgICAgICB3b3JrcyBm
b3Igc3ViZnJhbWVzIGFzIHdlbGwuCisgICAgICAgICgtW1dLVmlldyBwcmludE9wZXJhdGlvbldp
dGhQcmludEluZm86Zm9yRnJhbWU6XSk6IEFkZGVkIGEgRklYTUUuCisgICAgICAgICogVUlQcm9j
ZXNzL1dlYkZyYW1lUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVByb3h5Ojpp
c0Rpc3BsYXlpbmdQREZEb2N1bWVudCk6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJG
cmFtZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZHJhd1JlY3RUb1BERik6IEFkZGVkIGEgUHJpbnRJ
bmZvIHBhcmFtZXRlciwgd2hpY2ggaXMgcGFzc2VkIHRocm91Z2ggdG8KKyAgICAgICAgdGhlIFdl
YiBwcm9jZXNzLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRyYXdQYWdlc1RvUERG
KTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcuaDoKKyAgICAgICAgQWRkZWQg
YW4gb3ZlcnJpZGUgb2YgcGRmRG9jdW1lbnRGb3JQcmludGluZygpIHdoaWNoIHJldHVybnMgdGhl
IFBERkRvY3VtZW50LgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaDoKKyAg
ICAgICAgKFdlYktpdDo6UGx1Z2luOjpwZGZEb2N1bWVudEZvclByaW50aW5nKTogQWRkZWQuIFRo
aXMgYmFzZSBjbGFzcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIDAuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6
cGRmRG9jdW1lbnRGb3JQcmludGluZyk6IEFkZGVkLiBDYWxscyB0aHJvdWdoIHRvIHRoZSBQbHVn
aW4uCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAo
V2ViS2l0OjpwZGZEb2N1bWVudEZvclByaW50aW5nRnJhbWUpOiBBZGRlZCB0aGlzIGhlbHBlciBm
dW5jdGlvbi4gSWYgdGhlIGZyYW1lIGlzIGRpc3BsYXlpbmcKKyAgICAgICAgYSBwbHVnLWluIGRv
Y3VtZW50LCBhbGxvd3MgdGhlIHBsdWctaW4gdG8gcHJvdmlkZSBhIFBERiBkb2N1bWVudCBmb3Ig
cHJpbnRpbmcuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmJlZ2luUHJpbnRpbmcpOiBBZGRl
ZCBhbiBlYXJseSByZXR1cm4gaWYgdGhlIGZyYW1lIHByb3ZpZGVzIGEgUERGIGRvY3VtZW50Cisg
ICAgICAgIGZvciBwcmludGluZy4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y29tcHV0ZVBh
Z2VzRm9yUHJpbnRpbmcpOiBJZiB0aGUgZnJhbWUgcHJvdmlkZXMgYSBQREYgZG9jdW1lbnQgZm9y
IHByaW50aW5nLAorICAgICAgICBjcmVhdGUgZm9yIGVhY2ggcGFnZSBpbiB0aGUgUERGIGRvY3Vt
ZW50IGEgcGFnZSByZWN0IHdpdGggdGhlIHNpemUgYXZhaWxhYmxlIGZvciBwcmludGluZy4KKyAg
ICAgICAgKFdlYktpdDo6ZHJhd1BERlBhZ2UpOiBBZGRlZCB0aGlzIGhlbHBlciBmdW5jdGlvbiwg
d2hpY2ggZHJhd3MgYSBwYWdlIGZyb20gdGhlIFBERiBkb2N1bWVudAorICAgICAgICBpbnRvIG9u
ZSBvZiB0aGUgYWZvcmVtZW50aW9uZWQgcGFnZSByZWN0cy4gSXQgcm90YXRlcyB0aGUgUERGIHBh
Z2UgOTAgZGVncmVlcyBpZiBuZWNlc3NhcnkgdG8KKyAgICAgICAgYmV0dGVyIG1hdGNoIHRoZSBh
c3BlY3QgcmF0aW8gb2YgdGhlIHBhcGVyLCB0aGVuIGl0IGNlbnRlcnMgaXQgb24gdGhlIHBhcGVy
LiBUaGlzIG1hdGNoZXMgdGhlCisgICAgICAgIGJlaGF2aW9yIG9mIGEgUERGVmlldyB3aGVuIHBy
aW50ZWQgd2l0aCBkZWZhdWx0IHNldHRpbmdzLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpk
cmF3UmVjdFRvUERGKTogSWYgdGhlIGZyYW1lIHByb3ZpZGVzIGEgUERGIGRvY3VtZW50IGZvciBw
cmludGluZywgZHJhdyB0aGUKKyAgICAgICAgUERGIHBhZ2VzIGZhbGxpbmcgd2l0aGluIHRoZSBy
ZXF1ZXN0ZWQgcmVjdC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZHJhd1BhZ2VzVG9QREYp
OiBJZiB0aGUgZnJhbWUgcHJvdmlkZXMgYSBQREYgZG9jdW1lbnQgZm9yIHByaW50aW5nLCBkcmF3
CisgICAgICAgIHRoZSByZXF1ZXN0ZWQgcGFnZXMuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbjogQWRkZWQgYSBQcmludEluZm8gcGFyYW1ldGVyIHRvIERyYXdSZWN0VG9QREYgYW5k
CisgICAgICAgIERyYXdQYWdlc1RvUERGLgorCiAyMDExLTEyLTI5ICBDYWlvIE1hcmNlbG8gZGUg
T2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+CiAKICAgICAgICAg
W1F0XSBSZW1vdmUgdW51c2VkIG1fc2lnbmFsTGlzdGVuZXJzIGZyb20gV29ya1F1ZXVlCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCShyZXZpc2lvbiAx
MDM4MDYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTEyOSw2ICsxMjksMTQgQEAgYm9vbCBXZWJGcmFtZVByb3h5Ojppc0Rpc3Bs
YXlpbmdNYXJrdXBEbwogICAgIHJldHVybiBtX01JTUVUeXBlID09ICJ0ZXh0L2h0bWwiIHx8IG1f
TUlNRVR5cGUgPT0gImltYWdlL3N2Zyt4bWwiIHx8IERPTUltcGxlbWVudGF0aW9uOjppc1hNTE1J
TUVUeXBlKG1fTUlNRVR5cGUpOwogfQogCitib29sIFdlYkZyYW1lUHJveHk6OmlzRGlzcGxheWlu
Z1BERkRvY3VtZW50KCkgY29uc3QKK3sKKyAgICBpZiAobV9NSU1FVHlwZS5pc0VtcHR5KCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBXZWJDb250ZXh0OjpwZGZBbmRQb3N0
U2NyaXB0TUlNRVR5cGVzKCkuY29udGFpbnMobV9NSU1FVHlwZSk7Cit9CisKIHZvaWQgV2ViRnJh
bWVQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWQoY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAg
ICAgQVNTRVJUKG1fbG9hZFN0YXRlID09IExvYWRTdGF0ZUZpbmlzaGVkKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaAkocmV2aXNpb24gMTAzODA2KQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuaAkod29ya2luZyBjb3B5KQpA
QCAtMTA2LDYgKzEwNiw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNEaXNwbGF5aW5nU3RhbmRh
bG9uZUltYWdlRG9jdW1lbnQoKSBjb25zdDsKICAgICBib29sIGlzRGlzcGxheWluZ01hcmt1cERv
Y3VtZW50KCkgY29uc3Q7CisgICAgYm9vbCBpc0Rpc3BsYXlpbmdQREZEb2N1bWVudCgpIGNvbnN0
OwogCiAgICAgdm9pZCBnZXRXZWJBcmNoaXZlKFBhc3NSZWZQdHI8RGF0YUNhbGxiYWNrPik7CiAg
ICAgdm9pZCBnZXRNYWluUmVzb3VyY2VEYXRhKFBhc3NSZWZQdHI8RGF0YUNhbGxiYWNrPik7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24g
MTAzODA2KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM0MzEsNyArMzQzMSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpjb21w
dXRlUGFnZXNGb3JQcmludGkKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oV0lO
KQotdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdSZWN0VG9QREYoV2ViRnJhbWVQcm94eSogZnJhbWUs
IGNvbnN0IEludFJlY3QmIHJlY3QsIFBhc3NSZWZQdHI8RGF0YUNhbGxiYWNrPiBwcnBDYWxsYmFj
aykKK3ZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UmVjdFRvUERGKFdlYkZyYW1lUHJveHkqIGZyYW1l
LCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgY29uc3QgSW50UmVjdCYgcmVjdCwgUGFzc1Jl
ZlB0cjxEYXRhQ2FsbGJhY2s+IHBycENhbGxiYWNrKQogewogICAgIFJlZlB0cjxEYXRhQ2FsbGJh
Y2s+IGNhbGxiYWNrID0gcHJwQ2FsbGJhY2s7CiAgICAgaWYgKCFpc1ZhbGlkKCkpIHsKQEAgLTM0
NDEsMTAgKzM0NDEsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdSZWN0VG9QREYoV2ViRnJh
bQogICAgIAogICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgp
OwogICAgIG1fZGF0YUNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgY2FsbGJhY2suZ2V0KCkpOwot
ICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RHJhd1JlY3RUb1BERihmcmFt
ZS0+ZnJhbWVJRCgpLCByZWN0LCBjYWxsYmFja0lEKSwgbV9wYWdlSUQsIG1faXNQZXJmb3JtaW5n
RE9NUHJpbnRPcGVyYXRpb24gPyBDb3JlSVBDOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRp
bmdGb3JTeW5jUmVwbHkgOiAwKTsKKyAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkRyYXdSZWN0VG9QREYoZnJhbWUtPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCByZWN0LCBjYWxs
YmFja0lEKSwgbV9wYWdlSUQsIG1faXNQZXJmb3JtaW5nRE9NUHJpbnRPcGVyYXRpb24gPyBDb3Jl
SVBDOjpEaXNwYXRjaE1lc3NhZ2VFdmVuV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkgOiAwKTsKIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OmRyYXdQYWdlc1RvUERGKFdlYkZyYW1lUHJveHkqIGZyYW1l
LCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIFBhc3NSZWZQdHI8RGF0YUNhbGxiYWNr
PiBwcnBDYWxsYmFjaykKK3ZvaWQgV2ViUGFnZVByb3h5OjpkcmF3UGFnZXNUb1BERihXZWJGcmFt
ZVByb3h5KiBmcmFtZSwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0
LCB1aW50MzJfdCBjb3VudCwgUGFzc1JlZlB0cjxEYXRhQ2FsbGJhY2s+IHBycENhbGxiYWNrKQog
ewogICAgIFJlZlB0cjxEYXRhQ2FsbGJhY2s+IGNhbGxiYWNrID0gcHJwQ2FsbGJhY2s7CiAgICAg
aWYgKCFpc1ZhbGlkKCkpIHsKQEAgLTM0NTQsNyArMzQ1NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpkcmF3UGFnZXNUb1BERihXZWJGcmEKICAgICAKICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0g
Y2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKICAgICBtX2RhdGFDYWxsYmFja3Muc2V0KGNhbGxiYWNr
SUQsIGNhbGxiYWNrLmdldCgpKTsKLSAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OkRyYXdQYWdlc1RvUERGKGZyYW1lLT5mcmFtZUlEKCksIGZpcnN0LCBjb3VudCwgY2FsbGJh
Y2tJRCksIG1fcGFnZUlELCBtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uID8gQ29yZUlQ
Qzo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5IDogMCk7CisgICAg
cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEcmF3UGFnZXNUb1BERihmcmFtZS0+
ZnJhbWVJRCgpLCBwcmludEluZm8sIGZpcnN0LCBjb3VudCwgY2FsbGJhY2tJRCksIG1fcGFnZUlE
LCBtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uID8gQ29yZUlQQzo6RGlzcGF0Y2hNZXNz
YWdlRXZlbldoZW5XYWl0aW5nRm9yU3luY1JlcGx5IDogMCk7CiB9CiAjZW5kaWYKIApJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMTAzODA2KQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkp
CkBAIC01NTksOCArNTU5LDggQEAgcHVibGljOgogICAgIHZvaWQgZW5kUHJpbnRpbmcoKTsKICAg
ICB2b2lkIGNvbXB1dGVQYWdlc0ZvclByaW50aW5nKFdlYkZyYW1lUHJveHkqLCBjb25zdCBQcmlu
dEluZm8mLCBQYXNzUmVmUHRyPENvbXB1dGVkUGFnZXNDYWxsYmFjaz4pOwogI2lmIFBMQVRGT1JN
KE1BQykgfHwgUExBVEZPUk0oV0lOKQotICAgIHZvaWQgZHJhd1JlY3RUb1BERihXZWJGcmFtZVBy
b3h5KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIFBhc3NSZWZQdHI8RGF0YUNhbGxiYWNrPik7
Ci0gICAgdm9pZCBkcmF3UGFnZXNUb1BERihXZWJGcmFtZVByb3h5KiwgdWludDMyX3QgZmlyc3Qs
IHVpbnQzMl90IGNvdW50LCBQYXNzUmVmUHRyPERhdGFDYWxsYmFjaz4pOworICAgIHZvaWQgZHJh
d1JlY3RUb1BERihXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYsIFBhc3NSZWZQdHI8RGF0YUNhbGxiYWNrPik7CisgICAgdm9pZCBkcmF3UGFn
ZXNUb1BERihXZWJGcmFtZVByb3h5KiwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMyX3QgZmlyc3Qs
IHVpbnQzMl90IGNvdW50LCBQYXNzUmVmUHRyPERhdGFDYWxsYmFjaz4pOwogI2VuZGlmCiAKICAg
ICBjb25zdCBTdHJpbmcmIHBlbmRpbmdBUElSZXF1ZXN0VVJMKCkgY29uc3QgeyByZXR1cm4gbV9w
ZW5kaW5nQVBJUmVxdWVzdFVSTDsgfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZS5jcHAJKHJldmlzaW9uIDEwMzgwNikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NDYsOSArNjQ2LDkgQEAg
dm9pZCBXS1BhZ2VCZWdpblByaW50aW5nKFdLUGFnZVJlZiBwYWdlLAogICAgIHRvSW1wbChwYWdl
KS0+YmVnaW5QcmludGluZyh0b0ltcGwoZnJhbWUpLCBwcmludEluZm9Gcm9tV0tQcmludEluZm8o
cHJpbnRJbmZvKSk7CiB9CiAKLXZvaWQgV0tQYWdlRHJhd1BhZ2VzVG9QREYoV0tQYWdlUmVmIHBh
Z2UsIFdLRnJhbWVSZWYgZnJhbWUsIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgV0tQ
YWdlRHJhd1RvUERGRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNvbnRleHQpCit2b2lkIFdLUGFn
ZURyYXdQYWdlc1RvUERGKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1ByaW50
SW5mbyBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgV0tQYWdlRHJh
d1RvUERGRnVuY3Rpb24gY2FsbGJhY2ssIHZvaWQqIGNvbnRleHQpCiB7Ci0gICAgdG9JbXBsKHBh
Z2UpLT5kcmF3UGFnZXNUb1BERih0b0ltcGwoZnJhbWUpLCBmaXJzdCwgY291bnQsIERhdGFDYWxs
YmFjazo6Y3JlYXRlKGNvbnRleHQsIGNhbGxiYWNrKSk7CisgICAgdG9JbXBsKHBhZ2UpLT5kcmF3
UGFnZXNUb1BERih0b0ltcGwoZnJhbWUpLCBwcmludEluZm9Gcm9tV0tQcmludEluZm8ocHJpbnRJ
bmZvKSwgZmlyc3QsIGNvdW50LCBEYXRhQ2FsbGJhY2s6OmNyZWF0ZShjb250ZXh0LCBjYWxsYmFj
aykpOwogfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2VQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZVByaXZhdGUuaAkocmV2aXNpb24gMTAzODA2KQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZVByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNzksOCAr
NzksOCBAQCB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VDb21wdXRlUGFnZXNGb3JQcmluCiBXS19FWFBP
UlQgdm9pZCBXS1BhZ2VDb21wdXRlUGFnZXNGb3JQcmludGluZyhXS1BhZ2VSZWYgcGFnZSwgV0tG
cmFtZVJlZiBmcmFtZSwgV0tQcmludEluZm8sIFdLUGFnZUNvbXB1dGVQYWdlc0ZvclByaW50aW5n
RnVuY3Rpb24sIHZvaWQqIGNvbnRleHQpOwogCiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEcmF3VG9Q
REZGdW5jdGlvbikoV0tEYXRhUmVmIGRhdGEsIFdLRXJyb3JSZWYgZXJyb3IsIHZvaWQqIGZ1bmN0
aW9uQ29udGV4dCk7Ci1XS19FWFBPUlQgdm9pZCBXS1BhZ2VCZWdpblByaW50aW5nKFdLUGFnZVJl
ZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1ByaW50SW5mbyk7Ci1XS19FWFBPUlQgdm9pZCBX
S1BhZ2VEcmF3UGFnZXNUb1BERihXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgdWlu
dDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBXS1BhZ2VEcmF3VG9QREZGdW5jdGlvbiBjYWxs
YmFjaywgdm9pZCogY29udGV4dCk7CitXS19FWFBPUlQgdm9pZCBXS1BhZ2VCZWdpblByaW50aW5n
KFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1ByaW50SW5mbyBwcmludEluZm8p
OworV0tfRVhQT1JUIHZvaWQgV0tQYWdlRHJhd1BhZ2VzVG9QREYoV0tQYWdlUmVmIHBhZ2UsIFdL
RnJhbWVSZWYgZnJhbWUsIFdLUHJpbnRJbmZvIHByaW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVp
bnQzMl90IGNvdW50LCBXS1BhZ2VEcmF3VG9QREZGdW5jdGlvbiBjYWxsYmFjaywgdm9pZCogY29u
dGV4dCk7CiAKIC8vIEZJWE1FIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02Njk3OTogUmVtb3ZlIHRoaXMgc3luYyBjYWxsLgogV0tfRVhQT1JUIFdLSW1hZ2VSZWYgV0tQ
YWdlQ3JlYXRlU25hcHNob3RPZlZpc2libGVDb250ZW50KFdLUGFnZVJlZiBwYWdlKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLUHJpbnRpbmdWaWV3Lm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLUHJpbnRpbmdWaWV3
Lm1tCShyZXZpc2lvbiAxMDM4MDYpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21h
Yy9XS1ByaW50aW5nVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjUyLDggKzI1Miw5IEBAIC0g
KHZvaWQpX3ByZXBhcmVQREZEYXRhRm9yUHJpbnRpbmdPblNlY28KICAgICBBU1NFUlQoZmlyc3RQ
YWdlIDw9IGxhc3RQYWdlKTsKICAgICBMT0coVmlldywgIldLUHJpbnRpbmdWaWV3IHJlcXVlc3Rp
bmcgUERGIGRhdGEgZm9yIHBhZ2VzICV1Li4uJXUiLCBmaXJzdFBhZ2UsIGxhc3RQYWdlKTsKIAor
ICAgIFByaW50SW5mbyBwcmludEluZm8oW19wcmludE9wZXJhdGlvbiBwcmludEluZm9dKTsKICAg
ICAvLyBSZXR1cm4gdG8gcHJpbnRpbmcgbW9kZSBpZiB3ZSdyZSBhbHJlYWR5IGJhY2sgdG8gc2Ny
ZWVuIChlLmcuIGR1ZSB0byB3aW5kb3cgcmVzaXppbmcpLgotICAgIF93ZWJGcmFtZS0+cGFnZSgp
LT5iZWdpblByaW50aW5nKF93ZWJGcmFtZS5nZXQoKSwgUHJpbnRJbmZvKFtfcHJpbnRPcGVyYXRp
b24gcHJpbnRJbmZvXSkpOworICAgIF93ZWJGcmFtZS0+cGFnZSgpLT5iZWdpblByaW50aW5nKF93
ZWJGcmFtZS5nZXQoKSwgcHJpbnRJbmZvKTsKIAogICAgIElQQ0NhbGxiYWNrQ29udGV4dCogY29u
dGV4dCA9IG5ldyBJUENDYWxsYmFja0NvbnRleHQ7CiAgICAgUmVmUHRyPERhdGFDYWxsYmFjaz4g
Y2FsbGJhY2sgPSBEYXRhQ2FsbGJhY2s6OmNyZWF0ZShjb250ZXh0LCBwYWdlRGlkRHJhd1RvUERG
KTsKQEAgLTI2Miw3ICsyNjMsNyBAQCAtICh2b2lkKV9wcmVwYXJlUERGRGF0YUZvclByaW50aW5n
T25TZWNvCiAgICAgY29udGV4dC0+dmlldyA9IHNlbGY7CiAgICAgY29udGV4dC0+Y2FsbGJhY2tJ
RCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CiAKLSAgICBfd2ViRnJhbWUtPnBhZ2UoKS0+ZHJh
d1BhZ2VzVG9QREYoX3dlYkZyYW1lLmdldCgpLCBmaXJzdFBhZ2UgLSAxLCBsYXN0UGFnZSAtIGZp
cnN0UGFnZSArIDEsIGNhbGxiYWNrLmdldCgpKTsKKyAgICBfd2ViRnJhbWUtPnBhZ2UoKS0+ZHJh
d1BhZ2VzVG9QREYoX3dlYkZyYW1lLmdldCgpLCBwcmludEluZm8sIGZpcnN0UGFnZSAtIDEsIGxh
c3RQYWdlIC0gZmlyc3RQYWdlICsgMSwgY2FsbGJhY2suZ2V0KCkpOwogfQogCiBzdGF0aWMgdm9p
ZCBwYWdlRGlkQ29tcHV0ZVBhZ2VSZWN0cyhjb25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4m
IHBhZ2VSZWN0cywgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgV0tFcnJvclJl
Ziwgdm9pZCogdW50eXBlZENvbnRleHQpCkBAIC00NTIsNyArNDUzLDcgQEAgLSAodm9pZClfZHJh
d1ByZXZpZXc6KE5TUmVjdCluc1JlY3QKICAgICAgICAgICAgICAgICBjb250ZXh0LT52aWV3ID0g
c2VsZjsKICAgICAgICAgICAgICAgICBjb250ZXh0LT5jYWxsYmFja0lEID0gY2FsbGJhY2stPmNh
bGxiYWNrSUQoKTsKIAotICAgICAgICAgICAgICAgIF93ZWJGcmFtZS0+cGFnZSgpLT5kcmF3UmVj
dFRvUERGKF93ZWJGcmFtZS5nZXQoKSwgcmVjdCwgY2FsbGJhY2suZ2V0KCkpOworICAgICAgICAg
ICAgICAgIF93ZWJGcmFtZS0+cGFnZSgpLT5kcmF3UmVjdFRvUERGKF93ZWJGcmFtZS5nZXQoKSwg
UHJpbnRJbmZvKFtfcHJpbnRPcGVyYXRpb24gcHJpbnRJbmZvXSksIHJlY3QsIGNhbGxiYWNrLmdl
dCgpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1ZpZXcubW0JKHJldmlz
aW9uIDEwMzgwNikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjcxNyw3ICsyNzE3LDcgQEAgLSAoV0tQYWdlUmVmKXBhZ2VS
ZWYKIC0gKEJPT0wpY2FuQ2hhbmdlRnJhbWVMYXlvdXQ6KFdLRnJhbWVSZWYpZnJhbWVSZWYKIHsK
ICAgICAvLyBQREYgZG9jdW1lbnRzIGFyZSBhbHJlYWR5IHBhZ2luYXRlZCwgc28gd2UgY2FuJ3Qg
Y2hhbmdlIHRoZW0gdG8gYWRkIGhlYWRlcnMgYW5kIGZvb3RlcnMuCi0gICAgcmV0dXJuICF0b0lt
cGwoZnJhbWVSZWYpLT5pc01haW5GcmFtZSgpIHx8ICFfZGF0YS0+X3BkZlZpZXdDb250cm9sbGVy
OworICAgIHJldHVybiAhdG9JbXBsKGZyYW1lUmVmKS0+aXNEaXNwbGF5aW5nUERGRG9jdW1lbnQo
KTsKIH0KIAogLSAoTlNQcmludE9wZXJhdGlvbiAqKXByaW50T3BlcmF0aW9uV2l0aFByaW50SW5m
bzooTlNQcmludEluZm8gKilwcmludEluZm8gZm9yRnJhbWU6KFdLRnJhbWVSZWYpZnJhbWVSZWYK
QEAgLTI3MzAsNiArMjczMCw4IEBAIC0gKE5TUHJpbnRPcGVyYXRpb24gKilwcmludE9wZXJhdGlv
bldpdGgKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICByZXR1cm4gX2RhdGEtPl9wZGZW
aWV3Q29udHJvbGxlci0+bWFrZVByaW50T3BlcmF0aW9uKHByaW50SW5mbyk7CiAgICAgfSBlbHNl
IHsKKyAgICAgICAgLy8gRklYTUU6IElmIHRoZSBmcmFtZSBjYW5ub3QgYmUgcHJpbnRlZCAoZS5n
LiBpZiBpdCBjb250YWlucyBhbiBlbmNyeXB0ZWQgUERGIHRoYXQgZGlzYWxsb3dzCisgICAgICAg
IC8vIHByaW50aW5nKSwgdGhpcyBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIG5pbC4KICAgICAgICAg
UmV0YWluUHRyPFdLUHJpbnRpbmdWaWV3PiBwcmludGluZ1ZpZXcoQWRvcHROUywgW1tXS1ByaW50
aW5nVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZVByb3h5OnRvSW1wbChmcmFtZVJlZikgdmlldzpz
ZWxmXSk7CiAgICAgICAgIC8vIE5TUHJpbnRPcGVyYXRpb24gdGFrZXMgb3duZXJzaGlwIG9mIHRo
ZSB2aWV3LgogICAgICAgICBOU1ByaW50T3BlcmF0aW9uICpwcmludE9wZXJhdGlvbiA9IFtOU1By
aW50T3BlcmF0aW9uIHByaW50T3BlcmF0aW9uV2l0aFZpZXc6cHJpbnRpbmdWaWV3LmdldCgpXTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgJKHJldmlz
aW9uIDEwMzgwNikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4u
aAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvS1VS
TC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsVHlwZXMuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKIHN0cnVjdCBOUE9iamVjdDsKQEAgLTIxOCw2ICsyMTksMTAgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgV2ViQ29yZTo6U2Nyb2xsYmFyKiBob3Jpem9udGFsU2Nyb2xsYmFyKCkgPSAw
OwogICAgIHZpcnR1YWwgV2ViQ29yZTo6U2Nyb2xsYmFyKiB2ZXJ0aWNhbFNjcm9sbGJhcigpID0g
MDsKIAorI2lmIFVTRShDRykKKyAgICB2aXJ0dWFsIFJldGFpblB0cjxDR1BERkRvY3VtZW50UmVm
PiBwZGZEb2N1bWVudEZvclByaW50aW5nKCkgY29uc3QgeyByZXR1cm4gMDsgfQorI2VuZGlmCisK
IHByb3RlY3RlZDoKICAgICBQbHVnaW4oKTsKIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCShyZXZpc2lvbiAxMDM4MDYpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCSh3b3JraW5nIGNvcHkp
CkBAIC02OCw2ICs2OCwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBzZW5kQ29tcGxleFRleHRJbnB1
dCh1aW50NjRfdCBwbHVnaW5Db21wbGV4VGV4dElucHV0SWRlbnRpZmllciwgY29uc3QgU3RyaW5n
JiB0ZXh0SW5wdXQpOwogI2VuZGlmCiAKKyNpZiBVU0UoQ0cpCisgICAgUmV0YWluUHRyPENHUERG
RG9jdW1lbnRSZWY+IHBkZkRvY3VtZW50Rm9yUHJpbnRpbmcoKSBjb25zdCB7IHJldHVybiBtX3Bs
dWdpbi0+cGRmRG9jdW1lbnRGb3JQcmludGluZygpOyB9CisjZW5kaWYKKwogICAgIC8vIEZJWE1F
OiBSZW1vdmUgdGhpczsgbm9ib2R5IHNob3VsZCBoYXZlIHRvIGtub3cgYWJvdXQgdGhlIHBsdWct
aW4gdmlldydzIHJlbmRlcmVyIGV4Y2VwdCB0aGUgcGx1Zy1pbiB2aWV3IGl0c2VsZi4KICAgICBX
ZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVuZGVyZXIoKSBjb25zdDsKIApJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9CdWlsdEluUERGVmlldy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvQnVpbHRJ
blBERlZpZXcuaAkocmV2aXNpb24gMTAzODA2KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9CdWlsdEluUERGVmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNiAr
MTEzLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlNjcm9sbGJhciogaG9yaXpv
bnRhbFNjcm9sbGJhcigpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6U2Nyb2xsYmFyKiB2ZXJ0aWNh
bFNjcm9sbGJhcigpOwogCisgICAgdmlydHVhbCBSZXRhaW5QdHI8Q0dQREZEb2N1bWVudFJlZj4g
cGRmRG9jdW1lbnRGb3JQcmludGluZygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fcGRmRG9j
dW1lbnQ7IH0KKwogICAgIC8vIFNjcm9sbGFibGVBcmVhIG1ldGhvZHMuCiAgICAgdmlydHVhbCBX
ZWJDb3JlOjpJbnRSZWN0IHNjcm9sbENvcm5lclJlY3QoKSBjb25zdDsKICAgICB2aXJ0dWFsIFdl
YkNvcmU6OlNjcm9sbGFibGVBcmVhKiBlbmNsb3NpbmdTY3JvbGxhYmxlQXJlYSgpIGNvbnN0OwpJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAko
cmV2aXNpb24gMTAzODA2KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw2ICs5NSw3IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9Nb3VzZUV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9QbGF0Zm9ybUtleWJvYXJkRXZlbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsdWdp
bkRvY3VtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QcmludENvbnRleHQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1JlbmRlckFyZW5hLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJMYXllci5o
PgpAQCAtMTQxLDYgKzE0Miw3IEBACiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiB1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCkBAIC0yNTY0LDYgKzI1NjYsMjQgQEAgdm9pZCBXZWJQYWdlOjpzdG9wU3BlYWtpbmcoKQog
CiAjZW5kaWYKIAorI2lmIFVTRShDRykKK3N0YXRpYyBSZXRhaW5QdHI8Q0dQREZEb2N1bWVudFJl
Zj4gcGRmRG9jdW1lbnRGb3JQcmludGluZ0ZyYW1lKEZyYW1lKiBjb3JlRnJhbWUpCit7CisgICAg
RG9jdW1lbnQqIGRvY3VtZW50ID0gY29yZUZyYW1lLT5kb2N1bWVudCgpOworICAgIGlmICghZG9j
dW1lbnQpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKCFkb2N1bWVudC0+aXNQbHVnaW5E
b2N1bWVudCgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFBsdWdpblZpZXcqIHBsdWdpblZp
ZXcgPSBzdGF0aWNfY2FzdDxQbHVnaW5WaWV3Kj4odG9QbHVnaW5Eb2N1bWVudChkb2N1bWVudCkt
PnBsdWdpbldpZGdldCgpKTsKKyAgICBpZiAoIXBsdWdpblZpZXcpCisgICAgICAgIHJldHVybiAw
OworCisgICAgcmV0dXJuIHBsdWdpblZpZXctPnBkZkRvY3VtZW50Rm9yUHJpbnRpbmcoKTsKK30K
KyNlbmRpZiAvLyBVU0UoQ0cpCisKIHZvaWQgV2ViUGFnZTo6YmVnaW5QcmludGluZyh1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbykKIHsKICAgICBXZWJGcmFtZSog
ZnJhbWUgPSBXZWJQcm9jZXNzOjpzaGFyZWQoKS53ZWJGcmFtZShmcmFtZUlEKTsKQEAgLTI1NzQs
NiArMjU5NCwxMSBAQCB2b2lkIFdlYlBhZ2U6OmJlZ2luUHJpbnRpbmcodWludDY0X3QgZnJhCiAg
ICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybjsKIAorI2lmIFVTRShDRykKKyAgICBp
ZiAocGRmRG9jdW1lbnRGb3JQcmludGluZ0ZyYW1lKGNvcmVGcmFtZSkpCisgICAgICAgIHJldHVy
bjsKKyNlbmRpZiAvLyBVU0UoQ0cpCisKICAgICBpZiAoIW1fcHJpbnRDb250ZXh0KQogICAgICAg
ICBtX3ByaW50Q29udGV4dCA9IGFkb3B0UHRyKG5ldyBQcmludENvbnRleHQoY29yZUZyYW1lKSk7
CiAKQEAgLTI1OTksNiArMjYyNCwyMSBAQCB2b2lkIFdlYlBhZ2U6OmNvbXB1dGVQYWdlc0ZvclBy
aW50aW5nKHVpCiAgICAgICAgIHJlc3VsdFBhZ2VSZWN0cyA9IG1fcHJpbnRDb250ZXh0LT5wYWdl
UmVjdHMoKTsKICAgICAgICAgcmVzdWx0VG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nID0gbV9w
cmludENvbnRleHQtPmNvbXB1dGVBdXRvbWF0aWNTY2FsZUZhY3RvcihGbG9hdFNpemUocHJpbnRJ
bmZvLmF2YWlsYWJsZVBhcGVyV2lkdGgsIHByaW50SW5mby5hdmFpbGFibGVQYXBlckhlaWdodCkp
ICogcHJpbnRJbmZvLnBhZ2VTZXR1cFNjYWxlRmFjdG9yOwogICAgIH0KKyNpZiBVU0UoQ0cpCisg
ICAgZWxzZSB7CisgICAgICAgIFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNoYXJlZCgp
LndlYkZyYW1lKGZyYW1lSUQpOworICAgICAgICBGcmFtZSogY29yZUZyYW1lID0gZnJhbWUgPyBm
cmFtZS0+Y29yZUZyYW1lKCkgOiAwOworICAgICAgICBSZXRhaW5QdHI8Q0dQREZEb2N1bWVudFJl
Zj4gcGRmRG9jdW1lbnQgPSBjb3JlRnJhbWUgPyBwZGZEb2N1bWVudEZvclByaW50aW5nRnJhbWUo
Y29yZUZyYW1lKSA6IDA7CisgICAgICAgIGlmIChwZGZEb2N1bWVudCAmJiBDR1BERkRvY3VtZW50
QWxsb3dzUHJpbnRpbmcocGRmRG9jdW1lbnQuZ2V0KCkpKSB7CisgICAgICAgICAgICBDRkluZGV4
IHBhZ2VDb3VudCA9IENHUERGRG9jdW1lbnRHZXROdW1iZXJPZlBhZ2VzKHBkZkRvY3VtZW50Lmdl
dCgpKTsKKyAgICAgICAgICAgIEludFJlY3QgcGFnZVJlY3QoMCwgMCwgY2VpbGYocHJpbnRJbmZv
LmF2YWlsYWJsZVBhcGVyV2lkdGgpLCBjZWlsZihwcmludEluZm8uYXZhaWxhYmxlUGFwZXJIZWln
aHQpKTsKKyAgICAgICAgICAgIGZvciAoQ0ZJbmRleCBpID0gMTsgaSA8PSBwYWdlQ291bnQ7ICsr
aSkgeworICAgICAgICAgICAgICAgIHJlc3VsdFBhZ2VSZWN0cy5hcHBlbmQocGFnZVJlY3QpOwor
ICAgICAgICAgICAgICAgIHBhZ2VSZWN0Lm1vdmUoMCwgcGFnZVJlY3QuaGVpZ2h0KCkpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorI2VuZGlmIC8vIFVTRShDRykKIAogICAgIC8v
IElmIHdlJ3JlIGFza2VkIHRvIHByaW50LCB3ZSBzaG91bGQgYWN0dWFsbHkgcHJpbnQgYXQgbGVh
c3QgYSBibGFuayBwYWdlLgogICAgIGlmIChyZXN1bHRQYWdlUmVjdHMuaXNFbXB0eSgpKQpAQCAt
MjYwNyw4ICsyNjQ3LDQ5IEBAIHZvaWQgV2ViUGFnZTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmco
dWkKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNvbXB1dGVkUGFnZXNDYWxsYmFj
ayhyZXN1bHRQYWdlUmVjdHMsIHJlc3VsdFRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgY2Fs
bGJhY2tJRCkpOwogfQogCisjaWYgVVNFKENHKQorc3RhdGljIGlubGluZSBDR0Zsb2F0IHJvdW5k
Q0dGbG9hdChDR0Zsb2F0IGYpCit7CisgICAgaWYgKHNpemVvZihDR0Zsb2F0KSA9PSBzaXplb2Yo
ZmxvYXQpKQorICAgICAgICByZXR1cm4gcm91bmRmKHN0YXRpY19jYXN0PGZsb2F0PihmKSk7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PENHRmxvYXQ+KHJvdW5kKGYpKTsKK30KKworc3RhdGljIHZv
aWQgZHJhd1BERlBhZ2UoQ0dQREZEb2N1bWVudFJlZiBwZGZEb2N1bWVudCwgQ0ZJbmRleCBwYWdl
SW5kZXgsIENHQ29udGV4dFJlZiBjb250ZXh0LCBDR0Zsb2F0IHBhZ2VTZXR1cFNjYWxlRmFjdG9y
LCBDR1NpemUgcGFwZXJTaXplKSB7CisgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsK
KworICAgIENHQ29udGV4dFNjYWxlQ1RNKGNvbnRleHQsIHBhZ2VTZXR1cFNjYWxlRmFjdG9yLCBw
YWdlU2V0dXBTY2FsZUZhY3Rvcik7CisKKyAgICBDR1BERlBhZ2VSZWYgcGFnZSA9IENHUERGRG9j
dW1lbnRHZXRQYWdlKHBkZkRvY3VtZW50LCBwYWdlSW5kZXggKyAxKTsKKyAgICBDR1JlY3QgY3Jv
cEJveCA9IENHUERGUGFnZUdldEJveFJlY3QocGFnZSwga0NHUERGQ3JvcEJveCk7CisgICAgaWYg
KENHUmVjdElzRW1wdHkoY3JvcEJveCkpCisgICAgICAgIGNyb3BCb3ggPSBDR1JlY3RJbnRlcnNl
Y3Rpb24oY3JvcEJveCwgQ0dQREZQYWdlR2V0Qm94UmVjdChwYWdlLCBrQ0dQREZNZWRpYUJveCkp
OworICAgIGVsc2UKKyAgICAgICAgY3JvcEJveCA9IENHUERGUGFnZUdldEJveFJlY3QocGFnZSwg
a0NHUERGTWVkaWFCb3gpOworCisgICAgYm9vbCBzaG91bGRSb3RhdGUgPSAocGFwZXJTaXplLndp
ZHRoIDwgcGFwZXJTaXplLmhlaWdodCkgIT0gKGNyb3BCb3guc2l6ZS53aWR0aCA8IGNyb3BCb3gu
c2l6ZS5oZWlnaHQpOworICAgIGlmIChzaG91bGRSb3RhdGUpCisgICAgICAgIHN3YXAoY3JvcEJv
eC5zaXplLndpZHRoLCBjcm9wQm94LnNpemUuaGVpZ2h0KTsKKworICAgIC8vIENlbnRlci4KKyAg
ICBDR0Zsb2F0IHdpZHRoRGlmZmVyZW5jZSA9IHBhcGVyU2l6ZS53aWR0aCAvIHBhZ2VTZXR1cFNj
YWxlRmFjdG9yIC0gY3JvcEJveC5zaXplLndpZHRoOworICAgIENHRmxvYXQgaGVpZ2h0RGlmZmVy
ZW5jZSA9IHBhcGVyU2l6ZS5oZWlnaHQgLyBwYWdlU2V0dXBTY2FsZUZhY3RvciAtIGNyb3BCb3gu
c2l6ZS5oZWlnaHQ7CisgICAgaWYgKHdpZHRoRGlmZmVyZW5jZSB8fCBoZWlnaHREaWZmZXJlbmNl
KQorICAgICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwgcm91bmRDR0Zsb2F0KHdp
ZHRoRGlmZmVyZW5jZSAvIDIpLCByb3VuZENHRmxvYXQoaGVpZ2h0RGlmZmVyZW5jZSAvIDIpKTsK
KworICAgIGlmIChzaG91bGRSb3RhdGUpIHsKKyAgICAgICAgQ0dDb250ZXh0Um90YXRlQ1RNKGNv
bnRleHQsIE1fUElfMik7CisgICAgICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjb250ZXh0LCAw
LCAtY3JvcEJveC5zaXplLndpZHRoKTsKKyAgICB9CisKKyAgICBDR0NvbnRleHREcmF3UERGUGFn
ZShjb250ZXh0LCBwYWdlKTsKKworICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY29udGV4dCk7
Cit9CisjZW5kaWYgLy8gVVNFKENHKQorCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShX
SU4pCi12b2lkIFdlYlBhZ2U6OmRyYXdSZWN0VG9QREYodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgcmVjdCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFn
ZTo6ZHJhd1JlY3RUb1BERih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50
SW5mbywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCwgdWludDY0X3QgY2FsbGJhY2tJRCkK
IHsKICAgICBXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaGFyZWQoKS53ZWJGcmFtZShm
cmFtZUlEKTsKICAgICBGcmFtZSogY29yZUZyYW1lID0gZnJhbWUgPyBmcmFtZS0+Y29yZUZyYW1l
KCkgOiAwOwpAQCAtMjYxNiw3ICsyNjk3LDExIEBAIHZvaWQgV2ViUGFnZTo6ZHJhd1JlY3RUb1BE
Rih1aW50NjRfdCBmcmEKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4gcGRmUGFnZURh
dGEoQWRvcHRDRiwgQ0ZEYXRhQ3JlYXRlTXV0YWJsZSgwLCAwKSk7CiAKICAgICBpZiAoY29yZUZy
YW1lKSB7Ci0gICAgICAgIEFTU0VSVChjb3JlRnJhbWUtPmRvY3VtZW50KCktPnByaW50aW5nKCkp
OworICAgICAgICBBU1NFUlQoY29yZUZyYW1lLT5kb2N1bWVudCgpLT5wcmludGluZygpCisjaWYg
VVNFKENHKQorICAgICAgICAgICAgfHwgcGRmRG9jdW1lbnRGb3JQcmludGluZ0ZyYW1lKGNvcmVG
cmFtZSkKKyNlbmRpZgorICAgICAgICApOwogCiAjaWYgVVNFKENHKQogICAgICAgICAvLyBGSVhN
RTogVXNlIENHRGF0YUNvbnN1bWVyQ3JlYXRlIHdpdGggY2FsbGJhY2tzIHRvIGF2b2lkIGNvcHlp
bmcgdGhlIGRhdGEuCkBAIC0yNjI3LDIwICsyNzEyLDM5IEBAIHZvaWQgV2ViUGFnZTo6ZHJhd1Jl
Y3RUb1BERih1aW50NjRfdCBmcmEKICAgICAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4g
cGFnZUluZm8oQWRvcHRDRiwgQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlw
ZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tz
KSk7CiAgICAgICAgIENHUERGQ29udGV4dEJlZ2luUGFnZShjb250ZXh0LmdldCgpLCBwYWdlSW5m
by5nZXQoKSk7CiAKLSAgICAgICAgR3JhcGhpY3NDb250ZXh0IGN0eChjb250ZXh0LmdldCgpKTsK
LSAgICAgICAgY3R4LnNjYWxlKEZsb2F0U2l6ZSgxLCAtMSkpOwotICAgICAgICBjdHgudHJhbnNs
YXRlKDAsIC1yZWN0LmhlaWdodCgpKTsKLSAgICAgICAgbV9wcmludENvbnRleHQtPnNwb29sUmVj
dChjdHgsIHJlY3QpOworICAgICAgICBpZiAoUmV0YWluUHRyPENHUERGRG9jdW1lbnRSZWY+IHBk
ZkRvY3VtZW50ID0gcGRmRG9jdW1lbnRGb3JQcmludGluZ0ZyYW1lKGNvcmVGcmFtZSkpIHsKKyAg
ICAgICAgICAgIENGSW5kZXggcGFnZUNvdW50ID0gQ0dQREZEb2N1bWVudEdldE51bWJlck9mUGFn
ZXMocGRmRG9jdW1lbnQuZ2V0KCkpOworICAgICAgICAgICAgSW50U2l6ZSBwYXBlclNpemUoY2Vp
bGYocHJpbnRJbmZvLmF2YWlsYWJsZVBhcGVyV2lkdGgpLCBjZWlsZihwcmludEluZm8uYXZhaWxh
YmxlUGFwZXJIZWlnaHQpKTsKKyAgICAgICAgICAgIEludFJlY3QgcGFnZVJlY3QoSW50UG9pbnQo
KSwgcGFwZXJTaXplKTsKKyAgICAgICAgICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IHBhZ2VD
b3VudDsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKHBhZ2VSZWN0LmludGVyc2VjdHMocmVj
dCkpIHsKKyAgICAgICAgICAgICAgICAgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0Lmdl
dCgpKTsKKworICAgICAgICAgICAgICAgICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4
dC5nZXQoKSwgcGFnZVJlY3QueCgpIC0gcmVjdC54KCksIHBhZ2VSZWN0LnkoKSAtIHJlY3QueSgp
KTsKKyAgICAgICAgICAgICAgICAgICAgZHJhd1BERlBhZ2UocGRmRG9jdW1lbnQuZ2V0KCksIGks
IGNvbnRleHQuZ2V0KCksIHByaW50SW5mby5wYWdlU2V0dXBTY2FsZUZhY3RvciwgcGFwZXJTaXpl
KTsKKworICAgICAgICAgICAgICAgICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQu
Z2V0KCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBwYWdlUmVjdC5tb3Zl
KDAsIHBhZ2VSZWN0LmhlaWdodCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIEdyYXBoaWNzQ29udGV4dCBjdHgoY29udGV4dC5nZXQoKSk7CisgICAgICAg
ICAgICBjdHguc2NhbGUoRmxvYXRTaXplKDEsIC0xKSk7CisgICAgICAgICAgICBjdHgudHJhbnNs
YXRlKDAsIC1yZWN0LmhlaWdodCgpKTsKKyAgICAgICAgICAgIG1fcHJpbnRDb250ZXh0LT5zcG9v
bFJlY3QoY3R4LCByZWN0KTsKKyAgICAgICAgfQogCiAgICAgICAgIENHUERGQ29udGV4dEVuZFBh
Z2UoY29udGV4dC5nZXQoKSk7CiAgICAgICAgIENHUERGQ29udGV4dENsb3NlKGNvbnRleHQuZ2V0
KCkpOworI2Vsc2UKKyAgICAgICAgVU5VU0VEX1BBUkFNKHByaW50SW5mbyk7CiAjZW5kaWYKICAg
ICB9CiAKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRhdGFDYWxsYmFjayhDb3Jl
SVBDOjpEYXRhUmVmZXJlbmNlKENGRGF0YUdldEJ5dGVQdHIocGRmUGFnZURhdGEuZ2V0KCkpLCBD
RkRhdGFHZXRMZW5ndGgocGRmUGFnZURhdGEuZ2V0KCkpKSwgY2FsbGJhY2tJRCkpOwogfQogCi12
b2lkIFdlYlBhZ2U6OmRyYXdQYWdlc1RvUERGKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQzMl90IGZp
cnN0LCB1aW50MzJfdCBjb3VudCwgdWludDY0X3QgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6
ZHJhd1BhZ2VzVG9QREYodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludElu
Zm8sIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgdWludDY0X3QgY2FsbGJhY2tJRCkK
IHsKICAgICBXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaGFyZWQoKS53ZWJGcmFtZShm
cmFtZUlEKTsKICAgICBGcmFtZSogY29yZUZyYW1lID0gZnJhbWUgPyBmcmFtZS0+Y29yZUZyYW1l
KCkgOiAwOwpAQCAtMjY0OCwyNSArMjc1MiwzNyBAQCB2b2lkIFdlYlBhZ2U6OmRyYXdQYWdlc1Rv
UERGKHVpbnQ2NF90IGZyCiAgICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IHBkZlBhZ2VE
YXRhKEFkb3B0Q0YsIENGRGF0YUNyZWF0ZU11dGFibGUoMCwgMCkpOwogCiAgICAgaWYgKGNvcmVG
cmFtZSkgewotICAgICAgICBBU1NFUlQoY29yZUZyYW1lLT5kb2N1bWVudCgpLT5wcmludGluZygp
KTsKKworICAgICAgICBBU1NFUlQoY29yZUZyYW1lLT5kb2N1bWVudCgpLT5wcmludGluZygpCisj
aWYgVVNFKENHKQorICAgICAgICAgICAgfHwgcGRmRG9jdW1lbnRGb3JQcmludGluZ0ZyYW1lKGNv
cmVGcmFtZSkKKyNlbmRpZgorICAgICAgICApOwogCiAjaWYgVVNFKENHKQorICAgICAgICBSZXRh
aW5QdHI8Q0dQREZEb2N1bWVudFJlZj4gcGRmRG9jdW1lbnQgPSBwZGZEb2N1bWVudEZvclByaW50
aW5nRnJhbWUoY29yZUZyYW1lKTsKKwogICAgICAgICAvLyBGSVhNRTogVXNlIENHRGF0YUNvbnN1
bWVyQ3JlYXRlIHdpdGggY2FsbGJhY2tzIHRvIGF2b2lkIGNvcHlpbmcgdGhlIGRhdGEuCiAgICAg
ICAgIFJldGFpblB0cjxDR0RhdGFDb25zdW1lclJlZj4gcGRmRGF0YUNvbnN1bWVyKEFkb3B0Q0Ys
IENHRGF0YUNvbnN1bWVyQ3JlYXRlV2l0aENGRGF0YShwZGZQYWdlRGF0YS5nZXQoKSkpOwogCi0g
ICAgICAgIENHUmVjdCBtZWRpYUJveCA9IG1fcHJpbnRDb250ZXh0LT5wYWdlQ291bnQoKSA/IG1f
cHJpbnRDb250ZXh0LT5wYWdlUmVjdCgwKSA6IENHUmVjdE1ha2UoMCwgMCwgMSwgMSk7CisgICAg
ICAgIENHUmVjdCBtZWRpYUJveCA9IG1fcHJpbnRDb250ZXh0ICYmIG1fcHJpbnRDb250ZXh0LT5w
YWdlQ291bnQoKSA/IG1fcHJpbnRDb250ZXh0LT5wYWdlUmVjdCgwKSA6IENHUmVjdE1ha2UoMCwg
MCwgcHJpbnRJbmZvLmF2YWlsYWJsZVBhcGVyV2lkdGgsIHByaW50SW5mby5hdmFpbGFibGVQYXBl
ckhlaWdodCk7CiAgICAgICAgIFJldGFpblB0cjxDR0NvbnRleHRSZWY+IGNvbnRleHQoQWRvcHRD
RiwgQ0dQREZDb250ZXh0Q3JlYXRlKHBkZkRhdGFDb25zdW1lci5nZXQoKSwgJm1lZGlhQm94LCAw
KSk7CisgICAgICAgIHNpemVfdCBwYWdlQ291bnQgPSBtX3ByaW50Q29udGV4dCA/IG1fcHJpbnRD
b250ZXh0LT5wYWdlQ291bnQoKSA6IENHUERGRG9jdW1lbnRHZXROdW1iZXJPZlBhZ2VzKHBkZkRv
Y3VtZW50LmdldCgpKTsKICAgICAgICAgZm9yICh1aW50MzJfdCBwYWdlID0gZmlyc3Q7IHBhZ2Ug
PCBmaXJzdCArIGNvdW50OyArK3BhZ2UpIHsKLSAgICAgICAgICAgIGlmIChwYWdlID49IG1fcHJp
bnRDb250ZXh0LT5wYWdlQ291bnQoKSkKKyAgICAgICAgICAgIGlmIChwYWdlID49IHBhZ2VDb3Vu
dCkKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgUmV0YWluUHRyPENGRGlj
dGlvbmFyeVJlZj4gcGFnZUluZm8oQWRvcHRDRiwgQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSgw
LCAwLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZh
bHVlQ2FsbEJhY2tzKSk7CiAgICAgICAgICAgICBDR1BERkNvbnRleHRCZWdpblBhZ2UoY29udGV4
dC5nZXQoKSwgcGFnZUluZm8uZ2V0KCkpOwogCi0gICAgICAgICAgICBHcmFwaGljc0NvbnRleHQg
Y3R4KGNvbnRleHQuZ2V0KCkpOwotICAgICAgICAgICAgY3R4LnNjYWxlKEZsb2F0U2l6ZSgxLCAt
MSkpOwotICAgICAgICAgICAgY3R4LnRyYW5zbGF0ZSgwLCAtbV9wcmludENvbnRleHQtPnBhZ2VS
ZWN0KHBhZ2UpLmhlaWdodCgpKTsKLSAgICAgICAgICAgIG1fcHJpbnRDb250ZXh0LT5zcG9vbFBh
Z2UoY3R4LCBwYWdlLCBtX3ByaW50Q29udGV4dC0+cGFnZVJlY3QocGFnZSkud2lkdGgoKSk7Cisg
ICAgICAgICAgICBpZiAocGRmRG9jdW1lbnQpCisgICAgICAgICAgICAgICAgZHJhd1BERlBhZ2Uo
cGRmRG9jdW1lbnQuZ2V0KCksIHBhZ2UsIGNvbnRleHQuZ2V0KCksIHByaW50SW5mby5wYWdlU2V0
dXBTY2FsZUZhY3RvciwgQ0dTaXplTWFrZShwcmludEluZm8uYXZhaWxhYmxlUGFwZXJXaWR0aCwg
cHJpbnRJbmZvLmF2YWlsYWJsZVBhcGVySGVpZ2h0KSk7CisgICAgICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBHcmFwaGljc0NvbnRleHQgY3R4KGNvbnRleHQuZ2V0KCkpOworICAgICAg
ICAgICAgICAgIGN0eC5zY2FsZShGbG9hdFNpemUoMSwgLTEpKTsKKyAgICAgICAgICAgICAgICBj
dHgudHJhbnNsYXRlKDAsIC1tX3ByaW50Q29udGV4dC0+cGFnZVJlY3QocGFnZSkuaGVpZ2h0KCkp
OworICAgICAgICAgICAgICAgIG1fcHJpbnRDb250ZXh0LT5zcG9vbFBhZ2UoY3R4LCBwYWdlLCBt
X3ByaW50Q29udGV4dC0+cGFnZVJlY3QocGFnZSkud2lkdGgoKSk7CisgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIENHUERGQ29udGV4dEVuZFBhZ2UoY29udGV4dC5nZXQoKSk7CiAgICAgICAg
IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAko
cmV2aXNpb24gMTAzODA2KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDI4LDggKzQyOCw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIGVuZFByaW50aW5nKCk7CiAgICAgdm9pZCBjb21wdXRlUGFnZXNGb3JQcmludGluZyh1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKICNp
ZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFdJTikKLSAgICB2b2lkIGRyYXdSZWN0VG9QREYo
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIHVpbnQ2NF90IGNhbGxi
YWNrSUQpOwotICAgIHZvaWQgZHJhd1BhZ2VzVG9QREYodWludDY0X3QgZnJhbWVJRCwgdWludDMy
X3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lk
IGRyYXdSZWN0VG9QREYodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZHJhd1Bh
Z2VzVG9QREYodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMyX3QgZmly
c3QsIHVpbnQzMl90IGNvdW50LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKICNlbmRpZgogCiAgICAg
Ym9vbCBtYWluRnJhbWVIYXNDdXN0b21SZXByZXNlbnRhdGlvbigpIGNvbnN0OwpJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4JKHJldmlzaW9uIDEwMzgwNikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xNzksOCArMTc5LDgg
QEAgbWVzc2FnZXMgLT4gV2ViUGFnZSB7CiAgICAgRW5kUHJpbnRpbmcoKTsKICAgICBDb21wdXRl
UGFnZXNGb3JQcmludGluZyh1aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OlByaW50SW5mbyBwcmlu
dEluZm8sIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9S
TShXSU4pCi0gICAgRHJhd1JlY3RUb1BERih1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpJbnRS
ZWN0IHJlY3QsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCi0gICAgRHJhd1BhZ2VzVG9QREYodWludDY0
X3QgZnJhbWVJRCwgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCB1aW50NjRfdCBjYWxs
YmFja0lEKQorICAgIERyYXdSZWN0VG9QREYodWludDY0X3QgZnJhbWVJRCwgV2ViS2l0OjpQcmlu
dEluZm8gcHJpbnRJbmZvLCBXZWJDb3JlOjpJbnRSZWN0IHJlY3QsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCisgICAgRHJhd1BhZ2VzVG9QREYodWludDY0X3QgZnJhbWVJRCwgV2ViS2l0OjpQcmludElu
Zm8gcHJpbnRJbmZvLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpCiAjZW5kaWYKIAogICAgIFNldE1lbW9yeUNhY2hlTWVzc2FnZXNFbmFibGVkKGJv
b2wgbWVtb3J5Q2FjaGVNZXNzYWdlc0VuYWJsZWQpCg==
</data>
<flag name="review"
          id="121089"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>