<?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>133005</bug_id>
          
          <creation_ts>2014-05-16 13:57:28 -0700</creation_ts>
          <short_desc>[iOS] Create a UIPrintFormatter for WKWebView</short_desc>
          <delta_ts>2014-05-21 13:40:08 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andy Estes">aestes</reporter>
          <assigned_to name="Andy Estes">aestes</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1009834</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-05-16 13:57:28 -0700</bug_when>
    <thetext>[iOS] Create a UIPrintFormatter for WKWebView</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009848</commentid>
    <comment_count>1</comment_count>
      <attachid>231590</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-05-16 14:29:51 -0700</bug_when>
    <thetext>Created attachment 231590
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1010207</commentid>
    <comment_count>2</comment_count>
      <attachid>231695</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-05-19 09:50:31 -0700</bug_when>
    <thetext>Created attachment 231695
[iOS] Create a UIPrintFormatter for WKWebView</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1010235</commentid>
    <comment_count>3</comment_count>
      <attachid>231695</attachid>
    <who name="Jonathan Wells">jonowells</who>
    <bug_when>2014-05-19 11:12:11 -0700</bug_when>
    <thetext>Comment on attachment 231695
[iOS] Create a UIPrintFormatter for WKWebView

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

&gt; Source/WebKit2/ChangeLog:11
&gt; +        returning the data to the UI process asynchronously. When UIPrintInteractionController later calls our

&quot;returning the data to the UI process asynchronously.&quot; I think is somewhat dangling. It isn&apos;t meant to modify &quot;PDF&quot;.

&gt; Source/WebKit2/UIProcess/ios/WKPDFView.mm:31
&gt; +

Extra line here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1010238</commentid>
    <comment_count>4</comment_count>
      <attachid>231695</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-05-19 11:19:03 -0700</bug_when>
    <thetext>Comment on attachment 231695
[iOS] Create a UIPrintFormatter for WKWebView

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

&gt;&gt; Source/WebKit2/ChangeLog:11
&gt;&gt; +        returning the data to the UI process asynchronously. When UIPrintInteractionController later calls our
&gt; 
&gt; &quot;returning the data to the UI process asynchronously.&quot; I think is somewhat dangling. It isn&apos;t meant to modify &quot;PDF&quot;.

I&apos;ll just add a new sentence that says &quot;The PDF data will be returned to the UI process asynchronously.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1010239</commentid>
    <comment_count>5</comment_count>
      <attachid>231704</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-05-19 11:21:30 -0700</bug_when>
    <thetext>Created attachment 231704
[iOS] Create a UIPrintFormatter for WKWebView</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1010277</commentid>
    <comment_count>6</comment_count>
      <attachid>231704</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-05-19 13:30:06 -0700</bug_when>
    <thetext>Comment on attachment 231704
[iOS] Create a UIPrintFormatter for WKWebView

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

&gt; Source/WebKit2/Shared/WebPreferencesStore.h:147
&gt; +    macro(ShouldPrintBackgrounds, shouldPrintBackgrounds, Bool, bool, DEFAULT_SHOULD_PRINT_BACKGROUNDS) \

oops!

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:1868
&gt; +        return { };

{ }, really?

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:1892
&gt; +        if (!_page-&gt;process().connection()-&gt;waitForAndDispatchImmediately&lt;Messages::WebPageProxy::DidFinishDrawingPagesToPDF&gt;(_page-&gt;pageID(), didFinishLoadingTimeout)) {

terrifying

&gt; Source/WebKit2/UIProcess/WKWebViewPrintFormatter.mm:35
&gt; +@interface UIPrintFormatter (IPI)

(Details)

&gt; Source/WebKit2/UIProcess/WKWebViewPrintFormatter.mm:100
&gt; +    CGContextTranslateCTM(context, 0, -CGPDFPageGetBoxRect(pdfPage, kCGPDFMediaBox).size.height);
&gt; +    CGContextClipToRect(context, CGPDFPageGetBoxRect(pdfPage, kCGPDFCropBox));

I cannot remember; are you sure that CGPDFPageGetBoxRect falls back to the next box if the one you ask for isn&apos;t available? I guess this is fine if you always control _printedDocument.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1010279</commentid>
    <comment_count>7</comment_count>
      <attachid>231704</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-05-19 13:34:36 -0700</bug_when>
    <thetext>Comment on attachment 231704
[iOS] Create a UIPrintFormatter for WKWebView

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

&gt;&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:1892
&gt;&gt; +        if (!_page-&gt;process().connection()-&gt;waitForAndDispatchImmediately&lt;Messages::WebPageProxy::DidFinishDrawingPagesToPDF&gt;(_page-&gt;pageID(), didFinishLoadingTimeout)) {
&gt; 
&gt; terrifying

More terrifying than a call to sendSync() (which would be the alternative here)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1010283</commentid>
    <comment_count>8</comment_count>
      <attachid>231704</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-05-19 13:39:05 -0700</bug_when>
    <thetext>Comment on attachment 231704
[iOS] Create a UIPrintFormatter for WKWebView

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

&gt;&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:1868
&gt;&gt; +        return { };
&gt; 
&gt; { }, really?

Oops. That was from when this method returned a Vector&lt;&gt;. Will change.

&gt;&gt; Source/WebKit2/UIProcess/WKWebViewPrintFormatter.mm:100
&gt;&gt; +    CGContextClipToRect(context, CGPDFPageGetBoxRect(pdfPage, kCGPDFCropBox));
&gt; 
&gt; I cannot remember; are you sure that CGPDFPageGetBoxRect falls back to the next box if the one you ask for isn&apos;t available? I guess this is fine if you always control _printedDocument.

Maybe I should just use the media box, or just not clip at all (thinking about it, clipping should be unnecessary, at least for the PDFs WebKit generates).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1010284</commentid>
    <comment_count>9</comment_count>
      <attachid>231719</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-05-19 13:41:37 -0700</bug_when>
    <thetext>Created attachment 231719
[iOS] Create a UIPrintFormatter for WKWebView</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1010290</commentid>
    <comment_count>10</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-05-19 13:55:47 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 231704 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=231704&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:1868
&gt; &gt;&gt; +        return { };
&gt; &gt; 
&gt; &gt; { }, really?
&gt; 
&gt; Oops. That was from when this method returned a Vector&lt;&gt;. Will change.
&gt; 
&gt; &gt;&gt; Source/WebKit2/UIProcess/WKWebViewPrintFormatter.mm:100
&gt; &gt;&gt; +    CGContextClipToRect(context, CGPDFPageGetBoxRect(pdfPage, kCGPDFCropBox));
&gt; &gt; 
&gt; &gt; I cannot remember; are you sure that CGPDFPageGetBoxRect falls back to the next box if the one you ask for isn&apos;t available? I guess this is fine if you always control _printedDocument.
&gt; 
&gt; Maybe I should just use the media box, or just not clip at all (thinking about it, clipping should be unnecessary, at least for the PDFs WebKit generates).

Yeah, I think WebKit probably does enough clipping on the other end.

If you ever end up handing PDFs from the web in here, though, you&apos;re going to want to do the right thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1010561</commentid>
    <comment_count>11</comment_count>
      <attachid>231719</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2014-05-20 10:44:51 -0700</bug_when>
    <thetext>Comment on attachment 231719
[iOS] Create a UIPrintFormatter for WKWebView

I&apos;m going to take a stab at making the page rect computation asynchronous.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1010815</commentid>
    <comment_count>12</comment_count>
      <attachid>231719</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-05-21 12:53:52 -0700</bug_when>
    <thetext>Comment on attachment 231719
[iOS] Create a UIPrintFormatter for WKWebView

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:1867
&gt; +    if (!_page-&gt;sendSync(Messages::WebPage::ComputePagesForPrintingAndStartDrawingToPDF(_page-&gt;mainFrame()-&gt;frameID(), printInfo, firstPage), Messages::WebPage::ComputePagesForPrintingAndStartDrawingToPDF::Reply(pageRects, totalScaleFactor)))

Sam OK&apos;d this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1010823</commentid>
    <comment_count>13</comment_count>
      <attachid>231719</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-05-21 13:40:06 -0700</bug_when>
    <thetext>Comment on attachment 231719
[iOS] Create a UIPrintFormatter for WKWebView

Clearing flags on attachment: 231719

Committed r169175: &lt;http://trac.webkit.org/changeset/169175&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1010824</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-05-21 13:40:08 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231590</attachid>
            <date>2014-05-16 14:29:51 -0700</date>
            <delta_ts>2014-05-19 09:50:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133005-20140516142928.patch</filename>
            <type>text/plain</type>
            <size>35489</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY4NTU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMGI3YjRjZTQ2ZmMyZjE3
ODM2MzI0ZGYzYzc0MDYyYzQwNjQyMzBiMy4uMTQwMGM4NzZhNzYwMDk0N2JkOTAyYTk0ZGQyNzcw
OWRiZmQzODIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDE0LTA1LTE2ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBDcmVhdGUgYSBVSVBy
aW50Rm9ybWF0dGVyIGZvciBXS1dlYlZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzMzAwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGVkIGEgVUlQcmludEZvcm1hdHRlciBzdWJjbGFz
cyB0byBzdXBwb3J0IHByaW50aW5nIFdLV2ViVmlld3MgdXNpbmcgVUlQcmludEludGVyYWN0aW9u
Q29udHJvbGxlci4KKyAgICAgICAgT3ZlcnJvZGUgLV9yZWNhbGNQYWdlQ291bnQ6IHRvIHN5bmNo
cm9ub3VzbHkgYXNrIHRoZSB3ZWIgcHJvY2VzcyB0byBsYXkgb3V0IGZvciBwcmludGluZyBhbmQg
cmV0dXJuIHRoZSBudW1iZXIKKyAgICAgICAgb2YgcGFnZSByZWN0cy4gVGhlIHdlYiBwcm9jZXNz
IHJldHVybnMgdGhlIHBhZ2UgcmVjdHMgaW1tZWRpYXRlbHkgYW5kIHRoZW4gc3RhcnRzIHJlbmRl
cmluZyB0aGUgcGFnZSB0byBhIFBERiwKKyAgICAgICAgcmV0dXJuaW5nIHRoZSBkYXRhIHRvIHRo
ZSBVSSBwcm9jZXNzIGFzeW5jaHJvbm91c2x5LiBXaGVuIFVJUHJpbnRJbnRlcmFjdGlvbkNvbnRy
b2xsZXIgbGF0ZXIgY2FsbHMgb3VyCisgICAgICAgIG92ZXJyaWRkZW4gLWRyYXdJblJlY3Q6Zm9y
UGFnZUF0SW5kZXg6LCB3ZSBibG9jayBhbmQgd2FpdCBmb3IgdGhlIFBERiBkYXRhIHRvIGJlIHJl
dHVybmVkLiBTaW5jZQorICAgICAgICBVSVByaW50SW50ZXJhY3Rpb25Db250cm9sbGVyIGRyYXdz
IGVhY2ggcGFnZSBhZnRlciBhIGRlbGF5LCBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIHdlYiBwcm9j
ZXNzIGhhcyBhbHJlYWR5CisgICAgICAgIHJldHVybmVkIHRoZSBQREYgZGF0YSB0byB1cyBieSB0
aGUgdGltZSB3ZSBwcmludCB0aGUgZmlyc3QgcGFnZS4KKworICAgICAgICAqIFNoYXJlZC9XZWJQ
cmVmZXJlbmNlc1N0b3JlLmg6IENvcnJlY3RseSBpbml0aWFsaXplZCBzaG91bGRQcmludEJhY2tn
cm91bmRzIGZvciBpT1MuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW06CisgICAgICAgICgtW1dLV2ViVmlldyBfZGF0YUZvckRpc3BsYXllZFBERl0pOiBOb3cgdGhh
dCBXS1BERlZpZXcgdmVuZHMgaXRzIENHUERGRG9jdW1lbnQgZGlyZWN0bHksIGV4dHJhY3QgaXRz
IGRhdGEgaGVyZS4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9wcmludEZvcm1hdHRlckNsYXNzXSk6
IFRlbGwgVUlWaWV3IHdoaWNoIFVJUHJpbnRGb3JtYXR0ZXIgdG8gYWxsb2MuCisgICAgICAgICgt
W1dLV2ViVmlldyBfY29tcHV0ZVBhZ2VDb3VudEFuZFN0YXJ0RHJhd2luZ1RvUERGV2l0aFByaW50
SW5mbzpXZWJLaXQ6OmZpcnN0UGFnZTpjb21wdXRlZFRvdGFsU2NhbGVGYWN0b3I6XSk6CisgICAg
ICAgIElmIHdlJ3JlIGRpc3BsYXlpbmcgYSBQREYsIHJldHVybiBpdHMgcGFnZSBjb3VudCBkaXJl
Y3RseS4gT3RoZXJ3aXNlLCBzeW5jaHJvbm91c2x5IGFzayB0aGUgd2ViIHByb2Nlc3MgdG8KKyAg
ICAgICAgY29tcHV0ZSBwYWdlIHJlY3RzIGZvciBwcmludGluZyBhbmQgdGhlbiByZXR1cm4gdGhl
IG51bWJlciBvZiByZWN0cy4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9lbmRQcmludGluZ10pOiBD
bGVhcmVkIHN0YXRlIGFuZCBzZW50IHRoZSBXZWJQYWdlOjpFbmRQcmludGluZyBtZXNzYWdlIHRv
IHRoZSB3ZWIgcHJvY2Vzcy4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9wcmludGVkRG9jdW1lbnRd
KTogSWYgd2UncmUgZGlzcGxheWluZyBhIFBERiwgcmV0dXJuIGl0cyBkYXRhIGRpcmVjdGx5LiBP
dGhlcndpc2UsIGlmIHdlIGhhdmVuJ3QKKyAgICAgICAgcmVjZWl2ZWQgUERGIGRhdGEgZnJvbSB0
aGUgd2ViIHByb2Nlc3MgeWV0LCB3YWl0IGZvciBpdCBpbmRlZmluaXRlbHkgKHRoZXJlJ3Mgbm8g
c2Vuc2libGUgdGltZW91dCB0byB1c2UgaGVyZQorICAgICAgICBzaW5jZSBmYWlsaW5nIHRvIHJl
Y2VpdmUgdGhlIGRhdGEgcmVzdWx0cyBpbiBwcmludGluZyBzb21lIG51bWJlciBvZiBibGFuayBw
YWdlcykuCisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0UHJpbnRlZERvY3VtZW50Ol0pOiBTZXQg
dGhlIENHUERGRG9jdW1lbnQgcmVjZWl2ZWQgZnJvbSB0aGUgd2ViIHByb2Nlc3MuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oOiBEZWNsYXJlZCBtZXRo
b2RzIGNhbGxlZCBieSBXS1dlYlZpZXdQcmludEZvcm1hdHRlci4KKyAgICAgICAgKiBVSVByb2Nl
c3MvUGFnZUNsaWVudC5oOiBEZWNsYXJlZCBkaWRGaW5pc2hEcmF3aW5nUGFnZXNUb1BERi4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIuaDogQWRkZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLm1tOiBBZGRlZC4KKyAgICAg
ICAgKC1bV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIgZGVhbGxvY10pOiBDbGVhcmVkIHN0YXRlIGFu
ZCBjYWxsZWQgLVtXS1dlYlZpZXcgX2VuZFByaW50aW5nXS4KKyAgICAgICAgKC1bV0tXZWJWaWV3
UHJpbnRGb3JtYXR0ZXIgd2ViVmlld10pOiBSZXR1cm5lZCB0aGUgV0tXZWJWaWV3IGZvciB0aGlz
IHByaW50IGZvcm1hdHRlci4KKyAgICAgICAgKC1bV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIgX3Jl
Y2FsY1BhZ2VDb3VudF0pOiBTZXQgdXAgYSBQcmludEluZm8gb2JqZWN0IGdpdmVuIHRoZSBmb3Jt
YXR0ZXIncyBjb250ZW50IHJlY3QKKyAgICAgICAgYW5kIGNhbGxlZCAtX2NvbXB1dGVQYWdlQ291
bnRBbmRTdGFydERyYXdpbmdUb1BERldpdGhQcmludEluZm86Li4uCisgICAgICAgICgtW1dLV2Vi
Vmlld1ByaW50Rm9ybWF0dGVyIHJlY3RGb3JQYWdlQXRJbmRleDpdKTogQ2FsbGVkIC1fcmVjYWxj
SWZOZWNlc3NhcnkgYW5kIHRoZW4gcmV0dXJuZWQgdGhlIHJlY3QgZnJvbQorICAgICAgICAtX3Bh
Z2VDb250ZW50UmVjdC4KKyAgICAgICAgKC1bV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIgZHJhd0lu
UmVjdDpmb3JQYWdlQXRJbmRleDpdKTogVGF1Z2h0IHRvIGRyYXcgdGhlIGdpdmVuIHBhZ2Ugb2Yg
dGhlIHByaW50ZWQgUERGCisgICAgICAgIGRvY3VtZW50IGludG8gdGhlIGdpdmVuIHJlY3QgYW5k
IGNvbnRleHQgcHJvdmlkZWQgdG8gdXMuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOiBEZWNsYXJlZCBkaWRGaW5pc2hEcmF3aW5nUGFnZXNUb1BERi4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZCBEaWRGaW5pc2hEcmF3aW5nUGFn
ZXNUb1BERi4gTWFkZSB0aGlzIGEgZGVsYXllZCBzeW5jcmhvbm91cyBtZXNzYWdlCisgICAgICAg
IHNvIHRoYXQgYWRkaXRvaW5hbCB3b3JrIGNvdWxkIGJlIHBlcmZvcm1lZCBhZnRlciBzZW5kaW5n
IHRoZSByZXNwb25zZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9T
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpZEZpbmlzaERyYXdpbmdQYWdlc1RvUERGKTog
Q3JlYXRlZCBhIENHUERGRG9jdW1lbnQgZnJvbSB0aGUgZGF0YSBzZW50IHRvIHVzIGJ5IHRoZQor
ICAgICAgICB3ZWIgcHJvY2VzcyBhbmQgY2FsbGVkIC1bV0tXZWJWaWV3IF9zZXRQcmludGVkRG9j
dW1lbnQ6XS4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLUERGVmlldy5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tOgorICAgICAgICAoLVtXS1BERlZpZXcgcGRmRG9j
dW1lbnRdKTogUmV0dXJuZWQgdGhlIHVuZGVybHlpbmcgQ0dQREZEb2N1bWVudC4KKyAgICAgICAg
KC1bV0tQREZWaWV3IGRvY3VtZW50RGF0YV0pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmRpZEZpbmlzaERyYXdpbmdQYWdlc1RvUERGKToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjb21wdXRlUGFnZXNGb3JQcmludGluZyk6
IENoYW5nZWQgdG8gY2FsbCBjb21wdXRlUGFnZXNGb3JQcmludGluZ0ltcGwuCisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nSW1wbCk6IE1vdmVkIHRoZSBj
b21tb24gbG9naWMgb2YgY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcgdG8gaGVyZSBzbyBpdAorICAg
ICAgICBjb3VsZCBiZSBjYWxsZWQgYnkgY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmRTdGFydERy
YXdpbmdUb1BERi4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZHJhd1BhZ2VzVG9QREYpOiBD
aGFuZ2VkIHRvIGNhbGwgZHJhd1BhZ2VzVG9QREZJbXBsCisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmRyYXdQYWdlc1RvUERGSW1wbCk6IE1vdmVkIHRoZSBjb21tb24gbG9naWMgb2YgZHJhd1Bh
Z2VzVG9QREYgdG8gaGVyZSBzbyBpdCBjb3VsZCBiZSBjYWxsZWQKKyAgICAgICAgYnkgY29tcHV0
ZVBhZ2VzRm9yUHJpbnRpbmdBbmRTdGFydERyYXdpbmdUb1BERi4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRp
bmdBbmRTdGFydERyYXdpbmdUb1BERik6IENvbXB1dGVkIHBhZ2UgcmVjdHMgYW5kIHJldHVybmVk
IHRoZW0gYXMgYQorICAgICAgICBzeW5jaHJvbm91cyByZXNwb25zZS4gQWZ0ZXJ3YXJkcyBjYWxs
ZWQgZHJhd1BhZ2VzVG9QREZJbXBsKCkgYW5kIHJldHVybmVkIHRoZSBQREYgZGF0YSBieSBzZW5k
aW5nCisgICAgICAgIFdlYlBhZ2VQcm94eTo6RGlkRmluaXNoRHJhd2luZ1BhZ2VzVG9QREYuCisK
IDIwMTQtMDUtMDkgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFtpT1NdIFN3aXRjaCBnZW9sb2NhdGlvbiB0byBhbiBleHBsaWNpdCBhdXRob3JpemF0
aW9uIHF1ZXJ5IG1vZGVsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJl
ZmVyZW5jZXNTdG9yZS5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3Rv
cmUuaAppbmRleCAzMjYyMGFiMTU1M2E1NzE4ZmYwNjQ0MmI4MWIwMmU3ZTZhYmUwZDhiLi5iMzVj
MTYwZjQ0ZmQ2NzI2OTk1NDIxOWMwZjFiYmU4MzAxNmQ0ZjFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmgKQEAgLTE0NSw3ICsxNDUsNyBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKICAgICBtYWNybyhQYWdpbmF0ZUR1cmluZ0xheW91dEVuYWJsZWQsIHBhZ2lu
YXRlRHVyaW5nTGF5b3V0RW5hYmxlZCwgQm9vbCwgYm9vbCwgZmFsc2UpIFwKICAgICBtYWNybyhE
T01QYXN0ZUFsbG93ZWQsIGRvbVBhc3RlQWxsb3dlZCwgQm9vbCwgYm9vbCwgZmFsc2UpIFwKICAg
ICBtYWNybyhKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkLCBqYXZhU2NyaXB0Q2FuQWNjZXNz
Q2xpcGJvYXJkLCBCb29sLCBib29sLCBmYWxzZSkgXAotICAgIG1hY3JvKFNob3VsZFByaW50QmFj
a2dyb3VuZHMsIHNob3VsZFByaW50QmFja2dyb3VuZHMsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCisg
ICAgbWFjcm8oU2hvdWxkUHJpbnRCYWNrZ3JvdW5kcywgc2hvdWxkUHJpbnRCYWNrZ3JvdW5kcywg
Qm9vbCwgYm9vbCwgREVGQVVMVF9TSE9VTERfUFJJTlRfQkFDS0dST1VORFMpIFwKICAgICBtYWNy
byhGdWxsU2NyZWVuRW5hYmxlZCwgZnVsbFNjcmVlbkVuYWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNl
KSBcCiAgICAgbWFjcm8oQXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQsIGFzeW5jaHJv
bm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkLCBCb29sLCBib29sLCBmYWxzZSkgXAogICAgIG1hY3Jv
KFdlYlNlY3VyaXR5RW5hYmxlZCwgd2ViU2VjdXJpdHlFbmFibGVkLCBCb29sLCBib29sLCB0cnVl
KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
CmluZGV4IDJlZDc3NTczNzJkM2U4ZmM3YjIwM2IxNTA1N2IwM2QzYWFhNzg5ZDAuLjJiZDY5MTEy
YzMwZWY3YTcxZDY2YTgyMzg1YjQxOGRlNDU2N2U5ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC02NywxMSArNjcsMTUgQEAKICNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKKyNpbXBvcnQgIlBy
aW50SW5mby5oIgogI2ltcG9ydCAiUHJvY2Vzc1Rocm90dGxlci5oIgogI2ltcG9ydCAiV0tQREZW
aWV3LmgiCiAjaW1wb3J0ICJXS1Njcm9sbFZpZXcuaCIKICNpbXBvcnQgIldLV2ViVmlld0NvbnRl
bnRQcm92aWRlclJlZ2lzdHJ5LmgiCisjaW1wb3J0ICJXS1dlYlZpZXdQcmludEZvcm1hdHRlci5o
IgorI2ltcG9ydCAiV2ViUGFnZU1lc3NhZ2VzLmgiCiAjaW1wb3J0IDxDb3JlR3JhcGhpY3MvQ0dG
bG9hdC5oPgorI2ltcG9ydCA8Q29yZUdyYXBoaWNzL0NHUERGRG9jdW1lbnRQcml2YXRlLmg+CiAj
aW1wb3J0IDxVSUtpdC9VSVBlcmlwaGVyYWxIb3N0X1ByaXZhdGUuaD4KICNpbXBvcnQgPFF1YXJ0
ekNvcmUvQ0FSZW5kZXJTZXJ2ZXIuaD4KICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29yZVBy
aXZhdGUuaD4KQEAgLTEyNCw2ICsxMjgsOSBAQCBAaW1wbGVtZW50YXRpb24gV0tXZWJWaWV3IHsK
ICAgICBCT09MIF9hbGxvd3NCYWNrRm9yd2FyZE5hdmlnYXRpb25HZXN0dXJlczsKIAogICAgIFJl
dGFpblB0cjxVSVZpZXcgPFdLV2ViVmlld0NvbnRlbnRQcm92aWRlcj4+IF9jdXN0b21Db250ZW50
VmlldzsKKworICAgIEJPT0wgX3BhZ2VJc1ByaW50aW5nVG9QREY7CisgICAgUmV0YWluUHRyPENH
UERGRG9jdW1lbnRSZWY+IF9wcmludGVkRG9jdW1lbnQ7CiAjZW5kaWYKICNpZiBQTEFURk9STShN
QUMpCiAgICAgUmV0YWluUHRyPFdLVmlldz4gX3drVmlldzsKQEAgLTE1OTAsNyArMTU5Nyw4IEBA
IC0gKE5TRGF0YSAqKV9kYXRhRm9yRGlzcGxheWVkUERGCiB7CiAgICAgaWYgKCFbc2VsZiBfaXNE
aXNwbGF5aW5nUERGXSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gWyhXS1BERlZp
ZXcgKilfY3VzdG9tQ29udGVudFZpZXcuZ2V0KCkgZG9jdW1lbnREYXRhXTsKKyAgICBDR1BERkRv
Y3VtZW50UmVmIHBkZkRvY3VtZW50ID0gWyhXS1BERlZpZXcgKilfY3VzdG9tQ29udGVudFZpZXcg
cGRmRG9jdW1lbnRdOworICAgIHJldHVybiBbKE5TRGF0YSAqKUNHRGF0YVByb3ZpZGVyQ29weURh
dGEoQ0dQREZEb2N1bWVudEdldERhdGFQcm92aWRlcihwZGZEb2N1bWVudCkpIGF1dG9yZWxlYXNl
XTsKIH0KIAogLSAoTlNTdHJpbmcgKilfc3VnZ2VzdGVkRmlsZW5hbWVGb3JEaXNwbGF5ZWRQREYK
QEAgLTE2OTksNCArMTcwNyw2NSBAQCBAZW5kCiAKICNlbmRpZgogCisjaWYgUExBVEZPUk0oSU9T
KQorQGltcGxlbWVudGF0aW9uIFdLV2ViVmlldyAoV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIpCisK
Ky0gKENsYXNzKV9wcmludEZvcm1hdHRlckNsYXNzCit7CisgICAgcmV0dXJuIFtXS1dlYlZpZXdQ
cmludEZvcm1hdHRlciBjbGFzc107Cit9CisKKy0gKE5TSW50ZWdlcilfY29tcHV0ZVBhZ2VDb3Vu
dEFuZFN0YXJ0RHJhd2luZ1RvUERGV2l0aFByaW50SW5mbzooY29uc3QgV2ViS2l0OjpQcmludElu
Zm8mKXByaW50SW5mbyBmaXJzdFBhZ2U6KHVpbnQzMl90KWZpcnN0UGFnZSBjb21wdXRlZFRvdGFs
U2NhbGVGYWN0b3I6KGRvdWJsZSYpdG90YWxTY2FsZUZhY3RvcgoreworICAgIGlmIChbc2VsZiBf
aXNEaXNwbGF5aW5nUERGXSkKKyAgICAgICAgcmV0dXJuIENHUERGRG9jdW1lbnRHZXROdW1iZXJP
ZlBhZ2VzKFsoV0tQREZWaWV3ICopX2N1c3RvbUNvbnRlbnRWaWV3IHBkZkRvY3VtZW50XSk7CisK
KyAgICBfcGFnZUlzUHJpbnRpbmdUb1BERiA9IFlFUzsKKyAgICBWZWN0b3I8V2ViQ29yZTo6SW50
UmVjdD4gcGFnZVJlY3RzOworICAgIGlmICghX3BhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpDb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZFN0YXJ0RHJhd2luZ1RvUERGKF9wYWdlLT5t
YWluRnJhbWUoKS0+ZnJhbWVJRCgpLCBwcmludEluZm8sIGZpcnN0UGFnZSksIE1lc3NhZ2VzOjpX
ZWJQYWdlOjpDb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZFN0YXJ0RHJhd2luZ1RvUERGOjpSZXBs
eShwYWdlUmVjdHMsIHRvdGFsU2NhbGVGYWN0b3IpKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAg
ICByZXR1cm4gcGFnZVJlY3RzLnNpemUoKTsKK30KKworLSAodm9pZClfZW5kUHJpbnRpbmcKK3sK
KyAgICBfcGFnZUlzUHJpbnRpbmdUb1BERiA9IE5POworICAgIF9wcmludGVkRG9jdW1lbnQgPSBu
dWxscHRyOworICAgIF9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpFbmRQcmludGluZygp
KTsKK30KKworLy8gRklYTUU6IG1pbGxpc2Vjb25kczo6bWF4KCkgb3ZlcmZsb3dzIHdoZW4gY29u
dmVydGVkIHRvIG5hbm9zZWNvbmRzLCBjYXVzaW5nIGNvbmRpdGlvbl92YXJpYWJsZTo6d2FpdF9m
b3IoKSB0byBiZWxpZXZlCisvLyBhIHRpbWVvdXQgb2NjdXJyZWQgb24gYW55IHNwdXJpb3VzIHdh
a2V1cC4gVXNlIG5hbm9zZWNvbmRzOjptYXgoKSAoY29udmVydGVkIHRvIG1zKSB0byBhdm9pZCB0
aGlzLiBXZSBzaG91bGQgcGVyaGFwcworLy8gY2hhbmdlIHdhaXRGb3JBbmREaXNwYXRjaEltbWVk
aWF0ZWx5KCkgdG8gdGFrZSBuYW5vc2Vjb25kcyB0byBhdm9pZCB0aGlzIGlzc3VlLgorc3RhdGlj
IGNvbnN0ZXhwciBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIGRpZEZpbmlzaExvYWRpbmdUaW1l
b3V0ID0gc3RkOjpjaHJvbm86OmR1cmF0aW9uX2Nhc3Q8c3RkOjpjaHJvbm86Om1pbGxpc2Vjb25k
cz4oc3RkOjpjaHJvbm86Om5hbm9zZWNvbmRzOjptYXgoKSk7CisKKy0gKENHUERGRG9jdW1lbnRS
ZWYpX3ByaW50ZWREb2N1bWVudAoreworICAgIGlmIChbc2VsZiBfaXNEaXNwbGF5aW5nUERGXSkg
eworICAgICAgICBBU1NFUlQoIV9wYWdlSXNQcmludGluZ1RvUERGKTsKKyAgICAgICAgcmV0dXJu
IFsoV0tQREZWaWV3ICopX2N1c3RvbUNvbnRlbnRWaWV3IHBkZkRvY3VtZW50XTsKKyAgICB9CisK
KyAgICBpZiAoX3BhZ2VJc1ByaW50aW5nVG9QREYpIHsKKyAgICAgICAgaWYgKCFfcGFnZS0+cHJv
Y2VzcygpLmNvbm5lY3Rpb24oKS0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHk8TWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RGlkRmluaXNoRHJhd2luZ1BhZ2VzVG9QREY+KF9wYWdlLT5wYWdl
SUQoKSwgZGlkRmluaXNoTG9hZGluZ1RpbWVvdXQpKSB7CisgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAg
ICAgIEFTU0VSVCghX3BhZ2VJc1ByaW50aW5nVG9QREYpOworICAgIH0KKyAgICByZXR1cm4gX3By
aW50ZWREb2N1bWVudC5nZXQoKTsKK30KKworLSAodm9pZClfc2V0UHJpbnRlZERvY3VtZW50OihD
R1BERkRvY3VtZW50UmVmKXByaW50ZWREb2N1bWVudAoreworICAgIGlmICghX3BhZ2VJc1ByaW50
aW5nVG9QREYpCisgICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQoIVtzZWxmIF9pc0Rpc3BsYXlp
bmdQREZdKTsKKyAgICBfcHJpbnRlZERvY3VtZW50ID0gcHJpbnRlZERvY3VtZW50OworICAgIF9w
YWdlSXNQcmludGluZ1RvUERGID0gTk87Cit9CisKK0BlbmQKKyNlbmRpZgorCiAjZW5kaWYgLy8g
V0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaAppbmRleCA2MWU3MzNlZWU0MjgzYjY3MTIzODVjYzQ4
ZWYzOTUxMjUzYmI2MWE3Li41OGU2NGFiMjk5ZmRlNmNkNmE0MzkyZGYyNGEwYWNhYWViNTBiMDlm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdJbnRlcm5hbC5oCkBAIC00Niw5ICs0NiwxMiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IGNsYXNzIFdlYlBhZ2VQcm94eTsKK3N0cnVjdCBQcmludEluZm87CiBzdHJ1Y3QgVmlld1NuYXBz
aG90OwogfQogCitAY2xhc3MgV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXI7CisKIEBpbnRlcmZhY2Ug
V0tXZWJWaWV3ICgpIFdLX1dFQl9WSUVXX1BST1RPQ09MUyB7CiAKIEBwYWNrYWdlCkBAIC03NCw0
ICs3NywxMiBAQCBzdHJ1Y3QgVmlld1NuYXBzaG90OwogI2VuZGlmCiBAZW5kCiAKKyNpZiBQTEFU
Rk9STShJT1MpCitAaW50ZXJmYWNlIFdLV2ViVmlldyAoV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIp
CistIChOU0ludGVnZXIpX2NvbXB1dGVQYWdlQ291bnRBbmRTdGFydERyYXdpbmdUb1BERldpdGhQ
cmludEluZm86KGNvbnN0IFdlYktpdDo6UHJpbnRJbmZvJilwcmludEluZm8gZmlyc3RQYWdlOih1
aW50MzJfdClmaXJzdFBhZ2UgY29tcHV0ZWRUb3RhbFNjYWxlRmFjdG9yOihkb3VibGUmKXRvdGFs
U2NhbGVGYWN0b3I7CistICh2b2lkKV9lbmRQcmludGluZzsKK0Bwcm9wZXJ0eSAobm9uYXRvbWlj
LCBzZXR0ZXI9X3NldFByaW50ZWREb2N1bWVudDopIENHUERGRG9jdW1lbnRSZWYgX3ByaW50ZWRE
b2N1bWVudDsKK0BlbmQKKyNlbmRpZgorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFn
ZUNsaWVudC5oCmluZGV4IGFiNzcyMWFiNjJkM2Q2ZmIyZjZlNDFhMTlhYTc3ZGRiNmQxNmVlZjcu
LjMzZGI5OGFlOTkxOTk1NmU5OWNhOTVjNDdkNjliZTg1MWViOWUxNDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtMjU2LDYgKzI1Niw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZGlkVXBkYXRlQmxvY2tTZWxlY3Rpb25XaXRoVG91Y2godWludDMyX3QgdG91
Y2gsIHVpbnQzMl90IGZsYWdzLCBmbG9hdCBncm93VGhyZXNob2xkLCBmbG9hdCBzaHJpbmtUaHJl
c2hvbGQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlja2VyKGJv
b2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0KSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHpvb21Ub1JlY3QoV2ViQ29yZTo6RmxvYXRSZWN0LCBkb3VibGUgbWlu
aW11bVNjYWxlLCBkb3VibGUgbWF4aW11bVNjYWxlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRp
ZEZpbmlzaERyYXdpbmdQYWdlc1RvUERGKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpID0gMDsK
IAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgdmlydHVhbCB2b2lkIHNob3dJbnNwZWN0b3JJ
bmRpY2F0aW9uKCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dL
V2ViVmlld1ByaW50Rm9ybWF0dGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV0tXZWJW
aWV3UHJpbnRGb3JtYXR0ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MTgwMzY2NGU5NmY3ODg5ZTUzNWM3ZjQ2
Mjk2OWE1YmVmMmI1NjlmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmgKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgPFVJS2l0L1VJUHJpbnRGb3JtYXR0ZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUv
SW50UmVjdC5oPgorI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgorCitAaW50ZXJmYWNlIFdLV2ViVmll
d1ByaW50Rm9ybWF0dGVyIDogVUlWaWV3UHJpbnRGb3JtYXR0ZXIKK0BlbmQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XS1dlYlZpZXdQcmludEZvcm1hdHRlci5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XS1dlYlZpZXdQcmludEZvcm1hdHRlci5tbQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45YjUzY2I3NjNkODFjN2MzZDg5ZGU4MWZmODk4ZjhiYWQxOGU2OGVlCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dLV2ViVmlld1ByaW50Rm9ybWF0dGVy
Lm1tCkBAIC0wLDAgKzEsMTA4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisj
aW1wb3J0ICJXS1dlYlZpZXdQcmludEZvcm1hdHRlci5oIgorCisjaWYgUExBVEZPUk0oSU9TKQor
CisjaW1wb3J0ICJQcmludEluZm8uaCIKKyNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCisj
aW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK0BpbnRlcmZhY2UgVUlQcmludEZvcm1hdHRlciAo
SVBJKQorLSAoQ0dSZWN0KV9wYWdlQ29udGVudFJlY3Q6KEJPT0wpZmlyc3RQYWdlOworLSAodm9p
ZClfcmVjYWxjSWZOZWNlc3Nhcnk7CitAZW5kCisKK0BpbnRlcmZhY2UgV0tXZWJWaWV3UHJpbnRG
b3JtYXR0ZXIgKCkKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgV0tXZWJWaWV3ICp3
ZWJWaWV3OworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIg
eworICAgIGRvdWJsZSBfdG90YWxTY2FsZUZhY3RvcjsKKyAgICBXZWJLaXQ6OlByaW50SW5mbyBf
cHJpbnRJbmZvOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBbc2VsZi53ZWJWaWV3IF9l
bmRQcmludGluZ107CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistIChXS1dlYlZpZXcgKil3
ZWJWaWV3Cit7CisgICAgQVNTRVJUKFtzZWxmLnZpZXcgaXNLaW5kT2ZDbGFzczpbV0tXZWJWaWV3
IGNsYXNzXV0pOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXS1dlYlZpZXcgKj4oc2VsZi52aWV3
KTsKK30KKworLSAoTlNJbnRlZ2VyKV9yZWNhbGNQYWdlQ291bnQKK3sKKyAgICBBU1NFUlQoW3Nl
bGYgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihfcGFnZUNvbnRlbnRSZWN0OildKTsKKwor
ICAgIENHUmVjdCBmaXJzdFJlY3QgPSBbc2VsZiBfcGFnZUNvbnRlbnRSZWN0OllFU107CisgICAg
Q0dSZWN0IG5leHRSZWN0ID0gW3NlbGYgX3BhZ2VDb250ZW50UmVjdDpOT107CisgICAgaWYgKENH
UmVjdElzRW1wdHkoZmlyc3RSZWN0KSB8fCBDR1JlY3RJc0VtcHR5KG5leHRSZWN0KSkKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICAvLyBUaGUgZmlyc3QgcGFnZSBjYW4gaGF2ZSBhIHNtYWxsZXIg
Y29udGVudCByZWN0IHRoYW4gc3Vic2VxdWVudCBwYWdlcyBpZiBhIHRvcCBjb250ZW50IGluc2V0
IGlzIHNwZWNpZmllZC4gU2luY2UKKyAgICAvLyBXZWJLaXQgcmVxdWlyZXMgYSB1bmlmb3JtIGNv
bnRlbnQgcmVjdCBmb3IgZWFjaCBwYWdlIGR1cmluZyBsYXlvdXQsIHVzZSB0aGUgZmlyc3QgcGFn
ZSByZWN0IGZvciBhbGwgcGFnZXMgaWYgaXQncworICAgIC8vIHNtYWxsZXIuIFRoaXMgaXMgd2hh
dCBVSVdlYlZpZXcncyBwcmludCBmb3JtYXR0ZXIgZG9lcy4KKyAgICBBU1NFUlQoZmlyc3RSZWN0
LnNpemUud2lkdGggPT0gbmV4dFJlY3Quc2l6ZS53aWR0aCk7CisgICAgQVNTRVJUKGZpcnN0UmVj
dC5vcmlnaW4ueSA+PSBuZXh0UmVjdC5vcmlnaW4ueSk7CisgICAgX3ByaW50SW5mby5wYWdlU2V0
dXBTY2FsZUZhY3RvciA9IDE7CisgICAgX3ByaW50SW5mby5hdmFpbGFibGVQYXBlcldpZHRoID0g
bmV4dFJlY3Quc2l6ZS53aWR0aDsKKyAgICBfcHJpbnRJbmZvLmF2YWlsYWJsZVBhcGVySGVpZ2h0
ID0gbmV4dFJlY3Quc2l6ZS5oZWlnaHQgLSAoZmlyc3RSZWN0Lm9yaWdpbi55IC0gbmV4dFJlY3Qu
b3JpZ2luLnkpOworCisgICAgcmV0dXJuIFtzZWxmLndlYlZpZXcgX2NvbXB1dGVQYWdlQ291bnRB
bmRTdGFydERyYXdpbmdUb1BERldpdGhQcmludEluZm86X3ByaW50SW5mbyBmaXJzdFBhZ2U6c2Vs
Zi5zdGFydFBhZ2UgY29tcHV0ZWRUb3RhbFNjYWxlRmFjdG9yOl90b3RhbFNjYWxlRmFjdG9yXTsK
K30KKworLSAoQ0dSZWN0KXJlY3RGb3JQYWdlQXRJbmRleDooTlNJbnRlZ2VyKXBhZ2VJbmRleAor
eworICAgIEFTU0VSVChbc2VsZiByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9yZWNhbGNJ
Zk5lY2Vzc2FyeSldKTsKKyAgICBbc2VsZiBfcmVjYWxjSWZOZWNlc3NhcnldOworICAgIHJldHVy
biBbc2VsZiBfcGFnZUNvbnRlbnRSZWN0OnBhZ2VJbmRleCA9PSBzZWxmLnN0YXJ0UGFnZV07Cit9
CisKKy0gKHZvaWQpZHJhd0luUmVjdDooQ0dSZWN0KXJlY3QgZm9yUGFnZUF0SW5kZXg6KE5TSW50
ZWdlcilwYWdlSW5kZXgKK3sKKyAgICAvLyBDR1BERkRvY3VtZW50cyB1c2UgMS1iYXNlZCBwYWdl
IGluZGV4aW5nLgorICAgIENHUERGUGFnZVJlZiBwZGZQYWdlID0gQ0dQREZEb2N1bWVudEdldFBh
Z2Uoc2VsZi53ZWJWaWV3Ll9wcmludGVkRG9jdW1lbnQsIHBhZ2VJbmRleCAtIHNlbGYuc3RhcnRQ
YWdlICsgMSk7CisKKyAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IFVJR3JhcGhpY3NHZXRDdXJy
ZW50Q29udGV4dCgpOworICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY29udGV4dCk7CisKKyAgICBD
R0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwgcmVjdC5vcmlnaW4ueCwgcmVjdC5vcmlnaW4u
eSk7CisgICAgQ0dDb250ZXh0U2NhbGVDVE0oY29udGV4dCwgX3RvdGFsU2NhbGVGYWN0b3IsIC1f
dG90YWxTY2FsZUZhY3Rvcik7CisgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNvbnRleHQsIDAs
IC1DR1BERlBhZ2VHZXRCb3hSZWN0KHBkZlBhZ2UsIGtDR1BERk1lZGlhQm94KS5zaXplLmhlaWdo
dCk7CisgICAgQ0dDb250ZXh0Q2xpcFRvUmVjdChjb250ZXh0LCBDR1BERlBhZ2VHZXRCb3hSZWN0
KHBkZlBhZ2UsIGtDR1BERkNyb3BCb3gpKTsKKyAgICBDR0NvbnRleHREcmF3UERGUGFnZShjb250
ZXh0LCBwZGZQYWdlKTsKKworICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY29udGV4dCk7Cit9
CisKK0BlbmQKKworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAppbmRleCBiOTY2OWY0MDhhNzBhZmE2YzVmOGM5NWE0ZjhiOGQwOGZk
Y2FlNDYzLi4yZTg5MDI3OTkyMzI3MjY5YWI1ODUwNDMzZDkxMzk5NzViZTI4ZGRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC02MjYsNiArNjI2LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgem9vbVRvUmVjdChXZWJDb3JlOjpGbG9hdFJlY3QsIGRvdWJsZSBtaW5p
bXVtU2NhbGUsIGRvdWJsZSBtYXhpbXVtU2NhbGUpOwogICAgIHZvaWQgY29tbWl0UG90ZW50aWFs
VGFwRmFpbGVkKCk7CiAgICAgdm9pZCBkaWROb3RIYW5kbGVUYXBBc0NsaWNrKGNvbnN0IFdlYkNv
cmU6OkludFBvaW50Jik7CisgICAgdm9pZCBkaWRGaW5pc2hEcmF3aW5nUGFnZXNUb1BERihjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKICNlbmRpZgogCiAgICAgY29uc3QgRWRpdG9yU3RhdGUm
IGVkaXRvclN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9lZGl0b3JTdGF0ZTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMjQ4
NmI2NTRmMDhkZjBmOGZkYTZhNTUzOGY0ZTE0Y2M3NTVjZDc1NS4uZjdiZjRmYTE3ZTVkOWExZWVj
MDVhYTJkZWZlYjJmNzM5NmEzYzUyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xNzEsNiArMTcxLDcgQEAgbWVzc2FnZXMg
LT4gV2ViUGFnZVByb3h5IHsKICAgICBab29tVG9SZWN0KFdlYkNvcmU6OkZsb2F0UmVjdCByZWN0
LCBkb3VibGUgbWluaW11bVNjYWxlLCBkb3VibGUgbWF4aW11bVNjYWxlKQogICAgIENvbW1pdFBv
dGVudGlhbFRhcEZhaWxlZCgpCiAgICAgRGlkTm90SGFuZGxlVGFwQXNDbGljayhXZWJDb3JlOjpJ
bnRQb2ludCBwb2ludCkKKyAgICBEaWRGaW5pc2hEcmF3aW5nUGFnZXNUb1BERihJUEM6OkRhdGFS
ZWZlcmVuY2UgcGRmRGF0YSkKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKICAgICBQcmludEZp
bmlzaGVkQ2FsbGJhY2soV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgdWludDY0X3QgY2Fs
bGJhY2tJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudElt
cGxJT1MuaAppbmRleCAyZGZkNDRlMTE2ZGIxMTM1N2RhOTZmNzMwNzkzODEzNDQzZGZjNWM1Li5i
NmU5MWNlNTMzZTRkMjNhODgxYWVkNDdiOGIxY2NhZTY3NDY2ZThkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0xMjksNiArMTI5
LDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIHpvb21Ub1JlY3QoV2Vi
Q29yZTo6RmxvYXRSZWN0LCBkb3VibGUgbWluaW11bVNjYWxlLCBkb3VibGUgbWF4aW11bVNjYWxl
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoRHJhd2luZ1BhZ2VzVG9QREYo
Y29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJikgb3ZlcnJpZGU7CiAKICAgICAvLyBBdXhpbGlhcnkg
Q2xpZW50IENyZWF0aW9uCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggZTgzMGY0
OTk1ODE4MzQ2N2FmYjZiOWEzYjAyOGNiZWNmZWVkNzZjZC4uNDMzYmZkZDMwMmEyZDg4MTRhZTQz
YjdjOTA1Zjc5NDYzODk5YmIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCkBAIC00ODUsNiArNDg1LDEzIEBAIHZvaWQgUGFnZUNs
aWVudEltcGw6Onpvb21Ub1JlY3QoRmxvYXRSZWN0IHJlY3QsIGRvdWJsZSBtaW5pbXVtU2NhbGUs
IGRvdWJsZSBtYXhpCiAgICAgW21fY29udGVudFZpZXcgX3pvb21Ub1JlY3Q6cmVjdCB3aXRoT3Jp
Z2luOnJlY3QuY2VudGVyKCkgZml0RW50aXJlUmVjdDpZRVMgbWluaW11bVNjYWxlOm1pbmltdW1T
Y2FsZSBtYXhpbXVtU2NhbGU6bWF4aW11bVNjYWxlIG1pbmltdW1TY3JvbGxEaXN0YW5jZTowXTsK
IH0KIAordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkRmluaXNoRHJhd2luZ1BhZ2VzVG9QREYoY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBwZGZEYXRhKQoreworICAgIFJldGFpblB0cjxDRkRhdGFS
ZWY+IGRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwZGZE
YXRhLmRhdGEoKSwgcGRmRGF0YS5zaXplKCkpKTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlk
ZXJSZWY+IGRhdGFQcm92aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZE
YXRhKGRhdGEuZ2V0KCkpKTsKKyAgICBtX3dlYlZpZXcuX3ByaW50ZWREb2N1bWVudCA9IGFkb3B0
Q0YoQ0dQREZEb2N1bWVudENyZWF0ZVdpdGhQcm92aWRlcihkYXRhUHJvdmlkZXIuZ2V0KCkpKS5n
ZXQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFURk9STShJ
T1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcuaAppbmRleCA5MzBkNTYw
Mzc2ZGYwNWVhMmY1OGY0MmZiNmFiNTY4ZmE1ODAzZGRkLi5hOGNmYTZjMjQ2MDY4MDViOWMyYjkz
NjAxNWJmN2Y0YTU0ZmFmZThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1dLUERGVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tQREZW
aWV3LmgKQEAgLTMwLDggKzMwLDggQEAKIAogQGludGVyZmFjZSBXS1BERlZpZXcgOiBVSVZpZXcg
PFdLV2ViVmlld0NvbnRlbnRQcm92aWRlcj4KIAotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5KSBOU0RhdGEgKmRvY3VtZW50RGF0YTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSkgTlNTdHJpbmcgKnN1Z2dlc3RlZEZpbGVuYW1lOworQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5KSBDR1BERkRvY3VtZW50UmVmIHBkZkRvY3VtZW50OwogCiBAZW5kCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW0KaW5kZXggODA5NTU4ODc2ZjBlNzQwMzY1
MTE3NzdiZWUyOGM0NjliYmY4YzcxYy4uZWQyY2U0NWUwNDY0MDViNmJkZjY4NTg0OGQ1MTQyNmY0
YTZjNzMxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS1BERlZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW0KQEAg
LTI4LDcgKzI4LDcgQEAKIAogI2lmIFBMQVRGT1JNKElPUykKIAotI2ltcG9ydCA8Q29yZUdyYXBo
aWNzL0NHUERGRG9jdW1lbnRQcml2YXRlLmg+CisKICNpbXBvcnQgPENvcmVQREYvVUlQREZEb2N1
bWVudC5oPgogI2ltcG9ydCA8Q29yZVBERi9VSVBERlBhZ2VWaWV3Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL0Zsb2F0UmVjdC5oPgpAQCAtNzAsMTYgKzcwLDE2IEBAIC0gKGluc3RhbmNldHlwZSlpbml0
V2l0aEZyYW1lOihDR1JlY3QpZnJhbWUKICAgICByZXR1cm4gc2VsZjsKIH0KIAotLSAoTlNEYXRh
ICopZG9jdW1lbnREYXRhCi17ICAgIAotICAgIHJldHVybiBbKE5TRGF0YSAqKUNHRGF0YVByb3Zp
ZGVyQ29weURhdGEoQ0dQREZEb2N1bWVudEdldERhdGFQcm92aWRlcihbX3BkZkRvY3VtZW50IENH
RG9jdW1lbnRdKSkgYXV0b3JlbGVhc2VdOwotfQotCiAtIChOU1N0cmluZyAqKXN1Z2dlc3RlZEZp
bGVuYW1lCiB7CiAgICAgcmV0dXJuIF9zdWdnZXN0ZWRGaWxlbmFtZS5nZXQoKTsKIH0KIAorLSAo
Q0dQREZEb2N1bWVudFJlZilwZGZEb2N1bWVudAoreworICAgIHJldHVybiBbX3BkZkRvY3VtZW50
IENHRG9jdW1lbnRdOworfQorCiAtICh2b2lkKXdlYl9zZXRDb250ZW50UHJvdmlkZXJEYXRhOihO
U0RhdGEgKilkYXRhIHN1Z2dlc3RlZEZpbGVuYW1lOihOU1N0cmluZyAqKWZpbGVuYW1lCiB7CiAg
ICAgX3N1Z2dlc3RlZEZpbGVuYW1lID0gYWRvcHROUyhbZmlsZW5hbWUgY29weV0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCBiODZh
ZjA1YTE0ZDAzMWYyZTIyMGI4MjRkMGI2M2YwN2ZlYjA5MzIwLi40MGEzNGViNmRkYWI2Y2MwMmNi
Y2QzNWY1NWYyMzdiYzBjYWU0YWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtNjAzLDYgKzYwMywxMSBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkTm90SGFuZGxlVGFwQXNDbGljayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9p
bnQpCiAgICAgbV91aUNsaWVudC0+ZGlkTm90SGFuZGxlVGFwQXNDbGljayhwb2ludCk7CiB9CiAK
K3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hEcmF3aW5nUGFnZXNUb1BERihjb25zdCBJUEM6
OkRhdGFSZWZlcmVuY2UmIHBkZkRhdGEpCit7CisgICAgbV9wYWdlQ2xpZW50LmRpZEZpbmlzaERy
YXdpbmdQYWdlc1RvUERGKHBkZkRhdGEpOworfQorCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAg
CiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1h
aW5GcmFtZShjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIHV0aSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAw
MmRlZDQ2NDIxMTYxNGVmMjg3MTBmZjY1ZmE4ZWJhM2E3ZTVhMTAxLi43YTIyODU2NDFlODJiM2Fh
ZjRhNDQ0MmEwYTNhMWI4Mzg5MWFkZjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJL
aXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDM0LDYgKzEwMzQsOCBAQAogCQk5RjU0
Rjg5NTE2NDhBRTBGMDA3REY4MUEgLyogUGx1Z2luUHJvY2Vzc01hbmFnZXJNYWMubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5RjU0Rjg5NDE2NDhBRTBF
MDA3REY4MUEgLyogUGx1Z2luUHJvY2Vzc01hbmFnZXJNYWMubW0gKi87IH07CiAJCTlGQjVGMzk0
MTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUZCNUYzOTIxNjlFNkE4MDAwMkMyNUJG
IC8qIFdLQ29udGV4dFByaXZhdGVNYWMubW0gKi87IH07CiAJCTlGQjVGMzk1MTY5RTZBODAwMDJD
MjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5RkI1RjM5MzE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0
UHJpdmF0ZU1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCUExMTVEQzcxMTkxRDgyRDcwMERBODA3MiAvKiBXS1dlYlZpZXdQcmludEZvcm1hdHRl
ci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMTVE
QzZEMTkxRDgyQUIwMERBODA3MiAvKiBXS1dlYlZpZXdQcmludEZvcm1hdHRlci5tbSAqLzsgfTsK
KwkJQTExNURDNzIxOTFEODJEQTAwREE4MDcyIC8qIFdLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTE1REM2RTE5
MUQ4MkFCMDBEQTgwNzIgLyogV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIuaCAqLzsgfTsKIAkJQTEx
OEE5RUUxOTA3QUQ2RjAwRjdDOTJCIC8qIFF1aWNrTG9va0RvY3VtZW50RGF0YS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTE4QTlFQzE5MDdBRDZG
MDBGN0M5MkIgLyogUXVpY2tMb29rRG9jdW1lbnREYXRhLmNwcCAqLzsgfTsKIAkJQTExOEE5RUYx
OTA3QUQ2RjAwRjdDOTJCIC8qIFF1aWNrTG9va0RvY3VtZW50RGF0YS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTExOEE5RUQxOTA3QUQ2RjAwRjdDOTJC
IC8qIFF1aWNrTG9va0RvY3VtZW50RGF0YS5oICovOyB9OwogCQlBMTE4QTlGMjE5MDhCOEVBMDBG
N0M5MkIgLyogX1dLTlNGaWxlTWFuYWdlckV4dHJhcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMThBOUYwMTkwOEI4RUEwMEY3QzkyQiAvKiBfV0tO
U0ZpbGVNYW5hZ2VyRXh0cmFzLm1tICovOyB9OwpAQCAtMjk0MCw2ICsyOTQyLDggQEAKIAkJOUY1
NEY4OTQxNjQ4QUUwRTAwN0RGODFBIC8qIFBsdWdpblByb2Nlc3NNYW5hZ2VyTWFjLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGx1Z2luUHJvY2Vzc01hbmFnZXJN
YWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlGQjVGMzkyMTY5RTZBODAwMDJD
MjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBuYW1lID0gV0tDb250ZXh0UHJpdmF0ZU1hYy5tbTsgcGF0aCA9IG1hYy9XS0NvbnRl
eHRQcml2YXRlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5RkI1RjM5MzE2
OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBXS0NvbnRleHRQcml2YXRlTWFjLmg7IHBhdGggPSBtYWMvV0tDb250
ZXh0UHJpdmF0ZU1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTE1REM2RDE5
MUQ4MkFCMDBEQTgwNzIgLyogV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlZpZXdQcmludEZvcm1hdHRlci5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTExNURDNkUxOTFEODJBQjAwREE4MDcyIC8q
IFdLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUExMThBOUVDMTkwN0FENkYwMEY3QzkyQiAvKiBRdWlja0xvb2tEb2N1bWVudERhdGEuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUXVpY2tMb29rRG9jdW1lbnRE
YXRhLmNwcDsgcGF0aCA9IGlvcy9RdWlja0xvb2tEb2N1bWVudERhdGEuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBMTE4QTlFRDE5MDdBRDZGMDBGN0M5MkIgLyogUXVpY2tMb29r
RG9jdW1lbnREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFF1aWNrTG9v
a0RvY3VtZW50RGF0YS5oOyBwYXRoID0gaW9zL1F1aWNrTG9va0RvY3VtZW50RGF0YS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTE4QTlGMDE5MDhCOEVBMDBGN0M5MkIgLyogX1dL
TlNGaWxlTWFuYWdlckV4dHJhcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IF9XS05TRmlsZU1hbmFnZXJFeHRyYXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC00NTg0LDYgKzQ1ODgsOCBAQAogCQkJCTBGQ0I0RTQxMThCQkUwNDQwMDBGQ0ZDOSAv
KiBXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1NPYmpDU2VjdXJpdHlPcmlnaW4ubW0gKi8sCiAJCQkJ
MEZDQjRFNDQxOEJCRTA0NDAwMEZDRkM5IC8qIFdLU2Nyb2xsVmlldy5oICovLAogCQkJCTBGQ0I0
RTQ1MThCQkUwNDQwMDBGQ0ZDOSAvKiBXS1Njcm9sbFZpZXcubW0gKi8sCisJCQkJQTExNURDNkUx
OTFEODJBQjAwREE4MDcyIC8qIFdLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmggKi8sCisJCQkJQTEx
NURDNkQxOTFEODJBQjAwREE4MDcyIC8qIFdLV2ViVmlld1ByaW50Rm9ybWF0dGVyLm1tICovLAog
CQkJKTsKIAkJCW5hbWUgPSBpb3M7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNjg3
OCw2ICs2ODg0LDcgQEAKIAkJCQkxQTlFMzI4OTE4MjE2MzY5MDBGNUQwNEMgLyogX1dLUmVtb3Rl
T2JqZWN0UmVnaXN0cnkuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNjU0RUZFMTg0RUYzM0YwMDdE
QzgzNyAvKiBVbmlxdWVJREJEYXRhYmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMzM0UwRDExMjQwOEU4NjAwMzYwRjNGIC8qIEluamVjdGVkQnVuZGxlUmFuZ2VI
YW5kbGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUExMTVEQzcyMTkxRDgyREEwMERBODA3MiAvKiBX
S1dlYlZpZXdQcmludEZvcm1hdHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDQjRFNjAxOEJC
RTNEOTAwMEZDRkM5IC8qIEZpbmRJbmRpY2F0b3JXaW5kb3cuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDMTRERjc3MTIwQjVCNzkwMDgyNkMwQyAvKiBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQ0IwQjBERTEyMzA1QThDMDBCMTM0MUUgLyogSW5qZWN0ZWRC
dW5kbGVVc2VyTWVzc2FnZUNvZGVycy5oIGluIEhlYWRlcnMgKi8sCkBAIC04Nzg0LDYgKzg3OTEs
NyBAQAogCQkJCTUxOUVGNThFMThFRjc3MEQwMDAzQjdGNCAvKiBUZWxlcGhvbmVOdW1iZXJPdmVy
bGF5Q29udHJvbGxlck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDRjY5RkEzMTE3NkQwMTQw
MDQ3MUE1MiAvKiBBUElOYXZpZ2F0aW9uRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMUEy
RUM0ODE0ODk5N0MyMDA4MTBENzEgLyogV2ViTm90aWZpY2F0aW9uLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUExMTVEQzcxMTkxRDgyRDcwMERBODA3MiAvKiBXS1dlYlZpZXdQcmludEZvcm1hdHRl
ci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTMxMDk5OTczMTQ2Qzc1QTIwMDI5REVCOSAvKiBXZWJO
b3RpZmljYXRpb25DbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRERTBBRkIxODI5OEND
OTAwRjk3RUFBIC8qIFJlbW90ZUxheWVyVHJlZVByb3BlcnR5QXBwbGllci5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTMxMzEyNjIwMTQ4RkY4MkMwMEJBMkEzOSAvKiBXZWJOb3RpZmljYXRpb25NYW5h
Z2VyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCmluZGV4IDg0NjQyMThiYzZiYzFhMzI0Mjk3OWUzZWE4N2E2YjZjNDQ3
ZjQwYjIuLjJhNDc5NDBlMWU1Y2EwZjMzZjAzMWE2OTAxNWEyNDYzYzU5Nzg3N2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM1OTIsNiAr
MzU5MiwxMyBAQCB2b2lkIFdlYlBhZ2U6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nKHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbgogewogICAgIFZlY3RvcjxJbnRSZWN0
PiByZXN1bHRQYWdlUmVjdHM7CiAgICAgZG91YmxlIHJlc3VsdFRvdGFsU2NhbGVGYWN0b3JGb3JQ
cmludGluZyA9IDE7CisgICAgY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdJbXBsKGZyYW1lSUQsIHBy
aW50SW5mbywgcmVzdWx0UGFnZVJlY3RzLCByZXN1bHRUb3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRp
bmcpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6Q29tcHV0ZWRQYWdlc0NhbGxi
YWNrKHJlc3VsdFBhZ2VSZWN0cywgcmVzdWx0VG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCBj
YWxsYmFja0lEKSk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdJ
bXBsKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBWZWN0b3I8
V2ViQ29yZTo6SW50UmVjdD4mIHJlc3VsdFBhZ2VSZWN0cywgZG91YmxlJiByZXN1bHRUb3RhbFNj
YWxlRmFjdG9yRm9yUHJpbnRpbmcpCit7CisgICAgQVNTRVJUKHJlc3VsdFBhZ2VSZWN0cy5pc0Vt
cHR5KCkpOwogCiAgICAgYmVnaW5QcmludGluZyhmcmFtZUlELCBwcmludEluZm8pOwogCkBAIC0z
NjA3LDggKzM2MTQsNiBAQCB2b2lkIFdlYlBhZ2U6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nKHVp
bnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbgogICAgIC8vIElmIHdlJ3Jl
IGFza2VkIHRvIHByaW50LCB3ZSBzaG91bGQgYWN0dWFsbHkgcHJpbnQgYXQgbGVhc3QgYSBibGFu
ayBwYWdlLgogICAgIGlmIChyZXN1bHRQYWdlUmVjdHMuaXNFbXB0eSgpKQogICAgICAgICByZXN1
bHRQYWdlUmVjdHMuYXBwZW5kKEludFJlY3QoMCwgMCwgMSwgMSkpOwotCi0gICAgc2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpDb21wdXRlZFBhZ2VzQ2FsbGJhY2socmVzdWx0UGFnZVJlY3Rz
LCByZXN1bHRUb3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIGNhbGxiYWNrSUQpKTsKIH0KIAog
I2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtMzY1OSwxMCArMzY2NCwxNyBAQCB2b2lkIFdlYlBhZ2U6
OmRyYXdSZWN0VG9JbWFnZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50
SW5mbywgY29ucwogCiB2b2lkIFdlYlBhZ2U6OmRyYXdQYWdlc1RvUERGKHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3Qg
Y291bnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB7CisgICAgUmV0YWluUHRyPENGTXV0YWJsZURh
dGFSZWY+IHBkZlBhZ2VEYXRhOworICAgIGRyYXdQYWdlc1RvUERGSW1wbChmcmFtZUlELCBwcmlu
dEluZm8sIGZpcnN0LCBjb3VudCwgcGRmUGFnZURhdGEpOworICAgIHNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGF0YUNhbGxiYWNrKElQQzo6RGF0YVJlZmVyZW5jZShDRkRhdGFHZXRCeXRl
UHRyKHBkZlBhZ2VEYXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKHBkZlBhZ2VEYXRhLmdldCgp
KSksIGNhbGxiYWNrSUQpKTsKK30KKwordm9pZCBXZWJQYWdlOjpkcmF3UGFnZXNUb1BERkltcGwo
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIHVpbnQzMl90IGZp
cnN0LCB1aW50MzJfdCBjb3VudCwgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+JiBwZGZQYWdl
RGF0YSkKK3sKICAgICBXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaGFyZWQoKS53ZWJG
cmFtZShmcmFtZUlEKTsKICAgICBGcmFtZSogY29yZUZyYW1lID0gZnJhbWUgPyBmcmFtZS0+Y29y
ZUZyYW1lKCkgOiAwOwogCi0gICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IHBkZlBhZ2VE
YXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVNdXRhYmxlKDAsIDApKTsKKyAgICBwZGZQYWdlRGF0
YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZSgwLCAwKSk7CiAKICNpZiBVU0UoQ0cpCiAg
ICAgaWYgKGNvcmVGcmFtZSkgewpAQCAtMzcwNSw4ICszNzE3LDYgQEAgdm9pZCBXZWJQYWdlOjpk
cmF3UGFnZXNUb1BERih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5m
bywgdWludDMKICAgICAgICAgQ0dQREZDb250ZXh0Q2xvc2UoY29udGV4dC5nZXQoKSk7CiAgICAg
fQogI2VuZGlmCi0KLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRhdGFDYWxsYmFj
ayhJUEM6OkRhdGFSZWZlcmVuY2UoQ0ZEYXRhR2V0Qnl0ZVB0cihwZGZQYWdlRGF0YS5nZXQoKSks
IENGRGF0YUdldExlbmd0aChwZGZQYWdlRGF0YS5nZXQoKSkpLCBjYWxsYmFja0lEKSk7CiB9CiAK
ICNlbGlmIFBMQVRGT1JNKEdUSykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCmluZGV4IGI5NTFlZjQzMGY1NTZiNTU5YzZkOTExNjU4NGNmYzMzZWNmMmI3OWMu
LmNjMDcyZDc1YzUxMDkxYzM1NGExYzM5YjNlOWVmNzg1Y2ZhNDViYzQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNzcsNiArNzcsNyBAQAogCiAj
aWYgUExBVEZPUk0oSU9TKQogI2luY2x1ZGUgIkdlc3R1cmVUeXBlcy5oIgorI2ltcG9ydCAiV2Vi
UGFnZU1lc3NhZ2VzLmgiCiAjZW5kaWYKIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCkBAIC02
NTAsOSArNjUxLDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIGJlZ2luUHJpbnRpbmcodWludDY0X3Qg
ZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJik7CiAgICAgdm9pZCBlbmRQcmludGluZygpOwogICAg
IHZvaWQgY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJp
bnRJbmZvJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBjb21wdXRlUGFnZXNGb3JQ
cmludGluZ0ltcGwodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiwgVmVjdG9yPFdl
YkNvcmU6OkludFJlY3Q+JiBwYWdlUmVjdHMsIGRvdWJsZSYgdG90YWxTY2FsZUZhY3Rvcik7CiAj
aWYgUExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCBkcmF3UmVjdFRvSW1hZ2UodWludDY0X3QgZnJh
bWVJRCwgY29uc3QgUHJpbnRJbmZvJiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdl
YkNvcmU6OkludFNpemUmLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGRyYXdQYWdl
c1RvUERGKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYsIHVpbnQzMl90IGZpcnN0
LCB1aW50MzJfdCBjb3VudCwgdWludDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBkcmF3UGFn
ZXNUb1BERkltcGwodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMyX3Qg
Zmlyc3QsIHVpbnQzMl90IGNvdW50LCBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4mIHBkZlBh
Z2VEYXRhKTsKKyNpZiBQTEFURk9STShJT1MpCisgICAgdm9pZCBjb21wdXRlUGFnZXNGb3JQcmlu
dGluZ0FuZFN0YXJ0RHJhd2luZ1RvUERGKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5m
byYsIHVpbnQzMl90IGZpcnN0UGFnZSwgUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUGFnZTo6Q29t
cHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmRTdGFydERyYXdpbmdUb1BERjo6RGVsYXllZFJlcGx5Pik7
CisjZW5kaWYKICNlbGlmIFBMQVRGT1JNKEdUSykKICAgICB2b2lkIGRyYXdQYWdlc0ZvclByaW50
aW5nKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpOwogICAgIHZvaWQgZGlkRmluaXNoUHJpbnRPcGVyYXRpb24oY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBhMTQwY2Yw
YTg0YmQyMDIyYjg0MDViMjZiMDdjMWNiMjk1MzhkNmNkLi4wODYzNGIyNGVlZTA3ZDI3NDRlNzhm
OGE5NTQ0YzIwZGIxMWEzM2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtMjY4LDYgKzI2OCw5IEBAIG1lc3Nh
Z2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
IERyYXdSZWN0VG9JbWFnZSh1aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OlByaW50SW5mbyBwcmlu
dEluZm8sIFdlYkNvcmU6OkludFJlY3QgcmVjdCwgV2ViQ29yZTo6SW50U2l6ZSBpbWFnZVNpemUs
IHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgRHJhd1BhZ2VzVG9QREYodWludDY0X3QgZnJhbWVJ
RCwgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3Qg
Y291bnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCisjaWYgUExBVEZPUk0oSU9TKQorICAgIENvbXB1
dGVQYWdlc0ZvclByaW50aW5nQW5kU3RhcnREcmF3aW5nVG9QREYodWludDY0X3QgZnJhbWVJRCwg
V2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCB1aW50MzJfdCBmaXJzdFBhZ2UpIC0+IChWZWN0
b3I8V2ViQ29yZTo6SW50UmVjdD4gcGFnZVJlY3RzLCBkb3VibGUgdG90YWxTY2FsZUZhY3Rvcikg
RGVsYXllZAorI2VuZGlmCiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCiAgICAgRHJhd1BhZ2Vz
Rm9yUHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZv
LCB1aW50NjRfdCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDhmZTcxZDg2NDZjYzc3N2RhMDJlOTE5
YzRkY2FmOGYyYWFkZDg1OTkuLmUxZTc4NzcwOGVhMDFlOGUwNDJlNTg3N2VjYWM3ZGM0MjIzODM4
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW0KQEAgLTIyMDcsNiArMjIwNywxOSBAQCB2b2lkIFdlYlBhZ2U6OmRpc3BhdGNo
QXN5bmNocm9ub3VzVG91Y2hFdmVudHMoY29uc3QgVmVjdG9yPFdlYlRvdWNoRXZlbnQsIDE+JiBx
dQogICAgICAgICBkaXNwYXRjaFRvdWNoRXZlbnQoZXZlbnQsIGlnbm9yZWQpOwogfQogCit2b2lk
IFdlYlBhZ2U6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kU3RhcnREcmF3aW5nVG9QREYodWlu
dDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0
UGFnZSwgUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRp
bmdBbmRTdGFydERyYXdpbmdUb1BERjo6RGVsYXllZFJlcGx5PiByZXBseSkKK3sKKyAgICBWZWN0
b3I8V2ViQ29yZTo6SW50UmVjdD4gcGFnZVJlY3RzOworICAgIGRvdWJsZSB0b3RhbFNjYWxlRmFj
dG9yID0gMTsKKyAgICBjb21wdXRlUGFnZXNGb3JQcmludGluZ0ltcGwoZnJhbWVJRCwgcHJpbnRJ
bmZvLCBwYWdlUmVjdHMsIHRvdGFsU2NhbGVGYWN0b3IpOworICAgIHN0ZDo6c2l6ZV90IHBhZ2VD
b3VudCA9IHBhZ2VSZWN0cy5zaXplKCk7CisgICAgcmVwbHktPnNlbmQoc3RkOjptb3ZlKHBhZ2VS
ZWN0cyksIHRvdGFsU2NhbGVGYWN0b3IpOworCisgICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFS
ZWY+IHBkZlBhZ2VEYXRhOworICAgIGRyYXdQYWdlc1RvUERGSW1wbChmcmFtZUlELCBwcmludElu
Zm8sIGZpcnN0UGFnZSwgcGFnZUNvdW50IC0gZmlyc3RQYWdlLCBwZGZQYWdlRGF0YSk7CisgICAg
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRGaW5pc2hEcmF3aW5nUGFnZXNUb1BERihJ
UEM6OkRhdGFSZWZlcmVuY2UoQ0ZEYXRhR2V0Qnl0ZVB0cihwZGZQYWdlRGF0YS5nZXQoKSksIENG
RGF0YUdldExlbmd0aChwZGZQYWdlRGF0YS5nZXQoKSkpKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdAogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231695</attachid>
            <date>2014-05-19 09:50:31 -0700</date>
            <delta_ts>2014-05-19 11:21:24 -0700</delta_ts>
            <desc>[iOS] Create a UIPrintFormatter for WKWebView</desc>
            <filename>bug-133005-20140519095007.patch</filename>
            <type>text/plain</type>
            <size>35236</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY5MDQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYmZhYmI4OGZiODNmZjg2
ZjIwY2Y5MjliYzI4ZDFjM2U5OWE4M2Y2NC4uM2QyZTM1YjYyZmEwMWI5OGM1NmE1Mzk5MzBmNWYx
NjVjZTZiZGRhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcwIEBACisyMDE0LTA1LTE2ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBDcmVhdGUgYSBVSVBy
aW50Rm9ybWF0dGVyIGZvciBXS1dlYlZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzMzAwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGVkIGEgVUlQcmludEZvcm1hdHRlciBzdWJjbGFz
cyB0byBzdXBwb3J0IHByaW50aW5nIFdLV2ViVmlld3MgdXNpbmcgVUlQcmludEludGVyYWN0aW9u
Q29udHJvbGxlci4KKyAgICAgICAgT3ZlcnJvZGUgLV9yZWNhbGNQYWdlQ291bnQ6IHRvIHN5bmNo
cm9ub3VzbHkgYXNrIHRoZSB3ZWIgcHJvY2VzcyB0byBsYXkgb3V0IGZvciBwcmludGluZyBhbmQg
cmV0dXJuIHRoZSBudW1iZXIKKyAgICAgICAgb2YgcGFnZSByZWN0cy4gVGhlIHdlYiBwcm9jZXNz
IHJldHVybnMgdGhlIHBhZ2UgcmVjdHMgaW1tZWRpYXRlbHkgYW5kIHRoZW4gc3RhcnRzIHJlbmRl
cmluZyB0aGUgcGFnZSB0byBhIFBERiwKKyAgICAgICAgcmV0dXJuaW5nIHRoZSBkYXRhIHRvIHRo
ZSBVSSBwcm9jZXNzIGFzeW5jaHJvbm91c2x5LiBXaGVuIFVJUHJpbnRJbnRlcmFjdGlvbkNvbnRy
b2xsZXIgbGF0ZXIgY2FsbHMgb3VyCisgICAgICAgIG92ZXJyaWRkZW4gLWRyYXdJblJlY3Q6Zm9y
UGFnZUF0SW5kZXg6LCB3ZSBibG9jayBhbmQgd2FpdCBmb3IgdGhlIFBERiBkYXRhIHRvIGJlIHJl
dHVybmVkLiBTaW5jZQorICAgICAgICBVSVByaW50SW50ZXJhY3Rpb25Db250cm9sbGVyIGRyYXdz
IGVhY2ggcGFnZSBhZnRlciBhIGRlbGF5LCBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIHdlYiBwcm9j
ZXNzIGhhcyBhbHJlYWR5CisgICAgICAgIHJldHVybmVkIHRoZSBQREYgZGF0YSB0byB1cyBieSB0
aGUgdGltZSB3ZSBwcmludCB0aGUgZmlyc3QgcGFnZS4KKworICAgICAgICAqIFNoYXJlZC9XZWJQ
cmVmZXJlbmNlc1N0b3JlLmg6IENvcnJlY3RseSBpbml0aWFsaXplZCBzaG91bGRQcmludEJhY2tn
cm91bmRzIGZvciBpT1MuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW06CisgICAgICAgICgtW1dLV2ViVmlldyBfZGF0YUZvckRpc3BsYXllZFBERl0pOiBOb3cgdGhh
dCBXS1BERlZpZXcgdmVuZHMgaXRzIENHUERGRG9jdW1lbnQgZGlyZWN0bHksIGV4dHJhY3QgaXRz
IGRhdGEgaGVyZS4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9wcmludEZvcm1hdHRlckNsYXNzXSk6
IFRlbGwgVUlWaWV3IHdoaWNoIFVJUHJpbnRGb3JtYXR0ZXIgdG8gYWxsb2MuCisgICAgICAgICgt
W1dLV2ViVmlldyBfY29tcHV0ZVBhZ2VDb3VudEFuZFN0YXJ0RHJhd2luZ1RvUERGV2l0aFByaW50
SW5mbzpXZWJLaXQ6OmZpcnN0UGFnZTpjb21wdXRlZFRvdGFsU2NhbGVGYWN0b3I6XSk6CisgICAg
ICAgIElmIHdlJ3JlIGRpc3BsYXlpbmcgYSBQREYsIHJldHVybiBpdHMgcGFnZSBjb3VudCBkaXJl
Y3RseS4gT3RoZXJ3aXNlLCBzeW5jaHJvbm91c2x5IGFzayB0aGUgd2ViIHByb2Nlc3MgdG8KKyAg
ICAgICAgY29tcHV0ZSBwYWdlIHJlY3RzIGZvciBwcmludGluZyBhbmQgdGhlbiByZXR1cm4gdGhl
IG51bWJlciBvZiByZWN0cy4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9lbmRQcmludGluZ10pOiBD
bGVhcmVkIHN0YXRlIGFuZCBzZW50IHRoZSBXZWJQYWdlOjpFbmRQcmludGluZyBtZXNzYWdlIHRv
IHRoZSB3ZWIgcHJvY2Vzcy4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9wcmludGVkRG9jdW1lbnRd
KTogSWYgd2UncmUgZGlzcGxheWluZyBhIFBERiwgcmV0dXJuIGl0cyBkYXRhIGRpcmVjdGx5LiBP
dGhlcndpc2UsIGlmIHdlIGhhdmVuJ3QKKyAgICAgICAgcmVjZWl2ZWQgUERGIGRhdGEgZnJvbSB0
aGUgd2ViIHByb2Nlc3MgeWV0LCB3YWl0IGZvciBpdCBpbmRlZmluaXRlbHkgKHRoZXJlJ3Mgbm8g
c2Vuc2libGUgdGltZW91dCB0byB1c2UgaGVyZQorICAgICAgICBzaW5jZSBmYWlsaW5nIHRvIHJl
Y2VpdmUgdGhlIGRhdGEgcmVzdWx0cyBpbiBwcmludGluZyBzb21lIG51bWJlciBvZiBibGFuayBw
YWdlcykuCisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0UHJpbnRlZERvY3VtZW50Ol0pOiBTZXQg
dGhlIENHUERGRG9jdW1lbnQgcmVjZWl2ZWQgZnJvbSB0aGUgd2ViIHByb2Nlc3MuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oOiBEZWNsYXJlZCBtZXRo
b2RzIGNhbGxlZCBieSBXS1dlYlZpZXdQcmludEZvcm1hdHRlci4KKyAgICAgICAgKiBVSVByb2Nl
c3MvUGFnZUNsaWVudC5oOiBEZWNsYXJlZCBkaWRGaW5pc2hEcmF3aW5nUGFnZXNUb1BERi4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIuaDogQWRkZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLm1tOiBBZGRlZC4KKyAgICAg
ICAgKC1bV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIgZGVhbGxvY10pOiBDbGVhcmVkIHN0YXRlIGFu
ZCBjYWxsZWQgLVtXS1dlYlZpZXcgX2VuZFByaW50aW5nXS4KKyAgICAgICAgKC1bV0tXZWJWaWV3
UHJpbnRGb3JtYXR0ZXIgd2ViVmlld10pOiBSZXR1cm5lZCB0aGUgV0tXZWJWaWV3IGZvciB0aGlz
IHByaW50IGZvcm1hdHRlci4KKyAgICAgICAgKC1bV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIgX3Jl
Y2FsY1BhZ2VDb3VudF0pOiBTZXQgdXAgYSBQcmludEluZm8gb2JqZWN0IGdpdmVuIHRoZSBmb3Jt
YXR0ZXIncyBjb250ZW50IHJlY3QKKyAgICAgICAgYW5kIGNhbGxlZCAtX2NvbXB1dGVQYWdlQ291
bnRBbmRTdGFydERyYXdpbmdUb1BERldpdGhQcmludEluZm86Li4uCisgICAgICAgICgtW1dLV2Vi
Vmlld1ByaW50Rm9ybWF0dGVyIHJlY3RGb3JQYWdlQXRJbmRleDpdKTogQ2FsbGVkIC1fcmVjYWxj
SWZOZWNlc3NhcnkgYW5kIHRoZW4gcmV0dXJuZWQgdGhlIHJlY3QgZnJvbQorICAgICAgICAtX3Bh
Z2VDb250ZW50UmVjdC4KKyAgICAgICAgKC1bV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIgZHJhd0lu
UmVjdDpmb3JQYWdlQXRJbmRleDpdKTogVGF1Z2h0IHRvIGRyYXcgdGhlIGdpdmVuIHBhZ2Ugb2Yg
dGhlIHByaW50ZWQgUERGCisgICAgICAgIGRvY3VtZW50IGludG8gdGhlIGdpdmVuIHJlY3QgYW5k
IGNvbnRleHQgcHJvdmlkZWQgdG8gdXMuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOiBEZWNsYXJlZCBkaWRGaW5pc2hEcmF3aW5nUGFnZXNUb1BERi4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOiBBZGRlZCBEaWRGaW5pc2hEcmF3aW5nUGFn
ZXNUb1BERi4gTWFkZSB0aGlzIGEgZGVsYXllZCBzeW5jcmhvbm91cyBtZXNzYWdlCisgICAgICAg
IHNvIHRoYXQgYWRkaXRvaW5hbCB3b3JrIGNvdWxkIGJlIHBlcmZvcm1lZCBhZnRlciBzZW5kaW5n
IHRoZSByZXNwb25zZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9T
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpZEZpbmlzaERyYXdpbmdQYWdlc1RvUERGKTog
Q3JlYXRlZCBhIENHUERGRG9jdW1lbnQgZnJvbSB0aGUgZGF0YSBzZW50IHRvIHVzIGJ5IHRoZQor
ICAgICAgICB3ZWIgcHJvY2VzcyBhbmQgY2FsbGVkIC1bV0tXZWJWaWV3IF9zZXRQcmludGVkRG9j
dW1lbnQ6XS4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLUERGVmlldy5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tOgorICAgICAgICAoLVtXS1BERlZpZXcgcGRmRG9j
dW1lbnRdKTogUmV0dXJuZWQgdGhlIHVuZGVybHlpbmcgQ0dQREZEb2N1bWVudC4KKyAgICAgICAg
KC1bV0tQREZWaWV3IGRvY3VtZW50RGF0YV0pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OmRpZEZpbmlzaERyYXdpbmdQYWdlc1RvUERGKToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjb21wdXRlUGFnZXNGb3JQcmludGluZyk6
IENoYW5nZWQgdG8gY2FsbCBjb21wdXRlUGFnZXNGb3JQcmludGluZ0ltcGwuCisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nSW1wbCk6IE1vdmVkIHRoZSBj
b21tb24gbG9naWMgb2YgY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcgdG8gaGVyZSBzbyBpdAorICAg
ICAgICBjb3VsZCBiZSBjYWxsZWQgYnkgY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmRTdGFydERy
YXdpbmdUb1BERi4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZHJhd1BhZ2VzVG9QREYpOiBD
aGFuZ2VkIHRvIGNhbGwgZHJhd1BhZ2VzVG9QREZJbXBsCisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmRyYXdQYWdlc1RvUERGSW1wbCk6IE1vdmVkIHRoZSBjb21tb24gbG9naWMgb2YgZHJhd1Bh
Z2VzVG9QREYgdG8gaGVyZSBzbyBpdCBjb3VsZCBiZSBjYWxsZWQKKyAgICAgICAgYnkgY29tcHV0
ZVBhZ2VzRm9yUHJpbnRpbmdBbmRTdGFydERyYXdpbmdUb1BERi4KKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRp
bmdBbmRTdGFydERyYXdpbmdUb1BERik6IENvbXB1dGVkIHBhZ2UgcmVjdHMgYW5kIHJldHVybmVk
IHRoZW0gYXMgYQorICAgICAgICBzeW5jaHJvbm91cyByZXNwb25zZS4gQWZ0ZXJ3YXJkcyBjYWxs
ZWQgZHJhd1BhZ2VzVG9QREZJbXBsKCkgYW5kIHJldHVybmVkIHRoZSBQREYgZGF0YSBieSBzZW5k
aW5nCisgICAgICAgIFdlYlBhZ2VQcm94eTo6RGlkRmluaXNoRHJhd2luZ1BhZ2VzVG9QREYuCisK
IDIwMTQtMDUtMTkgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAogICAgICAgICBCdWls
ZCBmaXggYWZ0ZXIgcjE2OTAyMy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9X
ZWJQcmVmZXJlbmNlc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5j
ZXNTdG9yZS5oCmluZGV4IGUzMGMyNjVlN2VmMDE0ZWRkMmY4OGY5ZDZmZTRjMjA4MGYzNGZmNWYu
LmY1MmM2OGVhMGI3YmYwOTUwMjU4N2YzNWQ0NWVkY2ZjNWU1ZTQ0NDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmgKKysrIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaApAQCAtMTQ0LDcgKzE0NCw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogICAgIG1hY3JvKFBhZ2luYXRlRHVyaW5nTGF5b3V0RW5hYmxlZCwg
cGFnaW5hdGVEdXJpbmdMYXlvdXRFbmFibGVkLCBCb29sLCBib29sLCBmYWxzZSkgXAogICAgIG1h
Y3JvKERPTVBhc3RlQWxsb3dlZCwgZG9tUGFzdGVBbGxvd2VkLCBCb29sLCBib29sLCBmYWxzZSkg
XAogICAgIG1hY3JvKEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQsIGphdmFTY3JpcHRDYW5B
Y2Nlc3NDbGlwYm9hcmQsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCi0gICAgbWFjcm8oU2hvdWxkUHJp
bnRCYWNrZ3JvdW5kcywgc2hvdWxkUHJpbnRCYWNrZ3JvdW5kcywgQm9vbCwgYm9vbCwgZmFsc2Up
IFwKKyAgICBtYWNybyhTaG91bGRQcmludEJhY2tncm91bmRzLCBzaG91bGRQcmludEJhY2tncm91
bmRzLCBCb29sLCBib29sLCBERUZBVUxUX1NIT1VMRF9QUklOVF9CQUNLR1JPVU5EUykgXAogICAg
IG1hY3JvKEZ1bGxTY3JlZW5FbmFibGVkLCBmdWxsU2NyZWVuRW5hYmxlZCwgQm9vbCwgYm9vbCwg
ZmFsc2UpIFwKICAgICBtYWNybyhBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCwgYXN5
bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQsIEJvb2wsIGJvb2wsIGZhbHNlKSBcCiAgICAg
bWFjcm8oV2ViU2VjdXJpdHlFbmFibGVkLCB3ZWJTZWN1cml0eUVuYWJsZWQsIEJvb2wsIGJvb2ws
IHRydWUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KaW5kZXggOGMzMDIyZjU3YzIyMGVmYWJkMmVhZmUzODA2YTEzNWQyYWE2YWE1ZS4uZTM0
MDA5MzQzYzY1N2FiODQ2NWE5NGQ4YzM2YWI0NzVkYjBiNGU0ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTY5LDExICs2OSwxNSBA
QAogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQorI2ltcG9y
dCAiUHJpbnRJbmZvLmgiCiAjaW1wb3J0ICJQcm9jZXNzVGhyb3R0bGVyLmgiCiAjaW1wb3J0ICJX
S1BERlZpZXcuaCIKICNpbXBvcnQgIldLU2Nyb2xsVmlldy5oIgogI2ltcG9ydCAiV0tXZWJWaWV3
Q29udGVudFByb3ZpZGVyUmVnaXN0cnkuaCIKKyNpbXBvcnQgIldLV2ViVmlld1ByaW50Rm9ybWF0
dGVyLmgiCisjaW1wb3J0ICJXZWJQYWdlTWVzc2FnZXMuaCIKICNpbXBvcnQgPENvcmVHcmFwaGlj
cy9DR0Zsb2F0Lmg+CisjaW1wb3J0IDxDb3JlR3JhcGhpY3MvQ0dQREZEb2N1bWVudFByaXZhdGUu
aD4KICNpbXBvcnQgPFVJS2l0L1VJUGVyaXBoZXJhbEhvc3RfUHJpdmF0ZS5oPgogI2ltcG9ydCA8
UXVhcnR6Q29yZS9DQVJlbmRlclNlcnZlci5oPgogI2ltcG9ydCA8UXVhcnR6Q29yZS9RdWFydHpD
b3JlUHJpdmF0ZS5oPgpAQCAtMTU0LDYgKzE1OCw5IEBAIEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZp
ZXcgewogCiAgICAgQk9PTCBfZGVsYXlVcGRhdGVWaXNpYmxlQ29udGVudFJlY3RzOwogICAgIEJP
T0wgX2hhZERlbGF5ZWRVcGRhdGVWaXNpYmxlQ29udGVudFJlY3RzOworCisgICAgQk9PTCBfcGFn
ZUlzUHJpbnRpbmdUb1BERjsKKyAgICBSZXRhaW5QdHI8Q0dQREZEb2N1bWVudFJlZj4gX3ByaW50
ZWREb2N1bWVudDsKICNlbmRpZgogI2lmIFBMQVRGT1JNKE1BQykKICAgICBSZXRhaW5QdHI8V0tW
aWV3PiBfd2tWaWV3OwpAQCAtMTcyNyw3ICsxNzM0LDggQEAgLSAoTlNEYXRhICopX2RhdGFGb3JE
aXNwbGF5ZWRQREYKIHsKICAgICBpZiAoIVtzZWxmIF9pc0Rpc3BsYXlpbmdQREZdKQogICAgICAg
ICByZXR1cm4gbmlsOwotICAgIHJldHVybiBbKFdLUERGVmlldyAqKV9jdXN0b21Db250ZW50Vmll
dy5nZXQoKSBkb2N1bWVudERhdGFdOworICAgIENHUERGRG9jdW1lbnRSZWYgcGRmRG9jdW1lbnQg
PSBbKFdLUERGVmlldyAqKV9jdXN0b21Db250ZW50VmlldyBwZGZEb2N1bWVudF07CisgICAgcmV0
dXJuIFsoTlNEYXRhICopQ0dEYXRhUHJvdmlkZXJDb3B5RGF0YShDR1BERkRvY3VtZW50R2V0RGF0
YVByb3ZpZGVyKHBkZkRvY3VtZW50KSkgYXV0b3JlbGVhc2VdOwogfQogCiAtIChOU1N0cmluZyAq
KV9zdWdnZXN0ZWRGaWxlbmFtZUZvckRpc3BsYXllZFBERgpAQCAtMTg0MSw0ICsxODQ5LDY1IEBA
IEBlbmQKIAogI2VuZGlmCiAKKyNpZiBQTEFURk9STShJT1MpCitAaW1wbGVtZW50YXRpb24gV0tX
ZWJWaWV3IChXS1dlYlZpZXdQcmludEZvcm1hdHRlcikKKworLSAoQ2xhc3MpX3ByaW50Rm9ybWF0
dGVyQ2xhc3MKK3sKKyAgICByZXR1cm4gW1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyIGNsYXNzXTsK
K30KKworLSAoTlNJbnRlZ2VyKV9jb21wdXRlUGFnZUNvdW50QW5kU3RhcnREcmF3aW5nVG9QREZX
aXRoUHJpbnRJbmZvOihjb25zdCBXZWJLaXQ6OlByaW50SW5mbyYpcHJpbnRJbmZvIGZpcnN0UGFn
ZToodWludDMyX3QpZmlyc3RQYWdlIGNvbXB1dGVkVG90YWxTY2FsZUZhY3RvcjooZG91YmxlJil0
b3RhbFNjYWxlRmFjdG9yCit7CisgICAgaWYgKFtzZWxmIF9pc0Rpc3BsYXlpbmdQREZdKQorICAg
ICAgICByZXR1cm4gQ0dQREZEb2N1bWVudEdldE51bWJlck9mUGFnZXMoWyhXS1BERlZpZXcgKilf
Y3VzdG9tQ29udGVudFZpZXcgcGRmRG9jdW1lbnRdKTsKKworICAgIF9wYWdlSXNQcmludGluZ1Rv
UERGID0gWUVTOworICAgIFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiBwYWdlUmVjdHM7CisgICAg
aWYgKCFfcGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclBy
aW50aW5nQW5kU3RhcnREcmF3aW5nVG9QREYoX3BhZ2UtPm1haW5GcmFtZSgpLT5mcmFtZUlEKCks
IHByaW50SW5mbywgZmlyc3RQYWdlKSwgTWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0Zv
clByaW50aW5nQW5kU3RhcnREcmF3aW5nVG9QREY6OlJlcGx5KHBhZ2VSZWN0cywgdG90YWxTY2Fs
ZUZhY3RvcikpKQorICAgICAgICByZXR1cm4geyB9OworICAgIHJldHVybiBwYWdlUmVjdHMuc2l6
ZSgpOworfQorCistICh2b2lkKV9lbmRQcmludGluZworeworICAgIF9wYWdlSXNQcmludGluZ1Rv
UERGID0gTk87CisgICAgX3ByaW50ZWREb2N1bWVudCA9IG51bGxwdHI7CisgICAgX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkVuZFByaW50aW5nKCkpOworfQorCisvLyBGSVhNRTogbWls
bGlzZWNvbmRzOjptYXgoKSBvdmVyZmxvd3Mgd2hlbiBjb252ZXJ0ZWQgdG8gbmFub3NlY29uZHMs
IGNhdXNpbmcgY29uZGl0aW9uX3ZhcmlhYmxlOjp3YWl0X2ZvcigpIHRvIGJlbGlldmUKKy8vIGEg
dGltZW91dCBvY2N1cnJlZCBvbiBhbnkgc3B1cmlvdXMgd2FrZXVwLiBVc2UgbmFub3NlY29uZHM6
Om1heCgpIChjb252ZXJ0ZWQgdG8gbXMpIHRvIGF2b2lkIHRoaXMuIFdlIHNob3VsZCBwZXJoYXBz
CisvLyBjaGFuZ2Ugd2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRlbHkoKSB0byB0YWtlIG5hbm9z
ZWNvbmRzIHRvIGF2b2lkIHRoaXMgaXNzdWUuCitzdGF0aWMgY29uc3RleHByIHN0ZDo6Y2hyb25v
OjptaWxsaXNlY29uZHMgZGlkRmluaXNoTG9hZGluZ1RpbWVvdXQgPSBzdGQ6OmNocm9ubzo6ZHVy
YXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzPihzdGQ6OmNocm9ubzo6bmFub3Nl
Y29uZHM6Om1heCgpKTsKKworLSAoQ0dQREZEb2N1bWVudFJlZilfcHJpbnRlZERvY3VtZW50Cit7
CisgICAgaWYgKFtzZWxmIF9pc0Rpc3BsYXlpbmdQREZdKSB7CisgICAgICAgIEFTU0VSVCghX3Bh
Z2VJc1ByaW50aW5nVG9QREYpOworICAgICAgICByZXR1cm4gWyhXS1BERlZpZXcgKilfY3VzdG9t
Q29udGVudFZpZXcgcGRmRG9jdW1lbnRdOworICAgIH0KKworICAgIGlmIChfcGFnZUlzUHJpbnRp
bmdUb1BERikgeworICAgICAgICBpZiAoIV9wYWdlLT5wcm9jZXNzKCkuY29ubmVjdGlvbigpLT53
YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRG
aW5pc2hEcmF3aW5nUGFnZXNUb1BERj4oX3BhZ2UtPnBhZ2VJRCgpLCBkaWRGaW5pc2hMb2FkaW5n
VGltZW91dCkpIHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKCFfcGFnZUlzUHJp
bnRpbmdUb1BERik7CisgICAgfQorICAgIHJldHVybiBfcHJpbnRlZERvY3VtZW50LmdldCgpOwor
fQorCistICh2b2lkKV9zZXRQcmludGVkRG9jdW1lbnQ6KENHUERGRG9jdW1lbnRSZWYpcHJpbnRl
ZERvY3VtZW50Cit7CisgICAgaWYgKCFfcGFnZUlzUHJpbnRpbmdUb1BERikKKyAgICAgICAgcmV0
dXJuOworICAgIEFTU0VSVCghW3NlbGYgX2lzRGlzcGxheWluZ1BERl0pOworICAgIF9wcmludGVk
RG9jdW1lbnQgPSBwcmludGVkRG9jdW1lbnQ7CisgICAgX3BhZ2VJc1ByaW50aW5nVG9QREYgPSBO
TzsKK30KKworQGVuZAorI2VuZGlmCisKICNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5h
bC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5h
bC5oCmluZGV4IGU1Y2U0MjdlZjM2ZTVlODQyZWY4N2QxZWRiMzc0MWRkNmMxMGRjYzIuLjBkNzE2
MDVhOWNlZmJjNjM5MDdkMGY4OTU2N2E2OTYxODBmOGRjYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgKQEAgLTQ2
LDkgKzQ2LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZVByb3h5Owor
c3RydWN0IFByaW50SW5mbzsKIHN0cnVjdCBWaWV3U25hcHNob3Q7CiB9CiAKK0BjbGFzcyBXS1dl
YlZpZXdQcmludEZvcm1hdHRlcjsKKwogQGludGVyZmFjZSBXS1dlYlZpZXcgKCkgV0tfV0VCX1ZJ
RVdfUFJPVE9DT0xTIHsKIAogQHBhY2thZ2UKQEAgLTgwLDYgKzgzLDE0IEBAIHN0cnVjdCBWaWV3
U25hcHNob3Q7CiAjZW5kaWYKIEBlbmQKIAorI2lmIFBMQVRGT1JNKElPUykKIFdLV2ViVmlldyog
ZnJvbVdlYlBhZ2VQcm94eShXZWJLaXQ6OldlYlBhZ2VQcm94eSYpOwogCitAaW50ZXJmYWNlIFdL
V2ViVmlldyAoV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIpCistIChOU0ludGVnZXIpX2NvbXB1dGVQ
YWdlQ291bnRBbmRTdGFydERyYXdpbmdUb1BERldpdGhQcmludEluZm86KGNvbnN0IFdlYktpdDo6
UHJpbnRJbmZvJilwcmludEluZm8gZmlyc3RQYWdlOih1aW50MzJfdClmaXJzdFBhZ2UgY29tcHV0
ZWRUb3RhbFNjYWxlRmFjdG9yOihkb3VibGUmKXRvdGFsU2NhbGVGYWN0b3I7CistICh2b2lkKV9l
bmRQcmludGluZzsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFByaW50ZWREb2N1
bWVudDopIENHUERGRG9jdW1lbnRSZWYgX3ByaW50ZWREb2N1bWVudDsKK0BlbmQKKyNlbmRpZgor
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IGVjYjc4OTI5
OGNjZWM2YzA4N2MxMzAwNjY1NTA4NjUyMWMwNDkxYWQuLjk4ZDAxNmZiMzNkMzY5MjA3ZTA5NmQ0
NmRlMTZiMWM3N2U4ZjZlZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
YWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApA
QCAtMjU5LDYgKzI1OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVmll
d3BvcnRNZXRhVGFnV2lkdGgoZmxvYXQpID0gMDsKICAgICB2aXJ0dWFsIGRvdWJsZSBtaW5pbXVt
Wm9vbVNjYWxlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRTaXplIGNv
bnRlbnRzU2l6ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoRHJhd2lu
Z1BhZ2VzVG9QREYoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJikgPSAwOwogCiAjaWYgRU5BQkxF
KElOU1BFQ1RPUikKICAgICB2aXJ0dWFsIHZvaWQgc2hvd0luc3BlY3RvckluZGljYXRpb24oKSA9
IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV0tXZWJWaWV3UHJpbnRG
b3JtYXR0ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XS1dlYlZpZXdQcmludEZvcm1h
dHRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjYxODAzNjY0ZTk2Zjc4ODllNTM1YzdmNDYyOTY5YTViZWYyYjU2
OWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV0tXZWJWaWV3
UHJpbnRGb3JtYXR0ZXIuaApAQCAtMCwwICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8
VUlLaXQvVUlQcmludEZvcm1hdHRlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9JbnRSZWN0Lmg+Cisj
aW1wb3J0IDx3dGYvVmVjdG9yLmg+CisKK0BpbnRlcmZhY2UgV0tXZWJWaWV3UHJpbnRGb3JtYXR0
ZXIgOiBVSVZpZXdQcmludEZvcm1hdHRlcgorQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLm1tIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjliNTNjYjc2
M2Q4MWM3YzNkODlkZTgxZmY4OThmOGJhZDE4ZTY4ZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIubW0KQEAgLTAsMCAr
MSwxMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldLV2Vi
Vmlld1ByaW50Rm9ybWF0dGVyLmgiCisKKyNpZiBQTEFURk9STShJT1MpCisKKyNpbXBvcnQgIlBy
aW50SW5mby5oIgorI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKKyNpbXBvcnQgPHd0Zi9S
ZXRhaW5QdHIuaD4KKworQGludGVyZmFjZSBVSVByaW50Rm9ybWF0dGVyIChJUEkpCistIChDR1Jl
Y3QpX3BhZ2VDb250ZW50UmVjdDooQk9PTClmaXJzdFBhZ2U7CistICh2b2lkKV9yZWNhbGNJZk5l
Y2Vzc2FyeTsKK0BlbmQKKworQGludGVyZmFjZSBXS1dlYlZpZXdQcmludEZvcm1hdHRlciAoKQor
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBXS1dlYlZpZXcgKndlYlZpZXc7CitAZW5k
CisKK0BpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXdQcmludEZvcm1hdHRlciB7CisgICAgZG91Ymxl
IF90b3RhbFNjYWxlRmFjdG9yOworICAgIFdlYktpdDo6UHJpbnRJbmZvIF9wcmludEluZm87Cit9
CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIFtzZWxmLndlYlZpZXcgX2VuZFByaW50aW5nXTsK
KyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKFdLV2ViVmlldyAqKXdlYlZpZXcKK3sKKyAg
ICBBU1NFUlQoW3NlbGYudmlldyBpc0tpbmRPZkNsYXNzOltXS1dlYlZpZXcgY2xhc3NdXSk7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PFdLV2ViVmlldyAqPihzZWxmLnZpZXcpOworfQorCistIChO
U0ludGVnZXIpX3JlY2FsY1BhZ2VDb3VudAoreworICAgIEFTU0VSVChbc2VsZiByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKF9wYWdlQ29udGVudFJlY3Q6KV0pOworCisgICAgQ0dSZWN0IGZp
cnN0UmVjdCA9IFtzZWxmIF9wYWdlQ29udGVudFJlY3Q6WUVTXTsKKyAgICBDR1JlY3QgbmV4dFJl
Y3QgPSBbc2VsZiBfcGFnZUNvbnRlbnRSZWN0Ok5PXTsKKyAgICBpZiAoQ0dSZWN0SXNFbXB0eShm
aXJzdFJlY3QpIHx8IENHUmVjdElzRW1wdHkobmV4dFJlY3QpKQorICAgICAgICByZXR1cm4gMDsK
KworICAgIC8vIFRoZSBmaXJzdCBwYWdlIGNhbiBoYXZlIGEgc21hbGxlciBjb250ZW50IHJlY3Qg
dGhhbiBzdWJzZXF1ZW50IHBhZ2VzIGlmIGEgdG9wIGNvbnRlbnQgaW5zZXQgaXMgc3BlY2lmaWVk
LiBTaW5jZQorICAgIC8vIFdlYktpdCByZXF1aXJlcyBhIHVuaWZvcm0gY29udGVudCByZWN0IGZv
ciBlYWNoIHBhZ2UgZHVyaW5nIGxheW91dCwgdXNlIHRoZSBmaXJzdCBwYWdlIHJlY3QgZm9yIGFs
bCBwYWdlcyBpZiBpdCdzCisgICAgLy8gc21hbGxlci4gVGhpcyBpcyB3aGF0IFVJV2ViVmlldydz
IHByaW50IGZvcm1hdHRlciBkb2VzLgorICAgIEFTU0VSVChmaXJzdFJlY3Quc2l6ZS53aWR0aCA9
PSBuZXh0UmVjdC5zaXplLndpZHRoKTsKKyAgICBBU1NFUlQoZmlyc3RSZWN0Lm9yaWdpbi55ID49
IG5leHRSZWN0Lm9yaWdpbi55KTsKKyAgICBfcHJpbnRJbmZvLnBhZ2VTZXR1cFNjYWxlRmFjdG9y
ID0gMTsKKyAgICBfcHJpbnRJbmZvLmF2YWlsYWJsZVBhcGVyV2lkdGggPSBuZXh0UmVjdC5zaXpl
LndpZHRoOworICAgIF9wcmludEluZm8uYXZhaWxhYmxlUGFwZXJIZWlnaHQgPSBuZXh0UmVjdC5z
aXplLmhlaWdodCAtIChmaXJzdFJlY3Qub3JpZ2luLnkgLSBuZXh0UmVjdC5vcmlnaW4ueSk7CisK
KyAgICByZXR1cm4gW3NlbGYud2ViVmlldyBfY29tcHV0ZVBhZ2VDb3VudEFuZFN0YXJ0RHJhd2lu
Z1RvUERGV2l0aFByaW50SW5mbzpfcHJpbnRJbmZvIGZpcnN0UGFnZTpzZWxmLnN0YXJ0UGFnZSBj
b21wdXRlZFRvdGFsU2NhbGVGYWN0b3I6X3RvdGFsU2NhbGVGYWN0b3JdOworfQorCistIChDR1Jl
Y3QpcmVjdEZvclBhZ2VBdEluZGV4OihOU0ludGVnZXIpcGFnZUluZGV4Cit7CisgICAgQVNTRVJU
KFtzZWxmIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3JlY2FsY0lmTmVjZXNzYXJ5KV0p
OworICAgIFtzZWxmIF9yZWNhbGNJZk5lY2Vzc2FyeV07CisgICAgcmV0dXJuIFtzZWxmIF9wYWdl
Q29udGVudFJlY3Q6cGFnZUluZGV4ID09IHNlbGYuc3RhcnRQYWdlXTsKK30KKworLSAodm9pZClk
cmF3SW5SZWN0OihDR1JlY3QpcmVjdCBmb3JQYWdlQXRJbmRleDooTlNJbnRlZ2VyKXBhZ2VJbmRl
eAoreworICAgIC8vIENHUERGRG9jdW1lbnRzIHVzZSAxLWJhc2VkIHBhZ2UgaW5kZXhpbmcuCisg
ICAgQ0dQREZQYWdlUmVmIHBkZlBhZ2UgPSBDR1BERkRvY3VtZW50R2V0UGFnZShzZWxmLndlYlZp
ZXcuX3ByaW50ZWREb2N1bWVudCwgcGFnZUluZGV4IC0gc2VsZi5zdGFydFBhZ2UgKyAxKTsKKwor
ICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gVUlHcmFwaGljc0dldEN1cnJlbnRDb250ZXh0KCk7
CisgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKKworICAgIENHQ29udGV4dFRyYW5z
bGF0ZUNUTShjb250ZXh0LCByZWN0Lm9yaWdpbi54LCByZWN0Lm9yaWdpbi55KTsKKyAgICBDR0Nv
bnRleHRTY2FsZUNUTShjb250ZXh0LCBfdG90YWxTY2FsZUZhY3RvciwgLV90b3RhbFNjYWxlRmFj
dG9yKTsKKyAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwgMCwgLUNHUERGUGFnZUdl
dEJveFJlY3QocGRmUGFnZSwga0NHUERGTWVkaWFCb3gpLnNpemUuaGVpZ2h0KTsKKyAgICBDR0Nv
bnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIENHUERGUGFnZUdldEJveFJlY3QocGRmUGFnZSwga0NH
UERGQ3JvcEJveCkpOworICAgIENHQ29udGV4dERyYXdQREZQYWdlKGNvbnRleHQsIHBkZlBhZ2Up
OworCisgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0KTsKK30KKworQGVuZAorCisj
ZW5kaWYgLy8gUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCmluZGV4IDZmOTAxYjAzYzAxNzAzNzM5MTE5NTljMzM0OTc0NTQ5YjYxOTMzYTMuLmZiMjQ4
MDQzNjI3YmU1Y2M3NmZkNzY1NzNmMWM3NGJjMTFlODc4MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTYzMyw2ICs2MzMsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBjb21taXRQb3RlbnRpYWxUYXBGYWlsZWQoKTsKICAgICB2b2lkIGRpZE5vdEhhbmRsZVRhcEFz
Q2xpY2soY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICB2b2lkIHZpZXdwb3J0TWV0YVRh
Z1dpZHRoRGlkQ2hhbmdlKGZsb2F0IHdpZHRoKTsKKyAgICB2b2lkIGRpZEZpbmlzaERyYXdpbmdQ
YWdlc1RvUERGKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOwogI2VuZGlmCiAKICAgICBjb25z
dCBFZGl0b3JTdGF0ZSYgZWRpdG9yU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2VkaXRvclN0YXRl
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbgppbmRleCA1MzBmNjYzNTBlYTI1NTllYmU1ZTRkOGJkZjljZTMyOWUxODJmOTRhLi5lN2Jm
NWE0YTQ4MWY0YzE3MzJkYzBjMDUzMWQ1M2RiYWJjYjg2YTM3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTE3Miw2ICsxNzIs
NyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIENvbW1pdFBvdGVudGlhbFRhcEZh
aWxlZCgpCiAgICAgRGlkTm90SGFuZGxlVGFwQXNDbGljayhXZWJDb3JlOjpJbnRQb2ludCBwb2lu
dCkKICAgICBWaWV3cG9ydE1ldGFUYWdXaWR0aERpZENoYW5nZShmbG9hdCB3aWR0aCkKKyAgICBE
aWRGaW5pc2hEcmF3aW5nUGFnZXNUb1BERihJUEM6OkRhdGFSZWZlcmVuY2UgcGRmRGF0YSkKICNl
bmRpZgogI2lmIFBMQVRGT1JNKEdUSykKICAgICBQcmludEZpbmlzaGVkQ2FsbGJhY2soV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgdWludDY0X3QgY2FsbGJhY2tJRCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCA4YTUzNmM1
ZTE5Mzg0NzFlMGFjMDYxNDQ5ZjgxOWZmOTNiMWFkYzA5Li5iYTFlNWU2YTlkZjBiOWM0NzkyYWU3
MGIyMjlmZjgxOTY1Mjc4YzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0xMzIsNiArMTMyLDcgQEAgcHJpdmF0ZToKICNlbmRp
ZgogCiAgICAgdmlydHVhbCB2b2lkIHpvb21Ub1JlY3QoV2ViQ29yZTo6RmxvYXRSZWN0LCBkb3Vi
bGUgbWluaW11bVNjYWxlLCBkb3VibGUgbWF4aW11bVNjYWxlKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkRmluaXNoRHJhd2luZ1BhZ2VzVG9QREYoY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJikgb3ZlcnJpZGU7CiAKICAgICAvLyBBdXhpbGlhcnkgQ2xpZW50IENyZWF0aW9uCiAjaWYg
RU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9p
b3MvUGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggNTJiNWRhNTBhYzM2N2YxNjcxMzhkZTUwZjY0
M2Q3MzA2ZjBiOTZhMS4uZWJjYWYzZWEwNWQyNTQ0ZWQyYWViYmRkNzJkNTBiZjVhZWE3ZTMzMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9T
Lm1tCkBAIC01MDMsNiArNTAzLDEzIEBAIHZvaWQgUGFnZUNsaWVudEltcGw6Onpvb21Ub1JlY3Qo
RmxvYXRSZWN0IHJlY3QsIGRvdWJsZSBtaW5pbXVtU2NhbGUsIGRvdWJsZSBtYXhpCiAgICAgW21f
Y29udGVudFZpZXcgX3pvb21Ub1JlY3Q6cmVjdCB3aXRoT3JpZ2luOnJlY3QuY2VudGVyKCkgZml0
RW50aXJlUmVjdDpZRVMgbWluaW11bVNjYWxlOm1pbmltdW1TY2FsZSBtYXhpbXVtU2NhbGU6bWF4
aW11bVNjYWxlIG1pbmltdW1TY3JvbGxEaXN0YW5jZTowXTsKIH0KIAordm9pZCBQYWdlQ2xpZW50
SW1wbDo6ZGlkRmluaXNoRHJhd2luZ1BhZ2VzVG9QREYoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBwZGZEYXRhKQoreworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGEgPSBhZG9wdENGKENG
RGF0YUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwZGZEYXRhLmRhdGEoKSwgcGRmRGF0YS5z
aXplKCkpKTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92aWRlciA9
IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEuZ2V0KCkpKTsKKyAg
ICBtX3dlYlZpZXcuX3ByaW50ZWREb2N1bWVudCA9IGFkb3B0Q0YoQ0dQREZEb2N1bWVudENyZWF0
ZVdpdGhQcm92aWRlcihkYXRhUHJvdmlkZXIuZ2V0KCkpKS5nZXQoKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9XS1BERlZpZXcuaAppbmRleCA5MzBkNTYwMzc2ZGYwNWVhMmY1OGY0MmZiNmFi
NTY4ZmE1ODAzZGRkLi5hOGNmYTZjMjQ2MDY4MDViOWMyYjkzNjAxNWJmN2Y0YTU0ZmFmZThhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3LmgKQEAgLTMwLDggKzMwLDgg
QEAKIAogQGludGVyZmFjZSBXS1BERlZpZXcgOiBVSVZpZXcgPFdLV2ViVmlld0NvbnRlbnRQcm92
aWRlcj4KIAotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0RhdGEgKmRvY3VtZW50
RGF0YTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNTdHJpbmcgKnN1Z2dlc3Rl
ZEZpbGVuYW1lOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBDR1BERkRvY3VtZW50
UmVmIHBkZkRvY3VtZW50OwogCiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9X
S1BERlZpZXcubW0KaW5kZXggODA5NTU4ODc2ZjBlNzQwMzY1MTE3NzdiZWUyOGM0NjliYmY4Yzcx
Yy4uZWQyY2U0NWUwNDY0MDViNmJkZjY4NTg0OGQ1MTQyNmY0YTZjNzMxNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW0KQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lm
IFBMQVRGT1JNKElPUykKIAotI2ltcG9ydCA8Q29yZUdyYXBoaWNzL0NHUERGRG9jdW1lbnRQcml2
YXRlLmg+CisKICNpbXBvcnQgPENvcmVQREYvVUlQREZEb2N1bWVudC5oPgogI2ltcG9ydCA8Q29y
ZVBERi9VSVBERlBhZ2VWaWV3Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgpAQCAt
NzAsMTYgKzcwLDE2IEBAIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEZyYW1lOihDR1JlY3QpZnJh
bWUKICAgICByZXR1cm4gc2VsZjsKIH0KIAotLSAoTlNEYXRhICopZG9jdW1lbnREYXRhCi17ICAg
IAotICAgIHJldHVybiBbKE5TRGF0YSAqKUNHRGF0YVByb3ZpZGVyQ29weURhdGEoQ0dQREZEb2N1
bWVudEdldERhdGFQcm92aWRlcihbX3BkZkRvY3VtZW50IENHRG9jdW1lbnRdKSkgYXV0b3JlbGVh
c2VdOwotfQotCiAtIChOU1N0cmluZyAqKXN1Z2dlc3RlZEZpbGVuYW1lCiB7CiAgICAgcmV0dXJu
IF9zdWdnZXN0ZWRGaWxlbmFtZS5nZXQoKTsKIH0KIAorLSAoQ0dQREZEb2N1bWVudFJlZilwZGZE
b2N1bWVudAoreworICAgIHJldHVybiBbX3BkZkRvY3VtZW50IENHRG9jdW1lbnRdOworfQorCiAt
ICh2b2lkKXdlYl9zZXRDb250ZW50UHJvdmlkZXJEYXRhOihOU0RhdGEgKilkYXRhIHN1Z2dlc3Rl
ZEZpbGVuYW1lOihOU1N0cmluZyAqKWZpbGVuYW1lCiB7CiAgICAgX3N1Z2dlc3RlZEZpbGVuYW1l
ID0gYWRvcHROUyhbZmlsZW5hbWUgY29weV0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCA2NDEwMDcwMzA5M2QyMjIzMTZlNTFkNDA0
ZThkNmIwNzhlNzE0MmExLi4zMDg4ZTI5MWMyNWRmNzkxY2E2MWIzN2RhZDEwNTlhNmY3NDg0NTFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5t
bQpAQCAtNjQ5LDYgKzY0OSwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dmlld3BvcnRNZXRhVGFn
V2lkdGhEaWRDaGFuZ2UoZmxvYXQgd2lkdGgpCiAgICAgbV9wYWdlQ2xpZW50LmRpZENoYW5nZVZp
ZXdwb3J0TWV0YVRhZ1dpZHRoKHdpZHRoKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OmRpZEZp
bmlzaERyYXdpbmdQYWdlc1RvUERGKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgcGRmRGF0YSkK
K3sKKyAgICBtX3BhZ2VDbGllbnQuZGlkRmluaXNoRHJhd2luZ1BhZ2VzVG9QREYocGRmRGF0YSk7
Cit9CisKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRT
dGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgZmls
ZU5hbWUsIGNvbnN0IFN0cmluZyYgdXRpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDkyYzE4Y2VmNzQ5MzgwYTg1ZWRiY2M0NDY1
OTYzYjgyYzY2YThkYjEuLmQyYjA1N2ZjNjcxMDU3MmZjNGNlN2U2NDcyYTM2ZTEyYjYzOWQ3ZjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTEwNTMsNiArMTA1Myw4IEBACiAJCTlGNTRGODk1MTY0OEFFMEYwMDdERjgxQSAvKiBQ
bHVnaW5Qcm9jZXNzTWFuYWdlck1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDlGNTRGODk0MTY0OEFFMEUwMDdERjgxQSAvKiBQbHVnaW5Qcm9jZXNz
TWFuYWdlck1hYy5tbSAqLzsgfTsKIAkJOUZCNUYzOTQxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29u
dGV4dFByaXZhdGVNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5RkI1RjM5MjE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5t
bSAqLzsgfTsKIAkJOUZCNUYzOTUxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVN
YWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGQjVG
MzkzMTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2YXRlTWFjLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQTExNURDNzExOTFEODJENzAw
REE4MDcyIC8qIFdLV2ViVmlld1ByaW50Rm9ybWF0dGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTExNURDNkQxOTFEODJBQjAwREE4MDcyIC8qIFdL
V2ViVmlld1ByaW50Rm9ybWF0dGVyLm1tICovOyB9OworCQlBMTE1REM3MjE5MUQ4MkRBMDBEQTgw
NzIgLyogV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMTVEQzZFMTkxRDgyQUIwMERBODA3MiAvKiBXS1dlYlZp
ZXdQcmludEZvcm1hdHRlci5oICovOyB9OwogCQlBMTE4QTlFRTE5MDdBRDZGMDBGN0M5MkIgLyog
UXVpY2tMb29rRG9jdW1lbnREYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEExMThBOUVDMTkwN0FENkYwMEY3QzkyQiAvKiBRdWlja0xvb2tEb2N1
bWVudERhdGEuY3BwICovOyB9OwogCQlBMTE4QTlFRjE5MDdBRDZGMDBGN0M5MkIgLyogUXVpY2tM
b29rRG9jdW1lbnREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMTE4QTlFRDE5MDdBRDZGMDBGN0M5MkIgLyogUXVpY2tMb29rRG9jdW1lbnREYXRh
LmggKi87IH07CiAJCUExMThBOUYyMTkwOEI4RUEwMEY3QzkyQiAvKiBfV0tOU0ZpbGVNYW5hZ2Vy
RXh0cmFzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTExOEE5RjAxOTA4QjhFQTAwRjdDOTJCIC8qIF9XS05TRmlsZU1hbmFnZXJFeHRyYXMubW0gKi87
IH07CkBAIC0zMDQ1LDYgKzMwNDcsOCBAQAogCQk5RjU0Rjg5NDE2NDhBRTBFMDA3REY4MUEgLyog
UGx1Z2luUHJvY2Vzc01hbmFnZXJNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBQbHVnaW5Qcm9jZXNzTWFuYWdlck1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOUZCNUYzOTIxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVN
YWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS0NvbnRleHRQ
cml2YXRlTWFjLm1tOyBwYXRoID0gbWFjL1dLQ29udGV4dFByaXZhdGVNYWMubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlGQjVGMzkzMTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRl
eHRQcml2YXRlTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLQ29udGV4
dFByaXZhdGVNYWMuaDsgcGF0aCA9IG1hYy9XS0NvbnRleHRQcml2YXRlTWFjLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUExMTVEQzZEMTkxRDgyQUIwMERBODA3MiAvKiBXS1dlYlZp
ZXdQcmludEZvcm1hdHRlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFdLV2ViVmlld1ByaW50Rm9ybWF0dGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBMTE1REM2RTE5MUQ4MkFCMDBEQTgwNzIgLyogV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJWaWV3UHJpbnRGb3JtYXR0
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTExOEE5RUMxOTA3QUQ2RjAwRjdD
OTJCIC8qIFF1aWNrTG9va0RvY3VtZW50RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBRdWlja0xvb2tEb2N1bWVudERhdGEuY3BwOyBwYXRoID0gaW9zL1F1aWNr
TG9va0RvY3VtZW50RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMThB
OUVEMTkwN0FENkYwMEY3QzkyQiAvKiBRdWlja0xvb2tEb2N1bWVudERhdGEuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUXVpY2tMb29rRG9jdW1lbnREYXRhLmg7IHBhdGggPSBp
b3MvUXVpY2tMb29rRG9jdW1lbnREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUExMThBOUYwMTkwOEI4RUEwMEY3QzkyQiAvKiBfV0tOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLTlNGaWxlTWFuYWdlckV4
dHJhcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ3MTMsNiArNDcxNyw4IEBA
CiAJCQkJMEZDQjRFNDExOEJCRTA0NDAwMEZDRkM5IC8qIFdLR2VvbG9jYXRpb25Qcm92aWRlcklP
U09iakNTZWN1cml0eU9yaWdpbi5tbSAqLywKIAkJCQkwRkNCNEU0NDE4QkJFMDQ0MDAwRkNGQzkg
LyogV0tTY3JvbGxWaWV3LmggKi8sCiAJCQkJMEZDQjRFNDUxOEJCRTA0NDAwMEZDRkM5IC8qIFdL
U2Nyb2xsVmlldy5tbSAqLywKKwkJCQlBMTE1REM2RTE5MUQ4MkFCMDBEQTgwNzIgLyogV0tXZWJW
aWV3UHJpbnRGb3JtYXR0ZXIuaCAqLywKKwkJCQlBMTE1REM2RDE5MUQ4MkFCMDBEQTgwNzIgLyog
V0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIubW0gKi8sCiAJCQkpOwogCQkJbmFtZSA9IGlvczsKIAkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC03MDI2LDYgKzcwMzIsNyBAQAogCQkJCTFBOUUz
Mjg5MTgyMTYzNjkwMEY1RDA0QyAvKiBfV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNTE2NTRFRkUxODRFRjMzRjAwN0RDODM3IC8qIFVuaXF1ZUlEQkRhdGFiYXNl
QmFja2luZ1N0b3JlU1FMaXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzMzRTBEMTEyNDA4RTg2
MDAzNjBGM0YgLyogSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQTExNURDNzIxOTFEODJEQTAwREE4MDcyIC8qIFdLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkNCNEU2MDE4QkJFM0Q5MDAwRkNGQzkgLyogRmluZEluZGlj
YXRvcldpbmRvdy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxNERGNzcxMjBCNUI3OTAwODI2QzBD
IC8qIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQjBC
MERFMTIzMDVBOEMwMEIxMzQxRSAvKiBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlQ29kZXJzLmgg
aW4gSGVhZGVycyAqLywKQEAgLTg5ODQsNiArODk5MSw3IEBACiAJCQkJNTE5RUY1OEUxOEVGNzcw
RDAwMDNCN0Y0IC8qIFRlbGVwaG9uZU51bWJlck92ZXJsYXlDb250cm9sbGVyTWFjLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkNGNjlGQTMxMTc2RDAxNDAwNDcxQTUyIC8qIEFQSU5hdmlnYXRpb25E
YXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMxQTJFQzQ4MTQ4OTk3QzIwMDgxMEQ3MSAvKiBX
ZWJOb3RpZmljYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTExNURDNzExOTFEODJENzAw
REE4MDcyIC8qIFdLV2ViVmlld1ByaW50Rm9ybWF0dGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MzEwOTk5NzMxNDZDNzVBMjAwMjlERUI5IC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkyRERFMEFGQjE4Mjk4Q0M5MDBGOTdFQUEgLyogUmVtb3RlTGF5ZXJU
cmVlUHJvcGVydHlBcHBsaWVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzEzMTI2MjAxNDhGRjgy
QzAwQkEyQTM5IC8qIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZjAw
MDA2Y2RjOTU1NDhmNDg0NjYwOTBkYjZlMDNkYmExYWRmOGNmNy4uZGRjNWQ2NGNjYWYxMTI4NjY1
ZGEzOWJjNWY0MWUyY2U1YWE0NTIyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzYwOCw2ICszNjA4LDEzIEBAIHZvaWQgV2ViUGFnZTo6
Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZv
JiBwcmludEluCiB7CiAgICAgVmVjdG9yPEludFJlY3Q+IHJlc3VsdFBhZ2VSZWN0czsKICAgICBk
b3VibGUgcmVzdWx0VG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nID0gMTsKKyAgICBjb21wdXRl
UGFnZXNGb3JQcmludGluZ0ltcGwoZnJhbWVJRCwgcHJpbnRJbmZvLCByZXN1bHRQYWdlUmVjdHMs
IHJlc3VsdFRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZyk7CisgICAgc2VuZChNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpDb21wdXRlZFBhZ2VzQ2FsbGJhY2socmVzdWx0UGFnZVJlY3RzLCByZXN1
bHRUb3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcsIGNhbGxiYWNrSUQpKTsKK30KKwordm9pZCBX
ZWJQYWdlOjpjb21wdXRlUGFnZXNGb3JQcmludGluZ0ltcGwodWludDY0X3QgZnJhbWVJRCwgY29u
c3QgUHJpbnRJbmZvJiBwcmludEluZm8sIFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYgcmVzdWx0
UGFnZVJlY3RzLCBkb3VibGUmIHJlc3VsdFRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZykKK3sK
KyAgICBBU1NFUlQocmVzdWx0UGFnZVJlY3RzLmlzRW1wdHkoKSk7CiAKICAgICBiZWdpblByaW50
aW5nKGZyYW1lSUQsIHByaW50SW5mbyk7CiAKQEAgLTM2MjMsOCArMzYzMCw2IEBAIHZvaWQgV2Vi
UGFnZTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJp
bnRJbmZvJiBwcmludEluCiAgICAgLy8gSWYgd2UncmUgYXNrZWQgdG8gcHJpbnQsIHdlIHNob3Vs
ZCBhY3R1YWxseSBwcmludCBhdCBsZWFzdCBhIGJsYW5rIHBhZ2UuCiAgICAgaWYgKHJlc3VsdFBh
Z2VSZWN0cy5pc0VtcHR5KCkpCiAgICAgICAgIHJlc3VsdFBhZ2VSZWN0cy5hcHBlbmQoSW50UmVj
dCgwLCAwLCAxLCAxKSk7Ci0KLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNvbXB1
dGVkUGFnZXNDYWxsYmFjayhyZXN1bHRQYWdlUmVjdHMsIHJlc3VsdFRvdGFsU2NhbGVGYWN0b3JG
b3JQcmludGluZywgY2FsbGJhY2tJRCkpOwogfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCkBAIC0z
Njc1LDEwICszNjgwLDE3IEBAIHZvaWQgV2ViUGFnZTo6ZHJhd1JlY3RUb0ltYWdlKHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBjb25zCiAKIHZvaWQgV2ViUGFn
ZTo6ZHJhd1BhZ2VzVG9QREYodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmlu
dEluZm8sIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgdWludDY0X3QgY2FsbGJhY2tJ
RCkKIHsKKyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4gcGRmUGFnZURhdGE7CisgICAg
ZHJhd1BhZ2VzVG9QREZJbXBsKGZyYW1lSUQsIHByaW50SW5mbywgZmlyc3QsIGNvdW50LCBwZGZQ
YWdlRGF0YSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEYXRhQ2FsbGJhY2so
SVBDOjpEYXRhUmVmZXJlbmNlKENGRGF0YUdldEJ5dGVQdHIocGRmUGFnZURhdGEuZ2V0KCkpLCBD
RkRhdGFHZXRMZW5ndGgocGRmUGFnZURhdGEuZ2V0KCkpKSwgY2FsbGJhY2tJRCkpOworfQorCit2
b2lkIFdlYlBhZ2U6OmRyYXdQYWdlc1RvUERGSW1wbCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQ
cmludEluZm8mIHByaW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCBSZXRh
aW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4mIHBkZlBhZ2VEYXRhKQorewogICAgIFdlYkZyYW1lKiBm
cmFtZSA9IFdlYlByb2Nlc3M6OnNoYXJlZCgpLndlYkZyYW1lKGZyYW1lSUQpOwogICAgIEZyYW1l
KiBjb3JlRnJhbWUgPSBmcmFtZSA/IGZyYW1lLT5jb3JlRnJhbWUoKSA6IDA7CiAKLSAgICBSZXRh
aW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4gcGRmUGFnZURhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0
ZU11dGFibGUoMCwgMCkpOworICAgIHBkZlBhZ2VEYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGVN
dXRhYmxlKDAsIDApKTsKIAogI2lmIFVTRShDRykKICAgICBpZiAoY29yZUZyYW1lKSB7CkBAIC0z
NzIxLDggKzM3MzMsNiBAQCB2b2lkIFdlYlBhZ2U6OmRyYXdQYWdlc1RvUERGKHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCB1aW50MwogICAgICAgICBDR1BERkNv
bnRleHRDbG9zZShjb250ZXh0LmdldCgpKTsKICAgICB9CiAjZW5kaWYKLQotICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RGF0YUNhbGxiYWNrKElQQzo6RGF0YVJlZmVyZW5jZShDRkRh
dGFHZXRCeXRlUHRyKHBkZlBhZ2VEYXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKHBkZlBhZ2VE
YXRhLmdldCgpKSksIGNhbGxiYWNrSUQpKTsKIH0KIAogI2VsaWYgUExBVEZPUk0oR1RLKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMjRhZjJkY2Zj
MTg3YjdmZmI0MDBhZjFiY2U5OWI5ZDQyMmY0OGU3Mi4uMjlmNmFmZTY3NTQzZDZkYzA4OGQwYjc2
MzQ2MTZlMjk2MGZjNmNhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCkBAIC03Nyw2ICs3Nyw3IEBACiAKICNpZiBQTEFURk9STShJT1MpCiAjaW5jbHVk
ZSAiR2VzdHVyZVR5cGVzLmgiCisjaW1wb3J0ICJXZWJQYWdlTWVzc2FnZXMuaCIKICNlbmRpZgog
CiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKQEAgLTY1MSw5ICs2NTIsMTQgQEAgcHVibGljOgog
ICAgIHZvaWQgYmVnaW5QcmludGluZyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8m
KTsKICAgICB2b2lkIGVuZFByaW50aW5nKCk7CiAgICAgdm9pZCBjb21wdXRlUGFnZXNGb3JQcmlu
dGluZyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mLCB1aW50NjRfdCBjYWxsYmFj
a0lEKTsKKyAgICB2b2lkIGNvbXB1dGVQYWdlc0ZvclByaW50aW5nSW1wbCh1aW50NjRfdCBmcmFt
ZUlELCBjb25zdCBQcmludEluZm8mLCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIHBhZ2VSZWN0
cywgZG91YmxlJiB0b3RhbFNjYWxlRmFjdG9yKTsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2
b2lkIGRyYXdSZWN0VG9JbWFnZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mLCBj
b25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgZHJhd1BhZ2VzVG9QREYodWludDY0X3QgZnJhbWVJRCwg
Y29uc3QgUHJpbnRJbmZvJiwgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCB1aW50NjRf
dCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGRyYXdQYWdlc1RvUERGSW1wbCh1aW50NjRfdCBmcmFt
ZUlELCBjb25zdCBQcmludEluZm8mLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIFJl
dGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiYgcGRmUGFnZURhdGEpOworI2lmIFBMQVRGT1JNKElP
UykKKyAgICB2b2lkIGNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kU3RhcnREcmF3aW5nVG9QREYo
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMyX3QgZmlyc3RQYWdlLCBQ
YXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQYWdlOjpDb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZFN0
YXJ0RHJhd2luZ1RvUERGOjpEZWxheWVkUmVwbHk+KTsKKyNlbmRpZgogI2VsaWYgUExBVEZPUk0o
R1RLKQogICAgIHZvaWQgZHJhd1BhZ2VzRm9yUHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwgY29u
c3QgUHJpbnRJbmZvJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBkaWRGaW5pc2hQ
cmludE9wZXJhdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgdWludDY0X3QgY2Fs
bGJhY2tJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDQyODZiNTU3ZWUxODJkYjQyYjY0OGJmNTUzYzY2MTQx
MTM4NjU0NjQuLjFjMWNjYjA4ODI2ZjE0MDJkM2FhZmMxZDQ4NDE3MGVkMjhlM2QyN2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCkBAIC0yNjgsNiArMjY4LDkgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNl
aXZlciB7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgRHJhd1JlY3RUb0ltYWdlKHVpbnQ2NF90
IGZyYW1lSUQsIFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywgV2ViQ29yZTo6SW50UmVjdCBy
ZWN0LCBXZWJDb3JlOjpJbnRTaXplIGltYWdlU2l6ZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKICAg
ICBEcmF3UGFnZXNUb1BERih1aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OlByaW50SW5mbyBwcmlu
dEluZm8sIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgdWludDY0X3QgY2FsbGJhY2tJ
RCkKKyNpZiBQTEFURk9STShJT1MpCisgICAgQ29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmRTdGFy
dERyYXdpbmdUb1BERih1aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OlByaW50SW5mbyBwcmludElu
Zm8sIHVpbnQzMl90IGZpcnN0UGFnZSkgLT4gKFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiBwYWdl
UmVjdHMsIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9yKSBEZWxheWVkCisjZW5kaWYKICNlbmRpZgog
I2lmIFBMQVRGT1JNKEdUSykKICAgICBEcmF3UGFnZXNGb3JQcmludGluZyh1aW50NjRfdCBmcmFt
ZUlELCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIHVpbnQ2NF90IGNhbGxiYWNrSUQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0KaW5kZXggOWMwNThlMmQ4NzRjOTY4OTU0NDQ2MDM4ZjZlYTg0MWRhY2JkOGU1MC4uMjAyZWU0
YjQ0NDMwMjkwNWQ3ODhhOWUzMTg3YTBkYWMxZDE0OTI3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMjI4Myw2ICsy
MjgzLDE5IEBAIHZvaWQgV2ViUGFnZTo6ZGlzcGF0Y2hBc3luY2hyb25vdXNUb3VjaEV2ZW50cyhj
b25zdCBWZWN0b3I8V2ViVG91Y2hFdmVudCwgMT4mIHF1CiAgICAgICAgIGRpc3BhdGNoVG91Y2hF
dmVudChldmVudCwgaWdub3JlZCk7CiB9CiAKK3ZvaWQgV2ViUGFnZTo6Y29tcHV0ZVBhZ2VzRm9y
UHJpbnRpbmdBbmRTdGFydERyYXdpbmdUb1BERih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmlu
dEluZm8mIHByaW50SW5mbywgdWludDMyX3QgZmlyc3RQYWdlLCBQYXNzUmVmUHRyPE1lc3NhZ2Vz
OjpXZWJQYWdlOjpDb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZFN0YXJ0RHJhd2luZ1RvUERGOjpE
ZWxheWVkUmVwbHk+IHJlcGx5KQoreworICAgIFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiBwYWdl
UmVjdHM7CisgICAgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3IgPSAxOworICAgIGNvbXB1dGVQYWdl
c0ZvclByaW50aW5nSW1wbChmcmFtZUlELCBwcmludEluZm8sIHBhZ2VSZWN0cywgdG90YWxTY2Fs
ZUZhY3Rvcik7CisgICAgc3RkOjpzaXplX3QgcGFnZUNvdW50ID0gcGFnZVJlY3RzLnNpemUoKTsK
KyAgICByZXBseS0+c2VuZChzdGQ6Om1vdmUocGFnZVJlY3RzKSwgdG90YWxTY2FsZUZhY3Rvcik7
CisKKyAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4gcGRmUGFnZURhdGE7CisgICAgZHJh
d1BhZ2VzVG9QREZJbXBsKGZyYW1lSUQsIHByaW50SW5mbywgZmlyc3RQYWdlLCBwYWdlQ291bnQg
LSBmaXJzdFBhZ2UsIHBkZlBhZ2VEYXRhKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkRpZEZpbmlzaERyYXdpbmdQYWdlc1RvUERGKElQQzo6RGF0YVJlZmVyZW5jZShDRkRhdGFH
ZXRCeXRlUHRyKHBkZlBhZ2VEYXRhLmdldCgpKSwgQ0ZEYXRhR2V0TGVuZ3RoKHBkZlBhZ2VEYXRh
LmdldCgpKSkpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFU
Rk9STShJT1MpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231704</attachid>
            <date>2014-05-19 11:21:30 -0700</date>
            <delta_ts>2014-05-19 13:41:35 -0700</delta_ts>
            <desc>[iOS] Create a UIPrintFormatter for WKWebView</desc>
            <filename>bug-133005-20140519112106.patch</filename>
            <type>text/plain</type>
            <size>35354</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY5MDUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOThiNjAyNDc0OTk0NmE0
Yjc3NTUwYjA3NzA5ZTc4Yjk4ODBkOGM2MS4uNTdhZjZmZmE0ODE1NzRiYjMwOGQ1NTMwMWY4ODdl
ZjU2ZmEyZDhlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDcyIEBACiAyMDE0LTA1LTE2ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAorICAgICAgICBbaU9TXSBDcmVhdGUgYSBVSVBy
aW50Rm9ybWF0dGVyIGZvciBXS1dlYlZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzMzAwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGVkIGEgVUlQcmludEZvcm1hdHRlciBzdWJjbGFz
cyB0byBzdXBwb3J0IHByaW50aW5nIFdLV2ViVmlld3MgdXNpbmcgVUlQcmludEludGVyYWN0aW9u
Q29udHJvbGxlci4KKyAgICAgICAgT3ZlcnJvZGUgLV9yZWNhbGNQYWdlQ291bnQ6IHRvIHN5bmNo
cm9ub3VzbHkgYXNrIHRoZSB3ZWIgcHJvY2VzcyB0byBsYXkgb3V0IGZvciBwcmludGluZyBhbmQg
cmV0dXJuIHRoZSBudW1iZXIKKyAgICAgICAgb2YgcGFnZSByZWN0cy4gVGhlIHdlYiBwcm9jZXNz
IHJldHVybnMgdGhlIHBhZ2UgcmVjdHMgaW1tZWRpYXRlbHkgYW5kIHRoZW4gc3RhcnRzIHJlbmRl
cmluZyB0aGUgcGFnZSB0byBhIFBERiwKKyAgICAgICAgcmV0dXJuaW5nIHRoZSBQREYgZGF0YSB0
byB0aGUgVUkgcHJvY2VzcyBhc3luY2hyb25vdXNseS4gV2hlbiBVSVByaW50SW50ZXJhY3Rpb25D
b250cm9sbGVyIGxhdGVyIGNhbGxzIG91cgorICAgICAgICBvdmVycmlkZGVuIC1kcmF3SW5SZWN0
OmZvclBhZ2VBdEluZGV4Oiwgd2UgYmxvY2sgYW5kIHdhaXQgZm9yIHRoZSBQREYgZGF0YSB0byBi
ZSByZXR1cm5lZC4gU2luY2UKKyAgICAgICAgVUlQcmludEludGVyYWN0aW9uQ29udHJvbGxlciBk
cmF3cyBlYWNoIHBhZ2UgYWZ0ZXIgYSBkZWxheSwgaXQncyBwb3NzaWJsZSB0aGF0IHRoZSB3ZWIg
cHJvY2VzcyBoYXMgYWxyZWFkeQorICAgICAgICByZXR1cm5lZCB0aGUgUERGIGRhdGEgdG8gdXMg
YnkgdGhlIHRpbWUgd2UgcHJpbnQgdGhlIGZpcnN0IHBhZ2UuCisKKyAgICAgICAgKiBTaGFyZWQv
V2ViUHJlZmVyZW5jZXNTdG9yZS5oOiBDb3JyZWN0bHkgaW5pdGlhbGl6ZWQgc2hvdWxkUHJpbnRC
YWNrZ3JvdW5kcyBmb3IgaU9TLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2RhdGFGb3JEaXNwbGF5ZWRQREZdKTogTm93
IHRoYXQgV0tQREZWaWV3IHZlbmRzIGl0cyBDR1BERkRvY3VtZW50IGRpcmVjdGx5LCBleHRyYWN0
IGl0cyBkYXRhIGhlcmUuCisgICAgICAgICgtW1dLV2ViVmlldyBfcHJpbnRGb3JtYXR0ZXJDbGFz
c10pOiBUZWxsIFVJVmlldyB3aGljaCBVSVByaW50Rm9ybWF0dGVyIHRvIGFsbG9jLgorICAgICAg
ICAoLVtXS1dlYlZpZXcgX2NvbXB1dGVQYWdlQ291bnRBbmRTdGFydERyYXdpbmdUb1BERldpdGhQ
cmludEluZm86V2ViS2l0OjpmaXJzdFBhZ2U6Y29tcHV0ZWRUb3RhbFNjYWxlRmFjdG9yOl0pOgor
ICAgICAgICBJZiB3ZSdyZSBkaXNwbGF5aW5nIGEgUERGLCByZXR1cm4gaXRzIHBhZ2UgY291bnQg
ZGlyZWN0bHkuIE90aGVyd2lzZSwgc3luY2hyb25vdXNseSBhc2sgdGhlIHdlYiBwcm9jZXNzIHRv
CisgICAgICAgIGNvbXB1dGUgcGFnZSByZWN0cyBmb3IgcHJpbnRpbmcgYW5kIHRoZW4gcmV0dXJu
IHRoZSBudW1iZXIgb2YgcmVjdHMuCisgICAgICAgICgtW1dLV2ViVmlldyBfZW5kUHJpbnRpbmdd
KTogQ2xlYXJlZCBzdGF0ZSBhbmQgc2VudCB0aGUgV2ViUGFnZTo6RW5kUHJpbnRpbmcgbWVzc2Fn
ZSB0byB0aGUgd2ViIHByb2Nlc3MuCisgICAgICAgICgtW1dLV2ViVmlldyBfcHJpbnRlZERvY3Vt
ZW50XSk6IElmIHdlJ3JlIGRpc3BsYXlpbmcgYSBQREYsIHJldHVybiBpdHMgZGF0YSBkaXJlY3Rs
eS4gT3RoZXJ3aXNlLCBpZiB3ZSBoYXZlbid0CisgICAgICAgIHJlY2VpdmVkIFBERiBkYXRhIGZy
b20gdGhlIHdlYiBwcm9jZXNzIHlldCwgd2FpdCBmb3IgaXQgaW5kZWZpbml0ZWx5ICh0aGVyZSdz
IG5vIHNlbnNpYmxlIHRpbWVvdXQgdG8gdXNlIGhlcmUKKyAgICAgICAgc2luY2UgZmFpbGluZyB0
byByZWNlaXZlIHRoZSBkYXRhIHJlc3VsdHMgaW4gcHJpbnRpbmcgc29tZSBudW1iZXIgb2YgYmxh
bmsgcGFnZXMpLgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldFByaW50ZWREb2N1bWVudDpdKTog
U2V0IHRoZSBDR1BERkRvY3VtZW50IHJlY2VpdmVkIGZyb20gdGhlIHdlYiBwcm9jZXNzLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaDogRGVjbGFyZWQg
bWV0aG9kcyBjYWxsZWQgYnkgV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIuCisgICAgICAgICogVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaDogRGVjbGFyZWQgZGlkRmluaXNoRHJhd2luZ1BhZ2VzVG9QREYu
CisgICAgICAgICogVUlQcm9jZXNzL1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmg6IEFkZGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XS1dlYlZpZXdQcmludEZvcm1hdHRlci5tbTogQWRkZWQuCisg
ICAgICAgICgtW1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyIGRlYWxsb2NdKTogQ2xlYXJlZCBzdGF0
ZSBhbmQgY2FsbGVkIC1bV0tXZWJWaWV3IF9lbmRQcmludGluZ10uCisgICAgICAgICgtW1dLV2Vi
Vmlld1ByaW50Rm9ybWF0dGVyIHdlYlZpZXddKTogUmV0dXJuZWQgdGhlIFdLV2ViVmlldyBmb3Ig
dGhpcyBwcmludCBmb3JtYXR0ZXIuCisgICAgICAgICgtW1dLV2ViVmlld1ByaW50Rm9ybWF0dGVy
IF9yZWNhbGNQYWdlQ291bnRdKTogU2V0IHVwIGEgUHJpbnRJbmZvIG9iamVjdCBnaXZlbiB0aGUg
Zm9ybWF0dGVyJ3MgY29udGVudCByZWN0CisgICAgICAgIGFuZCBjYWxsZWQgLV9jb21wdXRlUGFn
ZUNvdW50QW5kU3RhcnREcmF3aW5nVG9QREZXaXRoUHJpbnRJbmZvOi4uLgorICAgICAgICAoLVtX
S1dlYlZpZXdQcmludEZvcm1hdHRlciByZWN0Rm9yUGFnZUF0SW5kZXg6XSk6IENhbGxlZCAtX3Jl
Y2FsY0lmTmVjZXNzYXJ5IGFuZCB0aGVuIHJldHVybmVkIHRoZSByZWN0IGZyb20KKyAgICAgICAg
LV9wYWdlQ29udGVudFJlY3QuCisgICAgICAgICgtW1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyIGRy
YXdJblJlY3Q6Zm9yUGFnZUF0SW5kZXg6XSk6IFRhdWdodCB0byBkcmF3IHRoZSBnaXZlbiBwYWdl
IG9mIHRoZSBwcmludGVkIFBERgorICAgICAgICBkb2N1bWVudCBpbnRvIHRoZSBnaXZlbiByZWN0
IGFuZCBjb250ZXh0IHByb3ZpZGVkIHRvIHVzLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDogRGVjbGFyZWQgZGlkRmluaXNoRHJhd2luZ1BhZ2VzVG9QREYuCisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjogQWRkZWQgRGlkRmluaXNoRHJhd2lu
Z1BhZ2VzVG9QREYuIE1hZGUgdGhpcyBhIGRlbGF5ZWQgc3luY3Job25vdXMgbWVzc2FnZQorICAg
ICAgICBzbyB0aGF0IGFkZGl0b2luYWwgd29yayBjb3VsZCBiZSBwZXJmb3JtZWQgYWZ0ZXIgc2Vu
ZGluZyB0aGUgcmVzcG9uc2UuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW06Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkaWRGaW5pc2hEcmF3aW5nUGFnZXNUb1BE
Rik6IENyZWF0ZWQgYSBDR1BERkRvY3VtZW50IGZyb20gdGhlIGRhdGEgc2VudCB0byB1cyBieSB0
aGUKKyAgICAgICAgd2ViIHByb2Nlc3MgYW5kIGNhbGxlZCAtW1dLV2ViVmlldyBfc2V0UHJpbnRl
ZERvY3VtZW50Ol0uCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbToKKyAgICAgICAgKC1bV0tQREZWaWV3IHBk
ZkRvY3VtZW50XSk6IFJldHVybmVkIHRoZSB1bmRlcmx5aW5nIENHUERGRG9jdW1lbnQuCisgICAg
ICAgICgtW1dLUERGVmlldyBkb2N1bWVudERhdGFdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpkaWRGaW5pc2hEcmF3aW5nUGFnZXNUb1BERik6CisgICAgICAgICogV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRp
bmcpOiBDaGFuZ2VkIHRvIGNhbGwgY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdJbXBsLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpjb21wdXRlUGFnZXNGb3JQcmludGluZ0ltcGwpOiBNb3ZlZCB0
aGUgY29tbW9uIGxvZ2ljIG9mIGNvbXB1dGVQYWdlc0ZvclByaW50aW5nIHRvIGhlcmUgc28gaXQK
KyAgICAgICAgY291bGQgYmUgY2FsbGVkIGJ5IGNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kU3Rh
cnREcmF3aW5nVG9QREYuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdQYWdlc1RvUERG
KTogQ2hhbmdlZCB0byBjYWxsIGRyYXdQYWdlc1RvUERGSW1wbAorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpkcmF3UGFnZXNUb1BERkltcGwpOiBNb3ZlZCB0aGUgY29tbW9uIGxvZ2ljIG9mIGRy
YXdQYWdlc1RvUERGIHRvIGhlcmUgc28gaXQgY291bGQgYmUgY2FsbGVkCisgICAgICAgIGJ5IGNv
bXB1dGVQYWdlc0ZvclByaW50aW5nQW5kU3RhcnREcmF3aW5nVG9QREYuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNvbXB1dGVQYWdlc0ZvclBy
aW50aW5nQW5kU3RhcnREcmF3aW5nVG9QREYpOiBDb21wdXRlZCBwYWdlIHJlY3RzIGFuZCByZXR1
cm5lZCB0aGVtIGFzIGEKKyAgICAgICAgc3luY2hyb25vdXMgcmVzcG9uc2UuIEFmdGVyd2FyZHMg
Y2FsbGVkIGRyYXdQYWdlc1RvUERGSW1wbCgpIGFuZCByZXR1cm5lZCB0aGUgUERGIGRhdGEgYnkg
c2VuZGluZworICAgICAgICBXZWJQYWdlUHJveHk6OkRpZEZpbmlzaERyYXdpbmdQYWdlc1RvUERG
LgorCisyMDE0LTA1LTE2ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKwogICAgICAg
ICBbV2ViS2l0Ml0gV2FrZSB1cCB0aHJlYWRzIGJsb2NrZWQgaW4gd2FpdEZvckFuZERpc3BhdGNo
SW1tZWRpYXRlbHkoKSBpZiB3ZSBsb3NlIG91ciBjb25uZWN0aW9uCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzMwMTAKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmgKaW5kZXggZTMwYzI2NWU3ZWYwMTRlZGQyZjg4
ZjlkNmZlNGMyMDgwZjM0ZmY1Zi4uZjUyYzY4ZWEwYjdiZjA5NTAyNTg3ZjM1ZDQ1ZWRjZmM1ZTVl
NDQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oCkBA
IC0xNDQsNyArMTQ0LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgbWFjcm8oUGFnaW5hdGVE
dXJpbmdMYXlvdXRFbmFibGVkLCBwYWdpbmF0ZUR1cmluZ0xheW91dEVuYWJsZWQsIEJvb2wsIGJv
b2wsIGZhbHNlKSBcCiAgICAgbWFjcm8oRE9NUGFzdGVBbGxvd2VkLCBkb21QYXN0ZUFsbG93ZWQs
IEJvb2wsIGJvb2wsIGZhbHNlKSBcCiAgICAgbWFjcm8oSmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBi
b2FyZCwgamF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZCwgQm9vbCwgYm9vbCwgZmFsc2UpIFwK
LSAgICBtYWNybyhTaG91bGRQcmludEJhY2tncm91bmRzLCBzaG91bGRQcmludEJhY2tncm91bmRz
LCBCb29sLCBib29sLCBmYWxzZSkgXAorICAgIG1hY3JvKFNob3VsZFByaW50QmFja2dyb3VuZHMs
IHNob3VsZFByaW50QmFja2dyb3VuZHMsIEJvb2wsIGJvb2wsIERFRkFVTFRfU0hPVUxEX1BSSU5U
X0JBQ0tHUk9VTkRTKSBcCiAgICAgbWFjcm8oRnVsbFNjcmVlbkVuYWJsZWQsIGZ1bGxTY3JlZW5F
bmFibGVkLCBCb29sLCBib29sLCBmYWxzZSkgXAogICAgIG1hY3JvKEFzeW5jaHJvbm91c1NwZWxs
Q2hlY2tpbmdFbmFibGVkLCBhc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCwgQm9vbCwg
Ym9vbCwgZmFsc2UpIFwKICAgICBtYWNybyhXZWJTZWN1cml0eUVuYWJsZWQsIHdlYlNlY3VyaXR5
RW5hYmxlZCwgQm9vbCwgYm9vbCwgdHJ1ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA4YzMwMjJmNTdjMjIwZWZhYmQyZWFmZTM4
MDZhMTM1ZDJhYTZhYTVlLi5lMzQwMDkzNDNjNjU3YWI4NDY1YTk0ZDhjMzZhYjQ3NWRiMGI0ZTRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQpAQCAtNjksMTEgKzY5LDE1IEBACiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKICNpZiBQ
TEFURk9STShJT1MpCisjaW1wb3J0ICJQcmludEluZm8uaCIKICNpbXBvcnQgIlByb2Nlc3NUaHJv
dHRsZXIuaCIKICNpbXBvcnQgIldLUERGVmlldy5oIgogI2ltcG9ydCAiV0tTY3JvbGxWaWV3Lmgi
CiAjaW1wb3J0ICJXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5oIgorI2ltcG9ydCAi
V0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIuaCIKKyNpbXBvcnQgIldlYlBhZ2VNZXNzYWdlcy5oIgog
I2ltcG9ydCA8Q29yZUdyYXBoaWNzL0NHRmxvYXQuaD4KKyNpbXBvcnQgPENvcmVHcmFwaGljcy9D
R1BERkRvY3VtZW50UHJpdmF0ZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlQZXJpcGhlcmFsSG9zdF9Q
cml2YXRlLmg+CiAjaW1wb3J0IDxRdWFydHpDb3JlL0NBUmVuZGVyU2VydmVyLmg+CiAjaW1wb3J0
IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmVQcml2YXRlLmg+CkBAIC0xNTQsNiArMTU4LDkgQEAgQGlt
cGxlbWVudGF0aW9uIFdLV2ViVmlldyB7CiAKICAgICBCT09MIF9kZWxheVVwZGF0ZVZpc2libGVD
b250ZW50UmVjdHM7CiAgICAgQk9PTCBfaGFkRGVsYXllZFVwZGF0ZVZpc2libGVDb250ZW50UmVj
dHM7CisKKyAgICBCT09MIF9wYWdlSXNQcmludGluZ1RvUERGOworICAgIFJldGFpblB0cjxDR1BE
RkRvY3VtZW50UmVmPiBfcHJpbnRlZERvY3VtZW50OwogI2VuZGlmCiAjaWYgUExBVEZPUk0oTUFD
KQogICAgIFJldGFpblB0cjxXS1ZpZXc+IF93a1ZpZXc7CkBAIC0xNzI3LDcgKzE3MzQsOCBAQCAt
IChOU0RhdGEgKilfZGF0YUZvckRpc3BsYXllZFBERgogewogICAgIGlmICghW3NlbGYgX2lzRGlz
cGxheWluZ1BERl0pCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIFsoV0tQREZWaWV3
ICopX2N1c3RvbUNvbnRlbnRWaWV3LmdldCgpIGRvY3VtZW50RGF0YV07CisgICAgQ0dQREZEb2N1
bWVudFJlZiBwZGZEb2N1bWVudCA9IFsoV0tQREZWaWV3ICopX2N1c3RvbUNvbnRlbnRWaWV3IHBk
ZkRvY3VtZW50XTsKKyAgICByZXR1cm4gWyhOU0RhdGEgKilDR0RhdGFQcm92aWRlckNvcHlEYXRh
KENHUERGRG9jdW1lbnRHZXREYXRhUHJvdmlkZXIocGRmRG9jdW1lbnQpKSBhdXRvcmVsZWFzZV07
CiB9CiAKIC0gKE5TU3RyaW5nICopX3N1Z2dlc3RlZEZpbGVuYW1lRm9yRGlzcGxheWVkUERGCkBA
IC0xODQxLDQgKzE4NDksNjUgQEAgQGVuZAogCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPUykK
K0BpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcgKFdLV2ViVmlld1ByaW50Rm9ybWF0dGVyKQorCist
IChDbGFzcylfcHJpbnRGb3JtYXR0ZXJDbGFzcworeworICAgIHJldHVybiBbV0tXZWJWaWV3UHJp
bnRGb3JtYXR0ZXIgY2xhc3NdOworfQorCistIChOU0ludGVnZXIpX2NvbXB1dGVQYWdlQ291bnRB
bmRTdGFydERyYXdpbmdUb1BERldpdGhQcmludEluZm86KGNvbnN0IFdlYktpdDo6UHJpbnRJbmZv
JilwcmludEluZm8gZmlyc3RQYWdlOih1aW50MzJfdClmaXJzdFBhZ2UgY29tcHV0ZWRUb3RhbFNj
YWxlRmFjdG9yOihkb3VibGUmKXRvdGFsU2NhbGVGYWN0b3IKK3sKKyAgICBpZiAoW3NlbGYgX2lz
RGlzcGxheWluZ1BERl0pCisgICAgICAgIHJldHVybiBDR1BERkRvY3VtZW50R2V0TnVtYmVyT2ZQ
YWdlcyhbKFdLUERGVmlldyAqKV9jdXN0b21Db250ZW50VmlldyBwZGZEb2N1bWVudF0pOworCisg
ICAgX3BhZ2VJc1ByaW50aW5nVG9QREYgPSBZRVM7CisgICAgVmVjdG9yPFdlYkNvcmU6OkludFJl
Y3Q+IHBhZ2VSZWN0czsKKyAgICBpZiAoIV9wYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFn
ZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmRTdGFydERyYXdpbmdUb1BERihfcGFnZS0+bWFp
bkZyYW1lKCktPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBmaXJzdFBhZ2UpLCBNZXNzYWdlczo6V2Vi
UGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmRTdGFydERyYXdpbmdUb1BERjo6UmVwbHko
cGFnZVJlY3RzLCB0b3RhbFNjYWxlRmFjdG9yKSkpCisgICAgICAgIHJldHVybiB7IH07CisgICAg
cmV0dXJuIHBhZ2VSZWN0cy5zaXplKCk7Cit9CisKKy0gKHZvaWQpX2VuZFByaW50aW5nCit7Cisg
ICAgX3BhZ2VJc1ByaW50aW5nVG9QREYgPSBOTzsKKyAgICBfcHJpbnRlZERvY3VtZW50ID0gbnVs
bHB0cjsKKyAgICBfcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RW5kUHJpbnRpbmcoKSk7
Cit9CisKKy8vIEZJWE1FOiBtaWxsaXNlY29uZHM6Om1heCgpIG92ZXJmbG93cyB3aGVuIGNvbnZl
cnRlZCB0byBuYW5vc2Vjb25kcywgY2F1c2luZyBjb25kaXRpb25fdmFyaWFibGU6OndhaXRfZm9y
KCkgdG8gYmVsaWV2ZQorLy8gYSB0aW1lb3V0IG9jY3VycmVkIG9uIGFueSBzcHVyaW91cyB3YWtl
dXAuIFVzZSBuYW5vc2Vjb25kczo6bWF4KCkgKGNvbnZlcnRlZCB0byBtcykgdG8gYXZvaWQgdGhp
cy4gV2Ugc2hvdWxkIHBlcmhhcHMKKy8vIGNoYW5nZSB3YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlh
dGVseSgpIHRvIHRha2UgbmFub3NlY29uZHMgdG8gYXZvaWQgdGhpcyBpc3N1ZS4KK3N0YXRpYyBj
b25zdGV4cHIgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyBkaWRGaW5pc2hMb2FkaW5nVGltZW91
dCA9IHN0ZDo6Y2hyb25vOjpkdXJhdGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHM+
KHN0ZDo6Y2hyb25vOjpuYW5vc2Vjb25kczo6bWF4KCkpOworCistIChDR1BERkRvY3VtZW50UmVm
KV9wcmludGVkRG9jdW1lbnQKK3sKKyAgICBpZiAoW3NlbGYgX2lzRGlzcGxheWluZ1BERl0pIHsK
KyAgICAgICAgQVNTRVJUKCFfcGFnZUlzUHJpbnRpbmdUb1BERik7CisgICAgICAgIHJldHVybiBb
KFdLUERGVmlldyAqKV9jdXN0b21Db250ZW50VmlldyBwZGZEb2N1bWVudF07CisgICAgfQorCisg
ICAgaWYgKF9wYWdlSXNQcmludGluZ1RvUERGKSB7CisgICAgICAgIGlmICghX3BhZ2UtPnByb2Nl
c3MoKS5jb25uZWN0aW9uKCktPndhaXRGb3JBbmREaXNwYXRjaEltbWVkaWF0ZWx5PE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRpZEZpbmlzaERyYXdpbmdQYWdlc1RvUERGPihfcGFnZS0+cGFnZUlE
KCksIGRpZEZpbmlzaExvYWRpbmdUaW1lb3V0KSkgeworICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorICAgICAg
ICBBU1NFUlQoIV9wYWdlSXNQcmludGluZ1RvUERGKTsKKyAgICB9CisgICAgcmV0dXJuIF9wcmlu
dGVkRG9jdW1lbnQuZ2V0KCk7Cit9CisKKy0gKHZvaWQpX3NldFByaW50ZWREb2N1bWVudDooQ0dQ
REZEb2N1bWVudFJlZilwcmludGVkRG9jdW1lbnQKK3sKKyAgICBpZiAoIV9wYWdlSXNQcmludGlu
Z1RvUERGKQorICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKCFbc2VsZiBfaXNEaXNwbGF5aW5n
UERGXSk7CisgICAgX3ByaW50ZWREb2N1bWVudCA9IHByaW50ZWREb2N1bWVudDsKKyAgICBfcGFn
ZUlzUHJpbnRpbmdUb1BERiA9IE5POworfQorCitAZW5kCisjZW5kaWYKKwogI2VuZGlmIC8vIFdL
X0FQSV9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld0ludGVybmFsLmgKaW5kZXggZTVjZTQyN2VmMzZlNWU4NDJlZjg3ZDFlZGIz
NzQxZGQ2YzEwZGNjMi4uYzBhZTZmOTUxZDMzYjVhYTNkZjc0MThhN2IzYjMzZDA1MGJiYWUwNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJ
bnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3SW50ZXJuYWwuaApAQCAtNDYsOSArNDYsMTIgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiBj
bGFzcyBXZWJQYWdlUHJveHk7CitzdHJ1Y3QgUHJpbnRJbmZvOwogc3RydWN0IFZpZXdTbmFwc2hv
dDsKIH0KIAorQGNsYXNzIFdLV2ViVmlld1ByaW50Rm9ybWF0dGVyOworCiBAaW50ZXJmYWNlIFdL
V2ViVmlldyAoKSBXS19XRUJfVklFV19QUk9UT0NPTFMgewogCiBAcGFja2FnZQpAQCAtODIsNCAr
ODUsMTIgQEAgc3RydWN0IFZpZXdTbmFwc2hvdDsKIAogV0tXZWJWaWV3KiBmcm9tV2ViUGFnZVBy
b3h5KFdlYktpdDo6V2ViUGFnZVByb3h5Jik7CiAKKyNpZiBQTEFURk9STShJT1MpCitAaW50ZXJm
YWNlIFdLV2ViVmlldyAoV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIpCistIChOU0ludGVnZXIpX2Nv
bXB1dGVQYWdlQ291bnRBbmRTdGFydERyYXdpbmdUb1BERldpdGhQcmludEluZm86KGNvbnN0IFdl
YktpdDo6UHJpbnRJbmZvJilwcmludEluZm8gZmlyc3RQYWdlOih1aW50MzJfdClmaXJzdFBhZ2Ug
Y29tcHV0ZWRUb3RhbFNjYWxlRmFjdG9yOihkb3VibGUmKXRvdGFsU2NhbGVGYWN0b3I7CistICh2
b2lkKV9lbmRQcmludGluZzsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldFByaW50
ZWREb2N1bWVudDopIENHUERGRG9jdW1lbnRSZWYgX3ByaW50ZWREb2N1bWVudDsKK0BlbmQKKyNl
bmRpZgorCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IGVj
Yjc4OTI5OGNjZWM2YzA4N2MxMzAwNjY1NTA4NjUyMWMwNDkxYWQuLjk4ZDAxNmZiMzNkMzY5MjA3
ZTA5NmQ0NmRlMTZiMWM3N2U4ZjZlZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaApAQCAtMjU5LDYgKzI1OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hh
bmdlVmlld3BvcnRNZXRhVGFnV2lkdGgoZmxvYXQpID0gMDsKICAgICB2aXJ0dWFsIGRvdWJsZSBt
aW5pbXVtWm9vbVNjYWxlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRT
aXplIGNvbnRlbnRzU2l6ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNo
RHJhd2luZ1BhZ2VzVG9QREYoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJikgPSAwOwogCiAjaWYg
RU5BQkxFKElOU1BFQ1RPUikKICAgICB2aXJ0dWFsIHZvaWQgc2hvd0luc3BlY3RvckluZGljYXRp
b24oKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV0tXZWJWaWV3
UHJpbnRGb3JtYXR0ZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XS1dlYlZpZXdQcmlu
dEZvcm1hdHRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxODAzNjY0ZTk2Zjc4ODllNTM1YzdmNDYyOTY5YTVi
ZWYyYjU2OWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV0tX
ZWJWaWV3UHJpbnRGb3JtYXR0ZXIuaApAQCAtMCwwICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCA8VUlLaXQvVUlQcmludEZvcm1hdHRlci5oPgorI2ltcG9ydCA8V2ViQ29yZS9JbnRSZWN0
Lmg+CisjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CisKK0BpbnRlcmZhY2UgV0tXZWJWaWV3UHJpbnRG
b3JtYXR0ZXIgOiBVSVZpZXdQcmludEZvcm1hdHRlcgorQGVuZApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLm1tIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLm1tCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjli
NTNjYjc2M2Q4MWM3YzNkODlkZTgxZmY4OThmOGJhZDE4ZTY4ZWUKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIubW0KQEAg
LTAsMCArMSwxMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQg
IldLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmgiCisKKyNpZiBQTEFURk9STShJT1MpCisKKyNpbXBv
cnQgIlByaW50SW5mby5oIgorI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKKyNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KKworQGludGVyZmFjZSBVSVByaW50Rm9ybWF0dGVyIChJUEkpCist
IChDR1JlY3QpX3BhZ2VDb250ZW50UmVjdDooQk9PTClmaXJzdFBhZ2U7CistICh2b2lkKV9yZWNh
bGNJZk5lY2Vzc2FyeTsKK0BlbmQKKworQGludGVyZmFjZSBXS1dlYlZpZXdQcmludEZvcm1hdHRl
ciAoKQorQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBXS1dlYlZpZXcgKndlYlZpZXc7
CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXdQcmludEZvcm1hdHRlciB7CisgICAg
ZG91YmxlIF90b3RhbFNjYWxlRmFjdG9yOworICAgIFdlYktpdDo6UHJpbnRJbmZvIF9wcmludElu
Zm87Cit9CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIFtzZWxmLndlYlZpZXcgX2VuZFByaW50
aW5nXTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKFdLV2ViVmlldyAqKXdlYlZpZXcK
K3sKKyAgICBBU1NFUlQoW3NlbGYudmlldyBpc0tpbmRPZkNsYXNzOltXS1dlYlZpZXcgY2xhc3Nd
XSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdLV2ViVmlldyAqPihzZWxmLnZpZXcpOworfQor
CistIChOU0ludGVnZXIpX3JlY2FsY1BhZ2VDb3VudAoreworICAgIEFTU0VSVChbc2VsZiByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9wYWdlQ29udGVudFJlY3Q6KV0pOworCisgICAgQ0dS
ZWN0IGZpcnN0UmVjdCA9IFtzZWxmIF9wYWdlQ29udGVudFJlY3Q6WUVTXTsKKyAgICBDR1JlY3Qg
bmV4dFJlY3QgPSBbc2VsZiBfcGFnZUNvbnRlbnRSZWN0Ok5PXTsKKyAgICBpZiAoQ0dSZWN0SXNF
bXB0eShmaXJzdFJlY3QpIHx8IENHUmVjdElzRW1wdHkobmV4dFJlY3QpKQorICAgICAgICByZXR1
cm4gMDsKKworICAgIC8vIFRoZSBmaXJzdCBwYWdlIGNhbiBoYXZlIGEgc21hbGxlciBjb250ZW50
IHJlY3QgdGhhbiBzdWJzZXF1ZW50IHBhZ2VzIGlmIGEgdG9wIGNvbnRlbnQgaW5zZXQgaXMgc3Bl
Y2lmaWVkLiBTaW5jZQorICAgIC8vIFdlYktpdCByZXF1aXJlcyBhIHVuaWZvcm0gY29udGVudCBy
ZWN0IGZvciBlYWNoIHBhZ2UgZHVyaW5nIGxheW91dCwgdXNlIHRoZSBmaXJzdCBwYWdlIHJlY3Qg
Zm9yIGFsbCBwYWdlcyBpZiBpdCdzCisgICAgLy8gc21hbGxlci4gVGhpcyBpcyB3aGF0IFVJV2Vi
VmlldydzIHByaW50IGZvcm1hdHRlciBkb2VzLgorICAgIEFTU0VSVChmaXJzdFJlY3Quc2l6ZS53
aWR0aCA9PSBuZXh0UmVjdC5zaXplLndpZHRoKTsKKyAgICBBU1NFUlQoZmlyc3RSZWN0Lm9yaWdp
bi55ID49IG5leHRSZWN0Lm9yaWdpbi55KTsKKyAgICBfcHJpbnRJbmZvLnBhZ2VTZXR1cFNjYWxl
RmFjdG9yID0gMTsKKyAgICBfcHJpbnRJbmZvLmF2YWlsYWJsZVBhcGVyV2lkdGggPSBuZXh0UmVj
dC5zaXplLndpZHRoOworICAgIF9wcmludEluZm8uYXZhaWxhYmxlUGFwZXJIZWlnaHQgPSBuZXh0
UmVjdC5zaXplLmhlaWdodCAtIChmaXJzdFJlY3Qub3JpZ2luLnkgLSBuZXh0UmVjdC5vcmlnaW4u
eSk7CisKKyAgICByZXR1cm4gW3NlbGYud2ViVmlldyBfY29tcHV0ZVBhZ2VDb3VudEFuZFN0YXJ0
RHJhd2luZ1RvUERGV2l0aFByaW50SW5mbzpfcHJpbnRJbmZvIGZpcnN0UGFnZTpzZWxmLnN0YXJ0
UGFnZSBjb21wdXRlZFRvdGFsU2NhbGVGYWN0b3I6X3RvdGFsU2NhbGVGYWN0b3JdOworfQorCist
IChDR1JlY3QpcmVjdEZvclBhZ2VBdEluZGV4OihOU0ludGVnZXIpcGFnZUluZGV4Cit7CisgICAg
QVNTRVJUKFtzZWxmIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3JlY2FsY0lmTmVjZXNz
YXJ5KV0pOworICAgIFtzZWxmIF9yZWNhbGNJZk5lY2Vzc2FyeV07CisgICAgcmV0dXJuIFtzZWxm
IF9wYWdlQ29udGVudFJlY3Q6cGFnZUluZGV4ID09IHNlbGYuc3RhcnRQYWdlXTsKK30KKworLSAo
dm9pZClkcmF3SW5SZWN0OihDR1JlY3QpcmVjdCBmb3JQYWdlQXRJbmRleDooTlNJbnRlZ2VyKXBh
Z2VJbmRleAoreworICAgIC8vIENHUERGRG9jdW1lbnRzIHVzZSAxLWJhc2VkIHBhZ2UgaW5kZXhp
bmcuCisgICAgQ0dQREZQYWdlUmVmIHBkZlBhZ2UgPSBDR1BERkRvY3VtZW50R2V0UGFnZShzZWxm
LndlYlZpZXcuX3ByaW50ZWREb2N1bWVudCwgcGFnZUluZGV4IC0gc2VsZi5zdGFydFBhZ2UgKyAx
KTsKKworICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gVUlHcmFwaGljc0dldEN1cnJlbnRDb250
ZXh0KCk7CisgICAgQ0dDb250ZXh0U2F2ZUdTdGF0ZShjb250ZXh0KTsKKworICAgIENHQ29udGV4
dFRyYW5zbGF0ZUNUTShjb250ZXh0LCByZWN0Lm9yaWdpbi54LCByZWN0Lm9yaWdpbi55KTsKKyAg
ICBDR0NvbnRleHRTY2FsZUNUTShjb250ZXh0LCBfdG90YWxTY2FsZUZhY3RvciwgLV90b3RhbFNj
YWxlRmFjdG9yKTsKKyAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwgMCwgLUNHUERG
UGFnZUdldEJveFJlY3QocGRmUGFnZSwga0NHUERGTWVkaWFCb3gpLnNpemUuaGVpZ2h0KTsKKyAg
ICBDR0NvbnRleHRDbGlwVG9SZWN0KGNvbnRleHQsIENHUERGUGFnZUdldEJveFJlY3QocGRmUGFn
ZSwga0NHUERGQ3JvcEJveCkpOworICAgIENHQ29udGV4dERyYXdQREZQYWdlKGNvbnRleHQsIHBk
ZlBhZ2UpOworCisgICAgQ0dDb250ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0KTsKK30KKworQGVu
ZAorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCmluZGV4IDZmOTAxYjAzYzAxNzAzNzM5MTE5NTljMzM0OTc0NTQ5YjYxOTMzYTMu
LmZiMjQ4MDQzNjI3YmU1Y2M3NmZkNzY1NzNmMWM3NGJjMTFlODc4MGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTYzMyw2ICs2MzMsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBjb21taXRQb3RlbnRpYWxUYXBGYWlsZWQoKTsKICAgICB2b2lkIGRpZE5vdEhhbmRs
ZVRhcEFzQ2xpY2soY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICB2b2lkIHZpZXdwb3J0
TWV0YVRhZ1dpZHRoRGlkQ2hhbmdlKGZsb2F0IHdpZHRoKTsKKyAgICB2b2lkIGRpZEZpbmlzaERy
YXdpbmdQYWdlc1RvUERGKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOwogI2VuZGlmCiAKICAg
ICBjb25zdCBFZGl0b3JTdGF0ZSYgZWRpdG9yU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2VkaXRv
clN0YXRlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbgppbmRleCA1MzBmNjYzNTBlYTI1NTllYmU1ZTRkOGJkZjljZTMyOWUxODJmOTRh
Li5lN2JmNWE0YTQ4MWY0YzE3MzJkYzBjMDUzMWQ1M2RiYWJjYjg2YTM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTE3Miw2
ICsxNzIsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIENvbW1pdFBvdGVudGlh
bFRhcEZhaWxlZCgpCiAgICAgRGlkTm90SGFuZGxlVGFwQXNDbGljayhXZWJDb3JlOjpJbnRQb2lu
dCBwb2ludCkKICAgICBWaWV3cG9ydE1ldGFUYWdXaWR0aERpZENoYW5nZShmbG9hdCB3aWR0aCkK
KyAgICBEaWRGaW5pc2hEcmF3aW5nUGFnZXNUb1BERihJUEM6OkRhdGFSZWZlcmVuY2UgcGRmRGF0
YSkKICNlbmRpZgogI2lmIFBMQVRGT1JNKEdUSykKICAgICBQcmludEZpbmlzaGVkQ2FsbGJhY2so
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgdWludDY0X3QgY2FsbGJhY2tJRCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCA4
YTUzNmM1ZTE5Mzg0NzFlMGFjMDYxNDQ5ZjgxOWZmOTNiMWFkYzA5Li5iYTFlNWU2YTlkZjBiOWM0
NzkyYWU3MGIyMjlmZjgxOTY1Mjc4YzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0xMzIsNiArMTMyLDcgQEAgcHJpdmF0ZToK
ICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIHpvb21Ub1JlY3QoV2ViQ29yZTo6RmxvYXRSZWN0
LCBkb3VibGUgbWluaW11bVNjYWxlLCBkb3VibGUgbWF4aW11bVNjYWxlKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoRHJhd2luZ1BhZ2VzVG9QREYoY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJikgb3ZlcnJpZGU7CiAKICAgICAvLyBBdXhpbGlhcnkgQ2xpZW50IENyZWF0aW9u
CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KaW5kZXggNTJiNWRhNTBhYzM2N2YxNjcxMzhk
ZTUwZjY0M2Q3MzA2ZjBiOTZhMS4uZWJjYWYzZWEwNWQyNTQ0ZWQyYWViYmRkNzJkNTBiZjVhZWE3
ZTMzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLm1tCkBAIC01MDMsNiArNTAzLDEzIEBAIHZvaWQgUGFnZUNsaWVudEltcGw6Onpvb21U
b1JlY3QoRmxvYXRSZWN0IHJlY3QsIGRvdWJsZSBtaW5pbXVtU2NhbGUsIGRvdWJsZSBtYXhpCiAg
ICAgW21fY29udGVudFZpZXcgX3pvb21Ub1JlY3Q6cmVjdCB3aXRoT3JpZ2luOnJlY3QuY2VudGVy
KCkgZml0RW50aXJlUmVjdDpZRVMgbWluaW11bVNjYWxlOm1pbmltdW1TY2FsZSBtYXhpbXVtU2Nh
bGU6bWF4aW11bVNjYWxlIG1pbmltdW1TY3JvbGxEaXN0YW5jZTowXTsKIH0KIAordm9pZCBQYWdl
Q2xpZW50SW1wbDo6ZGlkRmluaXNoRHJhd2luZ1BhZ2VzVG9QREYoY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiBwZGZEYXRhKQoreworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGEgPSBhZG9w
dENGKENGRGF0YUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBwZGZEYXRhLmRhdGEoKSwgcGRm
RGF0YS5zaXplKCkpKTsKKyAgICBSZXRhaW5QdHI8Q0dEYXRhUHJvdmlkZXJSZWY+IGRhdGFQcm92
aWRlciA9IGFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoQ0ZEYXRhKGRhdGEuZ2V0KCkp
KTsKKyAgICBtX3dlYlZpZXcuX3ByaW50ZWREb2N1bWVudCA9IGFkb3B0Q0YoQ0dQREZEb2N1bWVu
dENyZWF0ZVdpdGhQcm92aWRlcihkYXRhUHJvdmlkZXIuZ2V0KCkpKS5nZXQoKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcuaAppbmRleCA5MzBkNTYwMzc2ZGYwNWVhMmY1OGY0
MmZiNmFiNTY4ZmE1ODAzZGRkLi5hOGNmYTZjMjQ2MDY4MDViOWMyYjkzNjAxNWJmN2Y0YTU0ZmFm
ZThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3LmgKQEAgLTMwLDgg
KzMwLDggQEAKIAogQGludGVyZmFjZSBXS1BERlZpZXcgOiBVSVZpZXcgPFdLV2ViVmlld0NvbnRl
bnRQcm92aWRlcj4KIAotQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU0RhdGEgKmRv
Y3VtZW50RGF0YTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgTlNTdHJpbmcgKnN1
Z2dlc3RlZEZpbGVuYW1lOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBDR1BERkRv
Y3VtZW50UmVmIHBkZkRvY3VtZW50OwogCiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2lvcy9XS1BERlZpZXcubW0KaW5kZXggODA5NTU4ODc2ZjBlNzQwMzY1MTE3NzdiZWUyOGM0Njli
YmY4YzcxYy4uOTM0ZDk5NjM1Y2QwMzNlNjU5ODJjODQ2NmQwZDM3MzRhODhlNTIyZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW0KKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW0KQEAgLTI4LDcgKzI4LDYgQEAK
IAogI2lmIFBMQVRGT1JNKElPUykKIAotI2ltcG9ydCA8Q29yZUdyYXBoaWNzL0NHUERGRG9jdW1l
bnRQcml2YXRlLmg+CiAjaW1wb3J0IDxDb3JlUERGL1VJUERGRG9jdW1lbnQuaD4KICNpbXBvcnQg
PENvcmVQREYvVUlQREZQYWdlVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9GbG9hdFJlY3QuaD4K
QEAgLTcwLDE2ICs2OSwxNiBAQCAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhGcmFtZTooQ0dSZWN0
KWZyYW1lCiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKLS0gKE5TRGF0YSAqKWRvY3VtZW50RGF0YQot
eyAgICAKLSAgICByZXR1cm4gWyhOU0RhdGEgKilDR0RhdGFQcm92aWRlckNvcHlEYXRhKENHUERG
RG9jdW1lbnRHZXREYXRhUHJvdmlkZXIoW19wZGZEb2N1bWVudCBDR0RvY3VtZW50XSkpIGF1dG9y
ZWxlYXNlXTsKLX0KLQogLSAoTlNTdHJpbmcgKilzdWdnZXN0ZWRGaWxlbmFtZQogewogICAgIHJl
dHVybiBfc3VnZ2VzdGVkRmlsZW5hbWUuZ2V0KCk7CiB9CiAKKy0gKENHUERGRG9jdW1lbnRSZWYp
cGRmRG9jdW1lbnQKK3sKKyAgICByZXR1cm4gW19wZGZEb2N1bWVudCBDR0RvY3VtZW50XTsKK30K
KwogLSAodm9pZCl3ZWJfc2V0Q29udGVudFByb3ZpZGVyRGF0YTooTlNEYXRhICopZGF0YSBzdWdn
ZXN0ZWRGaWxlbmFtZTooTlNTdHJpbmcgKilmaWxlbmFtZQogewogICAgIF9zdWdnZXN0ZWRGaWxl
bmFtZSA9IGFkb3B0TlMoW2ZpbGVuYW1lIGNvcHldKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggNjQxMDA3MDMwOTNkMjIyMzE2ZTUx
ZDQwNGU4ZDZiMDc4ZTcxNDJhMS4uMzA4OGUyOTFjMjVkZjc5MWNhNjFiMzdkYWQxMDU5YTZmNzQ4
NDUxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJv
eHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJ
T1MubW0KQEAgLTY0OSw2ICs2NDksMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnZpZXdwb3J0TWV0
YVRhZ1dpZHRoRGlkQ2hhbmdlKGZsb2F0IHdpZHRoKQogICAgIG1fcGFnZUNsaWVudC5kaWRDaGFu
Z2VWaWV3cG9ydE1ldGFUYWdXaWR0aCh3aWR0aCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRGaW5pc2hEcmF3aW5nUGFnZXNUb1BERihjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHBkZkRh
dGEpCit7CisgICAgbV9wYWdlQ2xpZW50LmRpZEZpbmlzaERyYXdpbmdQYWdlc1RvUERGKHBkZkRh
dGEpOworfQorCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgCiB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZShjb25zdCBTdHJpbmcm
IGZpbGVOYW1lLCBjb25zdCBTdHJpbmcmIHV0aSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktp
dDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA5MmMxOGNlZjc0OTM4MGE4NWVkYmNj
NDQ2NTk2M2I4MmM2NmE4ZGIxLi5kMmIwNTdmYzY3MTA1NzJmYzRjZTdlNjQ3MmEzNmUxMmI2Mzlk
N2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xMDUzLDYgKzEwNTMsOCBAQAogCQk5RjU0Rjg5NTE2NDhBRTBGMDA3REY4MUEg
LyogUGx1Z2luUHJvY2Vzc01hbmFnZXJNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5RjU0Rjg5NDE2NDhBRTBFMDA3REY4MUEgLyogUGx1Z2luUHJv
Y2Vzc01hbmFnZXJNYWMubW0gKi87IH07CiAJCTlGQjVGMzk0MTY5RTZBODAwMDJDMjVCRiAvKiBX
S0NvbnRleHRQcml2YXRlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOUZCNUYzOTIxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVN
YWMubW0gKi87IH07CiAJCTlGQjVGMzk1MTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2
YXRlTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
RkI1RjM5MzE2OUU2QTgwMDAyQzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUExMTVEQzcxMTkxRDgy
RDcwMERBODA3MiAvKiBXS1dlYlZpZXdQcmludEZvcm1hdHRlci5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMTVEQzZEMTkxRDgyQUIwMERBODA3MiAv
KiBXS1dlYlZpZXdQcmludEZvcm1hdHRlci5tbSAqLzsgfTsKKwkJQTExNURDNzIxOTFEODJEQTAw
REE4MDcyIC8qIFdLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTE1REM2RTE5MUQ4MkFCMDBEQTgwNzIgLyogV0tX
ZWJWaWV3UHJpbnRGb3JtYXR0ZXIuaCAqLzsgfTsKIAkJQTExOEE5RUUxOTA3QUQ2RjAwRjdDOTJC
IC8qIFF1aWNrTG9va0RvY3VtZW50RGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBMTE4QTlFQzE5MDdBRDZGMDBGN0M5MkIgLyogUXVpY2tMb29r
RG9jdW1lbnREYXRhLmNwcCAqLzsgfTsKIAkJQTExOEE5RUYxOTA3QUQ2RjAwRjdDOTJCIC8qIFF1
aWNrTG9va0RvY3VtZW50RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTExOEE5RUQxOTA3QUQ2RjAwRjdDOTJCIC8qIFF1aWNrTG9va0RvY3VtZW50
RGF0YS5oICovOyB9OwogCQlBMTE4QTlGMjE5MDhCOEVBMDBGN0M5MkIgLyogX1dLTlNGaWxlTWFu
YWdlckV4dHJhcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEExMThBOUYwMTkwOEI4RUEwMEY3QzkyQiAvKiBfV0tOU0ZpbGVNYW5hZ2VyRXh0cmFzLm1t
ICovOyB9OwpAQCAtMzA0NSw2ICszMDQ3LDggQEAKIAkJOUY1NEY4OTQxNjQ4QUUwRTAwN0RGODFB
IC8qIFBsdWdpblByb2Nlc3NNYW5hZ2VyTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gUGx1Z2luUHJvY2Vzc01hbmFnZXJNYWMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTlGQjVGMzkyMTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRleHRQcml2
YXRlTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tDb250
ZXh0UHJpdmF0ZU1hYy5tbTsgcGF0aCA9IG1hYy9XS0NvbnRleHRQcml2YXRlTWFjLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5RkI1RjM5MzE2OUU2QTgwMDAyQzI1QkYgLyogV0tD
b250ZXh0UHJpdmF0ZU1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS0Nv
bnRleHRQcml2YXRlTWFjLmg7IHBhdGggPSBtYWMvV0tDb250ZXh0UHJpdmF0ZU1hYy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBMTE1REM2RDE5MUQ4MkFCMDBEQTgwNzIgLyogV0tX
ZWJWaWV3UHJpbnRGb3JtYXR0ZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXS1dlYlZpZXdQcmludEZvcm1hdHRlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTExNURDNkUxOTFEODJBQjAwREE4MDcyIC8qIFdLV2ViVmlld1ByaW50Rm9ybWF0
dGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2ViVmlld1ByaW50Rm9y
bWF0dGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExMThBOUVDMTkwN0FENkYw
MEY3QzkyQiAvKiBRdWlja0xvb2tEb2N1bWVudERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gUXVpY2tMb29rRG9jdW1lbnREYXRhLmNwcDsgcGF0aCA9IGlvcy9R
dWlja0xvb2tEb2N1bWVudERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
MTE4QTlFRDE5MDdBRDZGMDBGN0M5MkIgLyogUXVpY2tMb29rRG9jdW1lbnREYXRhLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFF1aWNrTG9va0RvY3VtZW50RGF0YS5oOyBwYXRo
ID0gaW9zL1F1aWNrTG9va0RvY3VtZW50RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBMTE4QTlGMDE5MDhCOEVBMDBGN0M5MkIgLyogX1dLTlNGaWxlTWFuYWdlckV4dHJhcy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS05TRmlsZU1hbmFn
ZXJFeHRyYXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NzEzLDYgKzQ3MTcs
OCBAQAogCQkJCTBGQ0I0RTQxMThCQkUwNDQwMDBGQ0ZDOSAvKiBXS0dlb2xvY2F0aW9uUHJvdmlk
ZXJJT1NPYmpDU2VjdXJpdHlPcmlnaW4ubW0gKi8sCiAJCQkJMEZDQjRFNDQxOEJCRTA0NDAwMEZD
RkM5IC8qIFdLU2Nyb2xsVmlldy5oICovLAogCQkJCTBGQ0I0RTQ1MThCQkUwNDQwMDBGQ0ZDOSAv
KiBXS1Njcm9sbFZpZXcubW0gKi8sCisJCQkJQTExNURDNkUxOTFEODJBQjAwREE4MDcyIC8qIFdL
V2ViVmlld1ByaW50Rm9ybWF0dGVyLmggKi8sCisJCQkJQTExNURDNkQxOTFEODJBQjAwREE4MDcy
IC8qIFdLV2ViVmlld1ByaW50Rm9ybWF0dGVyLm1tICovLAogCQkJKTsKIAkJCW5hbWUgPSBpb3M7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtNzAyNiw2ICs3MDMyLDcgQEAKIAkJCQkx
QTlFMzI4OTE4MjE2MzY5MDBGNUQwNEMgLyogX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTUxNjU0RUZFMTg0RUYzM0YwMDdEQzgzNyAvKiBVbmlxdWVJREJEYXRh
YmFzZUJhY2tpbmdTdG9yZVNRTGl0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMzM0UwRDExMjQw
OEU4NjAwMzYwRjNGIC8qIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuaCBpbiBIZWFkZXJzICov
LAorCQkJCUExMTVEQzcyMTkxRDgyREEwMERBODA3MiAvKiBXS1dlYlZpZXdQcmludEZvcm1hdHRl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZDQjRFNjAxOEJCRTNEOTAwMEZDRkM5IC8qIEZpbmRJ
bmRpY2F0b3JXaW5kb3cuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMTRERjc3MTIwQjVCNzkwMDgy
NkMwQyAvKiBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Q0IwQjBERTEyMzA1QThDMDBCMTM0MUUgLyogSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUNvZGVy
cy5oIGluIEhlYWRlcnMgKi8sCkBAIC04OTg0LDYgKzg5OTEsNyBAQAogCQkJCTUxOUVGNThFMThF
Rjc3MEQwMDAzQjdGNCAvKiBUZWxlcGhvbmVOdW1iZXJPdmVybGF5Q29udHJvbGxlck1hYy5tbSBp
biBTb3VyY2VzICovLAogCQkJCUJDRjY5RkEzMTE3NkQwMTQwMDQ3MUE1MiAvKiBBUElOYXZpZ2F0
aW9uRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMUEyRUM0ODE0ODk5N0MyMDA4MTBENzEg
LyogV2ViTm90aWZpY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUExMTVEQzcxMTkxRDgy
RDcwMERBODA3MiAvKiBXS1dlYlZpZXdQcmludEZvcm1hdHRlci5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTMxMDk5OTczMTQ2Qzc1QTIwMDI5REVCOSAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMkRERTBBRkIxODI5OENDOTAwRjk3RUFBIC8qIFJlbW90ZUxh
eWVyVHJlZVByb3BlcnR5QXBwbGllci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTMxMzEyNjIwMTQ4
RkY4MkMwMEJBMkEzOSAvKiBXZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcCBpbiBTb3VyY2VzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4
IGYwMDAwNmNkYzk1NTQ4ZjQ4NDY2MDkwZGI2ZTAzZGJhMWFkZjhjZjcuLmRkYzVkNjRjY2FmMTEy
ODY2NWRhMzliYzVmNDFlMmNlNWFhNDUyMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTM2MDgsNiArMzYwOCwxMyBAQCB2b2lkIFdlYlBh
Z2U6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50
SW5mbyYgcHJpbnRJbgogewogICAgIFZlY3RvcjxJbnRSZWN0PiByZXN1bHRQYWdlUmVjdHM7CiAg
ICAgZG91YmxlIHJlc3VsdFRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZyA9IDE7CisgICAgY29t
cHV0ZVBhZ2VzRm9yUHJpbnRpbmdJbXBsKGZyYW1lSUQsIHByaW50SW5mbywgcmVzdWx0UGFnZVJl
Y3RzLCByZXN1bHRUb3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6Q29tcHV0ZWRQYWdlc0NhbGxiYWNrKHJlc3VsdFBhZ2VSZWN0cywg
cmVzdWx0VG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCBjYWxsYmFja0lEKSk7Cit9CisKK3Zv
aWQgV2ViUGFnZTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdJbXBsKHVpbnQ2NF90IGZyYW1lSUQs
IGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mIHJl
c3VsdFBhZ2VSZWN0cywgZG91YmxlJiByZXN1bHRUb3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcp
Cit7CisgICAgQVNTRVJUKHJlc3VsdFBhZ2VSZWN0cy5pc0VtcHR5KCkpOwogCiAgICAgYmVnaW5Q
cmludGluZyhmcmFtZUlELCBwcmludEluZm8pOwogCkBAIC0zNjIzLDggKzM2MzAsNiBAQCB2b2lk
IFdlYlBhZ2U6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFByaW50SW5mbyYgcHJpbnRJbgogICAgIC8vIElmIHdlJ3JlIGFza2VkIHRvIHByaW50LCB3ZSBz
aG91bGQgYWN0dWFsbHkgcHJpbnQgYXQgbGVhc3QgYSBibGFuayBwYWdlLgogICAgIGlmIChyZXN1
bHRQYWdlUmVjdHMuaXNFbXB0eSgpKQogICAgICAgICByZXN1bHRQYWdlUmVjdHMuYXBwZW5kKElu
dFJlY3QoMCwgMCwgMSwgMSkpOwotCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpD
b21wdXRlZFBhZ2VzQ2FsbGJhY2socmVzdWx0UGFnZVJlY3RzLCByZXN1bHRUb3RhbFNjYWxlRmFj
dG9yRm9yUHJpbnRpbmcsIGNhbGxiYWNrSUQpKTsKIH0KIAogI2lmIFBMQVRGT1JNKENPQ09BKQpA
QCAtMzY3NSwxMCArMzY4MCwxNyBAQCB2b2lkIFdlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZSh1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgY29ucwogCiB2b2lkIFdl
YlBhZ2U6OmRyYXdQYWdlc1RvUERGKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYg
cHJpbnRJbmZvLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIHVpbnQ2NF90IGNhbGxi
YWNrSUQpCiB7CisgICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IHBkZlBhZ2VEYXRhOwor
ICAgIGRyYXdQYWdlc1RvUERGSW1wbChmcmFtZUlELCBwcmludEluZm8sIGZpcnN0LCBjb3VudCwg
cGRmUGFnZURhdGEpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGF0YUNhbGxi
YWNrKElQQzo6RGF0YVJlZmVyZW5jZShDRkRhdGFHZXRCeXRlUHRyKHBkZlBhZ2VEYXRhLmdldCgp
KSwgQ0ZEYXRhR2V0TGVuZ3RoKHBkZlBhZ2VEYXRhLmdldCgpKSksIGNhbGxiYWNrSUQpKTsKK30K
Kwordm9pZCBXZWJQYWdlOjpkcmF3UGFnZXNUb1BERkltcGwodWludDY0X3QgZnJhbWVJRCwgY29u
c3QgUHJpbnRJbmZvJiBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwg
UmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+JiBwZGZQYWdlRGF0YSkKK3sKICAgICBXZWJGcmFt
ZSogZnJhbWUgPSBXZWJQcm9jZXNzOjpzaGFyZWQoKS53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBG
cmFtZSogY29yZUZyYW1lID0gZnJhbWUgPyBmcmFtZS0+Y29yZUZyYW1lKCkgOiAwOwogCi0gICAg
UmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IHBkZlBhZ2VEYXRhID0gYWRvcHRDRihDRkRhdGFD
cmVhdGVNdXRhYmxlKDAsIDApKTsKKyAgICBwZGZQYWdlRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3Jl
YXRlTXV0YWJsZSgwLCAwKSk7CiAKICNpZiBVU0UoQ0cpCiAgICAgaWYgKGNvcmVGcmFtZSkgewpA
QCAtMzcyMSw4ICszNzMzLDYgQEAgdm9pZCBXZWJQYWdlOjpkcmF3UGFnZXNUb1BERih1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgdWludDMKICAgICAgICAgQ0dQ
REZDb250ZXh0Q2xvc2UoY29udGV4dC5nZXQoKSk7CiAgICAgfQogI2VuZGlmCi0KLSAgICBzZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRhdGFDYWxsYmFjayhJUEM6OkRhdGFSZWZlcmVuY2Uo
Q0ZEYXRhR2V0Qnl0ZVB0cihwZGZQYWdlRGF0YS5nZXQoKSksIENGRGF0YUdldExlbmd0aChwZGZQ
YWdlRGF0YS5nZXQoKSkpLCBjYWxsYmFja0lEKSk7CiB9CiAKICNlbGlmIFBMQVRGT1JNKEdUSykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDI0YWYy
ZGNmYzE4N2I3ZmZiNDAwYWYxYmNlOTliOWQ0MjJmNDhlNzIuLjI5ZjZhZmU2NzU0M2Q2ZGMwODhk
MGI3NjM0NjE2ZTI5NjBmYzZjYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaApAQCAtNzcsNiArNzcsNyBAQAogCiAjaWYgUExBVEZPUk0oSU9TKQogI2lu
Y2x1ZGUgIkdlc3R1cmVUeXBlcy5oIgorI2ltcG9ydCAiV2ViUGFnZU1lc3NhZ2VzLmgiCiAjZW5k
aWYKIAogI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCkBAIC02NTEsOSArNjUyLDE0IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGJlZ2luUHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJ
bmZvJik7CiAgICAgdm9pZCBlbmRQcmludGluZygpOwogICAgIHZvaWQgY29tcHV0ZVBhZ2VzRm9y
UHJpbnRpbmcodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiwgdWludDY0X3QgY2Fs
bGJhY2tJRCk7CisgICAgdm9pZCBjb21wdXRlUGFnZXNGb3JQcmludGluZ0ltcGwodWludDY0X3Qg
ZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiwgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiBwYWdl
UmVjdHMsIGRvdWJsZSYgdG90YWxTY2FsZUZhY3Rvcik7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgdm9pZCBkcmF3UmVjdFRvSW1hZ2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZv
JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCB1aW50
NjRfdCBjYWxsYmFja0lEKTsKICAgICB2b2lkIGRyYXdQYWdlc1RvUERGKHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFByaW50SW5mbyYsIHVpbnQzMl90IGZpcnN0LCB1aW50MzJfdCBjb3VudCwgdWlu
dDY0X3QgY2FsbGJhY2tJRCk7CisgICAgdm9pZCBkcmF3UGFnZXNUb1BERkltcGwodWludDY0X3Qg
ZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiwgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50
LCBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4mIHBkZlBhZ2VEYXRhKTsKKyNpZiBQTEFURk9S
TShJT1MpCisgICAgdm9pZCBjb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZFN0YXJ0RHJhd2luZ1Rv
UERGKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYsIHVpbnQzMl90IGZpcnN0UGFn
ZSwgUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdB
bmRTdGFydERyYXdpbmdUb1BERjo6RGVsYXllZFJlcGx5Pik7CisjZW5kaWYKICNlbGlmIFBMQVRG
T1JNKEdUSykKICAgICB2b2lkIGRyYXdQYWdlc0ZvclByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQs
IGNvbnN0IFByaW50SW5mbyYsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgZGlkRmlu
aXNoUHJpbnRPcGVyYXRpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCA0Mjg2YjU1N2VlMTgyZGI0MmI2NDhiZjU1M2M2
NjE0MTEzODY1NDY0Li4xYzFjY2IwODgyNmYxNDAyZDNhYWZjMWQ0ODQxNzBlZDI4ZTNkMjdhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgpAQCAtMjY4LDYgKzI2OCw5IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5
UmVjZWl2ZXIgewogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIERyYXdSZWN0VG9JbWFnZSh1aW50
NjRfdCBmcmFtZUlELCBXZWJLaXQ6OlByaW50SW5mbyBwcmludEluZm8sIFdlYkNvcmU6OkludFJl
Y3QgcmVjdCwgV2ViQ29yZTo6SW50U2l6ZSBpbWFnZVNpemUsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
CiAgICAgRHJhd1BhZ2VzVG9QREYodWludDY0X3QgZnJhbWVJRCwgV2ViS2l0OjpQcmludEluZm8g
cHJpbnRJbmZvLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3QgY291bnQsIHVpbnQ2NF90IGNhbGxi
YWNrSUQpCisjaWYgUExBVEZPUk0oSU9TKQorICAgIENvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5k
U3RhcnREcmF3aW5nVG9QREYodWludDY0X3QgZnJhbWVJRCwgV2ViS2l0OjpQcmludEluZm8gcHJp
bnRJbmZvLCB1aW50MzJfdCBmaXJzdFBhZ2UpIC0+IChWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4g
cGFnZVJlY3RzLCBkb3VibGUgdG90YWxTY2FsZUZhY3RvcikgRGVsYXllZAorI2VuZGlmCiAjZW5k
aWYKICNpZiBQTEFURk9STShHVEspCiAgICAgRHJhd1BhZ2VzRm9yUHJpbnRpbmcodWludDY0X3Qg
ZnJhbWVJRCwgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCB1aW50NjRfdCBjYWxsYmFja0lE
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tCmluZGV4IDljMDU4ZTJkODc0Yzk2ODk1NDQ0NjAzOGY2ZWE4NDFkYWNiZDhlNTAuLjIw
MmVlNGI0NDQzMDI5MDVkNzg4YTllMzE4N2EwZGFjMWQxNDkyNzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTIyODMs
NiArMjI4MywxOSBAQCB2b2lkIFdlYlBhZ2U6OmRpc3BhdGNoQXN5bmNocm9ub3VzVG91Y2hFdmVu
dHMoY29uc3QgVmVjdG9yPFdlYlRvdWNoRXZlbnQsIDE+JiBxdQogICAgICAgICBkaXNwYXRjaFRv
dWNoRXZlbnQoZXZlbnQsIGlnbm9yZWQpOwogfQogCit2b2lkIFdlYlBhZ2U6OmNvbXB1dGVQYWdl
c0ZvclByaW50aW5nQW5kU3RhcnREcmF3aW5nVG9QREYodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
UHJpbnRJbmZvJiBwcmludEluZm8sIHVpbnQzMl90IGZpcnN0UGFnZSwgUGFzc1JlZlB0cjxNZXNz
YWdlczo6V2ViUGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmRTdGFydERyYXdpbmdUb1BE
Rjo6RGVsYXllZFJlcGx5PiByZXBseSkKK3sKKyAgICBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4g
cGFnZVJlY3RzOworICAgIGRvdWJsZSB0b3RhbFNjYWxlRmFjdG9yID0gMTsKKyAgICBjb21wdXRl
UGFnZXNGb3JQcmludGluZ0ltcGwoZnJhbWVJRCwgcHJpbnRJbmZvLCBwYWdlUmVjdHMsIHRvdGFs
U2NhbGVGYWN0b3IpOworICAgIHN0ZDo6c2l6ZV90IHBhZ2VDb3VudCA9IHBhZ2VSZWN0cy5zaXpl
KCk7CisgICAgcmVwbHktPnNlbmQoc3RkOjptb3ZlKHBhZ2VSZWN0cyksIHRvdGFsU2NhbGVGYWN0
b3IpOworCisgICAgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+IHBkZlBhZ2VEYXRhOworICAg
IGRyYXdQYWdlc1RvUERGSW1wbChmcmFtZUlELCBwcmludEluZm8sIGZpcnN0UGFnZSwgcGFnZUNv
dW50IC0gZmlyc3RQYWdlLCBwZGZQYWdlRGF0YSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEaWRGaW5pc2hEcmF3aW5nUGFnZXNUb1BERihJUEM6OkRhdGFSZWZlcmVuY2UoQ0ZE
YXRhR2V0Qnl0ZVB0cihwZGZQYWdlRGF0YS5nZXQoKSksIENGRGF0YUdldExlbmd0aChwZGZQYWdl
RGF0YS5nZXQoKSkpKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8g
UExBVEZPUk0oSU9TKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231719</attachid>
            <date>2014-05-19 13:41:37 -0700</date>
            <delta_ts>2014-05-21 13:40:05 -0700</delta_ts>
            <desc>[iOS] Create a UIPrintFormatter for WKWebView</desc>
            <filename>bug-133005-20140519134113.patch</filename>
            <type>text/plain</type>
            <size>35307</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY5MDUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOThiNjAyNDc0OTk0NmE0
Yjc3NTUwYjA3NzA5ZTc4Yjk4ODBkOGM2MS4uNTdhZjZmZmE0ODE1NzRiYjMwOGQ1NTMwMWY4ODdl
ZjU2ZmEyZDhlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDcyIEBACiAyMDE0LTA1LTE2ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAorICAgICAgICBbaU9TXSBDcmVhdGUgYSBVSVBy
aW50Rm9ybWF0dGVyIGZvciBXS1dlYlZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzMzAwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEltcGxlbWVudGVkIGEgVUlQcmludEZvcm1hdHRlciBzdWJjbGFz
cyB0byBzdXBwb3J0IHByaW50aW5nIFdLV2ViVmlld3MgdXNpbmcgVUlQcmludEludGVyYWN0aW9u
Q29udHJvbGxlci4KKyAgICAgICAgT3ZlcnJvZGUgLV9yZWNhbGNQYWdlQ291bnQ6IHRvIHN5bmNo
cm9ub3VzbHkgYXNrIHRoZSB3ZWIgcHJvY2VzcyB0byBsYXkgb3V0IGZvciBwcmludGluZyBhbmQg
cmV0dXJuIHRoZSBudW1iZXIKKyAgICAgICAgb2YgcGFnZSByZWN0cy4gVGhlIHdlYiBwcm9jZXNz
IHJldHVybnMgdGhlIHBhZ2UgcmVjdHMgaW1tZWRpYXRlbHkgYW5kIHRoZW4gc3RhcnRzIHJlbmRl
cmluZyB0aGUgcGFnZSB0byBhIFBERiwKKyAgICAgICAgcmV0dXJuaW5nIHRoZSBQREYgZGF0YSB0
byB0aGUgVUkgcHJvY2VzcyBhc3luY2hyb25vdXNseS4gV2hlbiBVSVByaW50SW50ZXJhY3Rpb25D
b250cm9sbGVyIGxhdGVyIGNhbGxzIG91cgorICAgICAgICBvdmVycmlkZGVuIC1kcmF3SW5SZWN0
OmZvclBhZ2VBdEluZGV4Oiwgd2UgYmxvY2sgYW5kIHdhaXQgZm9yIHRoZSBQREYgZGF0YSB0byBi
ZSByZXR1cm5lZC4gU2luY2UKKyAgICAgICAgVUlQcmludEludGVyYWN0aW9uQ29udHJvbGxlciBk
cmF3cyBlYWNoIHBhZ2UgYWZ0ZXIgYSBkZWxheSwgaXQncyBwb3NzaWJsZSB0aGF0IHRoZSB3ZWIg
cHJvY2VzcyBoYXMgYWxyZWFkeQorICAgICAgICByZXR1cm5lZCB0aGUgUERGIGRhdGEgdG8gdXMg
YnkgdGhlIHRpbWUgd2UgcHJpbnQgdGhlIGZpcnN0IHBhZ2UuCisKKyAgICAgICAgKiBTaGFyZWQv
V2ViUHJlZmVyZW5jZXNTdG9yZS5oOiBDb3JyZWN0bHkgaW5pdGlhbGl6ZWQgc2hvdWxkUHJpbnRC
YWNrZ3JvdW5kcyBmb3IgaU9TLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2RhdGFGb3JEaXNwbGF5ZWRQREZdKTogTm93
IHRoYXQgV0tQREZWaWV3IHZlbmRzIGl0cyBDR1BERkRvY3VtZW50IGRpcmVjdGx5LCBleHRyYWN0
IGl0cyBkYXRhIGhlcmUuCisgICAgICAgICgtW1dLV2ViVmlldyBfcHJpbnRGb3JtYXR0ZXJDbGFz
c10pOiBUZWxsIFVJVmlldyB3aGljaCBVSVByaW50Rm9ybWF0dGVyIHRvIGFsbG9jLgorICAgICAg
ICAoLVtXS1dlYlZpZXcgX2NvbXB1dGVQYWdlQ291bnRBbmRTdGFydERyYXdpbmdUb1BERldpdGhQ
cmludEluZm86V2ViS2l0OjpmaXJzdFBhZ2U6Y29tcHV0ZWRUb3RhbFNjYWxlRmFjdG9yOl0pOgor
ICAgICAgICBJZiB3ZSdyZSBkaXNwbGF5aW5nIGEgUERGLCByZXR1cm4gaXRzIHBhZ2UgY291bnQg
ZGlyZWN0bHkuIE90aGVyd2lzZSwgc3luY2hyb25vdXNseSBhc2sgdGhlIHdlYiBwcm9jZXNzIHRv
CisgICAgICAgIGNvbXB1dGUgcGFnZSByZWN0cyBmb3IgcHJpbnRpbmcgYW5kIHRoZW4gcmV0dXJu
IHRoZSBudW1iZXIgb2YgcmVjdHMuCisgICAgICAgICgtW1dLV2ViVmlldyBfZW5kUHJpbnRpbmdd
KTogQ2xlYXJlZCBzdGF0ZSBhbmQgc2VudCB0aGUgV2ViUGFnZTo6RW5kUHJpbnRpbmcgbWVzc2Fn
ZSB0byB0aGUgd2ViIHByb2Nlc3MuCisgICAgICAgICgtW1dLV2ViVmlldyBfcHJpbnRlZERvY3Vt
ZW50XSk6IElmIHdlJ3JlIGRpc3BsYXlpbmcgYSBQREYsIHJldHVybiBpdHMgZGF0YSBkaXJlY3Rs
eS4gT3RoZXJ3aXNlLCBpZiB3ZSBoYXZlbid0CisgICAgICAgIHJlY2VpdmVkIFBERiBkYXRhIGZy
b20gdGhlIHdlYiBwcm9jZXNzIHlldCwgd2FpdCBmb3IgaXQgaW5kZWZpbml0ZWx5ICh0aGVyZSdz
IG5vIHNlbnNpYmxlIHRpbWVvdXQgdG8gdXNlIGhlcmUKKyAgICAgICAgc2luY2UgZmFpbGluZyB0
byByZWNlaXZlIHRoZSBkYXRhIHJlc3VsdHMgaW4gcHJpbnRpbmcgc29tZSBudW1iZXIgb2YgYmxh
bmsgcGFnZXMpLgorICAgICAgICAoLVtXS1dlYlZpZXcgX3NldFByaW50ZWREb2N1bWVudDpdKTog
U2V0IHRoZSBDR1BERkRvY3VtZW50IHJlY2VpdmVkIGZyb20gdGhlIHdlYiBwcm9jZXNzLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaDogRGVjbGFyZWQg
bWV0aG9kcyBjYWxsZWQgYnkgV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIuCisgICAgICAgICogVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaDogRGVjbGFyZWQgZGlkRmluaXNoRHJhd2luZ1BhZ2VzVG9QREYu
CisgICAgICAgICogVUlQcm9jZXNzL1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmg6IEFkZGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XS1dlYlZpZXdQcmludEZvcm1hdHRlci5tbTogQWRkZWQuCisg
ICAgICAgICgtW1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyIGRlYWxsb2NdKTogQ2xlYXJlZCBzdGF0
ZSBhbmQgY2FsbGVkIC1bV0tXZWJWaWV3IF9lbmRQcmludGluZ10uCisgICAgICAgICgtW1dLV2Vi
Vmlld1ByaW50Rm9ybWF0dGVyIHdlYlZpZXddKTogUmV0dXJuZWQgdGhlIFdLV2ViVmlldyBmb3Ig
dGhpcyBwcmludCBmb3JtYXR0ZXIuCisgICAgICAgICgtW1dLV2ViVmlld1ByaW50Rm9ybWF0dGVy
IF9yZWNhbGNQYWdlQ291bnRdKTogU2V0IHVwIGEgUHJpbnRJbmZvIG9iamVjdCBnaXZlbiB0aGUg
Zm9ybWF0dGVyJ3MgY29udGVudCByZWN0CisgICAgICAgIGFuZCBjYWxsZWQgLV9jb21wdXRlUGFn
ZUNvdW50QW5kU3RhcnREcmF3aW5nVG9QREZXaXRoUHJpbnRJbmZvOi4uLgorICAgICAgICAoLVtX
S1dlYlZpZXdQcmludEZvcm1hdHRlciByZWN0Rm9yUGFnZUF0SW5kZXg6XSk6IENhbGxlZCAtX3Jl
Y2FsY0lmTmVjZXNzYXJ5IGFuZCB0aGVuIHJldHVybmVkIHRoZSByZWN0IGZyb20KKyAgICAgICAg
LV9wYWdlQ29udGVudFJlY3QuCisgICAgICAgICgtW1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyIGRy
YXdJblJlY3Q6Zm9yUGFnZUF0SW5kZXg6XSk6IFRhdWdodCB0byBkcmF3IHRoZSBnaXZlbiBwYWdl
IG9mIHRoZSBwcmludGVkIFBERgorICAgICAgICBkb2N1bWVudCBpbnRvIHRoZSBnaXZlbiByZWN0
IGFuZCBjb250ZXh0IHByb3ZpZGVkIHRvIHVzLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaDogRGVjbGFyZWQgZGlkRmluaXNoRHJhd2luZ1BhZ2VzVG9QREYuCisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjogQWRkZWQgRGlkRmluaXNoRHJhd2lu
Z1BhZ2VzVG9QREYuIE1hZGUgdGhpcyBhIGRlbGF5ZWQgc3luY3Job25vdXMgbWVzc2FnZQorICAg
ICAgICBzbyB0aGF0IGFkZGl0b2luYWwgd29yayBjb3VsZCBiZSBwZXJmb3JtZWQgYWZ0ZXIgc2Vu
ZGluZyB0aGUgcmVzcG9uc2UuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW06Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkaWRGaW5pc2hEcmF3aW5nUGFnZXNUb1BE
Rik6IENyZWF0ZWQgYSBDR1BERkRvY3VtZW50IGZyb20gdGhlIGRhdGEgc2VudCB0byB1cyBieSB0
aGUKKyAgICAgICAgd2ViIHByb2Nlc3MgYW5kIGNhbGxlZCAtW1dLV2ViVmlldyBfc2V0UHJpbnRl
ZERvY3VtZW50Ol0uCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbToKKyAgICAgICAgKC1bV0tQREZWaWV3IHBk
ZkRvY3VtZW50XSk6IFJldHVybmVkIHRoZSB1bmRlcmx5aW5nIENHUERGRG9jdW1lbnQuCisgICAg
ICAgICgtW1dLUERGVmlldyBkb2N1bWVudERhdGFdKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVBy
b3h5OjpkaWRGaW5pc2hEcmF3aW5nUGFnZXNUb1BERik6CisgICAgICAgICogV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y29tcHV0ZVBhZ2VzRm9yUHJpbnRp
bmcpOiBDaGFuZ2VkIHRvIGNhbGwgY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdJbXBsLgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpjb21wdXRlUGFnZXNGb3JQcmludGluZ0ltcGwpOiBNb3ZlZCB0
aGUgY29tbW9uIGxvZ2ljIG9mIGNvbXB1dGVQYWdlc0ZvclByaW50aW5nIHRvIGhlcmUgc28gaXQK
KyAgICAgICAgY291bGQgYmUgY2FsbGVkIGJ5IGNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kU3Rh
cnREcmF3aW5nVG9QREYuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdQYWdlc1RvUERG
KTogQ2hhbmdlZCB0byBjYWxsIGRyYXdQYWdlc1RvUERGSW1wbAorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpkcmF3UGFnZXNUb1BERkltcGwpOiBNb3ZlZCB0aGUgY29tbW9uIGxvZ2ljIG9mIGRy
YXdQYWdlc1RvUERGIHRvIGhlcmUgc28gaXQgY291bGQgYmUgY2FsbGVkCisgICAgICAgIGJ5IGNv
bXB1dGVQYWdlc0ZvclByaW50aW5nQW5kU3RhcnREcmF3aW5nVG9QREYuCisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNvbXB1dGVQYWdlc0ZvclBy
aW50aW5nQW5kU3RhcnREcmF3aW5nVG9QREYpOiBDb21wdXRlZCBwYWdlIHJlY3RzIGFuZCByZXR1
cm5lZCB0aGVtIGFzIGEKKyAgICAgICAgc3luY2hyb25vdXMgcmVzcG9uc2UuIEFmdGVyd2FyZHMg
Y2FsbGVkIGRyYXdQYWdlc1RvUERGSW1wbCgpIGFuZCByZXR1cm5lZCB0aGUgUERGIGRhdGEgYnkg
c2VuZGluZworICAgICAgICBXZWJQYWdlUHJveHk6OkRpZEZpbmlzaERyYXdpbmdQYWdlc1RvUERG
LgorCisyMDE0LTA1LTE2ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKwogICAgICAg
ICBbV2ViS2l0Ml0gV2FrZSB1cCB0aHJlYWRzIGJsb2NrZWQgaW4gd2FpdEZvckFuZERpc3BhdGNo
SW1tZWRpYXRlbHkoKSBpZiB3ZSBsb3NlIG91ciBjb25uZWN0aW9uCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzMwMTAKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmgKaW5kZXggZTMwYzI2NWU3ZWYwMTRlZGQyZjg4
ZjlkNmZlNGMyMDgwZjM0ZmY1Zi4uZjUyYzY4ZWEwYjdiZjA5NTAyNTg3ZjM1ZDQ1ZWRjZmM1ZTVl
NDQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3Rv
cmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oCkBA
IC0xNDQsNyArMTQ0LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgbWFjcm8oUGFnaW5hdGVE
dXJpbmdMYXlvdXRFbmFibGVkLCBwYWdpbmF0ZUR1cmluZ0xheW91dEVuYWJsZWQsIEJvb2wsIGJv
b2wsIGZhbHNlKSBcCiAgICAgbWFjcm8oRE9NUGFzdGVBbGxvd2VkLCBkb21QYXN0ZUFsbG93ZWQs
IEJvb2wsIGJvb2wsIGZhbHNlKSBcCiAgICAgbWFjcm8oSmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBi
b2FyZCwgamF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZCwgQm9vbCwgYm9vbCwgZmFsc2UpIFwK
LSAgICBtYWNybyhTaG91bGRQcmludEJhY2tncm91bmRzLCBzaG91bGRQcmludEJhY2tncm91bmRz
LCBCb29sLCBib29sLCBmYWxzZSkgXAorICAgIG1hY3JvKFNob3VsZFByaW50QmFja2dyb3VuZHMs
IHNob3VsZFByaW50QmFja2dyb3VuZHMsIEJvb2wsIGJvb2wsIERFRkFVTFRfU0hPVUxEX1BSSU5U
X0JBQ0tHUk9VTkRTKSBcCiAgICAgbWFjcm8oRnVsbFNjcmVlbkVuYWJsZWQsIGZ1bGxTY3JlZW5F
bmFibGVkLCBCb29sLCBib29sLCBmYWxzZSkgXAogICAgIG1hY3JvKEFzeW5jaHJvbm91c1NwZWxs
Q2hlY2tpbmdFbmFibGVkLCBhc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCwgQm9vbCwg
Ym9vbCwgZmFsc2UpIFwKICAgICBtYWNybyhXZWJTZWN1cml0eUVuYWJsZWQsIHdlYlNlY3VyaXR5
RW5hYmxlZCwgQm9vbCwgYm9vbCwgdHJ1ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA4YzMwMjJmNTdjMjIwZWZhYmQyZWFmZTM4
MDZhMTM1ZDJhYTZhYTVlLi5mMThmNGFkMzk3ZWFiNmU4MThlZDMzY2E4MTJlZTk1YzQ4OGQ0Njcx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5t
bQpAQCAtNjksMTEgKzY5LDE1IEBACiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKICNpZiBQ
TEFURk9STShJT1MpCisjaW1wb3J0ICJQcmludEluZm8uaCIKICNpbXBvcnQgIlByb2Nlc3NUaHJv
dHRsZXIuaCIKICNpbXBvcnQgIldLUERGVmlldy5oIgogI2ltcG9ydCAiV0tTY3JvbGxWaWV3Lmgi
CiAjaW1wb3J0ICJXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5oIgorI2ltcG9ydCAi
V0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIuaCIKKyNpbXBvcnQgIldlYlBhZ2VNZXNzYWdlcy5oIgog
I2ltcG9ydCA8Q29yZUdyYXBoaWNzL0NHRmxvYXQuaD4KKyNpbXBvcnQgPENvcmVHcmFwaGljcy9D
R1BERkRvY3VtZW50UHJpdmF0ZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlQZXJpcGhlcmFsSG9zdF9Q
cml2YXRlLmg+CiAjaW1wb3J0IDxRdWFydHpDb3JlL0NBUmVuZGVyU2VydmVyLmg+CiAjaW1wb3J0
IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmVQcml2YXRlLmg+CkBAIC0xNTQsNiArMTU4LDkgQEAgQGlt
cGxlbWVudGF0aW9uIFdLV2ViVmlldyB7CiAKICAgICBCT09MIF9kZWxheVVwZGF0ZVZpc2libGVD
b250ZW50UmVjdHM7CiAgICAgQk9PTCBfaGFkRGVsYXllZFVwZGF0ZVZpc2libGVDb250ZW50UmVj
dHM7CisKKyAgICBCT09MIF9wYWdlSXNQcmludGluZ1RvUERGOworICAgIFJldGFpblB0cjxDR1BE
RkRvY3VtZW50UmVmPiBfcHJpbnRlZERvY3VtZW50OwogI2VuZGlmCiAjaWYgUExBVEZPUk0oTUFD
KQogICAgIFJldGFpblB0cjxXS1ZpZXc+IF93a1ZpZXc7CkBAIC0xNzI3LDcgKzE3MzQsOCBAQCAt
IChOU0RhdGEgKilfZGF0YUZvckRpc3BsYXllZFBERgogewogICAgIGlmICghW3NlbGYgX2lzRGlz
cGxheWluZ1BERl0pCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIFsoV0tQREZWaWV3
ICopX2N1c3RvbUNvbnRlbnRWaWV3LmdldCgpIGRvY3VtZW50RGF0YV07CisgICAgQ0dQREZEb2N1
bWVudFJlZiBwZGZEb2N1bWVudCA9IFsoV0tQREZWaWV3ICopX2N1c3RvbUNvbnRlbnRWaWV3IHBk
ZkRvY3VtZW50XTsKKyAgICByZXR1cm4gWyhOU0RhdGEgKilDR0RhdGFQcm92aWRlckNvcHlEYXRh
KENHUERGRG9jdW1lbnRHZXREYXRhUHJvdmlkZXIocGRmRG9jdW1lbnQpKSBhdXRvcmVsZWFzZV07
CiB9CiAKIC0gKE5TU3RyaW5nICopX3N1Z2dlc3RlZEZpbGVuYW1lRm9yRGlzcGxheWVkUERGCkBA
IC0xODQxLDQgKzE4NDksNjUgQEAgQGVuZAogCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPUykK
K0BpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcgKFdLV2ViVmlld1ByaW50Rm9ybWF0dGVyKQorCist
IChDbGFzcylfcHJpbnRGb3JtYXR0ZXJDbGFzcworeworICAgIHJldHVybiBbV0tXZWJWaWV3UHJp
bnRGb3JtYXR0ZXIgY2xhc3NdOworfQorCistIChOU0ludGVnZXIpX2NvbXB1dGVQYWdlQ291bnRB
bmRTdGFydERyYXdpbmdUb1BERldpdGhQcmludEluZm86KGNvbnN0IFdlYktpdDo6UHJpbnRJbmZv
JilwcmludEluZm8gZmlyc3RQYWdlOih1aW50MzJfdClmaXJzdFBhZ2UgY29tcHV0ZWRUb3RhbFNj
YWxlRmFjdG9yOihkb3VibGUmKXRvdGFsU2NhbGVGYWN0b3IKK3sKKyAgICBpZiAoW3NlbGYgX2lz
RGlzcGxheWluZ1BERl0pCisgICAgICAgIHJldHVybiBDR1BERkRvY3VtZW50R2V0TnVtYmVyT2ZQ
YWdlcyhbKFdLUERGVmlldyAqKV9jdXN0b21Db250ZW50VmlldyBwZGZEb2N1bWVudF0pOworCisg
ICAgX3BhZ2VJc1ByaW50aW5nVG9QREYgPSBZRVM7CisgICAgVmVjdG9yPFdlYkNvcmU6OkludFJl
Y3Q+IHBhZ2VSZWN0czsKKyAgICBpZiAoIV9wYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFn
ZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmRTdGFydERyYXdpbmdUb1BERihfcGFnZS0+bWFp
bkZyYW1lKCktPmZyYW1lSUQoKSwgcHJpbnRJbmZvLCBmaXJzdFBhZ2UpLCBNZXNzYWdlczo6V2Vi
UGFnZTo6Q29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmRTdGFydERyYXdpbmdUb1BERjo6UmVwbHko
cGFnZVJlY3RzLCB0b3RhbFNjYWxlRmFjdG9yKSkpCisgICAgICAgIHJldHVybiAwOworICAgIHJl
dHVybiBwYWdlUmVjdHMuc2l6ZSgpOworfQorCistICh2b2lkKV9lbmRQcmludGluZworeworICAg
IF9wYWdlSXNQcmludGluZ1RvUERGID0gTk87CisgICAgX3ByaW50ZWREb2N1bWVudCA9IG51bGxw
dHI7CisgICAgX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkVuZFByaW50aW5nKCkpOwor
fQorCisvLyBGSVhNRTogbWlsbGlzZWNvbmRzOjptYXgoKSBvdmVyZmxvd3Mgd2hlbiBjb252ZXJ0
ZWQgdG8gbmFub3NlY29uZHMsIGNhdXNpbmcgY29uZGl0aW9uX3ZhcmlhYmxlOjp3YWl0X2Zvcigp
IHRvIGJlbGlldmUKKy8vIGEgdGltZW91dCBvY2N1cnJlZCBvbiBhbnkgc3B1cmlvdXMgd2FrZXVw
LiBVc2UgbmFub3NlY29uZHM6Om1heCgpIChjb252ZXJ0ZWQgdG8gbXMpIHRvIGF2b2lkIHRoaXMu
IFdlIHNob3VsZCBwZXJoYXBzCisvLyBjaGFuZ2Ugd2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRl
bHkoKSB0byB0YWtlIG5hbm9zZWNvbmRzIHRvIGF2b2lkIHRoaXMgaXNzdWUuCitzdGF0aWMgY29u
c3RleHByIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgZGlkRmluaXNoTG9hZGluZ1RpbWVvdXQg
PSBzdGQ6OmNocm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzPihz
dGQ6OmNocm9ubzo6bmFub3NlY29uZHM6Om1heCgpKTsKKworLSAoQ0dQREZEb2N1bWVudFJlZilf
cHJpbnRlZERvY3VtZW50Cit7CisgICAgaWYgKFtzZWxmIF9pc0Rpc3BsYXlpbmdQREZdKSB7Cisg
ICAgICAgIEFTU0VSVCghX3BhZ2VJc1ByaW50aW5nVG9QREYpOworICAgICAgICByZXR1cm4gWyhX
S1BERlZpZXcgKilfY3VzdG9tQ29udGVudFZpZXcgcGRmRG9jdW1lbnRdOworICAgIH0KKworICAg
IGlmIChfcGFnZUlzUHJpbnRpbmdUb1BERikgeworICAgICAgICBpZiAoIV9wYWdlLT5wcm9jZXNz
KCkuY29ubmVjdGlvbigpLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlhdGVseTxNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpEaWRGaW5pc2hEcmF3aW5nUGFnZXNUb1BERj4oX3BhZ2UtPnBhZ2VJRCgp
LCBkaWRGaW5pc2hMb2FkaW5nVGltZW91dCkpIHsKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICAgICAg
QVNTRVJUKCFfcGFnZUlzUHJpbnRpbmdUb1BERik7CisgICAgfQorICAgIHJldHVybiBfcHJpbnRl
ZERvY3VtZW50LmdldCgpOworfQorCistICh2b2lkKV9zZXRQcmludGVkRG9jdW1lbnQ6KENHUERG
RG9jdW1lbnRSZWYpcHJpbnRlZERvY3VtZW50Cit7CisgICAgaWYgKCFfcGFnZUlzUHJpbnRpbmdU
b1BERikKKyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVCghW3NlbGYgX2lzRGlzcGxheWluZ1BE
Rl0pOworICAgIF9wcmludGVkRG9jdW1lbnQgPSBwcmludGVkRG9jdW1lbnQ7CisgICAgX3BhZ2VJ
c1ByaW50aW5nVG9QREYgPSBOTzsKK30KKworQGVuZAorI2VuZGlmCisKICNlbmRpZiAvLyBXS19B
UElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4IGU1Y2U0MjdlZjM2ZTVlODQyZWY4N2QxZWRiMzc0
MWRkNmMxMGRjYzIuLmMwYWU2Zjk1MWQzM2I1YWEzZGY3NDE4YTdiM2IzM2QwNTBiYmFlMDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50
ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d0ludGVybmFsLmgKQEAgLTQ2LDkgKzQ2LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xh
c3MgV2ViUGFnZVByb3h5Oworc3RydWN0IFByaW50SW5mbzsKIHN0cnVjdCBWaWV3U25hcHNob3Q7
CiB9CiAKK0BjbGFzcyBXS1dlYlZpZXdQcmludEZvcm1hdHRlcjsKKwogQGludGVyZmFjZSBXS1dl
YlZpZXcgKCkgV0tfV0VCX1ZJRVdfUFJPVE9DT0xTIHsKIAogQHBhY2thZ2UKQEAgLTgyLDQgKzg1
LDEyIEBAIHN0cnVjdCBWaWV3U25hcHNob3Q7CiAKIFdLV2ViVmlldyogZnJvbVdlYlBhZ2VQcm94
eShXZWJLaXQ6OldlYlBhZ2VQcm94eSYpOwogCisjaWYgUExBVEZPUk0oSU9TKQorQGludGVyZmFj
ZSBXS1dlYlZpZXcgKFdLV2ViVmlld1ByaW50Rm9ybWF0dGVyKQorLSAoTlNJbnRlZ2VyKV9jb21w
dXRlUGFnZUNvdW50QW5kU3RhcnREcmF3aW5nVG9QREZXaXRoUHJpbnRJbmZvOihjb25zdCBXZWJL
aXQ6OlByaW50SW5mbyYpcHJpbnRJbmZvIGZpcnN0UGFnZToodWludDMyX3QpZmlyc3RQYWdlIGNv
bXB1dGVkVG90YWxTY2FsZUZhY3RvcjooZG91YmxlJil0b3RhbFNjYWxlRmFjdG9yOworLSAodm9p
ZClfZW5kUHJpbnRpbmc7CitAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRQcmludGVk
RG9jdW1lbnQ6KSBDR1BERkRvY3VtZW50UmVmIF9wcmludGVkRG9jdW1lbnQ7CitAZW5kCisjZW5k
aWYKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNs
aWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCBlY2I3
ODkyOThjY2VjNmMwODdjMTMwMDY2NTUwODY1MjFjMDQ5MWFkLi45OGQwMTZmYjMzZDM2OTIwN2Uw
OTZkNDZkZTE2YjFjNzdlOGY2ZWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvUGFnZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50
LmgKQEAgLTI1OSw2ICsyNTksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5n
ZVZpZXdwb3J0TWV0YVRhZ1dpZHRoKGZsb2F0KSA9IDA7CiAgICAgdmlydHVhbCBkb3VibGUgbWlu
aW11bVpvb21TY2FsZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkZsb2F0U2l6
ZSBjb250ZW50c1NpemUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaERy
YXdpbmdQYWdlc1RvUERGKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpID0gMDsKIAogI2lmIEVO
QUJMRShJTlNQRUNUT1IpCiAgICAgdmlydHVhbCB2b2lkIHNob3dJbnNwZWN0b3JJbmRpY2F0aW9u
KCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dLV2ViVmlld1By
aW50Rm9ybWF0dGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV0tXZWJWaWV3UHJpbnRG
b3JtYXR0ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYTU1YjY0NjkwNWZlMjFhNzU1ODBiZDc5NDEzYzk1Mzdl
ODk5N2ZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dLV2Vi
Vmlld1ByaW50Rm9ybWF0dGVyLmgKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZiBQ
TEFURk9STShJT1MpCisKKyNpbXBvcnQgPFVJS2l0L1VJUHJpbnRGb3JtYXR0ZXIuaD4KKyNpbXBv
cnQgPFdlYkNvcmUvSW50UmVjdC5oPgorI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgorCitAaW50ZXJm
YWNlIFdLV2ViVmlld1ByaW50Rm9ybWF0dGVyIDogVUlWaWV3UHJpbnRGb3JtYXR0ZXIKK0BlbmQK
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV0tXZWJWaWV3
UHJpbnRGb3JtYXR0ZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV0tXZWJWaWV3UHJp
bnRGb3JtYXR0ZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDA2YTg5YzkwODlmNzU0OTllNzNkYTE2ZDUyMzY3
Y2RmMWYwZTAzOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
S1dlYlZpZXdQcmludEZvcm1hdHRlci5tbQpAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIuaCIK
KworI2lmIFBMQVRGT1JNKElPUykKKworI2ltcG9ydCAiUHJpbnRJbmZvLmgiCisjaW1wb3J0ICJX
S1dlYlZpZXdJbnRlcm5hbC5oIgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCitAaW50ZXJm
YWNlIFVJUHJpbnRGb3JtYXR0ZXIgKERldGFpbHMpCistIChDR1JlY3QpX3BhZ2VDb250ZW50UmVj
dDooQk9PTClmaXJzdFBhZ2U7CistICh2b2lkKV9yZWNhbGNJZk5lY2Vzc2FyeTsKK0BlbmQKKwor
QGludGVyZmFjZSBXS1dlYlZpZXdQcmludEZvcm1hdHRlciAoKQorQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5KSBXS1dlYlZpZXcgKndlYlZpZXc7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlv
biBXS1dlYlZpZXdQcmludEZvcm1hdHRlciB7CisgICAgZG91YmxlIF90b3RhbFNjYWxlRmFjdG9y
OworICAgIFdlYktpdDo6UHJpbnRJbmZvIF9wcmludEluZm87Cit9CisKKy0gKHZvaWQpZGVhbGxv
YworeworICAgIFtzZWxmLndlYlZpZXcgX2VuZFByaW50aW5nXTsKKyAgICBbc3VwZXIgZGVhbGxv
Y107Cit9CisKKy0gKFdLV2ViVmlldyAqKXdlYlZpZXcKK3sKKyAgICBBU1NFUlQoW3NlbGYudmll
dyBpc0tpbmRPZkNsYXNzOltXS1dlYlZpZXcgY2xhc3NdXSk7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFdLV2ViVmlldyAqPihzZWxmLnZpZXcpOworfQorCistIChOU0ludGVnZXIpX3JlY2FsY1Bh
Z2VDb3VudAoreworICAgIEFTU0VSVChbc2VsZiByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9y
KF9wYWdlQ29udGVudFJlY3Q6KV0pOworCisgICAgQ0dSZWN0IGZpcnN0UmVjdCA9IFtzZWxmIF9w
YWdlQ29udGVudFJlY3Q6WUVTXTsKKyAgICBDR1JlY3QgbmV4dFJlY3QgPSBbc2VsZiBfcGFnZUNv
bnRlbnRSZWN0Ok5PXTsKKyAgICBpZiAoQ0dSZWN0SXNFbXB0eShmaXJzdFJlY3QpIHx8IENHUmVj
dElzRW1wdHkobmV4dFJlY3QpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8vIFRoZSBmaXJz
dCBwYWdlIGNhbiBoYXZlIGEgc21hbGxlciBjb250ZW50IHJlY3QgdGhhbiBzdWJzZXF1ZW50IHBh
Z2VzIGlmIGEgdG9wIGNvbnRlbnQgaW5zZXQgaXMgc3BlY2lmaWVkLiBTaW5jZQorICAgIC8vIFdl
YktpdCByZXF1aXJlcyBhIHVuaWZvcm0gY29udGVudCByZWN0IGZvciBlYWNoIHBhZ2UgZHVyaW5n
IGxheW91dCwgdXNlIHRoZSBmaXJzdCBwYWdlIHJlY3QgZm9yIGFsbCBwYWdlcyBpZiBpdCdzCisg
ICAgLy8gc21hbGxlci4gVGhpcyBpcyB3aGF0IFVJV2ViVmlldydzIHByaW50IGZvcm1hdHRlciBk
b2VzLgorICAgIEFTU0VSVChmaXJzdFJlY3Quc2l6ZS53aWR0aCA9PSBuZXh0UmVjdC5zaXplLndp
ZHRoKTsKKyAgICBBU1NFUlQoZmlyc3RSZWN0Lm9yaWdpbi55ID49IG5leHRSZWN0Lm9yaWdpbi55
KTsKKyAgICBfcHJpbnRJbmZvLnBhZ2VTZXR1cFNjYWxlRmFjdG9yID0gMTsKKyAgICBfcHJpbnRJ
bmZvLmF2YWlsYWJsZVBhcGVyV2lkdGggPSBuZXh0UmVjdC5zaXplLndpZHRoOworICAgIF9wcmlu
dEluZm8uYXZhaWxhYmxlUGFwZXJIZWlnaHQgPSBuZXh0UmVjdC5zaXplLmhlaWdodCAtIChmaXJz
dFJlY3Qub3JpZ2luLnkgLSBuZXh0UmVjdC5vcmlnaW4ueSk7CisKKyAgICByZXR1cm4gW3NlbGYu
d2ViVmlldyBfY29tcHV0ZVBhZ2VDb3VudEFuZFN0YXJ0RHJhd2luZ1RvUERGV2l0aFByaW50SW5m
bzpfcHJpbnRJbmZvIGZpcnN0UGFnZTpzZWxmLnN0YXJ0UGFnZSBjb21wdXRlZFRvdGFsU2NhbGVG
YWN0b3I6X3RvdGFsU2NhbGVGYWN0b3JdOworfQorCistIChDR1JlY3QpcmVjdEZvclBhZ2VBdElu
ZGV4OihOU0ludGVnZXIpcGFnZUluZGV4Cit7CisgICAgQVNTRVJUKFtzZWxmIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3IoX3JlY2FsY0lmTmVjZXNzYXJ5KV0pOworICAgIFtzZWxmIF9yZWNh
bGNJZk5lY2Vzc2FyeV07CisgICAgcmV0dXJuIFtzZWxmIF9wYWdlQ29udGVudFJlY3Q6cGFnZUlu
ZGV4ID09IHNlbGYuc3RhcnRQYWdlXTsKK30KKworLSAodm9pZClkcmF3SW5SZWN0OihDR1JlY3Qp
cmVjdCBmb3JQYWdlQXRJbmRleDooTlNJbnRlZ2VyKXBhZ2VJbmRleAoreworICAgIC8vIENHUERG
RG9jdW1lbnRzIHVzZSAxLWJhc2VkIHBhZ2UgaW5kZXhpbmcuCisgICAgQ0dQREZQYWdlUmVmIHBk
ZlBhZ2UgPSBDR1BERkRvY3VtZW50R2V0UGFnZShzZWxmLndlYlZpZXcuX3ByaW50ZWREb2N1bWVu
dCwgcGFnZUluZGV4IC0gc2VsZi5zdGFydFBhZ2UgKyAxKTsKKworICAgIENHQ29udGV4dFJlZiBj
b250ZXh0ID0gVUlHcmFwaGljc0dldEN1cnJlbnRDb250ZXh0KCk7CisgICAgQ0dDb250ZXh0U2F2
ZUdTdGF0ZShjb250ZXh0KTsKKworICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjb250ZXh0LCBy
ZWN0Lm9yaWdpbi54LCByZWN0Lm9yaWdpbi55KTsKKyAgICBDR0NvbnRleHRTY2FsZUNUTShjb250
ZXh0LCBfdG90YWxTY2FsZUZhY3RvciwgLV90b3RhbFNjYWxlRmFjdG9yKTsKKyAgICBDR0NvbnRl
eHRUcmFuc2xhdGVDVE0oY29udGV4dCwgMCwgLUNHUERGUGFnZUdldEJveFJlY3QocGRmUGFnZSwg
a0NHUERGTWVkaWFCb3gpLnNpemUuaGVpZ2h0KTsKKyAgICBDR0NvbnRleHREcmF3UERGUGFnZShj
b250ZXh0LCBwZGZQYWdlKTsKKworICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY29udGV4dCk7
Cit9CisKK0BlbmQKKworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA2ZjkwMWIwM2MwMTcwMzczOTExOTU5YzMzNDk3NDU0
OWI2MTkzM2EzLi5mYjI0ODA0MzYyN2JlNWNjNzZmZDc2NTczZjFjNzRiYzExZTg3ODBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC02MzMsNiArNjMzLDcgQEAg
cHVibGljOgogICAgIHZvaWQgY29tbWl0UG90ZW50aWFsVGFwRmFpbGVkKCk7CiAgICAgdm9pZCBk
aWROb3RIYW5kbGVUYXBBc0NsaWNrKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CiAgICAgdm9p
ZCB2aWV3cG9ydE1ldGFUYWdXaWR0aERpZENoYW5nZShmbG9hdCB3aWR0aCk7CisgICAgdm9pZCBk
aWRGaW5pc2hEcmF3aW5nUGFnZXNUb1BERihjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKICNl
bmRpZgogCiAgICAgY29uc3QgRWRpdG9yU3RhdGUmIGVkaXRvclN0YXRlKCkgY29uc3QgeyByZXR1
cm4gbV9lZGl0b3JTdGF0ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggNTMwZjY2MzUwZWEyNTU5ZWJlNWU0ZDhiZGY5Y2Uz
MjllMTgyZjk0YS4uZTdiZjVhNGE0ODFmNGMxNzMyZGMwYzA1MzFkNTNkYmFiY2I4NmEzNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
CkBAIC0xNzIsNiArMTcyLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBDb21t
aXRQb3RlbnRpYWxUYXBGYWlsZWQoKQogICAgIERpZE5vdEhhbmRsZVRhcEFzQ2xpY2soV2ViQ29y
ZTo6SW50UG9pbnQgcG9pbnQpCiAgICAgVmlld3BvcnRNZXRhVGFnV2lkdGhEaWRDaGFuZ2UoZmxv
YXQgd2lkdGgpCisgICAgRGlkRmluaXNoRHJhd2luZ1BhZ2VzVG9QREYoSVBDOjpEYXRhUmVmZXJl
bmNlIHBkZkRhdGEpCiAjZW5kaWYKICNpZiBQTEFURk9STShHVEspCiAgICAgUHJpbnRGaW5pc2hl
ZENhbGxiYWNrKFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9T
LmgKaW5kZXggOGE1MzZjNWUxOTM4NDcxZTBhYzA2MTQ0OWY4MTlmZjkzYjFhZGMwOS4uYmExZTVl
NmE5ZGYwYjljNDc5MmFlNzBiMjI5ZmY4MTk2NTI3OGMzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaApAQCAtMTMyLDYgKzEzMiw3IEBA
IHByaXZhdGU6CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCB6b29tVG9SZWN0KFdlYkNvcmU6
OkZsb2F0UmVjdCwgZG91YmxlIG1pbmltdW1TY2FsZSwgZG91YmxlIG1heGltdW1TY2FsZSkgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaERyYXdpbmdQYWdlc1RvUERGKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYpIG92ZXJyaWRlOwogCiAgICAgLy8gQXV4aWxpYXJ5IENsaWVu
dCBDcmVhdGlvbgogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmluZGV4IDUyYjVkYTUwYWMz
NjdmMTY3MTM4ZGU1MGY2NDNkNzMwNmYwYjk2YTEuLmViY2FmM2VhMDVkMjU0NGVkMmFlYmJkZDcy
ZDUwYmY1YWVhN2UzMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9Q
YWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtNTAzLDYgKzUwMywxMyBAQCB2b2lkIFBhZ2VDbGllbnRJ
bXBsOjp6b29tVG9SZWN0KEZsb2F0UmVjdCByZWN0LCBkb3VibGUgbWluaW11bVNjYWxlLCBkb3Vi
bGUgbWF4aQogICAgIFttX2NvbnRlbnRWaWV3IF96b29tVG9SZWN0OnJlY3Qgd2l0aE9yaWdpbjpy
ZWN0LmNlbnRlcigpIGZpdEVudGlyZVJlY3Q6WUVTIG1pbmltdW1TY2FsZTptaW5pbXVtU2NhbGUg
bWF4aW11bVNjYWxlOm1heGltdW1TY2FsZSBtaW5pbXVtU2Nyb2xsRGlzdGFuY2U6MF07CiB9CiAK
K3ZvaWQgUGFnZUNsaWVudEltcGw6OmRpZEZpbmlzaERyYXdpbmdQYWdlc1RvUERGKGNvbnN0IElQ
Qzo6RGF0YVJlZmVyZW5jZSYgcGRmRGF0YSkKK3sKKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBk
YXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgcGRmRGF0YS5k
YXRhKCksIHBkZkRhdGEuc2l6ZSgpKSk7CisgICAgUmV0YWluUHRyPENHRGF0YVByb3ZpZGVyUmVm
PiBkYXRhUHJvdmlkZXIgPSBhZG9wdENGKENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aENGRGF0YShk
YXRhLmdldCgpKSk7CisgICAgbV93ZWJWaWV3Ll9wcmludGVkRG9jdW1lbnQgPSBhZG9wdENGKENH
UERGRG9jdW1lbnRDcmVhdGVXaXRoUHJvdmlkZXIoZGF0YVByb3ZpZGVyLmdldCgpKSkuZ2V0KCk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3LmgKaW5kZXggOTMwZDU2MDM3NmRm
MDVlYTJmNThmNDJmYjZhYjU2OGZhNTgwM2RkZC4uYThjZmE2YzI0NjA2ODA1YjljMmI5MzYwMTVi
ZjdmNGE1NGZhZmU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9X
S1BERlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5o
CkBAIC0zMCw4ICszMCw4IEBACiAKIEBpbnRlcmZhY2UgV0tQREZWaWV3IDogVUlWaWV3IDxXS1dl
YlZpZXdDb250ZW50UHJvdmlkZXI+CiAKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkg
TlNEYXRhICpkb2N1bWVudERhdGE7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5T
U3RyaW5nICpzdWdnZXN0ZWRGaWxlbmFtZTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSkgQ0dQREZEb2N1bWVudFJlZiBwZGZEb2N1bWVudDsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tCmluZGV4IDgwOTU1ODg3NmYwZTc0MDM2NTExNzc3
YmVlMjhjNDY5YmJmOGM3MWMuLjkzNGQ5OTYzNWNkMDMzZTY1OTgyYzg0NjZkMGQzNzM0YTg4ZTUy
MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tCkBAIC0yOCw3
ICsyOCw2IEBACiAKICNpZiBQTEFURk9STShJT1MpCiAKLSNpbXBvcnQgPENvcmVHcmFwaGljcy9D
R1BERkRvY3VtZW50UHJpdmF0ZS5oPgogI2ltcG9ydCA8Q29yZVBERi9VSVBERkRvY3VtZW50Lmg+
CiAjaW1wb3J0IDxDb3JlUERGL1VJUERGUGFnZVZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUvRmxv
YXRSZWN0Lmg+CkBAIC03MCwxNiArNjksMTYgQEAgLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoRnJh
bWU6KENHUmVjdClmcmFtZQogICAgIHJldHVybiBzZWxmOwogfQogCi0tIChOU0RhdGEgKilkb2N1
bWVudERhdGEKLXsgICAgCi0gICAgcmV0dXJuIFsoTlNEYXRhICopQ0dEYXRhUHJvdmlkZXJDb3B5
RGF0YShDR1BERkRvY3VtZW50R2V0RGF0YVByb3ZpZGVyKFtfcGRmRG9jdW1lbnQgQ0dEb2N1bWVu
dF0pKSBhdXRvcmVsZWFzZV07Ci19Ci0KIC0gKE5TU3RyaW5nICopc3VnZ2VzdGVkRmlsZW5hbWUK
IHsKICAgICByZXR1cm4gX3N1Z2dlc3RlZEZpbGVuYW1lLmdldCgpOwogfQogCistIChDR1BERkRv
Y3VtZW50UmVmKXBkZkRvY3VtZW50Cit7CisgICAgcmV0dXJuIFtfcGRmRG9jdW1lbnQgQ0dEb2N1
bWVudF07Cit9CisKIC0gKHZvaWQpd2ViX3NldENvbnRlbnRQcm92aWRlckRhdGE6KE5TRGF0YSAq
KWRhdGEgc3VnZ2VzdGVkRmlsZW5hbWU6KE5TU3RyaW5nICopZmlsZW5hbWUKIHsKICAgICBfc3Vn
Z2VzdGVkRmlsZW5hbWUgPSBhZG9wdE5TKFtmaWxlbmFtZSBjb3B5XSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IDY0MTAwNzAzMDkz
ZDIyMjMxNmU1MWQ0MDRlOGQ2YjA3OGU3MTQyYTEuLjMwODhlMjkxYzI1ZGY3OTFjYTYxYjM3ZGFk
MTA1OWE2Zjc0ODQ1MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3Mv
V2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2Vi
UGFnZVByb3h5SU9TLm1tCkBAIC02NDksNiArNjQ5LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp2
aWV3cG9ydE1ldGFUYWdXaWR0aERpZENoYW5nZShmbG9hdCB3aWR0aCkKICAgICBtX3BhZ2VDbGll
bnQuZGlkQ2hhbmdlVmlld3BvcnRNZXRhVGFnV2lkdGgod2lkdGgpOwogfQogCit2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkRmluaXNoRHJhd2luZ1BhZ2VzVG9QREYoY29uc3QgSVBDOjpEYXRhUmVmZXJl
bmNlJiBwZGZEYXRhKQoreworICAgIG1fcGFnZUNsaWVudC5kaWRGaW5pc2hEcmF3aW5nUGFnZXNU
b1BERihwZGZEYXRhKTsKK30KKwogI2lmIFVTRShRVUlDS19MT09LKQogICAgIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWUoY29u
c3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgU3RyaW5nJiB1dGkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTJjMThjZWY3NDkz
ODBhODVlZGJjYzQ0NjU5NjNiODJjNjZhOGRiMS4uZDJiMDU3ZmM2NzEwNTcyZmM0Y2U3ZTY0NzJh
MzZlMTJiNjM5ZDdmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTA1Myw2ICsxMDUzLDggQEAKIAkJOUY1NEY4OTUxNjQ4QUUw
RjAwN0RGODFBIC8qIFBsdWdpblByb2Nlc3NNYW5hZ2VyTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUY1NEY4OTQxNjQ4QUUwRTAwN0RGODFBIC8q
IFBsdWdpblByb2Nlc3NNYW5hZ2VyTWFjLm1tICovOyB9OwogCQk5RkI1RjM5NDE2OUU2QTgwMDAy
QzI1QkYgLyogV0tDb250ZXh0UHJpdmF0ZU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlGQjVGMzkyMTY5RTZBODAwMDJDMjVCRiAvKiBXS0NvbnRl
eHRQcml2YXRlTWFjLm1tICovOyB9OwogCQk5RkI1RjM5NTE2OUU2QTgwMDAyQzI1QkYgLyogV0tD
b250ZXh0UHJpdmF0ZU1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOUZCNUYzOTMxNjlFNkE4MDAwMkMyNUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBMTE1
REM3MTE5MUQ4MkQ3MDBEQTgwNzIgLyogV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTE1REM2RDE5MUQ4MkFC
MDBEQTgwNzIgLyogV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIubW0gKi87IH07CisJCUExMTVEQzcy
MTkxRDgyREEwMERBODA3MiAvKiBXS1dlYlZpZXdQcmludEZvcm1hdHRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTExNURDNkUxOTFEODJBQjAwREE4
MDcyIC8qIFdLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmggKi87IH07CiAJCUExMThBOUVFMTkwN0FE
NkYwMEY3QzkyQiAvKiBRdWlja0xvb2tEb2N1bWVudERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTExOEE5RUMxOTA3QUQ2RjAwRjdDOTJCIC8q
IFF1aWNrTG9va0RvY3VtZW50RGF0YS5jcHAgKi87IH07CiAJCUExMThBOUVGMTkwN0FENkYwMEY3
QzkyQiAvKiBRdWlja0xvb2tEb2N1bWVudERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExMThBOUVEMTkwN0FENkYwMEY3QzkyQiAvKiBRdWlja0xv
b2tEb2N1bWVudERhdGEuaCAqLzsgfTsKIAkJQTExOEE5RjIxOTA4QjhFQTAwRjdDOTJCIC8qIF9X
S05TRmlsZU1hbmFnZXJFeHRyYXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBMTE4QTlGMDE5MDhCOEVBMDBGN0M5MkIgLyogX1dLTlNGaWxlTWFuYWdl
ckV4dHJhcy5tbSAqLzsgfTsKQEAgLTMwNDUsNiArMzA0Nyw4IEBACiAJCTlGNTRGODk0MTY0OEFF
MEUwMDdERjgxQSAvKiBQbHVnaW5Qcm9jZXNzTWFuYWdlck1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsdWdpblByb2Nlc3NNYW5hZ2VyTWFjLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5RkI1RjM5MjE2OUU2QTgwMDAyQzI1QkYgLyogV0tD
b250ZXh0UHJpdmF0ZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFt
ZSA9IFdLQ29udGV4dFByaXZhdGVNYWMubW07IHBhdGggPSBtYWMvV0tDb250ZXh0UHJpdmF0ZU1h
Yy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUZCNUYzOTMxNjlFNkE4MDAwMkMy
NUJGIC8qIFdLQ29udGV4dFByaXZhdGVNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gV0tDb250ZXh0UHJpdmF0ZU1hYy5oOyBwYXRoID0gbWFjL1dLQ29udGV4dFByaXZhdGVN
YWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTExNURDNkQxOTFEODJBQjAwREE4
MDcyIC8qIFdLV2ViVmlld1ByaW50Rm9ybWF0dGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUExMTVEQzZFMTkxRDgyQUIwMERBODA3MiAvKiBXS1dlYlZpZXdQ
cmludEZvcm1hdHRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1dlYlZp
ZXdQcmludEZvcm1hdHRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMTE4QTlF
QzE5MDdBRDZGMDBGN0M5MkIgLyogUXVpY2tMb29rRG9jdW1lbnREYXRhLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFF1aWNrTG9va0RvY3VtZW50RGF0YS5jcHA7IHBh
dGggPSBpb3MvUXVpY2tMb29rRG9jdW1lbnREYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTExOEE5RUQxOTA3QUQ2RjAwRjdDOTJCIC8qIFF1aWNrTG9va0RvY3VtZW50RGF0
YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBRdWlja0xvb2tEb2N1bWVudERh
dGEuaDsgcGF0aCA9IGlvcy9RdWlja0xvb2tEb2N1bWVudERhdGEuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTExOEE5RjAxOTA4QjhFQTAwRjdDOTJCIC8qIF9XS05TRmlsZU1hbmFn
ZXJFeHRyYXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tO
U0ZpbGVNYW5hZ2VyRXh0cmFzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDcx
Myw2ICs0NzE3LDggQEAKIAkJCQkwRkNCNEU0MTE4QkJFMDQ0MDAwRkNGQzkgLyogV0tHZW9sb2Nh
dGlvblByb3ZpZGVySU9TT2JqQ1NlY3VyaXR5T3JpZ2luLm1tICovLAogCQkJCTBGQ0I0RTQ0MThC
QkUwNDQwMDBGQ0ZDOSAvKiBXS1Njcm9sbFZpZXcuaCAqLywKIAkJCQkwRkNCNEU0NTE4QkJFMDQ0
MDAwRkNGQzkgLyogV0tTY3JvbGxWaWV3Lm1tICovLAorCQkJCUExMTVEQzZFMTkxRDgyQUIwMERB
ODA3MiAvKiBXS1dlYlZpZXdQcmludEZvcm1hdHRlci5oICovLAorCQkJCUExMTVEQzZEMTkxRDgy
QUIwMERBODA3MiAvKiBXS1dlYlZpZXdQcmludEZvcm1hdHRlci5tbSAqLywKIAkJCSk7CiAJCQlu
YW1lID0gaW9zOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTcwMjYsNiArNzAzMiw3
IEBACiAJCQkJMUE5RTMyODkxODIxNjM2OTAwRjVEMDRDIC8qIF9XS1JlbW90ZU9iamVjdFJlZ2lz
dHJ5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTY1NEVGRTE4NEVGMzNGMDA3REM4MzcgLyogVW5p
cXVlSURCRGF0YWJhc2VCYWNraW5nU3RvcmVTUUxpdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
MzNFMEQxMTI0MDhFODYwMDM2MEYzRiAvKiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmggaW4g
SGVhZGVycyAqLywKKwkJCQlBMTE1REM3MjE5MUQ4MkRBMDBEQTgwNzIgLyogV0tXZWJWaWV3UHJp
bnRGb3JtYXR0ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQ0I0RTYwMThCQkUzRDkwMDBGQ0ZD
OSAvKiBGaW5kSW5kaWNhdG9yV2luZG93LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE0REY3NzEy
MEI1Qjc5MDA4MjZDMEMgLyogSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkNCMEIwREUxMjMwNUE4QzAwQjEzNDFFIC8qIEluamVjdGVkQnVuZGxlVXNlck1l
c3NhZ2VDb2RlcnMuaCBpbiBIZWFkZXJzICovLApAQCAtODk4NCw2ICs4OTkxLDcgQEAKIAkJCQk1
MTlFRjU4RTE4RUY3NzBEMDAwM0I3RjQgLyogVGVsZXBob25lTnVtYmVyT3ZlcmxheUNvbnRyb2xs
ZXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0Y2OUZBMzExNzZEMDE0MDA0NzFBNTIgLyog
QVBJTmF2aWdhdGlvbkRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzFBMkVDNDgxNDg5OTdD
MjAwODEwRDcxIC8qIFdlYk5vdGlmaWNhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBMTE1
REM3MTE5MUQ4MkQ3MDBEQTgwNzIgLyogV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIubW0gaW4gU291
cmNlcyAqLywKIAkJCQkzMTA5OTk3MzE0NkM3NUEyMDAyOURFQjkgLyogV2ViTm90aWZpY2F0aW9u
Q2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEREUwQUZCMTgyOThDQzkwMEY5N0VBQSAv
KiBSZW1vdGVMYXllclRyZWVQcm9wZXJ0eUFwcGxpZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkz
MTMxMjYyMDE0OEZGODJDMDBCQTJBMzkgLyogV2ViTm90aWZpY2F0aW9uTWFuYWdlci5jcHAgaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcAppbmRleCBmMDAwMDZjZGM5NTU0OGY0ODQ2NjA5MGRiNmUwM2RiYTFhZGY4Y2Y3Li5kZGM1
ZDY0Y2NhZjExMjg2NjVkYTM5YmM1ZjQxZTJjZTVhYTQ1MjIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zNjA4LDYgKzM2MDgsMTMgQEAg
dm9pZCBXZWJQYWdlOjpjb21wdXRlUGFnZXNGb3JQcmludGluZyh1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBQcmludEluZm8mIHByaW50SW4KIHsKICAgICBWZWN0b3I8SW50UmVjdD4gcmVzdWx0UGFn
ZVJlY3RzOwogICAgIGRvdWJsZSByZXN1bHRUb3RhbFNjYWxlRmFjdG9yRm9yUHJpbnRpbmcgPSAx
OworICAgIGNvbXB1dGVQYWdlc0ZvclByaW50aW5nSW1wbChmcmFtZUlELCBwcmludEluZm8sIHJl
c3VsdFBhZ2VSZWN0cywgcmVzdWx0VG90YWxTY2FsZUZhY3RvckZvclByaW50aW5nKTsKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkNvbXB1dGVkUGFnZXNDYWxsYmFjayhyZXN1bHRQ
YWdlUmVjdHMsIHJlc3VsdFRvdGFsU2NhbGVGYWN0b3JGb3JQcmludGluZywgY2FsbGJhY2tJRCkp
OworfQorCit2b2lkIFdlYlBhZ2U6OmNvbXB1dGVQYWdlc0ZvclByaW50aW5nSW1wbCh1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgVmVjdG9yPFdlYkNvcmU6Oklu
dFJlY3Q+JiByZXN1bHRQYWdlUmVjdHMsIGRvdWJsZSYgcmVzdWx0VG90YWxTY2FsZUZhY3RvckZv
clByaW50aW5nKQoreworICAgIEFTU0VSVChyZXN1bHRQYWdlUmVjdHMuaXNFbXB0eSgpKTsKIAog
ICAgIGJlZ2luUHJpbnRpbmcoZnJhbWVJRCwgcHJpbnRJbmZvKTsKIApAQCAtMzYyMyw4ICszNjMw
LDYgQEAgdm9pZCBXZWJQYWdlOjpjb21wdXRlUGFnZXNGb3JQcmludGluZyh1aW50NjRfdCBmcmFt
ZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW4KICAgICAvLyBJZiB3ZSdyZSBhc2tlZCB0byBw
cmludCwgd2Ugc2hvdWxkIGFjdHVhbGx5IHByaW50IGF0IGxlYXN0IGEgYmxhbmsgcGFnZS4KICAg
ICBpZiAocmVzdWx0UGFnZVJlY3RzLmlzRW1wdHkoKSkKICAgICAgICAgcmVzdWx0UGFnZVJlY3Rz
LmFwcGVuZChJbnRSZWN0KDAsIDAsIDEsIDEpKTsKLQotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6Q29tcHV0ZWRQYWdlc0NhbGxiYWNrKHJlc3VsdFBhZ2VSZWN0cywgcmVzdWx0VG90
YWxTY2FsZUZhY3RvckZvclByaW50aW5nLCBjYWxsYmFja0lEKSk7CiB9CiAKICNpZiBQTEFURk9S
TShDT0NPQSkKQEAgLTM2NzUsMTAgKzM2ODAsMTcgQEAgdm9pZCBXZWJQYWdlOjpkcmF3UmVjdFRv
SW1hZ2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIGNvbnMK
IAogdm9pZCBXZWJQYWdlOjpkcmF3UGFnZXNUb1BERih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQ
cmludEluZm8mIHByaW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCB1aW50
NjRfdCBjYWxsYmFja0lEKQogeworICAgIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBwZGZQ
YWdlRGF0YTsKKyAgICBkcmF3UGFnZXNUb1BERkltcGwoZnJhbWVJRCwgcHJpbnRJbmZvLCBmaXJz
dCwgY291bnQsIHBkZlBhZ2VEYXRhKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRhdGFDYWxsYmFjayhJUEM6OkRhdGFSZWZlcmVuY2UoQ0ZEYXRhR2V0Qnl0ZVB0cihwZGZQYWdl
RGF0YS5nZXQoKSksIENGRGF0YUdldExlbmd0aChwZGZQYWdlRGF0YS5nZXQoKSkpLCBjYWxsYmFj
a0lEKSk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6ZHJhd1BhZ2VzVG9QREZJbXBsKHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCB1aW50MzJfdCBmaXJzdCwgdWludDMy
X3QgY291bnQsIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiYgcGRmUGFnZURhdGEpCit7CiAg
ICAgV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6c2hhcmVkKCkud2ViRnJhbWUoZnJhbWVJ
RCk7CiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGZyYW1lID8gZnJhbWUtPmNvcmVGcmFtZSgpIDog
MDsKIAotICAgIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBwZGZQYWdlRGF0YSA9IGFkb3B0
Q0YoQ0ZEYXRhQ3JlYXRlTXV0YWJsZSgwLCAwKSk7CisgICAgcGRmUGFnZURhdGEgPSBhZG9wdENG
KENGRGF0YUNyZWF0ZU11dGFibGUoMCwgMCkpOwogCiAjaWYgVVNFKENHKQogICAgIGlmIChjb3Jl
RnJhbWUpIHsKQEAgLTM3MjEsOCArMzczMyw2IEBAIHZvaWQgV2ViUGFnZTo6ZHJhd1BhZ2VzVG9Q
REYodWludDY0X3QgZnJhbWVJRCwgY29uc3QgUHJpbnRJbmZvJiBwcmludEluZm8sIHVpbnQzCiAg
ICAgICAgIENHUERGQ29udGV4dENsb3NlKGNvbnRleHQuZ2V0KCkpOwogICAgIH0KICNlbmRpZgot
Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEYXRhQ2FsbGJhY2soSVBDOjpEYXRh
UmVmZXJlbmNlKENGRGF0YUdldEJ5dGVQdHIocGRmUGFnZURhdGEuZ2V0KCkpLCBDRkRhdGFHZXRM
ZW5ndGgocGRmUGFnZURhdGEuZ2V0KCkpKSwgY2FsbGJhY2tJRCkpOwogfQogCiAjZWxpZiBQTEFU
Rk9STShHVEspCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApp
bmRleCAyNGFmMmRjZmMxODdiN2ZmYjQwMGFmMWJjZTk5YjlkNDIyZjQ4ZTcyLi4yOWY2YWZlNjc1
NDNkNmRjMDg4ZDBiNzYzNDYxNmUyOTYwZmM2Y2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTc3LDYgKzc3LDcgQEAKIAogI2lmIFBMQVRGT1JN
KElPUykKICNpbmNsdWRlICJHZXN0dXJlVHlwZXMuaCIKKyNpbXBvcnQgIldlYlBhZ2VNZXNzYWdl
cy5oIgogI2VuZGlmCiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpAQCAtNjUxLDkgKzY1Miwx
NCBAQCBwdWJsaWM6CiAgICAgdm9pZCBiZWdpblByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFByaW50SW5mbyYpOwogICAgIHZvaWQgZW5kUHJpbnRpbmcoKTsKICAgICB2b2lkIGNvbXB1
dGVQYWdlc0ZvclByaW50aW5nKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYsIHVp
bnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdJbXBs
KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYsIFZlY3RvcjxXZWJDb3JlOjpJbnRS
ZWN0PiYgcGFnZVJlY3RzLCBkb3VibGUmIHRvdGFsU2NhbGVGYWN0b3IpOwogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIHZvaWQgZHJhd1JlY3RUb0ltYWdlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFByaW50SW5mbyYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRT
aXplJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBkcmF3UGFnZXNUb1BERih1aW50
NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mLCB1aW50MzJfdCBmaXJzdCwgdWludDMyX3Qg
Y291bnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZHJhd1BhZ2VzVG9QREZJbXBs
KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFByaW50SW5mbyYsIHVpbnQzMl90IGZpcnN0LCB1aW50
MzJfdCBjb3VudCwgUmV0YWluUHRyPENGTXV0YWJsZURhdGFSZWY+JiBwZGZQYWdlRGF0YSk7Cisj
aWYgUExBVEZPUk0oSU9TKQorICAgIHZvaWQgY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdBbmRTdGFy
dERyYXdpbmdUb1BERih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mLCB1aW50MzJf
dCBmaXJzdFBhZ2UsIFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0Zv
clByaW50aW5nQW5kU3RhcnREcmF3aW5nVG9QREY6OkRlbGF5ZWRSZXBseT4pOworI2VuZGlmCiAj
ZWxpZiBQTEFURk9STShHVEspCiAgICAgdm9pZCBkcmF3UGFnZXNGb3JQcmludGluZyh1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2
b2lkIGRpZEZpbmlzaFByaW50T3BlcmF0aW9uKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNDI4NmI1NTdlZTE4MmRiNDJi
NjQ4YmY1NTNjNjYxNDExMzg2NTQ2NC4uMWMxY2NiMDg4MjZmMTQwMmQzYWFmYzFkNDg0MTcwZWQy
OGUzZDI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTI2OCw2ICsyNjgsOSBAQCBtZXNzYWdlcyAtPiBXZWJQ
YWdlIExlZ2FjeVJlY2VpdmVyIHsKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBEcmF3UmVjdFRv
SW1hZ2UodWludDY0X3QgZnJhbWVJRCwgV2ViS2l0OjpQcmludEluZm8gcHJpbnRJbmZvLCBXZWJD
b3JlOjpJbnRSZWN0IHJlY3QsIFdlYkNvcmU6OkludFNpemUgaW1hZ2VTaXplLCB1aW50NjRfdCBj
YWxsYmFja0lEKQogICAgIERyYXdQYWdlc1RvUERGKHVpbnQ2NF90IGZyYW1lSUQsIFdlYktpdDo6
UHJpbnRJbmZvIHByaW50SW5mbywgdWludDMyX3QgZmlyc3QsIHVpbnQzMl90IGNvdW50LCB1aW50
NjRfdCBjYWxsYmFja0lEKQorI2lmIFBMQVRGT1JNKElPUykKKyAgICBDb21wdXRlUGFnZXNGb3JQ
cmludGluZ0FuZFN0YXJ0RHJhd2luZ1RvUERGKHVpbnQ2NF90IGZyYW1lSUQsIFdlYktpdDo6UHJp
bnRJbmZvIHByaW50SW5mbywgdWludDMyX3QgZmlyc3RQYWdlKSAtPiAoVmVjdG9yPFdlYkNvcmU6
OkludFJlY3Q+IHBhZ2VSZWN0cywgZG91YmxlIHRvdGFsU2NhbGVGYWN0b3IpIERlbGF5ZWQKKyNl
bmRpZgogI2VuZGlmCiAjaWYgUExBVEZPUk0oR1RLKQogICAgIERyYXdQYWdlc0ZvclByaW50aW5n
KHVpbnQ2NF90IGZyYW1lSUQsIFdlYktpdDo6UHJpbnRJbmZvIHByaW50SW5mbywgdWludDY0X3Qg
Y2FsbGJhY2tJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvV2ViUGFnZUlPUy5tbQppbmRleCA5YzA1OGUyZDg3NGM5Njg5NTQ0NDYwMzhmNmVhODQxZGFj
YmQ4ZTUwLi4yMDJlZTRiNDQ0MzAyOTA1ZDc4OGE5ZTMxODdhMGRhYzFkMTQ5MjcyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0K
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
CkBAIC0yMjgzLDYgKzIyODMsMTkgQEAgdm9pZCBXZWJQYWdlOjpkaXNwYXRjaEFzeW5jaHJvbm91
c1RvdWNoRXZlbnRzKGNvbnN0IFZlY3RvcjxXZWJUb3VjaEV2ZW50LCAxPiYgcXUKICAgICAgICAg
ZGlzcGF0Y2hUb3VjaEV2ZW50KGV2ZW50LCBpZ25vcmVkKTsKIH0KIAordm9pZCBXZWJQYWdlOjpj
b21wdXRlUGFnZXNGb3JQcmludGluZ0FuZFN0YXJ0RHJhd2luZ1RvUERGKHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCB1aW50MzJfdCBmaXJzdFBhZ2UsIFBhc3NS
ZWZQdHI8TWVzc2FnZXM6OldlYlBhZ2U6OkNvbXB1dGVQYWdlc0ZvclByaW50aW5nQW5kU3RhcnRE
cmF3aW5nVG9QREY6OkRlbGF5ZWRSZXBseT4gcmVwbHkpCit7CisgICAgVmVjdG9yPFdlYkNvcmU6
OkludFJlY3Q+IHBhZ2VSZWN0czsKKyAgICBkb3VibGUgdG90YWxTY2FsZUZhY3RvciA9IDE7Cisg
ICAgY29tcHV0ZVBhZ2VzRm9yUHJpbnRpbmdJbXBsKGZyYW1lSUQsIHByaW50SW5mbywgcGFnZVJl
Y3RzLCB0b3RhbFNjYWxlRmFjdG9yKTsKKyAgICBzdGQ6OnNpemVfdCBwYWdlQ291bnQgPSBwYWdl
UmVjdHMuc2l6ZSgpOworICAgIHJlcGx5LT5zZW5kKHN0ZDo6bW92ZShwYWdlUmVjdHMpLCB0b3Rh
bFNjYWxlRmFjdG9yKTsKKworICAgIFJldGFpblB0cjxDRk11dGFibGVEYXRhUmVmPiBwZGZQYWdl
RGF0YTsKKyAgICBkcmF3UGFnZXNUb1BERkltcGwoZnJhbWVJRCwgcHJpbnRJbmZvLCBmaXJzdFBh
Z2UsIHBhZ2VDb3VudCAtIGZpcnN0UGFnZSwgcGRmUGFnZURhdGEpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RGlkRmluaXNoRHJhd2luZ1BhZ2VzVG9QREYoSVBDOjpEYXRhUmVm
ZXJlbmNlKENGRGF0YUdldEJ5dGVQdHIocGRmUGFnZURhdGEuZ2V0KCkpLCBDRkRhdGFHZXRMZW5n
dGgocGRmUGFnZURhdGEuZ2V0KCkpKSkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAog
I2VuZGlmIC8vIFBMQVRGT1JNKElPUykK
</data>

          </attachment>
      

    </bug>

</bugzilla>